<?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>137984</bug_id>
          
          <creation_ts>2014-10-22 15:33:34 -0700</creation_ts>
          <short_desc>Clean up virtual functions in rendering/</short_desc>
          <delta_ts>2014-10-22 21:32:32 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></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>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1043565</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-22 15:33:34 -0700</bug_when>
    <thetext>Clean up virtual functions in rendering/ by:
- Making virtual functions final when possible
- Making classes final when possible
- Using &apos;override&apos; when appropriate
- Explicitly marking functions / destructors as virtual when they are inherently virtual
- Dropping virtual destructors when the class does not have subclasses and mark the class as final, to get rid of unnecessary vtables
- Making isXXX() virtual functions private on XXX classes to avoid unnecessary type checks
- De-virtualizing some functions that do not need to be virtual
- Dropping final for virtual functions in classes already marked as final</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043568</commentid>
    <comment_count>1</comment_count>
      <attachid>240299</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-22 15:41:07 -0700</bug_when>
    <thetext>Created attachment 240299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043585</commentid>
    <comment_count>2</comment_count>
      <attachid>240304</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-22 16:19:21 -0700</bug_when>
    <thetext>Created attachment 240304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043596</commentid>
    <comment_count>3</comment_count>
      <attachid>240306</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-22 16:57:07 -0700</bug_when>
    <thetext>Created attachment 240306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043612</commentid>
    <comment_count>4</comment_count>
      <attachid>240312</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-22 17:33:29 -0700</bug_when>
    <thetext>Created attachment 240312
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043633</commentid>
    <comment_count>5</comment_count>
      <attachid>240312</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-22 18:43:45 -0700</bug_when>
    <thetext>Comment on attachment 240312
Patch

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

Are you sure that none of the functions that you converted to non-virtual are overridden in derived classes? I see that they are not overriding things in base classes, but I am not 100% sure none of them are overridden in derived ones.

&gt; Source/WebCore/rendering/RenderScrollbarPart.h:60
&gt; +    virtual void imageChanged(WrappedImagePtr, const IntRect* = 0) override;

nullptr

&gt; Source/WebCore/rendering/RenderThemeSafari.h:100
&gt; +    // FIXME: Shouldn&apos;t this take a const FloatRect&amp;, and override the parent&apos;s paintTextField()?
&gt; +    bool paintTextField(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;);

Yes. But I think this entire class is dead code and should be deleted.

&gt; Source/WebCore/rendering/RenderThemeSafari.h:104
&gt; +    // FIXME: Shouldn&apos;t this take a const FloatRect&amp;, and override the parent&apos;s paintTextArea()?
&gt; +    bool paintTextArea(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;);

Yes. But I think this entire class is dead code and should be deleted.

&gt; Source/WebCore/rendering/RenderThemeSafari.h:108
&gt; +    // FIXME: Shouldn&apos;t this take a const FloatRect&amp;, and override the parent&apos;s paintMenuList()?
&gt; +    bool paintMenuList(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;);

Yes. But I think this entire class is dead code and should be deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043637</commentid>
    <comment_count>6</comment_count>
      <attachid>240312</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-22 18:59:30 -0700</bug_when>
    <thetext>Comment on attachment 240312
Patch

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

I went through each devirtualization one-by-one and double-checked. Please see comments below.

&gt; Source/WebCore/rendering/ClipPathOperation.h:55
&gt; +    OperationType type() const { return m_type; }

I double-checked that these were not overridden in subclasses.

&gt; Source/WebCore/rendering/EllipsisBox.h:43
&gt; +    int height() const { return m_height; }

The class is final so there is no way someone was overriding this one.

&gt; Source/WebCore/rendering/RenderLayer.h:792
&gt; +    void filterNeedsRepaint();

The class is final so there is no way this was overridden.

&gt;&gt; Source/WebCore/rendering/RenderThemeSafari.h:100
&gt;&gt; +    bool paintTextField(const RenderObject&amp;, const PaintInfo&amp;, const IntRect&amp;);
&gt; 
&gt; Yes. But I think this entire class is dead code and should be deleted.

It is being built by the win-ews at least as I got errors on this file in earlier revisions.

&gt; Source/WebCore/rendering/RenderVideo.h:53
&gt; +    bool shouldDisplayVideo() const;

The class is final so there is no way someone was overriding this.

&gt; Source/WebCore/rendering/svg/RenderSVGRoot.h:93
&gt; +    FloatRect repaintRectInLocalCoordinatesExcludingSVGShadow() const { return m_repaintBoundingBoxExcludingShadow; }

The class is final so no one could override this.

&gt; Source/WebCore/rendering/svg/SVGInlineTextBox.h:43
&gt; +    int selectionTop() { return top(); }

The class is final so no one could override this.

&gt; Source/WebCore/rendering/svg/SVGInlineTextBox.h:44
&gt; +    int selectionHeight() { return static_cast&lt;int&gt;(ceilf(m_logicalHeight)); }

The class is final so no one could override this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043640</commentid>
    <comment_count>7</comment_count>
      <attachid>240320</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-22 19:09:03 -0700</bug_when>
    <thetext>Created attachment 240320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043641</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-22 19:09:59 -0700</bug_when>
    <thetext>I fixed the nit and killed the dead class. It was being built on Windows but does not seem to be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043659</commentid>
    <comment_count>9</comment_count>
      <attachid>240320</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-22 20:07:13 -0700</bug_when>
    <thetext>Comment on attachment 240320
Patch

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

&gt; Source/WebCore/rendering/RenderThemeSafari.cpp:-81
&gt; -PassRefPtr&lt;RenderTheme&gt; RenderTheme::themeForPage(Page* page)

Hmm, This doesn&apos;t appear to be dead code after all. This function is being used. USE(SAFARI_THEME) appears to be true on win-ews.

#if PLATFORM(WIN) &amp;&amp; USE(CG)
#define WTF_USE_SAFARI_THEME 1
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043660</commentid>
    <comment_count>10</comment_count>
      <attachid>240320</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-22 20:07:21 -0700</bug_when>
    <thetext>Comment on attachment 240320
Patch

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

&gt; Source/WebCore/rendering/RenderThemeSafari.cpp:-94
&gt; -PassRefPtr&lt;RenderTheme&gt; RenderTheme::themeForPage(Page* page)
&gt; -{
&gt; -    static RenderTheme* safariTheme = RenderThemeSafari::create().leakRef();
&gt; -    static RenderTheme* windowsTheme = RenderThemeWin::create().leakRef();
&gt; -
&gt; -    // FIXME: This is called before Settings has been initialized by WebKit, so will return a
&gt; -    // potentially wrong answer the very first time it&apos;s called (see
&gt; -    // &lt;https://bugs.webkit.org/show_bug.cgi?id=26493&gt;).
&gt; -    if (Settings::shouldPaintNativeControls()) {
&gt; -        RenderTheme::setCustomFocusRingColor(safariTheme-&gt;platformFocusRingColor());
&gt; -        return windowsTheme; // keep the reference of one.
&gt; -    }
&gt; -    return safariTheme; // keep the reference of one.
&gt; -}

Looks like we still need this function, but it can move into another source file, probably RenderThemeWin. It would be roughly like this:

    PassRefPtr&lt;RenderTheme&gt; RenderTheme::themeForPage(Page*)
    {
        static RenderTheme* windowsTheme = RenderThemeWin::create().leakRef();
        return windowsTheme;
    }

Not sure what we need to do about focus ring color. Someone should check what iTunes needs/uses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043661</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-22 20:08:45 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; This doesn&apos;t appear to be dead code after all. This function is being
&gt; used. USE(SAFARI_THEME) appears to be true on win-ews.
&gt; 
&gt; #if PLATFORM(WIN) &amp;&amp; USE(CG)
&gt; #define WTF_USE_SAFARI_THEME 1
&gt; #endif

I think the issue is whether Settings::shouldPaintNativeControls is true or false with our actual Windows clients. If it’s always true in practice, then we can delete RenderThemeSafari. Sorry to push you to do it prematurely, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043662</commentid>
    <comment_count>12</comment_count>
      <attachid>240322</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-22 20:10:12 -0700</bug_when>
    <thetext>Created attachment 240322
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043663</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-22 20:12:29 -0700</bug_when>
    <thetext>Since Settings::shouldPaintNativeControls() might return false in practice (causing RenderThemeSafari to be used on Windows), I propose to keep the changes to RenderThemeSafari out of this patch until we figure out if it can safely be removed. The patch is rather large and I&apos;d like to land it relatively quickly to avoid conflicts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043664</commentid>
    <comment_count>14</comment_count>
      <attachid>240323</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-22 20:14:08 -0700</bug_when>
    <thetext>Created attachment 240323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043677</commentid>
    <comment_count>15</comment_count>
      <attachid>240323</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-22 21:32:27 -0700</bug_when>
    <thetext>Comment on attachment 240323
Patch

Clearing flags on attachment: 240323

Committed r175084: &lt;http://trac.webkit.org/changeset/175084&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043678</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-22 21:32:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240299</attachid>
            <date>2014-10-22 15:41:07 -0700</date>
            <delta_ts>2014-10-22 16:19:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137984-20141022154114.patch</filename>
            <type>text/plain</type>
            <size>118015</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJhYjlhZWUwMTIzYmM1
NmMxNmJhYjU3MDY1NDc0NTk2NmQyNmNhYi4uN2RmOGM0NmRmNjAwZDY3N2ZjZjY4OGM0ZTE5YWU0
ZjJlNzFiMDdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEyNCBAQAogMjAxNC0xMC0yMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIENsZWFuIHVwIHZpcnR1YWwg
ZnVuY3Rpb25zIGluIHJlbmRlcmluZy8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENsZWFuIHVwIHZpcnR1YWwgZnVuY3Rpb25zIGluIHJlbmRlcmluZy8g
Ynk6CisgICAgICAgIC0gTWFraW5nIHZpcnR1YWwgZnVuY3Rpb25zIGZpbmFsIHdoZW4gcG9zc2li
bGUKKyAgICAgICAgLSBNYWtpbmcgY2xhc3NlcyBmaW5hbCB3aGVuIHBvc3NpYmxlCisgICAgICAg
IC0gVXNpbmcgJ292ZXJyaWRlJyB3aGVuIGFwcHJvcHJpYXRlCisgICAgICAgIC0gRXhwbGljaXRs
eSBtYXJraW5nIGZ1bmN0aW9ucyAvIGRlc3RydWN0b3JzIGFzIHZpcnR1YWwgd2hlbiB0aGV5IGFy
ZQorICAgICAgICAgIGluaGVyZW50bHkgdmlydHVhbAorICAgICAgICAtIERyb3BwaW5nIHZpcnR1
YWwgZGVzdHJ1Y3RvcnMgd2hlbiB0aGUgY2xhc3MgZG9lcyBub3QgaGF2ZSBzdWJjbGFzc2VzCisg
ICAgICAgICAgYW5kIG1hcmsgdGhlIGNsYXNzIGFzIGZpbmFsLCB0byBnZXQgcmlkIG9mIHVubmVj
ZXNzYXJ5IHZ0YWJsZXMKKyAgICAgICAgLSBNYWtpbmcgaXNYWFgoKSB2aXJ0dWFsIGZ1bmN0aW9u
cyBwcml2YXRlIG9uIFhYWCBjbGFzc2VzIHRvIGF2b2lkCisgICAgICAgICAgdW5uZWNlc3Nhcnkg
dHlwZSBjaGVja3MKKyAgICAgICAgLSBEZS12aXJ0dWFsaXppbmcgc29tZSBmdW5jdGlvbnMgdGhh
dCBkbyBub3QgbmVlZCB0byBiZSB2aXJ0dWFsCisgICAgICAgIC0gRHJvcHBpbmcgZmluYWwgZm9y
IHZpcnR1YWwgZnVuY3Rpb25zIGluIGNsYXNzZXMgYWxyZWFkeSBtYXJrZWQgYXMKKyAgICAgICAg
ICBmaW5hbAorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisg
ICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0NsaXBQYXRo
T3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6dHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6aXNTYW1lVHlwZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL0VsbGlwc2lzQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0ZpeGVk
VGFibGVMYXlvdXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQ29tYmluZVRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlk
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJNYXJxdWVlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlh
Q29udHJvbEVsZW1lbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
Rmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyUXVvdGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnJlbmRlck5hbWUpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclJ1YnlCYXNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp+
UmVuZGVyU2Nyb2xsYmFyVGhlbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OnNjcm9sbGJhclRoaWNrbmVzcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uc1BsYWNlbWVudCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6c3VwcG9ydHNDb250cm9s
VGludHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OnNob3VsZENlbnRlck9uVGh1bWIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YXV0b3Njcm9sbFRpbWVyRGVs
YXkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJl
Z2lzdGVyU2Nyb2xsYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9s
bGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dEZyYWdtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lU2FmYXJpLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6
c3VwcG9ydHNDb250cm9sVGludHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnNob3VsZFNob3dQbGFjZWhvbGRlcldoZW5Gb2N1c2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlkZW8uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9UcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
Y3JpcHRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5o
OgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zaGFwZXMvUG9seWdvblNoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0
ZXJTaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UGVuZGluZ0ltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6IERlbGV0ZWQuCisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdFbGxpcHNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFya2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdy
YWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaDoK
KworMjAxNC0xMC0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAg
IFtNYWNdW1dLMl0gRml4IGFwcGxpY2F0aW9uSXNTYWZhcmkoKSBkZXRlY3Rpb24KICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzg5MwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCAy
NjJjNjAwNmY1M2Y4MWZmYzdmYWY4MjFjOTZlNmQxMTg4M2NjZGY5Li5mOWNlZDZkZjE0Mjg1YTBm
OTUyMTYxNDZiNzU0MGU2MjcyOGU4YmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBib29sIFJl
bmRlclNsaWRlclRodW1iOjppc1NsaWRlclRodW1iKCkgY29uc3QKIAogLy8gRklYTUU6IEZpbmQg
YSB3YXkgdG8gY2FzY2FkZSBhcHBlYXJhbmNlIGFuZCBhZGp1c3QgaGVpZ2h0cywgYW5kIGdldCBy
aWQgb2YgdGhpcyBjbGFzcy4KIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvNjI1MzUKLWNsYXNzIFJl
bmRlclNsaWRlckNvbnRhaW5lciA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CitjbGFzcyBS
ZW5kZXJTbGlkZXJDb250YWluZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewog
cHVibGljOgogICAgIFJlbmRlclNsaWRlckNvbnRhaW5lcihTbGlkZXJDb250YWluZXJFbGVtZW50
JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICAgICAgOiBSZW5kZXJG
bGV4aWJsZUJveChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0F1dG9UYWJsZUxheW91dC5oCmluZGV4IDRjMGMzNDBiMjVlMWM0NWZmMTg5YzJkMTNi
ZjdmZTNjYTgxOTRjMDIuLjJmMzE5ZmVhOGRhNjcyYzE0MThmODg0MWNiMjI4NWYyZTJjMGE5ODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmgKQEAgLTMxLDcg
KzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVuZGVyVGFibGU7CiBjbGFzcyBS
ZW5kZXJUYWJsZUNlbGw7CiAKLWNsYXNzIEF1dG9UYWJsZUxheW91dCA6IHB1YmxpYyBUYWJsZUxh
eW91dCB7CitjbGFzcyBBdXRvVGFibGVMYXlvdXQgZmluYWwgOiBwdWJsaWMgVGFibGVMYXlvdXQg
ewogcHVibGljOgogICAgIGV4cGxpY2l0IEF1dG9UYWJsZUxheW91dChSZW5kZXJUYWJsZSopOwog
ICAgIHZpcnR1YWwgfkF1dG9UYWJsZUxheW91dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQ2xpcFBhdGhPcGVyYXRpb24uaAppbmRleCA3OWI2NjVjY2ZkMTZjMDIyMDY3YjU5MDZiZjk2
NzJmMTA0NzJkMWQ2Li5lNzIzMWU2Y2E0MDMyOGVmZTRiMDYyZTI5YTgxMTM3MmNkY2Q2NTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaApAQCAtNTIs
OCArNTIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2xp
cFBhdGhPcGVyYXRpb24mKSBjb25zdCA9IDA7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENs
aXBQYXRoT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CiAKLSAg
ICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc1NhbWVUeXBlKGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJiBvKSBj
b25zdCB7IHJldHVybiBvLnR5cGUoKSA9PSBtX3R5cGU7IH0KKyAgICBPcGVyYXRpb25UeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBib29sIGlzU2FtZVR5cGUoY29uc3Qg
Q2xpcFBhdGhPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuIG8udHlwZSgpID09IG1fdHlwZTsg
fQogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ2xpcFBhdGhPcGVyYXRpb24oT3BlcmF0aW9u
VHlwZSB0eXBlKQpAQCAtNjQsNyArNjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3BlcmF0aW9uVHlw
ZSBtX3R5cGU7CiB9OwogCi1jbGFzcyBSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbiA6IHB1Ymxp
YyBDbGlwUGF0aE9wZXJhdGlvbiB7CitjbGFzcyBSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbiBm
aW5hbCA6IHB1YmxpYyBDbGlwUGF0aE9wZXJhdGlvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiBmcmFnbWVudCkKICAgICB7CkBAIC05NCw3ICs5NCw3IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fZnJhZ21lbnQ7CiB9OwogCi1jbGFzcyBTaGFwZUNsaXBQYXRo
T3BlcmF0aW9uIDogcHVibGljIENsaXBQYXRoT3BlcmF0aW9uIHsKK2NsYXNzIFNoYXBlQ2xpcFBh
dGhPcGVyYXRpb24gZmluYWwgOiBwdWJsaWMgQ2xpcFBhdGhPcGVyYXRpb24gewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+IGNyZWF0ZShQYXNz
UmVmPEJhc2ljU2hhcGU+IHNoYXBlKQogICAgIHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRl
OgogICAgIENTU0JveFR5cGUgbV9yZWZlcmVuY2VCb3g7CiB9OwogCi1jbGFzcyBCb3hDbGlwUGF0
aE9wZXJhdGlvbiA6IHB1YmxpYyBDbGlwUGF0aE9wZXJhdGlvbiB7CitjbGFzcyBCb3hDbGlwUGF0
aE9wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDbGlwUGF0aE9wZXJhdGlvbiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8Qm94Q2xpcFBhdGhPcGVyYXRpb24+IGNyZWF0ZShDU1NCb3hU
eXBlIHJlZmVyZW5jZUJveCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRWxsaXBzaXNCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0Jv
eC5oCmluZGV4IGYzY2Y4ZGI2ZjFhZmRmMGY4MGRhMWFmMTA0MmMxMDU1M2JkN2VkYjUuLjk1Nzc1
ZDBlZDQ1ZDIxMjdhYmUxMDc1YmFhZWM1M2YyYjQ3MzM0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FbGxpcHNpc0JveC5oCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIEhpdFRlc3RSZXN1bHQ7
CiBjbGFzcyBFbGxpcHNpc0JveCBmaW5hbCA6IHB1YmxpYyBJbmxpbmVFbGVtZW50Qm94IHsKIHB1
YmxpYzoKICAgICBFbGxpcHNpc0JveChSZW5kZXJCbG9ja0Zsb3cmLCBjb25zdCBBdG9taWNTdHJp
bmcmIGVsbGlwc2lzU3RyLCBJbmxpbmVGbG93Qm94KiBwYXJlbnQsIGludCB3aWR0aCwgaW50IGhl
aWdodCwgaW50IHksIGJvb2wgZmlyc3RMaW5lLCBib29sIGlzVmVydGljYWwsIElubGluZUJveCog
bWFya3VwQm94KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSk7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5
b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRV
bml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoUmVu
ZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzKSB7IG1fc2VsZWN0aW9uU3RhdGUgPSBzOyB9CiAg
ICAgSW50UmVjdCBzZWxlY3Rpb25SZWN0KCk7CkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICB2b2lkIHBhaW50TWFya3VwQm94KFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVC
b3R0b20sIGNvbnN0IFJlbmRlclN0eWxlJik7Ci0gICAgdmlydHVhbCBpbnQgaGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdDo6U2VsZWN0
aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoKSB7IHJldHVybiBtX3NlbGVjdGlvblN0YXRlOyB9Cisg
ICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CisgICAgdmlydHVhbCBS
ZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9zZWxlY3Rpb25TdGF0ZTsgfQogICAgIHZvaWQgcGFpbnRTZWxlY3Rpb24oR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0
IEZvbnQmKTsKICAgICBJbmxpbmVCb3gqIG1hcmt1cEJveCgpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuaAppbmRleCA5ZmE1NmQxNzIyMWE1NWQx
NDk2MmYzZWQ1ZjU2NGYyNWE1NjVhNjhlLi5kN2JjYmQ2NTUzMTA5MzFlYTg4YzA2ZjExZGJkMTIz
Y2E1NmNiMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJs
ZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0
LmgKQEAgLTMwLDEzICszMCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRl
clRhYmxlOwogCi1jbGFzcyBGaXhlZFRhYmxlTGF5b3V0IDogcHVibGljIFRhYmxlTGF5b3V0IHsK
K2NsYXNzIEZpeGVkVGFibGVMYXlvdXQgZmluYWwgOiBwdWJsaWMgVGFibGVMYXlvdXQgewogcHVi
bGljOgogICAgIGV4cGxpY2l0IEZpeGVkVGFibGVMYXlvdXQoUmVuZGVyVGFibGUqKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBt
aW5XaWR0aCwgTGF5b3V0VW5pdCYgbWF4V2lkdGgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBhcHBseVByZWZlcnJlZExvZ2ljYWxXaWR0aFF1aXJrcyhMYXlvdXRVbml0JiBtaW5XaWR0aCwg
TGF5b3V0VW5pdCYgbWF4V2lkdGgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CiAgICAgaW50IGNhbGNXaWR0aEFycmF5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUVsZW1lbnRCb3guaAppbmRleCA5NjFhMDc1NDUzZDVmOTQ3YWVmNDY2NDBkOGFjZWM3NGQ2
MjNmZTg0Li41NjYzOTViMmI4ZjNkNTMxZGY3YTA2MWYyZmJiNjFkYTUxNjIxYTdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVFbGVtZW50Qm94LmgKQEAgLTQ0LDkgKzQ0LDkg
QEAgcHVibGljOgogCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKCkgY29uc3Qg
eyByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KElubGluZUJveDo6cmVuZGVy
ZXIoKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVMaW5lKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGV4dHJhY3RMaW5lKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGF0
dGFjaExpbmUoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlTGluZSgpIG92ZXJy
aWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBleHRyYWN0TGluZSgpIG92ZXJyaWRlIGZpbmFs
OworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hMaW5lKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRV
bml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQg
bGluZUJvdHRvbSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmgKaW5kZXggYWI3NjM5ZmExMmI3MzEzYjhkYWUyZmJjNmRlYWM2NDA4ZGI0NDQ4ZS4u
OTY2MWM1NjMzMzMwNDI4OTk4MDIyOTE5MDEzNjcxZWM4NjBlYzNjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtMjgwLDcgKzI4MCw3IEBAIHB1Ymxp
YzoKICAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIG11bHRpQ29sdW1uRmxvd1RocmVh
ZCgpIGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVCbG9ja0Zsb3dEYXRhKCkgPyByYXJlQmxvY2tGbG93
RGF0YSgpLT5tX211bHRpQ29sdW1uRmxvd1RocmVhZCA6IG51bGxwdHI7IH0KICAgICB2b2lkIHNl
dE11bHRpQ29sdW1uRmxvd1RocmVhZChSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqKTsKICAg
ICAKLSAgICBib29sIGNvbnRhaW5zRmxvYXRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9m
bG9hdGluZ09iamVjdHMgJiYgIW1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKS5pc0VtcHR5KCk7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNGbG9hdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2Zsb2F0aW5nT2JqZWN0cyAmJiAhbV9mbG9hdGluZ09iamVjdHMtPnNldCgpLmlzRW1wdHko
KTsgfQogICAgIGJvb2wgY29udGFpbnNGbG9hdChSZW5kZXJCb3gmKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVMaW5lcygpIG92ZXJyaWRlOwpAQCAtMzc2LDggKzM3Niw4IEBAIHB1
YmxpYzoKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHRGb3JDaGlsZEZvckZyYWdtZW50YXRp
b24oY29uc3QgUmVuZGVyQm94JiBjaGlsZCkgY29uc3Q7CiAgICAgYm9vbCBoYXNOZXh0UGFnZShM
YXlvdXRVbml0IGxvZ2ljYWxPZmZzZXQsIFBhZ2VCb3VuZGFyeVJ1bGUgPSBFeGNsdWRlUGFnZUJv
dW5kYXJ5KSBjb25zdDsKIAotICAgIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGls
ZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwotICAgIFJlbmRlck9i
amVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3Jl
Q2hpbGQgPSAwKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hp
bGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNyZWF0ZU11bHRpQ29sdW1u
Rmxvd1RocmVhZCgpOwogICAgIHZvaWQgZGVzdHJveU11bHRpQ29sdW1uRmxvd1RocmVhZCgpOwpA
QCAtNDUwLDggKzQ1MCw4IEBAIHByb3RlY3RlZDoKICAgICBMYXlvdXRVbml0IGNvbXB1dGVkQ29s
dW1uV2lkdGgoKSBjb25zdDsKICAgICB1bnNpZ25lZCBjb21wdXRlZENvbHVtbkNvdW50KCkgY29u
c3Q7CiAgICAgCi0gICAgYm9vbCBpc1RvcExheW91dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIGJvb2wgaXNMZWZ0TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzTGVmdExheW91dE92ZXJmbG93QWxsb3dl
ZCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBtb3ZlRmxvYXRzVG8oUmVuZGVyQmxvY2tG
bG93KiB0b0Jsb2NrKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJDb21iaW5lVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNv
bWJpbmVUZXh0LmgKaW5kZXggYTU5NThkNDA4NDIzYmNmODhmNzIxNTUyYzljMzQ0MTBlY2FmMjY1
ZS4uMDFiZTRkNjNkMjZmODNjMmQwZTExMjAyZjMwZmFiNTU5ZjQ4YWRlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmgKQEAgLTQ1LDEwICs0NSwxMCBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgbm9kZSgpIGNvbnN0ID0gZGVsZXRlOwogCi0g
ICAgdmlydHVhbCBib29sIGlzQ29tYmluZVRleHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgsIGNv
bnN0IEZvbnQmLCBmbG9hdCB4UG9zaXRpb24sIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEq
PiogZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckNvbWJp
bmVUZXh0IjsgfQotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVu
Y2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CisgICAgdmlydHVhbCBib29sIGlzQ29t
YmluZVRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBm
bG9hdCB3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IEZvbnQmLCBm
bG9hdCB4UG9zaXRpb24sIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiogZmFsbGJhY2tG
b250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRl
ckNvbWJpbmVUZXh0IjsgfQorICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldFJlbmRlcmVkVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIAogICAg
IFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9jb21iaW5lRm9udFN0eWxlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJDb3VudGVyLmgKaW5kZXggYWRmYTg2YmQ0ZTZkNTFhYWVkNDZjZmNkZGE0
NjYzMmI1MDI0NWRlYy4uYmYzZDQ0NTYxY2MxMjVjODlkNTEyYzdmOTY3YTEyMDM3ZDZiYmI0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oCkBAIC00MywxMiArNDMs
MTIgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQ291bnRlcigpOwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOworICAgIHZpcnR1YWwgdm9pZCB3aWxs
QmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNDb3VudGVyKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgb3JpZ2luYWxUZXh0KCkgY29uc3Q7CisgICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBi
b29sIGlzQ291bnRlcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgU3RyaW5nIG9yaWdp
bmFsVGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmgKaW5kZXggOTQ3NGU4ODk0YzhjYmEzZGFiNGNhNGQ0ZWQzNGJlNjUyOTU3NTRjYi4uYzYx
YzU4Njk3Zjg5NDkyOTc4YWI0Y2ZmMTViNWZlMTE0OTU2MzA1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaApAQCAt
MzYsMjIgKzM2LDIyIEBAIHB1YmxpYzoKIAogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7
IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKLSAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3
U3R5bGUpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlSGVpZ2h0ID0gMCk7CisgICAgdmlydHVhbCB2
b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlSGVp
Z2h0ID0gMCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVs
YXlvdXRDaGlsZHJlbik7CiAgICAgdm9pZCBsYXlvdXRWZXJ0aWNhbEJveChib29sIHJlbGF5b3V0
Q2hpbGRyZW4pOwogCi0gICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXByZWNhdGVkRmxleGlibGVCb3goKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3RyZXRjaGluZ0NoaWxk
cmVuKCkgY29uc3QgeyByZXR1cm4gbV9zdHJldGNoaW5nQ2hpbGRyZW47IH0KKyAgICB2aXJ0dWFs
IGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc1N0cmV0Y2hpbmdDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fc3RyZXRjaGluZ0NoaWxkcmVuOyB9CiAgICAgdmlydHVhbCBib29sIGNhbkNvbGxhcHNl
QW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICB2b2lkIHBsYWNlQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgY29uc3QgTGF5b3V0UG9pbnQm
IGxvY2F0aW9uLCBMYXlvdXRTaXplKiBjaGlsZExheW91dERlbHRhID0gMCk7CiAKIHByaXZhdGU6
CisgICAgdmlydHVhbCBib29sIGlzRGVwcmVjYXRlZEZsZXhpYmxlQm94KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljTG9n
aWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExv
Z2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmgKaW5kZXggMGJmNzE3MTZmMDM5YjY4NGM0YTViMzVlNGZj
ZmY4ZGNmZmNhZDg0OC4uMmI2ZWZhYzYxODFlNmU4OGVlMWEzZWIxZjYxYmI5Y2YyZjhiMDY5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKQEAgLTQ0
LDcgKzQ0LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNGbGV4aWJsZUJveCgpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgYXZv
aWRzRmxvYXRzKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBjYW5Db2xsYXBzZUFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRCbG9jayhi
b29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBv
dmVycmlkZSBmaW5hbDsKQEAgLTU3LDggKzU2LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0hv
cml6b250YWxGbG93KCkgY29uc3Q7CiAKLSAgICBib29sIGlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxv
d2VkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93
ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUb3BMYXlvdXRPdmVyZmxv
d0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMZWZ0TGF5b3V0
T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9n
aWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwpA
QCAtODYsNiArODUsNyBAQCBwcml2YXRlOgogICAgIC8vIFVzZSBhbiBpbmxpbmUgY2FwYWNpdHkg
b2YgOCwgc2luY2UgZmxleGJveCBjb250YWluZXJzIHVzdWFsbHkgaGF2ZSBsZXNzIHRoYW4gOCBj
aGlsZHJlbi4KICAgICB0eXBlZGVmIFZlY3RvcjxMYXlvdXRSZWN0LCA4PiBDaGlsZEZyYW1lUmVj
dHM7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNGbGV4aWJsZUJveCgpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGhhc09ydGhvZ29uYWxGbG93KFJlbmRlckJv
eCYgY2hpbGQpIGNvbnN0OwogICAgIGJvb2wgaXNDb2x1bW5GbG93KCkgY29uc3Q7CiAgICAgYm9v
bCBpc0xlZnRUb1JpZ2h0RmxvdygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGdWxsU2NyZWVuLmgKaW5kZXggNjY1NjU3MTNjZjFmMDdkNmVhOWYxZTg4N2M1MDEwNmQ1
YmRiZmRmZS4uOWI2YzhkYjdiOTU4Y2VjMjc5ZmUyOTM1ZmU4MjMxMzUzYjI2MTIzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCkBAIC0zNiw3ICszNiw2
IEBAIGNsYXNzIFJlbmRlckZ1bGxTY3JlZW4gZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVC
b3ggewogcHVibGljOgogICAgIFJlbmRlckZ1bGxTY3JlZW4oRG9jdW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJGdWxsU2NyZWVuKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJGdWxsU2NyZWVuIjsgfQog
CiAgICAgdm9pZCBzZXRQbGFjZWhvbGRlcihSZW5kZXJCbG9jayopOwpAQCAtNDcsNiArNDYsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB1bndyYXBSZW5kZXJlcihib29sJiByZXF1aXJlc1JlbmRlclRy
ZWVSZWJ1aWxkKTsKIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJGdWxsU2Ny
ZWVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCB3
aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmgKaW5kZXggY2YxYzczMDcyYmY2MzJkMGI5NmViMTQ4YTkyNTA3YzI4
ZDNmN2FjMS4uYmIzNDk0YWE0OTc4Y2FlZTRlNDE4YWM2MDE0ODE1YzU1ODE4NDM0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0
ZToKIAogICAgIExheW91dFVuaXQgZ3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQoY29uc3QgUmVuZGVy
Qm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8R3JpZFRy
YWNrPiYpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q2hpbGRyZW4oUGFpbnRJbmZv
JiBmb3JTZWxmLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIFBhaW50SW5mbyYgZm9y
Q2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRDaGlsZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpIG92ZXJy
aWRlOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgdHJhY2tzQXJlV2lkZXJUaGFuTWluVHJh
Y2tCcmVhZHRoKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgVmVjdG9yPEdyaWRUcmFj
az4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggOWU3MWQyZDFk
YWMyNzVjNjVhMGNiNDI4NzhjZGViMjQ4OTY3MGU4MS4uNGZlNmQ2MTI3M2I1NTAzY2I1YzRjN2Mw
YjE2ZTg1MWVhYTRjZDAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
QEAgLTc4OSw3ICs3ODksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0
IHsgcmV0dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS50cmFuc2Zvcm1TdHlsZTNEKCkgPT0gVHJhbnNm
b3JtU3R5bGUzRFByZXNlcnZlM0Q7IH0KICAgICBib29sIGhhczNEVHJhbnNmb3JtKCkgY29uc3Qg
eyByZXR1cm4gbV90cmFuc2Zvcm0gJiYgIW1fdHJhbnNmb3JtLT5pc0FmZmluZSgpOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZmlsdGVyTmVlZHNSZXBhaW50KCk7CisgICAgdm9pZCBmaWx0ZXJOZWVk
c1JlcGFpbnQoKTsKICAgICBib29sIGhhc0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVy
KCkuaGFzRmlsdGVyKCk7IH0KIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggN2Q5MTg1ZjE5
ZjYzMDk0ODIwNGYxODRjNDE4YjkyMzJiOGQ2MTJkOS4uZmU4ZWI4MzU3ZTk1MGUxOWE3ZjMwMmI4
NzQ5NmNlNjZmZjRiMjM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuaApAQCAtMjE5LDcgKzIxOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgbmVlZHNQaXhlbEFsaWdtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faXNNYWlu
RnJhbWVSZW5kZXJWaWV3TGF5ZXI7IH0KIAogI2lmbmRlZiBOREVCVUcKLSAgICB2aXJ0dWFsIHZv
aWQgdmVyaWZ5Tm90UGFpbnRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmVyaWZ5Tm90UGFpbnRp
bmcoKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgTGF5b3V0UmVjdCBj
b250ZW50c0JveCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oCmluZGV4IDJkNTE5MDFiYjZkODRjMmM2OTkxOTllZjFiZTFiY2Nl
MGQ0ZTdmNjYuLjY0MjRjZjQ5MGE2ZDdlNDY5M2Q3MmFkOTY0Y2JiMWM4NzM4ZjMzNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAg
LTkyLDExICs5MiwxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIENvbXBvc2l0aW5nUmVhc29uczsKIC8v
IAogLy8gVGhlcmUgaXMgb25lIFJlbmRlckxheWVyQ29tcG9zaXRvciBwZXIgUmVuZGVyVmlldy4K
IAotY2xhc3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9yIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDbGll
bnQsIHB1YmxpYyBHcmFwaGljc0xheWVyVXBkYXRlckNsaWVudCB7CitjbGFzcyBSZW5kZXJMYXll
ckNvbXBvc2l0b3IgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCwgcHVibGljIEdy
YXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW5kZXJMYXllckNvbXBvc2l0b3IoUmVuZGVyVmlldyYp
OwotICAgIH5SZW5kZXJMYXllckNvbXBvc2l0b3IoKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJMYXll
ckNvbXBvc2l0b3IoKTsKIAogICAgIC8vIFJldHVybiB0cnVlIGlmIHRoaXMgUmVuZGVyVmlldyBp
cyBpbiAiY29tcG9zaXRpbmcgbW9kZSIgKGkuZS4gaGFzIG9uZSBvciBtb3JlCiAgICAgLy8gY29t
cG9zaXRlZCBSZW5kZXJMYXllcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJGaWx0ZXJJbmZvLmgKaW5kZXggMjY1ZjczZjJlYWIxOWFhOThjMDNlZTlhY2MxNjk4
NTk2OTk5YmE5Zi4uZjk5ZGUxMGM2YWIwNzJhOTY3NTlmMzZkNGU2MjdhNjQ5NDliNDg1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaApA
QCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKFJlbmRlckxh
eWVyJik7CiAKICAgICBleHBsaWNpdCBGaWx0ZXJJbmZvKFJlbmRlckxheWVyJik7Ci0gICAgfkZp
bHRlckluZm8oKTsKKyAgICB2aXJ0dWFsIH5GaWx0ZXJJbmZvKCk7CiAKICAgICBjb25zdCBMYXlv
dXRSZWN0JiBkaXJ0eVNvdXJjZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX2RpcnR5U291cmNlUmVj
dDsgfQogICAgIHZvaWQgZXhwYW5kRGlydHlTb3VyY2VSZWN0KGNvbnN0IExheW91dFJlY3QmIHJl
Y3QpIHsgbV9kaXJ0eVNvdXJjZVJlY3QudW5pdGUocmVjdCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAppbmRleCBkMGUzZmU1ZDI5NDcxMmIyMjJjNDljNzNi
MjgzYTNmNjdlMDYwZmY0Li5mNWY5NjQzNTMwN2RmM2M0OTM3MmFiMjdhZjc1ODI1ZDRlNGM1MzQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCkBAIC01OSw3
ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBub2RlKCkgY29uc3QgPSBkZWxldGU7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0
UG9pbnQmKSBvdmVycmlkZSBmaW5hbCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSB7IH0KIAogICAgIHZpcnR1YWwgVmlz
aWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBS
ZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGludCBjYXJldE1pbk9mZnNldCgp
IGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1hcnF1ZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmgK
aW5kZXggNmM4Nzk5MzdkMzU1OTgwNGY0NWQ3MWNkMGI3NzRiOGViZjkwNmMzMi4uODdjMjAyZGFh
YjMzM2Q0MTkzZTM3ZDlhNWExZDAxYmZmYWNmNzlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWFycXVlZS5oCkBAIC01MywxMSArNTMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgUmVuZGVyTGF5ZXI7CiAKIC8vIFRoaXMgY2xhc3MgaGFuZGxlcyB0aGUgYXV0by1z
Y3JvbGxpbmcgb2YgbGF5ZXJzIHdpdGggb3ZlcmZsb3c6IG1hcnF1ZWUuCi1jbGFzcyBSZW5kZXJN
YXJxdWVlIHsKK2NsYXNzIFJlbmRlck1hcnF1ZWUgZmluYWwgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFJlbmRlck1hcnF1ZWUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBSZW5kZXJNYXJxdWVlKFJlbmRlckxheWVyKik7Ci0gICAgdmlydHVhbCB+
UmVuZGVyTWFycXVlZSgpOworICAgIH5SZW5kZXJNYXJxdWVlKCk7CiAKICAgICBpbnQgc3BlZWQo
KSBjb25zdCB7IHJldHVybiBtX3NwZWVkOyB9CiAgICAgaW50IG1hcnF1ZWVTcGVlZCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJv
bEVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9s
RWxlbWVudHMuaAppbmRleCA4NmQyNzc4ZjljODA2YjcwN2JmNDNmMWFjZWM4YzFiYTJmYTYwYzBm
Li43YTY1YzI5OTI5OGI4YzNiNjc4NDE2ZTk3NDgzMmJlM2Y1ZTljY2JlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaApA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250
YWluZXIoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKIAogcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRl
OwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTEsNyArNTEsNyBA
QCBwdWJsaWM6CiAgICAgUmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIoRWxlbWVu
dCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQg
bGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogfTsKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAg
ICAgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChFbGVtZW50JiwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4pOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiB9OwogCiAjZW5kaWYgLy8gRU5BQkxFKFZJ
REVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZC5oCmluZGV4IDAyMjNjOTgyYzcyMGMzN2U2NzU5NGEwNzhlOWM5
YzgwYzBlYzE0NmYuLmY5NTVmYTJmZGU5NzRjNTJiOGZiMzYzOTdjM2ZmOTUyMzA0MmIxOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dU
aHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5G
bG93VGhyZWFkLmgKQEAgLTQxLDggKzQxLDYgQEAgcHVibGljOgogICAgIFJlbmRlck11bHRpQ29s
dW1uRmxvd1RocmVhZChEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB+UmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJN
dWx0aUNvbHVtbkZsb3dUaHJlYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0K
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRmxvd0NoaWxkSW5mbyhSZW5kZXJPYmplY3QqKSBvdmVy
cmlkZTsKIAogICAgIFJlbmRlckJsb2NrRmxvdyogbXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBjb25z
dCB7IHJldHVybiBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KHBhcmVudCgpKTsgfQpAQCAtNTUs
NyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhv
bGRlciogZmluZENvbHVtblNwYW5uZXJQbGFjZWhvbGRlcihSZW5kZXJCb3gqIHNwYW5uZXIpIGNv
bnN0IHsgcmV0dXJuIG1fc3Bhbm5lck1hcC5nZXQoc3Bhbm5lcik7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkg
b3ZlcnJpZGU7CiAKICAgICAvLyBGaW5kIHRoZSBzZXQgaW5zaWRlIHdoaWNoIHRoZSBzcGVjaWZp
ZWQgcmVuZGVyZXIgd291bGQgYmUgcmVuZGVyZWQuCiAgICAgUmVuZGVyTXVsdGlDb2x1bW5TZXQq
IGZpbmRTZXRSZW5kZXJpbmcoUmVuZGVyT2JqZWN0KikgY29uc3Q7CkBAIC0xMTUsNiArMTEzLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDaGVja0NvbHVtbkJyZWFrcygpIGNv
bnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck11bHRp
Q29sdW1uRmxvd1RocmVhZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgYWRkUmVnaW9uVG9UaHJlYWQoUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxCZVJlbW92ZWRGcm9tVHJlZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAppbmRleCAyN2NhNzM3
YzM4ZDgyYWNlNGRmNGM1Njc1Mjk5ZDFmZmI1NmUzNzZkLi44Y2FjMDUwNTRiOGI1NDA0YzQwMGIz
NzFlMzJkNGYxODlkNjFjOGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5TZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5TZXQuaApAQCAtNDcsOCArNDcsNiBAQCBjbGFzcyBSZW5kZXJNdWx0aUNv
bHVtblNldCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJSZWdpb25TZXQgewogcHVibGljOgogICAgIFJl
bmRlck11bHRpQ29sdW1uU2V0KFJlbmRlckZsb3dUaHJlYWQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
Pik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNdWx0aUNvbHVtblNldCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFJlbmRlckJsb2NrRmxvdyogbXVsdGlDb2x1
bW5CbG9ja0Zsb3coKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KHBh
cmVudCgpKTsgfQogICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogbXVsdGlDb2x1bW5G
bG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyTXVsdGlDb2x1bW5G
bG93VGhyZWFkKj4oZmxvd1RocmVhZCgpKTsgfQogCkBAIC0xMzEsOSArMTI5LDEwIEBAIHB1Ymxp
YzoKICAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAg
dm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZHJlbigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRPdmVyZmxvd0Zyb21DaGlsZHJlbigpIG92ZXJyaWRlOwogICAgIAogcHJpdmF0ZToKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNdWx0aUNvbHVtblNldCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVp
Z2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYp
IGNvbnN0IG92ZXJyaWRlOwpAQCAtMTU1LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0
dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jiwg
Y29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFVuaXQgY2FsY3VsYXRlTWF4Q29sdW1uSGVp
Z2h0KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBjb2x1bW5HYXAoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bh
bm5lclBsYWNlaG9sZGVyLmgKaW5kZXggZjFhNWI4ODQ3M2I4NGFmNWE4YWIyNWMzYmQzM2U0N2Fi
M2I0N2FlMy4uY2Y5ZDFiMzc5Y2M0ZmY5MWM3ZTM3NWU2ZWIzMTRmOGIwOTQxNzhiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBs
YWNlaG9sZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgKQEAgLTQwLDE1ICs0MCwxNSBAQCBjbGFzcyBSZW5kZXJN
dWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCb3ggewog
cHVibGljOgogICAgIHN0YXRpYyBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlciog
Y3JlYXRlQW5vbnltb3VzKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCosIFJlbmRlckJveCog
c3Bhbm5lciwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBp
c1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIFJlbmRlckJveCogc3Bhbm5lcigpIGNvbnN0IHsgcmV0dXJuIG1f
c3Bhbm5lcjsgfQogICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZmxvd1RocmVhZDsgfQogCiBwcml2YXRlOgogICAgIFJlbmRlck11
bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCos
IFJlbmRlckJveCogc3Bhbm5lciwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIHZpcnR1YWwg
Ym9vbCBpc1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5m
byYsIGNvbnN0IExheW91dFBvaW50JikgeyB9CisgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGls
ZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lk
IHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUgeyB9CiAgICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBS
ZW5kZXJCb3gqIG1fc3Bhbm5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKaW5kZXggYzVlZmIzMjQ5NGMzODFhNjJmODQ1NzFhZjE3
N2E2NDQ2YjNjMWQ1YS4uMmMyNDY5Zjc3ZGE0NjBhMTY2YTgwNWU3ZTUwYmRjYjYzYmQwM2MzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50LmgKQEAgLTU0LDEyICs1NCwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4gY3JlYXRlU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKTsK
IAotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3Qgb3Zl
cnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGdldFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPj4mKSBjb25zdDsK
IAotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0OworICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIExheW91dFVuaXQgbWF4UGFnZUxvZ2ljYWxIZWlnaHQoKSBjb25zdDsKICAgICAKICAgICBM
YXlvdXRSZWN0IGZsb3dUaHJlYWRQb3J0aW9uUmVjdEZvckNsaXBwaW5nKGJvb2wgaXNGaXJzdFJl
Z2lvbkluUmFuZ2UsIGJvb2wgaXNMYXN0UmVnaW9uSW5SYW5nZSkgY29uc3Q7CkBAIC0xMjEsNiAr
MTIwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZVJlZ2lvbklmTmVlZGVkKCk7CiAK
IHByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50IjsgfQogCiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY29tcHV0ZVN0eWxlSW5SZWdp
b24oUmVuZGVyRWxlbWVudCYsIFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKaW5kZXgg
MWIwZTc5NDA1MzZmNzA4NDA0OTI5N2E1N2JkNTE1OTZkZDFkODdiZC4uZDg3M2YxYjdiM2ZmNTY2
ZTI0N2M1ZWRlYTlhMmVmMDMwOTJiMmYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc01hcmtlZEZvckRlc3RydWN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBnZXRSYW5n
ZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+JiwgY29uc3QgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQq
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseUJyZWFrQWZ0ZXJDb250ZW50KExheW91
dFVuaXQpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBhcHBseUJyZWFrQWZ0ZXJD
b250ZW50KExheW91dFVuaXQpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGNvbGxlY3Rz
R3JhcGhpY3NMYXllcnNVbmRlclJlZ2lvbnMoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtOTMsNyAr
OTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyUmVuZGVyT2JqZWN0Q3VzdG9tU3R5bGUo
Y29uc3QgUmVuZGVyT2JqZWN0Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRmxvd0NoaWxk
SW5mbyhSZW5kZXJPYmplY3QqKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlRmxvd0NoaWxkSW5mbyhSZW5kZXJPYmplY3QqKSBvdmVycmlkZTsKIAogICAgIExheW91dFVu
aXQgZmxvd0NvbnRlbnRCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX2Zsb3dDb250ZW50Qm90dG9t
OyB9CiAgICAgdm9pZCBkaXNwYXRjaE5hbWVkRmxvd0V2ZW50cygpOwpAQCAtMTExLDcgKzExMSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxk
QWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlT3ZlcmZsb3coTGF5b3V0VW5pdCwgYm9v
bCA9IGZhbHNlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGUg
ZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBk
aXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudElmTmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclF1b3RlLmgKaW5kZXggZDVmYjFkMzVkYjAyZTdmYTU1ZjVjYmE1ZTAy
M2JlMjU4Y2ZiYjAxYi4uOTc0M2E0ZjQ3ZWE4OTBlMTAxN2U3ZTM1N2QwMDQ3ZjA4MzQxNTY1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmgKQEAgLTM5LDcgKzM5LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyUXVvdGUiOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUXVvdGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9OworICAgIHZpcnR1YWwgYm9vbCBpc1F1b3RlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxCZVJlbW92ZWRGcm9tVHJlZSgpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKaW5kZXggMjlkNzlkNTJhNDM1ZDM4NjhiNGYz
Y2VmMGY1YzdhZDM3MmMyZTk3Zi4uYjNmMzFiODA4YmI2MzY4YjA2MzA3MDJjNmMwMmJiY2ZiZTcz
YTMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaApAQCAtNDgsOCAr
NDgsNiBAQCBjbGFzcyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ7CiAKIGNsYXNzIFJlbmRlclJlZ2lv
biA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBp
c1JlbmRlclJlZ2lvbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQog
ICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdHlsZSk7CiAKICAgICB2b2lkIHNldEZsb3dUaHJlYWRQb3J0aW9uUmVj
dChjb25zdCBMYXlvdXRSZWN0JiByZWN0KSB7IG1fZmxvd1RocmVhZFBvcnRpb25SZWN0ID0gcmVj
dDsgfQpAQCAtMTUwLDcgKzE0OCw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNvbXB1dGVPdmVy
Zmxvd0Zyb21GbG93VGhyZWFkKCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclJlZ2lvbiI7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNSZW5kZXJSZWdpb24oKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlclJlZ2lvbiI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRl
ZEludG9UcmVlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZVJlbW92ZWRGcm9t
VHJlZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxpY2EuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmgK
aW5kZXggYzk0NWNiY2RiMmU2OThhM2U2Nzk5MmM0YmZjM2RhYjkyNGU4ZTA2YS4uNWY0YTVhZTgy
MDQwZGViM2QxNGNhZjU2NTA1MGU1YWM2YzI2YTYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGljYS5oCkBAIC0zOCwxMyArMzgsMTMgQEAgcHVibGljOgogICAgIFJlbmRl
clJlcGxpY2EoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+
UmVuZGVyUmVwbGljYSgpOwogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3QgeyByZXR1cm4gIlJlbmRlclJlcGxpY2EiOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJlcGxpY2EiOyB9
CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGlzUmVwbGljYSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKaW5kZXggYzMwYWExMTFlOWUy
ZjMzMzlmMjgzNTFiY2QzNjRkOTJjZTc1ZThhYi4uYjcyMGU1NzAyMTA1MzQ1YmYzMDUxZmUwYzYz
ZGY3ZTYwODEyNjUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJ1YnlCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNl
LmgKQEAgLTQyLDE0ICs0MiwxMyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyUnVieUJhc2UoRG9jdW1l
bnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieUJhc2Uo
KTsKICAgICAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJl
dHVybiAiUmVuZGVyUnVieUJhc2UgKGFub255bW91cykiOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNSdWJ5QmFzZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUnVieUJhc2Ug
KGFub255bW91cykiOyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxv
d2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7Ci0gICAg
dmlydHVhbCBFVGV4dEFsaWduIHRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0
QnJlYWspIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5l
Qm91bmRzKGludCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50LCBmbG9hdCYgbG9naWNhbExlZnQs
IGZsb2F0JiBsb2dpY2FsV2lkdGgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1J1YnlCYXNl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0No
aWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgRVRleHRBbGlnbiB0ZXh0QWxpZ25tZW50Rm9yTGluZShi
b29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyhpbnQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlD
b3VudCwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgbG9naWNhbFdpZHRoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2b2lkIG1lcmdlQ2hpbGRyZW5XaXRoQmFzZShSZW5kZXJSdWJ5QmFzZSogdG9C
bG9jayk7CiAKICAgICB2b2lkIG1vdmVDaGlsZHJlbihSZW5kZXJSdWJ5QmFzZSogdG9CYXNlLCBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJ1YnlSdW4uaAppbmRleCBkOWRjZTRmNzhhNmVlNWUzNGNhNzY5OWVjNGMxMDEzYTVmNjhj
N2NlLi4wNzJjYmZlNDkzOTVjOGZiMDJjODNlYmZjMTMzZmQ1NzM0YTE4MTI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgKQEAgLTQ4LDIwICs0OCwyMCBAQCBwdWJs
aWM6CiAKICAgICBib29sIGhhc1J1YnlUZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNSdWJ5QmFz
ZSgpIGNvbnN0OwotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBp
c0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVuZGVyUnVieVRleHQqIHJ1YnlUZXh0KCkg
Y29uc3Q7CiAgICAgUmVuZGVyUnVieUJhc2UqIHJ1YnlCYXNlKCkgY29uc3Q7CiAgICAgUmVuZGVy
UnVieUJhc2UqIHJ1YnlCYXNlU2FmZSgpOyAvLyBjcmVhdGVzIHRoZSBiYXNlIGlmIGl0IGRvZXNu
J3QgYWxyZWFkeSBleGlzdAogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNp
YWxFeGNsdWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7Ci0gICAgdmlydHVhbCB2b2lk
IGxheW91dCgpOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlvdXRTcGVjaWFsRXhjbHVk
ZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChj
b25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9y
ZUNoaWxkID0gMCk7CisgICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3Jl
Q2hpbGQgPSAwKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hp
bGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlckJsb2NrKiBm
aXJzdExpbmVCbG9jaygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGaXJzdExldHRl
cigpOworICAgIHZpcnR1YWwgUmVuZGVyQmxvY2sqIGZpcnN0TGluZUJsb2NrKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZpcnN0TGV0dGVyKCkgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGdldE92ZXJoYW5nKGJvb2wgZmlyc3RMaW5lLCBSZW5kZXJPYmplY3QqIHN0YXJ0
UmVuZGVyZXIsIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIsIGludCYgc3RhcnRPdmVyaGFuZywg
aW50JiBlbmRPdmVyaGFuZykgY29uc3Q7CiAKQEAgLTcxLDEwICs3MSwxMCBAQCBwcm90ZWN0ZWQ6
CiAgICAgUmVuZGVyUnVieUJhc2UqIGNyZWF0ZVJ1YnlCYXNlKCkgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgdmlydHVhbCBib29sIGlzUnVieVJ1bigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVy
UnVieVJ1biAoYW5vbnltb3VzKSI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlc0Fub255bW91
c1dyYXBwZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZUxlZnRvdmVyQW5vbnltb3VzQmxvY2soUmVuZGVyQmxvY2sqKSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNSdWJ5UnVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5k
ZXJSdWJ5UnVuIChhbm9ueW1vdXMpIjsgfQorICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVzQW5vbnlt
b3VzV3JhcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJCbG9jayopIG92ZXJyaWRl
IHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhci5oCmluZGV4IGRmMTBiNzUyZjFhYWU1M2Q1MTA4NWMyNGY2OTc0
NDAzYmQ2NmM5MTYuLmY2Y2IzMmQ2MmQ3MGM2NzAxYTc2NjQ4NDc3ZmJiZTE1NTUxNDE4NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKQEAgLTU1LDcgKzU1
LDcgQEAgcHVibGljOgogCiAgICAgaW50IG1pbmltdW1UaHVtYkxlbmd0aCgpOwogCi0gICAgdmly
dHVhbCBib29sIGlzT3ZlcmxheVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzT3ZlcmxheVNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAKICAgICBmbG9hdCBvcGFjaXR5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCmluZGV4IGNlYTc3YmI3NGZhYjEwNmU4
ZGE0Mzk2NjVmMzhmNjllYjE1NjQxMWMuLjRhODY2OTI3NWQxZjM2M2FmMGQ1ZjcyMDY0NzFkMWZh
MDAwMjczOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXJQYXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuaApAQCAtMzksMTEgKzM5LDExIEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIH5S
ZW5kZXJTY3JvbGxiYXJQYXJ0KCk7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU2Nyb2xsYmFyUGFydCI7IH0KKyAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
U2Nyb2xsYmFyUGFydCI7IH0KICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKICAgICAKICAgICB2
b2lkIHBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBj
b25zdCBMYXlvdXRSZWN0Jik7CiAKQEAgLTUzLDE1ICs1MywxNSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBMYXlvdXRVbml0IG1hcmdpbkxlZnQoKSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVChpc0lu
dGVnZXJWYWx1ZShtX21hcmdpbkJveC5sZWZ0KCkpKTsgcmV0dXJuIG1fbWFyZ2luQm94LmxlZnQo
KTsgfQogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5SaWdodCgpIGNvbnN0IG92ZXJyaWRl
IHsgQVNTRVJUKGlzSW50ZWdlclZhbHVlKG1fbWFyZ2luQm94LnJpZ2h0KCkpKTsgcmV0dXJuIG1f
bWFyZ2luQm94LnJpZ2h0KCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclNjcm9sbGJh
clBhcnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgUmVuZGVyQm94KiByZW5kZXJlck93
bmluZ1Njcm9sbGJhcigpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KTsKLSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3Qg
SW50UmVjdCogPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDAp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVk
TG9naWNhbFdpZHRocygpOworICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclNjcm9sbGJhclBhcnQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIGNvbXB1
dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxheW91dEhv
cml6b250YWxQYXJ0KCk7CiAgICAgdm9pZCBsYXlvdXRWZXJ0aWNhbFBhcnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggZTMzMWQw
MDliNzdlZGE1MWVjZWQ2MjgyODc3NzM0MmM0YThlNGI0OS4uNTJlMDE2ZjczYmU1MjIwNTJiMDYz
ZjBjYjQ5MGVlNGQxYTZmOTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclRoZW1lLmgKQEAgLTM0LDUxICszNCw1MSBAQCBjbGFzcyBQbGF0Zm9ybU1v
dXNlRXZlbnQ7CiBjbGFzcyBTY3JvbGxiYXI7CiBjbGFzcyBTY3JvbGxWaWV3OwogCi1jbGFzcyBS
ZW5kZXJTY3JvbGxiYXJUaGVtZSA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB7Citj
bGFzcyBSZW5kZXJTY3JvbGxiYXJUaGVtZSBmaW5hbCA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+UmVuZGVyU2Nyb2xsYmFyVGhlbWUoKSB7
fTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJTY3JvbGxiYXJUaGVtZSgpIHsgfQogICAgIAotICAgIHZp
cnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9s
U2l6ZSkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVz
cyhjb250cm9sU2l6ZSk7IH0KKyAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Ny
b2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJh
clRoZW1lOjp0aGVtZSgpLT5zY3JvbGxiYXJUaGlja25lc3MoY29udHJvbFNpemUpOyB9CiAKLSAg
ICB2aXJ0dWFsIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgYnV0dG9uc1BsYWNlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5idXR0b25zUGxhY2VtZW50KCk7
IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgYnV0dG9uc1BsYWNlbWVu
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5idXR0
b25zUGxhY2VtZW50KCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50
cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250
cm9sVGludHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJP
blRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZlbnQpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zaG91bGRD
ZW50ZXJPblRodW1iKHNjcm9sbGJhciwgZXZlbnQpOyB9CisgICAgdmlydHVhbCBib29sIHNob3Vs
ZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6
OnRoZW1lKCktPnNob3VsZENlbnRlck9uVGh1bWIoc2Nyb2xsYmFyLCBldmVudCk7IH0KICAgICAK
LSAgICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKSB7IHJldHVy
biBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+aW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCk7
IH0KLSAgICB2aXJ0dWFsIGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIFNj
cm9sbGJhclRoZW1lOjp0aGVtZSgpLT5hdXRvc2Nyb2xsVGltZXJEZWxheSgpOyB9CisgICAgdmly
dHVhbCBkb3VibGUgaW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCkgb3ZlcnJpZGUgeyByZXR1
cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgp
OyB9CisgICAgdmlydHVhbCBkb3VibGUgYXV0b3Njcm9sbFRpbWVyRGVsYXkoKSBvdmVycmlkZSB7
IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+YXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsg
fQogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5yZWdpc3Rl
clNjcm9sbGJhcihzY3JvbGxiYXIpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3Jv
bGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFy
VGhlbWU6OnRoZW1lKCktPnVucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQorICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyKSBvdmVycmlkZSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cmVnaXN0ZXJT
Y3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQorICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpIG92ZXJyaWRlIHsgcmV0dXJuIFNj
cm9sbGJhclRoZW1lOjp0aGVtZSgpLT51bnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0K
IAotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVu
dCopOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNs
aWVudCopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSk7CiAg
ICAgCiAgICAgc3RhdGljIFJlbmRlclNjcm9sbGJhclRoZW1lKiByZW5kZXJTY3JvbGxiYXJUaGVt
ZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVu
dCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNs
aWVudCopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNl
KTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1
YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5n
ID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9v
bCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGFp
bnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRo
ZW1lQ2xpZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwotICAg
IHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50
UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJ
bnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVj
ZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBJ
bnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbi5oCmluZGV4IGY5OTMyNzkzMjc2NmEyNjk4MGU0ODM0NjViMjlhOTUwMzc1ZDczMzQuLjdm
N2YzNTI2N2QzMTIwNzg1MzViMmRhODVhYzU5MjNhYzlhZTAyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCkBAIC00OSwxMSAr
NDksMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZyYW1lT3duZXJFbGVtZW50KCkgY29uc3QgPSBk
ZWxldGU7CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1
cm4gIlJlbmRlclNuYXBzaG90dGVkUGx1Z0luIjsgfQogCi0gICAgdmlydHVhbCBDdXJzb3JEaXJl
Y3RpdmUgZ2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiwgQ3Vyc29yJikgY29uc3Qgb3ZlcnJp
ZGUgZmluYWw7Ci0gICAgdmlydHVhbCBib29sIGlzU25hcHNob3R0ZWRQbHVnSW4oKSBjb25zdCBv
dmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBDdXJzb3JEaXJlY3Rp
dmUgZ2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiwgQ3Vyc29yJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBib29sIGlzU25hcHNob3R0ZWRQbHVnSW4oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVX
aWRnZXQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBjYW5IYXZlV2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIHZvaWQgcGFpbnRTbmFwc2hvdChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZS5oCmluZGV4IGQ2MmIwMDgzN2ZjYjliNjdjNTVlOGY5OWUyY2UzN2Q5YjI1MDg0
NjcuLjA2NzlhMGZiYzliYTgxY2NkMTBjMDQ4ZmM1NjQ4MDVkMGVhM2E5ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5o
CkBAIC0zOCwxNyArMzgsMTcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQo
KSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1RleHRBcmVhKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1RleHRBcmVhKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlv
biYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zm
c2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgZmxvYXQgZ2V0QXZl
cmFnZUNoYXJXaWR0aCgpOwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwcmVmZXJyZWRDb250ZW50
TG9naWNhbFdpZHRoKGZsb2F0IGNoYXJXaWR0aCkgY29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCBn
ZXRBdmVyYWdlQ2hhcldpZHRoKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IHBy
ZWZlcnJlZENvbnRlbnRMb2dpY2FsV2lkdGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29tcHV0ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KExh
eW91dFVuaXQgbGluZUhlaWdodCwgTGF5b3V0VW5pdCBub25Db250ZW50SGVpZ2h0KSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwg
Ym9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9z
aXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBv
c2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBM
aW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0OwotICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRy
ZW4pOworICAgIHZpcnR1YWwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0IG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5
b3V0Q2hpbGRyZW4pIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oCmluZGV4IDcyMzFi
NTZmNTdlOGYwNDhlODU3NDFiNDIwMjA0ZDQ4NDlkMTIxYmYuLjgyZGNiMTllMjgwMjNjMWM4MTNm
M2M4MTExZGE1MzMxYWY3NGNhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dEZyYWdtZW50LmgKQEAgLTM5LDggKzM5LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB+UmVuZGVyVGV4dEZyYWdtZW50KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RnJhZ21l
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICB2aXJ0dWFsIGJvb2wg
Y2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1bnNpZ25lZCBzdGFy
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7IH0KQEAgLTU5LDYgKzU3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0QWx0VGV4dChjb25zdCBTdHJpbmcmIGFsdFRleHQpIHsgbV9hbHRUZXh0ID0g
YWx0VGV4dDsgfQogICAgIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RnJhZ21l
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgKaW5kZXggMGUxMDY1
YjQ5NmM3MmRlZjQyMGNjYjZjMTk0YTY2NmE1YzQ3YjEyZC4uZmUxZmU2ZjJhOGRiNjI3NDgyMjhj
ZTdjZDlhZjRmYmY0ZGI3Yjc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lR3RrLmgKQEAgLTExNiwxMCArMTE2LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29s
IHBhaW50VGV4dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRBcmVh
KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYp
IG92ZXJyaWRlOwogCi0gICAgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nTGVmdChSZW5kZXJTdHls
ZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGludCBwb3B1cEludGVybmFsUGFkZGluZ1JpZ2h0KFJl
bmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5n
VG9wKFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IHBvcHVwSW50ZXJuYWxQ
YWRkaW5nQm90dG9tKFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBp
bnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdMZWZ0KFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdSaWdodChSZW5kZXJTdHlsZSYp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nVG9w
KFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBpbnQgcG9wdXBJbnRl
cm5hbFBhZGRpbmdCb3R0b20oUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8v
IFRoZSBNYWMgcG9ydCBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIHRoZSAibWVudSBsaXN0IiBhbmQg
dGhlICJtZW51IGxpc3QgYnV0dG9uLiIKICAgICAvLyBUaGUgZm9ybWVyIGlzIHVzZWQgd2hlbiBh
IG1lbnUgbGlzdCBidXR0b24gaGFzIGJlZW4gc3R5bGVkLiBUaGlzIGlzIHVzZWQgdG8gZW5zdXJl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCmluZGV4IGNkOGVmMmNj
NDI1MzkyM2U1OWYwM2EzODA0ZjQzZTNkMWNlY2M2OTcuLjFjODQzNTdhY2RjMzdlMzZiZDBiZWE4
YmM5YjEwY2M0YjEyMmE2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbmRl
clN0eWxlOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogICAgIAotY2xhc3MgUmVuZGVyVGhlbWVJ
T1MgOiBwdWJsaWMgUmVuZGVyVGhlbWUgeworY2xhc3MgUmVuZGVyVGhlbWVJT1MgZmluYWwgOiBw
dWJsaWMgUmVuZGVyVGhlbWUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRl
clRoZW1lPiBjcmVhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lU2FmYXJpLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVTYWZhcmkuaAppbmRleCBjZDEwNjIzNDMyM2EyMjk5OWJjZDYxZDYwNmEyNTAwNzk2MDYzYWE2
Li5kNWExZDZiYTNkMTQwYzA2MWEwODY3MWUwZjQwMzZjZTVlMjhjYTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaApAQCAtNDUsOTIgKzQ1LDkxIEBA
IHVzaW5nIG5hbWVzcGFjZSBTYWZhcmlUaGVtZTsKIAogY2xhc3MgUmVuZGVyU3R5bGU7CiAKLWNs
YXNzIFJlbmRlclRoZW1lU2FmYXJpIDogcHVibGljIFJlbmRlclRoZW1lIHsKK2NsYXNzIFJlbmRl
clRoZW1lU2FmYXJpIGZpbmFsIDogcHVibGljIFJlbmRlclRoZW1lIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CiAKICAgICAvLyBBIG1ldGhv
ZCB0byBvYnRhaW4gdGhlIGJhc2VsaW5lIHBvc2l0aW9uIGZvciBhICJsZWFmIiBjb250cm9sLiAg
VGhpcyB3aWxsIG9ubHkgYmUgdXNlZCBpZiBhIGJhc2VsaW5lCiAgICAgLy8gcG9zaXRpb24gY2Fu
bm90IGJlIGRldGVybWluZWQgYnkgZXhhbWluaW5nIGNoaWxkIGNvbnRlbnQuIENoZWNrYm94ZXMg
YW5kIHJhZGlvIGJ1dHRvbnMgYXJlIGV4YW1wbGVzIG9mCiAgICAgLy8gY29udHJvbHMgdGhhdCBu
ZWVkIHRvIGRvIHRoaXMuCi0gICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihjb25zdCBS
ZW5kZXJPYmplY3QmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKGNv
bnN0IFJlbmRlck9iamVjdCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQSBtZXRob2QgYXNr
aW5nIGlmIHRoZSBjb250cm9sIGNoYW5nZXMgaXRzIHRpbnQgd2hlbiB0aGUgd2luZG93IGhhcyBm
b2N1cyBvciBub3QuCi0gICAgdmlydHVhbCBib29sIGNvbnRyb2xTdXBwb3J0c1RpbnRzKGNvbnN0
IFJlbmRlck9iamVjdCYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjb250cm9sU3VwcG9ydHNU
aW50cyhjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEEgZ2Vu
ZXJhbCBtZXRob2QgYXNraW5nIGlmIGFueSBjb250cm9sIHRpbnRpbmcgaXMgc3VwcG9ydGVkIGF0
IGFsbC4KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFJl
cGFpbnRSZWN0KGNvbnN0IFJlbmRlck9iamVjdCYsIEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0UmVwYWludFJlY3QoY29uc3QgUmVuZGVyT2JqZWN0JiwgSW50UmVjdCYpIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHls
ZSYsIGNvbnN0IEJvcmRlckRhdGEmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgRmlsbExheWVyJiwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0
IEJvcmRlckRhdGEmLCBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENv
bG9yKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRm
b3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IENvbG9yIGFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBDb2xvciBh
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIENvbG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIC8vIFN5c3RlbSBmb250cy4KLSAgICB2aXJ0dWFsIHZvaWQgc3lzdGVtRm9udChDU1NWYWx1
ZUlELCBGb250RGVzY3JpcHRpb24mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc3lzdGVtRm9u
dChDU1NWYWx1ZUlELCBGb250RGVzY3JpcHRpb24mKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgaW50IG1pbmltdW1NZW51TGlzdFNpemUoUmVuZGVyU3R5bGUmKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGludCBtaW5pbXVtTWVudUxpc3RTaXplKFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxl
JiwgRWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUaHVtYlN0
eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlJiwgRWxlbWVudCop
IGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUaHVtYlN0eWxl
KFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsK
ICAgICAKLSAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ0xlZnQoUmVuZGVyU3R5
bGUmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ1JpZ2h0KFJl
bmRlclN0eWxlJikgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdU
b3AoUmVuZGVyU3R5bGUmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFk
ZGluZ0JvdHRvbShSZW5kZXJTdHlsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IHBvcHVwSW50
ZXJuYWxQYWRkaW5nTGVmdChSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1
YWwgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nUmlnaHQoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ1RvcChSZW5kZXJTdHls
ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5n
Qm90dG9tKFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICAv
LyBNZXRob2RzIGZvciBlYWNoIGFwcGVhcmFuY2UgdmFsdWUuCi0gICAgdmlydHVhbCBib29sIHBh
aW50Q2hlY2tib3goY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUm
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChjb25zdCBSZW5kZXJPYmpl
Y3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHNldENoZWNrYm94U2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCBib29sIHBhaW50UmFkaW8oY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRSYWRpb1Np
emUoUmVuZGVyU3R5bGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRSYWRpbyhjb25z
dCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2
ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCdXR0b25TaXplKFJlbmRlclN0eWxlJikgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBS
ZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRCdXR0b25TaXplKFJlbmRl
clN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0Rmll
bGQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0RmllbGRTdHlsZShTdHlsZVJlc29sdmVyJiwg
UmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHBhaW50VGV4
dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5
bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCBib29sIHBhaW50VGV4dEFyZWEoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0
QXJlYVN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0QXJlYShjb25zdCBSZW5kZXJPYmplY3QmLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGFkanVzdFRleHRBcmVhU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVu
dCopIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3QoY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJT
dHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChj
b25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZl
ciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBib29sIHBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3Qm
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBF
bGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3RCdXR0b25EZWNv
cmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBGbG9h
dFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RCdXR0b25T
dHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmpl
Y3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29s
IHBhaW50U2xpZGVyVGh1bWIoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRyYWNrKGNvbnN0
IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3Qm
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZp
ZWxkU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBF
bGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNo
RmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVt
ZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0
b24oY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0
eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJP
YmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uUGFydFN0eWxlKFN0eWxl
UmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJv
b2wgcGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlck9iamVjdCYsIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0
U2VhcmNoRmllbGREZWNvcmF0aW9uUGFydFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHls
ZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFy
Y2hGaWVsZERlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RT
ZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5k
ZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hG
aWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZp
ZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxl
JiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJj
aEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVy
U3R5bGUmLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmll
bGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRz
QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRv
bihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikg
b3ZlcnJpZGU7CiAgCi0gICAgdmlydHVhbCBib29sIHBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAg
IHZpcnR1YWwgYm9vbCBwYWludENhcHNMb2NrSW5kaWNhdG9yKGNvbnN0IFJlbmRlck9iamVjdCYs
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAogI2lmIEVOQUJM
RShWSURFTykKLSAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhQ29udHJvbHNTY3JpcHQoKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpIG92ZXJyaWRl
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhQ29udHJvbHNTY3JpcHQoKSBvdmVy
cmlkZSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCkBAIC0x
NDAsNyArMTM5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBwYWludE1ldGVyKGNv
bnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVy
cmlkZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBib29sIHNob3VsZFNob3dQbGFjZWhvbGRlcldo
ZW5Gb2N1c2VkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRTaG93UGxhY2Vob2xkZXJXaGVuRm9jdXNlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAogcHJpdmF0ZToKICAgICBSZW5kZXJUaGVtZVNhZmFyaSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaAppbmRleCBhZWI0MzhmMDE1N2FhOTI4Y2YzMmQ0
NjU5MmFhYjAzOTU1YTEyY2YyLi5jYzgzOGVmMTQzYjljMGJjZWY2ZTRkYmQ0MTE1MmI3YmE5ZTc4
NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaApAQCAtNDcs
MTIgKzQ3LDEyIEBAIHN0cnVjdCBUaGVtZURhdGEgewogICAgIHVuc2lnbmVkIG1fY2xhc3NpY1N0
YXRlOwogfTsKIAotY2xhc3MgUmVuZGVyVGhlbWVXaW4gOiBwdWJsaWMgUmVuZGVyVGhlbWUgewor
Y2xhc3MgUmVuZGVyVGhlbWVXaW4gZmluYWw6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwogCi0gICAgdmly
dHVhbCBTdHJpbmcgZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOwotICAgIHZpcnR1YWwgU3RyaW5n
IGV4dHJhUXVpcmtzU3R5bGVTaGVldCgpOworICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhRGVmYXVs
dFN0eWxlU2hlZXQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFN0cmluZyBleHRyYVF1aXJrc1N0
eWxlU2hlZXQoKSBvdmVycmlkZTsKIAogICAgIC8vIEEgbWV0aG9kIGFza2luZyBpZiB0aGUgdGhl
bWUncyBjb250cm9scyBhY3R1YWxseSBjYXJlIGFib3V0IHJlZHJhd2luZyB3aGVuIGhvdmVyZWQu
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSG92ZXIoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWRlby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKaW5kZXggZWE2
MDhlYzgxNjYwYmIwNDc3MTVjMzkyZWM0Y2Q3NGMwZjc1NjcwNC4uNzQ4MjRiN2M2OWIzOWEzM2Mx
ZTAyMzY5ZWU4Mzc3MzE0ZTBjYzA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZGVvLmgKQEAgLTUwLDM3ICs1MCwzNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHJlcXVpcmVzSW1t
ZWRpYXRlQ29tcG9zaXRpbmcoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGREaXNw
bGF5VmlkZW8oKSBjb25zdDsKKyAgICBib29sIHNob3VsZERpc3BsYXlWaWRlbygpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIHZvaWQgbWVkaWFFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNT
aXplQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIG92
ZXJyaWRlOwogICAgIExheW91dFNpemUgY2FsY3VsYXRlSW50cmluc2ljU2l6ZSgpOwogICAgIHZv
aWQgdXBkYXRlSW50cmluc2ljU2l6ZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdl
ZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW1h
Z2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRl
clZpZGVvIjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJWaWRlbyI7IH0KIAotICAgIHZpcnR1YWwgYm9vbCByZXF1
aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Zp
ZGVvKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xh
eWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2
b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVw
bGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCAgPSBDb21wdXRlQWN0dWFs
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2Vk
TG9naWNhbEhlaWdodCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVw
bGFjZWRMb2dpY2FsSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBMYXlvdXRV
bml0IG1pbmltdW1SZXBsYWNlZEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRMZWZ0KCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldFRvcCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgTGF5b3V0VW5pdCBvZmZzZXRXaWR0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBvZmZzZXRIZWlnaHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0TGVm
dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRUb3AoKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0V2lkdGgoKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0SGVpZ2h0KCkgY29uc3Qg
b3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQgdXBkYXRlUGxheWVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuaAppbmRleCBiZmZkMjJjZDJhZjZiYmI5YzM0NTE5
OThlZTYzYzM4ZTRlZmE1MzIxLi4yNzVmODY2ZTc1OTg1Zjg2ZDYwNmZmMjY4YTIwNmQ5ODcxZWYz
NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmgKQEAgLTQxLDEy
ICs0MSwxMiBAQCBjbGFzcyBSZW5kZXJUZXh0Owogc3RydWN0IFRleHRBdXRvc2l6aW5nV2luZG93
SW5mbzsKIHN0cnVjdCBUZXh0QXV0b3NpemluZ0NsdXN0ZXJJbmZvOwogCi1jbGFzcyBUZXh0QXV0
b3NpemVyIHsKK2NsYXNzIFRleHRBdXRvc2l6ZXIgZmluYWwgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFRleHRBdXRvc2l6ZXIpOwogCiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVGV4dEF1dG9z
aXplcihEb2N1bWVudCopOwotICAgIHZpcnR1YWwgflRleHRBdXRvc2l6ZXIoKTsKKyAgICB+VGV4
dEF1dG9zaXplcigpOwogCiAgICAgYm9vbCBwcm9jZXNzU3VidHJlZShSZW5kZXJPYmplY3QqIGxh
eW91dFJvb3QpOwogICAgIHZvaWQgcmVjYWxjdWxhdGVNdWx0aXBsaWVycygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5o
CmluZGV4IGNiODk1NzZlZmZkNTQ4NThiNDAwOTZjZjVmZmZiZTEyNTJjMTVmYmQuLmEzNDczZWVh
ODNhZDNjZDU3ODRmMjQ5ZmJjYTQzZDRmYWNiN2E2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LmgKQEAgLTM5LDcg
KzM5LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGZsb2F0IHZp
cnR1YWxMb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgZmxv
YXQgdmlydHVhbExvZ2ljYWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggYzk0YTIxZDdkYmMyNzRlOTgz
ZGI4ZTc2MGYyZjUxMDYyN2EwNGFlMS4uZjhmMTJhOGZhM2JhMTQzNDc1OGVmYjdmZDRiYmMzYzcw
YzUzZWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MQmxvY2suaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBp
bnQgZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKICAgICAKIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MVGFibGUoKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MVGFibGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTFRhYmxl
IjsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxNZW5jbG9zZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxNZW5jbG9zZS5oCmluZGV4IDQzYjQ2MzQ4MWI5ZDQzOTZhZDI4NWQ5ZjBmYjI0
MmE2YTY4ZTFiZmUuLjc2OTg0ODk5YmI5MDQ0N2U1OTRlMmEyZmEyMmFjOGE0NjJjMTliNmIgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVu
Y2xvc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE1lbmNsb3NlLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIFJlbmRlck1hdGhNTE1l
bmNsb3NlKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAKIHByaXZhdGU6Ci0gICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlck1h
dGhNTE1lbmNsb3NlIjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxNZW5jbG9zZSI7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9naWNhbEhlaWdodCgpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3Qq
IGJlZm9yZUNoaWxkID0gbnVsbHB0cikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKaW5kZXggZDRiNjlk
OGY1MTE1NjYxMThhNTJjMjIwYzE1Y2ZlOGExZTFjYjJiYS4uMzY5OWI3MWNkNjg4NmE3NGMzNDBk
OTc3M2Q5YzkwMDRkYmYzZjZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaApAQCAtNzIsMTIgKzcyLDEyIEBAIHB1
YmxpYzoKICAgICAvLyBGSVhNRTogVGhlIGRpc3BsYXlzdHlsZSBwcm9wZXJ0eSBpcyBub3QgaW1w
bGVtZW50ZWQgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg3Mzcp
LgogICAgIGJvb2wgaXNMYXJnZU9wZXJhdG9ySW5EaXNwbGF5U3R5bGUoKSBjb25zdCB7IHJldHVy
biAhaGFzT3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6U3RyZXRjaHkpICYm
IGhhc09wZXJhdG9yRmxhZyhNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkxhcmdlT3ApOyB9CiAK
LSAgICB2b2lkIHVwZGF0ZVN0eWxlKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVN0eWxlKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIHZvaWQgdXBkYXRlVG9rZW5D
b250ZW50KGNvbnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcpOwotICAgIHZvaWQgdXBkYXRlVG9r
ZW5Db250ZW50KCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRva2Vu
Q29udGVudCgpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlT3BlcmF0b3JQcm9wZXJ0
aWVzKCk7CiAgICAgdm9pZCBzZXRPcGVyYXRvckZsYWdBbmRTY2hlZHVsZUxheW91dElmTmVlZGVk
KE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6RmxhZywgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRy
aWJ1dGVWYWx1ZSk7CiAgICAgTGF5b3V0VW5pdCB0cmFpbGluZ1NwYWNlRXJyb3IoKTsKQEAgLTE1
Nyw3ICsxNTcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5l
bWJlbGxpc2hlZE9wZXJhdG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQogICAgIHZvaWQg
cmVidWlsZFRva2VuQ29udGVudChjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nKTsKLSAgICB2
b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZEFsbG93U3RyZXRjaGlu
ZygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuaAppbmRleCBlY2NkNjFjODRkY2Rm
OTkyMDczNDU3YmQzMzcyM2MxMzM4YjgzM2RmLi41YTJhNzlmYzY2YWExNTg4YTFkNGY0ZThkNjdh
NzViYjRiZmQ4YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmgKQEAgLTM2LDcgKzM2LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9y
IGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTE9wZXJhdG9yIHsKIHB1YmxpYzoKICAgICBSZW5k
ZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
Ci0gICAgdmlydHVhbCB2b2lkIHN0cmV0Y2hUbyhMYXlvdXRVbml0IGhlaWdodEFib3ZlQmFzZWxp
bmUsIExheW91dFVuaXQgZGVwdGhCZWxvd0Jhc2VsaW5lKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZXRjaFRvKExheW91dFVuaXQgaGVpZ2h0QWJvdmVCYXNlbGluZSwgTGF5b3V0VW5pdCBkZXB0aEJl
bG93QmFzZWxpbmUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVk
TG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNh
bEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwg
TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkg
b3ZlcnJpZGU7CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIGlzUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGlzQW5vbnltb3VzKCkgPyAiUmVuZGVyTWF0aE1MUmFkaWNhbE9w
ZXJhdG9yIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IiOyB9Ci0g
ICAgdm9pZCBzZXRPcGVyYXRvclByb3BlcnRpZXMoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0T3BlcmF0b3JQcm9wZXJ0aWVzKCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MUm9vdC5oCmluZGV4IGFmMDAwYTcyYzM5MzcwYWVjMmYzODIyNWRlNTk2NTNjNWNjY2Jl
OGMuLjhhYzQ4ZDQ1MTk1MTA5NzM0OTkyNjBjMjU3M2VlN2FjMDAxZmQ0ODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCkBAIC03
Myw3ICs3Myw3IEBAIHByaXZhdGU6CiB9OwogCiAvLyBUaGVzZSBhcmUgc3BlY2lmaWMgd3JhcHBl
cnMgZm9yIHRoZSBpbmRleCBhbmQgYmFzZSwgdGhhdCBhc2sgdGhlIHBhcmVudCB0byByZXN0cnVj
dHVyZSB0aGUgcmVuZGVyZXJzIGFmdGVyIGNoaWxkIHJlbW92YWwuCi1jbGFzcyBSZW5kZXJNYXRo
TUxSb290V3JhcHBlciA6IHB1YmxpYyBSZW5kZXJNYXRoTUxSb3cgeworY2xhc3MgUmVuZGVyTWF0
aE1MUm9vdFdyYXBwZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MUm93IHsKIAogZnJpZW5k
IGNsYXNzIFJlbmRlck1hdGhNTFJvb3Q7CiAKQEAgLTgzLDkgKzgzLDkgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGRXaXRob3V0UmVzdHJ1Y3R1cmlu
ZyhSZW5kZXJPYmplY3QmKTsKLSAgICBSZW5kZXJPYmplY3QqIHJlbW92ZUNoaWxkKFJlbmRlck9i
amVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiByZW1vdmVDaGlsZChS
ZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKICAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlck1hdGhN
TFJvb3RXcmFwcGVyPiBjcmVhdGVBbm9ueW1vdXNXcmFwcGVyKFJlbmRlck1hdGhNTFJvb3QqIHJl
bmRlck9iamVjdCk7Ci0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIo
KSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29s
IGlzUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlck1hdGhNTFJvb3RXcmFwcGVyIjsgfQogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgKaW5kZXggYmE1ZGY4
ODI1N2Q2OGRiZDE0MDIxNDZjMWNlMGVmNWEwNzc4NzAyNy4uYjg3ZDk2NDA0YzgyMWJjMmM4NzUw
ODVjMzc5ODhlNmQwZjBlZTQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHVwZGF0ZU9wZXJhdG9yUHJvcGVydGllcygpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVh
bCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxSb3coKSBjb25zdCBvdmVy
cmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCmluZGV4IDc1NDI2NzgyZTBkNGU1
MjNmNzYwOTI3MTc4ZDBmYjIzMjI4OWU1ZmEuLjFiNWU3MWQ2NjYxMjNhYjU5ZjdkM2ZlZmMzNzg4
ZjBkNGM3MDM1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MU2NyaXB0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKIGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHM7CiAKLWNsYXNzIFJlbmRlck1h
dGhNTFNjcmlwdHNXcmFwcGVyIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKK2NsYXNzIFJl
bmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2Nr
IHsKIAogZnJpZW5kIGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHM7CiAKQEAgLTY2LDcgKzY2LDcg
QEAgcHJpdmF0ZToKIH07CiAKIC8vIFJlbmRlciBhIGJhc2Ugd2l0aCBzY3JpcHRzLgotY2xhc3Mg
UmVuZGVyTWF0aE1MU2NyaXB0cyA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CitjbGFzcyBS
ZW5kZXJNYXRoTUxTY3JpcHRzIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIAog
ZnJpZW5kIGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyOwogCkBAIC03NSwxNyArNzUs
MTcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNo
aWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOwogICAg
IAotICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRv
cigpOworICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVy
YXRvcigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Cisg
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogICAgIAogcHJpdmF0ZToKICAgICB2
b2lkIGFkZENoaWxkSW50ZXJuYWwoYm9vbCBub3JtYWxJbnNlcnRpb24sIFJlbmRlck9iamVjdCog
Y2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKICAgICBSZW5kZXJPYmplY3Qq
IHJlbW92ZUNoaWxkSW50ZXJuYWwoYm9vbCBub3JtYWxSZW1vdmFsLCBSZW5kZXJPYmplY3QmIGNo
aWxkKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFNjcmlwdHMoKSBjb25zdCBv
dmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVy
TWF0aE1MU2NyaXB0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyTWF0aE1MU2NyaXB0cyI7IH0KIAogICAgIHZvaWQgZml4QW5vbnltb3VzU3R5bGVGb3JTdWJT
dXBQYWlyKFJlbmRlck9iamVjdCogc3ViU3VwUGFpciwgYm9vbCBpc1Bvc3RTY3JpcHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tl
bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5o
CmluZGV4IGY1YWQ1YmJhMDRmMGI1MWIwMDY5MWIxYmUyODQyODhkZmJlMzE2MjguLjBhNGQ2NGFm
Y2RiZDcyYTZhYmJjMjc2N2ZkNjFiMjhjOGQxNmMzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKQEAgLTQxLDE2ICs0MSwx
NiBAQCBwdWJsaWM6CiAKICAgICBNYXRoTUxUZXh0RWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PE1hdGhNTFRleHRFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsg
fQogCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MVG9rZW4oKSBjb25zdCBvdmVycmlk
ZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2Vk
KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0
KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVRva2VuQ29udGVudCgpOwotICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1l
bnQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVy
cmlkZTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgY3JlYXRlV3JhcHBlcklmTmVlZGVkKCk7CiAK
IHByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MVG9rZW4oKSBjb25zdCBv
dmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5k
ZXJNYXRoTUxUb2tlbiAoYW5vbnltb3VzKSIgOiAiUmVuZGVyTWF0aE1MVG9rZW4iOyB9CiAgICAg
dmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3R5bGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFVuZGVyT3Zlci5oCmluZGV4IGJkZTU5MTU2Nzg3ODhjMTU4NjBkOGYwZGRiOTk0Mjk3NWY5
M2I3OTkuLjZmNjUzZDUxYzAwODBhZjgwMGJmZmI0ODk0YTc0YTkwMzdjZjY2ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRl
ck92ZXIuaApAQCAtMzIsMTYgKzMyLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
LWNsYXNzIFJlbmRlck1hdGhNTFVuZGVyT3ZlciA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7
CitjbGFzcyBSZW5kZXJNYXRoTUxVbmRlck92ZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1M
QmxvY2sgewogcHVibGljOgogICAgIFJlbmRlck1hdGhNTFVuZGVyT3ZlcihFbGVtZW50JiwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOwogICAgIAotICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0
b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpOworICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3Bl
cmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBp
bnQgZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKICAgICAKIHByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFVuZGVy
T3ZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvQm94U2hhcGUuaAppbmRleCA4MDliYTgyNDQ2ODg2NjA5NzBlMjNmZTYx
YWRkOGNiNGNmYzgwZWFhLi5jMmIxNzcxMzdjMzc1YTI2YTVkYmQ2YzFlMjc1ZDk1NTk4MWY5MzE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5oCkBAIC00MCw3
ICs0MCw3IEBAIGNsYXNzIFJlbmRlckJveDsKIAogUm91bmRlZFJlY3QgY29tcHV0ZVJvdW5kZWRS
ZWN0Rm9yQm94U2hhcGUoQ1NTQm94VHlwZSwgY29uc3QgUmVuZGVyQm94Jik7CiAKLWNsYXNzIEJv
eFNoYXBlIDogcHVibGljIFNoYXBlIHsKK2NsYXNzIEJveFNoYXBlIGZpbmFsIDogcHVibGljIFNo
YXBlIHsKIHB1YmxpYzoKICAgICBCb3hTaGFwZShjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBib3Vu
ZHMpCiAgICAgICAgIDogbV9ib3VuZHMoYm91bmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmgKaW5kZXggNDRmZTYyOTdhZGVkMmU4YWE4YzkyYjVj
ZDY5NTczMjI5MTg0ZmExNi4uYWU1MGIwZjdlMWQwODgyMTk5ZTRiNmIwZTJmMzU2Mjg5OTAyYjll
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hh
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5o
CkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgT2Zmc2V0
UG9seWdvbkVkZ2UgOiBwdWJsaWMgVmVydGV4UGFpciB7CitjbGFzcyBPZmZzZXRQb2x5Z29uRWRn
ZSBmaW5hbCA6IHB1YmxpYyBWZXJ0ZXhQYWlyIHsKIHB1YmxpYzoKICAgICBPZmZzZXRQb2x5Z29u
RWRnZShjb25zdCBGbG9hdFBvbHlnb25FZGdlJiBlZGdlLCBjb25zdCBGbG9hdFNpemUmIG9mZnNl
dCkKICAgICAgICAgOiBtX3ZlcnRleDEoZWRnZS52ZXJ0ZXgxKCkgKyBvZmZzZXQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKaW5kZXggYjdiMDEzNTZh
ZDQ5MmQwMjIwMzk0MGI5YWYzZjQ5YmE1YWNhZWQ2Mi4uYzA5YjUyZWM1NjhkNTYxOTU2YWJhYzUy
NGY4ZTc1ZjI2ZTdiNjJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9SYXN0ZXJTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
UmFzdGVyU2hhcGUuaApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIGludCBtX29mZnNl
dDsKIH07CiAKLWNsYXNzIFJhc3RlclNoYXBlIDogcHVibGljIFNoYXBlIHsKK2NsYXNzIFJhc3Rl
clNoYXBlIGZpbmFsIDogcHVibGljIFNoYXBlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShS
YXN0ZXJTaGFwZSk7CiBwdWJsaWM6CiAgICAgUmFzdGVyU2hhcGUoc3RkOjp1bmlxdWVfcHRyPFJh
c3RlclNoYXBlSW50ZXJ2YWxzPiBpbnRlcnZhbHMsIGNvbnN0IEludFNpemUmIG1hcmdpblJlY3RT
aXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5n
bGVTaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFw
ZS5oCmluZGV4IGYwZTNmMGY3N2E1N2NkZjU1MTVkNmZmN2I5M2ZiMDc5NDNhMTNlNjguLmIwMzYx
YzYxMjIyNzExNDViNTllNzkyYTg2YWMxNGZlMDhmY2Q2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmgKQEAgLTM5LDcgKzM5LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBSZWN0YW5nbGVTaGFwZSA6IHB1YmxpYyBT
aGFwZSB7CitjbGFzcyBSZWN0YW5nbGVTaGFwZSBmaW5hbCA6IHB1YmxpYyBTaGFwZSB7CiBwdWJs
aWM6CiAgICAgUmVjdGFuZ2xlU2hhcGUoY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGNvbnN0IEZs
b2F0U2l6ZSYgcmFkaWkpCiAgICAgICAgIDogbV9ib3VuZHMoYm91bmRzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAppbmRleCBjYjc3Y2NlNjZhY2JmY2Nj
YzA3OThiZWZlNjQ5ZjhlMDYyMTliM2VkLi40OTQ4ZGYxNzlmNTkxY2Y0OTU0YzM1ZGNmNGZlYzgy
ODdiMGRiMjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFz
aWNTaGFwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuaApAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAKIH07CiAKLWNsYXNzIEJhc2ljU2hh
cGVDaXJjbGUgOiBwdWJsaWMgQmFzaWNTaGFwZSB7CitjbGFzcyBCYXNpY1NoYXBlQ2lyY2xlIGZp
bmFsIDogcHVibGljIEJhc2ljU2hhcGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEJhc2ljU2hhcGVDaXJjbGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY1No
YXBlQ2lyY2xlKTsgfQogCkBAIC0xNzAsNyArMTcwLDcgQEAgcHJpdmF0ZToKICAgICBCYXNpY1No
YXBlUmFkaXVzIG1fcmFkaXVzOwogfTsKIAotY2xhc3MgQmFzaWNTaGFwZUVsbGlwc2UgOiBwdWJs
aWMgQmFzaWNTaGFwZSB7CitjbGFzcyBCYXNpY1NoYXBlRWxsaXBzZSBmaW5hbCA6IHB1YmxpYyBC
YXNpY1NoYXBlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY1NoYXBlRWxs
aXBzZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljU2hhcGVFbGxpcHNlKTsg
fQogCkBAIC0xOTgsNyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICBCYXNpY1NoYXBlUmFkaXVzIG1f
cmFkaXVzWTsKIH07CiAKLWNsYXNzIEJhc2ljU2hhcGVQb2x5Z29uIDogcHVibGljIEJhc2ljU2hh
cGUgeworY2xhc3MgQmFzaWNTaGFwZVBvbHlnb24gZmluYWwgOiBwdWJsaWMgQmFzaWNTaGFwZSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QmFzaWNTaGFwZVBvbHlnb24+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY1NoYXBlUG9seWdvbik7IH0KIApAQCAtMjI0
LDcgKzIyNCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPExlbmd0aD4gbV92YWx1ZXM7CiB9Owog
Ci1jbGFzcyBCYXNpY1NoYXBlSW5zZXQgOiBwdWJsaWMgQmFzaWNTaGFwZSB7CitjbGFzcyBCYXNp
Y1NoYXBlSW5zZXQgZmluYWwgOiBwdWJsaWMgQmFzaWNTaGFwZSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8QmFzaWNTaGFwZUluc2V0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgQmFzaWNTaGFwZUluc2V0KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCmluZGV4IDU2NzNiMDc5N2Y5M2JmNDA1N2Vk
NzQ3OTk1MjQ3ZTRjOGI4ZjU0MDIuLmI0ZDE5MTAyM2JjZTMzZDQ0NjM3Zjk0MTM1MzA0OTRiYWMy
MTQ1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBl
bmRpbmdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBl
bmRpbmdJbWFnZS5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHN0
eWxlIHJlc29sdXRpb24sIGluIG9yZGVyIHRvIGF2b2lkIGxvYWRpbmcgaW1hZ2VzIHRoYXQgYXJl
IG5vdCByZWZlcmVuY2VkIGJ5IHRoZSBmaW5hbCBzdHlsZS4KIC8vIFRoZXkgc2hvdWxkIG5ldmVy
IGV4aXN0IGluIGEgUmVuZGVyU3R5bGUgYWZ0ZXIgaXQgaGFzIGJlZW4gcmV0dXJuZWQgZnJvbSB0
aGUgc3R5bGUgc2VsZWN0b3IuCiAKLWNsYXNzIFN0eWxlUGVuZGluZ0ltYWdlIDogcHVibGljIFN0
eWxlSW1hZ2UgeworY2xhc3MgU3R5bGVQZW5kaW5nSW1hZ2UgZmluYWwgOiBwdWJsaWMgU3R5bGVJ
bWFnZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVQZW5kaW5nSW1hZ2U+
IGNyZWF0ZShDU1NWYWx1ZSogdmFsdWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVBlbmRp
bmdJbWFnZSh2YWx1ZSkpOyB9CiAKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIEZsb2F0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCosIGZsb2F0IC8qbXVs
dGlwbGllciovKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGbG9hdFNpemUoKTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUlu
dHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyRWxlbWVudCosIExlbmd0aCYgLyogaW50cmlu
c2ljV2lkdGggKi8gLCBMZW5ndGgmIC8qIGludHJpbnNpY0hlaWdodCAqLywgRmxvYXRTaXplJiAv
KiBpbnRyaW5zaWNSYXRpbyAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5z
aWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBMZW5ndGgmIC8qIGludHJpbnNpY1dp
ZHRoICovICwgTGVuZ3RoJiAvKiBpbnRyaW5zaWNIZWlnaHQgKi8sIEZsb2F0U2l6ZSYgLyogaW50
cmluc2ljUmF0aW8gKi8pIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VD
b250YWluZXJTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQq
LCBjb25zdCBGbG9hdFNpemUmLCBmbG9hdCkgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGFkZENsaWVudChSZW5kZXJFbGVtZW50Kikgb3ZlcnJpZGUgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKaW5kZXggN2E0ZmRmOGI1MzY5ODZmMmU4
ZDEzMmMzMzY4NDAyYjRkMWQ1MmRkMy4uZGRjNWI5MjZkNWJmMTEwMDllZDVhZjg5NzQ2NDA1YjUz
MWIyZDgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxv
Y2suaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUZyb21TdHlsZSgpIG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVy
U1ZHQmxvY2soKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9OworICAgIHZp
cnR1YWwgYm9vbCBpc1JlbmRlclNWR0Jsb2NrKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJl
Y3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKaW5k
ZXggNDI5NThkNGVjMmFiYmM5OWRhNTBkODI0OGEwODA2ZGNlZjMzMDNmNy4uODcyNTNhZGNjNzEw
NDY3YTU3ZDEwMDkwZjc1MDQ2YmQ4NmUxMjhmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCkBAIC00Miw3ICs0Miw2IEBAIHB1Ymxp
YzoKIHByb3RlY3RlZDoKICAgICBSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1NWR0NvbnRhaW5lcigpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHQ29udGFp
bmVyIjsgfQogCiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KQEAgLTczLDYgKzcyLDggQEAgcHJvdGVjdGVkOgog
ICAgIHZvaWQgdXBkYXRlQ2FjaGVkQm91bmRhcmllcygpOwogCiBwcml2YXRlOgorICAgIHZpcnR1
YWwgYm9vbCBpc1NWR0NvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KKwogICAgIEZsb2F0UmVjdCBtX29iamVjdEJvdW5kaW5nQm94OwogICAgIGJvb2wgbV9v
YmplY3RCb3VuZGluZ0JveFZhbGlkOwogICAgIEZsb2F0UmVjdCBtX3N0cm9rZUJvdW5kaW5nQm94
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxp
cHNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaApp
bmRleCBkNjJhNTYwNGVhYmUzNjk4Zjk5MTMzYTIxNTQwNTQzYmRmZmNmMjBkLi4zMDI3ZjEwYzBl
ZGU4ODdkZDBjZmVlZDJjZTAyODNlZTcwNTNjMjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaApAQCAtMzcsMTUgKzM3LDE1IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdFbGxpcHNlKCk7CiAKIHByaXZhdGU6Ci0gICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR0Vs
bGlwc2UiOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0VsbGlwc2UiOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpOwotICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sgPyBSZW5kZXJTVkdTaGFwZTo6aXNFbXB0eSgp
IDogbV9maWxsQm91bmRpbmdCb3guaXNFbXB0eSgpOyB9OworICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzRW1wdHko
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3VzZVBhdGhGYWxsYmFjayA/IFJlbmRlclNWR1No
YXBlOjppc0VtcHR5KCkgOiBtX2ZpbGxCb3VuZGluZ0JveC5pc0VtcHR5KCk7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNSZW5kZXJpbmdEaXNhYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9v
bCBzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAgICB2
aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRGaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IFdpbmRSdWxlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdyYXBo
aWNzQ29udGV4dCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFw
ZShHcmFwaGljc0NvbnRleHQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hh
cGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50RmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0UG9p
bnQmLCBjb25zdCBXaW5kUnVsZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYWxjdWxhdGVS
YWRpaUFuZENlbnRlcigpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAppbmRleCA0ZTY3Y2FlOTJkM2Q1
MmJiODRhYTI1NDA5YzcwYTc3Y2FhOTE3MjBkLi5jNzViYmZmMTRkYTQ4OTQyOGNiOTdmOGQ0MDdk
YWU0YzAwNmM0N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ZvcmVpZ25PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaApAQCAtMzcsMzUgKzM3LDM1IEBAIHB1YmxpYzoKIAog
ICAgIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50JiBmb3JlaWduT2JqZWN0RWxlbWVudCgpIGNvbnN0
OwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JS
ZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZs
b2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNv
bnN0IHsgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fdmlld3BvcnQuc2l6ZSgpKTsg
fQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1
cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV92aWV3cG9ydC5zaXplKCkpOyB9Ci0gICAgdmly
dHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCB7IHJl
dHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3ZpZXdwb3J0LnNpemUoKSk7IH0KKyAgICB2
aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fdmlld3BvcnQuc2l6ZSgpKTsgfQorICAgIHZp
cnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV92aWV3cG9ydC5zaXplKCkpOyB9CisgICAgdmly
dHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3ZpZXdwb3J0LnNpemUoKSk7
IH0KIAotICAgIHZpcnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhp
dFRlc3RBY3Rpb24pOworICAgIHZpcnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5Q
YXJlbnQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0
TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlz
U1ZHRm9yZWlnbk9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncyA9IEFw
cGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRy
eU1hcCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9y
bVVwZGF0ZSgpIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSBvdmVycmlkZSB7IG1fbmVlZHNUcmFuc2Zv
cm1VcGRhdGUgPSB0cnVlOyB9CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzU1ZHRm9y
ZWlnbk9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGdy
YXBoaWNzRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0IjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aCgpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2lj
YWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFs
dWVzJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0OwotICAgIHZpcnR1YWwgQWZmaW5lVHJh
bnNmb3JtIGxvY2FsVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsg
fQorICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNm
b3JtKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxU
cmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAK
ICAgICBib29sIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgOiAxOwogICAgIEZsb2F0UmVjdCBtX3Zp
ZXdwb3J0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5o
CmluZGV4IDg2MWQxMzIyYTcxMjkyNTBlYWQwYWY5MmYyN2E0YjIwMmMwYjQ0MDcuLjAxM2EwNGY1
OGIwNDZhMDQ2YmY0ZjUyYzU2MDdmOWJmYWRkNTJlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgKQEAgLTQyLDkgKzQyLDkgQEAgcHVibGljOgog
ICAgIFNWR0ltYWdlRWxlbWVudCYgaW1hZ2VFbGVtZW50KCkgY29uc3Q7CiAKICAgICBib29sIHVw
ZGF0ZUltYWdlVmlld3BvcnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNCb3VuZGFyaWVz
VXBkYXRlKCkgeyBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCkgb3ZlcnJpZGUgeyBtX25lZWRzQm91bmRh
cmllc1VwZGF0ZSA9IHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNCb3VuZGFyaWVzVXBk
YXRlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGU7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSB7IG1fbmVlZHNUcmFuc2Zvcm1V
cGRhdGUgPSB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRl
KCkgb3ZlcnJpZGUgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQogCiAgICAgUmVu
ZGVySW1hZ2VSZXNvdXJjZSYgaW1hZ2VSZXNvdXJjZSgpIHsgcmV0dXJuICptX2ltYWdlUmVzb3Vy
Y2U7IH0KICAgICBjb25zdCBSZW5kZXJJbWFnZVJlc291cmNlJiBpbWFnZVJlc291cmNlKCkgY29u
c3QgeyByZXR1cm4gKm1faW1hZ2VSZXNvdXJjZTsgfQpAQCAtNTUsMjkgKzU1LDI5IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZH
SW1hZ2UiOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0ltYWdlIjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NW
R0ltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0g
ICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0o
KSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CisgICAgdmlydHVhbCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBvYmpl
Y3RCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0KLSAg
ICB2aXJ0dWFsIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1f
b2JqZWN0Qm91bmRpbmdCb3g7IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdElu
TG9jYWxDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWludEJvdW5kaW5nQm94OyB9
CisgICAgdmlydHVhbCBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX29iamVjdEJvdW5kaW5nQm94OyB9CisgICAgdmlydHVhbCBGbG9hdFJlY3Qg
c3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX29iamVjdEJvdW5k
aW5nQm94OyB9CisgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRp
bmF0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlcGFpbnRCb3VuZGluZ0JveDsgfQog
ICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzRXhjbHVk
aW5nU1ZHU2hhZG93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdC
b3hFeGNsdWRpbmdTaGFkb3c7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0
cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwg
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXIgPSAwKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25z
dCBJbnRSZWN0KiA9IDApOworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZElt
YWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCB2b2lkIGxheW91dCgpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZUJ1ZmZlcmVkRm9yZWdyb3VuZCgpOwogCi0gICAg
dmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRU
ZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlv
bik7CisgICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0
VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2Nh
bFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0
dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KICAgICB2b2lkIGNhbGN1bGF0ZUltYWdlVmlld3BvcnQo
KTsKIAogICAgIGJvb2wgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUgOiAxOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAppbmRleCA0NGZkMTcyNjc1ZGFlMWRi
YTEyZjcwZjdlYWJlNTcxYjIzZGY5MzNkLi5lYTZlY2MyMzVlOThmNTg1MWEzNjUzYmFhMjFmNmVh
ZGY3NzhiZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Bh
dGguaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBi
b29sIGlzU1ZHUGF0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHUGF0
aCI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHUGF0aCI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVT
aGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVwZGF0
ZWRTdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1JlY3QuaAppbmRleCBmMDJkZmNmNzg3MzQ2ZWFkNjc0YjYyOGNjMDQxMTIz
YjJhYTZmMmY3Li40ZGExYjNiOTgyYTMwYzBhOGEwYjQ0NWRmM2NjMWJmYTA5MDM3NzZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaApAQCAtNDMsMTUg
KzQzLDE1IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBncmFwaGljc0VsZW1lbnQoKSBj
b25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IHsgcmV0dXJuICJSZW5kZXJTVkdSZWN0IjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZWN0IjsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKTsKLSAgICB2aXJ0dWFs
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlUGF0aEZhbGxiYWNrID8gUmVuZGVy
U1ZHU2hhcGU6OmlzRW1wdHkoKSA6IG1fZmlsbEJvdW5kaW5nQm94LmlzRW1wdHkoKTsgfTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV91c2VQYXRoRmFs
bGJhY2sgPyBSZW5kZXJTVkdTaGFwZTo6aXNFbXB0eSgpIDogbV9maWxsQm91bmRpbmdCb3guaXNF
bXB0eSgpOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyaW5nRGlzYWJsZWQoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25z
dDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25zdCBG
bG9hdFBvaW50Jik7Ci0gICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50RmlsbENvbnRhaW5z
KGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBXaW5kUnVsZSkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIGZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQ
b2ludCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudEZpbGxDb250
YWlucyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgV2luZFJ1bGUpIGNvbnN0IG92ZXJyaWRlOwog
CiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2lubmVyU3Ryb2tlUmVjdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5o
CmluZGV4IGUwMDgwZTBkNTI5NDBkOTE4YTA5OTY0OWY2NDBhM2U0MTlmOTJjNTcuLmNhMDcyY2Fh
ZmMwOGVhMjRhMTRhNmNjYmViOTgwYzdmZGQ4YTk2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaApAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhcHBseUNsaXBwaW5nVG9Db250ZXh0KFJlbmRl
ckVsZW1lbnQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0Nv
bnRleHQqKTsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0
IFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJj
ZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gQ2xpcHBlclJlc291cmNlVHlwZTsg
fQorICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIENsaXBwZXJSZXNvdXJjZVR5cGU7IH0KICAgICAKICAgICBib29s
IGhpdFRlc3RDbGlwQ29udGVudChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50Jik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuaAppbmRleCBlODVjNzk0NDAxZDA5ZTQ4NzBjYjEyYTE2NWJkN2M2YTFlNTc0
OTJlLi45NWJkMTAwMmRjMjUyZGZjM2NkOGNkOWJkNjRmMDYyNGJkMWI4NTgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJpbWl0aXZlQXR0cmli
dXRlQ2hhbmdlZChSZW5kZXJPYmplY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICB2
aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVy
biBzX3Jlc291cmNlVHlwZTsgfQorICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJl
c291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAg
ICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlwZSBzX3Jlc291cmNlVHlwZTsKIAogICAgIEZs
b2F0UmVjdCBkcmF3aW5nUmVnaW9uKFJlbmRlck9iamVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlclByaW1pdGl2ZS5oCmluZGV4IDJmOGRhM2E5NjUxMWNmNjdiNjAxZTM5MWMzNjBiYTdlYzE2
MmZhM2EuLmRmNDc1OThkYmIzY2M2ZmMwNjM2NzFlZDg4NzY4MjYxNGFjNTlmMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQ
cmltaXRpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlLmgKQEAgLTM5LDEwICszOSw5IEBAIHB1YmxpYzoKICAgICBS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAgICAgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50KCkgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBS
ZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUiOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmlt
aXRpdmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlRmls
dGVyUHJpbWl0aXZlIjsgfQogCiAgICAgLy8gVGhleSBkZXBlbmQgb24gdGhlIFJlbmRlck9iamVj
dCBhcmd1bWVudCBvZiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZS4KICAg
ICBzdGF0aWMgRmxvYXRSZWN0IGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0
ZXJFZmZlY3QmKTsKQEAgLTU1LDYgKzU0LDcgQEAgcHVibGljOgogICAgICAgICBzdGF0aWNfY2Fz
dDxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcio+KGZpbHRlciktPnByaW1pdGl2ZUF0dHJpYnV0ZUNo
YW5nZWQodGhpcywgYXR0cmlidXRlKTsKICAgICB9CiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9v
bCBpc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVh
ckdyYWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQuaAppbmRleCBjMWY1MmI3ZGNkZTUxYjdkNGNlZjNmZGY5ZDhjZGVk
NjliNDExM2YxLi44YWFkM2ZmNDIxY2IyOTIwMDk2Njk0MWM1MTFmZDJiMTQ1NWMwMTk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGlu
ZWFyR3JhZGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTGluZWFyR3JhZGllbnQuaApAQCAtMzQsMTMgKzM0LDEzIEBAIHB1YmxpYzoKIAog
ICAgIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCYgbGluZWFyR3JhZGllbnRFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50PihSZW5kZXJTVkdS
ZXNvdXJjZUdyYWRpZW50OjpncmFkaWVudEVsZW1lbnQoKSk7IH0KIAotICAgIHZpcnR1YWwgUmVu
ZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHNfcmVzb3Vy
Y2VUeXBlOyB9CisgICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KICAgICBzdGF0aWMg
UmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHNfcmVzb3VyY2VUeXBlOwogCi0gICAgdmlydHVhbCBTVkdV
bml0VHlwZXM6OlNWR1VuaXRUeXBlIGdyYWRpZW50VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX2F0
dHJpYnV0ZXMuZ3JhZGllbnRVbml0cygpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUdy
YWRpZW50VHJhbnNmb3JtKEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKSB7IHRyYW5zZm9ybSA9
IG1fYXR0cmlidXRlcy5ncmFkaWVudFRyYW5zZm9ybSgpOyB9CisgICAgdmlydHVhbCBTVkdVbml0
VHlwZXM6OlNWR1VuaXRUeXBlIGdyYWRpZW50VW5pdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2F0dHJpYnV0ZXMuZ3JhZGllbnRVbml0cygpOyB9CisgICAgdmlydHVhbCB2b2lkIGNhbGN1
bGF0ZUdyYWRpZW50VHJhbnNmb3JtKEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKSBvdmVycmlk
ZSB7IHRyYW5zZm9ybSA9IG1fYXR0cmlidXRlcy5ncmFkaWVudFRyYW5zZm9ybSgpOyB9CiAgICAg
dmlydHVhbCBib29sIGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgYnVpbGRHcmFkaWVudChHcmFkaWVudERhdGEqKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgYnVpbGRHcmFkaWVudChHcmFkaWVudERhdGEqKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChjb25zdCBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMm
KSBjb25zdDsKICAgICBGbG9hdFBvaW50IGVuZFBvaW50KGNvbnN0IExpbmVhckdyYWRpZW50QXR0
cmlidXRlcyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCmluZGV4IDYzNmEzNGVjYjkyZWQ4NzliMjZiMTli
OTA5MzI5Y2E5YmJiMmVmMjIuLjFhOGQwODM4Nzg4YmExZmNkODM2YzVkMDAzYzI4ZDAyNGMyYzY5
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFya2VyLmgKQEAgLTQ1LDExICs0NSwxMSBAQCBwdWJsaWM6CiAgICAgLy8gQ2Fs
Y3VsYXRlcyBtYXJrZXIgYm91bmRhcmllcywgbWFwcGVkIHRvIHRoZSB0YXJnZXQgZWxlbWVudCdz
IGNvb3JkaW5hdGUgc3BhY2UKICAgICBGbG9hdFJlY3QgbWFya2VyQm91bmRhcmllcyhjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIG1hcmtlclRyYW5zZm9ybWF0aW9uKSBjb25zdDsKIAotICAgIHZpcnR1
YWwgdm9pZCBhcHBseVZpZXdwb3J0Q2xpcChQYWludEluZm8mKTsKLSAgICB2aXJ0dWFsIHZvaWQg
bGF5b3V0KCk7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGNWaWV3cG9ydCgpOworICAgIHZpcnR1YWwg
dm9pZCBhcHBseVZpZXdwb3J0Q2xpcChQYWludEluZm8mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNhbGNWaWV3cG9ydCgp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9Q
YXJlbnRUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFmZmluZVRy
YW5zZm9ybSBtYXJrZXJUcmFuc2Zvcm1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvcmlnaW4sIGZs
b2F0IGFuZ2xlLCBmbG9hdCBzdHJva2VXaWR0aCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wg
YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGlj
c0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBA
IC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBhbmdsZSgpIGNvbnN0OwogICAgIFNW
R01hcmtlclVuaXRzVHlwZSBtYXJrZXJVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1hcmtlckVsZW1l
bnQoKS5tYXJrZXJVbml0cygpOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlw
ZSByZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQorICAgIHZp
cnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNl
VHlwZSBzX3Jlc291cmNlVHlwZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAppbmRleCBhNTI3MjZl
YjkyMTJjZTAwZGU0ZTVlZjc2MmI3ZjJmN2Y5YjNmOWRmLi44OWIzMDVmNmNiM2U1NDgxNzBmNDNi
YmNhOTBjOTgxZjU1ZWIyZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCkBAIC01MCw3ICs1MCw3IEBAIHB1Ymxp
YzoKICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIG1hc2tVbml0cygpIGNvbnN0IHsgcmV0
dXJuIG1hc2tFbGVtZW50KCkubWFza1VuaXRzKCk7IH0KICAgICBTVkdVbml0VHlwZXM6OlNWR1Vu
aXRUeXBlIG1hc2tDb250ZW50VW5pdHMoKSBjb25zdCB7IHJldHVybiBtYXNrRWxlbWVudCgpLm1h
c2tDb250ZW50VW5pdHMoKTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUg
cmVzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KKyAgICB2aXJ0
dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQogICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5
cGUgc19yZXNvdXJjZVR5cGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAppbmRleCBmNjZkNTU1
Yjc1YjdhYzdkNjViNWM0MGMzZWQ2NGI2OTUxNjhlZTRmLi5mMWZmYzQ0MzViOWEyZDZiOTRkZTlj
N2I3YThlMDIzZDk0OTYxOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50Jiwg
R3JhcGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSwgY29uc3QgUGF0
aCosIGNvbnN0IFJlbmRlclNWR1NoYXBlKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBGbG9hdFJl
Y3QgcmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZSB7IHJl
dHVybiBGbG9hdFJlY3QoKTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUg
cmVzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KKyAgICB2aXJ0
dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQogICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5
cGUgc19yZXNvdXJjZVR5cGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5o
CmluZGV4IDk2MjAzMjg5N2YzNDc3NDkyZWNlMTA0YTNhNmNkMjBhNTM0OTM1MDQuLmY1YTY1NDM4
Y2I0ZGM3ZmI1ZjA3ZWUwYjk1OTM1YTQ3ODkxMmMwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFk
aWVudC5oCkBAIC0zNiwxMiArMzYsMTIgQEAgcHVibGljOgogCiAgICAgU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50JiByYWRpYWxHcmFkaWVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2Fz
dDxTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6Omdy
YWRpZW50RWxlbWVudCgpKTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUg
cmVzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KKyAgICB2aXJ0
dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQogICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5
cGUgc19yZXNvdXJjZVR5cGU7CiAKLSAgICB2aXJ0dWFsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5
cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5ncmFkaWVudFVu
aXRzKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlR3JhZGllbnRUcmFuc2Zvcm0oQWZm
aW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pIHsgdHJhbnNmb3JtID0gbV9hdHRyaWJ1dGVzLmdyYWRp
ZW50VHJhbnNmb3JtKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYnVpbGRHcmFkaWVudChHcmFkaWVu
dERhdGEqKSBjb25zdDsKKyAgICB2aXJ0dWFsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3Jh
ZGllbnRVbml0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlcy5ncmFkaWVu
dFVuaXRzKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlR3JhZGllbnRUcmFuc2Zvcm0o
QWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pIG92ZXJyaWRlIHsgdHJhbnNmb3JtID0gbV9hdHRy
aWJ1dGVzLmdyYWRpZW50VHJhbnNmb3JtKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYnVpbGRHcmFk
aWVudChHcmFkaWVudERhdGEqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZsb2F0UG9pbnQgY2Vu
dGVyUG9pbnQoY29uc3QgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzJikgY29uc3Q7CiAgICAgRmxv
YXRQb2ludCBmb2NhbFBvaW50KGNvbnN0IFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcyYpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAppbmRleCBm
ZjU0OGVhYzk5MDkzZjNiMzJjYzg1MWFlOTgxOTg5ZTdmZmQ0M2Q1Li5hY2U5MjNlZTI1OGYyMTFk
ZjYxYjkyNjdlYTQxODc2MjgyNWY2ZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuaApAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9vYmplY3RCb3VuZGluZ0JveDsgfQogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5k
aW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zdHJva2VCb3VuZGluZ0JveDsgfQog
ICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3g7IH0KLSAgICB2aXJ0dWFs
IEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlc0V4Y2x1ZGluZ1NWR1NoYWRv
dygpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWludEJvdW5kaW5nQm94RXhjbHVkaW5nU2hhZG93OyB9
CisgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzRXhjbHVkaW5nU1ZH
U2hhZG93KCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3hFeGNsdWRpbmdTaGFk
b3c7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250
YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlv
bikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVFNwYW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VFNwYW4uaAppbmRleCBlOTcyY2JlYzVkY2ZkZDA0YjVhZmZlODljYTljNWNmYzk1MzE2NjViLi4z
ZmQ5Nzk3MTVkODY1ZTE3YmNhNTRiZjRjNzYyMTkzODA0MzlkY2IyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0ID0gZGVs
ZXRlOwotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJu
ICJSZW5kZXJTVkdUU3BhbiI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHVFNwYW4iOyB9CiB9OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCmluZGV4IDA3YjE4
MTNhNjNmMWZhY2JkNjE4N2YxZDQyOTEwODhiODMxYzVhNTEuLmQ5NjBlN2UwYjUwODAwNzI2NWE4
NWEwYWM3MGQzZjc2ODM3YmVjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5oCkBAIC0zOSwxMiArMzksMTIgQEAgcHVibGljOgogCiAgICAgU1ZHVGV4
dEVsZW1lbnQmIHRleHRFbGVtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGls
ZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29u
c3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TmVlZHNQb3Np
dGlvbmluZ1ZhbHVlc1VwZGF0ZSgpIHsgbV9uZWVkc1Bvc2l0aW9uaW5nVmFsdWVzVXBkYXRlID0g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9u
ZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNU
cmFuc2Zvcm1VcGRhdGUoKSBvdmVycmlkZSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVl
OyB9CiAgICAgdm9pZCBzZXROZWVkc1RleHRNZXRyaWNzVXBkYXRlKCkgeyBtX25lZWRzVGV4dE1l
dHJpY3NVcGRhdGUgPSB0cnVlOyB9Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJ
bkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50
UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIFJl
bmRlclNWR1RleHQqIGxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3RvcihSZW5kZXJPYmplY3QmKTsK
ICAgICBzdGF0aWMgY29uc3QgUmVuZGVyU1ZHVGV4dCogbG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2Vz
dG9yKGNvbnN0IFJlbmRlck9iamVjdCYpOwpAQCAtNjQsMTggKzY0LDE4IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgdm9pZCBncmFwaGljc0VsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAg
IHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJT
VkdUZXh0IjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NWR1RleHQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlclNWR1RleHQiOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZHVGV4
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBw
YWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBw
YWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQm
LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRU
ZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlv
bik7Ci0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBM
YXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopOworICAgIHZpcnR1YWwgYm9vbCBub2Rl
QXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBy
ZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
bGF5b3V0KCk7CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9v
bCogd2FzRml4ZWQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxz
ZSkgY29uc3Qgb3ZlcnJpZGU7CkBAIC04MywxNiArODMsMTYgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFn
cyA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5l
cihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJH
ZW9tZXRyeU1hcCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChS
ZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CisgICAg
dmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCog
YmVmb3JlQ2hpbGQgPSBudWxscHRyKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2Fs
VHJhbnNmb3JtOyB9Ci0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0o
KSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CisgICAgdmlydHVhbCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0g
bG9jYWxUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3Jt
OyB9CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8Um9vdElubGluZUJveD4gY3JlYXRlUm9v
dElubGluZUJveCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJCbG9jayogZmlyc3RM
aW5lQmxvY2soKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRmlyc3RMZXR0ZXIoKTsK
KyAgICB2aXJ0dWFsIFJlbmRlckJsb2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGaXJzdExldHRlcigpIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBzaG91bGRIYW5kbGVTdWJ0cmVlTXV0YXRpb25zKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRh
aW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyLmgKaW5kZXggNjdkMGE1NjdiZDI0ZTliOWMxOWEzYzA4YzNhMzY3OGJmMTg4
MDIxNS4uOWVkYWJlZWU3MTMyNDc2OTRjNmZmODg3N2M5N2YwZDQxMGE0ZDc1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29u
dGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFu
c2Zvcm1hYmxlQ29udGFpbmVyLmgKQEAgLTMyLDE1ICszMiwxNSBAQCBwdWJsaWM6CiAgICAgUmVu
ZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcihTVkdHcmFwaGljc0VsZW1lbnQmLCBQYXNzUmVm
PFJlbmRlclN0eWxlPik7CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50JiBncmFwaGljc0VsZW1lbnQo
KSB7IHJldHVybiBkb3duY2FzdDxTVkdHcmFwaGljc0VsZW1lbnQ+KFJlbmRlclNWR0NvbnRhaW5l
cjo6ZWxlbWVudCgpKTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzU1ZHVHJhbnNmb3JtYWJsZUNv
bnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9j
YWxUcmFuc2Zvcm07IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUo
KSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGRp
ZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpIHsgcmV0dXJuIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBk
YXRlOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1V
cGRhdGUoKSBvdmVycmlkZSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CisgICAg
dmlydHVhbCBib29sIGRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpIG92ZXJyaWRlIHsgcmV0dXJu
IG1fZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVt
ZW50KCkgY29uc3QgPSBkZWxldGU7Ci0gICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUxvY2FsVHJh
bnNmb3JtKCk7Ci0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CisgICAgdmlydHVhbCBib29sIGNhbGN1
bGF0ZUxvY2FsVHJhbnNmb3JtKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zv
cm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvY2FsVHJhbnNm
b3JtOyB9CiAKICAgICBib29sIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgOiAxOwogICAgIGJvb2wg
bV9kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGUgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCmluZGV4IGNj
NTI0ODYxMmY4MTJlNmI5ZTY5NWJkMzljMWExZjZjY2MzOTFlN2YuLmY2MjRmNWY0N2RjZGJhOGM4
OWEyMTg5YzhiZjBjY2VlYmNjYmNkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKQEAgLTM4LDI3ICsz
OCwyNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IHZpZXdwb3J0KCkgY29uc3QgeyByZXR1cm4g
bV92aWV3cG9ydDsgfQogCiAgICAgYm9vbCBpc0xheW91dFNpemVDaGFuZ2VkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0xheW91dFNpemVDaGFuZ2VkOyB9Ci0gICAgdmlydHVhbCBib29sIGRpZFRyYW5z
Zm9ybVRvUm9vdFVwZGF0ZSgpIHsgcmV0dXJuIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlOyB9
CisgICAgdmlydHVhbCBib29sIGRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpIG92ZXJyaWRlIHsg
cmV0dXJuIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGV0ZXJtaW5lSWZMYXlvdXRTaXplQ2hhbmdlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVk
c1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lSWZMYXlvdXRTaXplQ2hhbmdlZCgpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIG92ZXJyaWRlIHsgbV9u
ZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBib29sIGlzU1ZH
Vmlld3BvcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR1ZpZXdwb3J0
Q29udGFpbmVyIjsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NWR1ZpZXdwb3J0Q29udGFpbmVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lciI7IH0KIAogICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3cG9ydFRyYW5zZm9ybSgpIGNv
bnN0OwotICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJh
bnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtOyB9CisgICAg
dmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBjYWxjVmlld3BvcnQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRl
TG9jYWxUcmFuc2Zvcm0oKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY1ZpZXdwb3J0KCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKCkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlWaWV3cG9ydENsaXAoUGFpbnRJbmZvJik7Ci0gICAg
dmlydHVhbCBib29sIHBvaW50SXNJbnNpZGVWaWV3cG9ydENsaXAoY29uc3QgRmxvYXRQb2ludCYg
cG9pbnRJblBhcmVudCk7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5Vmlld3BvcnRDbGlwKFBhaW50
SW5mbyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBwb2ludElzSW5zaWRlVmlld3BvcnRD
bGlwKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQpIG92ZXJyaWRlOwogCiAgICAgRmxv
YXRSZWN0IG1fdmlld3BvcnQ7CiAgICAgbXV0YWJsZSBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbFRv
UGFyZW50VHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lu
bGluZVRleHRCb3guaAppbmRleCA3YjdkODU3ZjEyZjljODk5MDc4MGY3OTE1ZDYzYWI2NzlmNzI5
YmJiLi44NTliZmUyODU2NTYzNTAzNWZkNTZhMDUwNGI4NDM5YWJlNmI0Y2MzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaApAQCAtMzcsMjgg
KzM3LDI4IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlclNWR0lubGluZVRleHQmIHJlbmRlcmVyKCkg
Y29uc3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lVGV4dD4oSW5saW5lVGV4dEJv
eDo6cmVuZGVyZXIoKSk7IH0KIAotICAgIHZpcnR1YWwgZmxvYXQgdmlydHVhbExvZ2ljYWxIZWln
aHQoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxIZWlnaHQ7IH0KKyAgICB2aXJ0dWFsIGZsb2F0
IHZpcnR1YWxMb2dpY2FsSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2dpY2Fs
SGVpZ2h0OyB9CiAgICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0KGZsb2F0IGhlaWdodCkgeyBtX2xv
Z2ljYWxIZWlnaHQgPSBoZWlnaHQ7IH0KIAotICAgIHZpcnR1YWwgaW50IHNlbGVjdGlvblRvcCgp
IHsgcmV0dXJuIHRvcCgpOyB9Ci0gICAgdmlydHVhbCBpbnQgc2VsZWN0aW9uSGVpZ2h0KCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihjZWlsZihtX2xvZ2ljYWxIZWlnaHQpKTsgfQotICAgIHZp
cnR1YWwgaW50IG9mZnNldEZvclBvc2l0aW9uKGZsb2F0IHgsIGJvb2wgaW5jbHVkZVBhcnRpYWxH
bHlwaHMgPSB0cnVlKSBjb25zdDsKLSAgICB2aXJ0dWFsIGZsb2F0IHBvc2l0aW9uRm9yT2Zmc2V0
KGludCBvZmZzZXQpIGNvbnN0OworICAgIGludCBzZWxlY3Rpb25Ub3AoKSB7IHJldHVybiB0b3Ao
KTsgfQorICAgIGludCBzZWxlY3Rpb25IZWlnaHQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KGNlaWxmKG1fbG9naWNhbEhlaWdodCkpOyB9CisgICAgdmlydHVhbCBpbnQgb2Zmc2V0Rm9yUG9z
aXRpb24oZmxvYXQgeCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocyA9IHRydWUpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZpcnR1YWwgZmxvYXQgcG9zaXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBhaW50U2VsZWN0aW9uQmFja2dyb3VuZChQYWlu
dEluZm8mKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0
UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSk7CisgICAg
dmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0
VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgTGF5b3V0UmVjdCBsb2NhbFNlbGVjdGlvblJlY3QoaW50IHN0YXJ0UG9zaXRpb24sIGludCBl
bmRQb3NpdGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIG1hcFN0YXJ0RW5kUG9zaXRp
b25zSW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMoY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgaW50JiBz
dGFydFBvc2l0aW9uLCBpbnQmIGVuZFBvc2l0aW9uKSBjb25zdDsKIAotICAgIHZpcnR1YWwgRmxv
YXRSZWN0IGNhbGN1bGF0ZUJvdW5kYXJpZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZsb2F0UmVj
dCBjYWxjdWxhdGVCb3VuZGFyaWVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFy
VGV4dEZyYWdtZW50cygpIHsgbV90ZXh0RnJhZ21lbnRzLmNsZWFyKCk7IH0KICAgICBWZWN0b3I8
U1ZHVGV4dEZyYWdtZW50PiYgdGV4dEZyYWdtZW50cygpIHsgcmV0dXJuIG1fdGV4dEZyYWdtZW50
czsgfQogICAgIGNvbnN0IFZlY3RvcjxTVkdUZXh0RnJhZ21lbnQ+JiB0ZXh0RnJhZ21lbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0RnJhZ21lbnRzOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGly
dHlPd25MaW5lQm94ZXMoKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlydHlM
aW5lQm94ZXMoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlydHlPd25MaW5l
Qm94ZXMoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlydHlMaW5lQm94ZXMoKSBvdmVy
cmlkZTsKIAogICAgIGJvb2wgc3RhcnRzTmV3VGV4dENodW5rKCkgY29uc3QgeyByZXR1cm4gbV9z
dGFydHNOZXdUZXh0Q2h1bms7IH0KICAgICB2b2lkIHNldFN0YXJ0c05ld1RleHRDaHVuayhib29s
IG5ld1RleHRDaHVuaykgeyBtX3N0YXJ0c05ld1RleHRDaHVuayA9IG5ld1RleHRDaHVuazsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaAppbmRl
eCBiMzdlMDRhMjFkY2IzM2FhODUxNWMxOTU1YTdiYjUxYjdjZmNhMmE2Li5lZWEzMGY1MDc2MzY5
NjJhODNiZDFiM2I3NWIzNGUwNWNmZWRhOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaApAQCAtMzgsMTcgKzM4LDE3IEBAIHB1YmxpYzoK
IAogICAgIFJlbmRlclNWR1RleHQmIHJlbmRlclNWR1RleHQoKTsKIAotICAgIHZpcnR1YWwgZmxv
YXQgdmlydHVhbExvZ2ljYWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBt
X2xvZ2ljYWxIZWlnaHQ7IH0KKyAgICB2aXJ0dWFsIGZsb2F0IHZpcnR1YWxMb2dpY2FsSGVpZ2h0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2dpY2FsSGVpZ2h0OyB9CiAgICAgdm9pZCBz
ZXRMb2dpY2FsSGVpZ2h0KGZsb2F0IGhlaWdodCkgeyBtX2xvZ2ljYWxIZWlnaHQgPSBoZWlnaHQ7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2lu
dCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZSBm
aW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGNvbXB1dGVQZXJDaGFyYWN0ZXJMYXlvdXRJbmZvcm1hdGlvbigpOwogCiAg
ICAgSW5saW5lQm94KiBjbG9zZXN0TGVhZkNoaWxkRm9yUG9zaXRpb24oY29uc3QgTGF5b3V0UG9p
bnQmKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSb290SW5saW5lQm94KCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c1NWR1Jvb3RJbmxpbmVCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAg
dm9pZCByZW9yZGVyVmFsdWVMaXN0cyhWZWN0b3I8U1ZHVGV4dExheW91dEF0dHJpYnV0ZXMqPiYp
OwogICAgIHZvaWQgbGF5b3V0Q2hhcmFjdGVyc0luVGV4dEJveGVzKElubGluZUZsb3dCb3gqLCBT
VkdUZXh0TGF5b3V0RW5naW5lJik7CiAgICAgdm9pZCBsYXlvdXRDaGlsZEJveGVzKElubGluZUZs
b3dCb3gqLCBGbG9hdFJlY3QqID0gMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240304</attachid>
            <date>2014-10-22 16:19:21 -0700</date>
            <delta_ts>2014-10-22 16:57:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137984-20141022161928.patch</filename>
            <type>text/plain</type>
            <size>120483</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGM3MDc0YTQ2ZGI4YTQ3
YmJjN2I3NTVlYmMyMTJiOTI0ODMxY2MyNC4uMjA0ODUyZWY1M2Q3Y2IyN2U0MjU4NzJkNTI0OGQx
ZmZmYWYwYTQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEyNCBAQAogMjAxNC0xMC0yMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIENsZWFuIHVwIHZpcnR1YWwg
ZnVuY3Rpb25zIGluIHJlbmRlcmluZy8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENsZWFuIHVwIHZpcnR1YWwgZnVuY3Rpb25zIGluIHJlbmRlcmluZy8g
Ynk6CisgICAgICAgIC0gTWFraW5nIHZpcnR1YWwgZnVuY3Rpb25zIGZpbmFsIHdoZW4gcG9zc2li
bGUKKyAgICAgICAgLSBNYWtpbmcgY2xhc3NlcyBmaW5hbCB3aGVuIHBvc3NpYmxlCisgICAgICAg
IC0gVXNpbmcgJ292ZXJyaWRlJyB3aGVuIGFwcHJvcHJpYXRlCisgICAgICAgIC0gRXhwbGljaXRs
eSBtYXJraW5nIGZ1bmN0aW9ucyAvIGRlc3RydWN0b3JzIGFzIHZpcnR1YWwgd2hlbiB0aGV5IGFy
ZQorICAgICAgICAgIGluaGVyZW50bHkgdmlydHVhbAorICAgICAgICAtIERyb3BwaW5nIHZpcnR1
YWwgZGVzdHJ1Y3RvcnMgd2hlbiB0aGUgY2xhc3MgZG9lcyBub3QgaGF2ZSBzdWJjbGFzc2VzCisg
ICAgICAgICAgYW5kIG1hcmsgdGhlIGNsYXNzIGFzIGZpbmFsLCB0byBnZXQgcmlkIG9mIHVubmVj
ZXNzYXJ5IHZ0YWJsZXMKKyAgICAgICAgLSBNYWtpbmcgaXNYWFgoKSB2aXJ0dWFsIGZ1bmN0aW9u
cyBwcml2YXRlIG9uIFhYWCBjbGFzc2VzIHRvIGF2b2lkCisgICAgICAgICAgdW5uZWNlc3Nhcnkg
dHlwZSBjaGVja3MKKyAgICAgICAgLSBEZS12aXJ0dWFsaXppbmcgc29tZSBmdW5jdGlvbnMgdGhh
dCBkbyBub3QgbmVlZCB0byBiZSB2aXJ0dWFsCisgICAgICAgIC0gRHJvcHBpbmcgZmluYWwgZm9y
IHZpcnR1YWwgZnVuY3Rpb25zIGluIGNsYXNzZXMgYWxyZWFkeSBtYXJrZWQgYXMKKyAgICAgICAg
ICBmaW5hbAorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisg
ICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0NsaXBQYXRo
T3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6dHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6aXNTYW1lVHlwZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL0VsbGlwc2lzQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0ZpeGVk
VGFibGVMYXlvdXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQ29tYmluZVRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlk
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJNYXJxdWVlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlh
Q29udHJvbEVsZW1lbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
Rmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyUXVvdGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnJlbmRlck5hbWUpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclJ1YnlCYXNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp+
UmVuZGVyU2Nyb2xsYmFyVGhlbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OnNjcm9sbGJhclRoaWNrbmVzcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uc1BsYWNlbWVudCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6c3VwcG9ydHNDb250cm9s
VGludHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OnNob3VsZENlbnRlck9uVGh1bWIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YXV0b3Njcm9sbFRpbWVyRGVs
YXkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJl
Z2lzdGVyU2Nyb2xsYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9s
bGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dEZyYWdtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lU2FmYXJpLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6
c3VwcG9ydHNDb250cm9sVGludHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnNob3VsZFNob3dQbGFjZWhvbGRlcldoZW5Gb2N1c2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlkZW8uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9UcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
Y3JpcHRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5o
OgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zaGFwZXMvUG9seWdvblNoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0
ZXJTaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UGVuZGluZ0ltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6IERlbGV0ZWQuCisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdFbGxpcHNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFya2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdy
YWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaDoK
KworMjAxNC0xMC0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAg
IEF2b2lkIGNvbmZ1c2lvbiBiZXR3ZWVuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFibGUoKSAv
IGlzQWNjZXNzaWJpbGl0eVRhYmxlKCkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzg5OQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCAyNjJjNjAwNmY1M2Y4MWZmYzdmYWY4MjFj
OTZlNmQxMTg4M2NjZGY5Li5mOWNlZDZkZjE0Mjg1YTBmOTUyMTYxNDZiNzU0MGU2MjcyOGU4YmVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVu
dC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBib29sIFJlbmRlclNsaWRlclRodW1iOjppc1NsaWRl
clRodW1iKCkgY29uc3QKIAogLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gY2FzY2FkZSBhcHBlYXJh
bmNlIGFuZCBhZGp1c3QgaGVpZ2h0cywgYW5kIGdldCByaWQgb2YgdGhpcyBjbGFzcy4KIC8vIGh0
dHA6Ly93ZWJraXQub3JnL2IvNjI1MzUKLWNsYXNzIFJlbmRlclNsaWRlckNvbnRhaW5lciA6IHB1
YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CitjbGFzcyBSZW5kZXJTbGlkZXJDb250YWluZXIgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgogICAgIFJlbmRlclNsaWRl
ckNvbnRhaW5lcihTbGlkZXJDb250YWluZXJFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKICAgICAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChlbGVtZW50LCBXVEY6
Om1vdmUoc3R5bGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9U
YWJsZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5o
CmluZGV4IDRjMGMzNDBiMjVlMWM0NWZmMTg5YzJkMTNiZjdmZTNjYTgxOTRjMDIuLjJmMzE5ZmVh
OGRhNjcyYzE0MThmODg0MWNiMjI4NWYyZTJjMGE5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgUmVuZGVyVGFibGU7CiBjbGFzcyBSZW5kZXJUYWJsZUNlbGw7CiAKLWNsYXNz
IEF1dG9UYWJsZUxheW91dCA6IHB1YmxpYyBUYWJsZUxheW91dCB7CitjbGFzcyBBdXRvVGFibGVM
YXlvdXQgZmluYWwgOiBwdWJsaWMgVGFibGVMYXlvdXQgewogcHVibGljOgogICAgIGV4cGxpY2l0
IEF1dG9UYWJsZUxheW91dChSZW5kZXJUYWJsZSopOwogICAgIHZpcnR1YWwgfkF1dG9UYWJsZUxh
eW91dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3Bl
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaApp
bmRleCA3OWI2NjVjY2ZkMTZjMDIyMDY3YjU5MDZiZjk2NzJmMTA0NzJkMWQ2Li5lNzIzMWU2Y2E0
MDMyOGVmZTRiMDYyZTI5YTgxMTM3MmNkY2Q2NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaApAQCAtNTIsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2xpcFBhdGhPcGVyYXRpb24mKSBjb25zdCA9
IDA7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJiBvKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CiAKLSAgICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NhbWVU
eXBlKGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiBvLnR5cGUoKSA9
PSBtX3R5cGU7IH0KKyAgICBPcGVyYXRpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KKyAgICBib29sIGlzU2FtZVR5cGUoY29uc3QgQ2xpcFBhdGhPcGVyYXRpb24mIG8pIGNv
bnN0IHsgcmV0dXJuIG8udHlwZSgpID09IG1fdHlwZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZXhw
bGljaXQgQ2xpcFBhdGhPcGVyYXRpb24oT3BlcmF0aW9uVHlwZSB0eXBlKQpAQCAtNjQsNyArNjQs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3BlcmF0aW9uVHlwZSBtX3R5cGU7CiB9OwogCi1jbGFzcyBS
ZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbiA6IHB1YmxpYyBDbGlwUGF0aE9wZXJhdGlvbiB7Citj
bGFzcyBSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDbGlwUGF0aE9w
ZXJhdGlvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVmZXJlbmNlQ2xpcFBh
dGhPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFn
bWVudCkKICAgICB7CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZnJh
Z21lbnQ7CiB9OwogCi1jbGFzcyBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uIDogcHVibGljIENsaXBQ
YXRoT3BlcmF0aW9uIHsKK2NsYXNzIFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24gZmluYWwgOiBwdWJs
aWMgQ2xpcFBhdGhPcGVyYXRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNo
YXBlQ2xpcFBhdGhPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmPEJhc2ljU2hhcGU+IHNoYXBlKQog
ICAgIHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIENTU0JveFR5cGUgbV9yZWZl
cmVuY2VCb3g7CiB9OwogCi1jbGFzcyBCb3hDbGlwUGF0aE9wZXJhdGlvbiA6IHB1YmxpYyBDbGlw
UGF0aE9wZXJhdGlvbiB7CitjbGFzcyBCb3hDbGlwUGF0aE9wZXJhdGlvbiBmaW5hbCA6IHB1Ymxp
YyBDbGlwUGF0aE9wZXJhdGlvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Qm94
Q2xpcFBhdGhPcGVyYXRpb24+IGNyZWF0ZShDU1NCb3hUeXBlIHJlZmVyZW5jZUJveCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCmluZGV4IGYzY2Y4ZGI2ZjFhZmRm
MGY4MGRhMWFmMTA0MmMxMDU1M2JkN2VkYjUuLjk1Nzc1ZDBlZDQ1ZDIxMjdhYmUxMDc1YmFhZWM1
M2YyYjQ3MzM0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNp
c0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCkBAIC0z
MSw3ICszMSw3IEBAIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBFbGxpcHNpc0JveCBmaW5h
bCA6IHB1YmxpYyBJbmxpbmVFbGVtZW50Qm94IHsKIHB1YmxpYzoKICAgICBFbGxpcHNpc0JveChS
ZW5kZXJCbG9ja0Zsb3cmLCBjb25zdCBBdG9taWNTdHJpbmcmIGVsbGlwc2lzU3RyLCBJbmxpbmVG
bG93Qm94KiBwYXJlbnQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHksIGJvb2wgZmlyc3RM
aW5lLCBib29sIGlzVmVydGljYWwsIElubGluZUJveCogbWFya3VwQm94KTsKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxp
bmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRV
bml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRp
b24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0
ZSBzKSB7IG1fc2VsZWN0aW9uU3RhdGUgPSBzOyB9CiAgICAgSW50UmVjdCBzZWxlY3Rpb25SZWN0
KCk7CkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHBhaW50
TWFya3VwQm94KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5
b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIGNvbnN0IFJlbmRlclN0eWxl
Jik7Ci0gICAgdmlydHVhbCBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0K
LSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUo
KSB7IHJldHVybiBtX3NlbGVjdGlvblN0YXRlOyB9CisgICAgaW50IGhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1faGVpZ2h0OyB9CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0
YXRlIHNlbGVjdGlvblN0YXRlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGF0ZTsg
fQogICAgIHZvaWQgcGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0
UG9pbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnQmKTsKICAgICBJbmxpbmVCb3gq
IG1hcmt1cEJveCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRml4ZWRUYWJsZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFi
bGVMYXlvdXQuaAppbmRleCA5ZmE1NmQxNzIyMWE1NWQxNDk2MmYzZWQ1ZjU2NGYyNWE1NjVhNjhl
Li5kN2JjYmQ2NTUzMTA5MzFlYTg4YzA2ZjExZGJkMTIzY2E1NmNiMjMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmgKQEAgLTMwLDEzICszMCwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclRhYmxlOwogCi1jbGFzcyBGaXhlZFRh
YmxlTGF5b3V0IDogcHVibGljIFRhYmxlTGF5b3V0IHsKK2NsYXNzIEZpeGVkVGFibGVMYXlvdXQg
ZmluYWwgOiBwdWJsaWMgVGFibGVMYXlvdXQgewogcHVibGljOgogICAgIGV4cGxpY2l0IEZpeGVk
VGFibGVMYXlvdXQoUmVuZGVyVGFibGUqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50
cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5XaWR0aCwgTGF5b3V0VW5pdCYgbWF4
V2lkdGgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhcHBseVByZWZlcnJlZExvZ2ljYWxX
aWR0aFF1aXJrcyhMYXlvdXRVbml0JiBtaW5XaWR0aCwgTGF5b3V0VW5pdCYgbWF4V2lkdGgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgaW50IGNhbGNXaWR0aEFycmF5
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRWxlbWVudEJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guaAppbmRleCA5
NjFhMDc1NDUzZDVmOTQ3YWVmNDY2NDBkOGFjZWM3NGQ2MjNmZTg0Li41NjYzOTViMmI4ZjNkNTMx
ZGY3YTA2MWYyZmJiNjFkYTUxNjIxYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lRWxlbWVudEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVFbGVtZW50Qm94LmgKQEAgLTQ0LDkgKzQ0LDkgQEAgcHVibGljOgogCiAgICAgUmVuZGVy
Qm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVy
Qm94TW9kZWxPYmplY3Q+KElubGluZUJveDo6cmVuZGVyZXIoKSk7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVMaW5lKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGV4dHJhY3RMaW5l
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGF0dGFjaExpbmUoKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlTGluZSgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwg
dm9pZCBleHRyYWN0TGluZSgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2hMaW5lKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQg
bGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYg
bG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKaW5kZXggYWI3NjM5ZmEx
MmI3MzEzYjhkYWUyZmJjNmRlYWM2NDA4ZGI0NDQ4ZS4uOTY2MWM1NjMzMzMwNDI4OTk4MDIyOTE5
MDEzNjcxZWM4NjBlYzNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuaApAQCAtMjgwLDcgKzI4MCw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJNdWx0aUNvbHVt
bkZsb3dUaHJlYWQqIG11bHRpQ29sdW1uRmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIGhhc1Jh
cmVCbG9ja0Zsb3dEYXRhKCkgPyByYXJlQmxvY2tGbG93RGF0YSgpLT5tX211bHRpQ29sdW1uRmxv
d1RocmVhZCA6IG51bGxwdHI7IH0KICAgICB2b2lkIHNldE11bHRpQ29sdW1uRmxvd1RocmVhZChS
ZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqKTsKICAgICAKLSAgICBib29sIGNvbnRhaW5zRmxv
YXRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mbG9hdGluZ09iamVjdHMgJiYgIW1fZmxv
YXRpbmdPYmplY3RzLT5zZXQoKS5pc0VtcHR5KCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29udGFp
bnNGbG9hdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Zsb2F0aW5nT2JqZWN0cyAmJiAh
bV9mbG9hdGluZ09iamVjdHMtPnNldCgpLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgY29udGFpbnNG
bG9hdChSZW5kZXJCb3gmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVMaW5lcygp
IG92ZXJyaWRlOwpAQCAtMzc2LDggKzM3Niw4IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IGxv
Z2ljYWxIZWlnaHRGb3JDaGlsZEZvckZyYWdtZW50YXRpb24oY29uc3QgUmVuZGVyQm94JiBjaGls
ZCkgY29uc3Q7CiAgICAgYm9vbCBoYXNOZXh0UGFnZShMYXlvdXRVbml0IGxvZ2ljYWxPZmZzZXQs
IFBhZ2VCb3VuZGFyeVJ1bGUgPSBFeGNsdWRlUGFnZUJvdW5kYXJ5KSBjb25zdDsKIAotICAgIHZv
aWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVD
aGlsZCA9IDApIG92ZXJyaWRlOwotICAgIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVy
T2JqZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVj
dCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGNyZWF0ZU11bHRpQ29sdW1uRmxvd1RocmVhZCgpOwogICAgIHZvaWQg
ZGVzdHJveU11bHRpQ29sdW1uRmxvd1RocmVhZCgpOwpAQCAtNDUwLDggKzQ1MCw4IEBAIHByb3Rl
Y3RlZDoKICAgICBMYXlvdXRVbml0IGNvbXB1dGVkQ29sdW1uV2lkdGgoKSBjb25zdDsKICAgICB1
bnNpZ25lZCBjb21wdXRlZENvbHVtbkNvdW50KCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBpc1Rv
cExheW91dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNMZWZ0
TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29s
IGlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBib29sIGlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBtb3ZlRmxvYXRzVG8oUmVuZGVyQmxvY2tGbG93KiB0b0Jsb2NrKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmgKaW5kZXggYTU5NThk
NDA4NDIzYmNmODhmNzIxNTUyYzljMzQ0MTBlY2FmMjY1ZS4uMDFiZTRkNjNkMjZmODNjMmQwZTEx
MjAyZjMwZmFiNTU5ZjQ4YWRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckNvbWJpbmVUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckNvbWJpbmVUZXh0LmgKQEAgLTQ1LDEwICs0NSwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IHZvaWQgbm9kZSgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBib29sIGlzQ29tYmlu
ZVRleHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1
bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IEZvbnQmLCBmbG9hdCB4UG9zaXRp
b24sIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiogZmFsbGJhY2tGb250cyA9IDAsIEds
eXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckNvbWJpbmVUZXh0IjsgfQotICAgIHZpcnR1YWwg
dm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBv
bGRTdHlsZSk7CisgICAgdmlydHVhbCBib29sIGlzQ29tYmluZVRleHQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IEZvbnQmLCBmbG9hdCB4UG9zaXRpb24sIEhhc2hTZXQ8
Y29uc3QgU2ltcGxlRm9udERhdGEqPiogZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cq
ID0gMCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckNvbWJpbmVUZXh0IjsgfQorICAgIHZp
cnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0
eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFJlbmRlcmVkVGV4
dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9j
b21iaW5lRm9udFN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvdW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgK
aW5kZXggYWRmYTg2YmQ0ZTZkNTFhYWVkNDZjZmNkZGE0NjYzMmI1MDI0NWRlYy4uYmYzZDQ0NTYx
Y2MxMjVjODlkNTEyYzdmOTY3YTEyMDM3ZDZiYmI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQ291bnRlci5oCkBAIC00MywxMiArNDMsMTIgQEAgcHVibGljOgogICAgIHZvaWQg
dXBkYXRlQ291bnRlcigpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxCZURl
c3Ryb3llZCgpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNDb3VudGVyKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcg
b3JpZ2luYWxUZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzQ291bnRlcigpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZpcnR1YWwgU3RyaW5nIG9yaWdpbmFsVGV4dCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhm
bG9hdCBsZWFkV2lkdGgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgKaW5kZXggOTQ3NGU4ODk0Yzhj
YmEzZGFiNGNhNGQ0ZWQzNGJlNjUyOTU3NTRjYi4uYzYxYzU4Njk3Zjg5NDkyOTc4YWI0Y2ZmMTVi
NWZlMTE0OTU2MzA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaApAQCAtMzYsMjIgKzM2LDIyIEBAIHB1YmxpYzoK
IAogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50
Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5p
dCBwYWdlSGVpZ2h0ID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlSGVpZ2h0ID0gMCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7CiAgICAgdm9p
ZCBsYXlvdXRWZXJ0aWNhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pOwogCi0gICAgdmlydHVh
bCBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNEZXByZWNhdGVkRmxleGlibGVCb3goKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzU3RyZXRjaGluZ0NoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJldGNoaW5nQ2hpbGRyZW47IH0KKyAgICB2aXJ0dWFsIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1N0cmV0Y2hp
bmdDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc3RyZXRjaGluZ0NoaWxkcmVu
OyB9CiAgICAgdmlydHVhbCBib29sIGNhbkNvbGxhcHNlQW5vbnltb3VzQmxvY2tDaGlsZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIHBsYWNlQ2hpbGQoUmVu
ZGVyQm94KiBjaGlsZCwgY29uc3QgTGF5b3V0UG9pbnQmIGxvY2F0aW9uLCBMYXlvdXRTaXplKiBj
aGlsZExheW91dERlbHRhID0gMCk7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzRGVw
cmVjYXRlZEZsZXhpYmxlQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBt
aW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4
aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgK
aW5kZXggMGJmNzE3MTZmMDM5YjY4NGM0YTViMzVlNGZjZmY4ZGNmZmNhZDg0OC4uMmI2ZWZhYzYx
ODFlNmU4OGVlMWEzZWIxZjYxYmI5Y2YyZjhiMDY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKQEAgLTQ0LDcgKzQ0LDYgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNGbGV4aWJsZUJveCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3Qgb3ZlcnJp
ZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5Db2xsYXBzZUFu
b255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExh
eW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBvdmVycmlkZSBmaW5hbDsKQEAgLTU3LDgg
KzU2LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0hvcml6b250YWxGbG93KCkgY29uc3Q7CiAK
LSAgICBib29sIGlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBpc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNUb3BMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMZWZ0TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNp
Y0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBt
YXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtODYsNiArODUsNyBAQCBwcml2YXRl
OgogICAgIC8vIFVzZSBhbiBpbmxpbmUgY2FwYWNpdHkgb2YgOCwgc2luY2UgZmxleGJveCBjb250
YWluZXJzIHVzdWFsbHkgaGF2ZSBsZXNzIHRoYW4gOCBjaGlsZHJlbi4KICAgICB0eXBlZGVmIFZl
Y3RvcjxMYXlvdXRSZWN0LCA4PiBDaGlsZEZyYW1lUmVjdHM7CiAKKyAgICB2aXJ0dWFsIGJvb2wg
aXNGbGV4aWJsZUJveCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAg
ICBib29sIGhhc09ydGhvZ29uYWxGbG93KFJlbmRlckJveCYgY2hpbGQpIGNvbnN0OwogICAgIGJv
b2wgaXNDb2x1bW5GbG93KCkgY29uc3Q7CiAgICAgYm9vbCBpc0xlZnRUb1JpZ2h0RmxvdygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3Jl
ZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgKaW5kZXgg
NjY1NjU3MTNjZjFmMDdkNmVhOWYxZTg4N2M1MDEwNmQ1YmRiZmRmZS4uOWI2YzhkYjdiOTU4Y2Vj
Mjc5ZmUyOTM1ZmU4MjMxMzUzYjI2MTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnVsbFNjcmVlbi5oCkBAIC0zNiw3ICszNiw2IEBAIGNsYXNzIFJlbmRlckZ1bGxTY3Jl
ZW4gZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgogICAgIFJlbmRl
ckZ1bGxTY3JlZW4oRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgaXNSZW5kZXJGdWxsU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJGdWxsU2NyZWVuIjsgfQogCiAgICAgdm9pZCBzZXRQbGFjZWhvbGRl
cihSZW5kZXJCbG9jayopOwpAQCAtNDcsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bndy
YXBSZW5kZXJlcihib29sJiByZXF1aXJlc1JlbmRlclRyZWVSZWJ1aWxkKTsKIAogcHJpdmF0ZToK
KyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJGdWxsU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlk
ZTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXgg
Y2YxYzczMDcyYmY2MzJkMGI5NmViMTQ4YTkyNTA3YzI4ZDNmN2FjMS4uYmIzNDk0YWE0OTc4Y2Fl
ZTRlNDE4YWM2MDE0ODE1YzU1ODE4NDM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R3JpZC5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKIAogICAgIExheW91dFVuaXQgZ3Jp
ZEFyZWFCcmVhZHRoRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYpIGNvbnN0OwogCi0gICAgdmly
dHVhbCB2b2lkIHBhaW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBmb3JTZWxmLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0
KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDaGlsZHJlbihQYWludElu
Zm8mIGZvclNlbGYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgUGFpbnRJbmZvJiBm
b3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpIG92ZXJyaWRlOwogCiAjaWZuZGVmIE5ERUJVRwog
ICAgIGJvb2wgdHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiwgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmgKaW5kZXggOWU3MWQyZDFkYWMyNzVjNjVhMGNiNDI4NzhjZGViMjQ4
OTY3MGU4MS4uNGZlNmQ2MTI3M2I1NTAzY2I1YzRjN2MwYjE2ZTg1MWVhYTRjZDAwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTc4OSw3ICs3ODksNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCkuc3R5
bGUoKS50cmFuc2Zvcm1TdHlsZTNEKCkgPT0gVHJhbnNmb3JtU3R5bGUzRFByZXNlcnZlM0Q7IH0K
ICAgICBib29sIGhhczNEVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0gJiYg
IW1fdHJhbnNmb3JtLT5pc0FmZmluZSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZmlsdGVyTmVl
ZHNSZXBhaW50KCk7CisgICAgdm9pZCBmaWx0ZXJOZWVkc1JlcGFpbnQoKTsKICAgICBib29sIGhh
c0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCkuaGFzRmlsdGVyKCk7IH0KIAogI2lm
IEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggN2Q5MTg1ZjE5ZjYzMDk0ODIwNGYxODRjNDE4YjkyMzJi
OGQ2MTJkOS4uZmU4ZWI4MzU3ZTk1MGUxOWE3ZjMwMmI4NzQ5NmNlNjZmZjRiMjM5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAtMjE5LDcg
KzIxOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQaXhlbEFsaWdtZW50KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faXNNYWluRnJhbWVSZW5kZXJWaWV3TGF5ZXI7IH0K
IAogI2lmbmRlZiBOREVCVUcKLSAgICB2aXJ0dWFsIHZvaWQgdmVyaWZ5Tm90UGFpbnRpbmcoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgdmVyaWZ5Tm90UGFpbnRpbmcoKSBvdmVycmlkZTsKICNlbmRpZgog
CiAgICAgV0VCQ09SRV9FWFBPUlQgTGF5b3V0UmVjdCBjb250ZW50c0JveCgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4
IDJkNTE5MDFiYjZkODRjMmM2OTkxOTllZjFiZTFiY2NlMGQ0ZTdmNjYuLjY0MjRjZjQ5MGE2ZDdl
NDY5M2Q3MmFkOTY0Y2JiMWM4NzM4ZjMzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTkyLDExICs5MiwxMSBAQCB0eXBlZGVm
IHVuc2lnbmVkIENvbXBvc2l0aW5nUmVhc29uczsKIC8vIAogLy8gVGhlcmUgaXMgb25lIFJlbmRl
ckxheWVyQ29tcG9zaXRvciBwZXIgUmVuZGVyVmlldy4KIAotY2xhc3MgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQsIHB1YmxpYyBHcmFwaGljc0xheWVy
VXBkYXRlckNsaWVudCB7CitjbGFzcyBSZW5kZXJMYXllckNvbXBvc2l0b3IgZmluYWwgOiBwdWJs
aWMgR3JhcGhpY3NMYXllckNsaWVudCwgcHVibGljIEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBS
ZW5kZXJMYXllckNvbXBvc2l0b3IoUmVuZGVyVmlldyYpOwotICAgIH5SZW5kZXJMYXllckNvbXBv
c2l0b3IoKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJMYXllckNvbXBvc2l0b3IoKTsKIAogICAgIC8v
IFJldHVybiB0cnVlIGlmIHRoaXMgUmVuZGVyVmlldyBpcyBpbiAiY29tcG9zaXRpbmcgbW9kZSIg
KGkuZS4gaGFzIG9uZSBvciBtb3JlCiAgICAgLy8gY29tcG9zaXRlZCBSZW5kZXJMYXllcnMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgKaW5k
ZXggMjY1ZjczZjJlYWIxOWFhOThjMDNlZTlhY2MxNjk4NTk2OTk5YmE5Zi4uZjk5ZGUxMGM2YWIw
NzJhOTY3NTlmMzZkNGU2MjdhNjQ5NDliNDg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKFJlbmRlckxheWVyJik7CiAKICAgICBleHBsaWNpdCBG
aWx0ZXJJbmZvKFJlbmRlckxheWVyJik7Ci0gICAgfkZpbHRlckluZm8oKTsKKyAgICB2aXJ0dWFs
IH5GaWx0ZXJJbmZvKCk7CiAKICAgICBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVNvdXJjZVJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX2RpcnR5U291cmNlUmVjdDsgfQogICAgIHZvaWQgZXhwYW5kRGly
dHlTb3VyY2VSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpIHsgbV9kaXJ0eVNvdXJjZVJlY3Qu
dW5pdGUocmVjdCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsu
aAppbmRleCBkMGUzZmU1ZDI5NDcxMmIyMjJjNDljNzNiMjgzYTNmNjdlMDYwZmY0Li5mNWY5NjQz
NTMwN2RmM2M0OTM3MmFiMjdhZjc1ODI1ZDRlNGM1MzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBub2RlKCkgY29uc3QgPSBkZWxldGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNo
aWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5hbCB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQm
KSBvdmVycmlkZSB7IH0KIAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9y
UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGludCBjYXJldE1pbk9mZnNldCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmgKaW5kZXggNmM4Nzk5MzdkMzU1OTgwNGY0
NWQ3MWNkMGI3NzRiOGViZjkwNmMzMi4uODdjMjAyZGFhYjMzM2Q0MTkzZTM3ZDlhNWExZDAxYmZm
YWNmNzlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1
ZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5oCkBAIC01
MywxMSArNTMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVuZGVyTGF5ZXI7CiAK
IC8vIFRoaXMgY2xhc3MgaGFuZGxlcyB0aGUgYXV0by1zY3JvbGxpbmcgb2YgbGF5ZXJzIHdpdGgg
b3ZlcmZsb3c6IG1hcnF1ZWUuCi1jbGFzcyBSZW5kZXJNYXJxdWVlIHsKK2NsYXNzIFJlbmRlck1h
cnF1ZWUgZmluYWwgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbmRlck1hcnF1ZWUpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW5kZXJNYXJx
dWVlKFJlbmRlckxheWVyKik7Ci0gICAgdmlydHVhbCB+UmVuZGVyTWFycXVlZSgpOworICAgIH5S
ZW5kZXJNYXJxdWVlKCk7CiAKICAgICBpbnQgc3BlZWQoKSBjb25zdCB7IHJldHVybiBtX3NwZWVk
OyB9CiAgICAgaW50IG1hcnF1ZWVTcGVlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaAppbmRleCA4NmQyNzc4
ZjljODA2YjcwN2JmNDNmMWFjZWM4YzFiYTJmYTYwYzBmLi43YTY1YzI5OTI5OGI4YzNiNjc4NDE2
ZTk3NDgzMmJlM2Y1ZTljY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiAgICAgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIoRWxlbWVudCYsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+KTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Cisg
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogfTsKIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTWVk
aWFDb250cm9sVGltZWxpbmVDb250YWluZXIoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
KTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2
b2lkIGxheW91dCgpIG92ZXJyaWRlOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyVGV4dFRyYWNrQ29udGFp
bmVyRWxlbWVudChFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3Zl
cnJpZGU7CiB9OwogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCmlu
ZGV4IDAyMjNjOTgyYzcyMGMzN2U2NzU5NGEwNzhlOWM5YzgwYzBlYzE0NmYuLmY5NTVmYTJmZGU5
NzRjNTJiOGZiMzYzOTdjM2ZmOTUyMzA0MmIxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKQEAgLTQxLDggKzQx
LDYgQEAgcHVibGljOgogICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZChEb2N1bWVudCYs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB+UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFk
KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
Rmxvd0NoaWxkSW5mbyhSZW5kZXJPYmplY3QqKSBvdmVycmlkZTsKIAogICAgIFJlbmRlckJsb2Nr
RmxvdyogbXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxSZW5k
ZXJCbG9ja0Zsb3c+KHBhcmVudCgpKTsgfQpAQCAtNTUsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAg
ICBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlciogZmluZENvbHVtblNwYW5uZXJQ
bGFjZWhvbGRlcihSZW5kZXJCb3gqIHNwYW5uZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3Bhbm5lck1h
cC5nZXQoc3Bhbm5lcik7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZSBm
aW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBGaW5k
IHRoZSBzZXQgaW5zaWRlIHdoaWNoIHRoZSBzcGVjaWZpZWQgcmVuZGVyZXIgd291bGQgYmUgcmVu
ZGVyZWQuCiAgICAgUmVuZGVyTXVsdGlDb2x1bW5TZXQqIGZpbmRTZXRSZW5kZXJpbmcoUmVuZGVy
T2JqZWN0KikgY29uc3Q7CkBAIC0xMTUsNiArMTEzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRDaGVja0NvbHVtbkJyZWFrcygpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRl
OgorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkUmVnaW9uVG9UaHJl
YWQoUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZVJlbW92
ZWRGcm9tVHJlZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5TZXQuaAppbmRleCAyN2NhNzM3YzM4ZDgyYWNlNGRmNGM1Njc1Mjk5ZDFm
ZmI1NmUzNzZkLi44Y2FjMDUwNTRiOGI1NDA0YzQwMGIzNzFlMzJkNGYxODlkNjFjOGMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaApAQCAt
NDcsOCArNDcsNiBAQCBjbGFzcyBSZW5kZXJNdWx0aUNvbHVtblNldCBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJSZWdpb25TZXQgewogcHVibGljOgogICAgIFJlbmRlck11bHRpQ29sdW1uU2V0KFJlbmRl
ckZsb3dUaHJlYWQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNSZW5kZXJNdWx0aUNvbHVtblNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LQogICAgIFJlbmRlckJsb2NrRmxvdyogbXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBjb25zdCB7IHJl
dHVybiBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KHBhcmVudCgpKTsgfQogICAgIFJlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZCogbXVsdGlDb2x1bW5GbG93VGhyZWFkKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKj4oZmxvd1RocmVhZCgp
KTsgfQogCkBAIC0xMzEsOSArMTI5LDEwIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBjb2x1bW5D
b3VudCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGls
ZHJlbigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZHJl
bigpIG92ZXJyaWRlOwogICAgIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJN
dWx0aUNvbHVtblNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxv
Z2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxU
b3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTU1
LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IExheW91dFVuaXQgY2FsY3VsYXRlTWF4Q29sdW1uSGVpZ2h0KCkgY29uc3Q7CiAgICAgTGF5b3V0
VW5pdCBjb2x1bW5HYXAoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgKaW5kZXgg
ZjFhNWI4ODQ3M2I4NGFmNWE4YWIyNWMzYmQzM2U0N2FiM2I0N2FlMy4uY2Y5ZDFiMzc5Y2M0ZmY5
MWM3ZTM3NWU2ZWIzMTRmOGIwOTQxNzhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgK
QEAgLTQwLDE1ICs0MCwxNSBAQCBjbGFzcyBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhv
bGRlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBSZW5k
ZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlciogY3JlYXRlQW5vbnltb3VzKFJlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZCosIFJlbmRlckJveCogc3Bhbm5lciwgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1uU3Bhbm5l
clBsYWNlaG9sZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIFJlbmRl
ckJveCogc3Bhbm5lcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Bhbm5lcjsgfQogICAgIFJlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvd1Ro
cmVhZDsgfQogCiBwcml2YXRlOgogICAgIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9s
ZGVyKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCosIFJlbmRlckJveCogc3Bhbm5lciwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOworICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1u
U3Bhbm5lclBsYWNlaG9sZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikg
eyB9CisgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFBvaW50Jikgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBSZW5kZXJCb3gqIG1fc3Bhbm5lcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgK
aW5kZXggYzVlZmIzMjQ5NGMzODFhNjJmODQ1NzFhZjE3N2E2NDQ2YjNjMWQ1YS4uMmMyNDY5Zjc3
ZGE0NjBhMTY2YTgwNWU3ZTUwYmRjYjYzYmQwM2MzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKQEAgLTU0LDEyICs1NCwxMSBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldFJhbmdl
cyhWZWN0b3I8UmVmUHRyPFJhbmdlPj4mKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBwYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWdl
TG9naWNhbEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgbWF4UGFnZUxv
Z2ljYWxIZWlnaHQoKSBjb25zdDsKICAgICAKICAgICBMYXlvdXRSZWN0IGZsb3dUaHJlYWRQb3J0
aW9uUmVjdEZvckNsaXBwaW5nKGJvb2wgaXNGaXJzdFJlZ2lvbkluUmFuZ2UsIGJvb2wgaXNMYXN0
UmVnaW9uSW5SYW5nZSkgY29uc3Q7CkBAIC0xMjEsNiArMTIwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgaW52YWxpZGF0ZVJlZ2lvbklmTmVlZGVkKCk7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBi
b29sIGlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50IjsgfQogCiAgICAgUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gY29tcHV0ZVN0eWxlSW5SZWdpb24oUmVuZGVyRWxlbWVudCYsIFJlbmRl
clN0eWxlJiBwYXJlbnRTdHlsZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKaW5kZXggMWIwZTc5NDA1MzZmNzA4NDA0OTI5N2E1
N2JkNTE1OTZkZDFkODdiZC4uZDg3M2YxYjdiM2ZmNTY2ZTI0N2M1ZWRlYTlhMmVmMDMwOTJiMmYw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJl
YWQuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc01hcmtlZEZvckRlc3Ry
dWN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+
JiwgY29uc3QgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
dm9pZCBhcHBseUJyZWFrQWZ0ZXJDb250ZW50KExheW91dFVuaXQpIG92ZXJyaWRlIGZpbmFsOwor
ICAgIHZpcnR1YWwgdm9pZCBhcHBseUJyZWFrQWZ0ZXJDb250ZW50KExheW91dFVuaXQpIG92ZXJy
aWRlOwogCiAgICAgdmlydHVhbCBib29sIGNvbGxlY3RzR3JhcGhpY3NMYXllcnNVbmRlclJlZ2lv
bnMoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNsZWFyUmVuZGVyT2JqZWN0Q3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyT2JqZWN0Kik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRmxvd0NoaWxkSW5mbyhSZW5kZXJPYmplY3QqKSBvdmVy
cmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRmxvd0NoaWxkSW5mbyhSZW5kZXJP
YmplY3QqKSBvdmVycmlkZTsKIAogICAgIExheW91dFVuaXQgZmxvd0NvbnRlbnRCb3R0b20oKSBj
b25zdCB7IHJldHVybiBtX2Zsb3dDb250ZW50Qm90dG9tOyB9CiAgICAgdm9pZCBkaXNwYXRjaE5h
bWVkRmxvd0V2ZW50cygpOwpAQCAtMTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIGlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmpl
Y3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBjb21wdXRlT3ZlcmZsb3coTGF5b3V0VW5pdCwgYm9vbCA9IGZhbHNlKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lk
IGxheW91dCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFu
Z2VFdmVudElmTmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJRdW90ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmgK
aW5kZXggZDVmYjFkMzVkYjAyZTdmYTU1ZjVjYmE1ZTAyM2JlMjU4Y2ZiYjAxYi4uOTc0M2E0ZjQ3
ZWE4OTBlMTAxN2U3ZTM1N2QwMDQ3ZjA4MzQxNTY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclF1b3RlLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
dm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUXVvdGUiOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzUXVvdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
OworICAgIHZpcnR1YWwgYm9vbCBpc1F1b3RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZVJlbW92
ZWRGcm9tVHJlZSgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVn
aW9uLmgKaW5kZXggMjlkNzlkNTJhNDM1ZDM4NjhiNGYzY2VmMGY1YzdhZDM3MmMyZTk3Zi4uYjNm
MzFiODA4YmI2MzY4YjA2MzA3MDJjNmMwMmJiY2ZiZTczYTMwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZWdpb24uaApAQCAtNDgsOCArNDgsNiBAQCBjbGFzcyBSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ7CiAKIGNsYXNzIFJlbmRlclJlZ2lvbiA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zs
b3cgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclJlZ2lvbigpIGNvbnN0IG92
ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CiAK
ICAgICB2b2lkIHNldEZsb3dUaHJlYWRQb3J0aW9uUmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0
KSB7IG1fZmxvd1RocmVhZFBvcnRpb25SZWN0ID0gcmVjdDsgfQpAQCAtMTUwLDcgKzE0OCw4IEBA
IHByb3RlY3RlZDoKICAgICB2b2lkIGNvbXB1dGVPdmVyZmxvd0Zyb21GbG93VGhyZWFkKCk7CiAK
IHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gIlJlbmRlclJlZ2lvbiI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJSZWdpb24o
KSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJlZ2lv
biI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxCZVJlbW92ZWRGcm9tVHJlZSgpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmgKaW5kZXggYzk0NWNiY2RiMmU2OThhM2U2
Nzk5MmM0YmZjM2RhYjkyNGU4ZTA2YS4uNWY0YTVhZTgyMDQwZGViM2QxNGNhZjU2NTA1MGU1YWM2
YzI2YTYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxp
Y2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oCkBAIC0z
OCwxMyArMzgsMTMgQEAgcHVibGljOgogICAgIFJlbmRlclJlcGxpY2EoRG9jdW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyUmVwbGljYSgpOwogCi0gICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclJl
cGxpY2EiOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIlJlbmRlclJlcGxpY2EiOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAg
ICAgCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUmVwbGljYSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJ1YnlCYXNlLmgKaW5kZXggYzMwYWExMTFlOWUyZjMzMzlmMjgzNTFiY2QzNjRkOTJjZTc1
ZThhYi4uYjcyMGU1NzAyMTA1MzQ1YmYzMDUxZmUwYzYzZGY3ZTYwODEyNjUwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKQEAgLTQyLDE0ICs0MiwxMyBAQCBw
dWJsaWM6CiAgICAgUmVuZGVyUnVieUJhc2UoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
Pik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieUJhc2UoKTsKICAgICAKLSAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUnVieUJhc2UgKGFu
b255bW91cykiOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSdWJ5QmFzZSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyUnVieUJhc2UgKGFub255bW91cykiOyB9CiAKIHByaXZh
dGU6Ci0gICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYs
IGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7Ci0gICAgdmlydHVhbCBFVGV4dEFsaWduIHRleHRB
bGlnbm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91bmRzKGludCBleHBhbnNpb25PcHBv
cnR1bml0eUNvdW50LCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBsb2dpY2FsV2lkdGgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1J1YnlCYXNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJP
YmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
RVRleHRBbGlnbiB0ZXh0QWxpZ25tZW50Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0SW5saW5lRGlyZWN0aW9uTGlu
ZUJvdW5kcyhpbnQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgZmxvYXQmIGxvZ2ljYWxMZWZ0
LCBmbG9hdCYgbG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIG1lcmdlQ2hp
bGRyZW5XaXRoQmFzZShSZW5kZXJSdWJ5QmFzZSogdG9CbG9jayk7CiAKICAgICB2b2lkIG1vdmVD
aGlsZHJlbihSZW5kZXJSdWJ5QmFzZSogdG9CYXNlLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxk
ID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1
bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaAppbmRleCBkOWRj
ZTRmNzhhNmVlNWUzNGNhNzY5OWVjNGMxMDEzYTVmNjhjN2NlLi4wNzJjYmZlNDkzOTVjOGZiMDJj
ODNlYmZjMTMzZmQ1NzM0YTE4MTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUnVieVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5UnVuLmgKQEAgLTQ4LDIwICs0OCwyMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1J1YnlU
ZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNSdWJ5QmFzZSgpIGNvbnN0OwotICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgUmVuZGVyUnVieVRleHQqIHJ1YnlUZXh0KCkgY29uc3Q7CiAgICAgUmVuZGVyUnVieUJh
c2UqIHJ1YnlCYXNlKCkgY29uc3Q7CiAgICAgUmVuZGVyUnVieUJhc2UqIHJ1YnlCYXNlU2FmZSgp
OyAvLyBjcmVhdGVzIHRoZSBiYXNlIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdAogCi0gICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNsdWRlZENoaWxkKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbik7Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hp
bGRyZW4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25z
dCBSZW5kZXJTdHlsZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJP
YmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CisgICAgdmlydHVh
bCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9i
amVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlckJsb2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGaXJzdExldHRlcigpOworICAgIHZpcnR1YWwgUmVuZGVy
QmxvY2sqIGZpcnN0TGluZUJsb2NrKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUZpcnN0TGV0dGVyKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldE92ZXJoYW5nKGJv
b2wgZmlyc3RMaW5lLCBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIsIFJlbmRlck9iamVjdCog
ZW5kUmVuZGVyZXIsIGludCYgc3RhcnRPdmVyaGFuZywgaW50JiBlbmRPdmVyaGFuZykgY29uc3Q7
CiAKQEAgLTcxLDEwICs3MSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyUnVieUJhc2UqIGNy
ZWF0ZVJ1YnlCYXNlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzUnVi
eVJ1bigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUnVieVJ1biAoYW5vbnltb3VzKSI7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlc0Fub255bW91c1dyYXBwZXIoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUxlZnRvdmVyQW5vbnltb3VzQmxvY2so
UmVuZGVyQmxvY2sqKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSdWJ5UnVuKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5UnVuIChhbm9ueW1vdXMpIjsg
fQorICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTGVmdG92ZXJBbm9u
eW1vdXNCbG9jayhSZW5kZXJCbG9jayopIG92ZXJyaWRlIHsgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCmlu
ZGV4IGRmMTBiNzUyZjFhYWU1M2Q1MTA4NWMyNGY2OTc0NDAzYmQ2NmM5MTYuLmY2Y2IzMmQ2MmQ3
MGM2NzAxYTc2NjQ4NDc3ZmJiZTE1NTUxNDE4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgaW50
IG1pbmltdW1UaHVtYkxlbmd0aCgpOwogCi0gICAgdmlydHVhbCBib29sIGlzT3ZlcmxheVNjcm9s
bGJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzT3Zlcmxh
eVNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBmbG9h
dCBvcGFjaXR5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJQYXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyUGFydC5oCmluZGV4IGNlYTc3YmI3NGZhYjEwNmU4ZGE0Mzk2NjVmMzhmNjllYjE1NjQxMWMu
LjRhODY2OTI3NWQxZjM2M2FmMGQ1ZjcyMDY0NzFkMWZhMDAwMjczOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaApAQCAtMzksMTEgKzM5LDEx
IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIH5SZW5kZXJTY3JvbGxiYXJQYXJ0KCk7CiAK
LSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVu
ZGVyU2Nyb2xsYmFyUGFydCI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU2Nyb2xsYmFyUGFydCI7IH0KICAgICAK
LSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIHBhaW50SW50b1JlY3QoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAKQEAg
LTUzLDE1ICs1MywxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkxl
ZnQoKSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVChpc0ludGVnZXJWYWx1ZShtX21hcmdpbkJveC5s
ZWZ0KCkpKTsgcmV0dXJuIG1fbWFyZ2luQm94LmxlZnQoKTsgfQogICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBtYXJnaW5SaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgQVNTRVJUKGlzSW50ZWdlclZhbHVl
KG1fbWFyZ2luQm94LnJpZ2h0KCkpKTsgcmV0dXJuIG1fbWFyZ2luQm94LnJpZ2h0KCk7IH0KIAot
ICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclNjcm9sbGJhclBhcnQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAgICAgUmVuZGVyQm94KiByZW5kZXJlck93bmluZ1Njcm9sbGJhcigpIGNvbnN0Owog
CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW1h
Z2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3Jh
cHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApIG92ZXJyaWRlOwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpOworICAgIHZp
cnR1YWwgYm9vbCBpc1JlbmRlclNjcm9sbGJhclBhcnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhz
KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxheW91dEhvcml6b250YWxQYXJ0KCk7CiAgICAgdm9p
ZCBsYXlvdXRWZXJ0aWNhbFBhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggZTMzMWQwMDliNzdlZGE1MWVjZWQ2MjgyODc3NzM0
MmM0YThlNGI0OS4uNTJlMDE2ZjczYmU1MjIwNTJiMDYzZjBjYjQ5MGVlNGQxYTZmOTM1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKQEAg
LTM0LDUxICszNCw1MSBAQCBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiBjbGFzcyBTY3JvbGxi
YXI7CiBjbGFzcyBTY3JvbGxWaWV3OwogCi1jbGFzcyBSZW5kZXJTY3JvbGxiYXJUaGVtZSA6IHB1
YmxpYyBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB7CitjbGFzcyBSZW5kZXJTY3JvbGxiYXJUaGVt
ZSBmaW5hbCA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB7CiBwdWJsaWM6Ci0gICAg
dmlydHVhbCB+UmVuZGVyU2Nyb2xsYmFyVGhlbWUoKSB7fTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJT
Y3JvbGxiYXJUaGVtZSgpIHsgfQogICAgIAotICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNr
bmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkgeyByZXR1cm4gU2Nyb2xsYmFy
VGhlbWU6OnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcyhjb250cm9sU2l6ZSk7IH0KKyAgICB2
aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJv
bFNpemUpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zY3JvbGxi
YXJUaGlja25lc3MoY29udHJvbFNpemUpOyB9CiAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhckJ1dHRv
bnNQbGFjZW1lbnQgYnV0dG9uc1BsYWNlbWVudCgpIGNvbnN0IHsgcmV0dXJuIFNjcm9sbGJhclRo
ZW1lOjp0aGVtZSgpLT5idXR0b25zUGxhY2VtZW50KCk7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJh
ckJ1dHRvbnNQbGFjZW1lbnQgYnV0dG9uc1BsYWNlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5idXR0b25zUGxhY2VtZW50KCk7IH0KIAotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIo
U2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29y
bmVyUmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcq
LCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIHsgcmV0dXJu
IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zaG91bGRDZW50ZXJPblRodW1iKHNjcm9sbGJhciwg
ZXZlbnQpOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkg
b3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNob3VsZENlbnRlck9u
VGh1bWIoc2Nyb2xsYmFyLCBldmVudCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIGRvdWJsZSBpbml0
aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUo
KS0+aW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KLSAgICB2aXJ0dWFsIGRvdWJsZSBh
dXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5h
dXRvc2Nyb2xsVGltZXJEZWxheSgpOyB9CisgICAgdmlydHVhbCBkb3VibGUgaW5pdGlhbEF1dG9z
Y3JvbGxUaW1lckRlbGF5KCkgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCktPmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpOyB9CisgICAgdmlydHVhbCBkb3VibGUg
YXV0b3Njcm9sbFRpbWVyRGVsYXkoKSBvdmVycmlkZSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6
dGhlbWUoKS0+YXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpIHsgcmV0dXJu
IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5yZWdpc3RlclNjcm9sbGJhcihzY3JvbGxiYXIpOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVucmVnaXN0
ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9s
bGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKSBvdmVycmlkZSB7IHJldHVybiBT
Y3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT51
bnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KIAotICAgIHZpcnR1YWwgaW50IG1pbmlt
dW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IG1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgaW50
JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSk7CiAgICAgCiAgICAgc3RhdGljIFJlbmRlclNj
cm9sbGJhclRoZW1lKiByZW5kZXJTY3JvbGxiYXJUaGVtZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKLSAgICB2aXJ0
dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Ny
b2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3Qg
Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBi
b29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwg
SW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBh
cnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJbnRSZWN0
IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwg
Ym9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJh
Y2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVy
cmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
KSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNr
UGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9s
bGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQ
YXJ0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFy
dCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJbnRS
ZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVj
dFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jikgb3Zl
cnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCmluZGV4IGY5OTMyNzkzMjc2
NmEyNjk4MGU0ODM0NjViMjlhOTUwMzc1ZDczMzQuLjdmN2YzNTI2N2QzMTIwNzg1MzViMmRhODVh
YzU5MjNhYzlhZTAyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5oCkBAIC00OSwxMSArNDksMTEgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGZyYW1lT3duZXJFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAgICAgdmlydHVhbCBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNuYXBzaG90dGVkUGx1
Z0luIjsgfQogCi0gICAgdmlydHVhbCBDdXJzb3JEaXJlY3RpdmUgZ2V0Q3Vyc29yKGNvbnN0IExh
eW91dFBvaW50JiwgQ3Vyc29yJikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBi
b29sIGlzU25hcHNob3R0ZWRQbHVnSW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CisgICAgdmlydHVhbCBDdXJzb3JEaXJlY3RpdmUgZ2V0Q3Vyc29yKGNvbnN0IExheW91
dFBvaW50JiwgQ3Vyc29yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzU25h
cHNob3R0ZWRQbHVnSW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7
CiAgICAgCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVXaWRnZXQoKSBjb25zdCBvdmVycmlkZSBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlV2lkZ2V0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgcGFpbnRTbmFwc2hv
dChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCmluZGV4IGQ2MmIw
MDgzN2ZjYjliNjdjNTVlOGY5OWUyY2UzN2Q5YjI1MDg0NjcuLjA2NzlhMGZiYzliYTgxY2NkMTBj
MDQ4ZmM1NjQ4MDVkMGVhM2E5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCkBAIC0zOCwxNyArMzgsMTcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAg
IHZpcnR1YWwgYm9vbCBpc1RleHRBcmVhKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1RleHRBcmVhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0
VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgZmxvYXQgZ2V0QXZlcmFnZUNoYXJXaWR0aCgpOwotICAgIHZp
cnR1YWwgTGF5b3V0VW5pdCBwcmVmZXJyZWRDb250ZW50TG9naWNhbFdpZHRoKGZsb2F0IGNoYXJX
aWR0aCkgY29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCBnZXRBdmVyYWdlQ2hhcldpZHRoKCkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IHByZWZlcnJlZENvbnRlbnRMb2dpY2FsV2lk
dGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIExheW91dFVu
aXQgY29tcHV0ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdodCwgTGF5
b3V0VW5pdCBub25Db250ZW50SGVpZ2h0KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGlu
dCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRp
b25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0
YXJ0U3R5bGUpIGNvbnN0OwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlvdXRTcGVjaWFs
RXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pOworICAgIHZpcnR1YWwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0
YXJ0U3R5bGUpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlv
dXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pIG92ZXJyaWRlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRGcmFnbWVudC5oCmluZGV4IDcyMzFiNTZmNTdlOGYwNDhlODU3NDFiNDIwMjA0
ZDQ4NDlkMTIxYmYuLjgyZGNiMTllMjgwMjNjMWM4MTNmM2M4MTExZGE1MzMxYWY3NGNhOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgKQEAgLTM5
LDggKzM5LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+UmVuZGVyVGV4dEZyYWdtZW50KCk7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RnJhZ21lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0KICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICB1bnNpZ25lZCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
cnQ7IH0KQEAgLTU5LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWx0VGV4dChjb25z
dCBTdHJpbmcmIGFsdFRleHQpIHsgbV9hbHRUZXh0ID0gYWx0VGV4dDsgfQogICAgIAogcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RnJhZ21lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lR3RrLmgKaW5kZXggMGUxMDY1YjQ5NmM3MmRlZjQyMGNjYjZjMTk0YTY2
NmE1YzQ3YjEyZC4uZmUxZmU2ZjJhOGRiNjI3NDgyMjhjZTdjZDlhZjRmYmY0ZGI3Yjc4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgKQEAgLTExNiwxMCArMTE2
LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHBhaW50VGV4dEZpZWxkKGNvbnN0IFJl
bmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRBcmVhKGNvbnN0IFJlbmRlck9iamVjdCYsIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgaW50IHBv
cHVwSW50ZXJuYWxQYWRkaW5nTGVmdChSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGludCBwb3B1cEludGVybmFsUGFkZGluZ1JpZ2h0KFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nVG9wKFJlbmRlclN0eWxlJikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nQm90dG9tKFJlbmRlclN0eWxl
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdM
ZWZ0KFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBpbnQgcG9wdXBJ
bnRlcm5hbFBhZGRpbmdSaWdodChSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZp
cnR1YWwgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nVG9wKFJlbmRlclN0eWxlJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdCb3R0b20oUmVuZGVy
U3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIFRoZSBNYWMgcG9ydCBkaWZmZXJlbnRp
YXRlcyBiZXR3ZWVuIHRoZSAibWVudSBsaXN0IiBhbmQgdGhlICJtZW51IGxpc3QgYnV0dG9uLiIK
ICAgICAvLyBUaGUgZm9ybWVyIGlzIHVzZWQgd2hlbiBhIG1lbnUgbGlzdCBidXR0b24gaGFzIGJl
ZW4gc3R5bGVkLiBUaGlzIGlzIHVzZWQgdG8gZW5zdXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oCmluZGV4IGNkOGVmMmNjNDI1MzkyM2U1OWYwM2EzODA0ZjQzZTNk
MWNlY2M2OTcuLjFjODQzNTdhY2RjMzdlMzZiZDBiZWE4YmM5YjEwY2M0YjEyMmE2ODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0OwogICAgIAotY2xhc3MgUmVuZGVyVGhlbWVJT1MgOiBwdWJsaWMgUmVuZGVyVGhlbWUg
eworY2xhc3MgUmVuZGVyVGhlbWVJT1MgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGhlbWUgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKaW5kZXggODY1
MjIxMzk4NzJiNmRmYjUzZjEzNTMxM2YwY2VkYjMwNmFhMjExZi4uNGRhY2IxMzNhNTA2ZTVjMDEx
MTNjOGIzOTQzYWI1YjFjMTc4MTI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVTYWZhcmkuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZVNhZmFyaTo6aXNDb250cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
Qm9yZGVyRGEKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OmlzQ29udHJvbFN0eWxlZChzdHlsZSwg
Ym9yZGVyLCBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kQ29sb3IpOwogfQogCi12b2lkIFJlbmRlclRo
ZW1lU2FmYXJpOjphZGp1c3RSZXBhaW50UmVjdChjb25zdCBSZW5kZXJPYmplY3QmIG8sIEludFJl
Y3QmIHIpCit2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RSZXBhaW50UmVjdChjb25zdCBS
ZW5kZXJPYmplY3QmIG8sIEZsb2F0UmVjdCYgcikKIHsKICAgICBOU0NvbnRyb2xTaXplIGNvbnRy
b2xTaXplID0gY29udHJvbFNpemVGb3JGb250KG8uc3R5bGUoKSk7CiAKQEAgLTI5OSw3ICsyOTks
NyBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RSZXBhaW50UmVjdChjb25zdCBSZW5k
ZXJPYmplY3QmIG8sIEludFJlY3QmIHIpCiAgICAgfQogfQogCi1JbnRSZWN0IFJlbmRlclRoZW1l
U2FmYXJpOjppbmZsYXRlUmVjdChjb25zdCBJbnRSZWN0JiByLCBjb25zdCBJbnRTaXplJiBzaXpl
LCBjb25zdCBpbnQqIG1hcmdpbnMpIGNvbnN0CitJbnRSZWN0IFJlbmRlclRoZW1lU2FmYXJpOjpp
bmZsYXRlUmVjdChjb25zdCBGbG9hdFJlY3QmIHIsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0
IGludCogbWFyZ2lucykgY29uc3QKIHsKICAgICAvLyBPbmx5IGRvIHRoZSBpbmZsYXRpb24gaWYg
dGhlIGF2YWlsYWJsZSB3aWR0aC9oZWlnaHQgYXJlIHRvbyBzbWFsbC4gIE90aGVyd2lzZSB0cnkg
dG8KICAgICAvLyBmaXQgdGhlIGdsb3cvY2hlY2sgc3BhY2UgaW50byB0aGUgYXZhaWxhYmxlIGJv
eCdzIHdpZHRoL2hlaWdodC4KQEAgLTYxMiw3ICs2MTIsNyBAQCBib29sIFJlbmRlclRoZW1lU2Fm
YXJpOjpwYWludEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYg
cGFpbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFp
bnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4
dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkp
OwogCkBAIC02NDAsNyArNjQwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRDYXBz
TG9ja0luZGljYXRvcihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW4KICNlbmRpZgog
fQogCi1ib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFRleHRBcmVhKGNvbnN0IFJlbmRlck9i
amVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiti
b29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFRleHRBcmVhKGNvbnN0IFJlbmRlck9iamVjdCYg
bywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKICAg
ICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwogCkBAIC02ODAsNyArNjgwLDcgQEAgY29u
c3QgaW50KiBSZW5kZXJUaGVtZVNhZmFyaTo6cG9wdXBCdXR0b25QYWRkaW5nKE5TQ29udHJvbFNp
emUgc2l6ZSkgY29uc3QKICAgICByZXR1cm4gcGFkZGluZ1tzaXplXTsKIH0KIAotYm9vbCBSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0
IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVTYWZh
cmk6OnBhaW50TWVudUxpc3QoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8m
IGluZm8sIGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJy
YXJ5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVTYWZhcmkuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5o
CmluZGV4IGNkMTA2MjM0MzIzYTIyOTk5YmNkNjFkNjA2YTI1MDA3OTYwNjNhYTYuLjk4NGZjNzI0
ZjJlNGNjNzA5Y2QxNTI2ZDhhZmZiNDQzZTQ5MDVjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5oCkBAIC00NSw4OCArNDUsODcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFNhZmFyaVRoZW1lOwogCiBjbGFzcyBSZW5kZXJTdHlsZTsKIAotY2xhc3MgUmVuZGVy
VGhlbWVTYWZhcmkgOiBwdWJsaWMgUmVuZGVyVGhlbWUgeworY2xhc3MgUmVuZGVyVGhlbWVTYWZh
cmkgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGhlbWUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoKTsKIAogICAgIC8vIEEgbWV0aG9kIHRvIG9idGFp
biB0aGUgYmFzZWxpbmUgcG9zaXRpb24gZm9yIGEgImxlYWYiIGNvbnRyb2wuICBUaGlzIHdpbGwg
b25seSBiZSB1c2VkIGlmIGEgYmFzZWxpbmUKICAgICAvLyBwb3NpdGlvbiBjYW5ub3QgYmUgZGV0
ZXJtaW5lZCBieSBleGFtaW5pbmcgY2hpbGQgY29udGVudC4gQ2hlY2tib3hlcyBhbmQgcmFkaW8g
YnV0dG9ucyBhcmUgZXhhbXBsZXMgb2YKICAgICAvLyBjb250cm9scyB0aGF0IG5lZWQgdG8gZG8g
dGhpcy4KLSAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVj
dCYpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb24oY29uc3QgUmVuZGVy
T2JqZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBBIG1ldGhvZCBhc2tpbmcgaWYgdGhl
IGNvbnRyb2wgY2hhbmdlcyBpdHMgdGludCB3aGVuIHRoZSB3aW5kb3cgaGFzIGZvY3VzIG9yIG5v
dC4KLSAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVuZGVyT2Jq
ZWN0JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNvbnRyb2xTdXBwb3J0c1RpbnRzKGNvbnN0
IFJlbmRlck9iamVjdCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQSBnZW5lcmFsIG1ldGhv
ZCBhc2tpbmcgaWYgYW55IGNvbnRyb2wgdGludGluZyBpcyBzdXBwb3J0ZWQgYXQgYWxsLgotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UmVwYWludFJlY3Qo
Y29uc3QgUmVuZGVyT2JqZWN0JiwgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RS
ZXBhaW50UmVjdChjb25zdCBSZW5kZXJPYmplY3QmLCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25z
dCBCb3JkZXJEYXRhJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZp
bGxMYXllciYsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBpc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBCb3JkZXJE
YXRhJiwgY29uc3QgRmlsbExheWVyJiwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9u
QmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0
aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBDb2xvciBh
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgdmlydHVh
bCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIENvbG9yIGFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZv
cm1Gb2N1c1JpbmdDb2xvcigpIGNvbnN0OworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1Gb2N1
c1JpbmdDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gU3lzdGVtIGZvbnRzLgotICAg
IHZpcnR1YWwgdm9pZCBzeXN0ZW1Gb250KENTU1ZhbHVlSUQsIEZvbnREZXNjcmlwdGlvbiYpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBzeXN0ZW1Gb250KENTU1ZhbHVlSUQsIEZvbnREZXNjcmlw
dGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBpbnQgbWluaW11bU1lbnVMaXN0
U2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IG1pbmltdW1NZW51TGlz
dFNpemUoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Q7Ci0gICAg
dmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRl
clN0eWxlJiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJU
aHVtYlNpemUoUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0
eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgaW50IHBv
cHVwSW50ZXJuYWxQYWRkaW5nTGVmdChSZW5kZXJTdHlsZSYpIGNvbnN0OwotICAgIHZpcnR1YWwg
aW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nUmlnaHQoUmVuZGVyU3R5bGUmKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ1RvcChSZW5kZXJTdHlsZSYpIGNvbnN0Owot
ICAgIHZpcnR1YWwgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nQm90dG9tKFJlbmRlclN0eWxlJikg
Y29uc3Q7CisgICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdMZWZ0KFJlbmRlclN0
eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRp
bmdSaWdodChSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgaW50IHBv
cHVwSW50ZXJuYWxQYWRkaW5nVG9wKFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdCb3R0b20oUmVuZGVyU3R5bGUmKSBjb25z
dCBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIC8vIE1ldGhvZHMgZm9yIGVhY2ggYXBwZWFy
YW5jZSB2YWx1ZS4KLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChjb25zdCBSZW5kZXJP
YmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2
b2lkIHNldENoZWNrYm94U2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBwYWludENoZWNrYm94KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2hlY2tib3hTaXpl
KFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRS
YWRpbyhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
UmFkaW9TaXplKFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVu
dCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRvbihjb25zdCBSZW5kZXJPYmpl
Y3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lk
IHNldEJ1dHRvblNpemUoUmVuZGVyU3R5bGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNv
bnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRvbihjb25zdCBSZW5kZXJP
YmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHNldEJ1dHRvblNpemUoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVz
dFRleHRGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0
JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGFkanVzdFRleHRGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHls
ZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludFRl
eHRBcmVhKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEFyZWFTdHlsZShTdHlsZVJlc29sdmVy
JiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHBhaW50
VGV4dEFyZWEoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRBcmVhU3R5bGUo
U3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3QoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RN
ZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBF
bGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlz
dEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRv
blN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIm
LCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihj
b25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Cisg
ICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9v
bCBwYWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJj
aEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29s
dmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHBh
aW50U2VhcmNoRmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVs
ZFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0
eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJPYmpl
Y3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lk
IGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRl
clN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBwYWlu
dFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RTZWFyY2hGaWVsZERlY29yYXRpb25QYXJ0U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0
eWxlJiwgRWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxk
RGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZERlY29yYXRp
b25QYXJ0U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvblBh
cnQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb25QYXJ0U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCop
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25QYXJ0KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlv
blBhcnRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3Jh
dGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVz
dWx0c0J1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShTdHlsZVJl
c29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVj
dCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKICAKLSAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRDYXBzTG9ja0luZGljYXRvcihjb25zdCBSZW5kZXJPYmplY3QmLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50
Q2Fwc0xvY2tJbmRpY2F0b3IoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZpcnR1
YWwgU3RyaW5nIG1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCkgb3ZlcnJpZGU7CkBAIC0xNDAsMTMg
KzEzOSwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHBhaW50TWV0ZXIoY29uc3Qg
UmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRl
OwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd1BsYWNlaG9sZGVyV2hlbkZv
Y3VzZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFNo
b3dQbGFjZWhvbGRlcldoZW5Gb2N1c2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCiBwcml2YXRlOgogICAgIFJlbmRlclRoZW1lU2FmYXJpKCk7CiAgICAgdmlydHVhbCB+UmVu
ZGVyVGhlbWVTYWZhcmkoKTsKIAotICAgIEludFJlY3QgaW5mbGF0ZVJlY3QoY29uc3QgSW50UmVj
dCYsIGNvbnN0IEludFNpemUmLCBjb25zdCBpbnQqIG1hcmdpbnMpIGNvbnN0OworICAgIEludFJl
Y3QgaW5mbGF0ZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IGlu
dCogbWFyZ2lucykgY29uc3Q7CiAKICAgICAvLyBHZXQgdGhlIGNvbnRyb2wgc2l6ZSBiYXNlZCBv
ZmYgdGhlIGZvbnQuICBVc2VkIGJ5IHNvbWUgb2YgdGhlIGNvbnRyb2xzIChsaWtlIGJ1dHRvbnMp
LgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4u
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCmluZGV4IGFlYjQz
OGYwMTU3YWE5MjhjZjMyZDQ2NTkyYWFiMDM5NTVhMTJjZjIuLmNjODM4ZWYxNDNiOWMwYmNlZjZl
NGRiZDQxMTUyYjdiYTllNzg1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVdpbi5oCkBAIC00NywxMiArNDcsMTIgQEAgc3RydWN0IFRoZW1lRGF0YSB7CiAgICAgdW5z
aWduZWQgbV9jbGFzc2ljU3RhdGU7CiB9OwogCi1jbGFzcyBSZW5kZXJUaGVtZVdpbiA6IHB1Ymxp
YyBSZW5kZXJUaGVtZSB7CitjbGFzcyBSZW5kZXJUaGVtZVdpbiBmaW5hbDogcHVibGljIFJlbmRl
clRoZW1lIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3Jl
YXRlKCk7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBleHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgZXh0cmFRdWlya3NTdHlsZVNoZWV0KCk7CisgICAgdmlydHVhbCBT
dHJpbmcgZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgU3Ry
aW5nIGV4dHJhUXVpcmtzU3R5bGVTaGVldCgpIG92ZXJyaWRlOwogCiAgICAgLy8gQSBtZXRob2Qg
YXNraW5nIGlmIHRoZSB0aGVtZSdzIGNvbnRyb2xzIGFjdHVhbGx5IGNhcmUgYWJvdXQgcmVkcmF3
aW5nIHdoZW4gaG92ZXJlZC4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25zdCBS
ZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZGVvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VmlkZW8uaAppbmRleCBlYTYwOGVjODE2NjBiYjA0NzcxNWMzOTJlYzRjZDc0YzBmNzU2NzA0Li43
NDgyNGI3YzY5YjM5YTMzYzFlMDIzNjllZTgzNzczMTRlMGNjMDUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlkZW8uaApAQCAtNTAsMzcgKzUwLDM3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgcmVxdWlyZXNJbW1lZGlhdGVDb21wb3NpdGluZygpIGNvbnN0OwogCi0gICAgdmlydHVh
bCBib29sIHNob3VsZERpc3BsYXlWaWRlbygpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRGlzcGxh
eVZpZGVvKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBtZWRpYUVsZW1lbnQoKSBjb25z
dCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIGludHJpbnNp
Y1NpemVDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAgTGF5b3V0U2l6ZSBjYWxjdWxhdGVJbnRyaW5z
aWNTaXplKCk7CiAgICAgdm9pZCB1cGRhdGVJbnRyaW5zaWNTaXplKCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopOworICAg
IHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0
Kikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCB7IHJldHVybiAiUmVuZGVyVmlkZW8iOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclZpZGVvIjsgfQogCi0gICAg
dmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzVmlkZW8oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzVmlkZW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7
CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBMYXlv
dXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVk
ICA9IENvbXB1dGVBY3R1YWwpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlv
dXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIExheW91dFVuaXQgbWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgdmlydHVhbCBMYXlvdXRVbml0
IG9mZnNldExlZnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0VG9wKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldFdpZHRoKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBMYXlvdXRVbml0IG9mZnNldEhlaWdodCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBvZmZzZXRMZWZ0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBMYXlvdXRV
bml0IG9mZnNldFRvcCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBv
ZmZzZXRXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZz
ZXRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCB1cGRhdGVQbGF5
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oCmluZGV4IGJmZmQy
MmNkMmFmNmJiYjljMzQ1MTk5OGVlNjNjMzhlNGVmYTUzMjEuLjI3NWY4NjZlNzU5ODVmODZkNjA2
ZmYyNjhhMjA2ZDk4NzFlZjM1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0QXV0b3NpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRv
c2l6ZXIuaApAQCAtNDEsMTIgKzQxLDEyIEBAIGNsYXNzIFJlbmRlclRleHQ7CiBzdHJ1Y3QgVGV4
dEF1dG9zaXppbmdXaW5kb3dJbmZvOwogc3RydWN0IFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm87
CiAKLWNsYXNzIFRleHRBdXRvc2l6ZXIgeworY2xhc3MgVGV4dEF1dG9zaXplciBmaW5hbCB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dEF1dG9zaXplcik7CiAKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBUZXh0QXV0b3NpemVyKERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCB+VGV4dEF1dG9z
aXplcigpOworICAgIH5UZXh0QXV0b3NpemVyKCk7CiAKICAgICBib29sIHByb2Nlc3NTdWJ0cmVl
KFJlbmRlck9iamVjdCogbGF5b3V0Um9vdCk7CiAgICAgdm9pZCByZWNhbGN1bGF0ZU11bHRpcGxp
ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVHJhaWxpbmdGbG9h
dHNSb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVHJhaWxpbmdGbG9h
dHNSb290SW5saW5lQm94LmgKaW5kZXggY2I4OTU3NmVmZmQ1NDg1OGI0MDA5NmNmNWZmZmJlMTI1
MmMxNWZiZC4uYTM0NzNlZWE4M2FkM2NkNTc4NGYyNDlmYmNhNDNkNGZhY2I3YTY5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RyYWlsaW5nRmxvYXRzUm9vdElubGluZUJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UcmFpbGluZ0Zsb2F0c1Jvb3RJbmxp
bmVCb3guaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgZmxvYXQgdmlydHVhbExvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBmbG9hdCB2aXJ0dWFsTG9naWNhbEhlaWdodCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAppbmRleCBj
OTRhMjFkN2RiYzI3NGU5ODNkYjhlNzYwZjJmNTEwNjI3YTA0YWUxLi5mOGYxMmE4ZmEzYmExNDM0
NzU4ZWZiN2ZkNGJiYzNjNzBjNTNlZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCkBAIC03OSw3ICs3OSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGludCBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxUYWJsZSgpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNS
ZW5kZXJNYXRoTUxUYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyTWF0aE1MVGFibGUiOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmgKaW5kZXggNDNiNDYzNDgxYjlk
NDM5NmFkMjg1ZDlmMGZiMjQyYTZhNjhlMWJmZS4uNzY5ODQ4OTliYjkwNDQ3ZTU5NGUyYTJmYTIy
YWM4YTQ2MmMxOWI2YiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAg
ICAgUmVuZGVyTWF0aE1MTWVuY2xvc2UoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsK
IAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7
IHJldHVybiAiUmVuZGVyTWF0aE1MTWVuY2xvc2UiOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTE1lbmNs
b3NlIjsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMb2dpY2FsSGVpZ2h0KCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSBudWxscHRyKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0
b3IuaAppbmRleCBkNGI2OWQ4ZjUxMTU2NjExOGE1MmMyMjBjMTVjZmU4YTFlMWNiMmJhLi4zNjk5
YjcxY2Q2ODg2YTc0YzM0MGQ5NzczZDljOTAwNGRiZjNmNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCkBAIC03
MiwxMiArNzIsMTIgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBUaGUgZGlzcGxheXN0eWxlIHBy
b3BlcnR5IGlzIG5vdCBpbXBsZW1lbnRlZCAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExODczNykuCiAgICAgYm9vbCBpc0xhcmdlT3BlcmF0b3JJbkRpc3BsYXlTdHls
ZSgpIGNvbnN0IHsgcmV0dXJuICFoYXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9u
YXJ5OjpTdHJldGNoeSkgJiYgaGFzT3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFy
eTo6TGFyZ2VPcCk7IH0KIAotICAgIHZvaWQgdXBkYXRlU3R5bGUoKSBvdmVycmlkZSBmaW5hbDsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3R5bGUoKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIHZp
cnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAg
dm9pZCB1cGRhdGVUb2tlbkNvbnRlbnQoY29uc3QgU3RyaW5nJiBvcGVyYXRvclN0cmluZyk7Ci0g
ICAgdm9pZCB1cGRhdGVUb2tlbkNvbnRlbnQoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlVG9rZW5Db250ZW50KCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdm9pZCB1cGRh
dGVPcGVyYXRvclByb3BlcnRpZXMoKTsKICAgICB2b2lkIHNldE9wZXJhdG9yRmxhZ0FuZFNjaGVk
dWxlTGF5b3V0SWZOZWVkZWQoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnLCBjb25zdCBB
dG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKTsKICAgICBMYXlvdXRVbml0IHRyYWlsaW5nU3Bh
Y2VFcnJvcigpOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBpbnQg
Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlbmRlck1h
dGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBvdmVycmlkZSB7IHJldHVybiB0
aGlzOyB9CiAgICAgdm9pZCByZWJ1aWxkVG9rZW5Db250ZW50KGNvbnN0IFN0cmluZyYgb3BlcmF0
b3JTdHJpbmcpOwotICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hv
dWxkQWxsb3dTdHJldGNoaW5nKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oCmlu
ZGV4IGVjY2Q2MWM4NGRjZGY5OTIwNzM0NTdiZDMzNzIzYzEzMzhiODMzZGYuLjVhMmE3OWZjNjZh
YTE1ODhhMWQ0ZjRlOGQ2N2E3NWJiNGJmZDhiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3Iu
aApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJNYXRo
TUxSYWRpY2FsT3BlcmF0b3IgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MT3BlcmF0b3Igewog
cHVibGljOgogICAgIFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZXRjaFRvKExheW91dFVuaXQg
aGVpZ2h0QWJvdmVCYXNlbGluZSwgTGF5b3V0VW5pdCBkZXB0aEJlbG93QmFzZWxpbmUpOworICAg
IHZpcnR1YWwgdm9pZCBzdHJldGNoVG8oTGF5b3V0VW5pdCBoZWlnaHRBYm92ZUJhc2VsaW5lLCBM
YXlvdXRVbml0IGRlcHRoQmVsb3dCYXNlbGluZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0
VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KSBvdmVycmlkZTsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5k
ZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IgKGFub255bW91cykiIDogIlJlbmRlck1hdGhNTFJhZGlj
YWxPcGVyYXRvciI7IH0KLSAgICB2b2lkIHNldE9wZXJhdG9yUHJvcGVydGllcygpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBzZXRPcGVyYXRvclByb3BlcnRpZXMoKSBvdmVycmlkZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgKaW5kZXggYWYwMDBhNzJjMzkzNzBhZWMyZjM4
MjI1ZGU1OTY1M2M1Y2NjYmU4Yy4uOGFjNDhkNDUxOTUxMDk3MzQ5OTI2MGMyNTczZWU3YWMwMDFm
ZDQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSb290LmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIH07CiAKIC8vIFRoZXNlIGFy
ZSBzcGVjaWZpYyB3cmFwcGVycyBmb3IgdGhlIGluZGV4IGFuZCBiYXNlLCB0aGF0IGFzayB0aGUg
cGFyZW50IHRvIHJlc3RydWN0dXJlIHRoZSByZW5kZXJlcnMgYWZ0ZXIgY2hpbGQgcmVtb3ZhbC4K
LWNsYXNzIFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyIDogcHVibGljIFJlbmRlck1hdGhNTFJvdyB7
CitjbGFzcyBSZW5kZXJNYXRoTUxSb290V3JhcHBlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRo
TUxSb3cgewogCiBmcmllbmQgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdDsKIApAQCAtODMsOSArODMs
OSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyT2JqZWN0KiByZW1vdmVDaGlsZFdp
dGhvdXRSZXN0cnVjdHVyaW5nKFJlbmRlck9iamVjdCYpOwotICAgIFJlbmRlck9iamVjdCogcmVt
b3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOwogICAgIHN0YXRpYyBSZW5k
ZXJQdHI8UmVuZGVyTWF0aE1MUm9vdFdyYXBwZXI+IGNyZWF0ZUFub255bW91c1dyYXBwZXIoUmVu
ZGVyTWF0aE1MUm9vdCogcmVuZGVyT2JqZWN0KTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJN
YXRoTUxSb290V3JhcHBlcigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxSb290V3JhcHBlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIiOyB9CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFJvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxS
b3cuaAppbmRleCBiYTVkZjg4MjU3ZDY4ZGJkMTQwMjE0NmMxY2UwZWY1YTA3Nzg3MDI3Li5iODdk
OTY0MDRjODIxYmMyYzg3NTA4NWMzNzk4OGU2ZDBmMGVlNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlT3BlcmF0b3JQcm9wZXJ0aWVzKCk7CiAKIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91
dCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhN
TFJvdygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKaW5k
ZXggNzU0MjY3ODJlMGQ0ZTUyM2Y3NjA5MjcxNzhkMGZiMjMyMjg5ZTVmYS4uMWI1ZTcxZDY2NjEy
M2FiNTlmN2QzZmVmYzM3ODhmMGQ0YzcwMzUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKQEAgLTM1LDcgKzM1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MU2NyaXB0czsK
IAotY2xhc3MgUmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXIgOiBwdWJsaWMgUmVuZGVyTWF0aE1M
QmxvY2sgeworY2xhc3MgUmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXIgZmluYWwgOiBwdWJsaWMg
UmVuZGVyTWF0aE1MQmxvY2sgewogCiBmcmllbmQgY2xhc3MgUmVuZGVyTWF0aE1MU2NyaXB0czsK
IApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogfTsKIAogLy8gUmVuZGVyIGEgYmFzZSB3aXRo
IHNjcmlwdHMuCi1jbGFzcyBSZW5kZXJNYXRoTUxTY3JpcHRzIDogcHVibGljIFJlbmRlck1hdGhN
TEJsb2NrIHsKK2NsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHMgZmluYWwgOiBwdWJsaWMgUmVuZGVy
TWF0aE1MQmxvY2sgewogCiBmcmllbmQgY2xhc3MgUmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXI7
CiAKQEAgLTc1LDE3ICs3NSwxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxk
KFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0
Jikgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5l
bWJlbGxpc2hlZE9wZXJhdG9yKCk7CisgICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciog
dW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBpbnQgZmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAgICAg
CiBwcml2YXRlOgogICAgIHZvaWQgYWRkQ2hpbGRJbnRlcm5hbChib29sIG5vcm1hbEluc2VydGlv
biwgUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwog
ICAgIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGRJbnRlcm5hbChib29sIG5vcm1hbFJlbW92YWws
IFJlbmRlck9iamVjdCYgY2hpbGQpOwogCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1M
U2NyaXB0cygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxTY3JpcHRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxTY3JpcHRzIjsgfQogCiAgICAgdm9pZCBmaXhBbm9u
eW1vdXNTdHlsZUZvclN1YlN1cFBhaXIoUmVuZGVyT2JqZWN0KiBzdWJTdXBQYWlyLCBib29sIGlz
UG9zdFNjcmlwdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFRva2VuLmgKaW5kZXggZjVhZDViYmEwNGYwYjUxYjAwNjkxYjFiZTI4NDI4OGRm
YmUzMTYyOC4uMGE0ZDY0YWZjZGJkNzJhNmFiYmMyNzY3ZmQ2MWIyOGM4ZDE2YzM2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4u
aApAQCAtNDEsMTYgKzQxLDE2IEBAIHB1YmxpYzoKIAogICAgIE1hdGhNTFRleHRFbGVtZW50JiBl
bGVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MVGV4dEVsZW1lbnQmPihub2RlRm9y
Tm9uQW5vbnltb3VzKCkpOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxUb2tl
bigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9OwogICAgIHZpcnR1YWwgdm9pZCBhZGRD
aGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVG9rZW5Db250ZW50KCk7Ci0gICAgdm9p
ZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVG
cm9tRWxlbWVudCgpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjcmVhdGVXcmFw
cGVySWZOZWVkZWQoKTsKIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRo
TUxUb2tlbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpc0Fu
b255bW91cygpID8gIlJlbmRlck1hdGhNTFRva2VuIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJNYXRo
TUxUb2tlbiI7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVTdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKaW5kZXggYmRlNTkxNTY3ODc4OGMxNTg2
MGQ4ZjBkZGI5OTQyOTc1ZjkzYjc5OS4uNmY2NTNkNTFjMDA4MGFmODAwYmZmYjQ4OTRhNzRhOTAz
N2NmNjZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxVbmRlck92ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCkBAIC0zMiwxNiArMzIsMTYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAotY2xhc3MgUmVuZGVyTWF0aE1MVW5kZXJPdmVyIDogcHVibGljIFJl
bmRlck1hdGhNTEJsb2NrIHsKK2NsYXNzIFJlbmRlck1hdGhNTFVuZGVyT3ZlciBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6CiAgICAgUmVuZGVyTWF0aE1MVW5kZXJP
dmVyKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAgICAgCi0gICAgdmlydHVhbCBS
ZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCk7CisgICAgdmlydHVh
bCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgb3ZlcnJpZGU7
CiAKICAgICB2aXJ0dWFsIGludCBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlz
UmVuZGVyTWF0aE1MVW5kZXJPdmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5oCmluZGV4IDgwOWJhODI0
NDY4ODY2MDk3MGUyM2ZlNjFhZGQ4Y2I0Y2ZjODBlYWEuLmMyYjE3NzEzN2MzNzVhMjZhNWRiZDZj
MWUyNzVkOTU1OTgxZjkzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvQm94U2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0Jv
eFNoYXBlLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgUmVuZGVyQm94OwogCiBSb3VuZGVkUmVj
dCBjb21wdXRlUm91bmRlZFJlY3RGb3JCb3hTaGFwZShDU1NCb3hUeXBlLCBjb25zdCBSZW5kZXJC
b3gmKTsKIAotY2xhc3MgQm94U2hhcGUgOiBwdWJsaWMgU2hhcGUgeworY2xhc3MgQm94U2hhcGUg
ZmluYWwgOiBwdWJsaWMgU2hhcGUgewogcHVibGljOgogICAgIEJveFNoYXBlKGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmIGJvdW5kcykKICAgICAgICAgOiBtX2JvdW5kcyhib3VuZHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaAppbmRleCA0NGZlNjI5
N2FkZWQyZThhYThjOTJiNWNkNjk1NzMyMjkxODRmYTE2Li5hZTUwYjBmN2UxZDA4ODIxOTllNGI2
YjBlMmYzNTYyODk5MDJiOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1BvbHlnb25TaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvUG9seWdvblNoYXBlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBPZmZzZXRQb2x5Z29uRWRnZSA6IHB1YmxpYyBWZXJ0ZXhQYWlyIHsKK2NsYXNz
IE9mZnNldFBvbHlnb25FZGdlIGZpbmFsIDogcHVibGljIFZlcnRleFBhaXIgewogcHVibGljOgog
ICAgIE9mZnNldFBvbHlnb25FZGdlKGNvbnN0IEZsb2F0UG9seWdvbkVkZ2UmIGVkZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgb2Zmc2V0KQogICAgICAgICA6IG1fdmVydGV4MShlZGdlLnZlcnRleDEoKSAr
IG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFz
dGVyU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUu
aAppbmRleCBiN2IwMTM1NmFkNDkyZDAyMjAzOTQwYjlhZjNmNDliYTVhY2FlZDYyLi5jMDliNTJl
YzU2OGQ1NjE5NTZhYmFjNTI0ZjhlNzVmMjZlN2I2MmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6
CiAgICAgaW50IG1fb2Zmc2V0OwogfTsKIAotY2xhc3MgUmFzdGVyU2hhcGUgOiBwdWJsaWMgU2hh
cGUgeworY2xhc3MgUmFzdGVyU2hhcGUgZmluYWwgOiBwdWJsaWMgU2hhcGUgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFJhc3RlclNoYXBlKTsKIHB1YmxpYzoKICAgICBSYXN0ZXJTaGFwZShz
dGQ6OnVuaXF1ZV9wdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGludGVydmFscywgY29uc3QgSW50
U2l6ZSYgbWFyZ2luUmVjdFNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1JlY3RhbmdsZVNoYXBlLmgKaW5kZXggZjBlM2YwZjc3YTU3Y2RmNTUxNWQ2ZmY3YjkzZmIw
Nzk0M2ExM2U2OC4uYjAzNjFjNjEyMjI3MTE0NWI1OWU3OTJhODZhYzE0ZmUwOGZjZDY0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuaApA
QCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJlY3Rhbmds
ZVNoYXBlIDogcHVibGljIFNoYXBlIHsKK2NsYXNzIFJlY3RhbmdsZVNoYXBlIGZpbmFsIDogcHVi
bGljIFNoYXBlIHsKIHB1YmxpYzoKICAgICBSZWN0YW5nbGVTaGFwZShjb25zdCBGbG9hdFJlY3Qm
IGJvdW5kcywgY29uc3QgRmxvYXRTaXplJiByYWRpaSkKICAgICAgICAgOiBtX2JvdW5kcyhib3Vu
ZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCmluZGV4
IGNiNzdjY2U2NmFjYmZjY2NjMDc5OGJlZmU2NDlmOGUwNjIxOWIzZWQuLjQ5NDhkZjE3OWY1OTFj
ZjQ5NTRjMzVkY2Y0ZmVjODI4N2IwZGIyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9CYXNpY1NoYXBlcy5oCkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKIAogfTsK
IAotY2xhc3MgQmFzaWNTaGFwZUNpcmNsZSA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKK2NsYXNzIEJh
c2ljU2hhcGVDaXJjbGUgZmluYWwgOiBwdWJsaWMgQmFzaWNTaGFwZSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8QmFzaWNTaGFwZUNpcmNsZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IEJhc2ljU2hhcGVDaXJjbGUpOyB9CiAKQEAgLTE3MCw3ICsxNzAsNyBAQCBwcml2
YXRlOgogICAgIEJhc2ljU2hhcGVSYWRpdXMgbV9yYWRpdXM7CiB9OwogCi1jbGFzcyBCYXNpY1No
YXBlRWxsaXBzZSA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKK2NsYXNzIEJhc2ljU2hhcGVFbGxpcHNl
IGZpbmFsIDogcHVibGljIEJhc2ljU2hhcGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJhc2ljU2hhcGVFbGxpcHNlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQmFz
aWNTaGFwZUVsbGlwc2UpOyB9CiAKQEAgLTE5OCw3ICsxOTgsNyBAQCBwcml2YXRlOgogICAgIEJh
c2ljU2hhcGVSYWRpdXMgbV9yYWRpdXNZOwogfTsKIAotY2xhc3MgQmFzaWNTaGFwZVBvbHlnb24g
OiBwdWJsaWMgQmFzaWNTaGFwZSB7CitjbGFzcyBCYXNpY1NoYXBlUG9seWdvbiBmaW5hbCA6IHB1
YmxpYyBCYXNpY1NoYXBlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY1No
YXBlUG9seWdvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljU2hhcGVQb2x5
Z29uKTsgfQogCkBAIC0yMjQsNyArMjI0LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8TGVuZ3Ro
PiBtX3ZhbHVlczsKIH07CiAKLWNsYXNzIEJhc2ljU2hhcGVJbnNldCA6IHB1YmxpYyBCYXNpY1No
YXBlIHsKK2NsYXNzIEJhc2ljU2hhcGVJbnNldCBmaW5hbCA6IHB1YmxpYyBCYXNpY1NoYXBlIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY1NoYXBlSW5zZXQ+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY1NoYXBlSW5zZXQpOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgKaW5kZXggNTY3
M2IwNzk3ZjkzYmY0MDU3ZWQ3NDc5OTUyNDdlNGM4YjhmNTQwMi4uYjRkMTkxMDIzYmNlMzNkNDQ2
MzdmOTQxMzUzMDQ5NGJhYzIxNDU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogLy8gc3R5bGUgcmVzb2x1dGlvbiwgaW4gb3JkZXIgdG8gYXZvaWQgbG9hZGlu
ZyBpbWFnZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnkgdGhlIGZpbmFsIHN0eWxlLgogLy8g
VGhleSBzaG91bGQgbmV2ZXIgZXhpc3QgaW4gYSBSZW5kZXJTdHlsZSBhZnRlciBpdCBoYXMgYmVl
biByZXR1cm5lZCBmcm9tIHRoZSBzdHlsZSBzZWxlY3Rvci4KIAotY2xhc3MgU3R5bGVQZW5kaW5n
SW1hZ2UgOiBwdWJsaWMgU3R5bGVJbWFnZSB7CitjbGFzcyBTdHlsZVBlbmRpbmdJbWFnZSBmaW5h
bCA6IHB1YmxpYyBTdHlsZUltYWdlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHlsZVBlbmRpbmdJbWFnZT4gY3JlYXRlKENTU1ZhbHVlKiB2YWx1ZSkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFN0eWxlUGVuZGluZ0ltYWdlKHZhbHVlKSk7IH0KIApAQCAtNjMsNyArNjMsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgRmxvYXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVt
ZW50KiwgZmxvYXQgLyptdWx0aXBsaWVyKi8pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0
U2l6ZSgpOyB9CiAgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVs
YXRpdmVIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhjb25zdCBSZW5kZXJFbGVtZW50Kiwg
TGVuZ3RoJiAvKiBpbnRyaW5zaWNXaWR0aCAqLyAsIExlbmd0aCYgLyogaW50cmluc2ljSGVpZ2h0
ICovLCBGbG9hdFNpemUmIC8qIGludHJpbnNpY1JhdGlvICovKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyRWxlbWVudCosIExlbmd0
aCYgLyogaW50cmluc2ljV2lkdGggKi8gLCBMZW5ndGgmIC8qIGludHJpbnNpY0hlaWdodCAqLywg
RmxvYXRTaXplJiAvKiBpbnRyaW5zaWNSYXRpbyAqLykgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVh
bCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29u
c3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0KSBvdmVycmlkZSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBvdmVycmlkZSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2su
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAppbmRleCA3
YTRmZGY4YjUzNjk4NmYyZThkMTMyYzMzNjg0MDJiNGQxZDUyZGQzLi5kZGM1YjkyNmQ1YmYxMTAw
OWVkNWFmODk3NDY0MDViNTMxYjJkODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdCbG9jay5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbVN0eWxlKCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgaXNSZW5kZXJTVkdCbG9jaygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IHRydWU7IH07CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyU1ZHQmxvY2soKSBjb25zdCBvdmVy
cmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVS
ZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0NvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdDb250YWluZXIuaAppbmRleCA0Mjk1OGQ0ZWMyYWJiYzk5ZGE1MGQ4MjQ4YTA4MDZkY2VmMzMw
M2Y3Li44NzI1M2FkY2M3MTA0NjdhNTdkMTAwOTBmNzUwNDZiZDg2ZTEyOGY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKQEAgLTQy
LDcgKzQyLDYgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFJlbmRlclNWR0NvbnRhaW5lcihT
VkdFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwogCi0gICAgdmlydHVhbCBib29sIGlz
U1ZHQ29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJSZW5kZXJTVkdDb250YWluZXIiOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxk
cmVuKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNzMsNiArNzIs
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB1cGRhdGVDYWNoZWRCb3VuZGFyaWVzKCk7CiAKIHBy
aXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzU1ZHQ29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgRmxvYXRSZWN0IG1fb2JqZWN0Qm91bmRpbmdC
b3g7CiAgICAgYm9vbCBtX29iamVjdEJvdW5kaW5nQm94VmFsaWQ7CiAgICAgRmxvYXRSZWN0IG1f
c3Ryb2tlQm91bmRpbmdCb3g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0VsbGlwc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRWxsaXBzZS5oCmluZGV4IGQ2MmE1NjA0ZWFiZTM2OThmOTkxMzNhMjE1NDA1NDNiZGZm
Y2YyMGQuLjMwMjdmMTBjMGVkZTg4N2RkMGNmZWVkMmNlMDI4M2VlNzA1M2MyMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCkBAIC0zNywx
NSArMzcsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlclNWR0VsbGlwc2UoKTsKIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJl
dHVybiAiUmVuZGVyU1ZHRWxsaXBzZSI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHRWxsaXBzZSI7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCk7Ci0gICAgdmlydHVhbCBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3VzZVBhdGhGYWxsYmFjayA/IFJlbmRlclNW
R1NoYXBlOjppc0VtcHR5KCkgOiBtX2ZpbGxCb3VuZGluZ0JveC5pc0VtcHR5KCk7IH07CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdXNlUGF0aEZhbGxi
YWNrID8gUmVuZGVyU1ZHU2hhcGU6OmlzRW1wdHkoKSA6IG1fZmlsbEJvdW5kaW5nQm94LmlzRW1w
dHkoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlcmluZ0Rpc2FibGVkKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25z
dDsKLSAgICB2aXJ0dWFsIHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxv
YXRQb2ludCYpOwotICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudEZpbGxDb250YWlucyhj
b25zdCBGbG9hdFBvaW50JiwgY29uc3QgV2luZFJ1bGUpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9p
bnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRGaWxsQ29udGFp
bnMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFdpbmRSdWxlKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIGNhbGN1bGF0ZVJhZGlpQW5kQ2VudGVyKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCmlu
ZGV4IDRlNjdjYWU5MmQzZDUyYmI4NGFhMjU0MDljNzBhNzdjYWE5MTcyMGQuLmM3NWJiZmYxNGRh
NDg5NDI4Y2I5N2Y4ZDQwN2RhZTRjMDA2YzQ3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCkBAIC0zNywzNSArMzcs
MzUgQEAgcHVibGljOgogCiAgICAgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQmIGZvcmVpZ25PYmpl
Y3RFbGVtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBj
bGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29t
cHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgRmxvYXRSZWN0IG9iamVj
dEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV92
aWV3cG9ydC5zaXplKCkpOyB9Ci0gICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdC
b3goKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3ZpZXdwb3J0LnNp
emUoKSk7IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGlu
YXRlcygpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fdmlld3BvcnQu
c2l6ZSgpKTsgfQorICAgIHZpcnR1YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV92aWV3cG9ydC5z
aXplKCkpOyB9CisgICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3ZpZXdwb3J0LnNp
emUoKSk7IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGlu
YXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1f
dmlld3BvcnQuc2l6ZSgpKTsgfQogCi0gICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbik7CisgICAgdmlydHVhbCBib29sIG5vZGVBdEZs
b2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3Vs
dCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29y
ZGluYXRlc0ZsYWdzID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGlu
Z1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9w
QXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIG92ZXJyaWRl
IHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KIAogcHJpdmF0ZToKKyAgICB2aXJ0
dWFsIGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZvaWQgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAgICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclNWR0ZvcmVpZ25PYmplY3QiOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9naWNh
bFdpZHRoKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0
KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2Fs
RXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBt
X2xvY2FsVHJhbnNmb3JtOyB9CisgICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxv
Y2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEFmZmlu
ZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9j
YWxUcmFuc2Zvcm07IH0KIAogICAgIGJvb2wgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA6IDE7CiAg
ICAgRmxvYXRSZWN0IG1fdmlld3BvcnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ltYWdlLmgKaW5kZXggODYxZDEzMjJhNzEyOTI1MGVhZDBhZjkyZjI3YTRiMjAy
YzBiNDQwNy4uMDEzYTA0ZjU4YjA0NmEwNDZiZjRmNTJjNTYwN2Y5YmZhZGQ1MmU1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaApAQCAtNDIsOSAr
NDIsOSBAQCBwdWJsaWM6CiAgICAgU1ZHSW1hZ2VFbGVtZW50JiBpbWFnZUVsZW1lbnQoKSBjb25z
dDsKIAogICAgIGJvb2wgdXBkYXRlSW1hZ2VWaWV3cG9ydCgpOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKSB7IG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlID0gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKSBvdmVycmlk
ZSB7IG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBu
ZWVkc0JvdW5kYXJpZXNVcGRhdGUoKSBvdmVycmlkZSB7IHJldHVybiBtX25lZWRzQm91bmRhcmll
c1VwZGF0ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsg
bV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNUcmFuc2Zvcm1VcGRhdGUoKSBvdmVycmlkZSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0
cnVlOyB9CiAKICAgICBSZW5kZXJJbWFnZVJlc291cmNlJiBpbWFnZVJlc291cmNlKCkgeyByZXR1
cm4gKm1faW1hZ2VSZXNvdXJjZTsgfQogICAgIGNvbnN0IFJlbmRlckltYWdlUmVzb3VyY2UmIGlt
YWdlUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiAqbV9pbWFnZVJlc291cmNlOyB9CkBAIC01NSwy
OSArNTUsMjkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9
IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJSZW5kZXJTVkdJbWFnZSI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHSW1hZ2UiOyB9CiAgICAg
dmlydHVhbCBib29sIGlzU1ZHSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxU
b1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAg
ICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KIAotICAgIHZpcnR1
YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RC
b3VuZGluZ0JveDsgfQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkg
Y29uc3QgeyByZXR1cm4gbV9vYmplY3RCb3VuZGluZ0JveDsgfQotICAgIHZpcnR1YWwgRmxvYXRS
ZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXBh
aW50Qm91bmRpbmdCb3g7IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0Jv
eCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0KKyAgICB2
aXJ0dWFsIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50
UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVwYWlu
dEJvdW5kaW5nQm94OyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2Fs
Q29vcmRpbmF0ZXNFeGNsdWRpbmdTVkdTaGFkb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3JlcGFpbnRCb3VuZGluZ0JveEV4Y2x1ZGluZ1NoYWRvdzsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBh
ZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWludENvbnRh
aW5lciA9IDApIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFw
cGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGltYWdl
Q2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIGxheW91
dCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlQnVmZmVyZWRGb3Jl
Z3JvdW5kKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFy
ZW50LCBIaXRUZXN0QWN0aW9uKTsKKyAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBw
b2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgQWZm
aW5lVHJhbnNmb3JtIGxvY2FsVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFRyYW5z
Zm9ybTsgfQorICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsVHJhbnNmb3JtKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQogICAgIHZvaWQgY2FsY3Vs
YXRlSW1hZ2VWaWV3cG9ydCgpOwogCiAgICAgYm9vbCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSA6
IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Bh
dGguaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oCmluZGV4
IDQ0ZmQxNzI2NzVkYWUxZGJhMTJmNzBmN2VhYmU1NzFiMjNkZjkzM2QuLmVhNmVjYzIzNWU5OGY1
ODUxYTM2NTNiYWEyMWY2ZWFkZjc3OGJmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUGF0aC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdQYXRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0
dXJuICJSZW5kZXJTVkdQYXRoIjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdQYXRoIjsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICBGbG9hdFJl
Y3QgY2FsY3VsYXRlVXBkYXRlZFN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oCmluZGV4IGYwMmRmY2Y3ODczNDZl
YWQ2NzRiNjI4Y2MwNDExMjNiMmFhNmYyZjcuLjRkYTFiM2I5ODJhMzBjMGE4YTBiNDQ1ZGYzY2Mx
YmZhMDkwMzc3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVjdC5oCkBAIC00MywxNSArNDMsMTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGdy
YXBoaWNzRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR1JlY3QiOyB9CisgICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclNWR1JlY3QiOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2hhcGVGcm9tRWxlbWVu
dCgpOwotICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV91c2VQYXRo
RmFsbGJhY2sgPyBSZW5kZXJTVkdTaGFwZTo6aXNFbXB0eSgpIDogbV9maWxsQm91bmRpbmdCb3gu
aXNFbXB0eSgpOyB9OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3VzZVBhdGhGYWxsYmFjayA/IFJlbmRlclNWR1NoYXBlOjppc0VtcHR5KCkgOiBtX2Zp
bGxCb3VuZGluZ0JveC5pc0VtcHR5KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJpbmdE
aXNhYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3Jh
cGhpY3NDb250ZXh0KikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBo
aWNzQ29udGV4dCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudFN0cm9r
ZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBl
bmRlbnRGaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFdpbmRSdWxlKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0IG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRTdHJva2VDb250
YWlucyhjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHNoYXBl
RGVwZW5kZW50RmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBXaW5kUnVsZSkg
Y29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1faW5uZXJTdHJva2VS
ZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmgKaW5kZXggZTAwODBlMGQ1Mjk0MGQ5MThhMDk5NjQ5ZjY0MGEzZTQx
OWY5MmM1Ny4uY2EwNzJjYWFmYzA4ZWEyNGExNGE2Y2NiZWI5ODBjN2ZkZDhhOTY4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
Q2xpcHBlci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGFwcGx5Q2xpcHBp
bmdUb0NvbnRleHQoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
UmVjdCYsIEdyYXBoaWNzQ29udGV4dCopOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlc291cmNl
Qm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBDbGlw
cGVyUmVzb3VyY2VUeXBlOyB9CisgICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVz
b3VyY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ2xpcHBlclJlc291cmNlVHlwZTsg
fQogICAgIAogICAgIGJvb2wgaGl0VGVzdENsaXBDb250ZW50KGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UG9pbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IGU4NWM3OTQ0MDFkMDllNDg3MGNi
MTJhMTY1YmQ3YzZhMWU1NzQ5MmUuLjk1YmQxMDAyZGMyNTJkZmMzY2Q4Y2Q5YmQ2NGYwNjI0YmQx
Yjg1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKFJlbmRlck9iamVjdCosIGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CisgICAgdmlydHVhbCBSZW5kZXJT
VkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc19y
ZXNvdXJjZVR5cGU7IH0KICAgICBzdGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHNfcmVzb3Vy
Y2VUeXBlOwogCiAgICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb24oUmVuZGVyT2JqZWN0KikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKaW5kZXggMmY4ZGEzYTk2NTExY2Y2N2I2
MDFlMzkxYzM2MGJhN2VjMTYyZmEzYS4uZGY0NzU5OGRiYjNjYzZmYzA2MzY3MWVkODg3NjgyNjE0
YWM1OWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaApAQCAtMzksMTAgKzM5LDkg
QEAgcHVibGljOgogICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKICAg
ICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmIGZpbHRlclByaW1pdGl2ZUVs
ZW1lbnQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUiOyB9CiAKICAgICAvLyBUaGV5IGRlcGVuZCBv
biB0aGUgUmVuZGVyT2JqZWN0IGFyZ3VtZW50IG9mIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjph
cHBseVJlc291cmNlLgogICAgIHN0YXRpYyBGbG9hdFJlY3QgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0
aXZlU3VicmVnaW9uKEZpbHRlckVmZmVjdCYpOwpAQCAtNTUsNiArNTQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclNWR1Jlc291cmNlRmlsdGVyKj4oZmlsdGVyKS0+cHJp
bWl0aXZlQXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBhdHRyaWJ1dGUpOwogICAgIH0KIHByaXZhdGU6
CisgICAgdmlydHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxl
dGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5oCmluZGV4IGMxZjUyYjdkY2RlNTFi
N2Q0Y2VmM2ZkZjlkOGNkZWQ2OWI0MTEzZjEuLjhhYWQzZmY0MjFjYjI5MjAwOTY2OTQxYzUxMWZk
MmIxNDU1YzAxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5oCkBAIC0zNCwxMyArMzQs
MTMgQEAgcHVibGljOgogCiAgICAgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50JiBsaW5lYXJHcmFk
aWVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmdyYWRpZW50RWxlbWVudCgpKTsgfQog
Ci0gICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qg
eyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNl
VHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzX3Jlc291cmNlVHlw
ZTsgfQogICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgc19yZXNvdXJjZVR5cGU7CiAK
LSAgICB2aXJ0dWFsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygpIGNv
bnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5ncmFkaWVudFVuaXRzKCk7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgY2FsY3VsYXRlR3JhZGllbnRUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0pIHsgdHJhbnNmb3JtID0gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VHJhbnNmb3JtKCk7IH0KKyAg
ICB2aXJ0dWFsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlcy5ncmFkaWVudFVuaXRzKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgY2FsY3VsYXRlR3JhZGllbnRUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtJiB0
cmFuc2Zvcm0pIG92ZXJyaWRlIHsgdHJhbnNmb3JtID0gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VHJh
bnNmb3JtKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgY29sbGVjdEdyYWRpZW50QXR0cmlidXRlcygp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBidWlsZEdyYWRpZW50KEdyYWRpZW50RGF0YSop
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBidWlsZEdyYWRpZW50KEdyYWRpZW50RGF0YSopIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50KGNvbnN0IExpbmVhckdy
YWRpZW50QXR0cmlidXRlcyYpIGNvbnN0OwogICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQoY29uc3Qg
TGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmgKaW5kZXggNjM2YTM0
ZWNiOTJlZDg3OWIyNmIxOWI5MDkzMjljYTliYmIyZWYyMi4uMWE4ZDA4Mzg3ODhiYTFmY2Q4MzZj
NWQwMDNjMjhkMDI0YzJjNjllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaApAQCAtNDUsMTEgKzQ1LDExIEBAIHB1
YmxpYzoKICAgICAvLyBDYWxjdWxhdGVzIG1hcmtlciBib3VuZGFyaWVzLCBtYXBwZWQgdG8gdGhl
IHRhcmdldCBlbGVtZW50J3MgY29vcmRpbmF0ZSBzcGFjZQogICAgIEZsb2F0UmVjdCBtYXJrZXJC
b3VuZGFyaWVzKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbWFya2VyVHJhbnNmb3JtYXRpb24pIGNv
bnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYpOwot
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY1ZpZXdwb3J0
KCk7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgY2FsY1ZpZXdwb3J0KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hcmtlclRyYW5zZm9ybWF0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmIG9yaWdpbiwgZmxvYXQgYW5nbGUsIGZsb2F0IHN0cm9rZVdpZHRoKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgYm9vbCBhcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5k
ZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9ydCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIGZsb2F0IGFuZ2xl
KCkgY29uc3Q7CiAgICAgU1ZHTWFya2VyVW5pdHNUeXBlIG1hcmtlclVuaXRzKCkgY29uc3QgeyBy
ZXR1cm4gbWFya2VyRWxlbWVudCgpLm1hcmtlclVuaXRzKCk7IH0KIAotICAgIHZpcnR1YWwgUmVu
ZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHNfcmVzb3Vy
Y2VUeXBlOyB9CisgICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KICAgICBzdGF0aWMg
UmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHNfcmVzb3VyY2VUeXBlOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5oCmluZGV4IGE1MjcyNmViOTIxMmNlMDBkZTRlNWVmNzYyYjdmMmY3ZjliM2Y5ZGYuLjg5YjMw
NWY2Y2IzZTU0ODE3MGY0M2JiY2E5MGM5ODFmNTVlYjJlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKQEAgLTUw
LDcgKzUwLDcgQEAgcHVibGljOgogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgbWFza1Vu
aXRzKCkgY29uc3QgeyByZXR1cm4gbWFza0VsZW1lbnQoKS5tYXNrVW5pdHMoKTsgfQogICAgIFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgbWFza0NvbnRlbnRVbml0cygpIGNvbnN0IHsgcmV0dXJu
IG1hc2tFbGVtZW50KCkubWFza0NvbnRlbnRVbml0cygpOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRl
clNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNl
VHlwZTsgfQorICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJl
bmRlclNWR1Jlc291cmNlVHlwZSBzX3Jlc291cmNlVHlwZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVy
bi5oCmluZGV4IGY2NmQ1NTViNzViN2FjN2Q2NWI1YzQwYzNlZDY0YjY5NTE2OGVlNGYuLmYxZmZj
NDQzNWI5YTJkNmI5NGRlOWM3YjdhOGUwMjNkOTQ5NjE5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaApAQCAt
NTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBcHBseVJlc291cmNl
KFJlbmRlckVsZW1lbnQmLCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3Vy
Y2VNb2RlLCBjb25zdCBQYXRoKiwgY29uc3QgUmVuZGVyU1ZHU2hhcGUqKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIEZsb2F0UmVjdCByZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IFJlbmRlck9iamVj
dCYpIG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVjdCgpOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRl
clNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNl
VHlwZTsgfQorICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJl
bmRlclNWR1Jlc291cmNlVHlwZSBzX3Jlc291cmNlVHlwZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxH
cmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVJhZGlhbEdyYWRpZW50LmgKaW5kZXggOTYyMDMyODk3ZjM0Nzc0OTJlY2UxMDRhM2E2Y2QyMGE1
MzQ5MzUwNC4uZjVhNjU0MzhjYjRkYzdmYjVmMDdlZTBiOTU5MzVhNDc4OTEyYzBlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlh
bEdyYWRpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKQEAgLTM2LDEyICszNiwxMiBAQCBwdWJsaWM6CiAKICAg
ICBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQmIHJhZGlhbEdyYWRpZW50RWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIGRvd25jYXN0PFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudD4oUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudDo6Z3JhZGllbnRFbGVtZW50KCkpOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRl
clNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNl
VHlwZTsgfQorICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJl
bmRlclNWR1Jlc291cmNlVHlwZSBzX3Jlc291cmNlVHlwZTsKIAotICAgIHZpcnR1YWwgU1ZHVW5p
dFR5cGVzOjpTVkdVbml0VHlwZSBncmFkaWVudFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRy
aWJ1dGVzLmdyYWRpZW50VW5pdHMoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVHcmFk
aWVudFRyYW5zZm9ybShBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkgeyB0cmFuc2Zvcm0gPSBt
X2F0dHJpYnV0ZXMuZ3JhZGllbnRUcmFuc2Zvcm0oKTsgfQotICAgIHZpcnR1YWwgdm9pZCBidWls
ZEdyYWRpZW50KEdyYWRpZW50RGF0YSopIGNvbnN0OworICAgIHZpcnR1YWwgU1ZHVW5pdFR5cGVz
OjpTVkdVbml0VHlwZSBncmFkaWVudFVuaXRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9h
dHRyaWJ1dGVzLmdyYWRpZW50VW5pdHMoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVH
cmFkaWVudFRyYW5zZm9ybShBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkgb3ZlcnJpZGUgeyB0
cmFuc2Zvcm0gPSBtX2F0dHJpYnV0ZXMuZ3JhZGllbnRUcmFuc2Zvcm0oKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBidWlsZEdyYWRpZW50KEdyYWRpZW50RGF0YSopIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgRmxvYXRQb2ludCBjZW50ZXJQb2ludChjb25zdCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMm
KSBjb25zdDsKICAgICBGbG9hdFBvaW50IGZvY2FsUG9pbnQoY29uc3QgUmFkaWFsR3JhZGllbnRB
dHRyaWJ1dGVzJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5oCmluZGV4IGZmNTQ4ZWFjOTkwOTNmM2IzMmNjODUxYWU5ODE5ODllN2ZmZDQzZDUu
LmFjZTkyM2VlMjU4ZjIxMWRmNjFiOTI2N2VhNDE4NzYyODI1ZjZkZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCkBAIC05MCw3ICs5MCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX29iamVjdEJvdW5kaW5nQm94OyB9CiAgICAgdmlydHVhbCBGbG9h
dFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3N0cm9r
ZUJvdW5kaW5nQm94OyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2Fs
Q29vcmRpbmF0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlcGFpbnRCb3VuZGluZ0Jv
eDsgfQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVz
RXhjbHVkaW5nU1ZHU2hhZG93KCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3hF
eGNsdWRpbmdTaGFkb3c7IH0KKyAgICBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRp
bmF0ZXNFeGNsdWRpbmdTVkdTaGFkb3coKSBjb25zdCB7IHJldHVybiBtX3JlcGFpbnRCb3VuZGlu
Z0JveEV4Y2x1ZGluZ1NoYWRvdzsgfQogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlv
biYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zm
c2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oCmluZGV4IGU5NzJjYmVjNWRjZmRkMDRiNWFmZmU4OWNh
OWM1Y2ZjOTUzMTY2NWIuLjNmZDk3OTcxNWQ4NjVlMTdiY2E1NGJmNGM3NjIxOTM4MDQzOWRjYjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKQEAg
LTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZ3JhcGhpY3NFbGVt
ZW50KCkgY29uc3QgPSBkZWxldGU7Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR1RTcGFuIjsgfQorICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdUU3Bh
biI7IH0KIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0LmgKaW5kZXggMDdiMTgxM2E2M2YxZmFjYmQ2MTg3ZjFkNDI5MTA4OGI4MzFjNWE1MS4uZDk2
MGU3ZTBiNTA4MDA3MjY1YTg1YTBhYzcwZDNmNzY4MzdiZWM2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKQEAgLTM5LDEyICszOSwxMiBAQCBwdWJs
aWM6CiAKICAgICBTVkdUZXh0RWxlbWVudCYgdGV4dEVsZW1lbnQoKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5k
ZXJTdHlsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBS
ZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
dm9pZCBzZXROZWVkc1Bvc2l0aW9uaW5nVmFsdWVzVXBkYXRlKCkgeyBtX25lZWRzUG9zaXRpb25p
bmdWYWx1ZXNVcGRhdGUgPSB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNm
b3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWVkc1RyYW5z
Zm9ybVVwZGF0ZSA9IHRydWU7IH0KICAgICB2b2lkIHNldE5lZWRzVGV4dE1ldHJpY3NVcGRhdGUo
KSB7IG1fbmVlZHNUZXh0TWV0cmljc1VwZGF0ZSA9IHRydWU7IH0KLSAgICB2aXJ0dWFsIEZsb2F0
UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0OworICAgIHZpcnR1YWwg
RmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBzdGF0aWMgUmVuZGVyU1ZHVGV4dCogbG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9y
KFJlbmRlck9iamVjdCYpOwogICAgIHN0YXRpYyBjb25zdCBSZW5kZXJTVkdUZXh0KiBsb2NhdGVS
ZW5kZXJTVkdUZXh0QW5jZXN0b3IoY29uc3QgUmVuZGVyT2JqZWN0Jik7CkBAIC02NCwxOCArNjQs
MTggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0
ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
eyByZXR1cm4gIlJlbmRlclNWR1RleHQiOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU1ZHVGV4dCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHVGV4dCI7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNTVkdUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9u
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFy
ZW50LCBIaXRUZXN0QWN0aW9uKTsKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlv
bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKik7CisgICAg
dmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRU
ZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlv
bikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXll
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJl
cGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0Jiwg
Ym9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBvdmVycmlkZTsKQEAgLTgzLDE2ICs4MywxNiBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBN
YXBDb29yZGluYXRlc0ZsYWdzID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9
IDApIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNo
TWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9y
VG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3Jl
Q2hpbGQgPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGls
ZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IG51bGxwdHIpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9y
bSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAg
ICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFs
IEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fbG9jYWxUcmFuc2Zvcm07IH0KICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxSb290SW5s
aW5lQm94PiBjcmVhdGVSb290SW5saW5lQm94KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJl
bmRlckJsb2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVGaXJzdExldHRlcigpOworICAgIHZpcnR1YWwgUmVuZGVyQmxvY2sqIGZpcnN0TGluZUJsb2Nr
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZpcnN0TGV0dGVyKCkg
b3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZEhhbmRsZVN1YnRyZWVNdXRhdGlvbnMoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
cmFuc2Zvcm1hYmxlQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaAppbmRleCA2N2QwYTU2N2JkMjRlOWI5YzE5
YTNjMDhjM2EzNjc4YmYxODgwMjE1Li45ZWRhYmVlZTcxMzI0NzY5NGM2ZmY4ODc3Yzk3ZjBkNDEw
YTRkNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RyYW5zZm9ybWFibGVDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaApAQCAtMzIsMTUgKzMyLDE1IEBA
IHB1YmxpYzoKICAgICBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR0dyYXBoaWNz
RWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKICAgICBTVkdHcmFwaGljc0VsZW1lbnQm
IGdyYXBoaWNzRWxlbWVudCgpIHsgcmV0dXJuIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4o
UmVuZGVyU1ZHQ29udGFpbmVyOjplbGVtZW50KCkpOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZp
cnR1YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVk
c1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKCkgeyByZXR1cm4gbV9kaWRU
cmFuc2Zvcm1Ub1Jvb3RVcGRhdGU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0
ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbV9kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGU7IH0KIAogcHJpdmF0
ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKLSAgICB2aXJ0dWFsIGJvb2wg
Y2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0oKTsKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBs
b2NhbFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2
aXJ0dWFsIGJvb2wgY2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0oKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KIAogICAgIGJvb2wgbV9uZWVkc1RyYW5zZm9ybVVwZGF0
ZSA6IDE7CiAgICAgYm9vbCBtX2RpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSA6IDE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFp
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29u
dGFpbmVyLmgKaW5kZXggY2M1MjQ4NjEyZjgxMmU2YjllNjk1YmQzOWMxYTFmNmNjYzM5MWU3Zi4u
ZjYyNGY1ZjQ3ZGNkYmE4Yzg5YTIxODljOGJmMGNjZWViY2NiY2QwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWlu
ZXIuaApAQCAtMzgsMjcgKzM4LDI3IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3Qgdmlld3BvcnQo
KSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0OyB9CiAKICAgICBib29sIGlzTGF5b3V0U2l6ZUNo
YW5nZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQ7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKCkgeyByZXR1cm4gbV9kaWRUcmFuc2Zv
cm1Ub1Jvb3RVcGRhdGU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZGlkVHJhbnNmb3JtVG9Sb290VXBk
YXRlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGU7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBkZXRlcm1pbmVJZkxheW91dFNpemVDaGFuZ2VkKCk7Ci0gICAgdmly
dHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBk
YXRlID0gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXRlcm1pbmVJZkxheW91dFNpemVDaGFu
Z2VkKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRl
KCkgb3ZlcnJpZGUgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNTVkdWaWV3cG9ydENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAi
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIiOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZHVmll
d3BvcnRDb250YWluZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIjsgfQogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdw
b3J0VHJhbnNmb3JtKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVG9QYXJlbnRU
cmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1Bh
cmVudFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUb1BhcmVudFRy
YW5zZm9ybTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNhbGNWaWV3cG9ydCgpOwotICAgIHZpcnR1
YWwgYm9vbCBjYWxjdWxhdGVMb2NhbFRyYW5zZm9ybSgpOworICAgIHZpcnR1YWwgdm9pZCBjYWxj
Vmlld3BvcnQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlTG9jYWxUcmFu
c2Zvcm0oKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseVZpZXdwb3J0Q2xpcChQ
YWludEluZm8mKTsKLSAgICB2aXJ0dWFsIGJvb2wgcG9pbnRJc0luc2lkZVZpZXdwb3J0Q2xpcChj
b25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlW
aWV3cG9ydENsaXAoUGFpbnRJbmZvJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHBvaW50
SXNJbnNpZGVWaWV3cG9ydENsaXAoY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCkgb3Zl
cnJpZGU7CiAKICAgICBGbG9hdFJlY3QgbV92aWV3cG9ydDsKICAgICBtdXRhYmxlIEFmZmluZVRy
YW5zZm9ybSBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCmluZGV4IDdiN2Q4NTdmMTJmOWM4OTkwNzgw
Zjc5MTVkNjNhYjY3OWY3MjliYmIuLjg1OWJmZTI4NTY1NjM1MDM1ZmQ1NmEwNTA0Yjg0MzlhYmU2
YjRjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5l
VGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4
dEJveC5oCkBAIC0zNywyOCArMzcsMjggQEAgcHVibGljOgogCiAgICAgUmVuZGVyU1ZHSW5saW5l
VGV4dCYgcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxSZW5kZXJTVkdJbmxpbmVU
ZXh0PihJbmxpbmVUZXh0Qm94OjpyZW5kZXJlcigpKTsgfQogCi0gICAgdmlydHVhbCBmbG9hdCB2
aXJ0dWFsTG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbEhlaWdodDsgfQor
ICAgIHZpcnR1YWwgZmxvYXQgdmlydHVhbExvZ2ljYWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2xvZ2ljYWxIZWlnaHQ7IH0KICAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoZmxv
YXQgaGVpZ2h0KSB7IG1fbG9naWNhbEhlaWdodCA9IGhlaWdodDsgfQogCi0gICAgdmlydHVhbCBp
bnQgc2VsZWN0aW9uVG9wKCkgeyByZXR1cm4gdG9wKCk7IH0KLSAgICB2aXJ0dWFsIGludCBzZWxl
Y3Rpb25IZWlnaHQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKG1fbG9naWNhbEhl
aWdodCkpOyB9Ci0gICAgdmlydHVhbCBpbnQgb2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgeCwgYm9v
bCBpbmNsdWRlUGFydGlhbEdseXBocyA9IHRydWUpIGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQg
cG9zaXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkgY29uc3Q7CisgICAgaW50IHNlbGVjdGlvblRv
cCgpIHsgcmV0dXJuIHRvcCgpOyB9CisgICAgaW50IHNlbGVjdGlvbkhlaWdodCgpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4oY2VpbGYobV9sb2dpY2FsSGVpZ2h0KSk7IH0KKyAgICB2aXJ0dWFs
IGludCBvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCB4LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhz
ID0gdHJ1ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBmbG9hdCBwb3NpdGlvbkZvck9m
ZnNldChpbnQgb2Zmc2V0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcGFpbnRTZWxlY3Rp
b25CYWNrZ3JvdW5kKFBhaW50SW5mbyYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBs
aW5lQm90dG9tKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGxvY2FsU2VsZWN0aW9uUmVjdChpbnQgc3Rh
cnRQb3NpdGlvbiwgaW50IGVuZFBvc2l0aW9uKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wg
bWFwU3RhcnRFbmRQb3NpdGlvbnNJbnRvRnJhZ21lbnRDb29yZGluYXRlcyhjb25zdCBTVkdUZXh0
RnJhZ21lbnQmLCBpbnQmIHN0YXJ0UG9zaXRpb24sIGludCYgZW5kUG9zaXRpb24pIGNvbnN0Owog
Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgY2FsY3VsYXRlQm91bmRhcmllcygpIGNvbnN0OworICAg
IHZpcnR1YWwgRmxvYXRSZWN0IGNhbGN1bGF0ZUJvdW5kYXJpZXMoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZvaWQgY2xlYXJUZXh0RnJhZ21lbnRzKCkgeyBtX3RleHRGcmFnbWVudHMuY2xlYXIo
KTsgfQogICAgIFZlY3RvcjxTVkdUZXh0RnJhZ21lbnQ+JiB0ZXh0RnJhZ21lbnRzKCkgeyByZXR1
cm4gbV90ZXh0RnJhZ21lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPFNWR1RleHRGcmFnbWVudD4m
IHRleHRGcmFnbWVudHMoKSBjb25zdCB7IHJldHVybiBtX3RleHRGcmFnbWVudHM7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBkaXJ0eU93bkxpbmVCb3hlcygpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZp
cnR1YWwgdm9pZCBkaXJ0eUxpbmVCb3hlcygpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwg
dm9pZCBkaXJ0eU93bkxpbmVCb3hlcygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXJ0
eUxpbmVCb3hlcygpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzdGFydHNOZXdUZXh0Q2h1bmsoKSBj
b25zdCB7IHJldHVybiBtX3N0YXJ0c05ld1RleHRDaHVuazsgfQogICAgIHZvaWQgc2V0U3RhcnRz
TmV3VGV4dENodW5rKGJvb2wgbmV3VGV4dENodW5rKSB7IG1fc3RhcnRzTmV3VGV4dENodW5rID0g
bmV3VGV4dENodW5rOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1Jvb3RJbmxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9v
dElubGluZUJveC5oCmluZGV4IGIzN2UwNGEyMWRjYjMzYWE4NTE1YzE5NTVhN2JiNTFiN2NmY2Ey
YTYuLmVlYTMwZjUwNzYzNjk2MmE4M2JkMWIzYjc1YjM0ZTA1Y2ZlZGE5MTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5oCkBAIC0zOCwxNyAr
MzgsMTcgQEAgcHVibGljOgogCiAgICAgUmVuZGVyU1ZHVGV4dCYgcmVuZGVyU1ZHVGV4dCgpOwog
Ci0gICAgdmlydHVhbCBmbG9hdCB2aXJ0dWFsTG9naWNhbEhlaWdodCgpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsIHsgcmV0dXJuIG1fbG9naWNhbEhlaWdodDsgfQorICAgIHZpcnR1YWwgZmxvYXQgdmly
dHVhbExvZ2ljYWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvZ2ljYWxIZWln
aHQ7IH0KICAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoZmxvYXQgaGVpZ2h0KSB7IG1fbG9naWNh
bEhlaWdodCA9IGhlaWdodDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYs
IGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVC
b3R0b20pIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8m
LCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5l
Qm90dG9tKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY29tcHV0ZVBlckNoYXJhY3RlckxheW91dElu
Zm9ybWF0aW9uKCk7CiAKICAgICBJbmxpbmVCb3gqIGNsb3Nlc3RMZWFmQ2hpbGRGb3JQb3NpdGlv
bihjb25zdCBMYXlvdXRQb2ludCYpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1NW
R1Jvb3RJbmxpbmVCb3goKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzU1ZHUm9vdElubGluZUJveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KICAgICB2b2lkIHJlb3JkZXJWYWx1ZUxpc3RzKFZlY3RvcjxTVkdUZXh0TGF5
b3V0QXR0cmlidXRlcyo+Jik7CiAgICAgdm9pZCBsYXlvdXRDaGFyYWN0ZXJzSW5UZXh0Qm94ZXMo
SW5saW5lRmxvd0JveCosIFNWR1RleHRMYXlvdXRFbmdpbmUmKTsKICAgICB2b2lkIGxheW91dENo
aWxkQm94ZXMoSW5saW5lRmxvd0JveCosIEZsb2F0UmVjdCogPSAwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240306</attachid>
            <date>2014-10-22 16:57:07 -0700</date>
            <delta_ts>2014-10-22 17:33:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137984-20141022165713.patch</filename>
            <type>text/plain</type>
            <size>118156</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGM3MDc0YTQ2ZGI4YTQ3
YmJjN2I3NTVlYmMyMTJiOTI0ODMxY2MyNC4uMjA0ODUyZWY1M2Q3Y2IyN2U0MjU4NzJkNTI0OGQx
ZmZmYWYwYTQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEyNCBAQAogMjAxNC0xMC0yMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIENsZWFuIHVwIHZpcnR1YWwg
ZnVuY3Rpb25zIGluIHJlbmRlcmluZy8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENsZWFuIHVwIHZpcnR1YWwgZnVuY3Rpb25zIGluIHJlbmRlcmluZy8g
Ynk6CisgICAgICAgIC0gTWFraW5nIHZpcnR1YWwgZnVuY3Rpb25zIGZpbmFsIHdoZW4gcG9zc2li
bGUKKyAgICAgICAgLSBNYWtpbmcgY2xhc3NlcyBmaW5hbCB3aGVuIHBvc3NpYmxlCisgICAgICAg
IC0gVXNpbmcgJ292ZXJyaWRlJyB3aGVuIGFwcHJvcHJpYXRlCisgICAgICAgIC0gRXhwbGljaXRs
eSBtYXJraW5nIGZ1bmN0aW9ucyAvIGRlc3RydWN0b3JzIGFzIHZpcnR1YWwgd2hlbiB0aGV5IGFy
ZQorICAgICAgICAgIGluaGVyZW50bHkgdmlydHVhbAorICAgICAgICAtIERyb3BwaW5nIHZpcnR1
YWwgZGVzdHJ1Y3RvcnMgd2hlbiB0aGUgY2xhc3MgZG9lcyBub3QgaGF2ZSBzdWJjbGFzc2VzCisg
ICAgICAgICAgYW5kIG1hcmsgdGhlIGNsYXNzIGFzIGZpbmFsLCB0byBnZXQgcmlkIG9mIHVubmVj
ZXNzYXJ5IHZ0YWJsZXMKKyAgICAgICAgLSBNYWtpbmcgaXNYWFgoKSB2aXJ0dWFsIGZ1bmN0aW9u
cyBwcml2YXRlIG9uIFhYWCBjbGFzc2VzIHRvIGF2b2lkCisgICAgICAgICAgdW5uZWNlc3Nhcnkg
dHlwZSBjaGVja3MKKyAgICAgICAgLSBEZS12aXJ0dWFsaXppbmcgc29tZSBmdW5jdGlvbnMgdGhh
dCBkbyBub3QgbmVlZCB0byBiZSB2aXJ0dWFsCisgICAgICAgIC0gRHJvcHBpbmcgZmluYWwgZm9y
IHZpcnR1YWwgZnVuY3Rpb25zIGluIGNsYXNzZXMgYWxyZWFkeSBtYXJrZWQgYXMKKyAgICAgICAg
ICBmaW5hbAorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisg
ICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0NsaXBQYXRo
T3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6dHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6aXNTYW1lVHlwZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL0VsbGlwc2lzQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0ZpeGVk
VGFibGVMYXlvdXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQ29tYmluZVRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlk
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJNYXJxdWVlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlh
Q29udHJvbEVsZW1lbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
Rmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyUXVvdGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnJlbmRlck5hbWUpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclJ1YnlCYXNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp+
UmVuZGVyU2Nyb2xsYmFyVGhlbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OnNjcm9sbGJhclRoaWNrbmVzcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uc1BsYWNlbWVudCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6c3VwcG9ydHNDb250cm9s
VGludHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OnNob3VsZENlbnRlck9uVGh1bWIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YXV0b3Njcm9sbFRpbWVyRGVs
YXkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJl
Z2lzdGVyU2Nyb2xsYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9s
bGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dEZyYWdtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lU2FmYXJpLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6
c3VwcG9ydHNDb250cm9sVGludHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnNob3VsZFNob3dQbGFjZWhvbGRlcldoZW5Gb2N1c2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlkZW8uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9UcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
Y3JpcHRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5o
OgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zaGFwZXMvUG9seWdvblNoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0
ZXJTaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UGVuZGluZ0ltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6IERlbGV0ZWQuCisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdFbGxpcHNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFya2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdy
YWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaDoK
KworMjAxNC0xMC0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAg
IEF2b2lkIGNvbmZ1c2lvbiBiZXR3ZWVuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFibGUoKSAv
IGlzQWNjZXNzaWJpbGl0eVRhYmxlKCkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzg5OQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCAyNjJjNjAwNmY1M2Y4MWZmYzdmYWY4MjFj
OTZlNmQxMTg4M2NjZGY5Li5mOWNlZDZkZjE0Mjg1YTBmOTUyMTYxNDZiNzU0MGU2MjcyOGU4YmVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVu
dC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBib29sIFJlbmRlclNsaWRlclRodW1iOjppc1NsaWRl
clRodW1iKCkgY29uc3QKIAogLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gY2FzY2FkZSBhcHBlYXJh
bmNlIGFuZCBhZGp1c3QgaGVpZ2h0cywgYW5kIGdldCByaWQgb2YgdGhpcyBjbGFzcy4KIC8vIGh0
dHA6Ly93ZWJraXQub3JnL2IvNjI1MzUKLWNsYXNzIFJlbmRlclNsaWRlckNvbnRhaW5lciA6IHB1
YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CitjbGFzcyBSZW5kZXJTbGlkZXJDb250YWluZXIgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgogICAgIFJlbmRlclNsaWRl
ckNvbnRhaW5lcihTbGlkZXJDb250YWluZXJFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKICAgICAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChlbGVtZW50LCBXVEY6
Om1vdmUoc3R5bGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9U
YWJsZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5o
CmluZGV4IDRjMGMzNDBiMjVlMWM0NWZmMTg5YzJkMTNiZjdmZTNjYTgxOTRjMDIuLjJmMzE5ZmVh
OGRhNjcyYzE0MThmODg0MWNiMjI4NWYyZTJjMGE5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgUmVuZGVyVGFibGU7CiBjbGFzcyBSZW5kZXJUYWJsZUNlbGw7CiAKLWNsYXNz
IEF1dG9UYWJsZUxheW91dCA6IHB1YmxpYyBUYWJsZUxheW91dCB7CitjbGFzcyBBdXRvVGFibGVM
YXlvdXQgZmluYWwgOiBwdWJsaWMgVGFibGVMYXlvdXQgewogcHVibGljOgogICAgIGV4cGxpY2l0
IEF1dG9UYWJsZUxheW91dChSZW5kZXJUYWJsZSopOwogICAgIHZpcnR1YWwgfkF1dG9UYWJsZUxh
eW91dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3Bl
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaApp
bmRleCA3OWI2NjVjY2ZkMTZjMDIyMDY3YjU5MDZiZjk2NzJmMTA0NzJkMWQ2Li5lNzIzMWU2Y2E0
MDMyOGVmZTRiMDYyZTI5YTgxMTM3MmNkY2Q2NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaApAQCAtNTIsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2xpcFBhdGhPcGVyYXRpb24mKSBjb25zdCA9
IDA7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJiBvKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CiAKLSAgICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NhbWVU
eXBlKGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiBvLnR5cGUoKSA9
PSBtX3R5cGU7IH0KKyAgICBPcGVyYXRpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KKyAgICBib29sIGlzU2FtZVR5cGUoY29uc3QgQ2xpcFBhdGhPcGVyYXRpb24mIG8pIGNv
bnN0IHsgcmV0dXJuIG8udHlwZSgpID09IG1fdHlwZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZXhw
bGljaXQgQ2xpcFBhdGhPcGVyYXRpb24oT3BlcmF0aW9uVHlwZSB0eXBlKQpAQCAtNjQsNyArNjQs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3BlcmF0aW9uVHlwZSBtX3R5cGU7CiB9OwogCi1jbGFzcyBS
ZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbiA6IHB1YmxpYyBDbGlwUGF0aE9wZXJhdGlvbiB7Citj
bGFzcyBSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDbGlwUGF0aE9w
ZXJhdGlvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVmZXJlbmNlQ2xpcFBh
dGhPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFn
bWVudCkKICAgICB7CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZnJh
Z21lbnQ7CiB9OwogCi1jbGFzcyBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uIDogcHVibGljIENsaXBQ
YXRoT3BlcmF0aW9uIHsKK2NsYXNzIFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24gZmluYWwgOiBwdWJs
aWMgQ2xpcFBhdGhPcGVyYXRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNo
YXBlQ2xpcFBhdGhPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmPEJhc2ljU2hhcGU+IHNoYXBlKQog
ICAgIHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIENTU0JveFR5cGUgbV9yZWZl
cmVuY2VCb3g7CiB9OwogCi1jbGFzcyBCb3hDbGlwUGF0aE9wZXJhdGlvbiA6IHB1YmxpYyBDbGlw
UGF0aE9wZXJhdGlvbiB7CitjbGFzcyBCb3hDbGlwUGF0aE9wZXJhdGlvbiBmaW5hbCA6IHB1Ymxp
YyBDbGlwUGF0aE9wZXJhdGlvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Qm94
Q2xpcFBhdGhPcGVyYXRpb24+IGNyZWF0ZShDU1NCb3hUeXBlIHJlZmVyZW5jZUJveCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCmluZGV4IGYzY2Y4ZGI2ZjFhZmRm
MGY4MGRhMWFmMTA0MmMxMDU1M2JkN2VkYjUuLjk1Nzc1ZDBlZDQ1ZDIxMjdhYmUxMDc1YmFhZWM1
M2YyYjQ3MzM0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNp
c0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCkBAIC0z
MSw3ICszMSw3IEBAIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBFbGxpcHNpc0JveCBmaW5h
bCA6IHB1YmxpYyBJbmxpbmVFbGVtZW50Qm94IHsKIHB1YmxpYzoKICAgICBFbGxpcHNpc0JveChS
ZW5kZXJCbG9ja0Zsb3cmLCBjb25zdCBBdG9taWNTdHJpbmcmIGVsbGlwc2lzU3RyLCBJbmxpbmVG
bG93Qm94KiBwYXJlbnQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHksIGJvb2wgZmlyc3RM
aW5lLCBib29sIGlzVmVydGljYWwsIElubGluZUJveCogbWFya3VwQm94KTsKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxp
bmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRV
bml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRp
b24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0
ZSBzKSB7IG1fc2VsZWN0aW9uU3RhdGUgPSBzOyB9CiAgICAgSW50UmVjdCBzZWxlY3Rpb25SZWN0
KCk7CkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHBhaW50
TWFya3VwQm94KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5
b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIGNvbnN0IFJlbmRlclN0eWxl
Jik7Ci0gICAgdmlydHVhbCBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0K
LSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUo
KSB7IHJldHVybiBtX3NlbGVjdGlvblN0YXRlOyB9CisgICAgaW50IGhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1faGVpZ2h0OyB9CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0
YXRlIHNlbGVjdGlvblN0YXRlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGF0ZTsg
fQogICAgIHZvaWQgcGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0
UG9pbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnQmKTsKICAgICBJbmxpbmVCb3gq
IG1hcmt1cEJveCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRml4ZWRUYWJsZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFi
bGVMYXlvdXQuaAppbmRleCA5ZmE1NmQxNzIyMWE1NWQxNDk2MmYzZWQ1ZjU2NGYyNWE1NjVhNjhl
Li5kN2JjYmQ2NTUzMTA5MzFlYTg4YzA2ZjExZGJkMTIzY2E1NmNiMjMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmgKQEAgLTMwLDEzICszMCwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclRhYmxlOwogCi1jbGFzcyBGaXhlZFRh
YmxlTGF5b3V0IDogcHVibGljIFRhYmxlTGF5b3V0IHsKK2NsYXNzIEZpeGVkVGFibGVMYXlvdXQg
ZmluYWwgOiBwdWJsaWMgVGFibGVMYXlvdXQgewogcHVibGljOgogICAgIGV4cGxpY2l0IEZpeGVk
VGFibGVMYXlvdXQoUmVuZGVyVGFibGUqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50
cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5XaWR0aCwgTGF5b3V0VW5pdCYgbWF4
V2lkdGgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhcHBseVByZWZlcnJlZExvZ2ljYWxX
aWR0aFF1aXJrcyhMYXlvdXRVbml0JiBtaW5XaWR0aCwgTGF5b3V0VW5pdCYgbWF4V2lkdGgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgaW50IGNhbGNXaWR0aEFycmF5
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRWxlbWVudEJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guaAppbmRleCA5
NjFhMDc1NDUzZDVmOTQ3YWVmNDY2NDBkOGFjZWM3NGQ2MjNmZTg0Li41NjYzOTViMmI4ZjNkNTMx
ZGY3YTA2MWYyZmJiNjFkYTUxNjIxYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lRWxlbWVudEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVFbGVtZW50Qm94LmgKQEAgLTQ0LDkgKzQ0LDkgQEAgcHVibGljOgogCiAgICAgUmVuZGVy
Qm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVy
Qm94TW9kZWxPYmplY3Q+KElubGluZUJveDo6cmVuZGVyZXIoKSk7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVMaW5lKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGV4dHJhY3RMaW5l
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGF0dGFjaExpbmUoKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlTGluZSgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwg
dm9pZCBleHRyYWN0TGluZSgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2hMaW5lKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQg
bGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYg
bG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKaW5kZXggYWI3NjM5ZmEx
MmI3MzEzYjhkYWUyZmJjNmRlYWM2NDA4ZGI0NDQ4ZS4uOTY2MWM1NjMzMzMwNDI4OTk4MDIyOTE5
MDEzNjcxZWM4NjBlYzNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuaApAQCAtMjgwLDcgKzI4MCw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJNdWx0aUNvbHVt
bkZsb3dUaHJlYWQqIG11bHRpQ29sdW1uRmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIGhhc1Jh
cmVCbG9ja0Zsb3dEYXRhKCkgPyByYXJlQmxvY2tGbG93RGF0YSgpLT5tX211bHRpQ29sdW1uRmxv
d1RocmVhZCA6IG51bGxwdHI7IH0KICAgICB2b2lkIHNldE11bHRpQ29sdW1uRmxvd1RocmVhZChS
ZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqKTsKICAgICAKLSAgICBib29sIGNvbnRhaW5zRmxv
YXRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mbG9hdGluZ09iamVjdHMgJiYgIW1fZmxv
YXRpbmdPYmplY3RzLT5zZXQoKS5pc0VtcHR5KCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29udGFp
bnNGbG9hdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Zsb2F0aW5nT2JqZWN0cyAmJiAh
bV9mbG9hdGluZ09iamVjdHMtPnNldCgpLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgY29udGFpbnNG
bG9hdChSZW5kZXJCb3gmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVMaW5lcygp
IG92ZXJyaWRlOwpAQCAtMzc2LDggKzM3Niw4IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IGxv
Z2ljYWxIZWlnaHRGb3JDaGlsZEZvckZyYWdtZW50YXRpb24oY29uc3QgUmVuZGVyQm94JiBjaGls
ZCkgY29uc3Q7CiAgICAgYm9vbCBoYXNOZXh0UGFnZShMYXlvdXRVbml0IGxvZ2ljYWxPZmZzZXQs
IFBhZ2VCb3VuZGFyeVJ1bGUgPSBFeGNsdWRlUGFnZUJvdW5kYXJ5KSBjb25zdDsKIAotICAgIHZv
aWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVD
aGlsZCA9IDApIG92ZXJyaWRlOwotICAgIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVy
T2JqZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVj
dCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGNyZWF0ZU11bHRpQ29sdW1uRmxvd1RocmVhZCgpOwogICAgIHZvaWQg
ZGVzdHJveU11bHRpQ29sdW1uRmxvd1RocmVhZCgpOwpAQCAtNDUwLDggKzQ1MCw4IEBAIHByb3Rl
Y3RlZDoKICAgICBMYXlvdXRVbml0IGNvbXB1dGVkQ29sdW1uV2lkdGgoKSBjb25zdDsKICAgICB1
bnNpZ25lZCBjb21wdXRlZENvbHVtbkNvdW50KCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBpc1Rv
cExheW91dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNMZWZ0
TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29s
IGlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBib29sIGlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBtb3ZlRmxvYXRzVG8oUmVuZGVyQmxvY2tGbG93KiB0b0Jsb2NrKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmgKaW5kZXggYTU5NThk
NDA4NDIzYmNmODhmNzIxNTUyYzljMzQ0MTBlY2FmMjY1ZS4uMDFiZTRkNjNkMjZmODNjMmQwZTEx
MjAyZjMwZmFiNTU5ZjQ4YWRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckNvbWJpbmVUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckNvbWJpbmVUZXh0LmgKQEAgLTQ1LDEwICs0NSwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IHZvaWQgbm9kZSgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBib29sIGlzQ29tYmlu
ZVRleHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1
bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IEZvbnQmLCBmbG9hdCB4UG9zaXRp
b24sIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiogZmFsbGJhY2tGb250cyA9IDAsIEds
eXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckNvbWJpbmVUZXh0IjsgfQotICAgIHZpcnR1YWwg
dm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBv
bGRTdHlsZSk7CisgICAgdmlydHVhbCBib29sIGlzQ29tYmluZVRleHQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IEZvbnQmLCBmbG9hdCB4UG9zaXRpb24sIEhhc2hTZXQ8
Y29uc3QgU2ltcGxlRm9udERhdGEqPiogZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cq
ID0gMCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckNvbWJpbmVUZXh0IjsgfQorICAgIHZp
cnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0
eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFJlbmRlcmVkVGV4
dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9j
b21iaW5lRm9udFN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvdW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgK
aW5kZXggYWRmYTg2YmQ0ZTZkNTFhYWVkNDZjZmNkZGE0NjYzMmI1MDI0NWRlYy4uYmYzZDQ0NTYx
Y2MxMjVjODlkNTEyYzdmOTY3YTEyMDM3ZDZiYmI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQ291bnRlci5oCkBAIC00MywxMiArNDMsMTIgQEAgcHVibGljOgogICAgIHZvaWQg
dXBkYXRlQ291bnRlcigpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxCZURl
c3Ryb3llZCgpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNDb3VudGVyKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcg
b3JpZ2luYWxUZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzQ291bnRlcigpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZpcnR1YWwgU3RyaW5nIG9yaWdpbmFsVGV4dCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhm
bG9hdCBsZWFkV2lkdGgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgKaW5kZXggOTQ3NGU4ODk0Yzhj
YmEzZGFiNGNhNGQ0ZWQzNGJlNjUyOTU3NTRjYi4uYzYxYzU4Njk3Zjg5NDkyOTc4YWI0Y2ZmMTVi
NWZlMTE0OTU2MzA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaApAQCAtMzYsMjIgKzM2LDIyIEBAIHB1YmxpYzoK
IAogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50
Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5p
dCBwYWdlSGVpZ2h0ID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlSGVpZ2h0ID0gMCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7CiAgICAgdm9p
ZCBsYXlvdXRWZXJ0aWNhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pOwogCi0gICAgdmlydHVh
bCBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNEZXByZWNhdGVkRmxleGlibGVCb3goKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzU3RyZXRjaGluZ0NoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJldGNoaW5nQ2hpbGRyZW47IH0KKyAgICB2aXJ0dWFsIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1N0cmV0Y2hp
bmdDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc3RyZXRjaGluZ0NoaWxkcmVu
OyB9CiAgICAgdmlydHVhbCBib29sIGNhbkNvbGxhcHNlQW5vbnltb3VzQmxvY2tDaGlsZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIHBsYWNlQ2hpbGQoUmVu
ZGVyQm94KiBjaGlsZCwgY29uc3QgTGF5b3V0UG9pbnQmIGxvY2F0aW9uLCBMYXlvdXRTaXplKiBj
aGlsZExheW91dERlbHRhID0gMCk7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzRGVw
cmVjYXRlZEZsZXhpYmxlQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBt
aW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4
aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgK
aW5kZXggMGJmNzE3MTZmMDM5YjY4NGM0YTViMzVlNGZjZmY4ZGNmZmNhZDg0OC4uMmI2ZWZhYzYx
ODFlNmU4OGVlMWEzZWIxZjYxYmI5Y2YyZjhiMDY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKQEAgLTQ0LDcgKzQ0LDYgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNGbGV4aWJsZUJveCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3Qgb3ZlcnJp
ZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5Db2xsYXBzZUFu
b255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExh
eW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBvdmVycmlkZSBmaW5hbDsKQEAgLTU3LDgg
KzU2LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0hvcml6b250YWxGbG93KCkgY29uc3Q7CiAK
LSAgICBib29sIGlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBpc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNUb3BMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMZWZ0TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNp
Y0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBt
YXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtODYsNiArODUsNyBAQCBwcml2YXRl
OgogICAgIC8vIFVzZSBhbiBpbmxpbmUgY2FwYWNpdHkgb2YgOCwgc2luY2UgZmxleGJveCBjb250
YWluZXJzIHVzdWFsbHkgaGF2ZSBsZXNzIHRoYW4gOCBjaGlsZHJlbi4KICAgICB0eXBlZGVmIFZl
Y3RvcjxMYXlvdXRSZWN0LCA4PiBDaGlsZEZyYW1lUmVjdHM7CiAKKyAgICB2aXJ0dWFsIGJvb2wg
aXNGbGV4aWJsZUJveCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAg
ICBib29sIGhhc09ydGhvZ29uYWxGbG93KFJlbmRlckJveCYgY2hpbGQpIGNvbnN0OwogICAgIGJv
b2wgaXNDb2x1bW5GbG93KCkgY29uc3Q7CiAgICAgYm9vbCBpc0xlZnRUb1JpZ2h0RmxvdygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3Jl
ZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgKaW5kZXgg
NjY1NjU3MTNjZjFmMDdkNmVhOWYxZTg4N2M1MDEwNmQ1YmRiZmRmZS4uOWI2YzhkYjdiOTU4Y2Vj
Mjc5ZmUyOTM1ZmU4MjMxMzUzYjI2MTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnVsbFNjcmVlbi5oCkBAIC0zNiw3ICszNiw2IEBAIGNsYXNzIFJlbmRlckZ1bGxTY3Jl
ZW4gZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgogICAgIFJlbmRl
ckZ1bGxTY3JlZW4oRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgaXNSZW5kZXJGdWxsU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJGdWxsU2NyZWVuIjsgfQogCiAgICAgdm9pZCBzZXRQbGFjZWhvbGRl
cihSZW5kZXJCbG9jayopOwpAQCAtNDcsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bndy
YXBSZW5kZXJlcihib29sJiByZXF1aXJlc1JlbmRlclRyZWVSZWJ1aWxkKTsKIAogcHJpdmF0ZToK
KyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJGdWxsU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlk
ZTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXgg
Y2YxYzczMDcyYmY2MzJkMGI5NmViMTQ4YTkyNTA3YzI4ZDNmN2FjMS4uYmIzNDk0YWE0OTc4Y2Fl
ZTRlNDE4YWM2MDE0ODE1YzU1ODE4NDM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R3JpZC5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKIAogICAgIExheW91dFVuaXQgZ3Jp
ZEFyZWFCcmVhZHRoRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYpIGNvbnN0OwogCi0gICAgdmly
dHVhbCB2b2lkIHBhaW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBmb3JTZWxmLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0
KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDaGlsZHJlbihQYWludElu
Zm8mIGZvclNlbGYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgUGFpbnRJbmZvJiBm
b3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpIG92ZXJyaWRlOwogCiAjaWZuZGVmIE5ERUJVRwog
ICAgIGJvb2wgdHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiwgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmgKaW5kZXggOWU3MWQyZDFkYWMyNzVjNjVhMGNiNDI4NzhjZGViMjQ4
OTY3MGU4MS4uNGZlNmQ2MTI3M2I1NTAzY2I1YzRjN2MwYjE2ZTg1MWVhYTRjZDAwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTc4OSw3ICs3ODksNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCkuc3R5
bGUoKS50cmFuc2Zvcm1TdHlsZTNEKCkgPT0gVHJhbnNmb3JtU3R5bGUzRFByZXNlcnZlM0Q7IH0K
ICAgICBib29sIGhhczNEVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0gJiYg
IW1fdHJhbnNmb3JtLT5pc0FmZmluZSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZmlsdGVyTmVl
ZHNSZXBhaW50KCk7CisgICAgdm9pZCBmaWx0ZXJOZWVkc1JlcGFpbnQoKTsKICAgICBib29sIGhh
c0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCkuaGFzRmlsdGVyKCk7IH0KIAogI2lm
IEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggN2Q5MTg1ZjE5ZjYzMDk0ODIwNGYxODRjNDE4YjkyMzJi
OGQ2MTJkOS4uZmU4ZWI4MzU3ZTk1MGUxOWE3ZjMwMmI4NzQ5NmNlNjZmZjRiMjM5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAtMjE5LDcg
KzIxOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQaXhlbEFsaWdtZW50KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faXNNYWluRnJhbWVSZW5kZXJWaWV3TGF5ZXI7IH0K
IAogI2lmbmRlZiBOREVCVUcKLSAgICB2aXJ0dWFsIHZvaWQgdmVyaWZ5Tm90UGFpbnRpbmcoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgdmVyaWZ5Tm90UGFpbnRpbmcoKSBvdmVycmlkZTsKICNlbmRpZgog
CiAgICAgV0VCQ09SRV9FWFBPUlQgTGF5b3V0UmVjdCBjb250ZW50c0JveCgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4
IDJkNTE5MDFiYjZkODRjMmM2OTkxOTllZjFiZTFiY2NlMGQ0ZTdmNjYuLjY0MjRjZjQ5MGE2ZDdl
NDY5M2Q3MmFkOTY0Y2JiMWM4NzM4ZjMzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTkyLDExICs5MiwxMSBAQCB0eXBlZGVm
IHVuc2lnbmVkIENvbXBvc2l0aW5nUmVhc29uczsKIC8vIAogLy8gVGhlcmUgaXMgb25lIFJlbmRl
ckxheWVyQ29tcG9zaXRvciBwZXIgUmVuZGVyVmlldy4KIAotY2xhc3MgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQsIHB1YmxpYyBHcmFwaGljc0xheWVy
VXBkYXRlckNsaWVudCB7CitjbGFzcyBSZW5kZXJMYXllckNvbXBvc2l0b3IgZmluYWwgOiBwdWJs
aWMgR3JhcGhpY3NMYXllckNsaWVudCwgcHVibGljIEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBS
ZW5kZXJMYXllckNvbXBvc2l0b3IoUmVuZGVyVmlldyYpOwotICAgIH5SZW5kZXJMYXllckNvbXBv
c2l0b3IoKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJMYXllckNvbXBvc2l0b3IoKTsKIAogICAgIC8v
IFJldHVybiB0cnVlIGlmIHRoaXMgUmVuZGVyVmlldyBpcyBpbiAiY29tcG9zaXRpbmcgbW9kZSIg
KGkuZS4gaGFzIG9uZSBvciBtb3JlCiAgICAgLy8gY29tcG9zaXRlZCBSZW5kZXJMYXllcnMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgKaW5k
ZXggMjY1ZjczZjJlYWIxOWFhOThjMDNlZTlhY2MxNjk4NTk2OTk5YmE5Zi4uZjk5ZGUxMGM2YWIw
NzJhOTY3NTlmMzZkNGU2MjdhNjQ5NDliNDg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKFJlbmRlckxheWVyJik7CiAKICAgICBleHBsaWNpdCBG
aWx0ZXJJbmZvKFJlbmRlckxheWVyJik7Ci0gICAgfkZpbHRlckluZm8oKTsKKyAgICB2aXJ0dWFs
IH5GaWx0ZXJJbmZvKCk7CiAKICAgICBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVNvdXJjZVJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX2RpcnR5U291cmNlUmVjdDsgfQogICAgIHZvaWQgZXhwYW5kRGly
dHlTb3VyY2VSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpIHsgbV9kaXJ0eVNvdXJjZVJlY3Qu
dW5pdGUocmVjdCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsu
aAppbmRleCBkMGUzZmU1ZDI5NDcxMmIyMjJjNDljNzNiMjgzYTNmNjdlMDYwZmY0Li5mNWY5NjQz
NTMwN2RmM2M0OTM3MmFiMjdhZjc1ODI1ZDRlNGM1MzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBub2RlKCkgY29uc3QgPSBkZWxldGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNo
aWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5hbCB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQm
KSBvdmVycmlkZSB7IH0KIAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9y
UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGludCBjYXJldE1pbk9mZnNldCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmgKaW5kZXggNmM4Nzk5MzdkMzU1OTgwNGY0
NWQ3MWNkMGI3NzRiOGViZjkwNmMzMi4uODdjMjAyZGFhYjMzM2Q0MTkzZTM3ZDlhNWExZDAxYmZm
YWNmNzlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1
ZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5oCkBAIC01
MywxMSArNTMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVuZGVyTGF5ZXI7CiAK
IC8vIFRoaXMgY2xhc3MgaGFuZGxlcyB0aGUgYXV0by1zY3JvbGxpbmcgb2YgbGF5ZXJzIHdpdGgg
b3ZlcmZsb3c6IG1hcnF1ZWUuCi1jbGFzcyBSZW5kZXJNYXJxdWVlIHsKK2NsYXNzIFJlbmRlck1h
cnF1ZWUgZmluYWwgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbmRlck1hcnF1ZWUpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW5kZXJNYXJx
dWVlKFJlbmRlckxheWVyKik7Ci0gICAgdmlydHVhbCB+UmVuZGVyTWFycXVlZSgpOworICAgIH5S
ZW5kZXJNYXJxdWVlKCk7CiAKICAgICBpbnQgc3BlZWQoKSBjb25zdCB7IHJldHVybiBtX3NwZWVk
OyB9CiAgICAgaW50IG1hcnF1ZWVTcGVlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaAppbmRleCA4NmQyNzc4
ZjljODA2YjcwN2JmNDNmMWFjZWM4YzFiYTJmYTYwYzBmLi43YTY1YzI5OTI5OGI4YzNiNjc4NDE2
ZTk3NDgzMmJlM2Y1ZTljY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiAgICAgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIoRWxlbWVudCYsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+KTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Cisg
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogfTsKIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTWVk
aWFDb250cm9sVGltZWxpbmVDb250YWluZXIoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
KTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2
b2lkIGxheW91dCgpIG92ZXJyaWRlOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyVGV4dFRyYWNrQ29udGFp
bmVyRWxlbWVudChFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3Zl
cnJpZGU7CiB9OwogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCmlu
ZGV4IDAyMjNjOTgyYzcyMGMzN2U2NzU5NGEwNzhlOWM5YzgwYzBlYzE0NmYuLmY5NTVmYTJmZGU5
NzRjNTJiOGZiMzYzOTdjM2ZmOTUyMzA0MmIxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKQEAgLTQxLDggKzQx
LDYgQEAgcHVibGljOgogICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZChEb2N1bWVudCYs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB+UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFk
KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
Rmxvd0NoaWxkSW5mbyhSZW5kZXJPYmplY3QqKSBvdmVycmlkZTsKIAogICAgIFJlbmRlckJsb2Nr
RmxvdyogbXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxSZW5k
ZXJCbG9ja0Zsb3c+KHBhcmVudCgpKTsgfQpAQCAtNTUsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAg
ICBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlciogZmluZENvbHVtblNwYW5uZXJQ
bGFjZWhvbGRlcihSZW5kZXJCb3gqIHNwYW5uZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3Bhbm5lck1h
cC5nZXQoc3Bhbm5lcik7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZSBm
aW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBGaW5k
IHRoZSBzZXQgaW5zaWRlIHdoaWNoIHRoZSBzcGVjaWZpZWQgcmVuZGVyZXIgd291bGQgYmUgcmVu
ZGVyZWQuCiAgICAgUmVuZGVyTXVsdGlDb2x1bW5TZXQqIGZpbmRTZXRSZW5kZXJpbmcoUmVuZGVy
T2JqZWN0KikgY29uc3Q7CkBAIC0xMTUsNiArMTEzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRDaGVja0NvbHVtbkJyZWFrcygpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRl
OgorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkUmVnaW9uVG9UaHJl
YWQoUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZVJlbW92
ZWRGcm9tVHJlZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5TZXQuaAppbmRleCAyN2NhNzM3YzM4ZDgyYWNlNGRmNGM1Njc1Mjk5ZDFm
ZmI1NmUzNzZkLi44Y2FjMDUwNTRiOGI1NDA0YzQwMGIzNzFlMzJkNGYxODlkNjFjOGMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaApAQCAt
NDcsOCArNDcsNiBAQCBjbGFzcyBSZW5kZXJNdWx0aUNvbHVtblNldCBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJSZWdpb25TZXQgewogcHVibGljOgogICAgIFJlbmRlck11bHRpQ29sdW1uU2V0KFJlbmRl
ckZsb3dUaHJlYWQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNSZW5kZXJNdWx0aUNvbHVtblNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LQogICAgIFJlbmRlckJsb2NrRmxvdyogbXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBjb25zdCB7IHJl
dHVybiBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KHBhcmVudCgpKTsgfQogICAgIFJlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZCogbXVsdGlDb2x1bW5GbG93VGhyZWFkKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKj4oZmxvd1RocmVhZCgp
KTsgfQogCkBAIC0xMzEsOSArMTI5LDEwIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBjb2x1bW5D
b3VudCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGls
ZHJlbigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZHJl
bigpIG92ZXJyaWRlOwogICAgIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJN
dWx0aUNvbHVtblNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxv
Z2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxU
b3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTU1
LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IExheW91dFVuaXQgY2FsY3VsYXRlTWF4Q29sdW1uSGVpZ2h0KCkgY29uc3Q7CiAgICAgTGF5b3V0
VW5pdCBjb2x1bW5HYXAoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgKaW5kZXgg
ZjFhNWI4ODQ3M2I4NGFmNWE4YWIyNWMzYmQzM2U0N2FiM2I0N2FlMy4uY2Y5ZDFiMzc5Y2M0ZmY5
MWM3ZTM3NWU2ZWIzMTRmOGIwOTQxNzhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgK
QEAgLTQwLDE1ICs0MCwxNSBAQCBjbGFzcyBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhv
bGRlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBSZW5k
ZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlciogY3JlYXRlQW5vbnltb3VzKFJlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZCosIFJlbmRlckJveCogc3Bhbm5lciwgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1uU3Bhbm5l
clBsYWNlaG9sZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIFJlbmRl
ckJveCogc3Bhbm5lcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Bhbm5lcjsgfQogICAgIFJlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvd1Ro
cmVhZDsgfQogCiBwcml2YXRlOgogICAgIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9s
ZGVyKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCosIFJlbmRlckJveCogc3Bhbm5lciwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOworICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1u
U3Bhbm5lclBsYWNlaG9sZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikg
eyB9CisgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFBvaW50Jikgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBSZW5kZXJCb3gqIG1fc3Bhbm5lcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgK
aW5kZXggYzVlZmIzMjQ5NGMzODFhNjJmODQ1NzFhZjE3N2E2NDQ2YjNjMWQ1YS4uMmMyNDY5Zjc3
ZGE0NjBhMTY2YTgwNWU3ZTUwYmRjYjYzYmQwM2MzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKQEAgLTU0LDEyICs1NCwxMSBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldFJhbmdl
cyhWZWN0b3I8UmVmUHRyPFJhbmdlPj4mKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBwYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWdl
TG9naWNhbEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgbWF4UGFnZUxv
Z2ljYWxIZWlnaHQoKSBjb25zdDsKICAgICAKICAgICBMYXlvdXRSZWN0IGZsb3dUaHJlYWRQb3J0
aW9uUmVjdEZvckNsaXBwaW5nKGJvb2wgaXNGaXJzdFJlZ2lvbkluUmFuZ2UsIGJvb2wgaXNMYXN0
UmVnaW9uSW5SYW5nZSkgY29uc3Q7CkBAIC0xMjEsNiArMTIwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgaW52YWxpZGF0ZVJlZ2lvbklmTmVlZGVkKCk7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBi
b29sIGlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50IjsgfQogCiAgICAgUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gY29tcHV0ZVN0eWxlSW5SZWdpb24oUmVuZGVyRWxlbWVudCYsIFJlbmRl
clN0eWxlJiBwYXJlbnRTdHlsZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKaW5kZXggMWIwZTc5NDA1MzZmNzA4NDA0OTI5N2E1
N2JkNTE1OTZkZDFkODdiZC4uZDg3M2YxYjdiM2ZmNTY2ZTI0N2M1ZWRlYTlhMmVmMDMwOTJiMmYw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJl
YWQuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc01hcmtlZEZvckRlc3Ry
dWN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+
JiwgY29uc3QgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
dm9pZCBhcHBseUJyZWFrQWZ0ZXJDb250ZW50KExheW91dFVuaXQpIG92ZXJyaWRlIGZpbmFsOwor
ICAgIHZpcnR1YWwgdm9pZCBhcHBseUJyZWFrQWZ0ZXJDb250ZW50KExheW91dFVuaXQpIG92ZXJy
aWRlOwogCiAgICAgdmlydHVhbCBib29sIGNvbGxlY3RzR3JhcGhpY3NMYXllcnNVbmRlclJlZ2lv
bnMoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNsZWFyUmVuZGVyT2JqZWN0Q3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyT2JqZWN0Kik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRmxvd0NoaWxkSW5mbyhSZW5kZXJPYmplY3QqKSBvdmVy
cmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRmxvd0NoaWxkSW5mbyhSZW5kZXJP
YmplY3QqKSBvdmVycmlkZTsKIAogICAgIExheW91dFVuaXQgZmxvd0NvbnRlbnRCb3R0b20oKSBj
b25zdCB7IHJldHVybiBtX2Zsb3dDb250ZW50Qm90dG9tOyB9CiAgICAgdm9pZCBkaXNwYXRjaE5h
bWVkRmxvd0V2ZW50cygpOwpAQCAtMTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIGlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmpl
Y3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBjb21wdXRlT3ZlcmZsb3coTGF5b3V0VW5pdCwgYm9vbCA9IGZhbHNlKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lk
IGxheW91dCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFu
Z2VFdmVudElmTmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJRdW90ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmgK
aW5kZXggZDVmYjFkMzVkYjAyZTdmYTU1ZjVjYmE1ZTAyM2JlMjU4Y2ZiYjAxYi4uOTc0M2E0ZjQ3
ZWE4OTBlMTAxN2U3ZTM1N2QwMDQ3ZjA4MzQxNTY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclF1b3RlLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
dm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUXVvdGUiOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzUXVvdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
OworICAgIHZpcnR1YWwgYm9vbCBpc1F1b3RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZVJlbW92
ZWRGcm9tVHJlZSgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVn
aW9uLmgKaW5kZXggMjlkNzlkNTJhNDM1ZDM4NjhiNGYzY2VmMGY1YzdhZDM3MmMyZTk3Zi4uYjNm
MzFiODA4YmI2MzY4YjA2MzA3MDJjNmMwMmJiY2ZiZTczYTMwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZWdpb24uaApAQCAtNDgsOCArNDgsNiBAQCBjbGFzcyBSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ7CiAKIGNsYXNzIFJlbmRlclJlZ2lvbiA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zs
b3cgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclJlZ2lvbigpIGNvbnN0IG92
ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CiAK
ICAgICB2b2lkIHNldEZsb3dUaHJlYWRQb3J0aW9uUmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0
KSB7IG1fZmxvd1RocmVhZFBvcnRpb25SZWN0ID0gcmVjdDsgfQpAQCAtMTUwLDcgKzE0OCw4IEBA
IHByb3RlY3RlZDoKICAgICB2b2lkIGNvbXB1dGVPdmVyZmxvd0Zyb21GbG93VGhyZWFkKCk7CiAK
IHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gIlJlbmRlclJlZ2lvbiI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJSZWdpb24o
KSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJlZ2lv
biI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxCZVJlbW92ZWRGcm9tVHJlZSgpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmgKaW5kZXggYzk0NWNiY2RiMmU2OThhM2U2
Nzk5MmM0YmZjM2RhYjkyNGU4ZTA2YS4uNWY0YTVhZTgyMDQwZGViM2QxNGNhZjU2NTA1MGU1YWM2
YzI2YTYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxp
Y2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oCkBAIC0z
OCwxMyArMzgsMTMgQEAgcHVibGljOgogICAgIFJlbmRlclJlcGxpY2EoRG9jdW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyUmVwbGljYSgpOwogCi0gICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclJl
cGxpY2EiOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIlJlbmRlclJlcGxpY2EiOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAg
ICAgCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUmVwbGljYSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJ1YnlCYXNlLmgKaW5kZXggYzMwYWExMTFlOWUyZjMzMzlmMjgzNTFiY2QzNjRkOTJjZTc1
ZThhYi4uYjcyMGU1NzAyMTA1MzQ1YmYzMDUxZmUwYzYzZGY3ZTYwODEyNjUwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKQEAgLTQyLDE0ICs0MiwxMyBAQCBw
dWJsaWM6CiAgICAgUmVuZGVyUnVieUJhc2UoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
Pik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieUJhc2UoKTsKICAgICAKLSAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUnVieUJhc2UgKGFu
b255bW91cykiOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSdWJ5QmFzZSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyUnVieUJhc2UgKGFub255bW91cykiOyB9CiAKIHByaXZh
dGU6Ci0gICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYs
IGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7Ci0gICAgdmlydHVhbCBFVGV4dEFsaWduIHRleHRB
bGlnbm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91bmRzKGludCBleHBhbnNpb25PcHBv
cnR1bml0eUNvdW50LCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBsb2dpY2FsV2lkdGgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1J1YnlCYXNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJP
YmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
RVRleHRBbGlnbiB0ZXh0QWxpZ25tZW50Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0SW5saW5lRGlyZWN0aW9uTGlu
ZUJvdW5kcyhpbnQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgZmxvYXQmIGxvZ2ljYWxMZWZ0
LCBmbG9hdCYgbG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIG1lcmdlQ2hp
bGRyZW5XaXRoQmFzZShSZW5kZXJSdWJ5QmFzZSogdG9CbG9jayk7CiAKICAgICB2b2lkIG1vdmVD
aGlsZHJlbihSZW5kZXJSdWJ5QmFzZSogdG9CYXNlLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxk
ID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1
bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaAppbmRleCBkOWRj
ZTRmNzhhNmVlNWUzNGNhNzY5OWVjNGMxMDEzYTVmNjhjN2NlLi4wNzJjYmZlNDkzOTVjOGZiMDJj
ODNlYmZjMTMzZmQ1NzM0YTE4MTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUnVieVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5UnVuLmgKQEAgLTQ4LDIwICs0OCwyMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1J1YnlU
ZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNSdWJ5QmFzZSgpIGNvbnN0OwotICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgUmVuZGVyUnVieVRleHQqIHJ1YnlUZXh0KCkgY29uc3Q7CiAgICAgUmVuZGVyUnVieUJh
c2UqIHJ1YnlCYXNlKCkgY29uc3Q7CiAgICAgUmVuZGVyUnVieUJhc2UqIHJ1YnlCYXNlU2FmZSgp
OyAvLyBjcmVhdGVzIHRoZSBiYXNlIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdAogCi0gICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNsdWRlZENoaWxkKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbik7Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hp
bGRyZW4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25z
dCBSZW5kZXJTdHlsZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJP
YmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CisgICAgdmlydHVh
bCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9i
amVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlckJsb2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGaXJzdExldHRlcigpOworICAgIHZpcnR1YWwgUmVuZGVy
QmxvY2sqIGZpcnN0TGluZUJsb2NrKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUZpcnN0TGV0dGVyKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldE92ZXJoYW5nKGJv
b2wgZmlyc3RMaW5lLCBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIsIFJlbmRlck9iamVjdCog
ZW5kUmVuZGVyZXIsIGludCYgc3RhcnRPdmVyaGFuZywgaW50JiBlbmRPdmVyaGFuZykgY29uc3Q7
CiAKQEAgLTcxLDEwICs3MSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyUnVieUJhc2UqIGNy
ZWF0ZVJ1YnlCYXNlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzUnVi
eVJ1bigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUnVieVJ1biAoYW5vbnltb3VzKSI7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlc0Fub255bW91c1dyYXBwZXIoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUxlZnRvdmVyQW5vbnltb3VzQmxvY2so
UmVuZGVyQmxvY2sqKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSdWJ5UnVuKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5UnVuIChhbm9ueW1vdXMpIjsg
fQorICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTGVmdG92ZXJBbm9u
eW1vdXNCbG9jayhSZW5kZXJCbG9jayopIG92ZXJyaWRlIHsgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCmlu
ZGV4IGRmMTBiNzUyZjFhYWU1M2Q1MTA4NWMyNGY2OTc0NDAzYmQ2NmM5MTYuLmY2Y2IzMmQ2MmQ3
MGM2NzAxYTc2NjQ4NDc3ZmJiZTE1NTUxNDE4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgaW50
IG1pbmltdW1UaHVtYkxlbmd0aCgpOwogCi0gICAgdmlydHVhbCBib29sIGlzT3ZlcmxheVNjcm9s
bGJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzT3Zlcmxh
eVNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBmbG9h
dCBvcGFjaXR5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJQYXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyUGFydC5oCmluZGV4IGNlYTc3YmI3NGZhYjEwNmU4ZGE0Mzk2NjVmMzhmNjllYjE1NjQxMWMu
LjRhODY2OTI3NWQxZjM2M2FmMGQ1ZjcyMDY0NzFkMWZhMDAwMjczOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaApAQCAtMzksMTEgKzM5LDEx
IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIH5SZW5kZXJTY3JvbGxiYXJQYXJ0KCk7CiAK
LSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVu
ZGVyU2Nyb2xsYmFyUGFydCI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU2Nyb2xsYmFyUGFydCI7IH0KICAgICAK
LSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIHBhaW50SW50b1JlY3QoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAKQEAg
LTUzLDE1ICs1MywxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkxl
ZnQoKSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVChpc0ludGVnZXJWYWx1ZShtX21hcmdpbkJveC5s
ZWZ0KCkpKTsgcmV0dXJuIG1fbWFyZ2luQm94LmxlZnQoKTsgfQogICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBtYXJnaW5SaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgQVNTRVJUKGlzSW50ZWdlclZhbHVl
KG1fbWFyZ2luQm94LnJpZ2h0KCkpKTsgcmV0dXJuIG1fbWFyZ2luQm94LnJpZ2h0KCk7IH0KIAot
ICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclNjcm9sbGJhclBhcnQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAgICAgUmVuZGVyQm94KiByZW5kZXJlck93bmluZ1Njcm9sbGJhcigpIGNvbnN0Owog
CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW1h
Z2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3Jh
cHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApIG92ZXJyaWRlOwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpOworICAgIHZp
cnR1YWwgYm9vbCBpc1JlbmRlclNjcm9sbGJhclBhcnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhz
KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxheW91dEhvcml6b250YWxQYXJ0KCk7CiAgICAgdm9p
ZCBsYXlvdXRWZXJ0aWNhbFBhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggZTMzMWQwMDliNzdlZGE1MWVjZWQ2MjgyODc3NzM0
MmM0YThlNGI0OS4uNTJlMDE2ZjczYmU1MjIwNTJiMDYzZjBjYjQ5MGVlNGQxYTZmOTM1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKQEAg
LTM0LDUxICszNCw1MSBAQCBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiBjbGFzcyBTY3JvbGxi
YXI7CiBjbGFzcyBTY3JvbGxWaWV3OwogCi1jbGFzcyBSZW5kZXJTY3JvbGxiYXJUaGVtZSA6IHB1
YmxpYyBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB7CitjbGFzcyBSZW5kZXJTY3JvbGxiYXJUaGVt
ZSBmaW5hbCA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB7CiBwdWJsaWM6Ci0gICAg
dmlydHVhbCB+UmVuZGVyU2Nyb2xsYmFyVGhlbWUoKSB7fTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJT
Y3JvbGxiYXJUaGVtZSgpIHsgfQogICAgIAotICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNr
bmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkgeyByZXR1cm4gU2Nyb2xsYmFy
VGhlbWU6OnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcyhjb250cm9sU2l6ZSk7IH0KKyAgICB2
aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJv
bFNpemUpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zY3JvbGxi
YXJUaGlja25lc3MoY29udHJvbFNpemUpOyB9CiAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhckJ1dHRv
bnNQbGFjZW1lbnQgYnV0dG9uc1BsYWNlbWVudCgpIGNvbnN0IHsgcmV0dXJuIFNjcm9sbGJhclRo
ZW1lOjp0aGVtZSgpLT5idXR0b25zUGxhY2VtZW50KCk7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJh
ckJ1dHRvbnNQbGFjZW1lbnQgYnV0dG9uc1BsYWNlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5idXR0b25zUGxhY2VtZW50KCk7IH0KIAotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIo
U2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29y
bmVyUmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcq
LCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIHsgcmV0dXJu
IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zaG91bGRDZW50ZXJPblRodW1iKHNjcm9sbGJhciwg
ZXZlbnQpOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkg
b3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNob3VsZENlbnRlck9u
VGh1bWIoc2Nyb2xsYmFyLCBldmVudCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIGRvdWJsZSBpbml0
aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUo
KS0+aW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KLSAgICB2aXJ0dWFsIGRvdWJsZSBh
dXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5h
dXRvc2Nyb2xsVGltZXJEZWxheSgpOyB9CisgICAgdmlydHVhbCBkb3VibGUgaW5pdGlhbEF1dG9z
Y3JvbGxUaW1lckRlbGF5KCkgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCktPmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpOyB9CisgICAgdmlydHVhbCBkb3VibGUg
YXV0b3Njcm9sbFRpbWVyRGVsYXkoKSBvdmVycmlkZSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6
dGhlbWUoKS0+YXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpIHsgcmV0dXJu
IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5yZWdpc3RlclNjcm9sbGJhcihzY3JvbGxiYXIpOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVucmVnaXN0
ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9s
bGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKSBvdmVycmlkZSB7IHJldHVybiBT
Y3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT51
bnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KIAotICAgIHZpcnR1YWwgaW50IG1pbmlt
dW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IG1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgaW50
JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSk7CiAgICAgCiAgICAgc3RhdGljIFJlbmRlclNj
cm9sbGJhclRoZW1lKiByZW5kZXJTY3JvbGxiYXJUaGVtZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKLSAgICB2aXJ0
dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Ny
b2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3Qg
Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBi
b29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwg
SW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBh
cnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJbnRSZWN0
IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwg
Ym9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJh
Y2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVy
cmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
KSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNr
UGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9s
bGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQ
YXJ0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFy
dCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJbnRS
ZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVj
dFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jikgb3Zl
cnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCmluZGV4IGY5OTMyNzkzMjc2
NmEyNjk4MGU0ODM0NjViMjlhOTUwMzc1ZDczMzQuLjdmN2YzNTI2N2QzMTIwNzg1MzViMmRhODVh
YzU5MjNhYzlhZTAyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5oCkBAIC00OSwxMSArNDksMTEgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGZyYW1lT3duZXJFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAgICAgdmlydHVhbCBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNuYXBzaG90dGVkUGx1
Z0luIjsgfQogCi0gICAgdmlydHVhbCBDdXJzb3JEaXJlY3RpdmUgZ2V0Q3Vyc29yKGNvbnN0IExh
eW91dFBvaW50JiwgQ3Vyc29yJikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBi
b29sIGlzU25hcHNob3R0ZWRQbHVnSW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CisgICAgdmlydHVhbCBDdXJzb3JEaXJlY3RpdmUgZ2V0Q3Vyc29yKGNvbnN0IExheW91
dFBvaW50JiwgQ3Vyc29yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzU25h
cHNob3R0ZWRQbHVnSW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7
CiAgICAgCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVXaWRnZXQoKSBjb25zdCBvdmVycmlkZSBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlV2lkZ2V0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgcGFpbnRTbmFwc2hv
dChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCmluZGV4IGQ2MmIw
MDgzN2ZjYjliNjdjNTVlOGY5OWUyY2UzN2Q5YjI1MDg0NjcuLjA2NzlhMGZiYzliYTgxY2NkMTBj
MDQ4ZmM1NjQ4MDVkMGVhM2E5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCkBAIC0zOCwxNyArMzgsMTcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAg
IHZpcnR1YWwgYm9vbCBpc1RleHRBcmVhKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1RleHRBcmVhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0
VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgZmxvYXQgZ2V0QXZlcmFnZUNoYXJXaWR0aCgpOwotICAgIHZp
cnR1YWwgTGF5b3V0VW5pdCBwcmVmZXJyZWRDb250ZW50TG9naWNhbFdpZHRoKGZsb2F0IGNoYXJX
aWR0aCkgY29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCBnZXRBdmVyYWdlQ2hhcldpZHRoKCkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IHByZWZlcnJlZENvbnRlbnRMb2dpY2FsV2lk
dGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIExheW91dFVu
aXQgY29tcHV0ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdodCwgTGF5
b3V0VW5pdCBub25Db250ZW50SGVpZ2h0KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGlu
dCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRp
b25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0
YXJ0U3R5bGUpIGNvbnN0OwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlvdXRTcGVjaWFs
RXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pOworICAgIHZpcnR1YWwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0
YXJ0U3R5bGUpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlv
dXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pIG92ZXJyaWRlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRGcmFnbWVudC5oCmluZGV4IDcyMzFiNTZmNTdlOGYwNDhlODU3NDFiNDIwMjA0
ZDQ4NDlkMTIxYmYuLjgyZGNiMTllMjgwMjNjMWM4MTNmM2M4MTExZGE1MzMxYWY3NGNhOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgKQEAgLTM5
LDggKzM5LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+UmVuZGVyVGV4dEZyYWdtZW50KCk7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RnJhZ21lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0KICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICB1bnNpZ25lZCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
cnQ7IH0KQEAgLTU5LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWx0VGV4dChjb25z
dCBTdHJpbmcmIGFsdFRleHQpIHsgbV9hbHRUZXh0ID0gYWx0VGV4dDsgfQogICAgIAogcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RnJhZ21lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lR3RrLmgKaW5kZXggMGUxMDY1YjQ5NmM3MmRlZjQyMGNjYjZjMTk0YTY2
NmE1YzQ3YjEyZC4uZmUxZmU2ZjJhOGRiNjI3NDgyMjhjZTdjZDlhZjRmYmY0ZGI3Yjc4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgKQEAgLTExNiwxMCArMTE2
LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHBhaW50VGV4dEZpZWxkKGNvbnN0IFJl
bmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRBcmVhKGNvbnN0IFJlbmRlck9iamVjdCYsIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgaW50IHBv
cHVwSW50ZXJuYWxQYWRkaW5nTGVmdChSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGludCBwb3B1cEludGVybmFsUGFkZGluZ1JpZ2h0KFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nVG9wKFJlbmRlclN0eWxlJikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nQm90dG9tKFJlbmRlclN0eWxl
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdM
ZWZ0KFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBpbnQgcG9wdXBJ
bnRlcm5hbFBhZGRpbmdSaWdodChSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZp
cnR1YWwgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nVG9wKFJlbmRlclN0eWxlJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdCb3R0b20oUmVuZGVy
U3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIFRoZSBNYWMgcG9ydCBkaWZmZXJlbnRp
YXRlcyBiZXR3ZWVuIHRoZSAibWVudSBsaXN0IiBhbmQgdGhlICJtZW51IGxpc3QgYnV0dG9uLiIK
ICAgICAvLyBUaGUgZm9ybWVyIGlzIHVzZWQgd2hlbiBhIG1lbnUgbGlzdCBidXR0b24gaGFzIGJl
ZW4gc3R5bGVkLiBUaGlzIGlzIHVzZWQgdG8gZW5zdXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oCmluZGV4IGNkOGVmMmNjNDI1MzkyM2U1OWYwM2EzODA0ZjQzZTNk
MWNlY2M2OTcuLjFjODQzNTdhY2RjMzdlMzZiZDBiZWE4YmM5YjEwY2M0YjEyMmE2ODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0OwogICAgIAotY2xhc3MgUmVuZGVyVGhlbWVJT1MgOiBwdWJsaWMgUmVuZGVyVGhlbWUg
eworY2xhc3MgUmVuZGVyVGhlbWVJT1MgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGhlbWUgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaAppbmRleCBjZDEwNjIz
NDMyM2EyMjk5OWJjZDYxZDYwNmEyNTAwNzk2MDYzYWE2Li4wY2QyYjY2ZTVkMDczMTZlYmY0ZGYz
MDdmNTY2YTA0NGQ2NWNhYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVTYWZhcmkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVTYWZhcmkuaApAQCAtNDUsODggKzQ1LDkxIEBAIHVzaW5nIG5hbWVzcGFjZSBTYWZhcmlU
aGVtZTsKIAogY2xhc3MgUmVuZGVyU3R5bGU7CiAKLWNsYXNzIFJlbmRlclRoZW1lU2FmYXJpIDog
cHVibGljIFJlbmRlclRoZW1lIHsKK2NsYXNzIFJlbmRlclRoZW1lU2FmYXJpIGZpbmFsIDogcHVi
bGljIFJlbmRlclRoZW1lIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJU
aGVtZT4gY3JlYXRlKCk7CiAKICAgICAvLyBBIG1ldGhvZCB0byBvYnRhaW4gdGhlIGJhc2VsaW5l
IHBvc2l0aW9uIGZvciBhICJsZWFmIiBjb250cm9sLiAgVGhpcyB3aWxsIG9ubHkgYmUgdXNlZCBp
ZiBhIGJhc2VsaW5lCiAgICAgLy8gcG9zaXRpb24gY2Fubm90IGJlIGRldGVybWluZWQgYnkgZXhh
bWluaW5nIGNoaWxkIGNvbnRlbnQuIENoZWNrYm94ZXMgYW5kIHJhZGlvIGJ1dHRvbnMgYXJlIGV4
YW1wbGVzIG9mCiAgICAgLy8gY29udHJvbHMgdGhhdCBuZWVkIHRvIGRvIHRoaXMuCi0gICAgdmly
dHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgLy8gQSBtZXRob2QgYXNraW5nIGlmIHRoZSBjb250cm9sIGNoYW5n
ZXMgaXRzIHRpbnQgd2hlbiB0aGUgd2luZG93IGhhcyBmb2N1cyBvciBub3QuCi0gICAgdmlydHVh
bCBib29sIGNvbnRyb2xTdXBwb3J0c1RpbnRzKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBjb250cm9sU3VwcG9ydHNUaW50cyhjb25zdCBSZW5kZXJPYmplY3Qm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEEgZ2VuZXJhbCBtZXRob2QgYXNraW5nIGlmIGFu
eSBjb250cm9sIHRpbnRpbmcgaXMgc3VwcG9ydGVkIGF0IGFsbC4KLSAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFJlcGFpbnRSZWN0KGNvbnN0IFJlbmRlck9i
amVjdCYsIEludFJlY3QmKTsKKyAgICAvLyBGSVhNRTogU2hvdWxkbid0IHRoaXMgdGFrZSBhIEZs
b2F0UmVjdCYgYW5kIG92ZXJyaWRlIHRoZSBwYXJlbnQncyBhZGp1c3RSZXBhaW50UmVjdCgpPwor
ICAgIHZvaWQgYWRqdXN0UmVwYWludFJlY3QoY29uc3QgUmVuZGVyT2JqZWN0JiwgSW50UmVjdCYp
OwogCi0gICAgdmlydHVhbCBib29sIGlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYs
IGNvbnN0IEJvcmRlckRhdGEmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgRmlsbExheWVyJiwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEJv
cmRlckRhdGEmLCBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9y
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3Jt
SW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICB2aXJ0dWFsIENv
bG9yIGFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9u
QmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQ29sb3IgYWN0aXZlTGlzdEJv
eFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0OwogCi0gICAgdmlydHVhbCBDb2xvciBw
bGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9y
bUZvY3VzUmluZ0NvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBTeXN0ZW0gZm9udHMu
Ci0gICAgdmlydHVhbCB2b2lkIHN5c3RlbUZvbnQoQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9u
JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHN5c3RlbUZvbnQoQ1NTVmFsdWVJRCwgRm9udERl
c2NyaXB0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtTWVu
dUxpc3RTaXplKFJlbmRlclN0eWxlJikgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgbWluaW11bU1l
bnVMaXN0U2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2
b2lkIGFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsK
LSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJlc29sdmVyJiwg
UmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNs
aWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVu
ZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBp
bnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdMZWZ0KFJlbmRlclN0eWxlJikgY29uc3Q7Ci0gICAgdmly
dHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdSaWdodChSZW5kZXJTdHlsZSYpIGNvbnN0Owot
ICAgIHZpcnR1YWwgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nVG9wKFJlbmRlclN0eWxlJikgY29u
c3Q7Ci0gICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdCb3R0b20oUmVuZGVyU3R5
bGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ0xlZnQoUmVu
ZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFs
UGFkZGluZ1JpZ2h0KFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBp
bnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdUb3AoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ0JvdHRvbShSZW5kZXJTdHlsZSYp
IGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgLy8gTWV0aG9kcyBmb3IgZWFjaCBh
cHBlYXJhbmNlIHZhbHVlLgotICAgIHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94KGNvbnN0IFJl
bmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0Q2hlY2tib3hTaXplKFJlbmRlclN0eWxlJikgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHBhaW50Q2hlY2tib3goY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRDaGVja2Jv
eFNpemUoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBw
YWludFJhZGlvKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmFkaW9TaXplKFJlbmRlclN0eWxlJikgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIHBhaW50UmFkaW8oY29uc3QgUmVuZGVyT2JqZWN0JiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBF
bGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0QnV0dG9uU2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50
KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKGNvbnN0IFJl
bmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0QnV0dG9uU2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBib29sIHBhaW50VGV4dEZpZWxkKGNvbnN0IFJlbmRlck9iamVj
dCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
YWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVu
dCopIGNvbnN0OworICAgIC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyB0YWtlIGEgY29uc3QgRmxv
YXRSZWN0JiwgYW5kIG92ZXJyaWRlIHRoZSBwYXJlbnQncyBwYWludFRleHRGaWVsZCgpPworICAg
IGJvb2wgcGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0RmllbGRTdHls
ZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0QXJlYShjb25zdCBSZW5kZXJPYmplY3QmLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVz
dFRleHRBcmVhU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNv
bnN0OworICAgIC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyB0YWtlIGEgY29uc3QgRmxvYXRSZWN0
JiwgYW5kIG92ZXJyaWRlIHRoZSBwYXJlbnQncyBwYWludFRleHRBcmVhKCk/CisgICAgYm9vbCBw
YWludFRleHRBcmVhKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEFyZWFTdHls
ZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVz
dE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNv
bnN0OworICAgIC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyB0YWtlIGEgY29uc3QgRmxvYXRSZWN0
JiwgYW5kIG92ZXJyaWRlIHRoZSBwYXJlbnQncyBwYWludE1lbnVMaXN0KCk/CisgICAgYm9vbCBw
YWludE1lbnVMaXN0KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RTdHls
ZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0
IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpOwotICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBS
ZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51
TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RN
ZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQq
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRyYWNrKGNv
bnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50U2xp
ZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRodW1iKGNvbnN0
IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkKGNvbnN0IFJlbmRlck9iamVj
dCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
YWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVt
ZW50KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGQoY29uc3QgUmVu
ZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBS
ZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5k
ZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25Q
YXJ0U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvblBhcnQoY29uc3QgUmVu
ZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25QYXJ0U3R5bGUoU3R5bGVSZXNvbHZl
ciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
Ym9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0Jiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0U3R5bGUoU3R5bGVS
ZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9v
bCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlck9iamVj
dCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnRTdHlsZShTdHlsZVJlc29sdmVy
JiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBi
b29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyT2Jq
ZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0eWxlUmVz
b2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFy
Y2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBF
bGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmll
bGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKSBvdmVycmlkZTsKICAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDYXBzTG9j
a0luZGljYXRvcihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoY29uc3Qg
UmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRl
OwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhQ29udHJvbHNT
dHlsZVNoZWV0KCkgb3ZlcnJpZGU7CkBAIC0xNDAsNyArMTQzLDcgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgYm9vbCBwYWludE1ldGVyKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBi
b29sIHNob3VsZFNob3dQbGFjZWhvbGRlcldoZW5Gb2N1c2VkKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93UGxhY2Vob2xkZXJXaGVuRm9jdXNlZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKICAgICBSZW5kZXJU
aGVtZVNhZmFyaSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaApp
bmRleCBhZWI0MzhmMDE1N2FhOTI4Y2YzMmQ0NjU5MmFhYjAzOTU1YTEyY2YyLi5jYzgzOGVmMTQz
YjljMGJjZWY2ZTRkYmQ0MTE1MmI3YmE5ZTc4NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVXaW4uaApAQCAtNDcsMTIgKzQ3LDEyIEBAIHN0cnVjdCBUaGVtZURhdGEg
ewogICAgIHVuc2lnbmVkIG1fY2xhc3NpY1N0YXRlOwogfTsKIAotY2xhc3MgUmVuZGVyVGhlbWVX
aW4gOiBwdWJsaWMgUmVuZGVyVGhlbWUgeworY2xhc3MgUmVuZGVyVGhlbWVXaW4gZmluYWw6IHB1
YmxpYyBSZW5kZXJUaGVtZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVy
VGhlbWU+IGNyZWF0ZSgpOwogCi0gICAgdmlydHVhbCBTdHJpbmcgZXh0cmFEZWZhdWx0U3R5bGVT
aGVldCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhUXVpcmtzU3R5bGVTaGVldCgpOworICAg
IHZpcnR1YWwgU3RyaW5nIGV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIFN0cmluZyBleHRyYVF1aXJrc1N0eWxlU2hlZXQoKSBvdmVycmlkZTsKIAogICAgIC8v
IEEgbWV0aG9kIGFza2luZyBpZiB0aGUgdGhlbWUncyBjb250cm9scyBhY3R1YWxseSBjYXJlIGFi
b3V0IHJlZHJhd2luZyB3aGVuIGhvdmVyZWQuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSG92
ZXIoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmgKaW5kZXggZWE2MDhlYzgxNjYwYmIwNDc3MTVjMzkyZWM0Y2Q3NGMw
Zjc1NjcwNC4uNzQ4MjRiN2M2OWIzOWEzM2MxZTAyMzY5ZWU4Mzc3MzE0ZTBjYzA1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKQEAgLTUwLDM3ICs1MCwzNyBAQCBwdWJs
aWM6CiAKICAgICBib29sIHJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcoKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGREaXNwbGF5VmlkZW8oKSBjb25zdDsKKyAgICBib29sIHNo
b3VsZERpc3BsYXlWaWRlbygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgbWVkaWFFbGVt
ZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1l
bnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9p
ZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIExheW91dFNpemUgY2FsY3Vs
YXRlSW50cmluc2ljU2l6ZSgpOwogICAgIHZvaWQgdXBkYXRlSW50cmluc2ljU2l6ZSgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJl
Y3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29u
c3QgSW50UmVjdCopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclZpZGVvIjsgfQorICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJWaWRlbyI7
IH0KIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZXBsYWNlZChQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lk
IGxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0
ZVByZWZlcnJlZCAgPSBDb21wdXRlQWN0dWFsKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCgpIGNvbnN0OworICAgIHZp
cnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1pbmltdW1SZXBsYWNlZEhlaWdodCgpIGNv
bnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIHZpcnR1YWwg
TGF5b3V0VW5pdCBvZmZzZXRMZWZ0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG9m
ZnNldFRvcCgpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRXaWR0aCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRIZWlnaHQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0TGVmdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1
YWwgTGF5b3V0VW5pdCBvZmZzZXRUb3AoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIExh
eW91dFVuaXQgb2Zmc2V0V2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIExheW91
dFVuaXQgb2Zmc2V0SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQg
dXBkYXRlUGxheWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dEF1dG9zaXplci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuaApp
bmRleCBiZmZkMjJjZDJhZjZiYmI5YzM0NTE5OThlZTYzYzM4ZTRlZmE1MzIxLi4yNzVmODY2ZTc1
OTg1Zjg2ZDYwNmZmMjY4YTIwNmQ5ODcxZWYzNWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0QXV0b3NpemVyLmgKQEAgLTQxLDEyICs0MSwxMiBAQCBjbGFzcyBSZW5kZXJUZXh0Owog
c3RydWN0IFRleHRBdXRvc2l6aW5nV2luZG93SW5mbzsKIHN0cnVjdCBUZXh0QXV0b3NpemluZ0Ns
dXN0ZXJJbmZvOwogCi1jbGFzcyBUZXh0QXV0b3NpemVyIHsKK2NsYXNzIFRleHRBdXRvc2l6ZXIg
ZmluYWwgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHRBdXRvc2l6ZXIpOwogCiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgVGV4dEF1dG9zaXplcihEb2N1bWVudCopOwotICAgIHZpcnR1YWwg
flRleHRBdXRvc2l6ZXIoKTsKKyAgICB+VGV4dEF1dG9zaXplcigpOwogCiAgICAgYm9vbCBwcm9j
ZXNzU3VidHJlZShSZW5kZXJPYmplY3QqIGxheW91dFJvb3QpOwogICAgIHZvaWQgcmVjYWxjdWxh
dGVNdWx0aXBsaWVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Ry
YWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Ry
YWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oCmluZGV4IGNiODk1NzZlZmZkNTQ4NThiNDAwOTZj
ZjVmZmZiZTEyNTJjMTVmYmQuLmEzNDczZWVhODNhZDNjZDU3ODRmMjQ5ZmJjYTQzZDRmYWNiN2E2
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UcmFpbGluZ0Zsb2F0c1Jv
b3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVHJhaWxpbmdGbG9h
dHNSb290SW5saW5lQm94LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIGZsb2F0IHZpcnR1YWxMb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgZmxvYXQgdmlydHVhbExvZ2ljYWxIZWlnaHQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJs
b2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2Nr
LmgKaW5kZXggYzk0YTIxZDdkYmMyNzRlOTgzZGI4ZTc2MGYyZjUxMDYyN2EwNGFlMS4uZjhmMTJh
OGZhM2JhMTQzNDc1OGVmYjdmZDRiYmMzYzcwYzUzZWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaApAQCAtNzksNyArNzks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBv
dmVycmlkZTsKICAgICAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1M
VGFibGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCBib29sIGlzUmVuZGVyTWF0aE1MVGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlck1hdGhNTFRhYmxlIjsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oCmluZGV4IDQz
YjQ2MzQ4MWI5ZDQzOTZhZDI4NWQ5ZjBmYjI0MmE2YTY4ZTFiZmUuLjc2OTg0ODk5YmI5MDQ0N2U1
OTRlMmEyZmEyMmFjOGE0NjJjMTliNmIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmgKQEAgLTM2LDcgKzM2LDcgQEAg
cHVibGljOgogICAgIFJlbmRlck1hdGhNTE1lbmNsb3NlKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRl
clN0eWxlPik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgeyByZXR1cm4gIlJlbmRlck1hdGhNTE1lbmNsb3NlIjsgfQorICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJN
YXRoTUxNZW5jbG9zZSI7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9naWNh
bEhlaWdodCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmpl
Y3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gbnVsbHB0cikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE9wZXJhdG9yLmgKaW5kZXggZDRiNjlkOGY1MTE1NjYxMThhNTJjMjIwYzE1Y2ZlOGExZTFj
YjJiYS4uMzY5OWI3MWNkNjg4NmE3NGMzNDBkOTc3M2Q5YzkwMDRkYmYzZjZmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0
b3IuaApAQCAtNzIsMTIgKzcyLDEyIEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogVGhlIGRpc3Bs
YXlzdHlsZSBwcm9wZXJ0eSBpcyBub3QgaW1wbGVtZW50ZWQgKGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg3MzcpLgogICAgIGJvb2wgaXNMYXJnZU9wZXJhdG9ySW5E
aXNwbGF5U3R5bGUoKSBjb25zdCB7IHJldHVybiAhaGFzT3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJh
dG9yRGljdGlvbmFyeTo6U3RyZXRjaHkpICYmIGhhc09wZXJhdG9yRmxhZyhNYXRoTUxPcGVyYXRv
ckRpY3Rpb25hcnk6OkxhcmdlT3ApOyB9CiAKLSAgICB2b2lkIHVwZGF0ZVN0eWxlKCkgb3ZlcnJp
ZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN0eWxlKCkgb3ZlcnJpZGUgZmluYWw7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQm
KTsKIAogICAgIHZvaWQgdXBkYXRlVG9rZW5Db250ZW50KGNvbnN0IFN0cmluZyYgb3BlcmF0b3JT
dHJpbmcpOwotICAgIHZvaWQgdXBkYXRlVG9rZW5Db250ZW50KCkgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRva2VuQ29udGVudCgpIG92ZXJyaWRlIGZpbmFsOwogICAg
IHZvaWQgdXBkYXRlT3BlcmF0b3JQcm9wZXJ0aWVzKCk7CiAgICAgdm9pZCBzZXRPcGVyYXRvckZs
YWdBbmRTY2hlZHVsZUxheW91dElmTmVlZGVkKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6Rmxh
ZywgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSk7CiAgICAgTGF5b3V0VW5pdCB0
cmFpbGluZ1NwYWNlRXJyb3IoKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgaW50IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgb3ZlcnJpZGUg
eyByZXR1cm4gdGhpczsgfQogICAgIHZvaWQgcmVidWlsZFRva2VuQ29udGVudChjb25zdCBTdHJp
bmcmIG9wZXJhdG9yU3RyaW5nKTsKLSAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIHNob3VsZEFsbG93U3RyZXRjaGluZygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3Bl
cmF0b3IuaAppbmRleCBlY2NkNjFjODRkY2RmOTkyMDczNDU3YmQzMzcyM2MxMzM4YjgzM2RmLi41
YTJhNzlmYzY2YWExNTg4YTFkNGY0ZThkNjdhNzViYjRiZmQ4YjljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNh
bE9wZXJhdG9yLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTE9w
ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IoRG9jdW1l
bnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmV0Y2hUbyhM
YXlvdXRVbml0IGhlaWdodEFib3ZlQmFzZWxpbmUsIExheW91dFVuaXQgZGVwdGhCZWxvd0Jhc2Vs
aW5lKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZXRjaFRvKExheW91dFVuaXQgaGVpZ2h0QWJvdmVC
YXNlbGluZSwgTGF5b3V0VW5pdCBkZXB0aEJlbG93QmFzZWxpbmUpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCkgb3ZlcnJpZGU7CkBAIC00NCw3ICs0NCw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MUmFkaWNhbE9w
ZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGlzQW5vbnltb3Vz
KCkgPyAiUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJN
YXRoTUxSYWRpY2FsT3BlcmF0b3IiOyB9Ci0gICAgdm9pZCBzZXRPcGVyYXRvclByb3BlcnRpZXMo
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0b3JQcm9wZXJ0aWVzKCkgb3Zl
cnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCmluZGV4IGFmMDAwYTcyYzM5
MzcwYWVjMmYzODIyNWRlNTk2NTNjNWNjY2JlOGMuLjhhYzQ4ZDQ1MTk1MTA5NzM0OTkyNjBjMjU3
M2VlN2FjMDAxZmQ0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm9vdC5oCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiB9OwogCiAv
LyBUaGVzZSBhcmUgc3BlY2lmaWMgd3JhcHBlcnMgZm9yIHRoZSBpbmRleCBhbmQgYmFzZSwgdGhh
dCBhc2sgdGhlIHBhcmVudCB0byByZXN0cnVjdHVyZSB0aGUgcmVuZGVyZXJzIGFmdGVyIGNoaWxk
IHJlbW92YWwuCi1jbGFzcyBSZW5kZXJNYXRoTUxSb290V3JhcHBlciA6IHB1YmxpYyBSZW5kZXJN
YXRoTUxSb3cgeworY2xhc3MgUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIgZmluYWwgOiBwdWJsaWMg
UmVuZGVyTWF0aE1MUm93IHsKIAogZnJpZW5kIGNsYXNzIFJlbmRlck1hdGhNTFJvb3Q7CiAKQEAg
LTgzLDkgKzgzLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFJlbmRlck9iamVjdCogcmVt
b3ZlQ2hpbGRXaXRob3V0UmVzdHJ1Y3R1cmluZyhSZW5kZXJPYmplY3QmKTsKLSAgICBSZW5kZXJP
YmplY3QqIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKICAgICBz
dGF0aWMgUmVuZGVyUHRyPFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyPiBjcmVhdGVBbm9ueW1vdXNX
cmFwcGVyKFJlbmRlck1hdGhNTFJvb3QqIHJlbmRlck9iamVjdCk7Ci0gICAgdmlydHVhbCBib29s
IGlzUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTFJvb3RXcmFw
cGVyIjsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm93LmgKaW5kZXggYmE1ZGY4ODI1N2Q2OGRiZDE0MDIxNDZjMWNlMGVmNWEwNzc4
NzAyNy4uYjg3ZDk2NDA0YzgyMWJjMmM4NzUwODVjMzc5ODhlNmQwZjBlZTQ2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCkBAIC00
Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZU9wZXJhdG9yUHJvcGVydGllcygp
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNS
ZW5kZXJNYXRoTUxSb3coKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNj
cmlwdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2Ny
aXB0cy5oCmluZGV4IDc1NDI2NzgyZTBkNGU1MjNmNzYwOTI3MTc4ZDBmYjIzMjI4OWU1ZmEuLjFi
NWU3MWQ2NjYxMjNhYjU5ZjdkM2ZlZmMzNzg4ZjBkNGM3MDM1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRlck1hdGhN
TFNjcmlwdHM7CiAKLWNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyIDogcHVibGljIFJl
bmRlck1hdGhNTEJsb2NrIHsKK2NsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyIGZpbmFs
IDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIAogZnJpZW5kIGNsYXNzIFJlbmRlck1hdGhN
TFNjcmlwdHM7CiAKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKIH07CiAKIC8vIFJlbmRlciBh
IGJhc2Ugd2l0aCBzY3JpcHRzLgotY2xhc3MgUmVuZGVyTWF0aE1MU2NyaXB0cyA6IHB1YmxpYyBS
ZW5kZXJNYXRoTUxCbG9jayB7CitjbGFzcyBSZW5kZXJNYXRoTUxTY3JpcHRzIGZpbmFsIDogcHVi
bGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIAogZnJpZW5kIGNsYXNzIFJlbmRlck1hdGhNTFNjcmlw
dHNXcmFwcGVyOwogCkBAIC03NSwxNyArNzUsMTcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxk
ID0gMCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIHJlbW92ZUNoaWxkKFJl
bmRlck9iamVjdCYpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3Bl
cmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpOworICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1M
T3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
aW50IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJy
aWRlOwogICAgIAogcHJpdmF0ZToKICAgICB2b2lkIGFkZENoaWxkSW50ZXJuYWwoYm9vbCBub3Jt
YWxJbnNlcnRpb24sIFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hp
bGQgPSAwKTsKICAgICBSZW5kZXJPYmplY3QqIHJlbW92ZUNoaWxkSW50ZXJuYWwoYm9vbCBub3Jt
YWxSZW1vdmFsLCBSZW5kZXJPYmplY3QmIGNoaWxkKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bmRlck1hdGhNTFNjcmlwdHMoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MU2NyaXB0cygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MU2NyaXB0cyI7IH0KIAogICAgIHZv
aWQgZml4QW5vbnltb3VzU3R5bGVGb3JTdWJTdXBQYWlyKFJlbmRlck9iamVjdCogc3ViU3VwUGFp
ciwgYm9vbCBpc1Bvc3RTY3JpcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCmluZGV4IGY1YWQ1YmJhMDRmMGI1MWIwMDY5MWIx
YmUyODQyODhkZmJlMzE2MjguLjBhNGQ2NGFmY2RiZDcyYTZhYmJjMjc2N2ZkNjFiMjhjOGQxNmMz
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFRva2VuLmgKQEAgLTQxLDE2ICs0MSwxNiBAQCBwdWJsaWM6CiAKICAgICBNYXRoTUxUZXh0
RWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFRleHRFbGVtZW50
Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVy
TWF0aE1MVG9rZW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJl
bmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfTsKICAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZv
cmVDaGlsZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRva2VuQ29udGVudCgp
OwotICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQg
Y3JlYXRlV3JhcHBlcklmTmVlZGVkKCk7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlz
UmVuZGVyTWF0aE1MVG9rZW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJNYXRoTUxUb2tlbiAoYW5vbnltb3VzKSIgOiAi
UmVuZGVyTWF0aE1MVG9rZW4iOyB9CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3R5bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCmluZGV4IGJkZTU5MTU2
Nzg3ODhjMTU4NjBkOGYwZGRiOTk0Mjk3NWY5M2I3OTkuLjZmNjUzZDUxYzAwODBhZjgwMGJmZmI0
ODk0YTc0YTkwMzdjZjY2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaApAQCAtMzIsMTYgKzMyLDE2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLWNsYXNzIFJlbmRlck1hdGhNTFVuZGVyT3ZlciA6
IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CitjbGFzcyBSZW5kZXJNYXRoTUxVbmRlck92ZXIg
ZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVibGljOgogICAgIFJlbmRlck1h
dGhNTFVuZGVyT3ZlcihFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwogICAgIAotICAg
IHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpOwor
ICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigp
IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBv
dmVycmlkZTsKICAgICAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Cisg
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgYm9vbCBpc1JlbmRlck1hdGhNTFVuZGVyT3ZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvQm94
U2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUuaAppbmRl
eCA4MDliYTgyNDQ2ODg2NjA5NzBlMjNmZTYxYWRkOGNiNGNmYzgwZWFhLi5jMmIxNzcxMzdjMzc1
YTI2YTVkYmQ2YzFlMjc1ZDk1NTk4MWY5MzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9Cb3hTaGFwZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFJlbmRlckJveDsKIAog
Um91bmRlZFJlY3QgY29tcHV0ZVJvdW5kZWRSZWN0Rm9yQm94U2hhcGUoQ1NTQm94VHlwZSwgY29u
c3QgUmVuZGVyQm94Jik7CiAKLWNsYXNzIEJveFNoYXBlIDogcHVibGljIFNoYXBlIHsKK2NsYXNz
IEJveFNoYXBlIGZpbmFsIDogcHVibGljIFNoYXBlIHsKIHB1YmxpYzoKICAgICBCb3hTaGFwZShj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiBib3VuZHMpCiAgICAgICAgIDogbV9ib3VuZHMoYm91bmRz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hh
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmgKaW5k
ZXggNDRmZTYyOTdhZGVkMmU4YWE4YzkyYjVjZDY5NTczMjI5MTg0ZmExNi4uYWU1MGIwZjdlMWQw
ODgyMTk5ZTRiNmIwZTJmMzU2Mjg5OTAyYjllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgT2Zmc2V0UG9seWdvbkVkZ2UgOiBwdWJsaWMgVmVydGV4UGFp
ciB7CitjbGFzcyBPZmZzZXRQb2x5Z29uRWRnZSBmaW5hbCA6IHB1YmxpYyBWZXJ0ZXhQYWlyIHsK
IHB1YmxpYzoKICAgICBPZmZzZXRQb2x5Z29uRWRnZShjb25zdCBGbG9hdFBvbHlnb25FZGdlJiBl
ZGdlLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCkKICAgICAgICAgOiBtX3ZlcnRleDEoZWRnZS52
ZXJ0ZXgxKCkgKyBvZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1Jhc3RlclNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmgKaW5kZXggYjdiMDEzNTZhZDQ5MmQwMjIwMzk0MGI5YWYzZjQ5YmE1YWNhZWQ2
Mi4uYzA5YjUyZWM1NjhkNTYxOTU2YWJhYzUyNGY4ZTc1ZjI2ZTdiNjJjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaApAQCAtNzYsNyArNzYsNyBA
QCBwcml2YXRlOgogICAgIGludCBtX29mZnNldDsKIH07CiAKLWNsYXNzIFJhc3RlclNoYXBlIDog
cHVibGljIFNoYXBlIHsKK2NsYXNzIFJhc3RlclNoYXBlIGZpbmFsIDogcHVibGljIFNoYXBlIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSYXN0ZXJTaGFwZSk7CiBwdWJsaWM6CiAgICAgUmFz
dGVyU2hhcGUoc3RkOjp1bmlxdWVfcHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBpbnRlcnZhbHMs
IGNvbnN0IEludFNpemUmIG1hcmdpblJlY3RTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oCmluZGV4IGYwZTNmMGY3N2E1N2NkZjU1MTVk
NmZmN2I5M2ZiMDc5NDNhMTNlNjguLmIwMzYxYzYxMjIyNzExNDViNTllNzkyYTg2YWMxNGZlMDhm
Y2Q2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmVjdGFu
Z2xlU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3Rhbmds
ZVNoYXBlLmgKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBSZWN0YW5nbGVTaGFwZSA6IHB1YmxpYyBTaGFwZSB7CitjbGFzcyBSZWN0YW5nbGVTaGFwZSBm
aW5hbCA6IHB1YmxpYyBTaGFwZSB7CiBwdWJsaWM6CiAgICAgUmVjdGFuZ2xlU2hhcGUoY29uc3Qg
RmxvYXRSZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0U2l6ZSYgcmFkaWkpCiAgICAgICAgIDogbV9i
b3VuZHMoYm91bmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0Jhc2ljU2hhcGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuaAppbmRleCBjYjc3Y2NlNjZhY2JmY2NjYzA3OThiZWZlNjQ5ZjhlMDYyMTliM2VkLi40OTQ4
ZGYxNzlmNTkxY2Y0OTU0YzM1ZGNmNGZlYzgyODdiMGRiMjU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaApAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZh
dGU6CiAKIH07CiAKLWNsYXNzIEJhc2ljU2hhcGVDaXJjbGUgOiBwdWJsaWMgQmFzaWNTaGFwZSB7
CitjbGFzcyBCYXNpY1NoYXBlQ2lyY2xlIGZpbmFsIDogcHVibGljIEJhc2ljU2hhcGUgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhc2ljU2hhcGVDaXJjbGU+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY1NoYXBlQ2lyY2xlKTsgfQogCkBAIC0xNzAsNyArMTcw
LDcgQEAgcHJpdmF0ZToKICAgICBCYXNpY1NoYXBlUmFkaXVzIG1fcmFkaXVzOwogfTsKIAotY2xh
c3MgQmFzaWNTaGFwZUVsbGlwc2UgOiBwdWJsaWMgQmFzaWNTaGFwZSB7CitjbGFzcyBCYXNpY1No
YXBlRWxsaXBzZSBmaW5hbCA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxCYXNpY1NoYXBlRWxsaXBzZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IEJhc2ljU2hhcGVFbGxpcHNlKTsgfQogCkBAIC0xOTgsNyArMTk4LDcgQEAgcHJpdmF0
ZToKICAgICBCYXNpY1NoYXBlUmFkaXVzIG1fcmFkaXVzWTsKIH07CiAKLWNsYXNzIEJhc2ljU2hh
cGVQb2x5Z29uIDogcHVibGljIEJhc2ljU2hhcGUgeworY2xhc3MgQmFzaWNTaGFwZVBvbHlnb24g
ZmluYWwgOiBwdWJsaWMgQmFzaWNTaGFwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8QmFzaWNTaGFwZVBvbHlnb24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNp
Y1NoYXBlUG9seWdvbik7IH0KIApAQCAtMjI0LDcgKzIyNCw3IEBAIHByaXZhdGU6CiAgICAgVmVj
dG9yPExlbmd0aD4gbV92YWx1ZXM7CiB9OwogCi1jbGFzcyBCYXNpY1NoYXBlSW5zZXQgOiBwdWJs
aWMgQmFzaWNTaGFwZSB7CitjbGFzcyBCYXNpY1NoYXBlSW5zZXQgZmluYWwgOiBwdWJsaWMgQmFz
aWNTaGFwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QmFzaWNTaGFwZUluc2V0
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNTaGFwZUluc2V0KTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5o
CmluZGV4IDU2NzNiMDc5N2Y5M2JmNDA1N2VkNzQ3OTk1MjQ3ZTRjOGI4ZjU0MDIuLmI0ZDE5MTAy
M2JjZTMzZDQ0NjM3Zjk0MTM1MzA0OTRiYWMyMTQ1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHN0eWxlIHJlc29sdXRpb24sIGluIG9yZGVyIHRvIGF2
b2lkIGxvYWRpbmcgaW1hZ2VzIHRoYXQgYXJlIG5vdCByZWZlcmVuY2VkIGJ5IHRoZSBmaW5hbCBz
dHlsZS4KIC8vIFRoZXkgc2hvdWxkIG5ldmVyIGV4aXN0IGluIGEgUmVuZGVyU3R5bGUgYWZ0ZXIg
aXQgaGFzIGJlZW4gcmV0dXJuZWQgZnJvbSB0aGUgc3R5bGUgc2VsZWN0b3IuCiAKLWNsYXNzIFN0
eWxlUGVuZGluZ0ltYWdlIDogcHVibGljIFN0eWxlSW1hZ2UgeworY2xhc3MgU3R5bGVQZW5kaW5n
SW1hZ2UgZmluYWwgOiBwdWJsaWMgU3R5bGVJbWFnZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3R5bGVQZW5kaW5nSW1hZ2U+IGNyZWF0ZShDU1NWYWx1ZSogdmFsdWUpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVBlbmRpbmdJbWFnZSh2YWx1ZSkpOyB9CiAKQEAgLTYzLDcg
KzYzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBpbWFnZVNpemUoY29uc3Qg
UmVuZGVyRWxlbWVudCosIGZsb2F0IC8qbXVsdGlwbGllciovKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBGbG9hdFNpemUoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lk
dGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
bWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVy
RWxlbWVudCosIExlbmd0aCYgLyogaW50cmluc2ljV2lkdGggKi8gLCBMZW5ndGgmIC8qIGludHJp
bnNpY0hlaWdodCAqLywgRmxvYXRTaXplJiAvKiBpbnRyaW5zaWNSYXRpbyAqLykgeyB9CisgICAg
dmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlckVsZW1l
bnQqLCBMZW5ndGgmIC8qIGludHJpbnNpY1dpZHRoICovICwgTGVuZ3RoJiAvKiBpbnRyaW5zaWNI
ZWlnaHQgKi8sIEZsb2F0U2l6ZSYgLyogaW50cmluc2ljUmF0aW8gKi8pIG92ZXJyaWRlIHsgfQog
ICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJl
bmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmLCBmbG9hdCkgb3Zl
cnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChSZW5kZXJFbGVtZW50Kikgb3Zl
cnJpZGUgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0Jsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2Nr
LmgKaW5kZXggN2E0ZmRmOGI1MzY5ODZmMmU4ZDEzMmMzMzY4NDAyYjRkMWQ1MmRkMy4uZGRjNWI5
MjZkNWJmMTEwMDllZDVhZjg5NzQ2NDA1YjUzMWIyZDgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRl
OgogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21TdHlsZSgpIG92ZXJyaWRlIGZpbmFsOwog
Ci0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyU1ZHQmxvY2soKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9OworICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclNWR0Jsb2NrKCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKaW5kZXggNDI5NThkNGVjMmFiYmM5OWRhNTBkODI0OGEw
ODA2ZGNlZjMzMDNmNy4uODcyNTNhZGNjNzEwNDY3YTU3ZDEwMDkwZjc1MDQ2YmQ4NmUxMjhmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWlu
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5l
ci5oCkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBSZW5kZXJTVkdD
b250YWluZXIoU1ZHRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKIAotICAgIHZpcnR1
YWwgYm9vbCBpc1NWR0NvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHQ29udGFpbmVyIjsgfQogCiAgICAgdmlydHVhbCBib29sIGNh
bkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KQEAg
LTczLDYgKzcyLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgdXBkYXRlQ2FjaGVkQm91bmRhcmll
cygpOwogCiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1NWR0NvbnRhaW5lcigpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIEZsb2F0UmVjdCBtX29iamVj
dEJvdW5kaW5nQm94OwogICAgIGJvb2wgbV9vYmplY3RCb3VuZGluZ0JveFZhbGlkOwogICAgIEZs
b2F0UmVjdCBtX3N0cm9rZUJvdW5kaW5nQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaAppbmRleCBkNjJhNTYwNGVhYmUzNjk4Zjk5MTMzYTIx
NTQwNTQzYmRmZmNmMjBkLi4zMDI3ZjEwYzBlZGU4ODdkZDBjZmVlZDJjZTAyODNlZTcwNTNjMjA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlw
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2Uu
aApAQCAtMzcsMTUgKzM3LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdFbGxp
cHNlKCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3QgeyByZXR1cm4gIlJlbmRlclNWR0VsbGlwc2UiOyB9CisgICAgdmlydHVhbCBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0VsbGlw
c2UiOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpOwotICAg
IHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sg
PyBSZW5kZXJTVkdTaGFwZTo6aXNFbXB0eSgpIDogbV9maWxsQm91bmRpbmdCb3guaXNFbXB0eSgp
OyB9OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Vz
ZVBhdGhGYWxsYmFjayA/IFJlbmRlclNWR1NoYXBlOjppc0VtcHR5KCkgOiBtX2ZpbGxCb3VuZGlu
Z0JveC5pc0VtcHR5KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJpbmdEaXNhYmxlZCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250
ZXh0KikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4
dCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5z
KGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRGaWxs
Q29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFdpbmRSdWxlKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25z
dCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50
RmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBXaW5kUnVsZSkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjYWxjdWxhdGVSYWRpaUFuZENlbnRlcigpOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25P
YmplY3QuaAppbmRleCA0ZTY3Y2FlOTJkM2Q1MmJiODRhYTI1NDA5YzcwYTc3Y2FhOTE3MjBkLi5j
NzViYmZmMTRkYTQ4OTQyOGNiOTdmOGQ0MDdkYWU0YzAwNmM0N2QzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaApAQCAt
MzcsMzUgKzM3LDM1IEBAIHB1YmxpYzoKIAogICAgIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50JiBm
b3JlaWduT2JqZWN0RWxlbWVudCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIExh
eW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1
YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEZsb2F0
UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIG1fdmlld3BvcnQuc2l6ZSgpKTsgfQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9r
ZUJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV92
aWV3cG9ydC5zaXplKCkpOyB9Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxv
Y2FsQ29vcmRpbmF0ZXMoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBt
X3ZpZXdwb3J0LnNpemUoKSk7IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RCb3VuZGlu
Z0JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1f
dmlld3BvcnQuc2l6ZSgpKTsgfQorICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5n
Qm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV92
aWV3cG9ydC5zaXplKCkpOyB9CisgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxv
Y2FsQ29vcmRpbmF0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBtX3ZpZXdwb3J0LnNpemUoKSk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBub2RlQXRG
bG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pOworICAgIHZpcnR1YWwgYm9v
bCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhp
dFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzU1ZHRm9yZWlnbk9iamVjdCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRl
JiwgTWFwQ29vcmRpbmF0ZXNGbGFncyA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4
ZWQgPSAwKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCog
cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNl
c3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9uZWVkc1RyYW5zZm9ybVVw
ZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUo
KSBvdmVycmlkZSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CiAKIHByaXZhdGU6
CisgICAgdmlydHVhbCBib29sIGlzU1ZHRm9yZWlnbk9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRl
OwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJTVkdGb3JlaWduT2JqZWN0IjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUxvZ2ljYWxXaWR0aCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlTG9n
aWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRv
cCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNv
bnN0OwotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsVHJhbnNmb3JtKCkgY29uc3Qg
eyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQorICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAKICAgICBib29sIG1fbmVlZHNUcmFuc2Zvcm1VcGRh
dGUgOiAxOwogICAgIEZsb2F0UmVjdCBtX3ZpZXdwb3J0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCmluZGV4IDg2MWQxMzIyYTcxMjkyNTBlYWQwYWY5
MmYyN2E0YjIwMmMwYjQ0MDcuLjAxM2EwNGY1OGIwNDZhMDQ2YmY0ZjUyYzU2MDdmOWJmYWRkNTJl
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgK
QEAgLTQyLDkgKzQyLDkgQEAgcHVibGljOgogICAgIFNWR0ltYWdlRWxlbWVudCYgaW1hZ2VFbGVt
ZW50KCkgY29uc3Q7CiAKICAgICBib29sIHVwZGF0ZUltYWdlVmlld3BvcnQoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCkgeyBtX25lZWRzQm91bmRhcmllc1Vw
ZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRl
KCkgb3ZlcnJpZGUgeyBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSA9IHRydWU7IH0KICAgICB2aXJ0
dWFsIGJvb2wgbmVlZHNCb3VuZGFyaWVzVXBkYXRlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9uZWVk
c0JvdW5kYXJpZXNVcGRhdGU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1V
cGRhdGUoKSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CisgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgb3ZlcnJpZGUgeyBtX25lZWRzVHJhbnNmb3Jt
VXBkYXRlID0gdHJ1ZTsgfQogCiAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSYgaW1hZ2VSZXNvdXJj
ZSgpIHsgcmV0dXJuICptX2ltYWdlUmVzb3VyY2U7IH0KICAgICBjb25zdCBSZW5kZXJJbWFnZVJl
c291cmNlJiBpbWFnZVJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gKm1faW1hZ2VSZXNvdXJjZTsg
fQpAQCAtNTUsMjkgKzU1LDI5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50
KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHSW1hZ2UiOyB9CisgICAgdmlydHVhbCBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0ltYWdl
IjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNm
b3JtOyB9CisgICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRU
cmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAK
LSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJu
IG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzdHJva2VCb3Vu
ZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0KLSAgICB2aXJ0
dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0
dXJuIG1fcmVwYWludEJvdW5kaW5nQm94OyB9CisgICAgdmlydHVhbCBGbG9hdFJlY3Qgb2JqZWN0
Qm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX29iamVjdEJvdW5kaW5nQm94
OyB9CisgICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX29iamVjdEJvdW5kaW5nQm94OyB9CisgICAgdmlydHVhbCBGbG9hdFJl
Y3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3JlcGFpbnRCb3VuZGluZ0JveDsgfQogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRS
ZWN0SW5Mb2NhbENvb3JkaW5hdGVzRXhjbHVkaW5nU1ZHU2hhZG93KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3hFeGNsdWRpbmdTaGFkb3c7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cGFpbnRDb250YWluZXIgPSAwKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNo
YW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApOworICAgIHZpcnR1YWwg
dm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IG51bGxw
dHIpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwotICAgIHZpcnR1YWwg
dm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZv
JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZUJ1
ZmZlcmVkRm9yZWdyb3VuZCgpOwogCi0gICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbik7CisgICAgdmlydHVhbCBib29sIG5vZGVBdEZs
b2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1f
bG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5z
Zm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KICAgICB2
b2lkIGNhbGN1bGF0ZUltYWdlVmlld3BvcnQoKTsKIAogICAgIGJvb2wgbV9uZWVkc0JvdW5kYXJp
ZXNVcGRhdGUgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Bh
dGguaAppbmRleCA0NGZkMTcyNjc1ZGFlMWRiYTEyZjcwZjdlYWJlNTcxYjIzZGY5MzNkLi5lYTZl
Y2MyMzVlOThmNTg1MWEzNjUzYmFhMjFmNmVhZGY3NzhiZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzU1ZHUGF0aCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCB7IHJldHVybiAiUmVuZGVyU1ZHUGF0aCI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUGF0aCI7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAg
ICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAppbmRleCBmMDJk
ZmNmNzg3MzQ2ZWFkNjc0YjYyOGNjMDQxMTIzYjJhYTZmMmY3Li40ZGExYjNiOTgyYTMwYzBhOGEw
YjQ0NWRmM2NjMWJmYTA5MDM3NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1JlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1JlY3QuaApAQCAtNDMsMTUgKzQzLDE1IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgdm9pZCBncmFwaGljc0VsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdSZWN0Ijsg
fQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJTVkdSZWN0IjsgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNoYXBl
RnJvbUVsZW1lbnQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fdXNlUGF0aEZhbGxiYWNrID8gUmVuZGVyU1ZHU2hhcGU6OmlzRW1wdHkoKSA6IG1fZmlsbEJv
dW5kaW5nQm94LmlzRW1wdHkoKTsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2hhcGVGcm9t
RWxlbWVudCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sgPyBSZW5kZXJTVkdTaGFwZTo6aXNFbXB0
eSgpIDogbV9maWxsQm91bmRpbmdCb3guaXNFbXB0eSgpOyB9CiAgICAgdmlydHVhbCBib29sIGlz
UmVuZGVyaW5nRGlzYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmls
bFNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzdHJva2VT
aGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBl
bmRlbnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50Jik7Ci0gICAgdmlydHVhbCBib29s
IHNoYXBlRGVwZW5kZW50RmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBXaW5k
UnVsZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQq
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3ND
b250ZXh0KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50
U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
Ym9vbCBzaGFwZURlcGVuZGVudEZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
V2luZFJ1bGUpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2lu
bmVyU3Ryb2tlUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCmluZGV4IGUwMDgwZTBkNTI5NDBkOTE4YTA5OTY0
OWY2NDBhM2U0MTlmOTJjNTcuLmNhMDcyY2FhZmMwOGVhMjRhMTRhNmNjYmViOTgwYzdmZGQ4YTk2
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBh
cHBseUNsaXBwaW5nVG9Db250ZXh0KFJlbmRlckVsZW1lbnQmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0NvbnRleHQqKTsKICAgICB2aXJ0dWFsIEZsb2F0UmVj
dCByZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gQ2xpcHBlclJlc291cmNlVHlwZTsgfQorICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3Vy
Y2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENsaXBwZXJSZXNv
dXJjZVR5cGU7IH0KICAgICAKICAgICBib29sIGhpdFRlc3RDbGlwQ29udGVudChjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFBvaW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAppbmRleCBlODVjNzk0NDAx
ZDA5ZTQ4NzBjYjEyYTE2NWJkN2M2YTFlNTc0OTJlLi45NWJkMTAwMmRjMjUyZGZjM2NkOGNkOWJk
NjRmMDYyNGJkMWI4NTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChSZW5kZXJPYmplY3QqLCBjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSBy
ZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQorICAgIHZpcnR1
YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlw
ZSBzX3Jlc291cmNlVHlwZTsKIAogICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uKFJlbmRlck9i
amVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCmluZGV4IDJmOGRhM2E5
NjUxMWNmNjdiNjAxZTM5MWMzNjBiYTdlYzE2MmZhM2EuLmRmNDc1OThkYmIzY2M2ZmMwNjM2NzFl
ZDg4NzY4MjYxNGFjNTlmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKQEAgLTM5
LDEwICszOSw5IEBAIHB1YmxpYzoKICAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmLCBQYXNzUmVmPFJlbmRlclN0
eWxlPik7CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiBmaWx0ZXJQ
cmltaXRpdmVFbGVtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJl
dHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUiOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlIjsgfQogCiAgICAgLy8gVGhl
eSBkZXBlbmQgb24gdGhlIFJlbmRlck9iamVjdCBhcmd1bWVudCBvZiBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6YXBwbHlSZXNvdXJjZS4KICAgICBzdGF0aWMgRmxvYXRSZWN0IGRldGVybWluZUZp
bHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXJFZmZlY3QmKTsKQEAgLTU1LDYgKzU0LDcgQEAg
cHVibGljOgogICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcio+KGZp
bHRlciktPnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQodGhpcywgYXR0cmlidXRlKTsKICAgICB9
CiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgZWxlbWVudCgpIGNv
bnN0ID0gZGVsZXRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaAppbmRleCBjMWY1
MmI3ZGNkZTUxYjdkNGNlZjNmZGY5ZDhjZGVkNjliNDExM2YxLi44YWFkM2ZmNDIxY2IyOTIwMDk2
Njk0MWM1MTFmZDJiMTQ1NWMwMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaApAQCAt
MzQsMTMgKzM0LDEzIEBAIHB1YmxpYzoKIAogICAgIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCYg
bGluZWFyR3JhZGllbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50PihSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjpncmFkaWVudEVsZW1l
bnQoKSk7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CisgICAgdmlydHVhbCBSZW5kZXJT
VkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc19y
ZXNvdXJjZVR5cGU7IH0KICAgICBzdGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHNfcmVzb3Vy
Y2VUeXBlOwogCi0gICAgdmlydHVhbCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIGdyYWRpZW50
VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZ3JhZGllbnRVbml0cygpOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUdyYWRpZW50VHJhbnNmb3JtKEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtKSB7IHRyYW5zZm9ybSA9IG1fYXR0cmlidXRlcy5ncmFkaWVudFRyYW5zZm9y
bSgpOyB9CisgICAgdmlydHVhbCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIGdyYWRpZW50VW5p
dHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZ3JhZGllbnRVbml0cygp
OyB9CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUdyYWRpZW50VHJhbnNmb3JtKEFmZmluZVRy
YW5zZm9ybSYgdHJhbnNmb3JtKSBvdmVycmlkZSB7IHRyYW5zZm9ybSA9IG1fYXR0cmlidXRlcy5n
cmFkaWVudFRyYW5zZm9ybSgpOyB9CiAgICAgdmlydHVhbCBib29sIGNvbGxlY3RHcmFkaWVudEF0
dHJpYnV0ZXMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYnVpbGRHcmFkaWVudChHcmFk
aWVudERhdGEqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYnVpbGRHcmFkaWVudChHcmFkaWVu
dERhdGEqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChjb25z
dCBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMmKSBjb25zdDsKICAgICBGbG9hdFBvaW50IGVuZFBv
aW50KGNvbnN0IExpbmVhckdyYWRpZW50QXR0cmlidXRlcyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCmlu
ZGV4IDYzNmEzNGVjYjkyZWQ4NzliMjZiMTliOTA5MzI5Y2E5YmJiMmVmMjIuLjFhOGQwODM4Nzg4
YmExZmNkODM2YzVkMDAzYzI4ZDAyNGMyYzY5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmgKQEAgLTQ1LDExICs0
NSwxMSBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsY3VsYXRlcyBtYXJrZXIgYm91bmRhcmllcywgbWFw
cGVkIHRvIHRoZSB0YXJnZXQgZWxlbWVudCdzIGNvb3JkaW5hdGUgc3BhY2UKICAgICBGbG9hdFJl
Y3QgbWFya2VyQm91bmRhcmllcyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hcmtlclRyYW5zZm9y
bWF0aW9uKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseVZpZXdwb3J0Q2xpcChQYWlu
dEluZm8mKTsKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci0gICAgdmlydHVhbCB2b2lkIGNh
bGNWaWV3cG9ydCgpOworICAgIHZpcnR1YWwgdm9pZCBhcHBseVZpZXdwb3J0Q2xpcChQYWludElu
Zm8mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGNhbGNWaWV3cG9ydCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIEFmZmluZVRyYW5zZm9ybSBtYXJrZXJUcmFuc2Zvcm1hdGlvbihj
b25zdCBGbG9hdFBvaW50JiBvcmlnaW4sIGZsb2F0IGFuZ2xlLCBmbG9hdCBzdHJva2VXaWR0aCkg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50Jiwg
Y29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQpIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBm
bG9hdCBhbmdsZSgpIGNvbnN0OwogICAgIFNWR01hcmtlclVuaXRzVHlwZSBtYXJrZXJVbml0cygp
IGNvbnN0IHsgcmV0dXJuIG1hcmtlckVsZW1lbnQoKS5tYXJrZXJVbml0cygpOyB9CiAKLSAgICB2
aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVy
biBzX3Jlc291cmNlVHlwZTsgfQorICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJl
c291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAg
ICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlwZSBzX3Jlc291cmNlVHlwZTsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXIuaAppbmRleCBhNTI3MjZlYjkyMTJjZTAwZGU0ZTVlZjc2MmI3ZjJmN2Y5YjNm
OWRmLi44OWIzMDVmNmNiM2U1NDgxNzBmNDNiYmNhOTBjOTgxZjU1ZWIyZWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlIG1hc2tVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1hc2tFbGVtZW50KCkubWFza1VuaXRzKCk7
IH0KICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIG1hc2tDb250ZW50VW5pdHMoKSBjb25z
dCB7IHJldHVybiBtYXNrRWxlbWVudCgpLm1hc2tDb250ZW50VW5pdHMoKTsgfQogCi0gICAgdmly
dHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4g
c19yZXNvdXJjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNv
dXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQogICAg
IHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgc19yZXNvdXJjZVR5cGU7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4uaAppbmRleCBmNjZkNTU1Yjc1YjdhYzdkNjViNWM0MGMzZWQ2NGI2OTUxNjhl
ZTRmLi5mMWZmYzQ0MzViOWEyZDZiOTRkZTljN2I3YThlMDIzZDk0OTYxOTU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwb3N0QXBw
bHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgR3JhcGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNo
b3J0IHJlc291cmNlTW9kZSwgY29uc3QgUGF0aCosIGNvbnN0IFJlbmRlclNWR1NoYXBlKikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBS
ZW5kZXJPYmplY3QmKSBvdmVycmlkZSB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQogCi0gICAgdmly
dHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4g
c19yZXNvdXJjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNv
dXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQogICAg
IHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgc19yZXNvdXJjZVR5cGU7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUmFkaWFsR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCmluZGV4IDk2MjAzMjg5N2YzNDc3NDkyZWNlMTA0
YTNhNmNkMjBhNTM0OTM1MDQuLmY1YTY1NDM4Y2I0ZGM3ZmI1ZjA3ZWUwYjk1OTM1YTQ3ODkxMmMw
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VSYWRpYWxHcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCkBAIC0zNiwxMiArMzYsMTIgQEAgcHVi
bGljOgogCiAgICAgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50JiByYWRpYWxHcmFkaWVudEVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ+KFJl
bmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmdyYWRpZW50RWxlbWVudCgpKTsgfQogCi0gICAgdmly
dHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4g
c19yZXNvdXJjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNv
dXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQogICAg
IHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgc19yZXNvdXJjZVR5cGU7CiAKLSAgICB2aXJ0
dWFsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0IHsgcmV0
dXJuIG1fYXR0cmlidXRlcy5ncmFkaWVudFVuaXRzKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2Fs
Y3VsYXRlR3JhZGllbnRUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pIHsgdHJh
bnNmb3JtID0gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VHJhbnNmb3JtKCk7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgYnVpbGRHcmFkaWVudChHcmFkaWVudERhdGEqKSBjb25zdDsKKyAgICB2aXJ0dWFsIFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fYXR0cmlidXRlcy5ncmFkaWVudFVuaXRzKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
Y2FsY3VsYXRlR3JhZGllbnRUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pIG92
ZXJyaWRlIHsgdHJhbnNmb3JtID0gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VHJhbnNmb3JtKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgYnVpbGRHcmFkaWVudChHcmFkaWVudERhdGEqKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIEZsb2F0UG9pbnQgY2VudGVyUG9pbnQoY29uc3QgUmFkaWFsR3JhZGllbnRB
dHRyaWJ1dGVzJikgY29uc3Q7CiAgICAgRmxvYXRQb2ludCBmb2NhbFBvaW50KGNvbnN0IFJhZGlh
bEdyYWRpZW50QXR0cmlidXRlcyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuaAppbmRleCBmZjU0OGVhYzk5MDkzZjNiMzJjYzg1MWFlOTgxOTg5
ZTdmZmQ0M2Q1Li5hY2U5MjNlZTI1OGYyMTFkZjYxYjkyNjdlYTQxODc2MjgyNWY2ZGVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApAQCAtOTAsNyAr
OTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9vYmplY3RCb3VuZGluZ0JveDsgfQogICAgIHZp
cnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9zdHJva2VCb3VuZGluZ0JveDsgfQogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRS
ZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXBhaW50
Qm91bmRpbmdCb3g7IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxD
b29yZGluYXRlc0V4Y2x1ZGluZ1NWR1NoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWludEJv
dW5kaW5nQm94RXhjbHVkaW5nU2hhZG93OyB9CisgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5M
b2NhbENvb3JkaW5hdGVzRXhjbHVkaW5nU1ZHU2hhZG93KCkgY29uc3QgeyByZXR1cm4gbV9yZXBh
aW50Qm91bmRpbmdCb3hFeGNsdWRpbmdTaGFkb3c7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRU
ZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaAppbmRleCBlOTcyY2JlYzVkY2ZkZDA0
YjVhZmZlODljYTljNWNmYzk1MzE2NjViLi4zZmQ5Nzk3MTVkODY1ZTE3YmNhNTRiZjRjNzYyMTkz
ODA0MzlkY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1RTcGFuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
U3Bhbi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGdy
YXBoaWNzRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwotICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdUU3BhbiI7IH0KKyAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyU1ZHVFNwYW4iOyB9CiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5oCmluZGV4IDA3YjE4MTNhNjNmMWZhY2JkNjE4N2YxZDQyOTEwODhiODMx
YzVhNTEuLmQ5NjBlN2UwYjUwODAwNzI2NWE4NWEwYWM3MGQzZjc2ODM3YmVjNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCkBAIC0zOSwxMiArMzks
MTIgQEAgcHVibGljOgogCiAgICAgU1ZHVGV4dEVsZW1lbnQmIHRleHRFbGVtZW50KCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0Jiwg
Y29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93
ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIHZvaWQgc2V0TmVlZHNQb3NpdGlvbmluZ1ZhbHVlc1VwZGF0ZSgpIHsgbV9uZWVk
c1Bvc2l0aW9uaW5nVmFsdWVzVXBkYXRlID0gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSBvdmVycmlkZSB7IG1f
bmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXROZWVkc1RleHRNZXRy
aWNzVXBkYXRlKCkgeyBtX25lZWRzVGV4dE1ldHJpY3NVcGRhdGUgPSB0cnVlOyB9Ci0gICAgdmly
dHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIFJlbmRlclNWR1RleHQqIGxvY2F0ZVJlbmRlclNWR1Rl
eHRBbmNlc3RvcihSZW5kZXJPYmplY3QmKTsKICAgICBzdGF0aWMgY29uc3QgUmVuZGVyU1ZHVGV4
dCogbG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKGNvbnN0IFJlbmRlck9iamVjdCYpOwpAQCAt
NjQsMTggKzY0LDE4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBncmFwaGljc0VsZW1l
bnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdUZXh0IjsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c1NWR1RleHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1RleHQiOyB9
CisgICAgdmlydHVhbCBib29sIGlzU1ZHVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0
aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0
VGVzdEFjdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbik7Ci0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRp
b24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lv
biopOworICAgIHZpcnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhp
dFRlc3RBY3Rpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0
aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxv
d1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJl
cGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5
b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Qgb3ZlcnJpZGU7CkBAIC04MywxNiAr
ODMsMTYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVy
KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9y
bVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncyA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCog
d2FzRml4ZWQgPSAwKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9i
amVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmpl
Y3QqIGJlZm9yZUNoaWxkID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9i
amVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSBudWxscHRyKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zv
cm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9Ci0gICAgdmlydHVhbCBBZmZp
bmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNm
b3JtOyB9CisgICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRU
cmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9Cisg
ICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9w
dHI8Um9vdElubGluZUJveD4gY3JlYXRlUm9vdElubGluZUJveCgpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdDsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRmlyc3RMZXR0ZXIoKTsKKyAgICB2aXJ0dWFsIFJlbmRlckJsb2NrKiBmaXJz
dExpbmVCbG9jaygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGaXJz
dExldHRlcigpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRIYW5kbGVTdWJ0cmVlTXV0YXRp
b25zKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmgKaW5kZXggNjdkMGE1Njdi
ZDI0ZTliOWMxOWEzYzA4YzNhMzY3OGJmMTg4MDIxNS4uOWVkYWJlZWU3MTMyNDc2OTRjNmZmODg3
N2M5N2YwZDQxMGE0ZDc1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmgKQEAgLTMyLDE1
ICszMiwxNSBAQCBwdWJsaWM6CiAgICAgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcihT
VkdHcmFwaGljc0VsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAgICAgU1ZHR3JhcGhp
Y3NFbGVtZW50JiBncmFwaGljc0VsZW1lbnQoKSB7IHJldHVybiBkb3duY2FzdDxTVkdHcmFwaGlj
c0VsZW1lbnQ+KFJlbmRlclNWR0NvbnRhaW5lcjo6ZWxlbWVudCgpKTsgfQogCi0gICAgdmlydHVh
bCBib29sIGlzU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5z
Zm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0
cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpIHsgcmV0
dXJuIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZH
VHJhbnNmb3JtYWJsZUNvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9y
bSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSBvdmVycmlkZSB7IG1fbmVlZHNUcmFu
c2Zvcm1VcGRhdGUgPSB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGRpZFRyYW5zZm9ybVRvUm9v
dFVwZGF0ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlOyB9
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7Ci0gICAgdmly
dHVhbCBib29sIGNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKCk7Ci0gICAgdmlydHVhbCBBZmZpbmVU
cmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3Jt
OyB9CisgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAKICAgICBib29sIG1fbmVlZHNUcmFu
c2Zvcm1VcGRhdGUgOiAxOwogICAgIGJvb2wgbV9kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGUgOiAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3
cG9ydENvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdW
aWV3cG9ydENvbnRhaW5lci5oCmluZGV4IGNjNTI0ODYxMmY4MTJlNmI5ZTY5NWJkMzljMWExZjZj
Y2MzOTFlN2YuLmY2MjRmNWY0N2RjZGJhOGM4OWEyMTg5YzhiZjBjY2VlYmNjYmNkMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250
YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdw
b3J0Q29udGFpbmVyLmgKQEAgLTM4LDI3ICszOCwyNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0
IHZpZXdwb3J0KCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydDsgfQogCiAgICAgYm9vbCBpc0xh
eW91dFNpemVDaGFuZ2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xheW91dFNpemVDaGFuZ2VkOyB9
Ci0gICAgdmlydHVhbCBib29sIGRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpIHsgcmV0dXJuIG1f
ZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlOyB9CisgICAgdmlydHVhbCBib29sIGRpZFRyYW5zZm9y
bVRvUm9vdFVwZGF0ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBk
YXRlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lSWZMYXlvdXRTaXplQ2hhbmdlZCgp
OwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9uZWVkc1Ry
YW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lSWZMYXlv
dXRTaXplQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5z
Zm9ybVVwZGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRl
OwogCi0gICAgdmlydHVhbCBib29sIGlzU1ZHVmlld3BvcnRDb250YWluZXIoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
eyByZXR1cm4gIlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIjsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc1NWR1ZpZXdwb3J0Q29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciI7IH0KIAogICAgIEFmZmluZVRyYW5z
Zm9ybSB2aWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2Nh
bFRvUGFyZW50VHJhbnNmb3JtOyB9CisgICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvY2Fs
VG9QYXJlbnRUcmFuc2Zvcm07IH0KIAotICAgIHZpcnR1YWwgdm9pZCBjYWxjVmlld3BvcnQoKTsK
LSAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0oKTsKKyAgICB2aXJ0dWFs
IHZvaWQgY2FsY1ZpZXdwb3J0KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGNhbGN1bGF0
ZUxvY2FsVHJhbnNmb3JtKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlWaWV3
cG9ydENsaXAoUGFpbnRJbmZvJik7Ci0gICAgdmlydHVhbCBib29sIHBvaW50SXNJbnNpZGVWaWV3
cG9ydENsaXAoY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCk7CisgICAgdmlydHVhbCB2
b2lkIGFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
Ym9vbCBwb2ludElzSW5zaWRlVmlld3BvcnRDbGlwKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5Q
YXJlbnQpIG92ZXJyaWRlOwogCiAgICAgRmxvYXRSZWN0IG1fdmlld3BvcnQ7CiAgICAgbXV0YWJs
ZSBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaAppbmRleCA3YjdkODU3ZjEy
ZjljODk5MDc4MGY3OTE1ZDYzYWI2NzlmNzI5YmJiLi44NTliZmUyODU2NTYzNTAzNWZkNTZhMDUw
NGI4NDM5YWJlNmI0Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR0lubGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R0lubGluZVRleHRCb3guaApAQCAtMzcsMjggKzM3LDI4IEBAIHB1YmxpYzoKIAogICAgIFJlbmRl
clNWR0lubGluZVRleHQmIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVy
U1ZHSW5saW5lVGV4dD4oSW5saW5lVGV4dEJveDo6cmVuZGVyZXIoKSk7IH0KIAotICAgIHZpcnR1
YWwgZmxvYXQgdmlydHVhbExvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxI
ZWlnaHQ7IH0KKyAgICB2aXJ0dWFsIGZsb2F0IHZpcnR1YWxMb2dpY2FsSGVpZ2h0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9sb2dpY2FsSGVpZ2h0OyB9CiAgICAgdm9pZCBzZXRMb2dpY2Fs
SGVpZ2h0KGZsb2F0IGhlaWdodCkgeyBtX2xvZ2ljYWxIZWlnaHQgPSBoZWlnaHQ7IH0KIAotICAg
IHZpcnR1YWwgaW50IHNlbGVjdGlvblRvcCgpIHsgcmV0dXJuIHRvcCgpOyB9Ci0gICAgdmlydHVh
bCBpbnQgc2VsZWN0aW9uSGVpZ2h0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihjZWlsZiht
X2xvZ2ljYWxIZWlnaHQpKTsgfQotICAgIHZpcnR1YWwgaW50IG9mZnNldEZvclBvc2l0aW9uKGZs
b2F0IHgsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMgPSB0cnVlKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGZsb2F0IHBvc2l0aW9uRm9yT2Zmc2V0KGludCBvZmZzZXQpIGNvbnN0OworICAgIGludCBz
ZWxlY3Rpb25Ub3AoKSB7IHJldHVybiB0b3AoKTsgfQorICAgIGludCBzZWxlY3Rpb25IZWlnaHQo
KSB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKG1fbG9naWNhbEhlaWdodCkpOyB9Cisg
ICAgdmlydHVhbCBpbnQgb2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgeCwgYm9vbCBpbmNsdWRlUGFy
dGlhbEdseXBocyA9IHRydWUpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgZmxvYXQgcG9z
aXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBh
aW50U2VsZWN0aW9uQmFja2dyb3VuZChQYWludEluZm8mKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExh
eW91dFVuaXQgbGluZUJvdHRvbSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYs
IGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVC
b3R0b20pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbFNlbGVjdGlvblJl
Y3QoaW50IHN0YXJ0UG9zaXRpb24sIGludCBlbmRQb3NpdGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBib29sIG1hcFN0YXJ0RW5kUG9zaXRpb25zSW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMoY29u
c3QgU1ZHVGV4dEZyYWdtZW50JiwgaW50JiBzdGFydFBvc2l0aW9uLCBpbnQmIGVuZFBvc2l0aW9u
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNhbGN1bGF0ZUJvdW5kYXJpZXMoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjYWxjdWxhdGVCb3VuZGFyaWVzKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyVGV4dEZyYWdtZW50cygpIHsgbV90ZXh0RnJhZ21l
bnRzLmNsZWFyKCk7IH0KICAgICBWZWN0b3I8U1ZHVGV4dEZyYWdtZW50PiYgdGV4dEZyYWdtZW50
cygpIHsgcmV0dXJuIG1fdGV4dEZyYWdtZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxTVkdUZXh0
RnJhZ21lbnQ+JiB0ZXh0RnJhZ21lbnRzKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0RnJhZ21lbnRz
OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlydHlPd25MaW5lQm94ZXMoKSBvdmVycmlkZSBmaW5h
bDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlydHlMaW5lQm94ZXMoKSBvdmVycmlkZSBmaW5hbDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlydHlPd25MaW5lQm94ZXMoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlydHlMaW5lQm94ZXMoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc3RhcnRzTmV3VGV4
dENodW5rKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydHNOZXdUZXh0Q2h1bms7IH0KICAgICB2b2lk
IHNldFN0YXJ0c05ld1RleHRDaHVuayhib29sIG5ld1RleHRDaHVuaykgeyBtX3N0YXJ0c05ld1Rl
eHRDaHVuayA9IG5ld1RleHRDaHVuazsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jvb3RJbmxpbmVCb3guaAppbmRleCBiMzdlMDRhMjFkY2IzM2FhODUxNWMxOTU1YTdi
YjUxYjdjZmNhMmE2Li5lZWEzMGY1MDc2MzY5NjJhODNiZDFiM2I3NWIzNGUwNWNmZWRhOTE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaApA
QCAtMzgsMTcgKzM4LDE3IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlclNWR1RleHQmIHJlbmRlclNW
R1RleHQoKTsKIAotICAgIHZpcnR1YWwgZmxvYXQgdmlydHVhbExvZ2ljYWxIZWlnaHQoKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2xvZ2ljYWxIZWlnaHQ7IH0KKyAgICB2aXJ0dWFs
IGZsb2F0IHZpcnR1YWxMb2dpY2FsSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9s
b2dpY2FsSGVpZ2h0OyB9CiAgICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0KGZsb2F0IGhlaWdodCkg
eyBtX2xvZ2ljYWxIZWlnaHQgPSBoZWlnaHQ7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0
VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91
dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNvbXB1dGVQZXJDaGFyYWN0
ZXJMYXlvdXRJbmZvcm1hdGlvbigpOwogCiAgICAgSW5saW5lQm94KiBjbG9zZXN0TGVhZkNoaWxk
Rm9yUG9zaXRpb24oY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IGJvb2wgaXNTVkdSb290SW5saW5lQm94KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jvb3RJbmxpbmVCb3goKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCByZW9yZGVyVmFsdWVMaXN0cyhWZWN0b3I8
U1ZHVGV4dExheW91dEF0dHJpYnV0ZXMqPiYpOwogICAgIHZvaWQgbGF5b3V0Q2hhcmFjdGVyc0lu
VGV4dEJveGVzKElubGluZUZsb3dCb3gqLCBTVkdUZXh0TGF5b3V0RW5naW5lJik7CiAgICAgdm9p
ZCBsYXlvdXRDaGlsZEJveGVzKElubGluZUZsb3dCb3gqLCBGbG9hdFJlY3QqID0gMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240312</attachid>
            <date>2014-10-22 17:33:29 -0700</date>
            <delta_ts>2014-10-22 19:08:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137984-20141022173334.patch</filename>
            <type>text/plain</type>
            <size>118117</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdhN2FiMzY4OTFhODcx
MzdmZTllNjEwMDM1YzMyZDMwNGU2Nzc3ZC4uYjM3ZWEwM2FkMGQxZDczYWExNDA0MDE2ZGVjNWE3
YjVhYTU1OWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAxNC0xMC0yMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHZpcnR1YWwg
ZnVuY3Rpb25zIGluIHJlbmRlcmluZy8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENsZWFuIHVwIHZpcnR1YWwgZnVuY3Rpb25zIGluIHJlbmRlcmluZy8g
Ynk6CisgICAgICAgIC0gTWFraW5nIHZpcnR1YWwgZnVuY3Rpb25zIGZpbmFsIHdoZW4gcG9zc2li
bGUKKyAgICAgICAgLSBNYWtpbmcgY2xhc3NlcyBmaW5hbCB3aGVuIHBvc3NpYmxlCisgICAgICAg
IC0gVXNpbmcgJ292ZXJyaWRlJyB3aGVuIGFwcHJvcHJpYXRlCisgICAgICAgIC0gRXhwbGljaXRs
eSBtYXJraW5nIGZ1bmN0aW9ucyAvIGRlc3RydWN0b3JzIGFzIHZpcnR1YWwgd2hlbiB0aGV5IGFy
ZQorICAgICAgICAgIGluaGVyZW50bHkgdmlydHVhbAorICAgICAgICAtIERyb3BwaW5nIHZpcnR1
YWwgZGVzdHJ1Y3RvcnMgd2hlbiB0aGUgY2xhc3MgZG9lcyBub3QgaGF2ZSBzdWJjbGFzc2VzCisg
ICAgICAgICAgYW5kIG1hcmsgdGhlIGNsYXNzIGFzIGZpbmFsLCB0byBnZXQgcmlkIG9mIHVubmVj
ZXNzYXJ5IHZ0YWJsZXMKKyAgICAgICAgLSBNYWtpbmcgaXNYWFgoKSB2aXJ0dWFsIGZ1bmN0aW9u
cyBwcml2YXRlIG9uIFhYWCBjbGFzc2VzIHRvIGF2b2lkCisgICAgICAgICAgdW5uZWNlc3Nhcnkg
dHlwZSBjaGVja3MKKyAgICAgICAgLSBEZS12aXJ0dWFsaXppbmcgc29tZSBmdW5jdGlvbnMgdGhh
dCBkbyBub3QgbmVlZCB0byBiZSB2aXJ0dWFsCisgICAgICAgIC0gRHJvcHBpbmcgZmluYWwgZm9y
IHZpcnR1YWwgZnVuY3Rpb25zIGluIGNsYXNzZXMgYWxyZWFkeSBtYXJrZWQgYXMKKyAgICAgICAg
ICBmaW5hbAorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisg
ICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0NsaXBQYXRo
T3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6dHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6aXNTYW1lVHlwZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL0VsbGlwc2lzQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0ZpeGVk
VGFibGVMYXlvdXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQ29tYmluZVRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlk
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJNYXJxdWVlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlh
Q29udHJvbEVsZW1lbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
Rmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyUXVvdGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnJlbmRlck5hbWUpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclJ1YnlCYXNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp+
UmVuZGVyU2Nyb2xsYmFyVGhlbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OnNjcm9sbGJhclRoaWNrbmVzcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uc1BsYWNlbWVudCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6c3VwcG9ydHNDb250cm9s
VGludHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OnNob3VsZENlbnRlck9uVGh1bWIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YXV0b3Njcm9sbFRpbWVyRGVs
YXkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJl
Z2lzdGVyU2Nyb2xsYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9s
bGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dEZyYWdtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lU2FmYXJpLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6
c3VwcG9ydHNDb250cm9sVGludHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnNob3VsZFNob3dQbGFjZWhvbGRlcldoZW5Gb2N1c2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlkZW8uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9UcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
Y3JpcHRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5o
OgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zaGFwZXMvUG9seWdvblNoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0
ZXJTaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UGVuZGluZ0ltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6IERlbGV0ZWQuCisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdFbGxpcHNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFya2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdy
YWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaDoK
KwogMjAxNC0xMC0yMSAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Omhhc0F1ZGlvKCkgcmV0dXJucyBmYWxzZSBl
dmVuIHdoZW4gdGhlcmUgaXMgYW4gYXVkaWJsZSBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uIHNlbGVj
dGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmNwcAppbmRleCAyNjJjNjAwNmY1M2Y4MWZmYzdmYWY4MjFjOTZlNmQxMTg4M2NjZGY5Li5mOWNl
ZDZkZjE0Mjg1YTBmOTUyMTYxNDZiNzU0MGU2MjcyOGU4YmVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTEwOSw3ICsxMDks
NyBAQCBib29sIFJlbmRlclNsaWRlclRodW1iOjppc1NsaWRlclRodW1iKCkgY29uc3QKIAogLy8g
RklYTUU6IEZpbmQgYSB3YXkgdG8gY2FzY2FkZSBhcHBlYXJhbmNlIGFuZCBhZGp1c3QgaGVpZ2h0
cywgYW5kIGdldCByaWQgb2YgdGhpcyBjbGFzcy4KIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvNjI1
MzUKLWNsYXNzIFJlbmRlclNsaWRlckNvbnRhaW5lciA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJv
eCB7CitjbGFzcyBSZW5kZXJTbGlkZXJDb250YWluZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxl
eGlibGVCb3ggewogcHVibGljOgogICAgIFJlbmRlclNsaWRlckNvbnRhaW5lcihTbGlkZXJDb250
YWluZXJFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICAg
ICAgOiBSZW5kZXJGbGV4aWJsZUJveChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5oCmluZGV4IDRjMGMzNDBiMjVlMWM0
NWZmMTg5YzJkMTNiZjdmZTNjYTgxOTRjMDIuLjJmMzE5ZmVhOGRhNjcyYzE0MThmODg0MWNiMjI4
NWYyZTJjMGE5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFi
bGVMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0
LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVuZGVyVGFi
bGU7CiBjbGFzcyBSZW5kZXJUYWJsZUNlbGw7CiAKLWNsYXNzIEF1dG9UYWJsZUxheW91dCA6IHB1
YmxpYyBUYWJsZUxheW91dCB7CitjbGFzcyBBdXRvVGFibGVMYXlvdXQgZmluYWwgOiBwdWJsaWMg
VGFibGVMYXlvdXQgewogcHVibGljOgogICAgIGV4cGxpY2l0IEF1dG9UYWJsZUxheW91dChSZW5k
ZXJUYWJsZSopOwogICAgIHZpcnR1YWwgfkF1dG9UYWJsZUxheW91dCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaAppbmRleCA3OWI2NjVjY2ZkMTZjMDIy
MDY3YjU5MDZiZjk2NzJmMTA0NzJkMWQ2Li5lNzIzMWU2Y2E0MDMyOGVmZTRiMDYyZTI5YTgxMTM3
MmNkY2Q2NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhP
cGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRp
b24uaApAQCAtNTIsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ2xpcFBhdGhPcGVyYXRpb24mKSBjb25zdCA9IDA7CiAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09
IG8pOyB9CiAKLSAgICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NhbWVUeXBlKGNvbnN0IENsaXBQYXRoT3Bl
cmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiBvLnR5cGUoKSA9PSBtX3R5cGU7IH0KKyAgICBPcGVy
YXRpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBib29sIGlzU2Ft
ZVR5cGUoY29uc3QgQ2xpcFBhdGhPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuIG8udHlwZSgp
ID09IG1fdHlwZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ2xpcFBhdGhPcGVyYXRp
b24oT3BlcmF0aW9uVHlwZSB0eXBlKQpAQCAtNjQsNyArNjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
T3BlcmF0aW9uVHlwZSBtX3R5cGU7CiB9OwogCi1jbGFzcyBSZWZlcmVuY2VDbGlwUGF0aE9wZXJh
dGlvbiA6IHB1YmxpYyBDbGlwUGF0aE9wZXJhdGlvbiB7CitjbGFzcyBSZWZlcmVuY2VDbGlwUGF0
aE9wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDbGlwUGF0aE9wZXJhdGlvbiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFnbWVudCkKICAgICB7CkBAIC05NCw3
ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZnJhZ21lbnQ7CiB9OwogCi1jbGFzcyBT
aGFwZUNsaXBQYXRoT3BlcmF0aW9uIDogcHVibGljIENsaXBQYXRoT3BlcmF0aW9uIHsKK2NsYXNz
IFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24gZmluYWwgOiBwdWJsaWMgQ2xpcFBhdGhPcGVyYXRpb24g
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+
IGNyZWF0ZShQYXNzUmVmPEJhc2ljU2hhcGU+IHNoYXBlKQogICAgIHsKQEAgLTEzMyw3ICsxMzMs
NyBAQCBwcml2YXRlOgogICAgIENTU0JveFR5cGUgbV9yZWZlcmVuY2VCb3g7CiB9OwogCi1jbGFz
cyBCb3hDbGlwUGF0aE9wZXJhdGlvbiA6IHB1YmxpYyBDbGlwUGF0aE9wZXJhdGlvbiB7CitjbGFz
cyBCb3hDbGlwUGF0aE9wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDbGlwUGF0aE9wZXJhdGlvbiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Qm94Q2xpcFBhdGhPcGVyYXRpb24+IGNy
ZWF0ZShDU1NCb3hUeXBlIHJlZmVyZW5jZUJveCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FbGxpcHNpc0JveC5oCmluZGV4IGYzY2Y4ZGI2ZjFhZmRmMGY4MGRhMWFmMTA0MmMxMDU1M2Jk
N2VkYjUuLjk1Nzc1ZDBlZDQ1ZDIxMjdhYmUxMDc1YmFhZWM1M2YyYjQ3MzM0OGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIEhp
dFRlc3RSZXN1bHQ7CiBjbGFzcyBFbGxpcHNpc0JveCBmaW5hbCA6IHB1YmxpYyBJbmxpbmVFbGVt
ZW50Qm94IHsKIHB1YmxpYzoKICAgICBFbGxpcHNpc0JveChSZW5kZXJCbG9ja0Zsb3cmLCBjb25z
dCBBdG9taWNTdHJpbmcmIGVsbGlwc2lzU3RyLCBJbmxpbmVGbG93Qm94KiBwYXJlbnQsIGludCB3
aWR0aCwgaW50IGhlaWdodCwgaW50IHksIGJvb2wgZmlyc3RMaW5lLCBib29sIGlzVmVydGljYWws
IElubGluZUJveCogbWFya3VwQm94KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZv
JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGlu
ZUJvdHRvbSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYs
IEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWlu
ZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5l
VG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2VsZWN0
aW9uU3RhdGUoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzKSB7IG1fc2VsZWN0aW9uU3Rh
dGUgPSBzOyB9CiAgICAgSW50UmVjdCBzZWxlY3Rpb25SZWN0KCk7CkBAIC00MCw4ICs0MCw4IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHBhaW50TWFya3VwQm94KFBhaW50SW5mbyYs
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlv
dXRVbml0IGxpbmVCb3R0b20sIGNvbnN0IFJlbmRlclN0eWxlJik7Ci0gICAgdmlydHVhbCBpbnQg
aGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KLSAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoKSB7IHJldHVybiBtX3NlbGVjdGlv
blN0YXRlOyB9CisgICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9Cisg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGF0ZTsgfQogICAgIHZvaWQgcGFpbnRTZWxl
Y3Rpb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJT
dHlsZSYsIGNvbnN0IEZvbnQmKTsKICAgICBJbmxpbmVCb3gqIG1hcmt1cEJveCgpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuaAppbmRleCA5ZmE1
NmQxNzIyMWE1NWQxNDk2MmYzZWQ1ZjU2NGYyNWE1NjVhNjhlLi5kN2JjYmQ2NTUzMTA5MzFlYTg4
YzA2ZjExZGJkMTIzY2E1NmNiMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRml4ZWRUYWJsZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhl
ZFRhYmxlTGF5b3V0LmgKQEAgLTMwLDEzICszMCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFJlbmRlclRhYmxlOwogCi1jbGFzcyBGaXhlZFRhYmxlTGF5b3V0IDogcHVibGljIFRh
YmxlTGF5b3V0IHsKK2NsYXNzIEZpeGVkVGFibGVMYXlvdXQgZmluYWwgOiBwdWJsaWMgVGFibGVM
YXlvdXQgewogcHVibGljOgogICAgIGV4cGxpY2l0IEZpeGVkVGFibGVMYXlvdXQoUmVuZGVyVGFi
bGUqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhM
YXlvdXRVbml0JiBtaW5XaWR0aCwgTGF5b3V0VW5pdCYgbWF4V2lkdGgpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBhcHBseVByZWZlcnJlZExvZ2ljYWxXaWR0aFF1aXJrcyhMYXlvdXRVbml0
JiBtaW5XaWR0aCwgTGF5b3V0VW5pdCYgbWF4V2lkdGgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CiAgICAgaW50IGNhbGNXaWR0aEFycmF5KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guaAppbmRleCA5NjFhMDc1NDUzZDVmOTQ3YWVmNDY2
NDBkOGFjZWM3NGQ2MjNmZTg0Li41NjYzOTViMmI4ZjNkNTMxZGY3YTA2MWYyZmJiNjFkYTUxNjIx
YTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRWxlbWVudEJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVFbGVtZW50Qm94LmgKQEAg
LTQ0LDkgKzQ0LDkgQEAgcHVibGljOgogCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRl
cmVyKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KElubGlu
ZUJveDo6cmVuZGVyZXIoKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVMaW5lKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGV4dHJhY3RMaW5lKCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGF0dGFjaExpbmUoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
TGluZSgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBleHRyYWN0TGluZSgpIG92
ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hMaW5lKCkgb3ZlcnJpZGUgZmlu
YWw7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0
VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3As
IExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmgKaW5kZXggYWI3NjM5ZmExMmI3MzEzYjhkYWUyZmJjNmRlYWM2
NDA4ZGI0NDQ4ZS4uOTY2MWM1NjMzMzMwNDI4OTk4MDIyOTE5MDEzNjcxZWM4NjBlYzNjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtMjgwLDcgKzI4
MCw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIG11bHRpQ29s
dW1uRmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVCbG9ja0Zsb3dEYXRhKCkgPyBy
YXJlQmxvY2tGbG93RGF0YSgpLT5tX211bHRpQ29sdW1uRmxvd1RocmVhZCA6IG51bGxwdHI7IH0K
ICAgICB2b2lkIHNldE11bHRpQ29sdW1uRmxvd1RocmVhZChSZW5kZXJNdWx0aUNvbHVtbkZsb3dU
aHJlYWQqKTsKICAgICAKLSAgICBib29sIGNvbnRhaW5zRmxvYXRzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9mbG9hdGluZ09iamVjdHMgJiYgIW1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKS5p
c0VtcHR5KCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNGbG9hdHMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2Zsb2F0aW5nT2JqZWN0cyAmJiAhbV9mbG9hdGluZ09iamVjdHMtPnNl
dCgpLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgY29udGFpbnNGbG9hdChSZW5kZXJCb3gmKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVMaW5lcygpIG92ZXJyaWRlOwpAQCAtMzc2LDgg
KzM3Niw4IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHRGb3JDaGlsZEZv
ckZyYWdtZW50YXRpb24oY29uc3QgUmVuZGVyQm94JiBjaGlsZCkgY29uc3Q7CiAgICAgYm9vbCBo
YXNOZXh0UGFnZShMYXlvdXRVbml0IGxvZ2ljYWxPZmZzZXQsIFBhZ2VCb3VuZGFyeVJ1bGUgPSBF
eGNsdWRlUGFnZUJvdW5kYXJ5KSBjb25zdDsKIAotICAgIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2Jq
ZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwot
ICAgIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9i
amVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNyZWF0
ZU11bHRpQ29sdW1uRmxvd1RocmVhZCgpOwogICAgIHZvaWQgZGVzdHJveU11bHRpQ29sdW1uRmxv
d1RocmVhZCgpOwpAQCAtNDUwLDggKzQ1MCw4IEBAIHByb3RlY3RlZDoKICAgICBMYXlvdXRVbml0
IGNvbXB1dGVkQ29sdW1uV2lkdGgoKSBjb25zdDsKICAgICB1bnNpZ25lZCBjb21wdXRlZENvbHVt
bkNvdW50KCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBpc1RvcExheW91dE92ZXJmbG93QWxsb3dl
ZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNMZWZ0TGF5b3V0T3ZlcmZsb3dBbGxvd2Vk
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzVG9wTGF5b3V0T3ZlcmZsb3dB
bGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzTGVmdExheW91dE92
ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBtb3ZlRmxvYXRzVG8o
UmVuZGVyQmxvY2tGbG93KiB0b0Jsb2NrKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvbWJpbmVUZXh0LmgKaW5kZXggYTU5NThkNDA4NDIzYmNmODhmNzIxNTUyYzlj
MzQ0MTBlY2FmMjY1ZS4uMDFiZTRkNjNkMjZmODNjMmQwZTExMjAyZjMwZmFiNTU5ZjQ4YWRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmgKQEAgLTQ1
LDEwICs0NSwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgbm9kZSgpIGNvbnN0ID0g
ZGVsZXRlOwogCi0gICAgdmlydHVhbCBib29sIGlzQ29tYmluZVRleHQoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25l
ZCBsZW5ndGgsIGNvbnN0IEZvbnQmLCBmbG9hdCB4UG9zaXRpb24sIEhhc2hTZXQ8Y29uc3QgU2lt
cGxlRm9udERhdGEqPiogZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4g
IlJlbmRlckNvbWJpbmVUZXh0IjsgfQotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShT
dHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CisgICAgdmlydHVh
bCBib29sIGlzQ29tYmluZVRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgsIGNv
bnN0IEZvbnQmLCBmbG9hdCB4UG9zaXRpb24sIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEq
PiogZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlckNvbWJpbmVUZXh0IjsgfQorICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFJlbmRlcmVkVGV4dChjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKIAogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9jb21iaW5lRm9udFN0eWxlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKaW5kZXggYWRmYTg2YmQ0ZTZkNTFh
YWVkNDZjZmNkZGE0NjYzMmI1MDI0NWRlYy4uYmYzZDQ0NTYxY2MxMjVjODlkNTEyYzdmOTY3YTEy
MDM3ZDZiYmI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNv
dW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oCkBA
IC00MywxMiArNDMsMTIgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQ291bnRlcigpOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOworICAgIHZpcnR1
YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXND
b3VudGVyKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgb3JpZ2luYWxUZXh0KCkgY29uc3Q7
CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBib29sIGlzQ291bnRlcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
U3RyaW5nIG9yaWdpbmFsVGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAgIHZpcnR1YWwg
dm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94LmgKaW5kZXggOTQ3NGU4ODk0YzhjYmEzZGFiNGNhNGQ0ZWQzNGJlNjUy
OTU3NTRjYi4uYzYxYzU4Njk3Zjg5NDkyOTc4YWI0Y2ZmMTViNWZlMTE0OTU2MzA1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGli
bGVCb3guaApAQCAtMzYsMjIgKzM2LDIyIEBAIHB1YmxpYzoKIAogICAgIEVsZW1lbnQmIGVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3Vz
KCkpOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5k
ZXJTdHlsZSYgbmV3U3R5bGUpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dEJs
b2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlSGVpZ2h0ID0gMCk7Cisg
ICAgdmlydHVhbCB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0
VW5pdCBwYWdlSGVpZ2h0ID0gMCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsYXlvdXRIb3Jpem9udGFs
Qm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7CiAgICAgdm9pZCBsYXlvdXRWZXJ0aWNhbEJveChi
b29sIHJlbGF5b3V0Q2hpbGRyZW4pOwogCi0gICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXByZWNhdGVkRmxl
eGlibGVCb3goKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3Ry
ZXRjaGluZ0NoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9zdHJldGNoaW5nQ2hpbGRyZW47IH0K
KyAgICB2aXJ0dWFsIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1N0cmV0Y2hpbmdDaGlsZHJlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fc3RyZXRjaGluZ0NoaWxkcmVuOyB9CiAgICAgdmlydHVhbCBib29s
IGNhbkNvbGxhcHNlQW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICB2b2lkIHBsYWNlQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgY29uc3Qg
TGF5b3V0UG9pbnQmIGxvY2F0aW9uLCBMYXlvdXRTaXplKiBjaGlsZExheW91dERlbHRhID0gMCk7
CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzRGVwcmVjYXRlZEZsZXhpYmxlQm94KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
SW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91
dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKaW5kZXggMGJmNzE3MTZmMDM5YjY4
NGM0YTViMzVlNGZjZmY4ZGNmZmNhZDg0OC4uMmI2ZWZhYzYxODFlNmU4OGVlMWEzZWIxZjYxYmI5
Y2YyZjhiMDY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
ZXhpYmxlQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmgKQEAgLTQ0LDcgKzQ0LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNGbGV4
aWJsZUJveCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5Db2xsYXBzZUFub255bW91c0Jsb2NrQ2hpbGQoKSBj
b25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxI
ZWlnaHQgPSAwKSBvdmVycmlkZSBmaW5hbDsKQEAgLTU3LDggKzU2LDggQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc0hvcml6b250YWxGbG93KCkgY29uc3Q7CiAKLSAgICBib29sIGlzVG9wTGF5b3V0
T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0xlZnRMYXlvdXRP
dmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUb3BM
YXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNMZWZ0TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0
VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtODYsNiArODUsNyBAQCBwcml2YXRlOgogICAgIC8vIFVzZSBhbiBpbmxp
bmUgY2FwYWNpdHkgb2YgOCwgc2luY2UgZmxleGJveCBjb250YWluZXJzIHVzdWFsbHkgaGF2ZSBs
ZXNzIHRoYW4gOCBjaGlsZHJlbi4KICAgICB0eXBlZGVmIFZlY3RvcjxMYXlvdXRSZWN0LCA4PiBD
aGlsZEZyYW1lUmVjdHM7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNGbGV4aWJsZUJveCgpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGhhc09ydGhvZ29uYWxG
bG93KFJlbmRlckJveCYgY2hpbGQpIGNvbnN0OwogICAgIGJvb2wgaXNDb2x1bW5GbG93KCkgY29u
c3Q7CiAgICAgYm9vbCBpc0xlZnRUb1JpZ2h0RmxvdygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgKaW5kZXggNjY1NjU3MTNjZjFmMDdkNmVhOWYx
ZTg4N2M1MDEwNmQ1YmRiZmRmZS4uOWI2YzhkYjdiOTU4Y2VjMjc5ZmUyOTM1ZmU4MjMxMzUzYjI2
MTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3Jl
ZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCkBA
IC0zNiw3ICszNiw2IEBAIGNsYXNzIFJlbmRlckZ1bGxTY3JlZW4gZmluYWwgOiBwdWJsaWMgUmVu
ZGVyRmxleGlibGVCb3ggewogcHVibGljOgogICAgIFJlbmRlckZ1bGxTY3JlZW4oRG9jdW1lbnQm
LCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJGdWxs
U2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJGdWxs
U2NyZWVuIjsgfQogCiAgICAgdm9pZCBzZXRQbGFjZWhvbGRlcihSZW5kZXJCbG9jayopOwpAQCAt
NDcsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bndyYXBSZW5kZXJlcihib29sJiByZXF1
aXJlc1JlbmRlclRyZWVSZWJ1aWxkKTsKIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNS
ZW5kZXJGdWxsU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZp
cnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggY2YxYzczMDcyYmY2MzJkMGI5NmVi
MTQ4YTkyNTA3YzI4ZDNmN2FjMS4uYmIzNDk0YWE0OTc4Y2FlZTRlNDE4YWM2MDE0ODE1YzU1ODE4
NDM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC0xMDYsNyArMTA2
LDcgQEAgcHJpdmF0ZToKIAogICAgIExheW91dFVuaXQgZ3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQo
Y29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBW
ZWN0b3I8R3JpZFRyYWNrPiYpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q2hpbGRy
ZW4oUGFpbnRJbmZvJiBmb3JTZWxmLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIFBh
aW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KSBvdmVycmlkZSBmaW5hbDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDaGlsZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmlu
dFJlY3QpIG92ZXJyaWRlOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgdHJhY2tzQXJlV2lk
ZXJUaGFuTWluVHJhY2tCcmVhZHRoKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgVmVj
dG9yPEdyaWRUcmFjaz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5k
ZXggOWU3MWQyZDFkYWMyNzVjNjVhMGNiNDI4NzhjZGViMjQ4OTY3MGU4MS4uNGZlNmQ2MTI3M2I1
NTAzY2I1YzRjN2MwYjE2ZTg1MWVhYTRjZDAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmgKQEAgLTc4OSw3ICs3ODksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcmVzZXJ2
ZXMzRCgpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS50cmFuc2Zvcm1TdHlsZTNE
KCkgPT0gVHJhbnNmb3JtU3R5bGUzRFByZXNlcnZlM0Q7IH0KICAgICBib29sIGhhczNEVHJhbnNm
b3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0gJiYgIW1fdHJhbnNmb3JtLT5pc0FmZmlu
ZSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZmlsdGVyTmVlZHNSZXBhaW50KCk7CisgICAgdm9p
ZCBmaWx0ZXJOZWVkc1JlcGFpbnQoKTsKICAgICBib29sIGhhc0ZpbHRlcigpIGNvbnN0IHsgcmV0
dXJuIHJlbmRlcmVyKCkuaGFzRmlsdGVyKCk7IH0KIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJ
TkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5k
ZXggN2Q5MTg1ZjE5ZjYzMDk0ODIwNGYxODRjNDE4YjkyMzJiOGQ2MTJkOS4uZmU4ZWI4MzU3ZTk1
MGUxOWE3ZjMwMmI4NzQ5NmNlNjZmZjRiMjM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAtMjE5LDcgKzIxOSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgbmVlZHNQaXhlbEFsaWdtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIW1faXNNYWluRnJhbWVSZW5kZXJWaWV3TGF5ZXI7IH0KIAogI2lmbmRlZiBOREVCVUcKLSAg
ICB2aXJ0dWFsIHZvaWQgdmVyaWZ5Tm90UGFpbnRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmVy
aWZ5Tm90UGFpbnRpbmcoKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
TGF5b3V0UmVjdCBjb250ZW50c0JveCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IDJkNTE5MDFiYjZkODRjMmM2OTkx
OTllZjFiZTFiY2NlMGQ0ZTdmNjYuLjY0MjRjZjQ5MGE2ZDdlNDY5M2Q3MmFkOTY0Y2JiMWM4NzM4
ZjMzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmgKQEAgLTkyLDExICs5MiwxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIENvbXBvc2l0aW5n
UmVhc29uczsKIC8vIAogLy8gVGhlcmUgaXMgb25lIFJlbmRlckxheWVyQ29tcG9zaXRvciBwZXIg
UmVuZGVyVmlldy4KIAotY2xhc3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9yIDogcHVibGljIEdyYXBo
aWNzTGF5ZXJDbGllbnQsIHB1YmxpYyBHcmFwaGljc0xheWVyVXBkYXRlckNsaWVudCB7CitjbGFz
cyBSZW5kZXJMYXllckNvbXBvc2l0b3IgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVu
dCwgcHVibGljIEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW5kZXJMYXllckNvbXBvc2l0b3Io
UmVuZGVyVmlldyYpOwotICAgIH5SZW5kZXJMYXllckNvbXBvc2l0b3IoKTsKKyAgICB2aXJ0dWFs
IH5SZW5kZXJMYXllckNvbXBvc2l0b3IoKTsKIAogICAgIC8vIFJldHVybiB0cnVlIGlmIHRoaXMg
UmVuZGVyVmlldyBpcyBpbiAiY29tcG9zaXRpbmcgbW9kZSIgKGkuZS4gaGFzIG9uZSBvciBtb3Jl
CiAgICAgLy8gY29tcG9zaXRlZCBSZW5kZXJMYXllcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgKaW5kZXggMjY1ZjczZjJlYWIxOWFhOThj
MDNlZTlhY2MxNjk4NTk2OTk5YmE5Zi4uZjk5ZGUxMGM2YWIwNzJhOTY3NTlmMzZkNGU2MjdhNjQ5
NDliNDg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
RmlsdGVySW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZp
bHRlckluZm8uaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVt
b3ZlKFJlbmRlckxheWVyJik7CiAKICAgICBleHBsaWNpdCBGaWx0ZXJJbmZvKFJlbmRlckxheWVy
Jik7Ci0gICAgfkZpbHRlckluZm8oKTsKKyAgICB2aXJ0dWFsIH5GaWx0ZXJJbmZvKCk7CiAKICAg
ICBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVNvdXJjZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rp
cnR5U291cmNlUmVjdDsgfQogICAgIHZvaWQgZXhwYW5kRGlydHlTb3VyY2VSZWN0KGNvbnN0IExh
eW91dFJlY3QmIHJlY3QpIHsgbV9kaXJ0eVNvdXJjZVJlY3QudW5pdGUocmVjdCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAppbmRleCBkMGUzZmU1ZDI5NDcx
MmIyMjJjNDljNzNiMjgzYTNmNjdlMDYwZmY0Li5mNWY5NjQzNTMwN2RmM2M0OTM3MmFiMjdhZjc1
ODI1ZDRlNGM1MzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGluZUJyZWFrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVh
ay5oCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBub2RlKCkgY29uc3QgPSBk
ZWxldGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5hbCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSB7IH0KIAogICAg
IHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGludCBjYXJl
dE1pbk9mZnNldCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNYXJxdWVlLmgKaW5kZXggNmM4Nzk5MzdkMzU1OTgwNGY0NWQ3MWNkMGI3NzRiOGViZjkwNmMz
Mi4uODdjMjAyZGFhYjMzM2Q0MTkzZTM3ZDlhNWExZDAxYmZmYWNmNzlhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5oCkBAIC01MywxMSArNTMsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUmVuZGVyTGF5ZXI7CiAKIC8vIFRoaXMgY2xhc3MgaGFuZGxl
cyB0aGUgYXV0by1zY3JvbGxpbmcgb2YgbGF5ZXJzIHdpdGggb3ZlcmZsb3c6IG1hcnF1ZWUuCi1j
bGFzcyBSZW5kZXJNYXJxdWVlIHsKK2NsYXNzIFJlbmRlck1hcnF1ZWUgZmluYWwgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFJlbmRlck1hcnF1ZWUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW5kZXJNYXJxdWVlKFJlbmRlckxheWVyKik7Ci0g
ICAgdmlydHVhbCB+UmVuZGVyTWFycXVlZSgpOworICAgIH5SZW5kZXJNYXJxdWVlKCk7CiAKICAg
ICBpbnQgc3BlZWQoKSBjb25zdCB7IHJldHVybiBtX3NwZWVkOyB9CiAgICAgaW50IG1hcnF1ZWVT
cGVlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVkaWFDb250cm9sRWxlbWVudHMuaAppbmRleCA4NmQyNzc4ZjljODA2YjcwN2JmNDNmMWFjZWM4
YzFiYTJmYTYwYzBmLi43YTY1YzI5OTI5OGI4YzNiNjc4NDE2ZTk3NDgzMmJlM2Y1ZTljY2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxl
bWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9s
RWxlbWVudHMuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTWVkaWFWb2x1
bWVTbGlkZXJDb250YWluZXIoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKIAogcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91
dCgpIG92ZXJyaWRlOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt
NTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250
YWluZXIoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKIAogcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRl
OwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjMsNyArNjMsNyBA
QCBwdWJsaWM6CiAgICAgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChFbGVtZW50Jiwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4pOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiB9OwogCiAjZW5kaWYg
Ly8gRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCmluZGV4IDAyMjNjOTgyYzcyMGMzN2U2
NzU5NGEwNzhlOWM5YzgwYzBlYzE0NmYuLmY5NTVmYTJmZGU5NzRjNTJiOGZiMzYzOTdjM2ZmOTUy
MzA0MmIxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtbkZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKQEAgLTQxLDggKzQxLDYgQEAgcHVibGljOgogICAgIFJl
bmRlck11bHRpQ29sdW1uRmxvd1RocmVhZChEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
KTsKICAgICB+UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKCk7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaXNSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRmxvd0NoaWxkSW5mbyhSZW5kZXJP
YmplY3QqKSBvdmVycmlkZTsKIAogICAgIFJlbmRlckJsb2NrRmxvdyogbXVsdGlDb2x1bW5CbG9j
a0Zsb3coKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KHBhcmVudCgp
KTsgfQpAQCAtNTUsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJNdWx0aUNvbHVtblNw
YW5uZXJQbGFjZWhvbGRlciogZmluZENvbHVtblNwYW5uZXJQbGFjZWhvbGRlcihSZW5kZXJCb3gq
IHNwYW5uZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3Bhbm5lck1hcC5nZXQoc3Bhbm5lcik7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBGaW5kIHRoZSBzZXQgaW5zaWRlIHdoaWNo
IHRoZSBzcGVjaWZpZWQgcmVuZGVyZXIgd291bGQgYmUgcmVuZGVyZWQuCiAgICAgUmVuZGVyTXVs
dGlDb2x1bW5TZXQqIGZpbmRTZXRSZW5kZXJpbmcoUmVuZGVyT2JqZWN0KikgY29uc3Q7CkBAIC0x
MTUsNiArMTEzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDaGVja0NvbHVt
bkJyZWFrcygpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBp
c1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkUmVnaW9uVG9UaHJlYWQoUmVuZGVyUmVnaW9uKikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZVJlbW92ZWRGcm9tVHJlZSgpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaApp
bmRleCAyN2NhNzM3YzM4ZDgyYWNlNGRmNGM1Njc1Mjk5ZDFmZmI1NmUzNzZkLi44Y2FjMDUwNTRi
OGI1NDA0YzQwMGIzNzFlMzJkNGYxODlkNjFjOGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaApAQCAtNDcsOCArNDcsNiBAQCBjbGFzcyBS
ZW5kZXJNdWx0aUNvbHVtblNldCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJSZWdpb25TZXQgewogcHVi
bGljOgogICAgIFJlbmRlck11bHRpQ29sdW1uU2V0KFJlbmRlckZsb3dUaHJlYWQmLCBQYXNzUmVm
PFJlbmRlclN0eWxlPik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNdWx0aUNvbHVtblNl
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFJlbmRlckJsb2NrRmxv
dyogbXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxSZW5kZXJC
bG9ja0Zsb3c+KHBhcmVudCgpKTsgfQogICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCog
bXVsdGlDb2x1bW5GbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVy
TXVsdGlDb2x1bW5GbG93VGhyZWFkKj4oZmxvd1RocmVhZCgpKTsgfQogCkBAIC0xMzEsOSArMTI5
LDEwIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCgpIGNvbnN0OwogCiBwcm90
ZWN0ZWQ6Ci0gICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZHJlbigpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZHJlbigpIG92ZXJyaWRlOwogICAgIAog
cHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNdWx0aUNvbHVtblNldCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5p
dCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21w
dXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTU1LDcgKzE1NCw3IEBAIHByaXZhdGU6
CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFVuaXQgY2FsY3VsYXRl
TWF4Q29sdW1uSGVpZ2h0KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBjb2x1bW5HYXAoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVt
blNwYW5uZXJQbGFjZWhvbGRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgKaW5kZXggZjFhNWI4ODQ3M2I4NGFmNWE4YWIy
NWMzYmQzM2U0N2FiM2I0N2FlMy4uY2Y5ZDFiMzc5Y2M0ZmY5MWM3ZTM3NWU2ZWIzMTRmOGIwOTQx
NzhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgKQEAgLTQwLDE1ICs0MCwxNSBAQCBj
bGFzcyBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlciBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQ
bGFjZWhvbGRlciogY3JlYXRlQW5vbnltb3VzKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCos
IFJlbmRlckJveCogc3Bhbm5lciwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKIAotICAgIHZp
cnR1YWwgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIFJlbmRlckJveCogc3Bhbm5lcigpIGNvbnN0
IHsgcmV0dXJuIG1fc3Bhbm5lcjsgfQogICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCog
Zmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvd1RocmVhZDsgfQogCiBwcml2YXRlOgog
ICAgIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKFJlbmRlck11bHRpQ29sdW1u
Rmxvd1RocmVhZCosIFJlbmRlckJveCogc3Bhbm5lciwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBib29sIGNhbkhh
dmVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgeyB9CisgICAgdmlydHVhbCBib29s
IGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJp
ZGUgeyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBSZW5kZXJCb3gqIG1fc3Bhbm5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKaW5kZXggYzVlZmIzMjQ5NGMzODFh
NjJmODQ1NzFhZjE3N2E2NDQ2YjNjMWQ1YS4uMmMyNDY5Zjc3ZGE0NjBhMTY2YTgwNWU3ZTUwYmRj
YjYzYmQwM2MzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd0ZyYWdtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd0ZyYWdtZW50LmgKQEAgLTU0LDEyICs1NCwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBh
cmVudFN0eWxlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHlsZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdl
Pj4mKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCgp
IGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgbWF4UGFnZUxvZ2ljYWxIZWlnaHQoKSBjb25zdDsK
ICAgICAKICAgICBMYXlvdXRSZWN0IGZsb3dUaHJlYWRQb3J0aW9uUmVjdEZvckNsaXBwaW5nKGJv
b2wgaXNGaXJzdFJlZ2lvbkluUmFuZ2UsIGJvb2wgaXNMYXN0UmVnaW9uSW5SYW5nZSkgY29uc3Q7
CkBAIC0xMjEsNiArMTIwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZVJlZ2lvbklm
TmVlZGVkKCk7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50IjsgfQogCiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY29tcHV0
ZVN0eWxlSW5SZWdpb24oUmVuZGVyRWxlbWVudCYsIFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmgKaW5kZXggMWIwZTc5NDA1MzZmNzA4NDA0OTI5N2E1N2JkNTE1OTZkZDFkODdiZC4uZDg3
M2YxYjdiM2ZmNTY2ZTI0N2M1ZWRlYTlhMmVmMDMwOTJiMmYwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaApAQCAtODMsNyArODMsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc01hcmtlZEZvckRlc3RydWN0aW9uKCkgY29uc3Q7CiAgICAg
dm9pZCBnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+JiwgY29uc3QgUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseUJyZWFrQWZ0ZXJD
b250ZW50KExheW91dFVuaXQpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBhcHBs
eUJyZWFrQWZ0ZXJDb250ZW50KExheW91dFVuaXQpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBi
b29sIGNvbGxlY3RzR3JhcGhpY3NMYXllcnNVbmRlclJlZ2lvbnMoKSBjb25zdCBvdmVycmlkZTsK
IApAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyUmVuZGVyT2JqZWN0
Q3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyT2JqZWN0Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlRmxvd0NoaWxkSW5mbyhSZW5kZXJPYmplY3QqKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlRmxvd0NoaWxkSW5mbyhSZW5kZXJPYmplY3QqKSBvdmVycmlkZTsKIAog
ICAgIExheW91dFVuaXQgZmxvd0NvbnRlbnRCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX2Zsb3dD
b250ZW50Qm90dG9tOyB9CiAgICAgdm9pZCBkaXNwYXRjaE5hbWVkRmxvd0V2ZW50cygpOwpAQCAt
MTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTmFtZWRG
bG93VGhyZWFkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHls
ZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlT3ZlcmZsb3coTGF5
b3V0VW5pdCwgYm9vbCA9IGZhbHNlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0
KCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudElmTmVlZGVkKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmgKaW5kZXggZDVmYjFkMzVkYjAyZTdm
YTU1ZjVjYmE1ZTAyM2JlMjU4Y2ZiYjAxYi4uOTc0M2E0ZjQ3ZWE4OTBlMTAxN2U3ZTM1N2QwMDQ3
ZjA4MzQxNTY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1
b3RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmgKQEAgLTM5
LDcgKzM5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQo
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyUXVvdGUiOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUXVv
dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9OworICAgIHZpcnR1YWwgYm9vbCBp
c1F1b3RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZVJlbW92ZWRGcm9tVHJlZSgpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKaW5kZXggMjlkNzlkNTJh
NDM1ZDM4NjhiNGYzY2VmMGY1YzdhZDM3MmMyZTk3Zi4uYjNmMzFiODA4YmI2MzY4YjA2MzA3MDJj
NmMwMmJiY2ZiZTczYTMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
aApAQCAtNDgsOCArNDgsNiBAQCBjbGFzcyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ7CiAKIGNsYXNz
IFJlbmRlclJlZ2lvbiA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIHZp
cnR1YWwgYm9vbCBpc1JlbmRlclJlZ2lvbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KLQogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVu
Y2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CiAKICAgICB2b2lkIHNldEZsb3dUaHJl
YWRQb3J0aW9uUmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KSB7IG1fZmxvd1RocmVhZFBvcnRp
b25SZWN0ID0gcmVjdDsgfQpAQCAtMTUwLDcgKzE0OCw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IGNvbXB1dGVPdmVyZmxvd0Zyb21GbG93VGhyZWFkKCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclJlZ2lvbiI7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJSZWdpb24oKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJlZ2lvbiI7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBpbnNlcnRlZEludG9UcmVlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxC
ZVJlbW92ZWRGcm9tVHJlZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsaWNhLmgKaW5kZXggYzk0NWNiY2RiMmU2OThhM2U2Nzk5MmM0YmZjM2RhYjkyNGU4ZTA2
YS4uNWY0YTVhZTgyMDQwZGViM2QxNGNhZjU2NTA1MGU1YWM2YzI2YTYyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oCkBAIC0zOCwxMyArMzgsMTMgQEAgcHVibGlj
OgogICAgIFJlbmRlclJlcGxpY2EoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAg
ICAgdmlydHVhbCB+UmVuZGVyUmVwbGljYSgpOwogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclJlcGxpY2EiOyB9CisgICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRl
clJlcGxpY2EiOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lk
IHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIGlzUmVwbGljYSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKaW5kZXgg
YzMwYWExMTFlOWUyZjMzMzlmMjgzNTFiY2QzNjRkOTJjZTc1ZThhYi4uYjcyMGU1NzAyMTA1MzQ1
YmYzMDUxZmUwYzYzZGY3ZTYwODEyNjUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJ1YnlCYXNlLmgKQEAgLTQyLDE0ICs0MiwxMyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyUnVi
eUJhc2UoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVu
ZGVyUnVieUJhc2UoKTsKICAgICAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCB7IHJldHVybiAiUmVuZGVyUnVieUJhc2UgKGFub255bW91cykiOyB9Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNSdWJ5QmFzZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyUnVieUJhc2UgKGFub255bW91cykiOyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29s
IGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikg
Y29uc3Q7Ci0gICAgdmlydHVhbCBFVGV4dEFsaWduIHRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wg
ZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbmxpbmVE
aXJlY3Rpb25MaW5lQm91bmRzKGludCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50LCBmbG9hdCYg
bG9naWNhbExlZnQsIGZsb2F0JiBsb2dpY2FsV2lkdGgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBpc1J1YnlCYXNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJT
dHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgRVRleHRBbGlnbiB0ZXh0QWxpZ25t
ZW50Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyhpbnQgZXhwYW5zaW9u
T3Bwb3J0dW5pdHlDb3VudCwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgbG9naWNhbFdpZHRo
KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIG1lcmdlQ2hpbGRyZW5XaXRoQmFzZShSZW5kZXJS
dWJ5QmFzZSogdG9CbG9jayk7CiAKICAgICB2b2lkIG1vdmVDaGlsZHJlbihSZW5kZXJSdWJ5QmFz
ZSogdG9CYXNlLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaAppbmRleCBkOWRjZTRmNzhhNmVlNWUzNGNhNzY5OWVj
NGMxMDEzYTVmNjhjN2NlLi4wNzJjYmZlNDkzOTVjOGZiMDJjODNlYmZjMTMzZmQ1NzM0YTE4MTI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgKQEAgLTQ4LDIwICs0
OCwyMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1J1YnlUZXh0KCkgY29uc3Q7CiAgICAgYm9v
bCBoYXNSdWJ5QmFzZSgpIGNvbnN0OwotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVuZGVyUnVieVRleHQq
IHJ1YnlUZXh0KCkgY29uc3Q7CiAgICAgUmVuZGVyUnVieUJhc2UqIHJ1YnlCYXNlKCkgY29uc3Q7
CiAgICAgUmVuZGVyUnVieUJhc2UqIHJ1YnlCYXNlU2FmZSgpOyAvLyBjcmVhdGVzIHRoZSBiYXNl
IGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdAogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGxheW91dFNwZWNpYWxFeGNsdWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7Ci0gICAg
dmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlvdXRT
cGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0No
aWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CisgICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2Vk
KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9i
amVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJl
bmRlckJsb2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVGaXJzdExldHRlcigpOworICAgIHZpcnR1YWwgUmVuZGVyQmxvY2sqIGZpcnN0TGluZUJsb2Nr
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZpcnN0TGV0dGVyKCkg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldE92ZXJoYW5nKGJvb2wgZmlyc3RMaW5lLCBSZW5kZXJP
YmplY3QqIHN0YXJ0UmVuZGVyZXIsIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIsIGludCYgc3Rh
cnRPdmVyaGFuZywgaW50JiBlbmRPdmVyaGFuZykgY29uc3Q7CiAKQEAgLTcxLDEwICs3MSwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyUnVieUJhc2UqIGNyZWF0ZVJ1YnlCYXNlKCkgY29uc3Q7
CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzUnVieVJ1bigpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJl
dHVybiAiUmVuZGVyUnVieVJ1biAoYW5vbnltb3VzKSI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY3Jl
YXRlc0Fub255bW91c1dyYXBwZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHJlbW92ZUxlZnRvdmVyQW5vbnltb3VzQmxvY2soUmVuZGVyQmxvY2sqKSB7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNSdWJ5UnVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJSdWJ5UnVuIChhbm9ueW1vdXMpIjsgfQorICAgIHZpcnR1YWwgYm9vbCBj
cmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJCbG9j
ayopIG92ZXJyaWRlIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCmluZGV4IGRmMTBiNzUyZjFhYWU1M2Q1
MTA4NWMyNGY2OTc0NDAzYmQ2NmM5MTYuLmY2Y2IzMmQ2MmQ3MGM2NzAxYTc2NjQ4NDc3ZmJiZTE1
NTUxNDE4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgK
QEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgaW50IG1pbmltdW1UaHVtYkxlbmd0aCgp
OwogCi0gICAgdmlydHVhbCBib29sIGlzT3ZlcmxheVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzT3ZlcmxheVNjcm9sbGJhcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBmbG9hdCBvcGFjaXR5KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCmluZGV4IGNlYTc3
YmI3NGZhYjEwNmU4ZGE0Mzk2NjVmMzhmNjllYjE1NjQxMWMuLjRhODY2OTI3NWQxZjM2M2FmMGQ1
ZjcyMDY0NzFkMWZhMDAwMjczOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclBhcnQuaApAQCAtMzksMTEgKzM5LDExIEBAIHB1YmxpYzoKICAgICAKICAg
ICB2aXJ0dWFsIH5SZW5kZXJTY3JvbGxiYXJQYXJ0KCk7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU2Nyb2xsYmFyUGFydCI7IH0K
KyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyU2Nyb2xsYmFyUGFydCI7IH0KICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsK
ICAgICAKICAgICB2b2lkIHBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5
b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAKQEAgLTUzLDE1ICs1MywxNSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkxlZnQoKSBjb25zdCBvdmVycmlkZSB7
IEFTU0VSVChpc0ludGVnZXJWYWx1ZShtX21hcmdpbkJveC5sZWZ0KCkpKTsgcmV0dXJuIG1fbWFy
Z2luQm94LmxlZnQoKTsgfQogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5SaWdodCgpIGNv
bnN0IG92ZXJyaWRlIHsgQVNTRVJUKGlzSW50ZWdlclZhbHVlKG1fbWFyZ2luQm94LnJpZ2h0KCkp
KTsgcmV0dXJuIG1fbWFyZ2luQm94LnJpZ2h0KCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bmRlclNjcm9sbGJhclBhcnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgUmVuZGVyQm94
KiByZW5kZXJlck93bmluZ1Njcm9sbGJhcigpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmly
dHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5
bGUqIG9sZFN0eWxlKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFn
ZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJ
bnRSZWN0KiA9IDApIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpOworICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclNj
cm9sbGJhclBhcnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGxheW91dEhvcml6b250YWxQYXJ0KCk7CiAgICAgdm9pZCBsYXlvdXRWZXJ0aWNhbFBhcnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJU
aGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgK
aW5kZXggZTMzMWQwMDliNzdlZGE1MWVjZWQ2MjgyODc3NzM0MmM0YThlNGI0OS4uNTJlMDE2Zjcz
YmU1MjIwNTJiMDYzZjBjYjQ5MGVlNGQxYTZmOTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKQEAgLTM0LDUxICszNCw1MSBAQCBjbGFz
cyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiBjbGFzcyBTY3JvbGxiYXI7CiBjbGFzcyBTY3JvbGxWaWV3
OwogCi1jbGFzcyBSZW5kZXJTY3JvbGxiYXJUaGVtZSA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZSB7CitjbGFzcyBSZW5kZXJTY3JvbGxiYXJUaGVtZSBmaW5hbCA6IHB1YmxpYyBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+UmVuZGVyU2Nyb2xs
YmFyVGhlbWUoKSB7fTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJTY3JvbGxiYXJUaGVtZSgpIHsgfQog
ICAgIAotICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9s
U2l6ZSBjb250cm9sU2l6ZSkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNjcm9s
bGJhclRoaWNrbmVzcyhjb250cm9sU2l6ZSk7IH0KKyAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJU
aGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpIG92ZXJyaWRlIHsgcmV0
dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zY3JvbGxiYXJUaGlja25lc3MoY29udHJvbFNp
emUpOyB9CiAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgYnV0dG9uc1Bs
YWNlbWVudCgpIGNvbnN0IHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5idXR0b25z
UGxhY2VtZW50KCk7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgYnV0
dG9uc1BsYWNlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0
aGVtZSgpLT5idXR0b25zUGxhY2VtZW50KCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVt
ZSgpLT5zaG91bGRDZW50ZXJPblRodW1iKHNjcm9sbGJhciwgZXZlbnQpOyB9CisgICAgdmlydHVh
bCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgb3ZlcnJpZGUgeyByZXR1cm4gU2Ny
b2xsYmFyVGhlbWU6OnRoZW1lKCktPnNob3VsZENlbnRlck9uVGh1bWIoc2Nyb2xsYmFyLCBldmVu
dCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVs
YXkoKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+aW5pdGlhbEF1dG9zY3JvbGxU
aW1lckRlbGF5KCk7IH0KLSAgICB2aXJ0dWFsIGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgp
IHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5hdXRvc2Nyb2xsVGltZXJEZWxheSgp
OyB9CisgICAgdmlydHVhbCBkb3VibGUgaW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCkgb3Zl
cnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPmluaXRpYWxBdXRvc2Nyb2xs
VGltZXJEZWxheSgpOyB9CisgICAgdmlydHVhbCBkb3VibGUgYXV0b3Njcm9sbFRpbWVyRGVsYXko
KSBvdmVycmlkZSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+YXV0b3Njcm9sbFRp
bWVyRGVsYXkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVt
ZSgpLT5yZWdpc3RlclNjcm9sbGJhcihzY3JvbGxiYXIpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVu
cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikgeyByZXR1
cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFy
KTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyKSBvdmVycmlkZSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUo
KS0+cmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQorICAgIHZpcnR1YWwgdm9pZCB1bnJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpIG92ZXJyaWRl
IHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT51bnJlZ2lzdGVyU2Nyb2xsYmFyKHNj
cm9sbGJhcik7IH0KIAotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxi
YXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3Jv
bGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBidXR0b25TaXplc0Fsb25n
VHJhY2tBeGlzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFm
dGVyU2l6ZSk7CiAgICAgCiAgICAgc3RhdGljIFJlbmRlclNjcm9sbGJhclRoZW1lKiByZW5kZXJT
Y3JvbGxiYXJUaGVtZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRv
bnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxi
YXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3Jv
bGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tC
dXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2Up
OwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBi
b29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVj
dChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBm
YWxzZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNl
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwg
dm9pZCB3aWxsUGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGFpbnRTY3JvbGxiYXIoR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZTsKICAgICAKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50
UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1
YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlj
a21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50
UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVj
dFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7Cisg
ICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbi5oCmluZGV4IGY5OTMyNzkzMjc2NmEyNjk4MGU0ODM0NjViMjlhOTUw
Mzc1ZDczMzQuLjdmN2YzNTI2N2QzMTIwNzg1MzViMmRhODVhYzU5MjNhYzlhZTAyMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5o
CkBAIC00OSwxMSArNDksMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZyYW1lT3duZXJFbGVtZW50
KCkgY29uc3QgPSBkZWxldGU7CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3QgeyByZXR1cm4gIlJlbmRlclNuYXBzaG90dGVkUGx1Z0luIjsgfQogCi0gICAgdmlydHVh
bCBDdXJzb3JEaXJlY3RpdmUgZ2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiwgQ3Vyc29yJikg
Y29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBib29sIGlzU25hcHNob3R0ZWRQbHVn
SW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBD
dXJzb3JEaXJlY3RpdmUgZ2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiwgQ3Vyc29yJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzU25hcHNob3R0ZWRQbHVnSW4oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBi
b29sIGNhbkhhdmVXaWRnZXQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlV2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgcGFpbnRTbmFwc2hvdChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCmluZGV4IGQ2MmIwMDgzN2ZjYjliNjdjNTVlOGY5OWUy
Y2UzN2Q5YjI1MDg0NjcuLjA2NzlhMGZiYzliYTgxY2NkMTBjMDQ4ZmM1NjQ4MDVkMGVhM2E5ZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZS5oCkBAIC0zOCwxNyArMzgsMTcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2
b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1RleHRB
cmVhKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1RleHRBcmVh
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBib29sIG5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhp
dFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
ZmxvYXQgZ2V0QXZlcmFnZUNoYXJXaWR0aCgpOwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwcmVm
ZXJyZWRDb250ZW50TG9naWNhbFdpZHRoKGZsb2F0IGNoYXJXaWR0aCkgY29uc3Q7CisgICAgdmly
dHVhbCBmbG9hdCBnZXRBdmVyYWdlQ2hhcldpZHRoKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBM
YXlvdXRVbml0IHByZWZlcnJlZENvbnRlbnRMb2dpY2FsV2lkdGgoZmxvYXQgY2hhcldpZHRoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29tcHV0ZUNvbnRyb2xMb2dp
Y2FsSGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdodCwgTGF5b3V0VW5pdCBub25Db250ZW50SGVp
Z2h0KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRp
b25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdDsKKyAgICB2aXJ0dWFsIGlu
dCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRl
SW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0OwotICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJl
bGF5b3V0Q2hpbGRyZW4pOworICAgIHZpcnR1YWwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRl
SW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGls
ZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRG
cmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5o
CmluZGV4IDcyMzFiNTZmNTdlOGYwNDhlODU3NDFiNDIwMjA0ZDQ4NDlkMTIxYmYuLjgyZGNiMTll
MjgwMjNjMWM4MTNmM2M4MTExZGE1MzMxYWY3NGNhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgKQEAgLTM5LDggKzM5LDYgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB+UmVuZGVyVGV4dEZyYWdtZW50KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNUZXh0RnJhZ21lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICB2
aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1
bnNpZ25lZCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7IH0KQEAgLTU5LDYgKzU3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0QWx0VGV4dChjb25zdCBTdHJpbmcmIGFsdFRleHQpIHsg
bV9hbHRUZXh0ID0gYWx0VGV4dDsgfQogICAgIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wg
aXNUZXh0RnJhZ21lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5
bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVk
KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUd0ay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgK
aW5kZXggMGUxMDY1YjQ5NmM3MmRlZjQyMGNjYjZjMTk0YTY2NmE1YzQ3YjEyZC4uZmUxZmU2ZjJh
OGRiNjI3NDgyMjhjZTdjZDlhZjRmYmY0ZGI3Yjc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lR3RrLmgKQEAgLTExNiwxMCArMTE2LDEwIEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIHBhaW50VGV4dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBw
YWludFRleHRBcmVhKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nTGVm
dChSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGludCBwb3B1cEludGVybmFsUGFk
ZGluZ1JpZ2h0KFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IHBvcHVwSW50
ZXJuYWxQYWRkaW5nVG9wKFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IHBv
cHVwSW50ZXJuYWxQYWRkaW5nQm90dG9tKFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdMZWZ0KFJlbmRlclN0eWxlJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdSaWdodChS
ZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgaW50IHBvcHVwSW50ZXJu
YWxQYWRkaW5nVG9wKFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBp
bnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdCb3R0b20oUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIC8vIFRoZSBNYWMgcG9ydCBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIHRoZSAibWVu
dSBsaXN0IiBhbmQgdGhlICJtZW51IGxpc3QgYnV0dG9uLiIKICAgICAvLyBUaGUgZm9ybWVyIGlz
IHVzZWQgd2hlbiBhIG1lbnUgbGlzdCBidXR0b24gaGFzIGJlZW4gc3R5bGVkLiBUaGlzIGlzIHVz
ZWQgdG8gZW5zdXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCmlu
ZGV4IGNkOGVmMmNjNDI1MzkyM2U1OWYwM2EzODA0ZjQzZTNkMWNlY2M2OTcuLjFjODQzNTdhY2Rj
MzdlMzZiZDBiZWE4YmM5YjEwY2M0YjEyMmE2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogICAgIAotY2xhc3Mg
UmVuZGVyVGhlbWVJT1MgOiBwdWJsaWMgUmVuZGVyVGhlbWUgeworY2xhc3MgUmVuZGVyVGhlbWVJ
T1MgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGhlbWUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVTYWZhcmkuaAppbmRleCBjZDEwNjIzNDMyM2EyMjk5OWJjZDYxZDYwNmEy
NTAwNzk2MDYzYWE2Li40MzE4NzlmZDVkN2QwZjNkOTVlMThkZDJkMjM5MzAyNDVhZTQxNGIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaApAQCAtNDUs
ODggKzQ1LDkxIEBAIHVzaW5nIG5hbWVzcGFjZSBTYWZhcmlUaGVtZTsKIAogY2xhc3MgUmVuZGVy
U3R5bGU7CiAKLWNsYXNzIFJlbmRlclRoZW1lU2FmYXJpIDogcHVibGljIFJlbmRlclRoZW1lIHsK
K2NsYXNzIFJlbmRlclRoZW1lU2FmYXJpIGZpbmFsIDogcHVibGljIFJlbmRlclRoZW1lIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CiAKICAg
ICAvLyBBIG1ldGhvZCB0byBvYnRhaW4gdGhlIGJhc2VsaW5lIHBvc2l0aW9uIGZvciBhICJsZWFm
IiBjb250cm9sLiAgVGhpcyB3aWxsIG9ubHkgYmUgdXNlZCBpZiBhIGJhc2VsaW5lCiAgICAgLy8g
cG9zaXRpb24gY2Fubm90IGJlIGRldGVybWluZWQgYnkgZXhhbWluaW5nIGNoaWxkIGNvbnRlbnQu
IENoZWNrYm94ZXMgYW5kIHJhZGlvIGJ1dHRvbnMgYXJlIGV4YW1wbGVzIG9mCiAgICAgLy8gY29u
dHJvbHMgdGhhdCBuZWVkIHRvIGRvIHRoaXMuCi0gICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3Np
dGlvbihjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBiYXNlbGlu
ZVBvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8g
QSBtZXRob2QgYXNraW5nIGlmIHRoZSBjb250cm9sIGNoYW5nZXMgaXRzIHRpbnQgd2hlbiB0aGUg
d2luZG93IGhhcyBmb2N1cyBvciBub3QuCi0gICAgdmlydHVhbCBib29sIGNvbnRyb2xTdXBwb3J0
c1RpbnRzKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjb250
cm9sU3VwcG9ydHNUaW50cyhjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIC8vIEEgZ2VuZXJhbCBtZXRob2QgYXNraW5nIGlmIGFueSBjb250cm9sIHRpbnRpbmcgaXMg
c3VwcG9ydGVkIGF0IGFsbC4KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJv
bFRpbnRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2
b2lkIGFkanVzdFJlcGFpbnRSZWN0KGNvbnN0IFJlbmRlck9iamVjdCYsIEludFJlY3QmKTsKKyAg
ICAvLyBGSVhNRTogU2hvdWxkbid0IHRoaXMgdGFrZSBhIEZsb2F0UmVjdCYgYW5kIG92ZXJyaWRl
IHRoZSBwYXJlbnQncyBhZGp1c3RSZXBhaW50UmVjdCgpPworICAgIHZvaWQgYWRqdXN0UmVwYWlu
dFJlY3QoY29uc3QgUmVuZGVyT2JqZWN0JiwgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCBib29s
IGlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEJvcmRlckRhdGEmLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmlsbExheWVyJiwgY29uc3Qg
Q29sb3ImIGJhY2tncm91bmRDb2xvcikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzQ29udHJv
bFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEJvcmRlckRhdGEmLCBjb25zdCBGaWxs
TGF5ZXImLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Io
KSBjb25zdDsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICB2aXJ0dWFsIENvbG9yIGFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3Jt
QWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgQ29sb3IgYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcigpIGNvbnN0OwogCi0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9y
KCkgY29uc3Q7CisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBTeXN0ZW0gZm9udHMuCi0gICAgdmlydHVhbCB2b2lkIHN5
c3RlbUZvbnQoQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9uJikgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIHN5c3RlbUZvbnQoQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9uJikgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtTWVudUxpc3RTaXplKFJlbmRlclN0eWxl
JikgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgbWluaW11bU1lbnVMaXN0U2l6ZShSZW5kZXJTdHls
ZSYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1i
U2l6ZShSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50
KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJT
dHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0
U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50Kikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRp
bmdMZWZ0KFJlbmRlclN0eWxlJikgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5h
bFBhZGRpbmdSaWdodChSZW5kZXJTdHlsZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IHBvcHVw
SW50ZXJuYWxQYWRkaW5nVG9wKFJlbmRlclN0eWxlJikgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQg
cG9wdXBJbnRlcm5hbFBhZGRpbmdCb3R0b20oUmVuZGVyU3R5bGUmKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ0xlZnQoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ1JpZ2h0KFJlbmRlclN0
eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRp
bmdUb3AoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGludCBwb3B1
cEludGVybmFsUGFkZGluZ0JvdHRvbShSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCiBw
cm90ZWN0ZWQ6CiAgICAgLy8gTWV0aG9kcyBmb3IgZWFjaCBhcHBlYXJhbmNlIHZhbHVlLgotICAg
IHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2hlY2tib3hT
aXplKFJlbmRlclN0eWxlJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHBhaW50Q2hlY2tib3go
Y29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUmKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0UmFkaW9TaXplKFJlbmRlclN0eWxlJikgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IHBhaW50UmFkaW8oY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRSYWRpb1NpemUoUmVuZGVy
U3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25T
dHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Q7Ci0gICAg
dmlydHVhbCBib29sIHBhaW50QnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QnV0dG9uU2l6ZShS
ZW5kZXJTdHlsZSYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
QnV0dG9uU2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBi
b29sIHBhaW50VGV4dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxkU3R5bGUo
U3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0OworICAgIC8vIEZJ
WE1FOiBTaG91bGRuJ3QgdGhpcyB0YWtlIGEgY29uc3QgRmxvYXRSZWN0JiwgYW5kIG92ZXJyaWRl
IHRoZSBwYXJlbnQncyBwYWludFRleHRGaWVsZCgpPworICAgIGJvb2wgcGFpbnRUZXh0RmllbGQo
Y29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0RmllbGRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVu
ZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRUZXh0QXJlYShjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRBcmVhU3R5bGUoU3R5bGVS
ZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0OworICAgIC8vIEZJWE1FOiBT
aG91bGRuJ3QgdGhpcyB0YWtlIGEgY29uc3QgRmxvYXRSZWN0JiwgYW5kIG92ZXJyaWRlIHRoZSBw
YXJlbnQncyBwYWludFRleHRBcmVhKCk/CisgICAgYm9vbCBwYWludFRleHRBcmVhKGNvbnN0IFJl
bmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0VGV4dEFyZWFTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUm
LCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51
TGlzdChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciYs
IFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0OworICAgIC8vIEZJWE1FOiBTaG91bGRuJ3Qg
dGhpcyB0YWtlIGEgY29uc3QgRmxvYXRSZWN0JiwgYW5kIG92ZXJyaWRlIHRoZSBwYXJlbnQncyBw
YWludE1lbnVMaXN0KCk/CisgICAgYm9vbCBwYWludE1lbnVMaXN0KGNvbnN0IFJlbmRlck9iamVj
dCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50
KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRv
bkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEZsb2F0UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxl
KFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVj
dCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5k
ZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBw
YWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihjb25zdCBS
ZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmly
dHVhbCBib29sIHBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBwYWlu
dFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxk
KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyJiwg
UmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHBhaW50U2Vh
cmNoRmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxl
KFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0
eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGFkanVz
dFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxl
JiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFy
Y2hGaWVsZERlY29yYXRpb25QYXJ0U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwg
RWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3Jh
dGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25QYXJ0
U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvblBhcnQoY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25QYXJ0U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0
OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0
KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnRT
dHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBh
cnQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1
dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVu
ZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShTdHlsZVJlc29sdmVy
JiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBi
b29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKICAKLSAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRDYXBzTG9ja0luZGljYXRvcihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50Q2Fwc0xv
Y2tJbmRpY2F0b3IoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZpcnR1YWwgU3Ry
aW5nIG1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCkgb3ZlcnJpZGU7CkBAIC0xNDAsNyArMTQzLDcg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBwYWludE1ldGVyKGNvbnN0IFJlbmRlck9i
amVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKICNlbmRp
ZgogCi0gICAgdmlydHVhbCBib29sIHNob3VsZFNob3dQbGFjZWhvbGRlcldoZW5Gb2N1c2VkKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93UGxhY2Vo
b2xkZXJXaGVuRm9jdXNlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJp
dmF0ZToKICAgICBSZW5kZXJUaGVtZVNhZmFyaSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVXaW4uaAppbmRleCBhZWI0MzhmMDE1N2FhOTI4Y2YzMmQ0NjU5MmFhYjAzOTU1
YTEyY2YyLi5jYzgzOGVmMTQzYjljMGJjZWY2ZTRkYmQ0MTE1MmI3YmE5ZTc4NWI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaApAQCAtNDcsMTIgKzQ3LDEyIEBA
IHN0cnVjdCBUaGVtZURhdGEgewogICAgIHVuc2lnbmVkIG1fY2xhc3NpY1N0YXRlOwogfTsKIAot
Y2xhc3MgUmVuZGVyVGhlbWVXaW4gOiBwdWJsaWMgUmVuZGVyVGhlbWUgeworY2xhc3MgUmVuZGVy
VGhlbWVXaW4gZmluYWw6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwogCi0gICAgdmlydHVhbCBTdHJpbmcg
ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhUXVpcmtz
U3R5bGVTaGVldCgpOworICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhRGVmYXVsdFN0eWxlU2hlZXQo
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFN0cmluZyBleHRyYVF1aXJrc1N0eWxlU2hlZXQoKSBv
dmVycmlkZTsKIAogICAgIC8vIEEgbWV0aG9kIGFza2luZyBpZiB0aGUgdGhlbWUncyBjb250cm9s
cyBhY3R1YWxseSBjYXJlIGFib3V0IHJlZHJhd2luZyB3aGVuIGhvdmVyZWQuCiAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzSG92ZXIoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKaW5kZXggZWE2MDhlYzgxNjYwYmIw
NDc3MTVjMzkyZWM0Y2Q3NGMwZjc1NjcwNC4uNzQ4MjRiN2M2OWIzOWEzM2MxZTAyMzY5ZWU4Mzc3
MzE0ZTBjYzA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZGVvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKQEAgLTUw
LDM3ICs1MCwzNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHJlcXVpcmVzSW1tZWRpYXRlQ29tcG9z
aXRpbmcoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGREaXNwbGF5VmlkZW8oKSBj
b25zdDsKKyAgICBib29sIHNob3VsZERpc3BsYXlWaWRlbygpIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIHZvaWQgbWVkaWFFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1l
bnQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgp
OworICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAg
IExheW91dFNpemUgY2FsY3VsYXRlSW50cmluc2ljU2l6ZSgpOwogICAgIHZvaWQgdXBkYXRlSW50
cmluc2ljU2l6ZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1h
Z2VQdHIsIGNvbnN0IEludFJlY3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdy
YXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclZpZGVvIjsgfQor
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJSZW5kZXJWaWRlbyI7IH0KIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZGVvKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1ZpZGVvKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50UmVw
bGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2Fs
V2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCAgPSBDb21wdXRlQWN0dWFsKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdo
dCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2Fs
SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1pbmltdW1S
ZXBsYWNlZEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRMZWZ0KCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBMYXlvdXRVbml0IG9mZnNldFRvcCgpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBvZmZzZXRXaWR0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRIZWln
aHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0TGVmdCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRUb3AoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0V2lkdGgoKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAogICAgIHZvaWQgdXBkYXRlUGxheWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRBdXRvc2l6ZXIuaAppbmRleCBiZmZkMjJjZDJhZjZiYmI5YzM0NTE5OThlZTYzYzM4ZTRl
ZmE1MzIxLi4yNzVmODY2ZTc1OTg1Zjg2ZDYwNmZmMjY4YTIwNmQ5ODcxZWYzNWVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmgKQEAgLTQxLDEyICs0MSwxMiBAQCBj
bGFzcyBSZW5kZXJUZXh0Owogc3RydWN0IFRleHRBdXRvc2l6aW5nV2luZG93SW5mbzsKIHN0cnVj
dCBUZXh0QXV0b3NpemluZ0NsdXN0ZXJJbmZvOwogCi1jbGFzcyBUZXh0QXV0b3NpemVyIHsKK2Ns
YXNzIFRleHRBdXRvc2l6ZXIgZmluYWwgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHRB
dXRvc2l6ZXIpOwogCiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVGV4dEF1dG9zaXplcihEb2N1bWVu
dCopOwotICAgIHZpcnR1YWwgflRleHRBdXRvc2l6ZXIoKTsKKyAgICB+VGV4dEF1dG9zaXplcigp
OwogCiAgICAgYm9vbCBwcm9jZXNzU3VidHJlZShSZW5kZXJPYmplY3QqIGxheW91dFJvb3QpOwog
ICAgIHZvaWQgcmVjYWxjdWxhdGVNdWx0aXBsaWVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oCmluZGV4IGNiODk1
NzZlZmZkNTQ4NThiNDAwOTZjZjVmZmZiZTEyNTJjMTVmYmQuLmEzNDczZWVhODNhZDNjZDU3ODRm
MjQ5ZmJjYTQzZDRmYWNiN2E2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVi
bGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGZsb2F0IHZpcnR1YWxMb2dpY2Fs
SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgZmxvYXQgdmlydHVhbExv
Z2ljYWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggYzk0YTIxZDdkYmMyNzRlOTgzZGI4ZTc2MGYyZjUx
MDYyN2EwNGFlMS4uZjhmMTJhOGZhM2JhMTQzNDc1OGVmYjdmZDRiYmMzYzcwYzUzZWQ4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9j
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxv
Y2suaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgZmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKICAgICAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBi
b29sIGlzUmVuZGVyTWF0aE1MVGFibGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MVGFibGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTFRhYmxlIjsgfQogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxN
ZW5jbG9zZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxN
ZW5jbG9zZS5oCmluZGV4IDQzYjQ2MzQ4MWI5ZDQzOTZhZDI4NWQ5ZjBmYjI0MmE2YTY4ZTFiZmUu
Ljc2OTg0ODk5YmI5MDQ0N2U1OTRlMmEyZmEyMmFjOGE0NjJjMTliNmIgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmgK
QEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIFJlbmRlck1hdGhNTE1lbmNsb3NlKEVsZW1l
bnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlck1hdGhNTE1lbmNsb3Nl
IjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJNYXRoTUxNZW5jbG9zZSI7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlTG9naWNhbEhlaWdodCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBh
ZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxk
ID0gbnVsbHB0cikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKaW5kZXggZDRiNjlkOGY1MTE1NjYxMThh
NTJjMjIwYzE1Y2ZlOGExZTFjYjJiYS4uMzY5OWI3MWNkNjg4NmE3NGMzNDBkOTc3M2Q5YzkwMDRk
YmYzZjZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxPcGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MT3BlcmF0b3IuaApAQCAtNzIsMTIgKzcyLDEyIEBAIHB1YmxpYzoKICAgICAv
LyBGSVhNRTogVGhlIGRpc3BsYXlzdHlsZSBwcm9wZXJ0eSBpcyBub3QgaW1wbGVtZW50ZWQgKGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg3MzcpLgogICAgIGJvb2wg
aXNMYXJnZU9wZXJhdG9ySW5EaXNwbGF5U3R5bGUoKSBjb25zdCB7IHJldHVybiAhaGFzT3BlcmF0
b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6U3RyZXRjaHkpICYmIGhhc09wZXJhdG9y
RmxhZyhNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkxhcmdlT3ApOyB9CiAKLSAgICB2b2lkIHVw
ZGF0ZVN0eWxlKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN0eWxl
KCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIHZvaWQgdXBkYXRlVG9rZW5Db250ZW50KGNvbnN0
IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcpOwotICAgIHZvaWQgdXBkYXRlVG9rZW5Db250ZW50KCkg
b3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRva2VuQ29udGVudCgpIG92
ZXJyaWRlIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlT3BlcmF0b3JQcm9wZXJ0aWVzKCk7CiAgICAg
dm9pZCBzZXRPcGVyYXRvckZsYWdBbmRTY2hlZHVsZUxheW91dElmTmVlZGVkKE1hdGhNTE9wZXJh
dG9yRGljdGlvbmFyeTo6RmxhZywgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSk7
CiAgICAgTGF5b3V0VW5pdCB0cmFpbGluZ1NwYWNlRXJyb3IoKTsKQEAgLTE1Nyw3ICsxNTcsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9w
ZXJhdG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQogICAgIHZvaWQgcmVidWlsZFRva2Vu
Q29udGVudChjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nKTsKLSAgICB2b2lkIHVwZGF0ZUZy
b21FbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50
KCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZEFsbG93U3RyZXRjaGluZygpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJhZGljYWxPcGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuaAppbmRleCBlY2NkNjFjODRkY2RmOTkyMDczNDU3YmQz
MzcyM2MxMzM4YjgzM2RmLi41YTJhNzlmYzY2YWExNTg4YTFkNGY0ZThkNjdhNzViYjRiZmQ4Yjlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJhZGljYWxPcGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yIGZpbmFsIDogcHVi
bGljIFJlbmRlck1hdGhNTE9wZXJhdG9yIHsKIHB1YmxpYzoKICAgICBSZW5kZXJNYXRoTUxSYWRp
Y2FsT3BlcmF0b3IoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Ci0gICAgdmlydHVh
bCB2b2lkIHN0cmV0Y2hUbyhMYXlvdXRVbml0IGhlaWdodEFib3ZlQmFzZWxpbmUsIExheW91dFVu
aXQgZGVwdGhCZWxvd0Jhc2VsaW5lKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZXRjaFRvKExheW91
dFVuaXQgaGVpZ2h0QWJvdmVCYXNlbGluZSwgTGF5b3V0VW5pdCBkZXB0aEJlbG93QmFzZWxpbmUp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlv
dXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVu
dENvbXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkgb3ZlcnJpZGU7CkBA
IC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUmVu
ZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGlzQW5vbnltb3VzKCkgPyAiUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yIChhbm9u
eW1vdXMpIiA6ICJSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IiOyB9Ci0gICAgdm9pZCBzZXRP
cGVyYXRvclByb3BlcnRpZXMoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0
b3JQcm9wZXJ0aWVzKCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
b3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5o
CmluZGV4IGFmMDAwYTcyYzM5MzcwYWVjMmYzODIyNWRlNTk2NTNjNWNjY2JlOGMuLjhhYzQ4ZDQ1
MTk1MTA5NzM0OTkyNjBjMjU3M2VlN2FjMDAxZmQ0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCkBAIC03Myw3ICs3Myw3IEBA
IHByaXZhdGU6CiB9OwogCiAvLyBUaGVzZSBhcmUgc3BlY2lmaWMgd3JhcHBlcnMgZm9yIHRoZSBp
bmRleCBhbmQgYmFzZSwgdGhhdCBhc2sgdGhlIHBhcmVudCB0byByZXN0cnVjdHVyZSB0aGUgcmVu
ZGVyZXJzIGFmdGVyIGNoaWxkIHJlbW92YWwuCi1jbGFzcyBSZW5kZXJNYXRoTUxSb290V3JhcHBl
ciA6IHB1YmxpYyBSZW5kZXJNYXRoTUxSb3cgeworY2xhc3MgUmVuZGVyTWF0aE1MUm9vdFdyYXBw
ZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MUm93IHsKIAogZnJpZW5kIGNsYXNzIFJlbmRl
ck1hdGhNTFJvb3Q7CiAKQEAgLTgzLDkgKzgzLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGRXaXRob3V0UmVzdHJ1Y3R1cmluZyhSZW5kZXJPYmpl
Y3QmKTsKLSAgICBSZW5kZXJPYmplY3QqIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiByZW1vdmVDaGlsZChSZW5kZXJPYmplY3Qm
KSBvdmVycmlkZTsKICAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlck1hdGhNTFJvb3RXcmFwcGVy
PiBjcmVhdGVBbm9ueW1vdXNXcmFwcGVyKFJlbmRlck1hdGhNTFJvb3QqIHJlbmRlck9iamVjdCk7
Ci0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIoKSBjb25zdCBvdmVy
cmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0
aE1MUm9vdFdyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlck1hdGhNTFJvb3RXcmFwcGVyIjsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgKaW5kZXggYmE1ZGY4ODI1N2Q2OGRiZDE0
MDIxNDZjMWNlMGVmNWEwNzc4NzAyNy4uYjg3ZDk2NDA0YzgyMWJjMmM4NzUwODVjMzc5ODhlNmQw
ZjBlZTQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJvdy5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZU9w
ZXJhdG9yUHJvcGVydGllcygpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGxheW91
dCgpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxSb3coKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCmluZGV4IDc1NDI2NzgyZTBkNGU1MjNmNzYwOTI3MTc4
ZDBmYjIzMjI4OWU1ZmEuLjFiNWU3MWQ2NjYxMjNhYjU5ZjdkM2ZlZmMzNzg4ZjBkNGM3MDM1MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U2NyaXB0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU2NyaXB0cy5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
IGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHM7CiAKLWNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHNX
cmFwcGVyIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKK2NsYXNzIFJlbmRlck1hdGhNTFNj
cmlwdHNXcmFwcGVyIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIAogZnJpZW5k
IGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHM7CiAKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToK
IH07CiAKIC8vIFJlbmRlciBhIGJhc2Ugd2l0aCBzY3JpcHRzLgotY2xhc3MgUmVuZGVyTWF0aE1M
U2NyaXB0cyA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CitjbGFzcyBSZW5kZXJNYXRoTUxT
Y3JpcHRzIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIAogZnJpZW5kIGNsYXNz
IFJlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyOwogCkBAIC03NSwxNyArNzUsMTcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1
YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpOworICAgIHZp
cnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2
b2lkIGxheW91dCgpIG92ZXJyaWRlOwogICAgIAogcHJpdmF0ZToKICAgICB2b2lkIGFkZENoaWxk
SW50ZXJuYWwoYm9vbCBub3JtYWxJbnNlcnRpb24sIFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRl
ck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKICAgICBSZW5kZXJPYmplY3QqIHJlbW92ZUNoaWxk
SW50ZXJuYWwoYm9vbCBub3JtYWxSZW1vdmFsLCBSZW5kZXJPYmplY3QmIGNoaWxkKTsKIAotICAg
IHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFNjcmlwdHMoKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MU2NyaXB0
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MU2Ny
aXB0cyI7IH0KIAogICAgIHZvaWQgZml4QW5vbnltb3VzU3R5bGVGb3JTdWJTdXBQYWlyKFJlbmRl
ck9iamVjdCogc3ViU3VwUGFpciwgYm9vbCBpc1Bvc3RTY3JpcHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCmluZGV4IGY1YWQ1
YmJhMDRmMGI1MWIwMDY5MWIxYmUyODQyODhkZmJlMzE2MjguLjBhNGQ2NGFmY2RiZDcyYTZhYmJj
Mjc2N2ZkNjFiMjhjOGQxNmMzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKQEAgLTQxLDE2ICs0MSwxNiBAQCBwdWJsaWM6
CiAKICAgICBNYXRoTUxUZXh0RWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PE1hdGhNTFRleHRFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCi0gICAgdmly
dHVhbCBib29sIGlzUmVuZGVyTWF0aE1MVG9rZW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwg
UmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVRva2VuQ29udGVudCgpOwotICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKIAogcHJv
dGVjdGVkOgogICAgIHZvaWQgY3JlYXRlV3JhcHBlcklmTmVlZGVkKCk7CiAKIHByaXZhdGU6Cisg
ICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MVG9rZW4oKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJNYXRoTUxUb2tl
biAoYW5vbnltb3VzKSIgOiAiUmVuZGVyTWF0aE1MVG9rZW4iOyB9CiAgICAgdmlydHVhbCB2b2lk
IHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3R5bGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zl
ci5oCmluZGV4IGJkZTU5MTU2Nzg3ODhjMTU4NjBkOGYwZGRiOTk0Mjk3NWY5M2I3OTkuLjZmNjUz
ZDUxYzAwODBhZjgwMGJmZmI0ODk0YTc0YTkwMzdjZjY2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaApAQCAt
MzIsMTYgKzMyLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLWNsYXNzIFJlbmRl
ck1hdGhNTFVuZGVyT3ZlciA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CitjbGFzcyBSZW5k
ZXJNYXRoTUxVbmRlck92ZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVi
bGljOgogICAgIFJlbmRlck1hdGhNTFVuZGVyT3ZlcihFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4pOwogICAgIAotICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxs
aXNoZWRPcGVyYXRvcigpOworICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1i
ZWxsaXNoZWRPcGVyYXRvcigpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBpbnQgZmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKICAgICAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFVuZGVyT3ZlcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvQm94U2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvQm94U2hhcGUuaAppbmRleCA4MDliYTgyNDQ2ODg2NjA5NzBlMjNmZTYxYWRkOGNiNGNmYzgw
ZWFhLi5jMmIxNzcxMzdjMzc1YTI2YTVkYmQ2YzFlMjc1ZDk1NTk4MWY5MzE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNs
YXNzIFJlbmRlckJveDsKIAogUm91bmRlZFJlY3QgY29tcHV0ZVJvdW5kZWRSZWN0Rm9yQm94U2hh
cGUoQ1NTQm94VHlwZSwgY29uc3QgUmVuZGVyQm94Jik7CiAKLWNsYXNzIEJveFNoYXBlIDogcHVi
bGljIFNoYXBlIHsKK2NsYXNzIEJveFNoYXBlIGZpbmFsIDogcHVibGljIFNoYXBlIHsKIHB1Ymxp
YzoKICAgICBCb3hTaGFwZShjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBib3VuZHMpCiAgICAgICAg
IDogbV9ib3VuZHMoYm91bmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9Qb2x5Z29uU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
UG9seWdvblNoYXBlLmgKaW5kZXggNDRmZTYyOTdhZGVkMmU4YWE4YzkyYjVjZDY5NTczMjI5MTg0
ZmExNi4uYWU1MGIwZjdlMWQwODgyMTk5ZTRiNmIwZTJmMzU2Mjg5OTAyYjllMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oCkBAIC0zNiw3ICsz
Niw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgT2Zmc2V0UG9seWdvbkVkZ2Ug
OiBwdWJsaWMgVmVydGV4UGFpciB7CitjbGFzcyBPZmZzZXRQb2x5Z29uRWRnZSBmaW5hbCA6IHB1
YmxpYyBWZXJ0ZXhQYWlyIHsKIHB1YmxpYzoKICAgICBPZmZzZXRQb2x5Z29uRWRnZShjb25zdCBG
bG9hdFBvbHlnb25FZGdlJiBlZGdlLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCkKICAgICAgICAg
OiBtX3ZlcnRleDEoZWRnZS52ZXJ0ZXgxKCkgKyBvZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKaW5kZXggYjdiMDEzNTZhZDQ5MmQwMjIwMzk0
MGI5YWYzZjQ5YmE1YWNhZWQ2Mi4uYzA5YjUyZWM1NjhkNTYxOTU2YWJhYzUyNGY4ZTc1ZjI2ZTdi
NjJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJT
aGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUu
aApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIGludCBtX29mZnNldDsKIH07CiAKLWNs
YXNzIFJhc3RlclNoYXBlIDogcHVibGljIFNoYXBlIHsKK2NsYXNzIFJhc3RlclNoYXBlIGZpbmFs
IDogcHVibGljIFNoYXBlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSYXN0ZXJTaGFwZSk7
CiBwdWJsaWM6CiAgICAgUmFzdGVyU2hhcGUoc3RkOjp1bmlxdWVfcHRyPFJhc3RlclNoYXBlSW50
ZXJ2YWxzPiBpbnRlcnZhbHMsIGNvbnN0IEludFNpemUmIG1hcmdpblJlY3RTaXplKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oCmluZGV4IGYw
ZTNmMGY3N2E1N2NkZjU1MTVkNmZmN2I5M2ZiMDc5NDNhMTNlNjguLmIwMzYxYzYxMjIyNzExNDVi
NTllNzkyYTg2YWMxNGZlMDhmY2Q2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmgKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBSZWN0YW5nbGVTaGFwZSA6IHB1YmxpYyBTaGFwZSB7CitjbGFz
cyBSZWN0YW5nbGVTaGFwZSBmaW5hbCA6IHB1YmxpYyBTaGFwZSB7CiBwdWJsaWM6CiAgICAgUmVj
dGFuZ2xlU2hhcGUoY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0U2l6ZSYgcmFk
aWkpCiAgICAgICAgIDogbV9ib3VuZHMoYm91bmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQmFzaWNTaGFwZXMuaAppbmRleCBjYjc3Y2NlNjZhY2JmY2NjYzA3OThiZWZlNjQ5
ZjhlMDYyMTliM2VkLi40OTQ4ZGYxNzlmNTkxY2Y0OTU0YzM1ZGNmNGZlYzgyODdiMGRiMjU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaApAQCAtMTQ1
LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAKIH07CiAKLWNsYXNzIEJhc2ljU2hhcGVDaXJjbGUgOiBw
dWJsaWMgQmFzaWNTaGFwZSB7CitjbGFzcyBCYXNpY1NoYXBlQ2lyY2xlIGZpbmFsIDogcHVibGlj
IEJhc2ljU2hhcGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhc2ljU2hhcGVD
aXJjbGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY1NoYXBlQ2lyY2xlKTsg
fQogCkBAIC0xNzAsNyArMTcwLDcgQEAgcHJpdmF0ZToKICAgICBCYXNpY1NoYXBlUmFkaXVzIG1f
cmFkaXVzOwogfTsKIAotY2xhc3MgQmFzaWNTaGFwZUVsbGlwc2UgOiBwdWJsaWMgQmFzaWNTaGFw
ZSB7CitjbGFzcyBCYXNpY1NoYXBlRWxsaXBzZSBmaW5hbCA6IHB1YmxpYyBCYXNpY1NoYXBlIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY1NoYXBlRWxsaXBzZT4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljU2hhcGVFbGxpcHNlKTsgfQogCkBAIC0xOTgs
NyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICBCYXNpY1NoYXBlUmFkaXVzIG1fcmFkaXVzWTsKIH07
CiAKLWNsYXNzIEJhc2ljU2hhcGVQb2x5Z29uIDogcHVibGljIEJhc2ljU2hhcGUgeworY2xhc3Mg
QmFzaWNTaGFwZVBvbHlnb24gZmluYWwgOiBwdWJsaWMgQmFzaWNTaGFwZSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8QmFzaWNTaGFwZVBvbHlnb24+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBCYXNpY1NoYXBlUG9seWdvbik7IH0KIApAQCAtMjI0LDcgKzIyNCw3IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPExlbmd0aD4gbV92YWx1ZXM7CiB9OwogCi1jbGFzcyBCYXNp
Y1NoYXBlSW5zZXQgOiBwdWJsaWMgQmFzaWNTaGFwZSB7CitjbGFzcyBCYXNpY1NoYXBlSW5zZXQg
ZmluYWwgOiBwdWJsaWMgQmFzaWNTaGFwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8QmFzaWNTaGFwZUluc2V0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNT
aGFwZUluc2V0KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVBlbmRpbmdJbWFnZS5oCmluZGV4IDU2NzNiMDc5N2Y5M2JmNDA1N2VkNzQ3OTk1MjQ3ZTRj
OGI4ZjU0MDIuLmI0ZDE5MTAyM2JjZTMzZDQ0NjM3Zjk0MTM1MzA0OTRiYWMyMTQ1NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5o
CkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHN0eWxlIHJlc29sdXRp
b24sIGluIG9yZGVyIHRvIGF2b2lkIGxvYWRpbmcgaW1hZ2VzIHRoYXQgYXJlIG5vdCByZWZlcmVu
Y2VkIGJ5IHRoZSBmaW5hbCBzdHlsZS4KIC8vIFRoZXkgc2hvdWxkIG5ldmVyIGV4aXN0IGluIGEg
UmVuZGVyU3R5bGUgYWZ0ZXIgaXQgaGFzIGJlZW4gcmV0dXJuZWQgZnJvbSB0aGUgc3R5bGUgc2Vs
ZWN0b3IuCiAKLWNsYXNzIFN0eWxlUGVuZGluZ0ltYWdlIDogcHVibGljIFN0eWxlSW1hZ2Ugewor
Y2xhc3MgU3R5bGVQZW5kaW5nSW1hZ2UgZmluYWwgOiBwdWJsaWMgU3R5bGVJbWFnZSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVQZW5kaW5nSW1hZ2U+IGNyZWF0ZShDU1NW
YWx1ZSogdmFsdWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVBlbmRpbmdJbWFnZSh2YWx1
ZSkpOyB9CiAKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEZsb2F0U2l6
ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCosIGZsb2F0IC8qbXVsdGlwbGllciovKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBGbG9hdFNpemUoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
bWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVu
c2lvbnMoY29uc3QgUmVuZGVyRWxlbWVudCosIExlbmd0aCYgLyogaW50cmluc2ljV2lkdGggKi8g
LCBMZW5ndGgmIC8qIGludHJpbnNpY0hlaWdodCAqLywgRmxvYXRTaXplJiAvKiBpbnRyaW5zaWNS
YXRpbyAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25z
KGNvbnN0IFJlbmRlckVsZW1lbnQqLCBMZW5ndGgmIC8qIGludHJpbnNpY1dpZHRoICovICwgTGVu
Z3RoJiAvKiBpbnRyaW5zaWNIZWlnaHQgKi8sIEZsb2F0U2l6ZSYgLyogaW50cmluc2ljUmF0aW8g
Ki8pIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXpl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9h
dFNpemUmLCBmbG9hdCkgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChS
ZW5kZXJFbGVtZW50Kikgb3ZlcnJpZGUgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0Jsb2NrLmgKaW5kZXggN2E0ZmRmOGI1MzY5ODZmMmU4ZDEzMmMzMzY4NDAy
YjRkMWQ1MmRkMy4uZGRjNWI5MjZkNWJmMTEwMDllZDVhZjg5NzQ2NDA1YjUzMWIyZDgzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaApAQCAtNDMs
NyArNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21TdHlsZSgp
IG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyU1ZHQmxvY2soKSBj
b25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9OworICAgIHZpcnR1YWwgYm9vbCBp
c1JlbmRlclNWR0Jsb2NrKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3Qg
TGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKaW5kZXggNDI5NThkNGVj
MmFiYmM5OWRhNTBkODI0OGEwODA2ZGNlZjMzMDNmNy4uODcyNTNhZGNjNzEwNDY3YTU3ZDEwMDkw
Zjc1MDQ2YmQ4NmUxMjhmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0NvbnRhaW5lci5oCkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1NWR0NvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHQ29udGFpbmVyIjsgfQogCiAg
ICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KQEAgLTczLDYgKzcyLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgdXBk
YXRlQ2FjaGVkQm91bmRhcmllcygpOwogCiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1NW
R0NvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAg
IEZsb2F0UmVjdCBtX29iamVjdEJvdW5kaW5nQm94OwogICAgIGJvb2wgbV9vYmplY3RCb3VuZGlu
Z0JveFZhbGlkOwogICAgIEZsb2F0UmVjdCBtX3N0cm9rZUJvdW5kaW5nQm94OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaAppbmRleCBkNjJhNTYw
NGVhYmUzNjk4Zjk5MTMzYTIxNTQwNTQzYmRmZmNmMjBkLi4zMDI3ZjEwYzBlZGU4ODdkZDBjZmVl
ZDJjZTAyODNlZTcwNTNjMjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0VsbGlwc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0VsbGlwc2UuaApAQCAtMzcsMTUgKzM3LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5SZW5kZXJTVkdFbGxpcHNlKCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR0VsbGlwc2UiOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIlJlbmRlclNWR0VsbGlwc2UiOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2hhcGVG
cm9tRWxlbWVudCgpOwotICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV91c2VQYXRoRmFsbGJhY2sgPyBSZW5kZXJTVkdTaGFwZTo6aXNFbXB0eSgpIDogbV9maWxsQm91
bmRpbmdCb3guaXNFbXB0eSgpOyB9OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21F
bGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3VzZVBhdGhGYWxsYmFjayA/IFJlbmRlclNWR1NoYXBlOjppc0VtcHR5
KCkgOiBtX2ZpbGxCb3VuZGluZ0JveC5pc0VtcHR5KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNS
ZW5kZXJpbmdEaXNhYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaWxs
U2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNo
YXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVu
ZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAgICB2aXJ0dWFsIGJvb2wg
c2hhcGVEZXBlbmRlbnRGaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFdpbmRS
dWxlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCop
IGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0Nv
bnRleHQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRT
dHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBi
b29sIHNoYXBlRGVwZW5kZW50RmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBX
aW5kUnVsZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYWxjdWxhdGVSYWRpaUFuZENlbnRl
cigpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAppbmRleCA0ZTY3Y2FlOTJkM2Q1MmJiODRhYTI1NDA5
YzcwYTc3Y2FhOTE3MjBkLi5jNzViYmZmMTRkYTQ4OTQyOGNiOTdmOGQ0MDdkYWU0YzAwNmM0N2Qz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Zv
cmVpZ25PYmplY3QuaApAQCAtMzcsMzUgKzM3LDM1IEBAIHB1YmxpYzoKIAogICAgIFNWR0ZvcmVp
Z25PYmplY3RFbGVtZW50JiBmb3JlaWduT2JqZWN0RWxlbWVudCgpIGNvbnN0OwogCi0gICAgdmly
dHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7
CiAKICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJv
b2wgZml4ZWQgPSBmYWxzZSkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpOworICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJu
IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fdmlld3BvcnQuc2l6ZSgpKTsgfQotICAgIHZpcnR1
YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgbV92aWV3cG9ydC5zaXplKCkpOyB9Ci0gICAgdmlydHVhbCBGbG9hdFJl
Y3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCB7IHJldHVybiBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBtX3ZpZXdwb3J0LnNpemUoKSk7IH0KKyAgICB2aXJ0dWFsIEZsb2F0
UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIG1fdmlld3BvcnQuc2l6ZSgpKTsgfQorICAgIHZpcnR1YWwgRmxvYXRS
ZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgbV92aWV3cG9ydC5zaXplKCkpOyB9CisgICAgdmlydHVhbCBGbG9hdFJl
Y3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3ZpZXdwb3J0LnNpemUoKSk7IH0KIAotICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVz
dFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24p
OworICAgIHZpcnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRl
c3RBY3Rpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBI
aXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxv
Y2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwg
SGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzU1ZHRm9yZWlnbk9i
amVjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2Nh
bFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncyA9IEFwcGx5Q29udGFpbmVy
RmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGNv
bnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsg
bV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNUcmFuc2Zvcm1VcGRhdGUoKSBvdmVycmlkZSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0
cnVlOyB9CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzU1ZHRm9yZWlnbk9iamVjdCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGdyYXBoaWNzRWxlbWVu
dCgpIGNvbnN0ID0gZGVsZXRlOwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdGb3JlaWduT2JqZWN0IjsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aCgpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExh
eW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1Bh
cmVudFRyYW5zZm9ybSgpIGNvbnN0OwotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2Fs
VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQorICAgIHZpcnR1
YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAKICAgICBib29sIG1f
bmVlZHNUcmFuc2Zvcm1VcGRhdGUgOiAxOwogICAgIEZsb2F0UmVjdCBtX3ZpZXdwb3J0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCmluZGV4IDg2MWQx
MzIyYTcxMjkyNTBlYWQwYWY5MmYyN2E0YjIwMmMwYjQ0MDcuLjAxM2EwNGY1OGIwNDZhMDQ2YmY0
ZjUyYzU2MDdmOWJmYWRkNTJlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ltYWdlLmgKQEAgLTQyLDkgKzQyLDkgQEAgcHVibGljOgogICAgIFNWR0ltYWdl
RWxlbWVudCYgaW1hZ2VFbGVtZW50KCkgY29uc3Q7CiAKICAgICBib29sIHVwZGF0ZUltYWdlVmll
d3BvcnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCkgeyBt
X25lZWRzQm91bmRhcmllc1VwZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNCb3VuZGFyaWVzVXBkYXRlKCkgb3ZlcnJpZGUgeyBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSA9
IHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNCb3VuZGFyaWVzVXBkYXRlKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGU7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVl
OyB9CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgb3ZlcnJpZGUg
eyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQogCiAgICAgUmVuZGVySW1hZ2VSZXNv
dXJjZSYgaW1hZ2VSZXNvdXJjZSgpIHsgcmV0dXJuICptX2ltYWdlUmVzb3VyY2U7IH0KICAgICBj
b25zdCBSZW5kZXJJbWFnZVJlc291cmNlJiBpbWFnZVJlc291cmNlKCkgY29uc3QgeyByZXR1cm4g
Km1faW1hZ2VSZXNvdXJjZTsgfQpAQCAtNTUsMjkgKzU1LDI5IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHSW1hZ2UiOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIlJlbmRlclNWR0ltYWdlIjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hp
bGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJl
dHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CisgICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xv
Y2FsVHJhbnNmb3JtOyB9CiAKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0Jv
eCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0KLSAgICB2aXJ0dWFsIEZs
b2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRp
bmdCb3g7IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGlu
YXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWludEJvdW5kaW5nQm94OyB9CisgICAgdmlydHVh
bCBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X29iamVjdEJvdW5kaW5nQm94OyB9CisgICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRp
bmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX29iamVjdEJvdW5kaW5nQm94OyB9Cisg
ICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3JlcGFpbnRCb3VuZGluZ0JveDsgfQogICAgIHZpcnR1YWwg
RmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzRXhjbHVkaW5nU1ZHU2hhZG93
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3hFeGNsdWRpbmdT
aGFkb3c7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50
UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXIgPSAwKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9
IDApOworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25z
dCBJbnRSZWN0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91
dCgpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2lu
dCYpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgaW52YWxpZGF0ZUJ1ZmZlcmVkRm9yZWdyb3VuZCgpOwogCi0gICAgdmlydHVhbCBib29s
IG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jiwg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbik7CisgICAgdmly
dHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0
UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbikg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFsIEFmZmluZVRy
YW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxU
cmFuc2Zvcm07IH0KICAgICB2b2lkIGNhbGN1bGF0ZUltYWdlVmlld3BvcnQoKTsKIAogICAgIGJv
b2wgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1BhdGguaAppbmRleCA0NGZkMTcyNjc1ZGFlMWRiYTEyZjcwZjdlYWJl
NTcxYjIzZGY5MzNkLi5lYTZlY2MyMzVlOThmNTg1MWEzNjUzYmFhMjFmNmVhZGY3NzhiZjMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaApAQCAtMzcs
NyArMzcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzU1ZHUGF0
aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHUGF0aCI7IH0KKyAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyU1ZHUGF0aCI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVt
ZW50KCkgb3ZlcnJpZGU7CiAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VCb3Vu
ZGluZ0JveCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1JlY3QuaAppbmRleCBmMDJkZmNmNzg3MzQ2ZWFkNjc0YjYyOGNjMDQxMTIzYjJhYTZmMmY3Li40
ZGExYjNiOTgyYTMwYzBhOGEwYjQ0NWRmM2NjMWJmYTA5MDM3NzZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaApAQCAtNDMsMTUgKzQzLDE1IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBncmFwaGljc0VsZW1lbnQoKSBjb25zdCA9IGRlbGV0
ZTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJu
ICJSZW5kZXJTVkdSZWN0IjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZWN0IjsgfQogCi0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlUGF0aEZhbGxiYWNrID8gUmVuZGVyU1ZHU2hhcGU6Omlz
RW1wdHkoKSA6IG1fZmlsbEJvdW5kaW5nQm94LmlzRW1wdHkoKTsgfTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBp
c0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sgPyBSZW5k
ZXJTVkdTaGFwZTo6aXNFbXB0eSgpIDogbV9maWxsQm91bmRpbmdCb3guaXNFbXB0eSgpOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzUmVuZGVyaW5nRGlzYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50Jik7
Ci0gICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50RmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0
UG9pbnQmLCBjb25zdCBXaW5kUnVsZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGZpbGxTaGFw
ZShHcmFwaGljc0NvbnRleHQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Ry
b2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBi
b29sIHNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudEZpbGxDb250YWlucyhjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgV2luZFJ1bGUpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIEZsb2F0UmVjdCBtX2lubmVyU3Ryb2tlUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCmluZGV4IGUwMDgw
ZTBkNTI5NDBkOTE4YTA5OTY0OWY2NDBhM2U0MTlmOTJjNTcuLmNhMDcyY2FhZmMwOGVhMjRhMTRh
NmNjYmViOTgwYzdmZGQ4YTk2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaApAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBhcHBseUNsaXBwaW5nVG9Db250ZXh0KFJlbmRlckVsZW1lbnQmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0NvbnRleHQqKTsKICAg
ICB2aXJ0dWFsIEZsb2F0UmVjdCByZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IFJlbmRlck9iamVj
dCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3Vy
Y2VUeXBlKCkgY29uc3QgeyByZXR1cm4gQ2xpcHBlclJlc291cmNlVHlwZTsgfQorICAgIHZpcnR1
YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIENsaXBwZXJSZXNvdXJjZVR5cGU7IH0KICAgICAKICAgICBib29sIGhpdFRlc3RDbGlw
Q29udGVudChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
aAppbmRleCBlODVjNzk0NDAxZDA5ZTQ4NzBjYjEyYTE2NWJkN2M2YTFlNTc0OTJlLi45NWJkMTAw
MmRjMjUyZGZjM2NkOGNkOWJkNjRmMDYyNGJkMWI4NTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCkBAIC04Miw3
ICs4Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChS
ZW5kZXJPYmplY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICB2aXJ0dWFsIFJlbmRl
clNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNl
VHlwZTsgfQorICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJl
bmRlclNWR1Jlc291cmNlVHlwZSBzX3Jlc291cmNlVHlwZTsKIAogICAgIEZsb2F0UmVjdCBkcmF3
aW5nUmVnaW9uKFJlbmRlck9iamVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZS5oCmluZGV4IDJmOGRhM2E5NjUxMWNmNjdiNjAxZTM5MWMzNjBiYTdlYzE2MmZhM2EuLmRmNDc1
OThkYmIzY2M2ZmMwNjM2NzFlZDg4NzY4MjYxNGFjNTlmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlLmgKQEAgLTM5LDEwICszOSw5IEBAIHB1YmxpYzoKICAgICBSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMm
LCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzJiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSop
OworICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0
IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUi
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
IjsgfQogCiAgICAgLy8gVGhleSBkZXBlbmQgb24gdGhlIFJlbmRlck9iamVjdCBhcmd1bWVudCBv
ZiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZS4KICAgICBzdGF0aWMgRmxv
YXRSZWN0IGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXJFZmZlY3QmKTsK
QEAgLTU1LDYgKzU0LDcgQEAgcHVibGljOgogICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlcio+KGZpbHRlciktPnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQodGhpcywg
YXR0cmlidXRlKTsKICAgICB9CiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3Jh
ZGllbnQuaAppbmRleCBjMWY1MmI3ZGNkZTUxYjdkNGNlZjNmZGY5ZDhjZGVkNjliNDExM2YxLi44
YWFkM2ZmNDIxY2IyOTIwMDk2Njk0MWM1MTFmZDJiMTQ1NWMwMTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGlu
ZWFyR3JhZGllbnQuaApAQCAtMzQsMTMgKzM0LDEzIEBAIHB1YmxpYzoKIAogICAgIFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudCYgbGluZWFyR3JhZGllbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
ZG93bmNhc3Q8U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50PihSZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50OjpncmFkaWVudEVsZW1lbnQoKSk7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3Vy
Y2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9Cisg
ICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KICAgICBzdGF0aWMgUmVuZGVyU1ZHUmVz
b3VyY2VUeXBlIHNfcmVzb3VyY2VUeXBlOwogCi0gICAgdmlydHVhbCBTVkdVbml0VHlwZXM6OlNW
R1VuaXRUeXBlIGdyYWRpZW50VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZ3Jh
ZGllbnRVbml0cygpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUdyYWRpZW50VHJhbnNm
b3JtKEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKSB7IHRyYW5zZm9ybSA9IG1fYXR0cmlidXRl
cy5ncmFkaWVudFRyYW5zZm9ybSgpOyB9CisgICAgdmlydHVhbCBTVkdVbml0VHlwZXM6OlNWR1Vu
aXRUeXBlIGdyYWRpZW50VW5pdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2F0dHJpYnV0
ZXMuZ3JhZGllbnRVbml0cygpOyB9CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUdyYWRpZW50
VHJhbnNmb3JtKEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKSBvdmVycmlkZSB7IHRyYW5zZm9y
bSA9IG1fYXR0cmlidXRlcy5ncmFkaWVudFRyYW5zZm9ybSgpOyB9CiAgICAgdmlydHVhbCBib29s
IGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
YnVpbGRHcmFkaWVudChHcmFkaWVudERhdGEqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYnVp
bGRHcmFkaWVudChHcmFkaWVudERhdGEqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZsb2F0UG9p
bnQgc3RhcnRQb2ludChjb25zdCBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMmKSBjb25zdDsKICAg
ICBGbG9hdFBvaW50IGVuZFBvaW50KGNvbnN0IExpbmVhckdyYWRpZW50QXR0cmlidXRlcyYpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hcmtlci5oCmluZGV4IDYzNmEzNGVjYjkyZWQ4NzliMjZiMTliOTA5MzI5Y2E5YmJi
MmVmMjIuLjFhOGQwODM4Nzg4YmExZmNkODM2YzVkMDAzYzI4ZDAyNGMyYzY5ZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFy
a2VyLmgKQEAgLTQ1LDExICs0NSwxMSBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsY3VsYXRlcyBtYXJr
ZXIgYm91bmRhcmllcywgbWFwcGVkIHRvIHRoZSB0YXJnZXQgZWxlbWVudCdzIGNvb3JkaW5hdGUg
c3BhY2UKICAgICBGbG9hdFJlY3QgbWFya2VyQm91bmRhcmllcyhjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIG1hcmtlclRyYW5zZm9ybWF0aW9uKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBs
eVZpZXdwb3J0Q2xpcChQYWludEluZm8mKTsKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGNhbGNWaWV3cG9ydCgpOworICAgIHZpcnR1YWwgdm9pZCBhcHBseVZp
ZXdwb3J0Q2xpcChQYWludEluZm8mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0
KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNhbGNWaWV3cG9ydCgpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zv
cm0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1Bh
cmVudFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFmZmluZVRyYW5zZm9ybSBtYXJr
ZXJUcmFuc2Zvcm1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvcmlnaW4sIGZsb2F0IGFuZ2xlLCBm
bG9hdCBzdHJva2VXaWR0aCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHlSZXNvdXJj
ZShSZW5kZXJFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqJiwg
dW5zaWduZWQgc2hvcnQpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC01OSw3ICs1OSw3
IEBAIHB1YmxpYzoKICAgICBmbG9hdCBhbmdsZSgpIGNvbnN0OwogICAgIFNWR01hcmtlclVuaXRz
VHlwZSBtYXJrZXJVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1hcmtlckVsZW1lbnQoKS5tYXJrZXJV
bml0cygpOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5
cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQorICAgIHZpcnR1YWwgUmVuZGVy
U1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNf
cmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlwZSBzX3Jlc291
cmNlVHlwZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAppbmRleCBhNTI3MjZlYjkyMTJjZTAwZGU0
ZTVlZjc2MmI3ZjJmN2Y5YjNmOWRmLi44OWIzMDVmNmNiM2U1NDgxNzBmNDNiYmNhOTBjOTgxZjU1
ZWIyZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlci5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBTVkdV
bml0VHlwZXM6OlNWR1VuaXRUeXBlIG1hc2tVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1hc2tFbGVt
ZW50KCkubWFza1VuaXRzKCk7IH0KICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIG1hc2tD
b250ZW50VW5pdHMoKSBjb25zdCB7IHJldHVybiBtYXNrRWxlbWVudCgpLm1hc2tDb250ZW50VW5p
dHMoKTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBl
KCkgY29uc3QgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclNW
R1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzX3Jl
c291cmNlVHlwZTsgfQogICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgc19yZXNvdXJj
ZVR5cGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAppbmRleCBmNjZkNTU1Yjc1YjdhYzdkNjVi
NWM0MGMzZWQ2NGI2OTUxNjhlZTRmLi5mMWZmYzQ0MzViOWEyZDZiOTRkZTljN2I3YThlMDIzZDk0
OTYxOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgR3JhcGhpY3NDb250
ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSwgY29uc3QgUGF0aCosIGNvbnN0IFJl
bmRlclNWR1NoYXBlKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3VyY2VC
b3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZSB7IHJldHVybiBGbG9hdFJl
Y3QoKTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBl
KCkgY29uc3QgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclNW
R1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzX3Jl
c291cmNlVHlwZTsgfQogICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgc19yZXNvdXJj
ZVR5cGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCmluZGV4IDk2MjAz
Mjg5N2YzNDc3NDkyZWNlMTA0YTNhNmNkMjBhNTM0OTM1MDQuLmY1YTY1NDM4Y2I0ZGM3ZmI1ZjA3
ZWUwYjk1OTM1YTQ3ODkxMmMwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCkBAIC0z
NiwxMiArMzYsMTIgQEAgcHVibGljOgogCiAgICAgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50JiBy
YWRpYWxHcmFkaWVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmdyYWRpZW50RWxlbWVu
dCgpKTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBl
KCkgY29uc3QgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclNW
R1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzX3Jl
c291cmNlVHlwZTsgfQogICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgc19yZXNvdXJj
ZVR5cGU7CiAKLSAgICB2aXJ0dWFsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRV
bml0cygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5ncmFkaWVudFVuaXRzKCk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlR3JhZGllbnRUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3Jt
JiB0cmFuc2Zvcm0pIHsgdHJhbnNmb3JtID0gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VHJhbnNmb3Jt
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYnVpbGRHcmFkaWVudChHcmFkaWVudERhdGEqKSBjb25z
dDsKKyAgICB2aXJ0dWFsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlcy5ncmFkaWVudFVuaXRzKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlR3JhZGllbnRUcmFuc2Zvcm0oQWZmaW5lVHJhbnNm
b3JtJiB0cmFuc2Zvcm0pIG92ZXJyaWRlIHsgdHJhbnNmb3JtID0gbV9hdHRyaWJ1dGVzLmdyYWRp
ZW50VHJhbnNmb3JtKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYnVpbGRHcmFkaWVudChHcmFkaWVu
dERhdGEqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZsb2F0UG9pbnQgY2VudGVyUG9pbnQoY29u
c3QgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzJikgY29uc3Q7CiAgICAgRmxvYXRQb2ludCBmb2Nh
bFBvaW50KGNvbnN0IFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcyYpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAppbmRleCBmZjU0OGVhYzk5MDkz
ZjNiMzJjYzg1MWFlOTgxOTg5ZTdmZmQ0M2Q1Li5hY2U5MjNlZTI1OGYyMTFkZjYxYjkyNjdlYTQx
ODc2MjgyNWY2ZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jvb3QuaApAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRmxvYXRSZWN0
IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9vYmplY3RCb3Vu
ZGluZ0JveDsgfQogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zdHJva2VCb3VuZGluZ0JveDsgfQogICAgIHZpcnR1YWwg
RmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3g7IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBy
ZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlc0V4Y2x1ZGluZ1NWR1NoYWRvdygpIGNvbnN0IHsg
cmV0dXJuIG1fcmVwYWludEJvdW5kaW5nQm94RXhjbHVkaW5nU2hhZG93OyB9CisgICAgRmxvYXRS
ZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzRXhjbHVkaW5nU1ZHU2hhZG93KCkgY29u
c3QgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3hFeGNsdWRpbmdTaGFkb3c7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNw
YW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaAppbmRl
eCBlOTcyY2JlYzVkY2ZkZDA0YjVhZmZlODljYTljNWNmYzk1MzE2NjViLi4zZmQ5Nzk3MTVkODY1
ZTE3YmNhNTRiZjRjNzYyMTkzODA0MzlkY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwotICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdU
U3BhbiI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHVFNwYW4iOyB9CiB9OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCmluZGV4IDA3YjE4MTNhNjNmMWZhY2Jk
NjE4N2YxZDQyOTEwODhiODMxYzVhNTEuLmQ5NjBlN2UwYjUwODAwNzI2NWE4NWEwYWM3MGQzZjc2
ODM3YmVjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4
dC5oCkBAIC0zOSwxMiArMzksMTIgQEAgcHVibGljOgogCiAgICAgU1ZHVGV4dEVsZW1lbnQmIHRl
eHRFbGVtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5
bGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TmVlZHNQb3NpdGlvbmluZ1ZhbHVl
c1VwZGF0ZSgpIHsgbV9uZWVkc1Bvc2l0aW9uaW5nVmFsdWVzVXBkYXRlID0gdHJ1ZTsgfQotICAg
IHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9uZWVkc1RyYW5zZm9y
bVVwZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRh
dGUoKSBvdmVycmlkZSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CiAgICAgdm9p
ZCBzZXROZWVkc1RleHRNZXRyaWNzVXBkYXRlKCkgeyBtX25lZWRzVGV4dE1ldHJpY3NVcGRhdGUg
PSB0cnVlOyB9Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRp
bmF0ZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxD
b29yZGluYXRlcygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIFJlbmRlclNWR1RleHQq
IGxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3RvcihSZW5kZXJPYmplY3QmKTsKICAgICBzdGF0aWMg
Y29uc3QgUmVuZGVyU1ZHVGV4dCogbG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKGNvbnN0IFJl
bmRlck9iamVjdCYpOwpAQCAtNjQsMTggKzY0LDE4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
dm9pZCBncmFwaGljc0VsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdUZXh0IjsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc1NWR1RleHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlclNWR1RleHQiOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZHVGV4dCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRU
ZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jiwg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbik7Ci0gICAgdmly
dHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYs
IGNvbnN0IFJlbmRlclJlZ2lvbiopOworICAgIHZpcnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgVmlz
aWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBS
ZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVy
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Cisg
ICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBMYXlvdXRS
ZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Qgb3Zl
cnJpZGU7CkBAIC04MywxNiArODMsMTYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBt
YXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncyA9IEFwcGx5Q29u
dGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3Qq
IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CisgICAgdmlydHVhbCB2b2lk
IGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQg
PSBudWxscHRyKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hp
bGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ry
b3llZCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxv
Y2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9
Ci0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCB7IHJl
dHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CisgICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xv
Y2FsVHJhbnNmb3JtOyB9CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zv
cm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAgICAgdmly
dHVhbCBzdGQ6OnVuaXF1ZV9wdHI8Um9vdElubGluZUJveD4gY3JlYXRlUm9vdElubGluZUJveCgp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRmlyc3RMZXR0ZXIoKTsKKyAgICB2aXJ0dWFs
IFJlbmRlckJsb2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVGaXJzdExldHRlcigpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRI
YW5kbGVTdWJ0cmVlTXV0YXRpb25zKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVy
LmgKaW5kZXggNjdkMGE1NjdiZDI0ZTliOWMxOWEzYzA4YzNhMzY3OGJmMTg4MDIxNS4uOWVkYWJl
ZWU3MTMyNDc2OTRjNmZmODg3N2M5N2YwZDQxMGE0ZDc1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29u
dGFpbmVyLmgKQEAgLTMyLDE1ICszMiwxNSBAQCBwdWJsaWM6CiAgICAgUmVuZGVyU1ZHVHJhbnNm
b3JtYWJsZUNvbnRhaW5lcihTVkdHcmFwaGljc0VsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
Pik7CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50JiBncmFwaGljc0VsZW1lbnQoKSB7IHJldHVybiBk
b3duY2FzdDxTVkdHcmFwaGljc0VsZW1lbnQ+KFJlbmRlclNWR0NvbnRhaW5lcjo6ZWxlbWVudCgp
KTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcigpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSB7IG1fbmVlZHNU
cmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGRpZFRyYW5zZm9ybVRv
Um9vdFVwZGF0ZSgpIHsgcmV0dXJuIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlOyB9CisgICAg
dmlydHVhbCBib29sIGlzU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9j
YWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFu
c2Zvcm07IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSBvdmVy
cmlkZSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CisgICAgdmlydHVhbCBib29s
IGRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZGlkVHJhbnNm
b3JtVG9Sb290VXBkYXRlOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3Qg
PSBkZWxldGU7Ci0gICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKCk7Ci0g
ICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVy
biBtX2xvY2FsVHJhbnNmb3JtOyB9CisgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUxvY2FsVHJh
bnNmb3JtKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFu
c2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAKICAg
ICBib29sIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgOiAxOwogICAgIGJvb2wgbV9kaWRUcmFuc2Zv
cm1Ub1Jvb3RVcGRhdGUgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCmluZGV4IGNjNTI0ODYxMmY4MTJl
NmI5ZTY5NWJkMzljMWExZjZjY2MzOTFlN2YuLmY2MjRmNWY0N2RjZGJhOGM4OWEyMTg5YzhiZjBj
Y2VlYmNjYmNkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKQEAgLTM4LDI3ICszOCwyNyBAQCBwdWJs
aWM6CiAgICAgRmxvYXRSZWN0IHZpZXdwb3J0KCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydDsg
fQogCiAgICAgYm9vbCBpc0xheW91dFNpemVDaGFuZ2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xh
eW91dFNpemVDaGFuZ2VkOyB9Ci0gICAgdmlydHVhbCBib29sIGRpZFRyYW5zZm9ybVRvUm9vdFVw
ZGF0ZSgpIHsgcmV0dXJuIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlOyB9CisgICAgdmlydHVh
bCBib29sIGRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZGlk
VHJhbnNmb3JtVG9Sb290VXBkYXRlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lSWZM
YXlvdXRTaXplQ2hhbmdlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVw
ZGF0ZSgpIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGV0ZXJtaW5lSWZMYXlvdXRTaXplQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWVkc1RyYW5zZm9y
bVVwZGF0ZSA9IHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBj
b25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVu
dCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBib29sIGlzU1ZHVmlld3BvcnRDb250
YWluZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIjsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc1NWR1ZpZXdwb3J0Q29udGFpbmVyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciI7IH0K
IAogICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtOyB9CisgICAgdmlydHVhbCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBjYWxjVmlld3BvcnQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlTG9jYWxUcmFuc2Zv
cm0oKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY1ZpZXdwb3J0KCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBib29sIGNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYXBwbHlWaWV3cG9ydENsaXAoUGFpbnRJbmZvJik7Ci0gICAgdmlydHVhbCBib29s
IHBvaW50SXNJbnNpZGVWaWV3cG9ydENsaXAoY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVu
dCk7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgYm9vbCBwb2ludElzSW5zaWRlVmlld3BvcnRDbGlwKGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50SW5QYXJlbnQpIG92ZXJyaWRlOwogCiAgICAgRmxvYXRSZWN0IG1fdmll
d3BvcnQ7CiAgICAgbXV0YWJsZSBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbFRvUGFyZW50VHJhbnNm
b3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVU
ZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3gu
aAppbmRleCA3YjdkODU3ZjEyZjljODk5MDc4MGY3OTE1ZDYzYWI2NzlmNzI5YmJiLi44NTliZmUy
ODU2NTYzNTAzNWZkNTZhMDUwNGI4NDM5YWJlNmI0Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaApAQCAtMzcsMjggKzM3LDI4IEBAIHB1
YmxpYzoKIAogICAgIFJlbmRlclNWR0lubGluZVRleHQmIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1
cm4gZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lVGV4dD4oSW5saW5lVGV4dEJveDo6cmVuZGVyZXIo
KSk7IH0KIAotICAgIHZpcnR1YWwgZmxvYXQgdmlydHVhbExvZ2ljYWxIZWlnaHQoKSBjb25zdCB7
IHJldHVybiBtX2xvZ2ljYWxIZWlnaHQ7IH0KKyAgICB2aXJ0dWFsIGZsb2F0IHZpcnR1YWxMb2dp
Y2FsSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2dpY2FsSGVpZ2h0OyB9CiAg
ICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0KGZsb2F0IGhlaWdodCkgeyBtX2xvZ2ljYWxIZWlnaHQg
PSBoZWlnaHQ7IH0KIAotICAgIHZpcnR1YWwgaW50IHNlbGVjdGlvblRvcCgpIHsgcmV0dXJuIHRv
cCgpOyB9Ci0gICAgdmlydHVhbCBpbnQgc2VsZWN0aW9uSGVpZ2h0KCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihjZWlsZihtX2xvZ2ljYWxIZWlnaHQpKTsgfQotICAgIHZpcnR1YWwgaW50IG9m
ZnNldEZvclBvc2l0aW9uKGZsb2F0IHgsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMgPSB0cnVl
KSBjb25zdDsKLSAgICB2aXJ0dWFsIGZsb2F0IHBvc2l0aW9uRm9yT2Zmc2V0KGludCBvZmZzZXQp
IGNvbnN0OworICAgIGludCBzZWxlY3Rpb25Ub3AoKSB7IHJldHVybiB0b3AoKTsgfQorICAgIGlu
dCBzZWxlY3Rpb25IZWlnaHQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKG1fbG9n
aWNhbEhlaWdodCkpOyB9CisgICAgdmlydHVhbCBpbnQgb2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQg
eCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocyA9IHRydWUpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgZmxvYXQgcG9zaXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHBhaW50U2VsZWN0aW9uQmFja2dyb3VuZChQYWludEluZm8mKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlv
dXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSk7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9w
LCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBsb2NhbFNlbGVjdGlvblJlY3QoaW50IHN0YXJ0UG9zaXRpb24sIGludCBlbmRQb3NpdGlvbikg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIG1hcFN0YXJ0RW5kUG9zaXRpb25zSW50b0ZyYWdt
ZW50Q29vcmRpbmF0ZXMoY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgaW50JiBzdGFydFBvc2l0aW9u
LCBpbnQmIGVuZFBvc2l0aW9uKSBjb25zdDsKIAotICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNhbGN1
bGF0ZUJvdW5kYXJpZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjYWxjdWxhdGVC
b3VuZGFyaWVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyVGV4dEZyYWdtZW50
cygpIHsgbV90ZXh0RnJhZ21lbnRzLmNsZWFyKCk7IH0KICAgICBWZWN0b3I8U1ZHVGV4dEZyYWdt
ZW50PiYgdGV4dEZyYWdtZW50cygpIHsgcmV0dXJuIG1fdGV4dEZyYWdtZW50czsgfQogICAgIGNv
bnN0IFZlY3RvcjxTVkdUZXh0RnJhZ21lbnQ+JiB0ZXh0RnJhZ21lbnRzKCkgY29uc3QgeyByZXR1
cm4gbV90ZXh0RnJhZ21lbnRzOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlydHlPd25MaW5lQm94
ZXMoKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlydHlMaW5lQm94ZXMoKSBv
dmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlydHlPd25MaW5lQm94ZXMoKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlydHlMaW5lQm94ZXMoKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgc3RhcnRzTmV3VGV4dENodW5rKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydHNOZXdUZXh0
Q2h1bms7IH0KICAgICB2b2lkIHNldFN0YXJ0c05ld1RleHRDaHVuayhib29sIG5ld1RleHRDaHVu
aykgeyBtX3N0YXJ0c05ld1RleHRDaHVuayA9IG5ld1RleHRDaHVuazsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaAppbmRleCBiMzdlMDRhMjFk
Y2IzM2FhODUxNWMxOTU1YTdiYjUxYjdjZmNhMmE2Li5lZWEzMGY1MDc2MzY5NjJhODNiZDFiM2I3
NWIzNGUwNWNmZWRhOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1Jvb3RJbmxpbmVCb3guaApAQCAtMzgsMTcgKzM4LDE3IEBAIHB1YmxpYzoKIAogICAgIFJlbmRl
clNWR1RleHQmIHJlbmRlclNWR1RleHQoKTsKIAotICAgIHZpcnR1YWwgZmxvYXQgdmlydHVhbExv
Z2ljYWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2xvZ2ljYWxIZWln
aHQ7IH0KKyAgICB2aXJ0dWFsIGZsb2F0IHZpcnR1YWxMb2dpY2FsSGVpZ2h0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9sb2dpY2FsSGVpZ2h0OyB9CiAgICAgdm9pZCBzZXRMb2dpY2FsSGVp
Z2h0KGZsb2F0IGhlaWdodCkgeyBtX2xvZ2ljYWxIZWlnaHQgPSBoZWlnaHQ7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91dFVu
aXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRV
bml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGNvbXB1dGVQZXJDaGFyYWN0ZXJMYXlvdXRJbmZvcm1hdGlvbigpOwogCiAgICAgSW5saW5lQm94
KiBjbG9zZXN0TGVhZkNoaWxkRm9yUG9zaXRpb24oY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSb290SW5saW5lQm94KCkgY29uc3Qgb3ZlcnJp
ZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jvb3RJbmxp
bmVCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCByZW9yZGVy
VmFsdWVMaXN0cyhWZWN0b3I8U1ZHVGV4dExheW91dEF0dHJpYnV0ZXMqPiYpOwogICAgIHZvaWQg
bGF5b3V0Q2hhcmFjdGVyc0luVGV4dEJveGVzKElubGluZUZsb3dCb3gqLCBTVkdUZXh0TGF5b3V0
RW5naW5lJik7CiAgICAgdm9pZCBsYXlvdXRDaGlsZEJveGVzKElubGluZUZsb3dCb3gqLCBGbG9h
dFJlY3QqID0gMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240320</attachid>
            <date>2014-10-22 19:09:03 -0700</date>
            <delta_ts>2014-10-22 20:10:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137984-20141022190909.patch</filename>
            <type>text/plain</type>
            <size>167248</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTM0N2VhOGU0MjliYmJk
YjkxYWQwZTdlMTY4ZGQyMmJmOGQzOWRlMC4uZWViMTRlYzk4MjE1OGUzMzZmYTYzYjljMDNlYTI4
YTZiNDIxNmJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAxNC0xMC0yMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHZpcnR1YWwg
ZnVuY3Rpb25zIGluIHJlbmRlcmluZy8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIENsZWFuIHVwIHZpcnR1YWwgZnVuY3Rpb25zIGluIHJlbmRlcmluZy8gYnk6
CisgICAgICAgIC0gTWFraW5nIHZpcnR1YWwgZnVuY3Rpb25zIGZpbmFsIHdoZW4gcG9zc2libGUK
KyAgICAgICAgLSBNYWtpbmcgY2xhc3NlcyBmaW5hbCB3aGVuIHBvc3NpYmxlCisgICAgICAgIC0g
VXNpbmcgJ292ZXJyaWRlJyB3aGVuIGFwcHJvcHJpYXRlCisgICAgICAgIC0gRXhwbGljaXRseSBt
YXJraW5nIGZ1bmN0aW9ucyAvIGRlc3RydWN0b3JzIGFzIHZpcnR1YWwgd2hlbiB0aGV5IGFyZQor
ICAgICAgICAgIGluaGVyZW50bHkgdmlydHVhbAorICAgICAgICAtIERyb3BwaW5nIHZpcnR1YWwg
ZGVzdHJ1Y3RvcnMgd2hlbiB0aGUgY2xhc3MgZG9lcyBub3QgaGF2ZSBzdWJjbGFzc2VzCisgICAg
ICAgICAgYW5kIG1hcmsgdGhlIGNsYXNzIGFzIGZpbmFsLCB0byBnZXQgcmlkIG9mIHVubmVjZXNz
YXJ5IHZ0YWJsZXMKKyAgICAgICAgLSBNYWtpbmcgaXNYWFgoKSB2aXJ0dWFsIGZ1bmN0aW9ucyBw
cml2YXRlIG9uIFhYWCBjbGFzc2VzIHRvIGF2b2lkCisgICAgICAgICAgdW5uZWNlc3NhcnkgdHlw
ZSBjaGVja3MKKyAgICAgICAgLSBEZS12aXJ0dWFsaXppbmcgc29tZSBmdW5jdGlvbnMgdGhhdCBk
byBub3QgbmVlZCB0byBiZSB2aXJ0dWFsCisgICAgICAgIC0gRHJvcHBpbmcgZmluYWwgZm9yIHZp
cnR1YWwgZnVuY3Rpb25zIGluIGNsYXNzZXMgYWxyZWFkeSBtYXJrZWQgYXMKKyAgICAgICAgICBm
aW5hbAorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvQXV0b1RhYmxlTGF5
b3V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwUGF0aE9wZXJhdGlvbjo6aXNTYW1lVHlwZSk6CisgICAgICAgICogcmVuZGVyaW5nL0VsbGlw
c2lzQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVl
bi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNYXJxdWVl
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUXVvdGUuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJSZWdpb246OnJlbmRlck5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJSZXBsaWNhLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBh
cnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp+UmVuZGVyU2Nyb2xsYmFyVGhlbWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnNjcm9s
bGJhclRoaWNrbmVzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxi
YXJUaGVtZTo6YnV0dG9uc1BsYWNlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6c3VwcG9ydHNDb250cm9sVGludHMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnNob3VsZENlbnRlck9uVGh1bWIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmluaXRp
YWxBdXRvc2Nyb2xsVGltZXJEZWxheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTY3JvbGxiYXJUaGVtZTo6YXV0b3Njcm9sbFRpbWVyRGVsYXkpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVy
U2Nyb2xsYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaDogUmVtb3Zl
ZC4KKyAgICAgICAgUmVtb3ZlIHRoaXMgY2xhc3MgYXMgaXQgc2VlbXMgdG8gYmUgZGVhZCBjb2Rl
LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclZpZGVvLmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFJvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU2NyaXB0cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9r
ZW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMv
UmFzdGVyU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBl
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVBlbmRpbmdJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHRWxsaXBzZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ2xpcHBlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUxpbmVhckdyYWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hcmtlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
UGF0dGVybi5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRp
YWxHcmFkaWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJ
bmxpbmVUZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94
Lmg6CisKIDIwMTQtMTAtMjIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KIAogICAgICAgICBTVkcgbG9hZGVkIHRocm91Z2ggaHRtbCA8aW1nPiBjYW4ndCByZXF1
ZXN0IHRvIGxvYWQgYW55IGV4dGVybmFsIHJlc291cmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGIxMGY5OWYxMDU1N2IxMjcxNDEz
MzI0MWY2OWEyMjQ2YTRjNzNiMDQuLmI3ZWYyOWQxZmI0M2U3NWMxOTk1MGJiOWNlNzIzZmY1ZWQw
NmQ5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvagpAQCAtMTEzOTQsNyArMTEzOTQsNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJUaGVtZVNhZmFyaS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyVGhlbWVXaW4uY3BwIj4KICAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTIwMzA3LDcgKzIw
MzA2LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJUZXh0
RnJhZ21lbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5k
ZXJUZXh0TGluZUJveGVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJp
bmdcUmVuZGVyVGhlbWUuaCIgLz4KLSAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHJl
bmRlcmluZ1xSZW5kZXJUaGVtZVNhZmFyaS5oIiAvPgogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5j
bHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlclRoZW1lV2luLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyVHJlZUFzVGV4dC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlclZUVEN1ZS5oIiAvPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmlu
ZGV4IDMyMmI3MGM2ZWZkZWQ4YjNhOWQxYWUwYTMxMWQ0MDBhMDFlZWJmMGEuLmFjYzgzYzZjYTBh
MjNkY2E5N2JkMGRjZGZmY2JmZWI4M2MwNjkzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTI3MDksOSAr
MjcwOSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyVGhl
bWUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyVGhlbWVTYWZh
cmkuY3BwIj4KLSAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBp
bGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyVGhlbWVXaW4u
Y3BwIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
CkBAIC0xNTQyOCw5ICsxNTQyNSw2IEBACiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIu
LlxyZW5kZXJpbmdcUmVuZGVyTWVkaWFDb250cm9scy5oIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVy
aW5nPC9GaWx0ZXI+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+Ci0gICAgPEN1c3RvbUJ1aWxkU3Rl
cCBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyVGhlbWVTYWZhcmkuaCI+Ci0gICAgICA8Rmls
dGVyPnJlbmRlcmluZzwvRmlsdGVyPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgogICAgIDxDdXN0
b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlclRoZW1lV2luLmgiPgogICAg
ICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KICAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmlu
ZGV4IDI2MmM2MDA2ZjUzZjgxZmZjN2ZhZjgyMWM5NmU2ZDExODgzY2NkZjkuLmY5Y2VkNmRmMTQy
ODVhMGY5NTIxNjE0NmI3NTQwZTYyNzI4ZThiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIGJv
b2wgUmVuZGVyU2xpZGVyVGh1bWI6OmlzU2xpZGVyVGh1bWIoKSBjb25zdAogCiAvLyBGSVhNRTog
RmluZCBhIHdheSB0byBjYXNjYWRlIGFwcGVhcmFuY2UgYW5kIGFkanVzdCBoZWlnaHRzLCBhbmQg
Z2V0IHJpZCBvZiB0aGlzIGNsYXNzLgogLy8gaHR0cDovL3dlYmtpdC5vcmcvYi82MjUzNQotY2xh
c3MgUmVuZGVyU2xpZGVyQ29udGFpbmVyIDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94IHsKK2Ns
YXNzIFJlbmRlclNsaWRlckNvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJv
eCB7CiBwdWJsaWM6CiAgICAgUmVuZGVyU2xpZGVyQ29udGFpbmVyKFNsaWRlckNvbnRhaW5lckVs
ZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgICAgICA6IFJl
bmRlckZsZXhpYmxlQm94KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmgKaW5kZXggNGMwYzM0MGIyNWUxYzQ1ZmYxODlj
MmQxM2JmN2ZlM2NhODE5NGMwMi4uMmYzMTlmZWE4ZGE2NzJjMTQxOGY4ODQxY2IyMjg1ZjJlMmMw
YTk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuaApAQCAt
MzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJUYWJsZTsKIGNs
YXNzIFJlbmRlclRhYmxlQ2VsbDsKIAotY2xhc3MgQXV0b1RhYmxlTGF5b3V0IDogcHVibGljIFRh
YmxlTGF5b3V0IHsKK2NsYXNzIEF1dG9UYWJsZUxheW91dCBmaW5hbCA6IHB1YmxpYyBUYWJsZUxh
eW91dCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQXV0b1RhYmxlTGF5b3V0KFJlbmRlclRhYmxl
Kik7CiAgICAgdmlydHVhbCB+QXV0b1RhYmxlTGF5b3V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCmluZGV4IDc5YjY2NWNjZmQxNmMwMjIwNjdiNTkw
NmJmOTY3MmYxMDQ3MmQxZDYuLmU3MjMxZTZjYTQwMzI4ZWZlNGIwNjJlMjlhODExMzcyY2RjZDY1
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCkBA
IC01Miw4ICs1Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDbGlwUGF0aE9wZXJhdGlvbiYpIGNvbnN0ID0gMDsKICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgQ2xpcFBhdGhPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0K
IAotICAgIHZpcnR1YWwgT3BlcmF0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2FtZVR5cGUoY29uc3QgQ2xpcFBhdGhPcGVyYXRpb24m
IG8pIGNvbnN0IHsgcmV0dXJuIG8udHlwZSgpID09IG1fdHlwZTsgfQorICAgIE9wZXJhdGlvblR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGJvb2wgaXNTYW1lVHlwZShj
b25zdCBDbGlwUGF0aE9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gby50eXBlKCkgPT0gbV90
eXBlOyB9CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDbGlwUGF0aE9wZXJhdGlvbihPcGVy
YXRpb25UeXBlIHR5cGUpCkBAIC02NCw3ICs2NCw3IEBAIHByb3RlY3RlZDoKICAgICBPcGVyYXRp
b25UeXBlIG1fdHlwZTsKIH07CiAKLWNsYXNzIFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uIDog
cHVibGljIENsaXBQYXRoT3BlcmF0aW9uIHsKK2NsYXNzIFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0
aW9uIGZpbmFsIDogcHVibGljIENsaXBQYXRoT3BlcmF0aW9uIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50KQogICAgIHsKQEAgLTk0LDcgKzk0LDcg
QEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9mcmFnbWVudDsKIH07CiAKLWNsYXNzIFNoYXBlQ2xp
cFBhdGhPcGVyYXRpb24gOiBwdWJsaWMgQ2xpcFBhdGhPcGVyYXRpb24geworY2xhc3MgU2hhcGVD
bGlwUGF0aE9wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDbGlwUGF0aE9wZXJhdGlvbiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4gY3JlYXRl
KFBhc3NSZWY8QmFzaWNTaGFwZT4gc2hhcGUpCiAgICAgewpAQCAtMTMzLDcgKzEzMyw3IEBAIHBy
aXZhdGU6CiAgICAgQ1NTQm94VHlwZSBtX3JlZmVyZW5jZUJveDsKIH07CiAKLWNsYXNzIEJveENs
aXBQYXRoT3BlcmF0aW9uIDogcHVibGljIENsaXBQYXRoT3BlcmF0aW9uIHsKK2NsYXNzIEJveENs
aXBQYXRoT3BlcmF0aW9uIGZpbmFsIDogcHVibGljIENsaXBQYXRoT3BlcmF0aW9uIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCb3hDbGlwUGF0aE9wZXJhdGlvbj4gY3JlYXRlKENT
U0JveFR5cGUgcmVmZXJlbmNlQm94KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9FbGxpcHNpc0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlw
c2lzQm94LmgKaW5kZXggZjNjZjhkYjZmMWFmZGYwZjgwZGExYWYxMDQyYzEwNTUzYmQ3ZWRiNS4u
OTU3NzVkMGVkNDVkMjEyN2FiZTEwNzViYWFlYzUzZjJiNDczMzQ4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0VsbGlwc2lzQm94LmgKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgSGl0VGVzdFJl
c3VsdDsKIGNsYXNzIEVsbGlwc2lzQm94IGZpbmFsIDogcHVibGljIElubGluZUVsZW1lbnRCb3gg
ewogcHVibGljOgogICAgIEVsbGlwc2lzQm94KFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZWxsaXBzaXNTdHIsIElubGluZUZsb3dCb3gqIHBhcmVudCwgaW50IHdpZHRoLCBp
bnQgaGVpZ2h0LCBpbnQgeSwgYm9vbCBmaXJzdExpbmUsIGJvb2wgaXNWZXJ0aWNhbCwgSW5saW5l
Qm94KiBtYXJrdXBCb3gpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9t
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQm
LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVz
dFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29u
c3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExh
eW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTZWxlY3Rpb25TdGF0
ZShSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHMpIHsgbV9zZWxlY3Rpb25TdGF0ZSA9IHM7
IH0KICAgICBJbnRSZWN0IHNlbGVjdGlvblJlY3QoKTsKQEAgLTQwLDggKzQwLDggQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRNYXJrdXBCb3goUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQg
bGluZUJvdHRvbSwgY29uc3QgUmVuZGVyU3R5bGUmKTsKLSAgICB2aXJ0dWFsIGludCBoZWlnaHQo
KSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0OjpT
ZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZSgpIHsgcmV0dXJuIG1fc2VsZWN0aW9uU3RhdGU7
IH0KKyAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKyAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoKSBvdmVycmlk
ZSB7IHJldHVybiBtX3NlbGVjdGlvblN0YXRlOyB9CiAgICAgdm9pZCBwYWludFNlbGVjdGlvbihH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclN0eWxlJiwg
Y29uc3QgRm9udCYpOwogICAgIElubGluZUJveCogbWFya3VwQm94KCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5oCmluZGV4IDlmYTU2ZDE3MjIx
YTU1ZDE0OTYyZjNlZDVmNTY0ZjI1YTU2NWE2OGUuLmQ3YmNiZDY1NTMxMDkzMWVhODhjMDZmMTFk
YmQxMjNjYTU2Y2IyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhl
ZFRhYmxlTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVM
YXlvdXQuaApAQCAtMzAsMTMgKzMwLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
UmVuZGVyVGFibGU7CiAKLWNsYXNzIEZpeGVkVGFibGVMYXlvdXQgOiBwdWJsaWMgVGFibGVMYXlv
dXQgeworY2xhc3MgRml4ZWRUYWJsZUxheW91dCBmaW5hbCA6IHB1YmxpYyBUYWJsZUxheW91dCB7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRml4ZWRUYWJsZUxheW91dChSZW5kZXJUYWJsZSopOwog
CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVu
aXQmIG1pbldpZHRoLCBMYXlvdXRVbml0JiBtYXhXaWR0aCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGFwcGx5UHJlZmVycmVkTG9naWNhbFdpZHRoUXVpcmtzKExheW91dFVuaXQmIG1pbldp
ZHRoLCBMYXlvdXRVbml0JiBtYXhXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAogcHJp
dmF0ZToKICAgICBpbnQgY2FsY1dpZHRoQXJyYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVFbGVtZW50Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lRWxlbWVudEJveC5oCmluZGV4IDk2MWEwNzU0NTNkNWY5NDdhZWY0NjY0MGQ4YWNl
Yzc0ZDYyM2ZlODQuLjU2NjM5NWIyYjhmM2Q1MzFkZjdhMDYxZjJmYmI2MWRhNTE2MjFhN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVFbGVtZW50Qm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guaApAQCAtNDQsOSAr
NDQsOSBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIoKSBj
b25zdCB7IHJldHVybiBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oSW5saW5lQm94Ojpy
ZW5kZXJlcigpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUxpbmUoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZXh0cmFjdExpbmUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgYXR0YWNoTGluZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVMaW5lKCkg
b3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGV4dHJhY3RMaW5lKCkgb3ZlcnJpZGUg
ZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGF0dGFjaExpbmUoKSBvdmVycmlkZSBmaW5hbDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExh
eW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVz
dWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0
VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuaAppbmRleCBhYjc2MzlmYTEyYjczMTNiOGRhZTJmYmM2ZGVhYzY0MDhkYjQ0
NDhlLi45NjYxYzU2MzMzMzA0Mjg5OTgwMjI5MTkwMTM2NzFlYzg2MGVjM2M4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC0yODAsNyArMjgwLDcgQEAg
cHVibGljOgogICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogbXVsdGlDb2x1bW5GbG93
VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZUJsb2NrRmxvd0RhdGEoKSA/IHJhcmVCbG9j
a0Zsb3dEYXRhKCktPm1fbXVsdGlDb2x1bW5GbG93VGhyZWFkIDogbnVsbHB0cjsgfQogICAgIHZv
aWQgc2V0TXVsdGlDb2x1bW5GbG93VGhyZWFkKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCop
OwogICAgIAotICAgIGJvb2wgY29udGFpbnNGbG9hdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2Zsb2F0aW5nT2JqZWN0cyAmJiAhbV9mbG9hdGluZ09iamVjdHMtPnNldCgpLmlzRW1wdHko
KTsgfQorICAgIHZpcnR1YWwgYm9vbCBjb250YWluc0Zsb2F0cygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fZmxvYXRpbmdPYmplY3RzICYmICFtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCkuaXNF
bXB0eSgpOyB9CiAgICAgYm9vbCBjb250YWluc0Zsb2F0KFJlbmRlckJveCYpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUxpbmVzKCkgb3ZlcnJpZGU7CkBAIC0zNzYsOCArMzc2LDgg
QEAgcHVibGljOgogICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodEZvckNoaWxkRm9yRnJhZ21l
bnRhdGlvbihjb25zdCBSZW5kZXJCb3gmIGNoaWxkKSBjb25zdDsKICAgICBib29sIGhhc05leHRQ
YWdlKExheW91dFVuaXQgbG9naWNhbE9mZnNldCwgUGFnZUJvdW5kYXJ5UnVsZSA9IEV4Y2x1ZGVQ
YWdlQm91bmRhcnkpIGNvbnN0OwogCi0gICAgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5l
d0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7Ci0gICAgUmVu
ZGVyT2JqZWN0KiByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBi
ZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiByZW1v
dmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY3JlYXRlTXVsdGlD
b2x1bW5GbG93VGhyZWFkKCk7CiAgICAgdm9pZCBkZXN0cm95TXVsdGlDb2x1bW5GbG93VGhyZWFk
KCk7CkBAIC00NTAsOCArNDUwLDggQEAgcHJvdGVjdGVkOgogICAgIExheW91dFVuaXQgY29tcHV0
ZWRDb2x1bW5XaWR0aCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGNvbXB1dGVkQ29sdW1uQ291bnQo
KSBjb25zdDsKICAgICAKLSAgICBib29sIGlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUb3BMYXlvdXRPdmVyZmxvd0FsbG93ZWQo
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMZWZ0TGF5b3V0T3ZlcmZsb3dB
bGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIG1vdmVGbG9hdHNUbyhSZW5kZXJC
bG9ja0Zsb3cqIHRvQmxvY2spOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ29tYmluZVRleHQuaAppbmRleCBhNTk1OGQ0MDg0MjNiY2Y4OGY3MjE1NTJjOWMzNDQxMGVj
YWYyNjVlLi4wMWJlNGQ2M2QyNmY4M2MyZDBlMTEyMDJmMzBmYWI1NTlmNDhhZGVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaApAQCAtNDUsMTAgKzQ1
LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBub2RlKCkgY29uc3QgPSBkZWxldGU7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDb21iaW5lVGV4dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIGZsb2F0IHdpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0
aCwgY29uc3QgRm9udCYsIGZsb2F0IHhQb3NpdGlvbiwgSGFzaFNldDxjb25zdCBTaW1wbGVGb250
RGF0YSo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVy
Q29tYmluZVRleHQiOyB9Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlm
ZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNDb21iaW5lVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGZsb2F0IHdpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgRm9u
dCYsIGZsb2F0IHhQb3NpdGlvbiwgSGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0YSo+KiBmYWxs
YmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyQ29tYmluZVRleHQiOyB9CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0UmVuZGVyZWRUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwog
CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX2NvbWJpbmVGb250U3R5bGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaAppbmRleCBhZGZhODZiZDRlNmQ1MWFhZWQ0NmNm
Y2RkYTQ2NjMyYjUwMjQ1ZGVjLi5iZjNkNDQ1NjFjYzEyNWM4OWQ1MTJjN2Y5NjdhMTIwMzdkNmJi
YjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKQEAgLTQzLDEy
ICs0MywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDb3VudGVyKCk7CiAKIHByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CisgICAgdmlydHVhbCB2b2lk
IHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0NvdW50ZXIo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBvcmlnaW5hbFRleHQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNDb3VudGVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBTdHJpbmcg
b3JpZ2luYWxUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCkgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guaAppbmRleCA5NDc0ZTg4OTRjOGNiYTNkYWI0Y2E0ZDRlZDM0YmU2NTI5NTc1NGNi
Li5jNjFjNTg2OTdmODk0OTI5NzhhYjRjZmYxNWI1ZmUxMTQ5NTYzMDU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5o
CkBAIC0zNiwyMiArMzYsMjIgQEAgcHVibGljOgogCiAgICAgRWxlbWVudCYgZWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0K
IAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0OworICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
JiBuZXdTdHlsZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0QmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VIZWlnaHQgPSAwKTsKKyAgICB2aXJ0
dWFsIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBh
Z2VIZWlnaHQgPSAwKSBvdmVycmlkZTsKICAgICB2b2lkIGxheW91dEhvcml6b250YWxCb3goYm9v
bCByZWxheW91dENoaWxkcmVuKTsKICAgICB2b2lkIGxheW91dFZlcnRpY2FsQm94KGJvb2wgcmVs
YXlvdXRDaGlsZHJlbik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0RlcHJlY2F0ZWRGbGV4aWJsZUJv
eCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTdHJldGNoaW5n
Q2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX3N0cmV0Y2hpbmdDaGlsZHJlbjsgfQorICAgIHZp
cnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIGlzU3RyZXRjaGluZ0NoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9zdHJldGNoaW5nQ2hpbGRyZW47IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29s
bGFwc2VBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KIAogICAgIHZvaWQgcGxhY2VDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBjb25zdCBMYXlvdXRQ
b2ludCYgbG9jYXRpb24sIExheW91dFNpemUqIGNoaWxkTGF5b3V0RGVsdGEgPSAwKTsKIAogcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNEZXByZWNhdGVkRmxleGlibGVCb3goKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5z
aWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYg
bWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAppbmRleCAwYmY3MTcxNmYwMzliNjg0YzRhNWIz
NWU0ZmNmZjhkY2ZmY2FkODQ4Li4yYjZlZmFjNjE4MWU2ZTg4ZWUxYTNlYjFmNjFiYjljZjJmOGIw
Njk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApA
QCAtNDQsNyArNDQsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0ZsZXhpYmxlQm94
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBhdm9pZHNGbG9hdHMoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdmlydHVhbCBib29sIGNhbkNvbGxhcHNlQW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0IG92
ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGxheW91dEJs
b2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9
IDApIG92ZXJyaWRlIGZpbmFsOwpAQCAtNTcsOCArNTYsOCBAQCBwdWJsaWM6CiAKICAgICBib29s
IGlzSG9yaXpvbnRhbEZsb3coKSBjb25zdDsKIAotICAgIGJvb2wgaXNUb3BMYXlvdXRPdmVyZmxv
d0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzTGVmdExheW91dE92ZXJmbG93
QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBpc1RvcExheW91dE92
ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBpc0xlZnRM
YXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBt
aW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJp
ZGU7CkBAIC04Niw2ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gVXNlIGFuIGlubGluZSBjYXBh
Y2l0eSBvZiA4LCBzaW5jZSBmbGV4Ym94IGNvbnRhaW5lcnMgdXN1YWxseSBoYXZlIGxlc3MgdGhh
biA4IGNoaWxkcmVuLgogICAgIHR5cGVkZWYgVmVjdG9yPExheW91dFJlY3QsIDg+IENoaWxkRnJh
bWVSZWN0czsKIAorICAgIHZpcnR1YWwgYm9vbCBpc0ZsZXhpYmxlQm94KCkgY29uc3Qgb3ZlcnJp
ZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaGFzT3J0aG9nb25hbEZsb3coUmVu
ZGVyQm94JiBjaGlsZCkgY29uc3Q7CiAgICAgYm9vbCBpc0NvbHVtbkZsb3coKSBjb25zdDsKICAg
ICBib29sIGlzTGVmdFRvUmlnaHRGbG93KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZ1bGxTY3JlZW4uaAppbmRleCA2NjU2NTcxM2NmMWYwN2Q2ZWE5ZjFlODg3YzUw
MTA2ZDViZGJmZGZlLi45YjZjOGRiN2I5NThjZWMyNzlmZTI5MzVmZTgyMzEzNTNiMjYxMjMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgKQEAgLTM2LDcg
KzM2LDYgQEAgY2xhc3MgUmVuZGVyRnVsbFNjcmVlbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4
aWJsZUJveCB7CiBwdWJsaWM6CiAgICAgUmVuZGVyRnVsbFNjcmVlbihEb2N1bWVudCYsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckZ1bGxTY3JlZW4o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZ1bGxTY3JlZW4i
OyB9CiAKICAgICB2b2lkIHNldFBsYWNlaG9sZGVyKFJlbmRlckJsb2NrKik7CkBAIC00Nyw2ICs0
Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVud3JhcFJlbmRlcmVyKGJvb2wmIHJlcXVpcmVzUmVu
ZGVyVHJlZVJlYnVpbGQpOwogCiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckZ1
bGxTY3JlZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCBjZjFjNzMwNzJiZjYzMmQwYjk2ZWIxNDhhOTI1
MDdjMjhkM2Y3YWMxLi5iYjM0OTRhYTQ5NzhjYWVlNGU0MThhYzYwMTQ4MTVjNTU4MTg0MzQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBw
cml2YXRlOgogCiAgICAgTGF5b3V0VW5pdCBncmlkQXJlYUJyZWFkdGhGb3JDaGlsZChjb25zdCBS
ZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxH
cmlkVHJhY2s+JikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDaGlsZHJlbihQYWlu
dEluZm8mIGZvclNlbGYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgUGFpbnRJbmZv
JiBmb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1
YWwgdm9pZCBwYWludENoaWxkcmVuKFBhaW50SW5mbyYgZm9yU2VsZiwgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0LCBQYWludEluZm8mIGZvckNoaWxkLCBib29sIHVzZVByaW50UmVjdCkg
b3ZlcnJpZGU7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCB0cmFja3NBcmVXaWRlclRoYW5N
aW5UcmFja0JyZWFkdGgoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8R3Jp
ZFRyYWNrPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA5ZTcx
ZDJkMWRhYzI3NWM2NWEwY2I0Mjg3OGNkZWIyNDg5NjcwZTgxLi40ZmU2ZDYxMjczYjU1MDNjYjVj
NGM3YzBiMTZlODUxZWFhNGNkMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaApAQCAtNzg5LDcgKzc4OSw3IEBAIHB1YmxpYzoKICAgICBib29sIHByZXNlcnZlczNEKCkg
Y29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLnRyYW5zZm9ybVN0eWxlM0QoKSA9PSBU
cmFuc2Zvcm1TdHlsZTNEUHJlc2VydmUzRDsgfQogICAgIGJvb2wgaGFzM0RUcmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiBtX3RyYW5zZm9ybSAmJiAhbV90cmFuc2Zvcm0tPmlzQWZmaW5lKCk7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBmaWx0ZXJOZWVkc1JlcGFpbnQoKTsKKyAgICB2b2lkIGZpbHRl
ck5lZWRzUmVwYWludCgpOwogICAgIGJvb2wgaGFzRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gcmVu
ZGVyZXIoKS5oYXNGaWx0ZXIoKTsgfQogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAppbmRleCA3ZDkx
ODVmMTlmNjMwOTQ4MjA0ZjE4NGM0MThiOTIzMmI4ZDYxMmQ5Li5mZThlYjgzNTdlOTUwZTE5YTdm
MzAyYjg3NDk2Y2U2NmZmNGIyMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5oCkBAIC0yMTksNyArMjE5LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBuZWVkc1BpeGVsQWxpZ21lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9p
c01haW5GcmFtZVJlbmRlclZpZXdMYXllcjsgfQogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZpcnR1
YWwgdm9pZCB2ZXJpZnlOb3RQYWludGluZygpOworICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlOb3RQ
YWludGluZygpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCBMYXlvdXRS
ZWN0IGNvbnRlbnRzQm94KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggMmQ1MTkwMWJiNmQ4NGMyYzY5OTE5OWVmMWJl
MWJjY2UwZDRlN2Y2Ni4uNjQyNGNmNDkwYTZkN2U0NjkzZDcyYWQ5NjRjYmIxYzg3MzhmMzM2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
aApAQCAtOTIsMTEgKzkyLDExIEBAIHR5cGVkZWYgdW5zaWduZWQgQ29tcG9zaXRpbmdSZWFzb25z
OwogLy8gCiAvLyBUaGVyZSBpcyBvbmUgUmVuZGVyTGF5ZXJDb21wb3NpdG9yIHBlciBSZW5kZXJW
aWV3LgogCi1jbGFzcyBSZW5kZXJMYXllckNvbXBvc2l0b3IgOiBwdWJsaWMgR3JhcGhpY3NMYXll
ckNsaWVudCwgcHVibGljIEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50IHsKK2NsYXNzIFJlbmRl
ckxheWVyQ29tcG9zaXRvciBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50LCBwdWJs
aWMgR3JhcGhpY3NMYXllclVwZGF0ZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlckxheWVyQ29tcG9zaXRvcihSZW5kZXJW
aWV3Jik7Ci0gICAgflJlbmRlckxheWVyQ29tcG9zaXRvcigpOworICAgIHZpcnR1YWwgflJlbmRl
ckxheWVyQ29tcG9zaXRvcigpOwogCiAgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhpcyBSZW5kZXJW
aWV3IGlzIGluICJjb21wb3NpdGluZyBtb2RlIiAoaS5lLiBoYXMgb25lIG9yIG1vcmUKICAgICAv
LyBjb21wb3NpdGVkIFJlbmRlckxheWVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckZpbHRlckluZm8uaAppbmRleCAyNjVmNzNmMmVhYjE5YWE5OGMwM2VlOWFj
YzE2OTg1OTY5OTliYTlmLi5mOTlkZTEwYzZhYjA3MmE5Njc1OWYzNmQ0ZTYyN2E2NDk0OWI0ODU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5m
by5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZW1vdmUoUmVu
ZGVyTGF5ZXImKTsKIAogICAgIGV4cGxpY2l0IEZpbHRlckluZm8oUmVuZGVyTGF5ZXImKTsKLSAg
ICB+RmlsdGVySW5mbygpOworICAgIHZpcnR1YWwgfkZpbHRlckluZm8oKTsKIAogICAgIGNvbnN0
IExheW91dFJlY3QmIGRpcnR5U291cmNlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlydHlTb3Vy
Y2VSZWN0OyB9CiAgICAgdm9pZCBleHBhbmREaXJ0eVNvdXJjZVJlY3QoY29uc3QgTGF5b3V0UmVj
dCYgcmVjdCkgeyBtX2RpcnR5U291cmNlUmVjdC51bml0ZShyZWN0KTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCmluZGV4IGQwZTNmZTVkMjk0NzEyYjIyMmM0
OWM3M2IyODNhM2Y2N2UwNjBmZjQuLmY1Zjk2NDM1MzA3ZGYzYzQ5MzcyYWIyN2FmNzU4MjVkNGU0
YzUzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJl
YWsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKQEAg
LTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vZGUoKSBjb25zdCA9IGRlbGV0ZTsK
IAogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIG92ZXJyaWRlIGZpbmFsIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludChQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIHsgfQogCiAgICAgdmlydHVh
bCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNv
bnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IGNhcmV0TWluT2Zm
c2V0KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWFycXVlZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1
ZWUuaAppbmRleCA2Yzg3OTkzN2QzNTU5ODA0ZjQ1ZDcxY2QwYjc3NGI4ZWJmOTA2YzMyLi44N2My
MDJkYWFiMzMzZDQxOTNlMzdkOWE1YTFkMDFiZmZhY2Y3OWEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNYXJxdWVlLmgKQEAgLTUzLDExICs1MywxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBSZW5kZXJMYXllcjsKIAogLy8gVGhpcyBjbGFzcyBoYW5kbGVzIHRoZSBh
dXRvLXNjcm9sbGluZyBvZiBsYXllcnMgd2l0aCBvdmVyZmxvdzogbWFycXVlZS4KLWNsYXNzIFJl
bmRlck1hcnF1ZWUgeworY2xhc3MgUmVuZGVyTWFycXVlZSBmaW5hbCB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUmVuZGVyTWFycXVlZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFJlbmRlck1hcnF1ZWUoUmVuZGVyTGF5ZXIqKTsKLSAgICB2aXJ0
dWFsIH5SZW5kZXJNYXJxdWVlKCk7CisgICAgflJlbmRlck1hcnF1ZWUoKTsKIAogICAgIGludCBz
cGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlZWQ7IH0KICAgICBpbnQgbWFycXVlZVNwZWVkKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFD
b250cm9sRWxlbWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNv
bnRyb2xFbGVtZW50cy5oCmluZGV4IDg2ZDI3NzhmOWM4MDZiNzA3YmY0M2YxYWNlYzhjMWJhMmZh
NjBjMGYuLjdhNjVjMjk5Mjk4YjhjM2I2Nzg0MTZlOTc0ODMyYmUzZjVlOWNjYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50
cy5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJNZWRpYVZvbHVtZVNsaWRl
ckNvbnRhaW5lcihFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3Zl
cnJpZGU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01MSw3ICs1
MSw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lcihF
bGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiB9Owog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02Myw3ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KEVsZW1lbnQmLCBQYXNzUmVm
PFJlbmRlclN0eWxlPik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIH07CiAKICNlbmRpZiAvLyBFTkFC
TEUoVklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKaW5kZXggMDIyM2M5ODJjNzIwYzM3ZTY3NTk0YTA3
OGU5YzljODBjMGVjMTQ2Zi4uZjk1NWZhMmZkZTk3NGM1MmI4ZmIzNjM5N2MzZmY5NTIzMDQyYjE4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
Rmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNv
bHVtbkZsb3dUaHJlYWQuaApAQCAtNDEsOCArNDEsNiBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTXVs
dGlDb2x1bW5GbG93VGhyZWFkKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwogICAg
IH5SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLQogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGbG93Q2hpbGRJbmZvKFJlbmRlck9iamVjdCop
IG92ZXJyaWRlOwogCiAgICAgUmVuZGVyQmxvY2tGbG93KiBtdWx0aUNvbHVtbkJsb2NrRmxvdygp
IGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4ocGFyZW50KCkpOyB9CkBA
IC01NSw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBs
YWNlaG9sZGVyKiBmaW5kQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKFJlbmRlckJveCogc3Bhbm5l
cikgY29uc3QgeyByZXR1cm4gbV9zcGFubmVyTWFwLmdldChzcGFubmVyKTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKSBvdmVycmlkZTsKIAogICAgIC8vIEZpbmQgdGhlIHNldCBpbnNpZGUgd2hpY2ggdGhlIHNw
ZWNpZmllZCByZW5kZXJlciB3b3VsZCBiZSByZW5kZXJlZC4KICAgICBSZW5kZXJNdWx0aUNvbHVt
blNldCogZmluZFNldFJlbmRlcmluZyhSZW5kZXJPYmplY3QqKSBjb25zdDsKQEAgLTExNSw2ICsx
MTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZENoZWNrQ29sdW1uQnJlYWtz
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVy
TXVsdGlDb2x1bW5GbG93VGhyZWFkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBhZGRSZWdpb25Ub1RocmVhZChSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCmluZGV4IDI3
Y2E3MzdjMzhkODJhY2U0ZGY0YzU2NzUyOTlkMWZmYjU2ZTM3NmQuLjhjYWMwNTA1NGI4YjU0MDRj
NDAwYjM3MWUzMmQ0ZjE4OWQ2MWM4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCkBAIC00Nyw4ICs0Nyw2IEBAIGNsYXNzIFJlbmRlck11
bHRpQ29sdW1uU2V0IGZpbmFsIDogcHVibGljIFJlbmRlclJlZ2lvblNldCB7CiBwdWJsaWM6CiAg
ICAgUmVuZGVyTXVsdGlDb2x1bW5TZXQoUmVuZGVyRmxvd1RocmVhZCYsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1uU2V0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgUmVuZGVyQmxvY2tGbG93KiBtdWx0
aUNvbHVtbkJsb2NrRmxvdygpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxv
dz4ocGFyZW50KCkpOyB9CiAgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBtdWx0aUNv
bHVtbkZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJNdWx0aUNv
bHVtbkZsb3dUaHJlYWQqPihmbG93VGhyZWFkKCkpOyB9CiAKQEAgLTEzMSw5ICsxMjksMTAgQEAg
cHVibGljOgogICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoK
LSAgICB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAgCiBwcml2YXRl
OgorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1uU2V0KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsK
IAogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2lj
YWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFs
dWVzJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xNTUsNyArMTU0LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0VW5pdCBjYWxjdWxhdGVNYXhDb2x1
bW5IZWlnaHQoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNvbHVtbkdhcCgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5l
clBsYWNlaG9sZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5TcGFubmVyUGxhY2Vob2xkZXIuaAppbmRleCBmMWE1Yjg4NDczYjg0YWY1YThhYjI1YzNiZDMz
ZTQ3YWIzYjQ3YWUzLi5jZjlkMWIzNzljYzRmZjkxYzdlMzc1ZTZlYjMxNGY4YjA5NDE3OGI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFu
bmVyUGxhY2Vob2xkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaApAQCAtNDAsMTUgKzQwLDE1IEBAIGNsYXNzIFJl
bmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyIGZpbmFsIDogcHVibGljIFJlbmRlckJv
eCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9s
ZGVyKiBjcmVhdGVBbm9ueW1vdXMoUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiwgUmVuZGVy
Qm94KiBzcGFubmVyLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwogCi0gICAgdmlydHVhbCBi
b29sIGlzUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAgICAgUmVuZGVyQm94KiBzcGFubmVyKCkgY29uc3QgeyByZXR1
cm4gbV9zcGFubmVyOyB9CiAgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBmbG93VGhy
ZWFkKCkgY29uc3QgeyByZXR1cm4gbV9mbG93VGhyZWFkOyB9CiAKIHByaXZhdGU6CiAgICAgUmVu
ZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIoUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhy
ZWFkKiwgUmVuZGVyQm94KiBzcGFubmVyLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgdmly
dHVhbCBib29sIGlzUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxk
cmVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2
ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSB7IH0K
ICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIFJlbmRlckJveCogbV9zcGFubmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaAppbmRleCBjNWVmYjMyNDk0YzM4MWE2MmY4NDU3
MWFmMTc3YTY0NDZiM2MxZDVhLi4yYzI0NjlmNzdkYTQ2MGExNjZhODA1ZTdlNTBiZGNiNjNiZDAz
YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQuaApAQCAtNTQsMTIgKzU0LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNz
UmVmPFJlbmRlclN0eWxlPiBjcmVhdGVTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5
bGUpOwogCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZ2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYpIGNv
bnN0OwogCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7
CisgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgTGF5b3V0VW5pdCBtYXhQYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0OwogICAgIAog
ICAgIExheW91dFJlY3QgZmxvd1RocmVhZFBvcnRpb25SZWN0Rm9yQ2xpcHBpbmcoYm9vbCBpc0Zp
cnN0UmVnaW9uSW5SYW5nZSwgYm9vbCBpc0xhc3RSZWdpb25JblJhbmdlKSBjb25zdDsKQEAgLTEy
MSw2ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVnaW9uSWZOZWVkZWQo
KTsKIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQiOyB9CiAKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjb21wdXRlU3R5bGVJ
blJlZ2lvbihSZW5kZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJl
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaApp
bmRleCAxYjBlNzk0MDUzNmY3MDg0MDQ5Mjk3YTU3YmQ1MTU5NmRkMWQ4N2JkLi5kODczZjFiN2Iz
ZmY1NjZlMjQ3YzVlZGVhOWEyZWYwMzA5MmIyZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCkBAIC04Myw3ICs4Myw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzTWFya2VkRm9yRGVzdHJ1Y3Rpb24oKSBjb25zdDsKICAgICB2b2lkIGdl
dFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPj4mLCBjb25zdCBSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudCopIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5QnJlYWtBZnRlckNvbnRlbnQo
TGF5b3V0VW5pdCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5QnJlYWtB
ZnRlckNvbnRlbnQoTGF5b3V0VW5pdCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgY29s
bGVjdHNHcmFwaGljc0xheWVyc1VuZGVyUmVnaW9ucygpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC05
Myw3ICs5Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJSZW5kZXJPYmplY3RDdXN0b21T
dHlsZShjb25zdCBSZW5kZXJPYmplY3QqKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGbG93
Q2hpbGRJbmZvKFJlbmRlck9iamVjdCopIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVGbG93Q2hpbGRJbmZvKFJlbmRlck9iamVjdCopIG92ZXJyaWRlOwogCiAgICAgTGF5
b3V0VW5pdCBmbG93Q29udGVudEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvd0NvbnRlbnRC
b3R0b207IH0KICAgICB2b2lkIGRpc3BhdGNoTmFtZWRGbG93RXZlbnRzKCk7CkBAIC0xMTEsNyAr
MTExLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJOYW1lZEZsb3dUaHJl
YWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlz
Q2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVPdmVyZmxvdyhMYXlvdXRVbml0
LCBib29sID0gZmFsc2UpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVy
cmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGRpc3BhdGNoUmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50SWZOZWVkZWQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaAppbmRleCBkNWZiMWQzNWRiMDJlN2ZhNTVmNWNi
YTVlMDIzYmUyNThjZmJiMDFiLi45NzQzYTRmNDdlYTg5MGUxMDE3ZTdlMzU3ZDAwNDdmMDgzNDE1
NjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaApAQCAtMzksNyArMzks
NyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJRdW90ZSI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNRdW90ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH07CisgICAgdmlydHVhbCBib29sIGlzUXVvdGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAppbmRleCAyOWQ3OWQ1MmE0MzVkMzg2
OGI0ZjNjZWYwZjVjN2FkMzcyYzJlOTdmLi5iM2YzMWI4MDhiYjYzNjhiMDYzMDcwMmM2YzAyYmJj
ZmJlNzNhMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVn
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCkBAIC00
OCw4ICs0OCw2IEBAIGNsYXNzIFJlbmRlck5hbWVkRmxvd1RocmVhZDsKIAogY2xhc3MgUmVuZGVy
UmVnaW9uIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBi
b29sIGlzUmVuZGVyUmVnaW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQotCiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKIAogICAgIHZvaWQgc2V0Rmxvd1RocmVhZFBvcnRp
b25SZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpIHsgbV9mbG93VGhyZWFkUG9ydGlvblJlY3Qg
PSByZWN0OyB9CkBAIC0xNTAsNyArMTQ4LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY29tcHV0
ZU92ZXJmbG93RnJvbUZsb3dUaHJlYWQoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUmVnaW9uIjsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc1JlbmRlclJlZ2lvbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVnaW9uIjsgfQogCiAgICAgdmlydHVhbCB2b2lkIGlu
c2VydGVkSW50b1RyZWUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlUmVtb3Zl
ZEZyb21UcmVlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGljYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxp
Y2EuaAppbmRleCBjOTQ1Y2JjZGIyZTY5OGEzZTY3OTkyYzRiZmMzZGFiOTI0ZThlMDZhLi41ZjRh
NWFlODIwNDBkZWIzZDE0Y2FmNTY1MDUwZTVhYzZjMjZhNjI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsaWNhLmgKQEAgLTM4LDEzICszOCwxMyBAQCBwdWJsaWM6CiAgICAg
UmVuZGVyUmVwbGljYShEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0
dWFsIH5SZW5kZXJSZXBsaWNhKCk7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUmVwbGljYSI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVwbGlj
YSI7IH0KIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1
YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGJvb2wgaXNSZXBsaWNhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaAppbmRleCBjMzBhYTEx
MWU5ZTJmMzMzOWYyODM1MWJjZDM2NGQ5MmNlNzVlOGFiLi5iNzIwZTU3MDIxMDUzNDViZjMwNTFm
ZTBjNjNkZjdlNjA4MTI2NTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVi
eUJhc2UuaApAQCAtNDIsMTQgKzQyLDEzIEBAIHB1YmxpYzoKICAgICBSZW5kZXJSdWJ5QmFzZShE
b2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5
QmFzZSgpOwogICAgIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IHsgcmV0dXJuICJSZW5kZXJSdWJ5QmFzZSAoYW5vbnltb3VzKSI7IH0KLQotICAgIHZpcnR1YWwg
Ym9vbCBpc1J1YnlCYXNlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5
QmFzZSAoYW5vbnltb3VzKSI7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGls
ZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsK
LSAgICB2aXJ0dWFsIEVUZXh0QWxpZ24gdGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRzV2l0
aFNvZnRCcmVhaykgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdElubGluZURpcmVjdGlv
bkxpbmVCb3VuZHMoaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQsIGZsb2F0JiBsb2dpY2Fs
TGVmdCwgZmxvYXQmIGxvZ2ljYWxXaWR0aCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzUnVi
eUJhc2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29s
IGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBFVGV4dEFsaWduIHRleHRBbGlnbm1lbnRGb3JM
aW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBhZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91bmRzKGludCBleHBhbnNpb25PcHBvcnR1
bml0eUNvdW50LCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBsb2dpY2FsV2lkdGgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgbWVyZ2VDaGlsZHJlbldpdGhCYXNlKFJlbmRlclJ1YnlCYXNl
KiB0b0Jsb2NrKTsKIAogICAgIHZvaWQgbW92ZUNoaWxkcmVuKFJlbmRlclJ1YnlCYXNlKiB0b0Jh
c2UsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUnVieVJ1bi5oCmluZGV4IGQ5ZGNlNGY3OGE2ZWU1ZTM0Y2E3Njk5ZWM0YzEwMTNh
NWY2OGM3Y2UuLjA3MmNiZmU0OTM5NWM4ZmIwMmM4M2ViZmMxMzNmZDU3MzRhMTgxMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaApAQCAtNDgsMjAgKzQ4LDIwIEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaGFzUnVieVRleHQoKSBjb25zdDsKICAgICBib29sIGhhc1J1
YnlCYXNlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZTsKICAgICBSZW5kZXJSdWJ5VGV4dCogcnVieVRl
eHQoKSBjb25zdDsKICAgICBSZW5kZXJSdWJ5QmFzZSogcnVieUJhc2UoKSBjb25zdDsKICAgICBS
ZW5kZXJSdWJ5QmFzZSogcnVieUJhc2VTYWZlKCk7IC8vIGNyZWF0ZXMgdGhlIGJhc2UgaWYgaXQg
ZG9lc24ndCBhbHJlYWR5IGV4aXN0CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogbGF5b3V0
U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKTsKLSAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxF
eGNsdWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxv
d2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7Ci0gICAg
dmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCog
YmVmb3JlQ2hpbGQgPSAwKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3Qg
UmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBi
ZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiByZW1v
dmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVuZGVyQmxv
Y2sqIGZpcnN0TGluZUJsb2NrKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZpcnN0
TGV0dGVyKCk7CisgICAgdmlydHVhbCBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRmlyc3RMZXR0ZXIoKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgZ2V0T3ZlcmhhbmcoYm9vbCBmaXJzdExpbmUsIFJlbmRlck9iamVjdCog
c3RhcnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlciwgaW50JiBzdGFydE92ZXJo
YW5nLCBpbnQmIGVuZE92ZXJoYW5nKSBjb25zdDsKIApAQCAtNzEsMTAgKzcxLDEwIEBAIHByb3Rl
Y3RlZDoKICAgICBSZW5kZXJSdWJ5QmFzZSogY3JlYXRlUnVieUJhc2UoKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNSdWJ5UnVuKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJS
ZW5kZXJSdWJ5UnVuIChhbm9ueW1vdXMpIjsgfQotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVzQW5v
bnltb3VzV3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJCbG9jayopIHsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc1J1YnlSdW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlclJ1YnlSdW4gKGFub255bW91cykiOyB9CisgICAgdmlydHVhbCBib29sIGNyZWF0ZXNB
bm9ueW1vdXNXcmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVMZWZ0b3ZlckFub255bW91c0Jsb2NrKFJlbmRlckJsb2NrKikgb3Zl
cnJpZGUgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKaW5kZXggZGYxMGI3NTJmMWFhZTUzZDUxMDg1YzI0
ZjY5NzQ0MDNiZDY2YzkxNi4uZjZjYjMyZDYyZDcwYzY3MDFhNzY2NDg0NzdmYmJlMTU1NTE0MTg3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaApAQCAtNTUs
NyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBpbnQgbWluaW11bVRodW1iTGVuZ3RoKCk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNPdmVybGF5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNPdmVybGF5U2Nyb2xsYmFyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGZsb2F0IG9wYWNpdHkoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKaW5kZXggY2VhNzdiYjc0ZmFi
MTA2ZThkYTQzOTY2NWYzOGY2OWViMTU2NDExYy4uZWU2NDIyYjdlMWI4NDBmYjgyMTkzZWM0OGVl
NDI0ZGE5ZjIwZWViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhclBhcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyUGFydC5oCkBAIC0zOSwxMSArMzksMTEgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1
YWwgflJlbmRlclNjcm9sbGJhclBhcnQoKTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTY3JvbGxiYXJQYXJ0IjsgfQorICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJTY3JvbGxiYXJQYXJ0IjsgfQogICAgIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xh
eWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNM
YXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogICAgIAog
ICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRQb2lu
dCYsIGNvbnN0IExheW91dFJlY3QmKTsKIApAQCAtNTMsMTUgKzUzLDE1IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNvbnN0IG92ZXJyaWRlIHsgQVNTRVJU
KGlzSW50ZWdlclZhbHVlKG1fbWFyZ2luQm94LmxlZnQoKSkpOyByZXR1cm4gbV9tYXJnaW5Cb3gu
bGVmdCgpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KCkgY29uc3Qgb3Zl
cnJpZGUgeyBBU1NFUlQoaXNJbnRlZ2VyVmFsdWUobV9tYXJnaW5Cb3gucmlnaHQoKSkpOyByZXR1
cm4gbV9tYXJnaW5Cb3gucmlnaHQoKTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyU2Ny
b2xsYmFyUGFydCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICBSZW5kZXJCb3gqIHJlbmRl
cmVyT3duaW5nU2Nyb2xsYmFyKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZv
aWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUpOwotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBj
b25zdCBJbnRSZWN0KiA9IDApOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3Qq
ID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1
dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyU2Ny
b2xsYmFyUGFydCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgbGF5b3V0SG9yaXpvbnRhbFBhcnQoKTsKICAgICB2b2lkIGxheW91dFZlcnRpY2FsUGFydCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRo
ZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaApp
bmRleCBlMzMxZDAwOWI3N2VkYTUxZWNlZDYyODI4Nzc3MzQyYzRhOGU0YjQ5Li41MmUwMTZmNzNi
ZTUyMjA1MmIwNjNmMGNiNDkwZWU0ZDFhNmY5MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaApAQCAtMzQsNTEgKzM0LDUxIEBAIGNsYXNz
IFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFNjcm9sbGJhcjsKIGNsYXNzIFNjcm9sbFZpZXc7
CiAKLWNsYXNzIFJlbmRlclNjcm9sbGJhclRoZW1lIDogcHVibGljIFNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlIHsKK2NsYXNzIFJlbmRlclNjcm9sbGJhclRoZW1lIGZpbmFsIDogcHVibGljIFNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5SZW5kZXJTY3JvbGxi
YXJUaGVtZSgpIHt9OworICAgIHZpcnR1YWwgflJlbmRlclNjcm9sbGJhclRoZW1lKCkgeyB9CiAg
ICAgCi0gICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xT
aXplIGNvbnRyb2xTaXplKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2Nyb2xs
YmFyVGhpY2tuZXNzKGNvbnRyb2xTaXplKTsgfQorICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRo
aWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkgb3ZlcnJpZGUgeyByZXR1
cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcyhjb250cm9sU2l6
ZSk7IH0KIAotICAgIHZpcnR1YWwgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBidXR0b25zUGxh
Y2VtZW50KCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPmJ1dHRvbnNQ
bGFjZW1lbnQoKTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBidXR0
b25zUGxhY2VtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRo
ZW1lKCktPmJ1dHRvbnNQbGFjZW1lbnQoKTsgfQogCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRz
Q29udHJvbFRpbnRzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHNo
b3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCktPnNob3VsZENlbnRlck9uVGh1bWIoc2Nyb2xsYmFyLCBldmVudCk7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBvdmVycmlkZSB7IHJldHVybiBTY3Jv
bGxiYXJUaGVtZTo6dGhlbWUoKS0+c2hvdWxkQ2VudGVyT25UaHVtYihzY3JvbGxiYXIsIGV2ZW50
KTsgfQogICAgIAotICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxh
eSgpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5pbml0aWFsQXV0b3Njcm9sbFRp
bWVyRGVsYXkoKTsgfQotICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5KCkg
eyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPmF1dG9zY3JvbGxUaW1lckRlbGF5KCk7
IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKSBvdmVy
cmlkZSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+aW5pdGlhbEF1dG9zY3JvbGxU
aW1lckRlbGF5KCk7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgp
IG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5hdXRvc2Nyb2xsVGlt
ZXJEZWxheSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCktPnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdW5y
ZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKSB7IHJldHVy
biBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+dW5yZWdpc3RlclNjcm9sbGJhcihzY3JvbGxiYXIp
OyB9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgp
LT5yZWdpc3RlclNjcm9sbGJhcihzY3JvbGxiYXIpOyB9CisgICAgdmlydHVhbCB2b2lkIHVucmVn
aXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikgb3ZlcnJpZGUg
eyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVucmVnaXN0ZXJTY3JvbGxiYXIoc2Ny
b2xsYmFyKTsgfQogCi0gICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJh
clRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGJ1dHRvblNpemVzQWxvbmdU
cmFja0F4aXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBpbnQmIGJlZm9yZVNpemUsIGludCYgYWZ0
ZXJTaXplKTsKICAgICAKICAgICBzdGF0aWMgUmVuZGVyU2Nyb2xsYmFyVGhlbWUqIHJlbmRlclNj
cm9sbGJhclRoZW1lKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9u
cyhTY3JvbGxiYXJUaGVtZUNsaWVudCopOwotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3Jv
bGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJh
clRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1
dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50
aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7
Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJv
b2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZh
bHNlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2Up
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2
b2lkIHdpbGxQYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRQYWludFNjcm9sbGJhcihHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOwogICAgIAotICAg
IHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNr
bWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0
VG9UcmFja1BpZWNlcyhTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmgKaW5kZXggZjk5MzI3OTMyNzY2YTI2OTgwZTQ4MzQ2NWIyOWE5NTAz
NzVkNzMzNC4uN2Y3ZjM1MjY3ZDMxMjA3ODUzNWIyZGE4NWFjNTkyM2FjOWFlMDIyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgK
QEAgLTQ5LDExICs0OSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZnJhbWVPd25lckVsZW1lbnQo
KSBjb25zdCA9IGRlbGV0ZTsKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCB7IHJldHVybiAiUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4iOyB9CiAKLSAgICB2aXJ0dWFs
IEN1cnNvckRpcmVjdGl2ZSBnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBDdXJzb3ImKSBj
b25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTbmFwc2hvdHRlZFBsdWdJ
bigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIEN1
cnNvckRpcmVjdGl2ZSBnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBDdXJzb3ImKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTbmFwc2hvdHRlZFBsdWdJbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIGJv
b2wgY2FuSGF2ZVdpZGdldCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGNhbkhhdmVXaWRnZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgdm9pZCBwYWludFNuYXBzaG90KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lLmgKaW5kZXggZDYyYjAwODM3ZmNiOWI2N2M1NWU4Zjk5ZTJj
ZTM3ZDliMjUwODQ2Ny4uMDY3OWEwZmJjOWJhODFjY2QxMGMwNDhmYzU2NDgwNWQwZWEzYTlmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVs
dGlMaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
TXVsdGlMaW5lLmgKQEAgLTM4LDE3ICszOCwxNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZv
aWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBib29sIGlzVGV4dEFy
ZWEoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzVGV4dEFyZWEo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9k
ZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0
VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBm
bG9hdCBnZXRBdmVyYWdlQ2hhcldpZHRoKCk7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IHByZWZl
cnJlZENvbnRlbnRMb2dpY2FsV2lkdGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGZsb2F0IGdldEF2ZXJhZ2VDaGFyV2lkdGgoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIExh
eW91dFVuaXQgcHJlZmVycmVkQ29udGVudExvZ2ljYWxXaWR0aChmbG9hdCBjaGFyV2lkdGgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlQ29udHJvbExvZ2lj
YWxIZWlnaHQoTGF5b3V0VW5pdCBsaW5lSGVpZ2h0LCBMYXlvdXRVbml0IG5vbkNvbnRlbnRIZWln
aHQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9u
dEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlv
bk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0OworICAgIHZpcnR1YWwgaW50
IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVj
dGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVJ
bm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3Q7Ci0gICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNsdWRlZENoaWxkKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbik7CisgICAgdmlydHVhbCBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVJ
bm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNsdWRlZENoaWxk
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZy
YWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgK
aW5kZXggNzIzMWI1NmY1N2U4ZjA0OGU4NTc0MWI0MjAyMDRkNDg0OWQxMjFiZi4uODJkY2IxOWUy
ODAyM2MxYzgxM2YzYzgxMTFkYTUzMzFhZjc0Y2E5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaApAQCAtMzksOCArMzksNiBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0RnJhZ21lbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBp
c1RleHRGcmFnbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIHZp
cnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHVu
c2lnbmVkIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydDsgfQpAQCAtNTksNiArNTcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbHRUZXh0KGNvbnN0IFN0cmluZyYgYWx0VGV4dCkgeyBt
X2FsdFRleHQgPSBhbHRUZXh0OyB9CiAgICAgCiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBp
c1RleHRGcmFnbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQo
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuaApp
bmRleCAwZTEwNjViNDk2YzcyZGVmNDIwY2NiNmMxOTRhNjY2YTVjNDdiMTJkLi5mZTFmZTZmMmE4
ZGI2Mjc0ODIyOGNlN2NkOWFmNGZiZjRkYjdiNzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVHdGsuaApAQCAtMTE2LDEwICsxMTYsMTAgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHBh
aW50VGV4dEFyZWEoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdMZWZ0
KFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IHBvcHVwSW50ZXJuYWxQYWRk
aW5nUmlnaHQoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICBpbnQgcG9wdXBJbnRl
cm5hbFBhZGRpbmdUb3AoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICBpbnQgcG9w
dXBJbnRlcm5hbFBhZGRpbmdCb3R0b20oUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ0xlZnQoUmVuZGVyU3R5bGUmKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ1JpZ2h0KFJl
bmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5h
bFBhZGRpbmdUb3AoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGlu
dCBwb3B1cEludGVybmFsUGFkZGluZ0JvdHRvbShSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgLy8gVGhlIE1hYyBwb3J0IGRpZmZlcmVudGlhdGVzIGJldHdlZW4gdGhlICJtZW51
IGxpc3QiIGFuZCB0aGUgIm1lbnUgbGlzdCBidXR0b24uIgogICAgIC8vIFRoZSBmb3JtZXIgaXMg
dXNlZCB3aGVuIGEgbWVudSBsaXN0IGJ1dHRvbiBoYXMgYmVlbiBzdHlsZWQuIFRoaXMgaXMgdXNl
ZCB0byBlbnN1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKaW5k
ZXggY2Q4ZWYyY2M0MjUzOTIzZTU5ZjAzYTM4MDRmNDNlM2QxY2VjYzY5Ny4uMWM4NDM1N2FjZGMz
N2UzNmJkMGJlYThiYzliMTBjYzRiMTIyYTY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAgICAgCi1jbGFzcyBS
ZW5kZXJUaGVtZUlPUyA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CitjbGFzcyBSZW5kZXJUaGVtZUlP
UyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODY1MjIxMzk4NzJiNmRmYjUzZjEzNTMxM2YwY2VkYjMwNmFhMjExZi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVTYWZhcmkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTI0MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4KLSAq
IENvcHlyaWdodCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbmRlclRoZW1lU2FmYXJpLmgiCi0jaW5jbHVkZSAi
UmVuZGVyVGhlbWVXaW4uaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgotCi0jaWYgVVNFKFNBRkFS
SV9USEVNRSkKLQotI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgotI2luY2x1ZGUgIkNTU1Zh
bHVlS2V5d29yZHMuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQu
aCIKLSNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgotI2lu
Y2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiSFRNTE1ldGVyRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgot
I2luY2x1ZGUgIlBhaW50SW5mby5oIgotI2luY2x1ZGUgIlJlbmRlck1lZGlhQ29udHJvbHMuaCIK
LSNpbmNsdWRlICJSZW5kZXJNZXRlci5oIgotI2luY2x1ZGUgIlJlbmRlclNsaWRlci5oIgotI2lu
Y2x1ZGUgIlJlbmRlclZpZXcuaCIKLSNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgotI2luY2x1ZGUg
IlN0eWxlUmVzb2x2ZXIuaCIKLSNpbmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgotI2lu
Y2x1ZGUgIldlYkNvcmVCdW5kbGVXaW4uaCIKLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdy
YXBoaWNzLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi11c2luZyBzdGQ6Om1pbjsK
LQotLy8gRklYTUU6IFRoZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBjb2RlIGluIHRoaXMgY2xhc3Mg
c2hvdWxkIGJlIGZhY3RvcmVkIG91dCBhbmQgbWVyZ2VkIHdpdGggUmVuZGVyVGhlbWVNYWMuIAot
IAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotdXNp
bmcgbmFtZXNwYWNlIFNhZmFyaVRoZW1lOwotCi1lbnVtIHsKLSAgICB0b3BNYXJnaW4sCi0gICAg
cmlnaHRNYXJnaW4sCi0gICAgYm90dG9tTWFyZ2luLAotICAgIGxlZnRNYXJnaW4KLX07Ci0KLWVu
dW0gewotICAgIHRvcFBhZGRpbmcsCi0gICAgcmlnaHRQYWRkaW5nLAotICAgIGJvdHRvbVBhZGRp
bmcsCi0gICAgbGVmdFBhZGRpbmcKLX07Ci0KLVBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRl
clRoZW1lU2FmYXJpOjpjcmVhdGUoKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVuZGVy
VGhlbWVTYWZhcmkpOwotfQotCi1QYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZTo6
dGhlbWVGb3JQYWdlKFBhZ2UqIHBhZ2UpCi17Ci0gICAgc3RhdGljIFJlbmRlclRoZW1lKiBzYWZh
cmlUaGVtZSA9IFJlbmRlclRoZW1lU2FmYXJpOjpjcmVhdGUoKS5sZWFrUmVmKCk7Ci0gICAgc3Rh
dGljIFJlbmRlclRoZW1lKiB3aW5kb3dzVGhlbWUgPSBSZW5kZXJUaGVtZVdpbjo6Y3JlYXRlKCku
bGVha1JlZigpOwotCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgY2FsbGVkIGJlZm9yZSBTZXR0aW5n
cyBoYXMgYmVlbiBpbml0aWFsaXplZCBieSBXZWJLaXQsIHNvIHdpbGwgcmV0dXJuIGEKLSAgICAv
LyBwb3RlbnRpYWxseSB3cm9uZyBhbnN3ZXIgdGhlIHZlcnkgZmlyc3QgdGltZSBpdCdzIGNhbGxl
ZCAoc2VlCi0gICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NjQ5Mz4pLgotICAgIGlmIChTZXR0aW5nczo6c2hvdWxkUGFpbnROYXRpdmVDb250cm9scygpKSB7
Ci0gICAgICAgIFJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1c1JpbmdDb2xvcihzYWZhcmlUaGVt
ZS0+cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpKTsKLSAgICAgICAgcmV0dXJuIHdpbmRvd3NUaGVt
ZTsgLy8ga2VlcCB0aGUgcmVmZXJlbmNlIG9mIG9uZS4KLSAgICB9Ci0gICAgcmV0dXJuIHNhZmFy
aVRoZW1lOyAvLyBrZWVwIHRoZSByZWZlcmVuY2Ugb2Ygb25lLgotfQotCi0jaWZkZWYgREVCVUdf
QUxMCi1TT0ZUX0xJTktfREVCVUdfTElCUkFSWShTYWZhcmlUaGVtZSkKLSNlbHNlCi1TT0ZUX0xJ
TktfTElCUkFSWShTYWZhcmlUaGVtZSkKLSNlbmRpZgotCi1TT0ZUX0xJTksoU2FmYXJpVGhlbWUs
IHBhaW50VGhlbWVQYXJ0LCB2b2lkLCBfX3N0ZGNhbGwsIChUaGVtZVBhcnQgcGFydCwgQ0dDb250
ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHUmVjdCYgcmVjdCwgTlNDb250cm9sU2l6ZSBzaXplLCBU
aGVtZUNvbnRyb2xTdGF0ZSBzdGF0ZSksIChwYXJ0LCBjb250ZXh0LCByZWN0LCBzaXplLCBzdGF0
ZSkpCi0jaWYgZGVmaW5lZChTQUZBUklfVEhFTUVfVkVSU0lPTikgJiYgU0FGQVJJX1RIRU1FX1ZF
UlNJT04gPj0gMgotU09GVF9MSU5LKFNhZmFyaVRoZW1lLCBTVFBhaW50UHJvZ3Jlc3NJbmRpY2F0
b3IsIHZvaWQsIEFQSUVOVFJZLCAoUHJvZ3Jlc3NJbmRpY2F0b3JUeXBlIHR5cGUsIENHQ29udGV4
dFJlZiBjb250ZXh0LCBjb25zdCBDR1JlY3QmIHJlY3QsIE5TQ29udHJvbFNpemUgc2l6ZSwgVGhl
bWVDb250cm9sU3RhdGUgc3RhdGUsIGZsb2F0IHZhbHVlKSwgKHR5cGUsIGNvbnRleHQsIHJlY3Qs
IHNpemUsIHN0YXRlLCB2YWx1ZSkpCi0jZW5kaWYKLVNPRlRfTElOS19PUFRJT05BTChTYWZhcmlU
aGVtZSwgU1RDb3B5VGhlbWVDb2xvciwgQ0dDb2xvclJlZiwgQVBJRU5UUlksICh1bnNpZ25lZCBj
b2xvciwgU2FmYXJpVGhlbWU6OlRoZW1lQ29udHJvbFN0YXRlKSk7Ci0KLXN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzdEZvY3VzUmluZ0NvbG9ySUQgPSA0OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQg
YXF1YUZvY3VzUmluZ0NvbG9yID0gMHhGRjdEQUREOTsKLQotc3RhdGljIFJHQkEzMiBtYWtlUkdC
QUZyb21DR0NvbG9yKENHQ29sb3JSZWYgY29sb3IpCi17Ci0gICAgY29uc3QgQ0dGbG9hdCogY29t
cG9uZW50cyA9IENHQ29sb3JHZXRDb21wb25lbnRzKGNvbG9yKTsKLSAgICByZXR1cm4gbWFrZVJH
QkEoMjU1ICogY29tcG9uZW50c1swXSwgMjU1ICogY29tcG9uZW50c1sxXSwgMjU1ICogY29tcG9u
ZW50c1syXSwgMjU1ICogY29tcG9uZW50c1szXSk7Ci19Ci0KLVRoZW1lQ29udHJvbFN0YXRlIFJl
bmRlclRoZW1lU2FmYXJpOjpkZXRlcm1pbmVTdGF0ZShjb25zdCBSZW5kZXJPYmplY3QmIG8pIGNv
bnN0Ci17Ci0gICAgVGhlbWVDb250cm9sU3RhdGUgcmVzdWx0ID0gMDsKLSAgICBpZiAoaXNBY3Rp
dmUobykpCi0gICAgICAgIHJlc3VsdCB8PSBTYWZhcmlUaGVtZTo6QWN0aXZlU3RhdGU7Ci0gICAg
aWYgKGlzRW5hYmxlZChvKSAmJiAhaXNSZWFkT25seUNvbnRyb2wobykpCi0gICAgICAgIHJlc3Vs
dCB8PSBTYWZhcmlUaGVtZTo6RW5hYmxlZFN0YXRlOwotICAgIGlmIChpc1ByZXNzZWQobykpCi0g
ICAgICAgIHJlc3VsdCB8PSBTYWZhcmlUaGVtZTo6UHJlc3NlZFN0YXRlOwotICAgIGlmIChpc0No
ZWNrZWQobykpCi0gICAgICAgIHJlc3VsdCB8PSBTYWZhcmlUaGVtZTo6Q2hlY2tlZFN0YXRlOwot
ICAgIGlmIChpc0luZGV0ZXJtaW5hdGUobykpCi0gICAgICAgIHJlc3VsdCB8PSBTYWZhcmlUaGVt
ZTo6SW5kZXRlcm1pbmF0ZUNoZWNrZWRTdGF0ZTsKLSAgICBpZiAoaXNGb2N1c2VkKG8pKQotICAg
ICAgICByZXN1bHQgfD0gU2FmYXJpVGhlbWU6OkZvY3VzZWRTdGF0ZTsKLSAgICBpZiAoaXNEZWZh
dWx0KG8pKQotICAgICAgICByZXN1bHQgfD0gU2FmYXJpVGhlbWU6OkRlZmF1bHRTdGF0ZTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZUZy
b21SZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUgc2l6ZXNbXSkKLXsKLSAg
ICBpZiAoc2l6ZXNbTlNSZWd1bGFyQ29udHJvbFNpemVdLmhlaWdodCgpID09IHJlY3QuaGVpZ2h0
KCkpCi0gICAgICAgIHJldHVybiBOU1JlZ3VsYXJDb250cm9sU2l6ZTsKLSAgICBlbHNlIGlmIChz
aXplc1tOU01pbmlDb250cm9sU2l6ZV0uaGVpZ2h0KCkgPT0gcmVjdC5oZWlnaHQoKSkKLSAgICAg
ICAgcmV0dXJuIE5TTWluaUNvbnRyb2xTaXplOwotICAgIAotICAgIHJldHVybiBOU1NtYWxsQ29u
dHJvbFNpemU7Ci19Ci0KLVJlbmRlclRoZW1lU2FmYXJpOjpSZW5kZXJUaGVtZVNhZmFyaSgpCi17
Ci19Ci0KLVJlbmRlclRoZW1lU2FmYXJpOjp+UmVuZGVyVGhlbWVTYWZhcmkoKQotewotfQotCi1D
b2xvciBSZW5kZXJUaGVtZVNhZmFyaTo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IoKSBjb25zdAotewotICAgIHJldHVybiBDb2xvcigxODEsIDIxMywgMjU1KTsKLX0KLQot
Q29sb3IgUmVuZGVyVGhlbWVTYWZhcmk6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdAotewotICAgIHJldHVybiBDb2xvcigyMTIsIDIxMiwgMjEyKTsKLX0K
LQotQ29sb3IgUmVuZGVyVGhlbWVTYWZhcmk6OmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBq
dXN0IGJlIGEgZGFya2VyIHZlcnNpb24gb2YgdGhlIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yCi0gICAgcmV0dXJuIENvbG9yKDU2LCAxMTcsIDIxNSk7Ci19Ci0KLUNvbG9y
IFJlbmRlclRoZW1lU2FmYXJpOjpwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3QKLXsKLSAg
ICBzdGF0aWMgQ29sb3IgZm9jdXNSaW5nQ29sb3I7Ci0KLSAgICBpZiAoIWZvY3VzUmluZ0NvbG9y
LmlzVmFsaWQoKSkgewotICAgICAgICBpZiAoU1RDb3B5VGhlbWVDb2xvclB0cigpKSB7Ci0gICAg
ICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3IgPSBhZG9wdENGKFNUQ29weVRoZW1l
Q29sb3JQdHIoKShzdEZvY3VzUmluZ0NvbG9ySUQsIFNhZmFyaVRoZW1lOjpBY3RpdmVTdGF0ZSkp
OwotICAgICAgICAgICAgZm9jdXNSaW5nQ29sb3IgPSBtYWtlUkdCQUZyb21DR0NvbG9yKGNvbG9y
LmdldCgpKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWZvY3VzUmluZ0NvbG9yLmlzVmFsaWQo
KSkKLSAgICAgICAgICAgIGZvY3VzUmluZ0NvbG9yID0gYXF1YUZvY3VzUmluZ0NvbG9yOwotICAg
IH0KLQotICAgIHJldHVybiBmb2N1c1JpbmdDb2xvcjsKLX0KLQotc3RhdGljIGZsb2F0IHN5c3Rl
bUZvbnRTaXplRm9yQ29udHJvbFNpemUoTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKLXsKLSAg
ICBzdGF0aWMgZmxvYXQgc2l6ZXNbXSA9IHsgMTMuMGYsIDExLjBmLCA5LjBmIH07Ci0gICAgCi0g
ICAgcmV0dXJuIHNpemVzW2NvbnRyb2xTaXplXTsKLX0KLQotdm9pZCBSZW5kZXJUaGVtZVNhZmFy
aTo6c3lzdGVtRm9udChDU1NWYWx1ZUlEIHZhbHVlSUQsIEZvbnREZXNjcmlwdGlvbiYgZm9udERl
c2NyaXB0aW9uKSBjb25zdAotewotICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24gc3lzdGVtRm9u
dDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIHNtYWxsU3lzdGVtRm9udDsKLSAgICBzdGF0
aWMgRm9udERlc2NyaXB0aW9uIG1lbnVGb250OwotICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24g
bGFiZWxGb250OwotICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24gbWluaUNvbnRyb2xGb250Owot
ICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24gc21hbGxDb250cm9sRm9udDsKLSAgICBzdGF0aWMg
Rm9udERlc2NyaXB0aW9uIGNvbnRyb2xGb250OwotCi0gICAgRm9udERlc2NyaXB0aW9uKiBjYWNo
ZWREZXNjOwotICAgIGZsb2F0IGZvbnRTaXplID0gMDsKLSAgICBzd2l0Y2ggKHZhbHVlSUQpIHsK
LSAgICBjYXNlIENTU1ZhbHVlU21hbGxDYXB0aW9uOgotICAgICAgICBjYWNoZWREZXNjID0gJnNt
YWxsU3lzdGVtRm9udDsKLSAgICAgICAgaWYgKCFzbWFsbFN5c3RlbUZvbnQuaXNBYnNvbHV0ZVNp
emUoKSkKLSAgICAgICAgICAgIGZvbnRTaXplID0gc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6
ZShOU1NtYWxsQ29udHJvbFNpemUpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVl
TWVudToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZtZW51Rm9udDsKLSAgICAgICAgaWYgKCFtZW51
Rm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAgZm9udFNpemUgPSBzeXN0ZW1Gb250
U2l6ZUZvckNvbnRyb2xTaXplKE5TUmVndWxhckNvbnRyb2xTaXplKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDU1NWYWx1ZVN0YXR1c0JhcjoKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZsYWJl
bEZvbnQ7Ci0gICAgICAgIGlmICghbGFiZWxGb250LmlzQWJzb2x1dGVTaXplKCkpCi0gICAgICAg
ICAgICBmb250U2l6ZSA9IDEwLjBmOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVl
V2Via2l0TWluaUNvbnRyb2w6Ci0gICAgICAgIGNhY2hlZERlc2MgPSAmbWluaUNvbnRyb2xGb250
OwotICAgICAgICBpZiAoIW1pbmlDb250cm9sRm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAg
ICAgICAgZm9udFNpemUgPSBzeXN0ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplKE5TTWluaUNvbnRy
b2xTaXplKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFNtYWxsQ29u
dHJvbDoKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZzbWFsbENvbnRyb2xGb250OwotICAgICAgICBp
ZiAoIXNtYWxsQ29udHJvbEZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZvbnRT
aXplID0gc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZShOU1NtYWxsQ29udHJvbFNpemUpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVlV2Via2l0Q29udHJvbDoKLSAgICAgICAg
Y2FjaGVkRGVzYyA9ICZjb250cm9sRm9udDsKLSAgICAgICAgaWYgKCFjb250cm9sRm9udC5pc0Fi
c29sdXRlU2l6ZSgpKQotICAgICAgICAgICAgZm9udFNpemUgPSBzeXN0ZW1Gb250U2l6ZUZvckNv
bnRyb2xTaXplKE5TUmVndWxhckNvbnRyb2xTaXplKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVm
YXVsdDoKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZzeXN0ZW1Gb250OwotICAgICAgICBpZiAoIXN5
c3RlbUZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZvbnRTaXplID0gMTMuMGY7
Ci0gICAgfQotCi0gICAgaWYgKGZvbnRTaXplKSB7Ci0gICAgICAgIGNhY2hlZERlc2MtPnNldElz
QWJzb2x1dGVTaXplKHRydWUpOwotICAgICAgICBjYWNoZWREZXNjLT5zZXRHZW5lcmljRmFtaWx5
KEZvbnREZXNjcmlwdGlvbjo6Tm9GYW1pbHkpOwotICAgICAgICBjYWNoZWREZXNjLT5zZXRPbmVG
YW1pbHkoIkx1Y2lkYSBHcmFuZGUiKTsKLSAgICAgICAgY2FjaGVkRGVzYy0+c2V0U3BlY2lmaWVk
U2l6ZShmb250U2l6ZSk7Ci0gICAgICAgIGNhY2hlZERlc2MtPnNldFdlaWdodChGb250V2VpZ2h0
Tm9ybWFsKTsKLSAgICAgICAgY2FjaGVkRGVzYy0+c2V0SXRhbGljKGZhbHNlKTsKLSAgICB9Ci0g
ICAgZm9udERlc2NyaXB0aW9uID0gKmNhY2hlZERlc2M7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVT
YWZhcmk6OmlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJv
cmRlckRhdGEmIGJvcmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBGaWxsTGF5ZXImIGJhY2tncm91bmQsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3Ip
IGNvbnN0Ci17Ci0gICAgLy8gSWYgd2UgZGlkbid0IGZpbmQgU2FmYXJpVGhlbWUuZGxsIHdlIHdv
bid0IGJlIGFibGUgdG8gcGFpbnQgYW55IHRoZW1lZCBjb250cm9scy4KLSAgICBpZiAoIVNhZmFy
aVRoZW1lTGlicmFyeSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChzdHlsZS5h
cHBlYXJhbmNlKCkgPT0gVGV4dEZpZWxkUGFydCB8fCBzdHlsZS5hcHBlYXJhbmNlKCkgPT0gVGV4
dEFyZWFQYXJ0IHx8IHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBMaXN0Ym94UGFydCkKLSAgICAgICAg
cmV0dXJuIHN0eWxlLmJvcmRlcigpICE9IGJvcmRlcjsKLSAgICByZXR1cm4gUmVuZGVyVGhlbWU6
OmlzQ29udHJvbFN0eWxlZChzdHlsZSwgYm9yZGVyLCBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kQ29s
b3IpOwotfQotCi12b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RSZXBhaW50UmVjdChjb25z
dCBSZW5kZXJPYmplY3QmIG8sIEludFJlY3QmIHIpCi17Ci0gICAgTlNDb250cm9sU2l6ZSBjb250
cm9sU2l6ZSA9IGNvbnRyb2xTaXplRm9yRm9udChvLnN0eWxlKCkpOwotCi0gICAgc3dpdGNoIChv
LnN0eWxlKCkuYXBwZWFyYW5jZSgpKSB7Ci0gICAgICAgIGNhc2UgQ2hlY2tib3hQYXJ0OiB7Ci0g
ICAgICAgICAgICAvLyBXZSBpbmZsYXRlIHRoZSByZWN0IGFzIG5lZWRlZCB0byBhY2NvdW50IGZv
ciBwYWRkaW5nIGluY2x1ZGVkIGluIHRoZSBjZWxsIHRvIGFjY29tbW9kYXRlIHRoZSBjaGVja2Jv
eAotICAgICAgICAgICAgLy8gc2hhZG93IiBhbmQgdGhlIGNoZWNrLiAgV2UgZG9uJ3QgY29uc2lk
ZXIgdGhpcyBwYXJ0IG9mIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRyb2wgaW4gV2ViS2l0LgotICAg
ICAgICAgICAgciA9IGluZmxhdGVSZWN0KHIsIGNoZWNrYm94U2l6ZXMoKVtjb250cm9sU2l6ZV0s
IGNoZWNrYm94TWFyZ2lucyhjb250cm9sU2l6ZSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBSYWRpb1BhcnQ6IHsKLSAgICAgICAgICAgIC8vIFdlIGluZmxh
dGUgdGhlIHJlY3QgYXMgbmVlZGVkIHRvIGFjY291bnQgZm9yIHBhZGRpbmcgaW5jbHVkZWQgaW4g
dGhlIGNlbGwgdG8gYWNjb21tb2RhdGUgdGhlIGNoZWNrYm94Ci0gICAgICAgICAgICAvLyBzaGFk
b3ciIGFuZCB0aGUgY2hlY2suICBXZSBkb24ndCBjb25zaWRlciB0aGlzIHBhcnQgb2YgdGhlIGJv
dW5kcyBvZiB0aGUgY29udHJvbCBpbiBXZWJLaXQuCi0gICAgICAgICAgICByID0gaW5mbGF0ZVJl
Y3QociwgcmFkaW9TaXplcygpW2NvbnRyb2xTaXplXSwgcmFkaW9NYXJnaW5zKGNvbnRyb2xTaXpl
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFB1c2hCdXR0
b25QYXJ0OgotICAgICAgICBjYXNlIERlZmF1bHRCdXR0b25QYXJ0OgotICAgICAgICBjYXNlIEJ1
dHRvblBhcnQ6IHsKLSAgICAgICAgICAgIC8vIFdlIGluZmxhdGUgdGhlIHJlY3QgYXMgbmVlZGVk
IHRvIGFjY291bnQgZm9yIHBhZGRpbmcgaW5jbHVkZWQgaW4gdGhlIGNlbGwgdG8gYWNjb21tb2Rh
dGUgdGhlIGNoZWNrYm94Ci0gICAgICAgICAgICAvLyBzaGFkb3ciIGFuZCB0aGUgY2hlY2suICBX
ZSBkb24ndCBjb25zaWRlciB0aGlzIHBhcnQgb2YgdGhlIGJvdW5kcyBvZiB0aGUgY29udHJvbCBp
biBXZWJLaXQuCi0gICAgICAgICAgICBpZiAoci5oZWlnaHQoKSA8PSBidXR0b25TaXplcygpW05T
UmVndWxhckNvbnRyb2xTaXplXS5oZWlnaHQoKSkKLSAgICAgICAgICAgICAgICByID0gaW5mbGF0
ZVJlY3QociwgYnV0dG9uU2l6ZXMoKVtjb250cm9sU2l6ZV0sIGJ1dHRvbk1hcmdpbnMoY29udHJv
bFNpemUpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgTWVu
dWxpc3RQYXJ0OiB7Ci0gICAgICAgICAgICByID0gaW5mbGF0ZVJlY3QociwgcG9wdXBCdXR0b25T
aXplcygpW2NvbnRyb2xTaXplXSwgcG9wdXBCdXR0b25NYXJnaW5zKGNvbnRyb2xTaXplKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgfQotfQotCi1JbnRSZWN0IFJlbmRlclRoZW1lU2FmYXJpOjppbmZsYXRl
UmVjdChjb25zdCBJbnRSZWN0JiByLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBpbnQqIG1h
cmdpbnMpIGNvbnN0Ci17Ci0gICAgLy8gT25seSBkbyB0aGUgaW5mbGF0aW9uIGlmIHRoZSBhdmFp
bGFibGUgd2lkdGgvaGVpZ2h0IGFyZSB0b28gc21hbGwuICBPdGhlcndpc2UgdHJ5IHRvCi0gICAg
Ly8gZml0IHRoZSBnbG93L2NoZWNrIHNwYWNlIGludG8gdGhlIGF2YWlsYWJsZSBib3gncyB3aWR0
aC9oZWlnaHQuCi0gICAgaW50IHdpZHRoRGVsdGEgPSByLndpZHRoKCkgLSAoc2l6ZS53aWR0aCgp
ICsgbWFyZ2luc1tsZWZ0TWFyZ2luXSArIG1hcmdpbnNbcmlnaHRNYXJnaW5dKTsKLSAgICBpbnQg
aGVpZ2h0RGVsdGEgPSByLmhlaWdodCgpIC0gKHNpemUuaGVpZ2h0KCkgKyBtYXJnaW5zW3RvcE1h
cmdpbl0gKyBtYXJnaW5zW2JvdHRvbU1hcmdpbl0pOwotICAgIEludFJlY3QgcmVzdWx0KHIpOwot
ICAgIGlmICh3aWR0aERlbHRhIDwgMCkgewotICAgICAgICByZXN1bHQuc2V0WChyZXN1bHQueCgp
IC0gbWFyZ2luc1tsZWZ0TWFyZ2luXSk7Ci0gICAgICAgIHJlc3VsdC5zZXRXaWR0aChyZXN1bHQu
d2lkdGgoKSAtIHdpZHRoRGVsdGEpOwotICAgIH0KLSAgICBpZiAoaGVpZ2h0RGVsdGEgPCAwKSB7
Ci0gICAgICAgIHJlc3VsdC5zZXRZKHJlc3VsdC55KCkgLSBtYXJnaW5zW3RvcE1hcmdpbl0pOwot
ICAgICAgICByZXN1bHQuc2V0SGVpZ2h0KHJlc3VsdC5oZWlnaHQoKSAtIGhlaWdodERlbHRhKTsK
LSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotaW50IFJlbmRlclRoZW1lU2FmYXJpOjpi
YXNlbGluZVBvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICBpZiAocmVuZGVyZXIuc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gQ2hlY2tib3hQYXJ0IHx8IHJl
bmRlcmVyLnN0eWxlKCkuYXBwZWFyYW5jZSgpID09IFJhZGlvUGFydCkgewotICAgICAgICBjb25z
dCBhdXRvJiBib3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKTsKLSAgICAgICAgcmV0
dXJuIGJveC5tYXJnaW5Ub3AoKSArIGJveC5oZWlnaHQoKSAtIDI7IC8vIFRoZSBiYXNlbGluZSBp
cyAycHggdXAgZnJvbSB0aGUgYm90dG9tIG9mIHRoZSBjaGVja2JveC9yYWRpbyBpbiBBcHBLaXQu
Ci0gICAgfQotCi0gICAgcmV0dXJuIFJlbmRlclRoZW1lOjpiYXNlbGluZVBvc2l0aW9uKHJlbmRl
cmVyKTsKLX0KLQotYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6Y29udHJvbFN1cHBvcnRzVGludHMo
Y29uc3QgUmVuZGVyT2JqZWN0JiBvKSBjb25zdAotewotICAgIGlmICghaXNFbmFibGVkKG8pKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBDaGVja2JveGVzIG9ubHkgaGF2ZSB0aW50
IHdoZW4gY2hlY2tlZC4KLSAgICBpZiAoby5zdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBDaGVja2Jv
eFBhcnQpCi0gICAgICAgIHJldHVybiBpc0NoZWNrZWQobyk7Ci0KLSAgICAvLyBGb3Igbm93IGFz
c3VtZSBvdGhlciBjb250cm9scyBoYXZlIHRpbnQgaWYgZW5hYmxlZC4KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotTlNDb250cm9sU2l6ZSBSZW5kZXJUaGVtZVNhZmFyaTo6Y29udHJvbFNpemVGb3JG
b250KFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKLXsKLSAgICBpbnQgZm9udFNpemUgPSBzdHls
ZS5mb250U2l6ZSgpOwotICAgIGlmIChmb250U2l6ZSA+PSAxNikKLSAgICAgICAgcmV0dXJuIE5T
UmVndWxhckNvbnRyb2xTaXplOwotICAgIGlmIChmb250U2l6ZSA+PSAxMSkKLSAgICAgICAgcmV0
dXJuIE5TU21hbGxDb250cm9sU2l6ZTsKLSAgICByZXR1cm4gTlNNaW5pQ29udHJvbFNpemU7Ci19
Ci0vKgotdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6c2V0Q29udHJvbFNpemUoTlNDZWxsKiBjZWxs
LCBjb25zdCBJbnRTaXplKiBzaXplcywgY29uc3QgSW50U2l6ZSYgbWluU2l6ZSkKLXsKLSAgICBO
U0NvbnRyb2xTaXplIHNpemU7Ci0gICAgaWYgKG1pblNpemUud2lkdGgoKSA+PSBzaXplc1tOU1Jl
Z3VsYXJDb250cm9sU2l6ZV0ud2lkdGgoKSAmJgotICAgICAgICBtaW5TaXplLmhlaWdodCgpID49
IHNpemVzW05TUmVndWxhckNvbnRyb2xTaXplXS5oZWlnaHQoKSkKLSAgICAgICAgc2l6ZSA9IE5T
UmVndWxhckNvbnRyb2xTaXplOwotICAgIGVsc2UgaWYgKG1pblNpemUud2lkdGgoKSA+PSBzaXpl
c1tOU1NtYWxsQ29udHJvbFNpemVdLndpZHRoKCkgJiYKLSAgICAgICAgICAgICBtaW5TaXplLmhl
aWdodCgpID49IHNpemVzW05TU21hbGxDb250cm9sU2l6ZV0uaGVpZ2h0KCkpCi0gICAgICAgIHNp
emUgPSBOU1NtYWxsQ29udHJvbFNpemU7Ci0gICAgZWxzZQotICAgICAgICBzaXplID0gTlNNaW5p
Q29udHJvbFNpemU7Ci0gICAgaWYgKHNpemUgIT0gW2NlbGwgY29udHJvbFNpemVdKSAvLyBPbmx5
IHVwZGF0ZSBpZiB3ZSBoYXZlIHRvLCBzaW5jZSBBcHBLaXQgZG9lcyB3b3JrIGV2ZW4gaWYgdGhl
IHNpemUgaXMgdGhlIHNhbWUuCi0gICAgICAgIFtjZWxsIHNldENvbnRyb2xTaXplOnNpemVdOwot
fQotKi8KLUludFNpemUgUmVuZGVyVGhlbWVTYWZhcmk6OnNpemVGb3JGb250KFJlbmRlclN0eWxl
JiBzdHlsZSwgY29uc3QgSW50U2l6ZSogc2l6ZXMpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNpemVz
W2NvbnRyb2xTaXplRm9yRm9udChzdHlsZSldOwotfQotCi1JbnRTaXplIFJlbmRlclRoZW1lU2Fm
YXJpOjpzaXplRm9yU3lzdGVtRm9udChSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEludFNpemUq
IHNpemVzKSBjb25zdAotewotICAgIHJldHVybiBzaXplc1tjb250cm9sU2l6ZUZvclN5c3RlbUZv
bnQoc3R5bGUpXTsKLX0KLQotdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6c2V0U2l6ZUZyb21Gb250
KFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgSW50U2l6ZSogc2l6ZXMpIGNvbnN0Ci17Ci0gICAg
Ly8gRklYTUU6IENoZWNrIGlzIGZsYXdlZCwgc2luY2UgaXQgZG9lc24ndCB0YWtlIG1pbi13aWR0
aC9tYXgtd2lkdGggaW50byBhY2NvdW50LgotICAgIEludFNpemUgc2l6ZSA9IHNpemVGb3JGb250
KHN0eWxlLCBzaXplcyk7Ci0gICAgaWYgKHN0eWxlLndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8o
KSAmJiBzaXplLndpZHRoKCkgPiAwKQotICAgICAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2l6
ZS53aWR0aCgpLCBGaXhlZCkpOwotICAgIGlmIChzdHlsZS5oZWlnaHQoKS5pc0F1dG8oKSAmJiBz
aXplLmhlaWdodCgpID4gMCkKLSAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChzaXplLmhl
aWdodCgpLCBGaXhlZCkpOwotfQotCi12b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpzZXRGb250RnJv
bUNvbnRyb2xTaXplKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlJiBz
dHlsZSwgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkgY29uc3QKLXsKLSAgICBGb250RGVzY3Jp
cHRpb24gZm9udERlc2NyaXB0aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRl
U2l6ZSh0cnVlKTsKLSAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVz
Y3JpcHRpb246OlNlcmlmRmFtaWx5KTsKLQotICAgIGZsb2F0IGZvbnRTaXplID0gc3lzdGVtRm9u
dFNpemVGb3JDb250cm9sU2l6ZShjb250cm9sU2l6ZSk7Ci0gICAgZm9udERlc2NyaXB0aW9uLnNl
dE9uZUZhbWlseSgiTHVjaWRhIEdyYW5kZSIpOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21w
dXRlZFNpemUoZm9udFNpemUpOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXpl
KGZvbnRTaXplKTsKLQotICAgIC8vIFJlc2V0IGxpbmUgaGVpZ2h0Ci0gICAgc3R5bGUuc2V0TGlu
ZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7Ci0KLSAgICBpZiAoc3R5
bGUuc2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgIHN0eWxlLmZv
bnQoKS51cGRhdGUoc3R5bGVSZXNvbHZlci5mb250U2VsZWN0b3IoKSk7Ci19Ci0KLU5TQ29udHJv
bFNpemUgUmVuZGVyVGhlbWVTYWZhcmk6OmNvbnRyb2xTaXplRm9yU3lzdGVtRm9udChSZW5kZXJT
dHlsZSYgc3R5bGUpIGNvbnN0Ci17Ci0gICAgaW50IGZvbnRTaXplID0gc3R5bGUuZm9udFNpemUo
KTsKLSAgICBpZiAoZm9udFNpemUgPj0gMTMpCi0gICAgICAgIHJldHVybiBOU1JlZ3VsYXJDb250
cm9sU2l6ZTsKLSAgICBpZiAoZm9udFNpemUgPj0gMTEpCi0gICAgICAgIHJldHVybiBOU1NtYWxs
Q29udHJvbFNpemU7Ci0gICAgcmV0dXJuIE5TTWluaUNvbnRyb2xTaXplOwotfQotCi1ib29sIFJl
bmRlclRoZW1lU2FmYXJpOjpwYWludENoZWNrYm94KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCi17Ci0gICAgQVNTRVJU
KFNhZmFyaVRoZW1lTGlicmFyeSgpKTsKLQotICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUg
PSBjb250cm9sU2l6ZUZvckZvbnQoby5zdHlsZSgpKTsKLQotICAgIEludFJlY3QgaW5mbGF0ZWRS
ZWN0ID0gaW5mbGF0ZVJlY3QociwgY2hlY2tib3hTaXplcygpW2NvbnRyb2xTaXplXSwgY2hlY2ti
b3hNYXJnaW5zKGNvbnRyb2xTaXplKSk7ICAKLSAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVt
ZTo6Q2hlY2tib3hQYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGlu
ZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKLQotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotY29uc3QgSW50U2l6ZSogUmVuZGVyVGhlbWVTYWZhcmk6OmNoZWNrYm94
U2l6ZXMoKSBjb25zdAotewotICAgIHN0YXRpYyBjb25zdCBJbnRTaXplIHNpemVzWzNdID0geyBJ
bnRTaXplKDE0LCAxNCksIEludFNpemUoMTIsIDEyKSwgSW50U2l6ZSgxMCwgMTApIH07Ci0gICAg
cmV0dXJuIHNpemVzOwotfQotCi1jb25zdCBpbnQqIFJlbmRlclRoZW1lU2FmYXJpOjpjaGVja2Jv
eE1hcmdpbnMoTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkgY29uc3QKLXsKLSAgICBzdGF0aWMg
Y29uc3QgaW50IG1hcmdpbnNbM11bNF0gPQotICAgIHsKLSAgICAgICAgeyAyLCAyLCAyLCAyIH0s
Ci0gICAgICAgIHsgMiwgMiwgMiwgMSB9LAotICAgICAgICB7IDEsIDAsIDAsIDAgfSwKLSAgICB9
OwotICAgIHJldHVybiBtYXJnaW5zW2NvbnRyb2xTaXplXTsKLX0KLQotdm9pZCBSZW5kZXJUaGVt
ZVNhZmFyaTo6c2V0Q2hlY2tib3hTaXplKFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKLXsKLSAg
ICAvLyBJZiB0aGUgd2lkdGggYW5kIGhlaWdodCBhcmUgYm90aCBzcGVjaWZpZWQsIHRoZW4gd2Ug
aGF2ZSBub3RoaW5nIHRvIGRvLgotICAgIGlmICghc3R5bGUud2lkdGgoKS5pc0ludHJpbnNpY09y
QXV0bygpICYmICFzdHlsZS5oZWlnaHQoKS5pc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgLy8gVXNlIHRoZSBmb250IHNpemUgdG8gZGV0ZXJtaW5lIHRoZSBpbnRyaW5zaWMgd2lkdGgg
b2YgdGhlIGNvbnRyb2wuCi0gICAgc2V0U2l6ZUZyb21Gb250KHN0eWxlLCBjaGVja2JveFNpemVz
KCkpOwotfQotCi1ib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFJhZGlvKGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIp
Ci17Ci0gICAgQVNTRVJUKFNhZmFyaVRoZW1lTGlicmFyeSgpKTsKLQotICAgIE5TQ29udHJvbFNp
emUgY29udHJvbFNpemUgPSBjb250cm9sU2l6ZUZvckZvbnQoby5zdHlsZSgpKTsKLSAKLSAgICBJ
bnRSZWN0IGluZmxhdGVkUmVjdCA9IGluZmxhdGVSZWN0KHIsIHJhZGlvU2l6ZXMoKVtjb250cm9s
U2l6ZV0sIHJhZGlvTWFyZ2lucyhjb250cm9sU2l6ZSkpOyAgICAKLSAgICBwYWludFRoZW1lUGFy
dChSYWRpb0J1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
aW5mbGF0ZWRSZWN0LCBjb250cm9sU2l6ZSwgZGV0ZXJtaW5lU3RhdGUobykpOwotCi0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1jb25zdCBJbnRTaXplKiBSZW5kZXJUaGVtZVNhZmFyaTo6cmFkaW9T
aXplcygpIGNvbnN0Ci17Ci0gICAgc3RhdGljIGNvbnN0IEludFNpemUgc2l6ZXNbM10gPSB7IElu
dFNpemUoMTQsIDE1KSwgSW50U2l6ZSgxMiwgMTMpLCBJbnRTaXplKDEwLCAxMCkgfTsKLSAgICBy
ZXR1cm4gc2l6ZXM7Ci19Ci0KLWNvbnN0IGludCogUmVuZGVyVGhlbWVTYWZhcmk6OnJhZGlvTWFy
Z2lucyhOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplKSBjb25zdAotewotICAgIHN0YXRpYyBjb25z
dCBpbnQgbWFyZ2luc1szXVs0XSA9Ci0gICAgewotICAgICAgICB7IDEsIDIsIDIsIDIgfSwKLSAg
ICAgICAgeyAwLCAxLCAyLCAxIH0sCi0gICAgICAgIHsgMCwgMCwgMSwgMCB9LAotICAgICB9Owot
ICAgIHJldHVybiBtYXJnaW5zW2NvbnRyb2xTaXplXTsKLX0KLQotdm9pZCBSZW5kZXJUaGVtZVNh
ZmFyaTo6c2V0UmFkaW9TaXplKFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKLXsKLSAgICAvLyBJ
ZiB0aGUgd2lkdGggYW5kIGhlaWdodCBhcmUgYm90aCBzcGVjaWZpZWQsIHRoZW4gd2UgaGF2ZSBu
b3RoaW5nIHRvIGRvLgotICAgIGlmICghc3R5bGUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygp
ICYmICFzdHlsZS5oZWlnaHQoKS5pc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8g
VXNlIHRoZSBmb250IHNpemUgdG8gZGV0ZXJtaW5lIHRoZSBpbnRyaW5zaWMgd2lkdGggb2YgdGhl
IGNvbnRyb2wuCi0gICAgc2V0U2l6ZUZyb21Gb250KHN0eWxlLCByYWRpb1NpemVzKCkpOwotfQot
Ci12b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpzZXRCdXR0b25QYWRkaW5nRnJvbUNvbnRyb2xTaXpl
KFJlbmRlclN0eWxlJiBzdHlsZSwgTlNDb250cm9sU2l6ZSBzaXplKSBjb25zdAotewotICAgIC8v
IEp1c3QgdXNlIDhweC4gIEFwcEtpdCB3YW50cyB0byB1c2UgMTFweCBmb3IgbWluaSBidXR0b25z
LCBidXQgdGhhdCBwYWRkaW5nIGlzIGp1c3QgdG9vIGxhcmdlCi0gICAgLy8gZm9yIHJlYWwtd29y
bGQgV2ViIHNpdGVzIChjcmVhdGluZyBhIGh1Z2UgbmVjZXNzYXJ5IG1pbmltdW0gd2lkdGggZm9y
IGJ1dHRvbnMgd2hvc2Ugc3BhY2UgaXMKLSAgICAvLyBieSBkZWZpbml0aW9uIGNvbnN0cmFpbmVk
LCBzaW5jZSB3ZSBzZWxlY3QgbWluaSBvbmx5IGZvciBzbWFsbCBjcmFtcGVkIGVudmlyb25tZW50
cy4KLSAgICAvLyBUaGlzIGFsc28gZ3VhcmFudGVlcyB0aGUgSFRNTDQgPGJ1dHRvbj4gd2lsbCBt
YXRjaCBvdXIgcmVuZGVyaW5nIGJ5IGRlZmF1bHQsIHNpbmNlIHdlJ3JlIHVzaW5nIGEgY29uc2lz
dGVudAotICAgIC8vIHBhZGRpbmcuCi0gICAgY29uc3QgaW50IHBhZGRpbmcgPSA4OwotICAgIHN0
eWxlLnNldFBhZGRpbmdMZWZ0KExlbmd0aChwYWRkaW5nLCBGaXhlZCkpOwotICAgIHN0eWxlLnNl
dFBhZGRpbmdSaWdodChMZW5ndGgocGFkZGluZywgRml4ZWQpKTsKLSAgICBzdHlsZS5zZXRQYWRk
aW5nVG9wKExlbmd0aCgwLCBGaXhlZCkpOwotICAgIHN0eWxlLnNldFBhZGRpbmdCb3R0b20oTGVu
Z3RoKDAsIEZpeGVkKSk7Ci19Ci0KLXZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdEJ1dHRv
blN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlJiBzdHlsZSwg
RWxlbWVudCopIGNvbnN0Ci17Ci0gICAgLy8gVGhlcmUgYXJlIHRocmVlIGFwcGVhcmFuY2UgY29u
c3RhbnRzIGZvciBidXR0b25zLgotICAgIC8vICgxKSBQdXNoLWJ1dHRvbiBpcyB0aGUgY29uc3Rh
bnQgZm9yIHRoZSBkZWZhdWx0IEFxdWEgc3lzdGVtIGJ1dHRvbi4gIFB1c2ggYnV0dG9ucyB3aWxs
IG5vdCBzY2FsZSB2ZXJ0aWNhbGx5IGFuZCB3aWxsIG5vdCBhbGxvdwotICAgIC8vIGN1c3RvbSBm
b250cyBvciBjb2xvcnMuICA8aW5wdXQ+cyB1c2UgdGhpcyBjb25zdGFudC4gIFRoaXMgYnV0dG9u
IHdpbGwgYWxsb3cgY3VzdG9tIGNvbG9ycyBhbmQgZm9udCB3ZWlnaHRzL3ZhcmlhbnRzIGJ1dCB3
b24ndAotICAgIC8vIHNjYWxlIHZlcnRpY2FsbHkuCi0gICAgLy8gKDIpIHNxdWFyZS1idXR0b24g
aXMgdGhlIGNvbnN0YW50IGZvciB0aGUgc3F1YXJlIGJ1dHRvbi4gIFRoaXMgYnV0dG9uIHdpbGwg
YWxsb3cgY3VzdG9tIGZvbnRzIGFuZCBjb2xvcnMgYW5kIHdpbGwgc2NhbGUgdmVydGljYWxseS4K
LSAgICAvLyAoMykgQnV0dG9uIGlzIHRoZSBjb25zdGFudCB0aGF0IG1lYW5zICJwaWNrIHRoZSBi
ZXN0IGJ1dHRvbiBhcyBhcHByb3ByaWF0ZS4iICA8YnV0dG9uPnMgdXNlIHRoaXMgY29uc3RhbnQu
ICBUaGlzIGJ1dHRvbiB3aWxsCi0gICAgLy8gYWxzbyBzY2FsZSB2ZXJ0aWNhbGx5IGFuZCBhbGxv
dyBjdXN0b20gZm9udHMgYW5kIGNvbG9ycy4gIEl0IHdpbGwgYXR0ZW1wdCB0byB1c2UgQXF1YSBp
ZiBwb3NzaWJsZSBhbmQgd2lsbCBtYWtlIHRoaXMgZGV0ZXJtaW5hdGlvbgotICAgIC8vIHNvbGVs
eSBvbiB0aGUgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLgotCi0gICAgLy8gRGV0ZXJtaW5lIG91
ciBjb250cm9sIHNpemUgYmFzZWQgb2ZmIG91ciBmb250LgotICAgIE5TQ29udHJvbFNpemUgY29u
dHJvbFNpemUgPSBjb250cm9sU2l6ZUZvckZvbnQoc3R5bGUpOwotCi0gICAgaWYgKHN0eWxlLmFw
cGVhcmFuY2UoKSA9PSBQdXNoQnV0dG9uUGFydCkgewotICAgICAgICAvLyBEaXRjaCB0aGUgYm9y
ZGVyLgotICAgICAgICBzdHlsZS5yZXNldEJvcmRlcigpOwotCi0gICAgICAgIC8vIEhlaWdodCBp
cyBsb2NrZWQgdG8gYXV0by4KLSAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChBdXRvKSk7
Ci0KLSAgICAgICAgLy8gV2hpdGUtc3BhY2UgaXMgbG9ja2VkIHRvIHByZQotICAgICAgICBzdHls
ZS5zZXRXaGl0ZVNwYWNlKFBSRSk7Ci0KLSAgICAgICAgLy8gU2V0IHRoZSBidXR0b24ncyB2ZXJ0
aWNhbCBzaXplLgotICAgICAgICBzZXRCdXR0b25TaXplKHN0eWxlKTsKLQotICAgICAgICAvLyBB
ZGQgaW4gdGhlIHBhZGRpbmcgdGhhdCB3ZSdkIGxpa2UgdG8gdXNlLgotICAgICAgICBzZXRCdXR0
b25QYWRkaW5nRnJvbUNvbnRyb2xTaXplKHN0eWxlLCBjb250cm9sU2l6ZSk7Ci0KLSAgICAgICAg
Ly8gT3VyIGZvbnQgaXMgbG9ja2VkIHRvIHRoZSBhcHByb3ByaWF0ZSBzeXN0ZW0gZm9udCBzaXpl
IGZvciB0aGUgY29udHJvbC4gIFRvIGNsYXJpZnksIHdlIGZpcnN0IHVzZSB0aGUgQ1NTLXNwZWNp
ZmllZCBmb250IHRvIGZpZ3VyZSBvdXQKLSAgICAgICAgLy8gYSByZWFzb25hYmxlIGNvbnRyb2wg
c2l6ZSwgYnV0IG9uY2UgdGhhdCBjb250cm9sIHNpemUgaXMgZGV0ZXJtaW5lZCwgd2UgdGhyb3cg
dGhhdCBmb250IGF3YXkgYW5kIHVzZSB0aGUgYXBwcm9wcmlhdGUKLSAgICAgICAgLy8gc3lzdGVt
IGZvbnQgZm9yIHRoZSBjb250cm9sIHNpemUgaW5zdGVhZC4KLSAgICAgICAgc2V0Rm9udEZyb21D
b250cm9sU2l6ZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgY29udHJvbFNpemUpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIC8vIFNldCBhIG1pbi1oZWlnaHQgc28gdGhhdCB3ZSBjYW4ndCBnZXQgc21h
bGxlciB0aGFuIHRoZSBtaW5pIGJ1dHRvbi4KLSAgICAgICAgc3R5bGUuc2V0TWluSGVpZ2h0KExl
bmd0aCgxNSwgRml4ZWQpKTsKLQotICAgICAgICAvLyBSZXNldCB0aGUgdG9wIGFuZCBib3R0b20g
Ym9yZGVycy4KLSAgICAgICAgc3R5bGUucmVzZXRCb3JkZXJUb3AoKTsKLSAgICAgICAgc3R5bGUu
cmVzZXRCb3JkZXJCb3R0b20oKTsKLSAgICB9Ci19Ci0KLWNvbnN0IEludFNpemUqIFJlbmRlclRo
ZW1lU2FmYXJpOjpidXR0b25TaXplcygpIGNvbnN0Ci17Ci0gICAgc3RhdGljIGNvbnN0IEludFNp
emUgc2l6ZXNbM10gPSB7IEludFNpemUoMCwgMjEpLCBJbnRTaXplKDAsIDE4KSwgSW50U2l6ZSgw
LCAxNSkgfTsKLSAgICByZXR1cm4gc2l6ZXM7Ci19Ci0KLWNvbnN0IGludCogUmVuZGVyVGhlbWVT
YWZhcmk6OmJ1dHRvbk1hcmdpbnMoTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkgY29uc3QKLXsK
LSAgICBzdGF0aWMgY29uc3QgaW50IG1hcmdpbnNbM11bNF0gPQotICAgIHsKLSAgICAgICAgeyA0
LCA2LCA3LCA2IH0sCi0gICAgICAgIHsgNCwgNSwgNiwgNSB9LAotICAgICAgICB7IDAsIDEsIDEs
IDEgfSwKLSAgICB9OwotICAgIHJldHVybiBtYXJnaW5zW2NvbnRyb2xTaXplXTsKLX0KLQotdm9p
ZCBSZW5kZXJUaGVtZVNhZmFyaTo6c2V0QnV0dG9uU2l6ZShSZW5kZXJTdHlsZSYgc3R5bGUpIGNv
bnN0Ci17Ci0gICAgLy8gSWYgdGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGJvdGggc3BlY2lmaWVk
LCB0aGVuIHdlIGhhdmUgbm90aGluZyB0byBkby4KLSAgICBpZiAoIXN0eWxlLndpZHRoKCkuaXNJ
bnRyaW5zaWNPckF1dG8oKSAmJiAhc3R5bGUuaGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIFVzZSB0aGUgZm9udCBzaXplIHRvIGRldGVybWluZSB0aGUgaW50cmlu
c2ljIHdpZHRoIG9mIHRoZSBjb250cm9sLgotICAgIHNldFNpemVGcm9tRm9udChzdHlsZSwgYnV0
dG9uU2l6ZXMoKSk7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50QnV0dG9uKGNv
bnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IElu
dFJlY3QmIHIpCi17Ci0gICAgQVNTRVJUKFNhZmFyaVRoZW1lTGlicmFyeSgpKTsKLQotICAgIC8v
IFdlIGluZmxhdGUgdGhlIHJlY3QgYXMgbmVlZGVkIHRvIGFjY291bnQgZm9yIHBhZGRpbmcgaW5j
bHVkZWQgaW4gdGhlIGNlbGwgdG8gYWNjb21tb2RhdGUgdGhlIGJ1dHRvbgotICAgIC8vIHNoYWRv
dy4gIFdlIGRvbid0IGNvbnNpZGVyIHRoaXMgcGFydCBvZiB0aGUgYm91bmRzIG9mIHRoZSBjb250
cm9sIGluIFdlYktpdC4KLQotICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBjb250cm9s
U2l6ZUZyb21SZWN0KHIsIGJ1dHRvblNpemVzKCkpOwotICAgIEludFJlY3QgaW5mbGF0ZWRSZWN0
ID0gcjsKLQotICAgIFRoZW1lUGFydCBwYXJ0OwotICAgIGlmIChyLmhlaWdodCgpIDw9IGJ1dHRv
blNpemVzKClbTlNSZWd1bGFyQ29udHJvbFNpemVdLmhlaWdodCgpKSB7Ci0gICAgICAgIC8vIFB1
c2ggYnV0dG9uCi0gICAgICAgIHBhcnQgPSBTYWZhcmlUaGVtZTo6UHVzaEJ1dHRvblBhcnQ7Ci0K
LSAgICAgICAgSW50U2l6ZSBzaXplID0gYnV0dG9uU2l6ZXMoKVtjb250cm9sU2l6ZV07Ci0gICAg
ICAgIHNpemUuc2V0V2lkdGgoci53aWR0aCgpKTsKLQotICAgICAgICAvLyBDZW50ZXIgdGhlIGJ1
dHRvbiB3aXRoaW4gdGhlIGF2YWlsYWJsZSBzcGFjZS4KLSAgICAgICAgaWYgKGluZmxhdGVkUmVj
dC5oZWlnaHQoKSA+IHNpemUuaGVpZ2h0KCkpIHsKLSAgICAgICAgICAgIGluZmxhdGVkUmVjdC5z
ZXRZKGluZmxhdGVkUmVjdC55KCkgKyAoaW5mbGF0ZWRSZWN0LmhlaWdodCgpIC0gc2l6ZS5oZWln
aHQoKSkgLyAyKTsKLSAgICAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRIZWlnaHQoc2l6ZS5oZWln
aHQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBOb3cgaW5mbGF0ZSBpdCB0byBhY2NvdW50
IGZvciB0aGUgc2hhZG93LgotICAgICAgICBpbmZsYXRlZFJlY3QgPSBpbmZsYXRlUmVjdChpbmZs
YXRlZFJlY3QsIHNpemUsIGJ1dHRvbk1hcmdpbnMoY29udHJvbFNpemUpKTsKLSAgICB9IGVsc2UK
LSAgICAgICAgcGFydCA9IFNhZmFyaVRoZW1lOjpTcXVhcmVCdXR0b25QYXJ0OwotCi0gICAgcGFp
bnRUaGVtZVBhcnQocGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBp
bmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1ib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFRleHRGaWVsZChjb25z
dCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRS
ZWN0JiByKQotewotICAgIEFTU0VSVChTYWZhcmlUaGVtZUxpYnJhcnkoKSk7Ci0KLSAgICBwYWlu
dFRoZW1lUGFydChTYWZhcmlUaGVtZTo6VGV4dEZpZWxkUGFydCwgcGFpbnRJbmZvLmNvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLCByLCAoTlNDb250cm9sU2l6ZSkwLCBkZXRlcm1pbmVTdGF0ZShv
KSAmIH5Gb2N1c2VkU3RhdGUpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBSZW5kZXJU
aGVtZVNhZmFyaTo6YWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0
eWxlJiwgRWxlbWVudCopIGNvbnN0Ci17Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBh
aW50Q2Fwc0xvY2tJbmRpY2F0b3IoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKLXsgICAgCi0jaWYgZGVmaW5lZChTQUZB
UklfVEhFTUVfVkVSU0lPTikgJiYgU0FGQVJJX1RIRU1FX1ZFUlNJT04gPj0gMQotICAgIEFTU0VS
VChTYWZhcmlUaGVtZUxpYnJhcnkoKSk7Ci0KLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBh
aW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBwYWludFRoZW1l
UGFydChDYXBzTG9ja1BhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
ciwgKE5TQ29udHJvbFNpemUpMCwgKFRoZW1lQ29udHJvbFN0YXRlKTApOwotCi0gICAgcmV0dXJu
IGZhbHNlOwotI2Vsc2UKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotfQotCi1ib29sIFJlbmRl
clRoZW1lU2FmYXJpOjpwYWludFRleHRBcmVhKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3Qg
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCi17Ci0gICAgQVNTRVJUKFNh
ZmFyaVRoZW1lTGlicmFyeSgpKTsKLQotICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpU
ZXh0QXJlYVBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgKE5T
Q29udHJvbFNpemUpMCwgZGV0ZXJtaW5lU3RhdGUobykgJiB+Rm9jdXNlZFN0YXRlKTsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFRleHRBcmVh
U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0Ci17Ci19
Ci0KLWNvbnN0IGludCogUmVuZGVyVGhlbWVTYWZhcmk6OnBvcHVwQnV0dG9uTWFyZ2lucyhOU0Nv
bnRyb2xTaXplIHNpemUpIGNvbnN0Ci17Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXJnaW5zWzNd
WzRdID0KLSAgICB7Ci0gICAgICAgIHsgMiwgMywgMywgMyB9LAotICAgICAgICB7IDEsIDMsIDMs
IDMgfSwKLSAgICAgICAgeyAwLCAxLCAwLCAxIH0KLSAgICB9OwotICAgIHJldHVybiBtYXJnaW5z
W3NpemVdOwotfQotCi1jb25zdCBJbnRTaXplKiBSZW5kZXJUaGVtZVNhZmFyaTo6cG9wdXBCdXR0
b25TaXplcygpIGNvbnN0Ci17Ci0gICAgc3RhdGljIGNvbnN0IEludFNpemUgc2l6ZXNbM10gPSB7
IEludFNpemUoMCwgMjEpLCBJbnRTaXplKDAsIDE4KSwgSW50U2l6ZSgwLCAxNSkgfTsKLSAgICBy
ZXR1cm4gc2l6ZXM7Ci19Ci0KLWNvbnN0IGludCogUmVuZGVyVGhlbWVTYWZhcmk6OnBvcHVwQnV0
dG9uUGFkZGluZyhOU0NvbnRyb2xTaXplIHNpemUpIGNvbnN0Ci17Ci0gICAgc3RhdGljIGNvbnN0
IGludCBwYWRkaW5nWzNdWzRdID0KLSAgICB7Ci0gICAgICAgIHsgMiwgMjYsIDMsIDggfSwKLSAg
ICAgICAgeyAyLCAyMywgMywgOCB9LAotICAgICAgICB7IDIsIDIyLCAzLCAxMCB9Ci0gICAgfTsK
LSAgICByZXR1cm4gcGFkZGluZ1tzaXplXTsKLX0KLQotYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6
cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgaW5m
bywgY29uc3QgSW50UmVjdCYgcikKLXsKLSAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkp
OwotCi0gICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IGNvbnRyb2xTaXplRnJvbVJlY3Qo
ciwgcG9wdXBCdXR0b25TaXplcygpKTsKLSAgICBJbnRSZWN0IGluZmxhdGVkUmVjdCA9IHI7Ci0g
ICAgSW50U2l6ZSBzaXplID0gcG9wdXBCdXR0b25TaXplcygpW2NvbnRyb2xTaXplXTsKLSAgICBz
aXplLnNldFdpZHRoKHIud2lkdGgoKSk7Ci0KLSAgICAvLyBOb3cgaW5mbGF0ZSBpdCB0byBhY2Nv
dW50IGZvciB0aGUgc2hhZG93LgotICAgIGlmIChyLndpZHRoKCkgPj0gbWluaW11bU1lbnVMaXN0
U2l6ZShvLnN0eWxlKCkpKQotICAgICAgICBpbmZsYXRlZFJlY3QgPSBpbmZsYXRlUmVjdChpbmZs
YXRlZFJlY3QsIHNpemUsIHBvcHVwQnV0dG9uTWFyZ2lucyhjb250cm9sU2l6ZSkpOwotCi0gICAg
cGFpbnRUaGVtZVBhcnQoRHJvcERvd25CdXR0b25QYXJ0LCBpbmZvLmNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7
Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWNvbnN0IGZsb2F0IGJhc2VGb250U2l6ZSA9IDEx
LjBmOwotY29uc3QgZmxvYXQgYmFzZUFycm93SGVpZ2h0ID0gNS4wZjsKLWNvbnN0IGZsb2F0IGJh
c2VBcnJvd1dpZHRoID0gNy4wZjsKLWNvbnN0IGludCBhcnJvd1BhZGRpbmdMZWZ0ID0gNTsKLWNv
bnN0IGludCBhcnJvd1BhZGRpbmdSaWdodCA9IDU7Ci1jb25zdCBpbnQgcGFkZGluZ0JlZm9yZVNl
cGFyYXRvciA9IDQ7Ci1jb25zdCBpbnQgYmFzZUJvcmRlclJhZGl1cyA9IDU7Ci1jb25zdCBpbnQg
c3R5bGVkUG9wdXBQYWRkaW5nTGVmdCA9IDg7Ci1jb25zdCBpbnQgc3R5bGVkUG9wdXBQYWRkaW5n
VG9wID0gMTsKLWNvbnN0IGludCBzdHlsZWRQb3B1cFBhZGRpbmdCb3R0b20gPSAyOwotCi1zdGF0
aWMgdm9pZCBUb3BHcmFkaWVudEludGVycG9sYXRlKHZvaWQqIGluZm8sIGNvbnN0IENHRmxvYXQq
IGluRGF0YSwgQ0dGbG9hdCogb3V0RGF0YSkKLXsKLSAgICBzdGF0aWMgZmxvYXQgZGFya1s0XSA9
IHsgMS4wZiwgMS4wZiwgMS4wZiwgMC40ZiB9OwotICAgIHN0YXRpYyBmbG9hdCBsaWdodFs0XSA9
IHsgMS4wZiwgMS4wZiwgMS4wZiwgMC4xNWYgfTsKLSAgICBmbG9hdCBhID0gaW5EYXRhWzBdOwot
ICAgIGludCBpID0gMDsKLSAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQotICAgICAgICBvdXRE
YXRhW2ldID0gKDEuMGYgLSBhKSAqIGRhcmtbaV0gKyBhICogbGlnaHRbaV07Ci19Ci0KLXN0YXRp
YyB2b2lkIEJvdHRvbUdyYWRpZW50SW50ZXJwb2xhdGUodm9pZCogaW5mbywgY29uc3QgQ0dGbG9h
dCogaW5EYXRhLCBDR0Zsb2F0KiBvdXREYXRhKQotewotICAgIHN0YXRpYyBmbG9hdCBkYXJrWzRd
ID0geyAxLjBmLCAxLjBmLCAxLjBmLCAwLjBmIH07Ci0gICAgc3RhdGljIGZsb2F0IGxpZ2h0WzRd
ID0geyAxLjBmLCAxLjBmLCAxLjBmLCAwLjNmIH07Ci0gICAgZmxvYXQgYSA9IGluRGF0YVswXTsK
LSAgICBpbnQgaSA9IDA7Ci0gICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKLSAgICAgICAgb3V0
RGF0YVtpXSA9ICgxLjBmIC0gYSkgKiBkYXJrW2ldICsgYSAqIGxpZ2h0W2ldOwotfQotCi1zdGF0
aWMgdm9pZCBNYWluR3JhZGllbnRJbnRlcnBvbGF0ZSh2b2lkKiBpbmZvLCBjb25zdCBDR0Zsb2F0
KiBpbkRhdGEsIENHRmxvYXQqIG91dERhdGEpCi17Ci0gICAgc3RhdGljIGZsb2F0IGRhcmtbNF0g
PSB7IDAuMGYsIDAuMGYsIDAuMGYsIDAuMTVmIH07Ci0gICAgc3RhdGljIGZsb2F0IGxpZ2h0WzRd
ID0geyAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmIH07Ci0gICAgZmxvYXQgYSA9IGluRGF0YVswXTsK
LSAgICBpbnQgaSA9IDA7Ci0gICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKLSAgICAgICAgb3V0
RGF0YVtpXSA9ICgxLjBmIC0gYSkgKiBkYXJrW2ldICsgYSAqIGxpZ2h0W2ldOwotfQotCi1zdGF0
aWMgdm9pZCBUcmFja0dyYWRpZW50SW50ZXJwb2xhdGUodm9pZCogaW5mbywgY29uc3QgQ0dGbG9h
dCogaW5EYXRhLCBDR0Zsb2F0KiBvdXREYXRhKQotewotICAgIHN0YXRpYyBmbG9hdCBkYXJrWzRd
ID0geyAwLjBmLCAwLjBmLCAwLjBmLCAwLjY3OGYgfTsKLSAgICBzdGF0aWMgZmxvYXQgbGlnaHRb
NF0gPSB7IDAuMGYsIDAuMGYsIDAuMGYsIDAuMTNmIH07Ci0gICAgZmxvYXQgYSA9IGluRGF0YVsw
XTsKLSAgICBpbnQgaSA9IDA7Ci0gICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKLSAgICAgICAg
b3V0RGF0YVtpXSA9ICgxLjBmIC0gYSkgKiBkYXJrW2ldICsgYSAqIGxpZ2h0W2ldOwotfQotCi12
b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKGNvbnN0
IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmIHIpCi17Ci0gICAgaWYgKHIuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBD
R0NvbnRleHRSZWYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KTsKLQotICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7Ci0KLSAgICBGbG9hdFJvdW5kZWRS
ZWN0IGJvdW5kID0gRmxvYXRSb3VuZGVkUmVjdChvLnN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZv
cihyKSk7Ci0gICAgaW50IHJhZGl1cyA9IGJvdW5kLnJhZGlpKCkudG9wTGVmdCgpLndpZHRoKCk7
Ci0KLSAgICBDR0NvbG9yU3BhY2VSZWYgY3NwYWNlID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigp
OwotCi0gICAgRmxvYXRSZWN0IHRvcEdyYWRpZW50KHIueCgpLCByLnkoKSwgci53aWR0aCgpLCBy
LmhlaWdodCgpIC8gMi4wZik7Ci0gICAgc3RydWN0IENHRnVuY3Rpb25DYWxsYmFja3MgdG9wQ2Fs
bGJhY2tzID0geyAwLCBUb3BHcmFkaWVudEludGVycG9sYXRlLCBOVUxMIH07Ci0gICAgUmV0YWlu
UHRyPENHRnVuY3Rpb25SZWY+IHRvcEZ1bmN0aW9uID0gYWRvcHRDRihDR0Z1bmN0aW9uQ3JlYXRl
KE5VTEwsIDEsIE5VTEwsIDQsIE5VTEwsICZ0b3BDYWxsYmFja3MpKTsKLSAgICBSZXRhaW5QdHI8
Q0dTaGFkaW5nUmVmPiB0b3BTaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChj
c3BhY2UsIENHUG9pbnRNYWtlKHRvcEdyYWRpZW50LngoKSwgdG9wR3JhZGllbnQueSgpKSwgQ0dQ
b2ludE1ha2UodG9wR3JhZGllbnQueCgpLCB0b3BHcmFkaWVudC5tYXhZKCkpLCB0b3BGdW5jdGlv
bi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7Ci0KLSAgICBGbG9hdFJlY3QgYm90dG9tR3JhZGllbnQo
ci54KCkgKyByYWRpdXMsIHIueSgpICsgci5oZWlnaHQoKSAvIDIuMGYsIHIud2lkdGgoKSAtIDIu
MGYgKiByYWRpdXMsIHIuaGVpZ2h0KCkgLyAyLjBmKTsKLSAgICBzdHJ1Y3QgQ0dGdW5jdGlvbkNh
bGxiYWNrcyBib3R0b21DYWxsYmFja3MgPSB7IDAsIEJvdHRvbUdyYWRpZW50SW50ZXJwb2xhdGUs
IE5VTEwgfTsKLSAgICBSZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4gYm90dG9tRnVuY3Rpb24gPSBh
ZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoTlVMTCwgMSwgTlVMTCwgNCwgTlVMTCwgJmJvdHRvbUNh
bGxiYWNrcykpOwotICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IGJvdHRvbVNoYWRpbmcgPSBh
ZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2UoYm90dG9tR3Jh
ZGllbnQueCgpLCAgYm90dG9tR3JhZGllbnQueSgpKSwgQ0dQb2ludE1ha2UoYm90dG9tR3JhZGll
bnQueCgpLCBib3R0b21HcmFkaWVudC5tYXhZKCkpLCBib3R0b21GdW5jdGlvbi5nZXQoKSwgZmFs
c2UsIGZhbHNlKSk7Ci0KLSAgICBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBtYWluQ2FsbGJh
Y2tzID0geyAwLCBNYWluR3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwotICAgIFJldGFpblB0
cjxDR0Z1bmN0aW9uUmVmPiBtYWluRnVuY3Rpb24gPSBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUo
TlVMTCwgMSwgTlVMTCwgNCwgTlVMTCwgJm1haW5DYWxsYmFja3MpKTsKLSAgICBSZXRhaW5QdHI8
Q0dTaGFkaW5nUmVmPiBtYWluU2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwo
Y3NwYWNlLCBDR1BvaW50TWFrZShyLngoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci54KCksIHIu
bWF4WSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKLQotICAgIFJldGFp
blB0cjxDR1NoYWRpbmdSZWY+IGxlZnRTaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVB
eGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHIueCgpLCAgci55KCkpLCBDR1BvaW50TWFrZShyLngo
KSArIHJhZGl1cywgci55KCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwot
Ci0gICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gcmlnaHRTaGFkaW5nID0gYWRvcHRDRihDR1No
YWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHIubWF4WCgpLCAgci55KCkpLCBD
R1BvaW50TWFrZShyLm1heFgoKSAtIHJhZGl1cywgci55KCkpLCBtYWluRnVuY3Rpb24uZ2V0KCks
IGZhbHNlLCBmYWxzZSkpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7Ci0gICAgQ0dD
b250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+Y2xp
cFJvdW5kZWRSZWN0KGJvdW5kKTsKLSAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBt
YWluU2hhZGluZy5nZXQoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKLQot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7Ci0gICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChj
b250ZXh0LCB0b3BHcmFkaWVudCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVk
UmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCBib3Vu
ZC5yYWRpaSgpLnRvcExlZnQoKSwgYm91bmQucmFkaWkoKS50b3BSaWdodCgpLCBJbnRTaXplKCks
IEludFNpemUoKSkpOwotICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHRvcFNoYWRp
bmcuZ2V0KCkpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7Ci0KLSAgICBpZiAo
IWJvdHRvbUdyYWRpZW50LmlzRW1wdHkoKSkgewotICAgICAgICBwYWludEluZm8uY29udGV4dC0+
c2F2ZSgpOwotICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdHRvbUdyYWRp
ZW50KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRTaXplKCksIElu
dFNpemUoKSwgYm91bmQucmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvdW5kLnJhZGlpKCkuYm90dG9t
UmlnaHQoKSkpOwotICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBib3R0b21T
aGFkaW5nLmdldCgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKLSAg
ICB9Ci0KLSAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgIENHQ29udGV4dENsaXBU
b1JlY3QoY29udGV4dCwgcik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVj
dChib3VuZCk7Ci0gICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbGVmdFNoYWRpbmcu
Z2V0KCkpOwotICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHJpZ2h0U2hhZGluZy5n
ZXQoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKLQotICAgIHBhaW50SW5m
by5jb250ZXh0LT5yZXN0b3JlKCk7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50
TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQotewotICAg
IEludFJlY3QgYm91bmRzID0gSW50UmVjdChyZWN0LngoKSArIHJlbmRlcmVyLnN0eWxlKCkuYm9y
ZGVyTGVmdFdpZHRoKCksCi0gICAgICAgIHJlY3QueSgpICsgcmVuZGVyZXIuc3R5bGUoKS5ib3Jk
ZXJUb3BXaWR0aCgpLAotICAgICAgICByZWN0LndpZHRoKCkgLSByZW5kZXJlci5zdHlsZSgpLmJv
cmRlckxlZnRXaWR0aCgpIC0gcmVuZGVyZXIuc3R5bGUoKS5ib3JkZXJSaWdodFdpZHRoKCksCi0g
ICAgICAgIHJlY3QuaGVpZ2h0KCkgLSByZW5kZXJlci5zdHlsZSgpLmJvcmRlclRvcFdpZHRoKCkg
LSByZW5kZXJlci5zdHlsZSgpLmJvcmRlckJvdHRvbVdpZHRoKCkpOwotICAgIC8vIERyYXcgdGhl
IGdyYWRpZW50cyB0byBnaXZlIHRoZSBzdHlsZWQgcG9wdXAgbWVudSBhIGJ1dHRvbiBhcHBlYXJh
bmNlCi0gICAgcGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhyZW5kZXJlciwgcGFpbnRJbmZv
LCBib3VuZHMpOwotCi0gICAgLy8gU2luY2Ugd2UgYWN0dWFsbHkga25vdyB0aGUgc2l6ZSBvZiB0
aGUgY29udHJvbCBoZXJlLCB3ZSByZXN0cmljdCB0aGUgZm9udCBzY2FsZSB0byBtYWtlIHN1cmUg
dGhlIGFycm93IHdpbGwgZml0IHZlcnRpY2FsbHkgaW4gdGhlIGJvdW5kcwotICAgIGZsb2F0IGZv
bnRTY2FsZSA9IG1pbihyZW5kZXJlci5zdHlsZSgpLmZvbnRTaXplKCkgLyBiYXNlRm9udFNpemUs
IGJvdW5kcy5oZWlnaHQoKSAvIGJhc2VBcnJvd0hlaWdodCk7Ci0gICAgZmxvYXQgY2VudGVyWSA9
IGJvdW5kcy55KCkgKyBib3VuZHMuaGVpZ2h0KCkgLyAyLjBmOwotICAgIGZsb2F0IGFycm93SGVp
Z2h0ID0gYmFzZUFycm93SGVpZ2h0ICogZm9udFNjYWxlOwotICAgIGZsb2F0IGFycm93V2lkdGgg
PSBiYXNlQXJyb3dXaWR0aCAqIGZvbnRTY2FsZTsKLSAgICBmbG9hdCBsZWZ0RWRnZSA9IGJvdW5k
cy5tYXhYKCkgLSBhcnJvd1BhZGRpbmdSaWdodCAtIGFycm93V2lkdGg7Ci0KLSAgICBpZiAoYm91
bmRzLndpZHRoKCkgPCBhcnJvd1dpZHRoICsgYXJyb3dQYWRkaW5nTGVmdCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKLQotICAgIHBhaW50
SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IocmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIHBh
aW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihOb1N0cm9rZSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7Ci0KLSAgICBGbG9hdFBvaW50IGFycm93WzNdOwotICAgIGFycm93WzBdID0gRmxvYXRQ
b2ludChsZWZ0RWRnZSwgY2VudGVyWSAtIGFycm93SGVpZ2h0IC8gMi4wZik7Ci0gICAgYXJyb3db
MV0gPSBGbG9hdFBvaW50KGxlZnRFZGdlICsgYXJyb3dXaWR0aCwgY2VudGVyWSAtIGFycm93SGVp
Z2h0IC8gMi4wZik7Ci0gICAgYXJyb3dbMl0gPSBGbG9hdFBvaW50KGxlZnRFZGdlICsgYXJyb3dX
aWR0aCAvIDIuMGYsIGNlbnRlclkgKyBhcnJvd0hlaWdodCAvIDIuMGYpOwotCi0gICAgLy8gRHJh
dyB0aGUgYXJyb3cKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0NvbnZleFBvbHlnb24oMywg
YXJyb3csIHRydWUpOwotCi0gICAgQ29sb3IgbGVmdFNlcGFyYXRvckNvbG9yKDAsIDAsIDAsIDQw
KTsKLSAgICBDb2xvciByaWdodFNlcGFyYXRvckNvbG9yKDI1NSwgMjU1LCAyNTUsIDQwKTsKLQot
ICAgIC8vIEZJWE1FOiBTaG91bGQgdGhlIHNlcGFyYXRvciB0aGlja25lc3MgYW5kIHNwYWNlIGJl
IHNjYWxlZCB1cCBieSBmb250U2NhbGU/Ci0gICAgaW50IHNlcGFyYXRvclNwYWNlID0gMjsKLSAg
ICBpbnQgbGVmdEVkZ2VPZlNlcGFyYXRvciA9IHN0YXRpY19jYXN0PGludD4obGVmdEVkZ2UgLSBh
cnJvd1BhZGRpbmdMZWZ0KTsgLy8gRklYTUU6IFJvdW5kPwotCi0gICAgLy8gRHJhdyB0aGUgc2Vw
YXJhdG9yIHRvIHRoZSBsZWZ0IG9mIHRoZSBhcnJvd3MKLSAgICBwYWludEluZm8uY29udGV4dC0+
c2V0U3Ryb2tlVGhpY2tuZXNzKDEpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VT
dHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KGxlZnRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgcGFpbnRJbmZv
LmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IsIGJvdW5kcy55
KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChsZWZ0RWRnZU9m
U2VwYXJhdG9yLCBib3VuZHMubWF4WSgpKSk7Ci0KLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3IocmlnaHRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0g
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0
b3IgKyBzZXBhcmF0b3JTcGFjZSwgYm91bmRzLnkoKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBhcmF0b3JTcGFjZSwg
Ym91bmRzLm1heFkoKSkpOwotCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdE1lbnVM
aXN0U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUmIHN0eWxl
LCBFbGVtZW50KiBlKSBjb25zdAotewotICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBj
b250cm9sU2l6ZUZvckZvbnQoc3R5bGUpOwotCi0gICAgc3R5bGUucmVzZXRCb3JkZXIoKTsKLSAg
ICBzdHlsZS5yZXNldFBhZGRpbmcoKTsKLSAgICAKLSAgICAvLyBIZWlnaHQgaXMgbG9ja2VkIHRv
IGF1dG8uCi0gICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChBdXRvKSk7Ci0KLSAgICAvLyBXaGl0
ZS1zcGFjZSBpcyBsb2NrZWQgdG8gcHJlCi0gICAgc3R5bGUuc2V0V2hpdGVTcGFjZShQUkUpOwot
Ci0gICAgLy8gU2V0IHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHRvIGJsYWNrIG9yIGdyYXkgd2hlbiB3
ZSBoYXZlIHRoZSBhcXVhIGxvb2suCi0gICAgLy8gQ2FzdCB0byBSR0IzMiBpcyB0byB3b3JrIGFy
b3VuZCBhIGNvbXBpbGVyIGJ1Zy4KLSAgICBzdHlsZS5zZXRDb2xvcihlICYmICFlLT5pc0Rpc2Fi
bGVkRm9ybUNvbnRyb2woKSA/IHN0YXRpY19jYXN0PFJHQkEzMj4oQ29sb3I6OmJsYWNrKSA6IENv
bG9yOjpkYXJrR3JheSk7Ci0KLSAgICAvLyBTZXQgdGhlIGJ1dHRvbidzIHZlcnRpY2FsIHNpemUu
Ci0gICAgc2V0QnV0dG9uU2l6ZShzdHlsZSk7Ci0KLSAgICAvLyBPdXIgZm9udCBpcyBsb2NrZWQg
dG8gdGhlIGFwcHJvcHJpYXRlIHN5c3RlbSBmb250IHNpemUgZm9yIHRoZSBjb250cm9sLiAgVG8g
Y2xhcmlmeSwgd2UgZmlyc3QgdXNlIHRoZSBDU1Mtc3BlY2lmaWVkIGZvbnQgdG8gZmlndXJlIG91
dAotICAgIC8vIGEgcmVhc29uYWJsZSBjb250cm9sIHNpemUsIGJ1dCBvbmNlIHRoYXQgY29udHJv
bCBzaXplIGlzIGRldGVybWluZWQsIHdlIHRocm93IHRoYXQgZm9udCBhd2F5IGFuZCB1c2UgdGhl
IGFwcHJvcHJpYXRlCi0gICAgLy8gc3lzdGVtIGZvbnQgZm9yIHRoZSBjb250cm9sIHNpemUgaW5z
dGVhZC4KLSAgICBzZXRGb250RnJvbUNvbnRyb2xTaXplKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBj
b250cm9sU2l6ZSk7Ci19Ci0KLWludCBSZW5kZXJUaGVtZVNhZmFyaTo6cG9wdXBJbnRlcm5hbFBh
ZGRpbmdMZWZ0KFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKLXsKLSAgICBpZiAoc3R5bGUuYXBw
ZWFyYW5jZSgpID09IE1lbnVsaXN0UGFydCkKLSAgICAgICAgcmV0dXJuIHBvcHVwQnV0dG9uUGFk
ZGluZyhjb250cm9sU2l6ZUZvckZvbnQoc3R5bGUpKVtsZWZ0UGFkZGluZ107Ci0gICAgaWYgKHN0
eWxlLmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdEJ1dHRvblBhcnQpCi0gICAgICAgIHJldHVybiBz
dHlsZWRQb3B1cFBhZGRpbmdMZWZ0OwotICAgIHJldHVybiAwOwotfQotCi1pbnQgUmVuZGVyVGhl
bWVTYWZhcmk6OnBvcHVwSW50ZXJuYWxQYWRkaW5nUmlnaHQoUmVuZGVyU3R5bGUmIHN0eWxlKSBj
b25zdAotewotICAgIGlmIChzdHlsZS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RQYXJ0KQotICAg
ICAgICByZXR1cm4gcG9wdXBCdXR0b25QYWRkaW5nKGNvbnRyb2xTaXplRm9yRm9udChzdHlsZSkp
W3JpZ2h0UGFkZGluZ107Ci0gICAgaWYgKHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdEJ1
dHRvblBhcnQpIHsKLSAgICAgICAgZmxvYXQgZm9udFNjYWxlID0gc3R5bGUuZm9udFNpemUoKSAv
IGJhc2VGb250U2l6ZTsKLSAgICAgICAgZmxvYXQgYXJyb3dXaWR0aCA9IGJhc2VBcnJvd1dpZHRo
ICogZm9udFNjYWxlOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihjZWlsZihhcnJv
d1dpZHRoICsgYXJyb3dQYWRkaW5nTGVmdCArIGFycm93UGFkZGluZ1JpZ2h0ICsgcGFkZGluZ0Jl
Zm9yZVNlcGFyYXRvcikpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotaW50IFJlbmRlclRo
ZW1lU2FmYXJpOjpwb3B1cEludGVybmFsUGFkZGluZ1RvcChSZW5kZXJTdHlsZSYgc3R5bGUpIGNv
bnN0Ci17Ci0gICAgaWYgKHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdFBhcnQpCi0gICAg
ICAgIHJldHVybiBwb3B1cEJ1dHRvblBhZGRpbmcoY29udHJvbFNpemVGb3JGb250KHN0eWxlKSlb
dG9wUGFkZGluZ107Ci0gICAgaWYgKHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdEJ1dHRv
blBhcnQpCi0gICAgICAgIHJldHVybiBzdHlsZWRQb3B1cFBhZGRpbmdUb3A7Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KLWludCBSZW5kZXJUaGVtZVNhZmFyaTo6cG9wdXBJbnRlcm5hbFBhZGRpbmdCb3R0
b20oUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAotewotICAgIGlmIChzdHlsZS5hcHBlYXJhbmNl
KCkgPT0gTWVudWxpc3RQYXJ0KQotICAgICAgICByZXR1cm4gcG9wdXBCdXR0b25QYWRkaW5nKGNv
bnRyb2xTaXplRm9yRm9udChzdHlsZSkpW2JvdHRvbVBhZGRpbmddOwotICAgIGlmIChzdHlsZS5h
cHBlYXJhbmNlKCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KQotICAgICAgICByZXR1cm4gc3R5bGVk
UG9wdXBQYWRkaW5nQm90dG9tOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIFJlbmRlclRoZW1l
U2FmYXJpOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJT
dHlsZSYgc3R5bGUsIEVsZW1lbnQqKSBjb25zdAotewotICAgIGZsb2F0IGZvbnRTY2FsZSA9IHN0
eWxlLmZvbnRTaXplKCkgLyBiYXNlRm9udFNpemU7Ci0gICAgCi0gICAgc3R5bGUucmVzZXRQYWRk
aW5nKCk7Ci0gICAgc3R5bGUuc2V0Qm9yZGVyUmFkaXVzKEludFNpemUoaW50KGJhc2VCb3JkZXJS
YWRpdXMgKyBmb250U2NhbGUgLSAxKSwgaW50KGJhc2VCb3JkZXJSYWRpdXMgKyBmb250U2NhbGUg
LSAxKSkpOyAvLyBGSVhNRTogUm91bmQgdXA/Ci0KLSAgICBjb25zdCBpbnQgbWluSGVpZ2h0ID0g
MTU7Ci0gICAgc3R5bGUuc2V0TWluSGVpZ2h0KExlbmd0aChtaW5IZWlnaHQsIEZpeGVkKSk7Ci0g
ICAgCi0gICAgc3R5bGUuc2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWln
aHQoKSk7Ci19Ci0KLWNvbnN0IEludFNpemUqIFJlbmRlclRoZW1lU2FmYXJpOjptZW51TGlzdFNp
emVzKCkgY29uc3QKLXsKLSAgICBzdGF0aWMgY29uc3QgSW50U2l6ZSBzaXplc1szXSA9IHsgSW50
U2l6ZSg5LCAwKSwgSW50U2l6ZSg1LCAwKSwgSW50U2l6ZSgwLCAwKSB9OwotICAgIHJldHVybiBz
aXplczsKLX0KLQotaW50IFJlbmRlclRoZW1lU2FmYXJpOjptaW5pbXVtTWVudUxpc3RTaXplKFJl
bmRlclN0eWxlJiBzdHlsZSkgY29uc3QKLXsKLSAgICByZXR1cm4gc2l6ZUZvclN5c3RlbUZvbnQo
c3R5bGUsIG1lbnVMaXN0U2l6ZXMoKSkud2lkdGgoKTsKLX0KLQotY29uc3QgaW50IHRyYWNrV2lk
dGggPSA1OwotY29uc3QgaW50IHRyYWNrUmFkaXVzID0gMjsKLQotYm9vbCBSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQotewotICAgIEludFNpemUgcmFkaXVz
KHRyYWNrUmFkaXVzLCB0cmFja1JhZGl1cyk7Ci0gICAgRmxvYXRSb3VuZGVkUmVjdCBib3VuZHMo
ciwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKTsKLQotICAgIGlmIChvLnN0eWxlKCku
YXBwZWFyYW5jZSgpID09ICBTbGlkZXJIb3Jpem9udGFsUGFydCkKLSAgICAgICAgYm91bmRzLnNl
dFJlY3QoSW50UmVjdChyLngoKSwgci55KCkgKyByLmhlaWdodCgpIC8gMiAtIHRyYWNrV2lkdGgg
LyAyLCByLndpZHRoKCksIHRyYWNrV2lkdGgpKTsKLSAgICBlbHNlIGlmIChvLnN0eWxlKCkuYXBw
ZWFyYW5jZSgpID09IFNsaWRlclZlcnRpY2FsUGFydCkKLSAgICAgICAgYm91bmRzLnNldFJlY3Qo
SW50UmVjdChyLngoKSArIHIud2lkdGgoKSAvIDIgLSB0cmFja1dpZHRoIC8gMiwgci55KCksIHRy
YWNrV2lkdGgsIHIuaGVpZ2h0KCkpKTsKLQotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGFp
bnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgIENHQ29sb3JTcGFjZVJlZiBj
c3BhY2UgPSBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7Ci0KLSAgICBwYWludEluZm8uY29udGV4
dC0+c2F2ZSgpOwotICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm91bmRzLnJlY3Qo
KSk7Ci0KLSAgICBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBtYWluQ2FsbGJhY2tzID0geyAw
LCBUcmFja0dyYWRpZW50SW50ZXJwb2xhdGUsIE5VTEwgfTsKLSAgICBSZXRhaW5QdHI8Q0dGdW5j
dGlvblJlZj4gbWFpbkZ1bmN0aW9uID0gYWRvcHRDRihDR0Z1bmN0aW9uQ3JlYXRlKE5VTEwsIDEs
IE5VTEwsIDQsIE5VTEwsICZtYWluQ2FsbGJhY2tzKSk7Ci0gICAgUmV0YWluUHRyPENHU2hhZGlu
Z1JlZj4gbWFpblNoYWRpbmc7Ci0gICAgaWYgKG8uc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gU2xp
ZGVyVmVydGljYWxQYXJ0KQotICAgICAgICBtYWluU2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5n
Q3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShib3VuZHMucmVjdCgpLngoKSwgIGJvdW5k
cy5yZWN0KCkubWF4WSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLnJlY3QoKS5tYXhYKCksIGJvdW5k
cy5yZWN0KCkubWF4WSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1haW5TaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlh
bChjc3BhY2UsIENHUG9pbnRNYWtlKGJvdW5kcy5yZWN0KCkueCgpLCAgYm91bmRzLnJlY3QoKS55
KCkpLCBDR1BvaW50TWFrZShib3VuZHMucmVjdCgpLngoKSwgYm91bmRzLnJlY3QoKS5tYXhZKCkp
LCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwotCi0gICAgcGFpbnRJbmZvLmNv
bnRleHQtPmNsaXBSb3VuZGVkUmVjdChib3VuZHMpOwotICAgIENHQ29udGV4dERyYXdTaGFkaW5n
KGNvbnRleHQsIG1haW5TaGFkaW5nLmdldCgpKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+cmVz
dG9yZSgpOwotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBSZW5kZXJUaGVtZVNh
ZmFyaTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
LCBSZW5kZXJTdHlsZSYgc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0IAoteyAKLSAgICBSZW5kZXJU
aGVtZTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7Ci0g
ICAgc3R5bGUuc2V0Qm94U2hhZG93KG51bGxwdHIpOyAKLX0gCi0KLWNvbnN0IGZsb2F0IHZlcnRp
Y2FsU2xpZGVySGVpZ2h0UGFkZGluZyA9IDAuMWY7Ci0KLWJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6
OnBhaW50U2xpZGVyVGh1bWIoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKLXsKLSAgICBBU1NFUlQoU2FmYXJpVGhlbWVM
aWJyYXJ5KCkpOwotICAgIHBhaW50VGhlbWVQYXJ0KFNsaWRlclRodW1iUGFydCwgcGFpbnRJbmZv
LmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBOU1NtYWxsQ29udHJvbFNpemUsIGRldGVy
bWluZVN0YXRlKG8pKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWNvbnN0IGludCBzbGlkZXJU
aHVtYldpZHRoID0gMTU7Ci1jb25zdCBpbnQgc2xpZGVyVGh1bWJIZWlnaHQgPSAxNTsKLQotdm9p
ZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlJiBz
dHlsZSwgRWxlbWVudCopIGNvbnN0Ci17Ci0gICAgaWYgKHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBT
bGlkZXJUaHVtYkhvcml6b250YWxQYXJ0IHx8IHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJU
aHVtYlZlcnRpY2FsUGFydCkgewotICAgICAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2xpZGVy
VGh1bWJXaWR0aCwgRml4ZWQpKTsKLSAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChzbGlk
ZXJUaHVtYkhlaWdodCwgRml4ZWQpKTsKLSAgICB9IAotI2lmIEVOQUJMRShWSURFTykKLSAgICBl
bHNlIGlmIChzdHlsZS5hcHBlYXJhbmNlKCkgPT0gTWVkaWFTbGlkZXJUaHVtYlBhcnQpIAotICAg
ICAgICBSZW5kZXJNZWRpYUNvbnRyb2xzOjphZGp1c3RNZWRpYVNsaWRlclRodW1iU2l6ZShzdHls
ZSk7Ci0jZW5kaWYKLX0KLQotYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVs
ZChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBJbnRSZWN0JiByKQotewotICAgIEFTU0VSVChTYWZhcmlUaGVtZUxpYnJhcnkoKSk7Ci0KLSAg
ICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRQYXJ0LCBwYWludEluZm8u
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIGNvbnRyb2xTaXplRnJvbVJlY3Qociwgc2Vh
cmNoRmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3RhdGUobykpOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotY29uc3QgSW50U2l6ZSogUmVuZGVyVGhlbWVTYWZhcmk6OnNlYXJjaEZpZWxkU2l6ZXMo
KSBjb25zdAotewotICAgIHN0YXRpYyBjb25zdCBJbnRTaXplIHNpemVzWzNdID0geyBJbnRTaXpl
KDAsIDIyKSwgSW50U2l6ZSgwLCAxOSksIEludFNpemUoMCwgMTUpIH07Ci0gICAgcmV0dXJuIHNp
emVzOwotfQotCi12b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpzZXRTZWFyY2hGaWVsZFNpemUoUmVu
ZGVyU3R5bGUmIHN0eWxlKSBjb25zdAotewotICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0
IGFyZSBib3RoIHNwZWNpZmllZCwgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCi0gICAgaWYg
KCFzdHlsZS53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLmhlaWdodCgpLmlz
QXV0bygpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgLy8gVXNlIHRoZSBmb250IHNpemUg
dG8gZGV0ZXJtaW5lIHRoZSBpbnRyaW5zaWMgd2lkdGggb2YgdGhlIGNvbnRyb2wuCi0gICAgc2V0
U2l6ZUZyb21Gb250KHN0eWxlLCBzZWFyY2hGaWVsZFNpemVzKCkpOwotfQotCi12b2lkIFJlbmRl
clRoZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIFJlbmRlclN0eWxlJiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Ci17Ci0gICAgLy8g
T3ZlcnJpZGUgYm9yZGVyLgotICAgIHN0eWxlLnJlc2V0Qm9yZGVyKCk7Ci0gICAgY29uc3Qgc2hv
cnQgYm9yZGVyV2lkdGggPSAyOwotICAgIHN0eWxlLnNldEJvcmRlckxlZnRXaWR0aChib3JkZXJX
aWR0aCk7Ci0gICAgc3R5bGUuc2V0Qm9yZGVyTGVmdFN0eWxlKElOU0VUKTsKLSAgICBzdHlsZS5z
ZXRCb3JkZXJSaWdodFdpZHRoKGJvcmRlcldpZHRoKTsKLSAgICBzdHlsZS5zZXRCb3JkZXJSaWdo
dFN0eWxlKElOU0VUKTsKLSAgICBzdHlsZS5zZXRCb3JkZXJCb3R0b21XaWR0aChib3JkZXJXaWR0
aCk7Ci0gICAgc3R5bGUuc2V0Qm9yZGVyQm90dG9tU3R5bGUoSU5TRVQpOwotICAgIHN0eWxlLnNl
dEJvcmRlclRvcFdpZHRoKGJvcmRlcldpZHRoKTsKLSAgICBzdHlsZS5zZXRCb3JkZXJUb3BTdHls
ZShJTlNFVCk7Ci0KLSAgICAvLyBPdmVycmlkZSBoZWlnaHQuCi0gICAgc3R5bGUuc2V0SGVpZ2h0
KExlbmd0aChBdXRvKSk7Ci0gICAgc2V0U2VhcmNoRmllbGRTaXplKHN0eWxlKTsKLQotICAgIC8v
IE92ZXJyaWRlIHBhZGRpbmcgc2l6ZSB0byBtYXRjaCBBcHBLaXQgdGV4dCBwb3NpdGlvbmluZy4K
LSAgICBjb25zdCBpbnQgcGFkZGluZyA9IDE7Ci0gICAgc3R5bGUuc2V0UGFkZGluZ0xlZnQoTGVu
Z3RoKHBhZGRpbmcsIEZpeGVkKSk7Ci0gICAgc3R5bGUuc2V0UGFkZGluZ1JpZ2h0KExlbmd0aChw
YWRkaW5nLCBGaXhlZCkpOwotICAgIHN0eWxlLnNldFBhZGRpbmdUb3AoTGVuZ3RoKHBhZGRpbmcs
IEZpeGVkKSk7Ci0gICAgc3R5bGUuc2V0UGFkZGluZ0JvdHRvbShMZW5ndGgocGFkZGluZywgRml4
ZWQpKTsKLQotICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBjb250cm9sU2l6ZUZvckZv
bnQoc3R5bGUpOwotICAgIHNldEZvbnRGcm9tQ29udHJvbFNpemUoc3R5bGVSZXNvbHZlciwgc3R5
bGUsIGNvbnRyb2xTaXplKTsKLX0KLQotYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JikKLXsKLSAgICBBU1NFUlQoU2FmYXJpVGhlbWVM
aWJyYXJ5KCkpOwotCi0gICAgTm9kZSogaW5wdXQgPSBvLm5vZGUoKS0+c2hhZG93SG9zdCgpOwot
ICAgIGlmICghaW5wdXQpCi0gICAgICAgIGlucHV0ID0gby5ub2RlKCk7Ci0gICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IGlucHV0LT5yZW5kZXJlcigpOwotICAgIEFTU0VSVChyZW5kZXJlcik7
Ci0KLSAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKLQotICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRo
ZW1lOjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFyY2hSZWN0
LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1jb25zdCBJbnRTaXplKiBSZW5kZXJUaGVtZVNhZmFyaTo6Y2FuY2VsQnV0dG9u
U2l6ZXMoKSBjb25zdAotewotICAgIHN0YXRpYyBjb25zdCBJbnRTaXplIHNpemVzWzNdID0geyBJ
bnRTaXplKDE2LCAxMyksIEludFNpemUoMTMsIDExKSwgSW50U2l6ZSgxMywgOSkgfTsKLSAgICBy
ZXR1cm4gc2l6ZXM7Ci19Ci0KLXZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiBzdHlsZSwg
RWxlbWVudCopIGNvbnN0Ci17Ci0gICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvclN5c3RlbUZvbnQo
c3R5bGUsIGNhbmNlbEJ1dHRvblNpemVzKCkpOwotICAgIHN0eWxlLnNldFdpZHRoKExlbmd0aChz
aXplLndpZHRoKCksIEZpeGVkKSk7Ci0gICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChzaXplLmhl
aWdodCgpLCBGaXhlZCkpOwotfQotCi1jb25zdCBJbnRTaXplKiBSZW5kZXJUaGVtZVNhZmFyaTo6
cmVzdWx0c0J1dHRvblNpemVzKCkgY29uc3QKLXsKLSAgICBzdGF0aWMgY29uc3QgSW50U2l6ZSBz
aXplc1szXSA9IHsgSW50U2l6ZSgxOSwgMTMpLCBJbnRTaXplKDE3LCAxMSksIEludFNpemUoMTcs
IDkpIH07Ci0gICAgcmV0dXJuIHNpemVzOwotfQotCi1jb25zdCBpbnQgZW1wdHlSZXN1bHRzT2Zm
c2V0ID0gOTsKLXZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3Jh
dGlvblBhcnRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBFbGVtZW50
KikgY29uc3QKLXsKLSAgICBJbnRTaXplIHNpemUgPSBzaXplRm9yU3lzdGVtRm9udChzdHlsZSwg
cmVzdWx0c0J1dHRvblNpemVzKCkpOwotICAgIHN0eWxlLnNldFdpZHRoKExlbmd0aChzaXplLndp
ZHRoKCkgLSBlbXB0eVJlc3VsdHNPZmZzZXQsIEZpeGVkKSk7Ci0gICAgc3R5bGUuc2V0SGVpZ2h0
KExlbmd0aChzaXplLmhlaWdodCgpLCBGaXhlZCkpOwotfQotCi1ib29sIFJlbmRlclRoZW1lU2Fm
YXJpOjpwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0Jiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNv
cmF0aW9uUGFydFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUsIEVsZW1l
bnQqKSBjb25zdAotewotICAgIEludFNpemUgc2l6ZSA9IHNpemVGb3JTeXN0ZW1Gb250KHN0eWxl
LCByZXN1bHRzQnV0dG9uU2l6ZXMoKSk7Ci0gICAgc3R5bGUuc2V0V2lkdGgoTGVuZ3RoKHNpemUu
d2lkdGgoKSwgRml4ZWQpKTsKLSAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKHNpemUuaGVpZ2h0
KCksIEZpeGVkKSk7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmll
bGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYpCi17Ci0gICAgQVNTRVJUKFNhZmFyaVRo
ZW1lTGlicmFyeSgpKTsKLQotICAgIE5vZGUqIGlucHV0ID0gby5ub2RlKCktPnNoYWRvd0hvc3Qo
KTsKLSAgICBpZiAoIWlucHV0KQotICAgICAgICBpbnB1dCA9IG8ubm9kZSgpOwotICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSBpbnB1dC0+cmVuZGVyZXIoKTsKLSAgICBBU1NFUlQocmVuZGVy
ZXIpOwotCi0gICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRp
bmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7Ci0KLSAgICBwYWludFRoZW1lUGFydChTYWZh
cmlUaGVtZTo6U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQsIHBhaW50SW5mby5jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9tUmVjdChz
ZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi1jb25zdCBpbnQgcmVzdWx0c0Fycm93V2lkdGggPSA1Owotdm9p
ZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUo
U3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Ci17Ci0g
ICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvclN5c3RlbUZvbnQoc3R5bGUsIHJlc3VsdHNCdXR0b25T
aXplcygpKTsKLSAgICBzdHlsZS5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpICsgcmVzdWx0
c0Fycm93V2lkdGgsIEZpeGVkKSk7Ci0gICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChzaXplLmhl
aWdodCgpLCBGaXhlZCkpOwotfQotCi1ib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JikKLXsKLSAgICBBU1NFUlQoU2FmYXJpVGhlbWVM
aWJyYXJ5KCkpOwotCi0gICAgTm9kZSogaW5wdXQgPSBvLm5vZGUoKS0+c2hhZG93SG9zdCgpOwot
ICAgIGlmICghaW5wdXQpCi0gICAgICAgIGlucHV0ID0gby5ub2RlKCk7Ci0gICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IGlucHV0LT5yZW5kZXJlcigpOwotICAgIEFTU0VSVChyZW5kZXJlcik7
Ci0KLSAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKLQotICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRo
ZW1lOjpTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVj
dCwgc2VhcmNoRmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3RhdGUobykpOwotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotI2lmIEVOQUJMRShWSURFTykKLVN0cmluZyBSZW5kZXJUaGVtZVNhZmFyaTo6
bWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKQotewotI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19T
Q1JJUFQpCi0gICAgaWYgKG1fbWVkaWFDb250cm9sc1N0eWxlU2hlZXQuaXNFbXB0eSgpKQotICAg
ICAgICBtX21lZGlhQ29udHJvbHNTdHlsZVNoZWV0ID0gUmVuZGVyVGhlbWVXaW46OnN0cmluZ1dp
dGhDb250ZW50c09mRmlsZShDRlNUUigibWVkaWFDb250cm9sc0FwcGxlIiksIENGU1RSKCJjc3Mi
KSk7Ci0gICAgcmV0dXJuIG1fbWVkaWFDb250cm9sc1N0eWxlU2hlZXQ7Ci0jZWxzZQotICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwotI2VuZGlmCi19Ci0KLVN0cmluZyBSZW5kZXJUaGVtZVNhZmFy
aTo6bWVkaWFDb250cm9sc1NjcmlwdCgpCi17Ci0jaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1ND
UklQVCkKLSAgICBTdHJpbmdCdWlsZGVyIHNjcmlwdEJ1aWxkZXI7Ci0gICAgc2NyaXB0QnVpbGRl
ci5hcHBlbmQoUmVuZGVyVGhlbWVXaW46OnN0cmluZ1dpdGhDb250ZW50c09mRmlsZShDRlNUUigi
bWVkaWFDb250cm9sc0xvY2FsaXplZFN0cmluZ3MiKSwgQ0ZTVFIoImpzIikpKTsKLSAgICBzY3Jp
cHRCdWlsZGVyLmFwcGVuZChSZW5kZXJUaGVtZVdpbjo6c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxl
KENGU1RSKCJtZWRpYUNvbnRyb2xzQXBwbGUiKSwgQ0ZTVFIoImpzIikpKTsKLSAgICBtX21lZGlh
Q29udHJvbHNTY3JpcHQgPSBzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1f
bWVkaWFDb250cm9sc1NjcmlwdDsKLSNlbHNlCi0gICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0j
ZW5kaWYKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCi12b2lkIFJlbmRl
clRoZW1lU2FmYXJpOjphZGp1c3RNZXRlclN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHls
ZSYgc3R5bGUsIEVsZW1lbnQqKSBjb25zdAotewotICAgIHN0eWxlLnNldEJveFNoYWRvdyhudWxs
cHRyKTsKLX0KLQotYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6c3VwcG9ydHNNZXRlcihDb250cm9s
UGFydCBwYXJ0KSBjb25zdAotewotICAgIHN3aXRjaCAocGFydCkgewotICAgIGNhc2UgTWV0ZXJQ
YXJ0OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotfQotCi1JbnRTaXplIFJlbmRlclRoZW1lU2FmYXJpOjptZXRlclNpemVG
b3JCb3VuZHMoY29uc3QgUmVuZGVyTWV0ZXImLCBjb25zdCBJbnRSZWN0JiBib3VuZHMpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGJvdW5kcy5zaXplKCk7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVTYWZh
cmk6OnBhaW50TWV0ZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIC8vIE5PVEU6
IFRoaXMgcm91dGluZSBpcyBmb3IgdGVzdGluZyBvbmx5LiBJdCBzaG91bGQgYmUgZmxlc2hlZCBv
dXQgd2l0aCBhIHJlYWwgQ0ctYmFzZWQgaW1wbGVtZW50YXRpb24uCi0gICAgLy8gUmlnaHQgbm93
IGl0IHVzZXMgYSBzbGlkZXIsIHdpdGggdGhlIHRodW1iIHBvc2l0aW9uZWQgYXQgdGhlIG1ldGVy
IHBvaW50LgotICAgIGlmICghaXM8UmVuZGVyTWV0ZXI+KHJlbmRlck9iamVjdCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgSFRNTE1ldGVyRWxlbWVudCogZWxlbWVudCA9IGRvd25jYXN0
PFJlbmRlck1ldGVyPihyZW5kZXJPYmplY3QpLm1ldGVyRWxlbWVudCgpOwotCi0gICAgaW50IHJl
bWFpbmluZyA9IHN0YXRpY19jYXN0PGludD4oKDEuMCAtIGVsZW1lbnQtPnZhbHVlUmF0aW8oKSkg
KiBzdGF0aWNfY2FzdDxkb3VibGU+KHJlY3Quc2l6ZSgpLndpZHRoKCkpKTsKLQotICAgIC8vIERy
YXcgdGhlIGJhY2tncm91bmQKLSAgICBwYWludFNsaWRlclRyYWNrKHJlbmRlck9iamVjdCwgcGFp
bnRJbmZvLCByZWN0KTsKLQotICAgIC8vIERyYXcgdGhlIHByb2dyZXNzIHBvcnRpb24KLSAgICBJ
bnRSZWN0IGNvbXBsZXRlZFJlY3QocmVjdCk7Ci0gICAgY29tcGxldGVkUmVjdC5jb250cmFjdChy
ZW1haW5pbmcsIDApOwotCi0gICAgcGFpbnRTbGlkZXJUaHVtYihyZW5kZXJPYmplY3QsIHBhaW50
SW5mbywgY29tcGxldGVkUmVjdCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotI2VuZGlmCi0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICNpZiBVU0UoU0FGQVJJX1RIRU1F
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJp
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2QxMDYyMzQzMjNhMjI5OTliY2Q2MWQ2MDZhMjUwMDc5
NjA2M2FhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaAorKysgL2Rldi9udWxs
CkBAIC0xLDE5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEz
LCAyMDE0IEFwcGxlIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSAqCi0gKi8KLQotI2lmbmRlZiBSZW5kZXJUaGVtZVNhZmFyaV9oCi0jZGVmaW5lIFJlbmRl
clRoZW1lU2FmYXJpX2gKLQotI2lmIFVTRShTQUZBUklfVEhFTUUpCi0KLSNpbmNsdWRlICJSZW5k
ZXJUaGVtZS5oIgotCi0vLyBJZiB5b3UgaGF2ZSBhbiBlbXB0eSBwbGFjZWhvbGRlciBTYWZhcmlU
aGVtZUNvbnN0YW50cy5oLCB0aGVuIGluY2x1ZGUgU2FmYXJpVGhlbWUuaAotLy8gVGhpcyBpcyBh
IHdvcmthcm91bmQgdW50aWwgYSB2ZXJzaW9uIG9mIFdlYktpdFN1cHBvcnRMaWJyYXJ5IGlzIHJl
bGVhc2VkIHdpdGggYW4gdXBkYXRlZCBTYWZhcmlUaGVtZUNvbnN0YW50cy5oIAotI2luY2x1ZGUg
PFNhZmFyaVRoZW1lL1NhZmFyaVRoZW1lQ29uc3RhbnRzLmg+Ci0jaWZuZGVmIFNhZmFyaVRoZW1l
Q29uc3RhbnRzX2gKLSNpbmNsdWRlIDxTYWZhcmlUaGVtZS9TYWZhcmlUaGVtZS5oPgotI2VuZGlm
Ci0KLSNpZiBQTEFURk9STShXSU4pCi10eXBlZGVmIHZvaWQqIEhBTkRMRTsKLXR5cGVkZWYgc3Ry
dWN0IEhJTlNUQU5DRV9fKiBISU5TVEFOQ0U7Ci10eXBlZGVmIEhJTlNUQU5DRSBITU9EVUxFOwot
I2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNwYWNlIFNhZmFyaVRo
ZW1lOwotCi1jbGFzcyBSZW5kZXJTdHlsZTsKLQotY2xhc3MgUmVuZGVyVGhlbWVTYWZhcmkgOiBw
dWJsaWMgUmVuZGVyVGhlbWUgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRl
clRoZW1lPiBjcmVhdGUoKTsKLQotICAgIC8vIEEgbWV0aG9kIHRvIG9idGFpbiB0aGUgYmFzZWxp
bmUgcG9zaXRpb24gZm9yIGEgImxlYWYiIGNvbnRyb2wuICBUaGlzIHdpbGwgb25seSBiZSB1c2Vk
IGlmIGEgYmFzZWxpbmUKLSAgICAvLyBwb3NpdGlvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBieSBl
eGFtaW5pbmcgY2hpbGQgY29udGVudC4gQ2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9ucyBhcmUg
ZXhhbXBsZXMgb2YKLSAgICAvLyBjb250cm9scyB0aGF0IG5lZWQgdG8gZG8gdGhpcy4KLSAgICB2
aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0Owot
Ci0gICAgLy8gQSBtZXRob2QgYXNraW5nIGlmIHRoZSBjb250cm9sIGNoYW5nZXMgaXRzIHRpbnQg
d2hlbiB0aGUgd2luZG93IGhhcyBmb2N1cyBvciBub3QuCi0gICAgdmlydHVhbCBib29sIGNvbnRy
b2xTdXBwb3J0c1RpbnRzKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0OwotCi0gICAgLy8gQSBn
ZW5lcmFsIG1ldGhvZCBhc2tpbmcgaWYgYW55IGNvbnRyb2wgdGludGluZyBpcyBzdXBwb3J0ZWQg
YXQgYWxsLgotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RSZXBhaW50UmVjdChjb25z
dCBSZW5kZXJPYmplY3QmLCBJbnRSZWN0Jik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDb250cm9s
U3R5bGVkKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgQm9yZGVyRGF0YSYsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBDb2xvciYgYmFj
a2dyb3VuZENvbG9yKSBjb25zdDsKLQotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRm
b3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IENvbG9yIGFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLQot
ICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGNvbnN0OwotCi0gICAg
Ly8gU3lzdGVtIGZvbnRzLgotICAgIHZpcnR1YWwgdm9pZCBzeXN0ZW1Gb250KENTU1ZhbHVlSUQs
IEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0OwotCi0gICAgdmlydHVhbCBpbnQgbWluaW11bU1lbnVM
aXN0U2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0OwotCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNs
aWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUm
LCBFbGVtZW50KikgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBh
ZGRpbmdMZWZ0KFJlbmRlclN0eWxlJikgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgcG9wdXBJbnRl
cm5hbFBhZGRpbmdSaWdodChSZW5kZXJTdHlsZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IHBv
cHVwSW50ZXJuYWxQYWRkaW5nVG9wKFJlbmRlclN0eWxlJikgY29uc3Q7Ci0gICAgdmlydHVhbCBp
bnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdCb3R0b20oUmVuZGVyU3R5bGUmKSBjb25zdDsKLQotcHJv
dGVjdGVkOgotICAgIC8vIE1ldGhvZHMgZm9yIGVhY2ggYXBwZWFyYW5jZSB2YWx1ZS4KLSAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENoZWNrYm94U2l6
ZShSZW5kZXJTdHlsZSYpIGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIHBhaW50UmFkaW8oY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUmKSBjb25zdDsKLQotICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUm
LCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKGNvbnN0IFJl
bmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0QnV0dG9uU2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0OwotCi0gICAgdmlydHVh
bCBib29sIHBhaW50VGV4dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxkU3R5
bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0OwotCi0gICAg
dmlydHVhbCBib29sIHBhaW50VGV4dEFyZWEoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0QXJl
YVN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKLQot
ICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVu
dUxpc3RTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Q7
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0
IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpOwotICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBS
ZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKLQotICAgIHZpcnR1YWwgYm9vbCBwYWludFNs
aWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJP
YmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0KLSAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRTZWFyY2hGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxk
U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0OwotCi0g
ICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVS
ZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9v
bCBwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RT
ZWFyY2hGaWVsZERlY29yYXRpb25QYXJ0U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxl
JiwgRWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkRGVj
b3JhdGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpOwotCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb25QYXJ0U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCop
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25QYXJ0KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25T
dHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Q7Ci0gICAg
dmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9i
amVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAKLSAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRDYXBzTG9ja0luZGljYXRvcihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0KLSNpZiBFTkFCTEUoVklERU8pCi0gICAgdmly
dHVhbCBTdHJpbmcgbWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBtZWRpYUNvbnRyb2xzU2NyaXB0KCkgb3ZlcnJpZGU7Ci0jZW5kaWYKLQotI2lm
IEVOQUJMRShNRVRFUl9FTEVNRU5UKQotICAgIHZpcnR1YWwgSW50U2l6ZSBtZXRlclNpemVGb3JC
b3VuZHMoY29uc3QgUmVuZGVyTWV0ZXImLCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzTWV0ZXIoQ29udHJvbFBhcnQpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZXRlclN0eWxlKFN0eWxlUmVzb2x2ZXImLCBS
ZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRNZXRlcihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jikgb3ZlcnJpZGU7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93
UGxhY2Vob2xkZXJXaGVuRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotcHJpdmF0
ZToKLSAgICBSZW5kZXJUaGVtZVNhZmFyaSgpOwotICAgIHZpcnR1YWwgflJlbmRlclRoZW1lU2Fm
YXJpKCk7Ci0KLSAgICBJbnRSZWN0IGluZmxhdGVSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBJ
bnRTaXplJiwgY29uc3QgaW50KiBtYXJnaW5zKSBjb25zdDsKLQotICAgIC8vIEdldCB0aGUgY29u
dHJvbCBzaXplIGJhc2VkIG9mZiB0aGUgZm9udC4gIFVzZWQgYnkgc29tZSBvZiB0aGUgY29udHJv
bHMgKGxpa2UgYnV0dG9ucykuCi0KLSAgICBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplRm9yRm9u
dChSZW5kZXJTdHlsZSYpIGNvbnN0OwotICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemVGb3JT
eXN0ZW1Gb250KFJlbmRlclN0eWxlJikgY29uc3Q7Ci0gICAgLy92b2lkIHNldENvbnRyb2xTaXpl
KE5TQ2VsbCosIGNvbnN0IEludFNpemUqIHNpemVzLCBjb25zdCBJbnRTaXplJiBtaW5TaXplKTsK
LSAgICB2b2lkIHNldFNpemVGcm9tRm9udChSZW5kZXJTdHlsZSYsIGNvbnN0IEludFNpemUqIHNp
emVzKSBjb25zdDsKLSAgICBJbnRTaXplIHNpemVGb3JGb250KFJlbmRlclN0eWxlJiwgY29uc3Qg
SW50U2l6ZSogc2l6ZXMpIGNvbnN0OwotICAgIEludFNpemUgc2l6ZUZvclN5c3RlbUZvbnQoUmVu
ZGVyU3R5bGUmLCBjb25zdCBJbnRTaXplKiBzaXplcykgY29uc3Q7Ci0gICAgdm9pZCBzZXRGb250
RnJvbUNvbnRyb2xTaXplKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIE5TQ29udHJvbFNp
emUpIGNvbnN0OwotCi0gICAgLy8gSGVscGVycyBmb3IgYWRqdXN0aW5nIGFwcGVhcmFuY2UgYW5k
IGZvciBwYWludGluZwotICAgIGNvbnN0IEludFNpemUqIGNoZWNrYm94U2l6ZXMoKSBjb25zdDsK
LSAgICBjb25zdCBpbnQqIGNoZWNrYm94TWFyZ2lucyhOU0NvbnRyb2xTaXplKSBjb25zdDsKLQot
ICAgIGNvbnN0IEludFNpemUqIHJhZGlvU2l6ZXMoKSBjb25zdDsKLSAgICBjb25zdCBpbnQqIHJh
ZGlvTWFyZ2lucyhOU0NvbnRyb2xTaXplKSBjb25zdDsKLQotICAgIHZvaWQgc2V0QnV0dG9uUGFk
ZGluZ0Zyb21Db250cm9sU2l6ZShSZW5kZXJTdHlsZSYsIE5TQ29udHJvbFNpemUpIGNvbnN0Owot
ICAgIGNvbnN0IEludFNpemUqIGJ1dHRvblNpemVzKCkgY29uc3Q7Ci0gICAgY29uc3QgaW50KiBi
dXR0b25NYXJnaW5zKE5TQ29udHJvbFNpemUpIGNvbnN0OwotCi0gICAgY29uc3QgSW50U2l6ZSog
cG9wdXBCdXR0b25TaXplcygpIGNvbnN0OwotICAgIGNvbnN0IGludCogcG9wdXBCdXR0b25NYXJn
aW5zKE5TQ29udHJvbFNpemUpIGNvbnN0OwotICAgIGNvbnN0IGludCogcG9wdXBCdXR0b25QYWRk
aW5nKE5TQ29udHJvbFNpemUpIGNvbnN0OwotICAgIHZvaWQgcGFpbnRNZW51TGlzdEJ1dHRvbkdy
YWRpZW50cyhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRS
ZWN0Jik7Ci0gICAgY29uc3QgSW50U2l6ZSogbWVudUxpc3RTaXplcygpIGNvbnN0OwotCi0gICAg
Y29uc3QgSW50U2l6ZSogc2VhcmNoRmllbGRTaXplcygpIGNvbnN0OwotICAgIGNvbnN0IEludFNp
emUqIGNhbmNlbEJ1dHRvblNpemVzKCkgY29uc3Q7Ci0gICAgY29uc3QgSW50U2l6ZSogcmVzdWx0
c0J1dHRvblNpemVzKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTZWFyY2hGaWVsZFNpemUoUmVuZGVy
U3R5bGUmKSBjb25zdDsKLQotICAgIFRoZW1lQ29udHJvbFN0YXRlIGRldGVybWluZVN0YXRlKGNv
bnN0IFJlbmRlck9iamVjdCYpIGNvbnN0OwotCi0gICAgU3RyaW5nIG1fbWVkaWFDb250cm9sc1Nj
cmlwdDsKLSAgICBTdHJpbmcgbV9tZWRpYUNvbnRyb2xzU3R5bGVTaGVldDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICNpZiBVU0UoU0FGQVJJX1RIRU1FKQotCi0j
ZW5kaWYgLy8gUmVuZGVyVGhlbWVTYWZhcmlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVXaW4uaAppbmRleCBhZWI0MzhmMDE1N2FhOTI4Y2YzMmQ0NjU5MmFhYjAzOTU1YTEy
Y2YyLi5jYzgzOGVmMTQzYjljMGJjZWY2ZTRkYmQ0MTE1MmI3YmE5ZTc4NWI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaApAQCAtNDcsMTIgKzQ3LDEyIEBAIHN0
cnVjdCBUaGVtZURhdGEgewogICAgIHVuc2lnbmVkIG1fY2xhc3NpY1N0YXRlOwogfTsKIAotY2xh
c3MgUmVuZGVyVGhlbWVXaW4gOiBwdWJsaWMgUmVuZGVyVGhlbWUgeworY2xhc3MgUmVuZGVyVGhl
bWVXaW4gZmluYWw6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwogCi0gICAgdmlydHVhbCBTdHJpbmcgZXh0
cmFEZWZhdWx0U3R5bGVTaGVldCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhUXVpcmtzU3R5
bGVTaGVldCgpOworICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIFN0cmluZyBleHRyYVF1aXJrc1N0eWxlU2hlZXQoKSBvdmVy
cmlkZTsKIAogICAgIC8vIEEgbWV0aG9kIGFza2luZyBpZiB0aGUgdGhlbWUncyBjb250cm9scyBh
Y3R1YWxseSBjYXJlIGFib3V0IHJlZHJhd2luZyB3aGVuIGhvdmVyZWQuCiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzSG92ZXIoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKaW5kZXggZWE2MDhlYzgxNjYwYmIwNDc3
MTVjMzkyZWM0Y2Q3NGMwZjc1NjcwNC4uNzQ4MjRiN2M2OWIzOWEzM2MxZTAyMzY5ZWU4Mzc3MzE0
ZTBjYzA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVv
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKQEAgLTUwLDM3
ICs1MCwzNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRp
bmcoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGREaXNwbGF5VmlkZW8oKSBjb25z
dDsKKyAgICBib29sIHNob3VsZERpc3BsYXlWaWRlbygpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IHZvaWQgbWVkaWFFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQo
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIExh
eW91dFNpemUgY2FsY3VsYXRlSW50cmluc2ljU2l6ZSgpOwogICAgIHZvaWQgdXBkYXRlSW50cmlu
c2ljU2l6ZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQ
dHIsIGNvbnN0IEludFJlY3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBw
ZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclZpZGVvIjsgfQorICAg
IHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJSZW5kZXJWaWRlbyI7IH0KIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZGVvKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1ZpZGVvKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFj
ZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVy
cmlkZTsKIAogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lk
dGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCAgPSBDb21wdXRlQWN0dWFsKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCgp
IGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVp
Z2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1pbmltdW1SZXBs
YWNlZEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRMZWZ0KCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBMYXlvdXRVbml0IG9mZnNldFRvcCgpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBv
ZmZzZXRXaWR0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRIZWlnaHQo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0TGVmdCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRUb3AoKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0V2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5k
aWYKIAogICAgIHZvaWQgdXBkYXRlUGxheWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRBdXRvc2l6ZXIuaAppbmRleCBiZmZkMjJjZDJhZjZiYmI5YzM0NTE5OThlZTYzYzM4ZTRlZmE1
MzIxLi4yNzVmODY2ZTc1OTg1Zjg2ZDYwNmZmMjY4YTIwNmQ5ODcxZWYzNWVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmgKQEAgLTQxLDEyICs0MSwxMiBAQCBjbGFz
cyBSZW5kZXJUZXh0Owogc3RydWN0IFRleHRBdXRvc2l6aW5nV2luZG93SW5mbzsKIHN0cnVjdCBU
ZXh0QXV0b3NpemluZ0NsdXN0ZXJJbmZvOwogCi1jbGFzcyBUZXh0QXV0b3NpemVyIHsKK2NsYXNz
IFRleHRBdXRvc2l6ZXIgZmluYWwgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHRBdXRv
c2l6ZXIpOwogCiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVGV4dEF1dG9zaXplcihEb2N1bWVudCop
OwotICAgIHZpcnR1YWwgflRleHRBdXRvc2l6ZXIoKTsKKyAgICB+VGV4dEF1dG9zaXplcigpOwog
CiAgICAgYm9vbCBwcm9jZXNzU3VidHJlZShSZW5kZXJPYmplY3QqIGxheW91dFJvb3QpOwogICAg
IHZvaWQgcmVjYWxjdWxhdGVNdWx0aXBsaWVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oCmluZGV4IGNiODk1NzZl
ZmZkNTQ4NThiNDAwOTZjZjVmZmZiZTEyNTJjMTVmYmQuLmEzNDczZWVhODNhZDNjZDU3ODRmMjQ5
ZmJjYTQzZDRmYWNiN2E2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
cmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGlj
OgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGZsb2F0IHZpcnR1YWxMb2dpY2FsSGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgZmxvYXQgdmlydHVhbExvZ2lj
YWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmgKaW5kZXggYzk0YTIxZDdkYmMyNzRlOTgzZGI4ZTc2MGYyZjUxMDYy
N2EwNGFlMS4uZjhmMTJhOGZhM2JhMTQzNDc1OGVmYjdmZDRiYmMzYzcwYzUzZWQ4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2su
aApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKICAgICAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29s
IGlzUmVuZGVyTWF0aE1MVGFibGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MVGFibGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTFRhYmxlIjsgfQogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5j
bG9zZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5j
bG9zZS5oCmluZGV4IDQzYjQ2MzQ4MWI5ZDQzOTZhZDI4NWQ5ZjBmYjI0MmE2YTY4ZTFiZmUuLjc2
OTg0ODk5YmI5MDQ0N2U1OTRlMmEyZmEyMmFjOGE0NjJjMTliNmIgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmgKQEAg
LTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIFJlbmRlck1hdGhNTE1lbmNsb3NlKEVsZW1lbnQm
LCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlck1hdGhNTE1lbmNsb3NlIjsg
fQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJNYXRoTUxNZW5jbG9zZSI7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlTG9naWNhbEhlaWdodCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhZGRD
aGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0g
bnVsbHB0cikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKaW5kZXggZDRiNjlkOGY1MTE1NjYxMThhNTJj
MjIwYzE1Y2ZlOGExZTFjYjJiYS4uMzY5OWI3MWNkNjg4NmE3NGMzNDBkOTc3M2Q5YzkwMDRkYmYz
ZjZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxPcGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuaApAQCAtNzIsMTIgKzcyLDEyIEBAIHB1YmxpYzoKICAgICAvLyBG
SVhNRTogVGhlIGRpc3BsYXlzdHlsZSBwcm9wZXJ0eSBpcyBub3QgaW1wbGVtZW50ZWQgKGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg3MzcpLgogICAgIGJvb2wgaXNM
YXJnZU9wZXJhdG9ySW5EaXNwbGF5U3R5bGUoKSBjb25zdCB7IHJldHVybiAhaGFzT3BlcmF0b3JG
bGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6U3RyZXRjaHkpICYmIGhhc09wZXJhdG9yRmxh
ZyhNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkxhcmdlT3ApOyB9CiAKLSAgICB2b2lkIHVwZGF0
ZVN0eWxlKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN0eWxlKCkg
b3ZlcnJpZGUgZmluYWw7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIHZvaWQgdXBkYXRlVG9rZW5Db250ZW50KGNvbnN0IFN0
cmluZyYgb3BlcmF0b3JTdHJpbmcpOwotICAgIHZvaWQgdXBkYXRlVG9rZW5Db250ZW50KCkgb3Zl
cnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRva2VuQ29udGVudCgpIG92ZXJy
aWRlIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlT3BlcmF0b3JQcm9wZXJ0aWVzKCk7CiAgICAgdm9p
ZCBzZXRPcGVyYXRvckZsYWdBbmRTY2hlZHVsZUxheW91dElmTmVlZGVkKE1hdGhNTE9wZXJhdG9y
RGljdGlvbmFyeTo6RmxhZywgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSk7CiAg
ICAgTGF5b3V0VW5pdCB0cmFpbGluZ1NwYWNlRXJyb3IoKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJh
dG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQogICAgIHZvaWQgcmVidWlsZFRva2VuQ29u
dGVudChjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nKTsKLSAgICB2b2lkIHVwZGF0ZUZyb21F
bGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkg
b3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZEFsbG93U3RyZXRjaGluZygpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJh
ZGljYWxPcGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSYWRpY2FsT3BlcmF0b3IuaAppbmRleCBlY2NkNjFjODRkY2RmOTkyMDczNDU3YmQzMzcy
M2MxMzM4YjgzM2RmLi41YTJhNzlmYzY2YWExNTg4YTFkNGY0ZThkNjdhNzViYjRiZmQ4YjljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJh
ZGljYWxPcGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yIGZpbmFsIDogcHVibGlj
IFJlbmRlck1hdGhNTE9wZXJhdG9yIHsKIHB1YmxpYzoKICAgICBSZW5kZXJNYXRoTUxSYWRpY2Fs
T3BlcmF0b3IoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Ci0gICAgdmlydHVhbCB2
b2lkIHN0cmV0Y2hUbyhMYXlvdXRVbml0IGhlaWdodEFib3ZlQmFzZWxpbmUsIExheW91dFVuaXQg
ZGVwdGhCZWxvd0Jhc2VsaW5lKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZXRjaFRvKExheW91dFVu
aXQgaGVpZ2h0QWJvdmVCYXNlbGluZSwgTGF5b3V0VW5pdCBkZXB0aEJlbG93QmFzZWxpbmUpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRV
bml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENv
bXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkgb3ZlcnJpZGU7CkBAIC00
NCw3ICs0NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVy
TWF0aE1MUmFkaWNhbE9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGlzQW5vbnltb3VzKCkgPyAiUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yIChhbm9ueW1v
dXMpIiA6ICJSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IiOyB9Ci0gICAgdm9pZCBzZXRPcGVy
YXRvclByb3BlcnRpZXMoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0b3JQ
cm9wZXJ0aWVzKCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCmlu
ZGV4IGFmMDAwYTcyYzM5MzcwYWVjMmYzODIyNWRlNTk2NTNjNWNjY2JlOGMuLjhhYzQ4ZDQ1MTk1
MTA5NzM0OTkyNjBjMjU3M2VlN2FjMDAxZmQ0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCkBAIC03Myw3ICs3Myw3IEBAIHBy
aXZhdGU6CiB9OwogCiAvLyBUaGVzZSBhcmUgc3BlY2lmaWMgd3JhcHBlcnMgZm9yIHRoZSBpbmRl
eCBhbmQgYmFzZSwgdGhhdCBhc2sgdGhlIHBhcmVudCB0byByZXN0cnVjdHVyZSB0aGUgcmVuZGVy
ZXJzIGFmdGVyIGNoaWxkIHJlbW92YWwuCi1jbGFzcyBSZW5kZXJNYXRoTUxSb290V3JhcHBlciA6
IHB1YmxpYyBSZW5kZXJNYXRoTUxSb3cgeworY2xhc3MgUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIg
ZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MUm93IHsKIAogZnJpZW5kIGNsYXNzIFJlbmRlck1h
dGhNTFJvb3Q7CiAKQEAgLTgzLDkgKzgzLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFJl
bmRlck9iamVjdCogcmVtb3ZlQ2hpbGRXaXRob3V0UmVzdHJ1Y3R1cmluZyhSZW5kZXJPYmplY3Qm
KTsKLSAgICBSZW5kZXJPYmplY3QqIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBv
dmVycmlkZTsKICAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyPiBj
cmVhdGVBbm9ueW1vdXNXcmFwcGVyKFJlbmRlck1hdGhNTFJvb3QqIHJlbmRlck9iamVjdCk7Ci0g
ICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1M
Um9vdFdyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRl
ck1hdGhNTFJvb3RXcmFwcGVyIjsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgKaW5kZXggYmE1ZGY4ODI1N2Q2OGRiZDE0MDIx
NDZjMWNlMGVmNWEwNzc4NzAyNy4uYjg3ZDk2NDA0YzgyMWJjMmM4NzUwODVjMzc5ODhlNmQwZjBl
ZTQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFJvdy5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZU9wZXJh
dG9yUHJvcGVydGllcygpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgp
OworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxSb3coKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFNjcmlwdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MU2NyaXB0cy5oCmluZGV4IDc1NDI2NzgyZTBkNGU1MjNmNzYwOTI3MTc4ZDBm
YjIzMjI4OWU1ZmEuLjFiNWU3MWQ2NjYxMjNhYjU5ZjdkM2ZlZmMzNzg4ZjBkNGM3MDM1MzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2Ny
aXB0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U2NyaXB0cy5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNs
YXNzIFJlbmRlck1hdGhNTFNjcmlwdHM7CiAKLWNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHNXcmFw
cGVyIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKK2NsYXNzIFJlbmRlck1hdGhNTFNjcmlw
dHNXcmFwcGVyIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIAogZnJpZW5kIGNs
YXNzIFJlbmRlck1hdGhNTFNjcmlwdHM7CiAKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKIH07
CiAKIC8vIFJlbmRlciBhIGJhc2Ugd2l0aCBzY3JpcHRzLgotY2xhc3MgUmVuZGVyTWF0aE1MU2Ny
aXB0cyA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CitjbGFzcyBSZW5kZXJNYXRoTUxTY3Jp
cHRzIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIAogZnJpZW5kIGNsYXNzIFJl
bmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyOwogCkBAIC03NSwxNyArNzUsMTcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmpl
Y3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwg
UmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpOworICAgIHZpcnR1
YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
IHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lk
IGxheW91dCgpIG92ZXJyaWRlOwogICAgIAogcHJpdmF0ZToKICAgICB2b2lkIGFkZENoaWxkSW50
ZXJuYWwoYm9vbCBub3JtYWxJbnNlcnRpb24sIFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9i
amVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKICAgICBSZW5kZXJPYmplY3QqIHJlbW92ZUNoaWxkSW50
ZXJuYWwoYm9vbCBub3JtYWxSZW1vdmFsLCBSZW5kZXJPYmplY3QmIGNoaWxkKTsKIAotICAgIHZp
cnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFNjcmlwdHMoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MU2NyaXB0cygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MU2NyaXB0
cyI7IH0KIAogICAgIHZvaWQgZml4QW5vbnltb3VzU3R5bGVGb3JTdWJTdXBQYWlyKFJlbmRlck9i
amVjdCogc3ViU3VwUGFpciwgYm9vbCBpc1Bvc3RTY3JpcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCmluZGV4IGY1YWQ1YmJh
MDRmMGI1MWIwMDY5MWIxYmUyODQyODhkZmJlMzE2MjguLjBhNGQ2NGFmY2RiZDcyYTZhYmJjMjc2
N2ZkNjFiMjhjOGQxNmMzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKQEAgLTQxLDE2ICs0MSwxNiBAQCBwdWJsaWM6CiAK
ICAgICBNYXRoTUxUZXh0RWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE1h
dGhNTFRleHRFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCi0gICAgdmlydHVh
bCBib29sIGlzUmVuZGVyTWF0aE1MVG9rZW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9i
amVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVRva2VuQ29udGVudCgpOwotICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKIAogcHJvdGVj
dGVkOgogICAgIHZvaWQgY3JlYXRlV3JhcHBlcklmTmVlZGVkKCk7CiAKIHByaXZhdGU6CisgICAg
dmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MVG9rZW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJNYXRoTUxUb2tlbiAo
YW5vbnltb3VzKSIgOiAiUmVuZGVyTWF0aE1MVG9rZW4iOyB9CiAgICAgdmlydHVhbCB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3R5bGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5o
CmluZGV4IGJkZTU5MTU2Nzg3ODhjMTU4NjBkOGYwZGRiOTk0Mjk3NWY5M2I3OTkuLjZmNjUzZDUx
YzAwODBhZjgwMGJmZmI0ODk0YTc0YTkwMzdjZjY2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaApAQCAtMzIs
MTYgKzMyLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLWNsYXNzIFJlbmRlck1h
dGhNTFVuZGVyT3ZlciA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CitjbGFzcyBSZW5kZXJN
YXRoTUxVbmRlck92ZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVibGlj
OgogICAgIFJlbmRlck1hdGhNTFVuZGVyT3ZlcihFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4pOwogICAgIAotICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNo
ZWRPcGVyYXRvcigpOworICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxs
aXNoZWRPcGVyYXRvcigpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKICAgICAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFVuZGVyT3ZlcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvQm94U2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
Qm94U2hhcGUuaAppbmRleCA4MDliYTgyNDQ2ODg2NjA5NzBlMjNmZTYxYWRkOGNiNGNmYzgwZWFh
Li5jMmIxNzcxMzdjMzc1YTI2YTVkYmQ2YzFlMjc1ZDk1NTk4MWY5MzE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNz
IFJlbmRlckJveDsKIAogUm91bmRlZFJlY3QgY29tcHV0ZVJvdW5kZWRSZWN0Rm9yQm94U2hhcGUo
Q1NTQm94VHlwZSwgY29uc3QgUmVuZGVyQm94Jik7CiAKLWNsYXNzIEJveFNoYXBlIDogcHVibGlj
IFNoYXBlIHsKK2NsYXNzIEJveFNoYXBlIGZpbmFsIDogcHVibGljIFNoYXBlIHsKIHB1YmxpYzoK
ICAgICBCb3hTaGFwZShjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBib3VuZHMpCiAgICAgICAgIDog
bV9ib3VuZHMoYm91bmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9Qb2x5Z29uU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9s
eWdvblNoYXBlLmgKaW5kZXggNDRmZTYyOTdhZGVkMmU4YWE4YzkyYjVjZDY5NTczMjI5MTg0ZmEx
Ni4uYWU1MGIwZjdlMWQwODgyMTk5ZTRiNmIwZTJmMzU2Mjg5OTAyYjllMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oCkBAIC0zNiw3ICszNiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgT2Zmc2V0UG9seWdvbkVkZ2UgOiBw
dWJsaWMgVmVydGV4UGFpciB7CitjbGFzcyBPZmZzZXRQb2x5Z29uRWRnZSBmaW5hbCA6IHB1Ymxp
YyBWZXJ0ZXhQYWlyIHsKIHB1YmxpYzoKICAgICBPZmZzZXRQb2x5Z29uRWRnZShjb25zdCBGbG9h
dFBvbHlnb25FZGdlJiBlZGdlLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCkKICAgICAgICAgOiBt
X3ZlcnRleDEoZWRnZS52ZXJ0ZXgxKCkgKyBvZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKaW5kZXggYjdiMDEzNTZhZDQ5MmQwMjIwMzk0MGI5
YWYzZjQ5YmE1YWNhZWQ2Mi4uYzA5YjUyZWM1NjhkNTYxOTU2YWJhYzUyNGY4ZTc1ZjI2ZTdiNjJj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFw
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaApA
QCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIGludCBtX29mZnNldDsKIH07CiAKLWNsYXNz
IFJhc3RlclNoYXBlIDogcHVibGljIFNoYXBlIHsKK2NsYXNzIFJhc3RlclNoYXBlIGZpbmFsIDog
cHVibGljIFNoYXBlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSYXN0ZXJTaGFwZSk7CiBw
dWJsaWM6CiAgICAgUmFzdGVyU2hhcGUoc3RkOjp1bmlxdWVfcHRyPFJhc3RlclNoYXBlSW50ZXJ2
YWxzPiBpbnRlcnZhbHMsIGNvbnN0IEludFNpemUmIG1hcmdpblJlY3RTaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oCmluZGV4IGYwZTNm
MGY3N2E1N2NkZjU1MTVkNmZmN2I5M2ZiMDc5NDNhMTNlNjguLmIwMzYxYzYxMjIyNzExNDViNTll
NzkyYTg2YWMxNGZlMDhmY2Q2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1JlY3RhbmdsZVNoYXBlLmgKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBSZWN0YW5nbGVTaGFwZSA6IHB1YmxpYyBTaGFwZSB7CitjbGFzcyBS
ZWN0YW5nbGVTaGFwZSBmaW5hbCA6IHB1YmxpYyBTaGFwZSB7CiBwdWJsaWM6CiAgICAgUmVjdGFu
Z2xlU2hhcGUoY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0U2l6ZSYgcmFkaWkp
CiAgICAgICAgIDogbV9ib3VuZHMoYm91bmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaAppbmRleCBjYjc3Y2NlNjZhY2JmY2NjYzA3OThiZWZlNjQ5Zjhl
MDYyMTliM2VkLi40OTQ4ZGYxNzlmNTkxY2Y0OTU0YzM1ZGNmNGZlYzgyODdiMGRiMjU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaApAQCAtMTQ1LDcg
KzE0NSw3IEBAIHByaXZhdGU6CiAKIH07CiAKLWNsYXNzIEJhc2ljU2hhcGVDaXJjbGUgOiBwdWJs
aWMgQmFzaWNTaGFwZSB7CitjbGFzcyBCYXNpY1NoYXBlQ2lyY2xlIGZpbmFsIDogcHVibGljIEJh
c2ljU2hhcGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhc2ljU2hhcGVDaXJj
bGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY1NoYXBlQ2lyY2xlKTsgfQog
CkBAIC0xNzAsNyArMTcwLDcgQEAgcHJpdmF0ZToKICAgICBCYXNpY1NoYXBlUmFkaXVzIG1fcmFk
aXVzOwogfTsKIAotY2xhc3MgQmFzaWNTaGFwZUVsbGlwc2UgOiBwdWJsaWMgQmFzaWNTaGFwZSB7
CitjbGFzcyBCYXNpY1NoYXBlRWxsaXBzZSBmaW5hbCA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY1NoYXBlRWxsaXBzZT4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljU2hhcGVFbGxpcHNlKTsgfQogCkBAIC0xOTgsNyAr
MTk4LDcgQEAgcHJpdmF0ZToKICAgICBCYXNpY1NoYXBlUmFkaXVzIG1fcmFkaXVzWTsKIH07CiAK
LWNsYXNzIEJhc2ljU2hhcGVQb2x5Z29uIDogcHVibGljIEJhc2ljU2hhcGUgeworY2xhc3MgQmFz
aWNTaGFwZVBvbHlnb24gZmluYWwgOiBwdWJsaWMgQmFzaWNTaGFwZSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8QmFzaWNTaGFwZVBvbHlnb24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBCYXNpY1NoYXBlUG9seWdvbik7IH0KIApAQCAtMjI0LDcgKzIyNCw3IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPExlbmd0aD4gbV92YWx1ZXM7CiB9OwogCi1jbGFzcyBCYXNpY1No
YXBlSW5zZXQgOiBwdWJsaWMgQmFzaWNTaGFwZSB7CitjbGFzcyBCYXNpY1NoYXBlSW5zZXQgZmlu
YWwgOiBwdWJsaWMgQmFzaWNTaGFwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
QmFzaWNTaGFwZUluc2V0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNTaGFw
ZUluc2V0KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVQZW5kaW5nSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVBlbmRpbmdJbWFnZS5oCmluZGV4IDU2NzNiMDc5N2Y5M2JmNDA1N2VkNzQ3OTk1MjQ3ZTRjOGI4
ZjU0MDIuLmI0ZDE5MTAyM2JjZTMzZDQ0NjM3Zjk0MTM1MzA0OTRiYWMyMTQ1NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCkBA
IC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHN0eWxlIHJlc29sdXRpb24s
IGluIG9yZGVyIHRvIGF2b2lkIGxvYWRpbmcgaW1hZ2VzIHRoYXQgYXJlIG5vdCByZWZlcmVuY2Vk
IGJ5IHRoZSBmaW5hbCBzdHlsZS4KIC8vIFRoZXkgc2hvdWxkIG5ldmVyIGV4aXN0IGluIGEgUmVu
ZGVyU3R5bGUgYWZ0ZXIgaXQgaGFzIGJlZW4gcmV0dXJuZWQgZnJvbSB0aGUgc3R5bGUgc2VsZWN0
b3IuCiAKLWNsYXNzIFN0eWxlUGVuZGluZ0ltYWdlIDogcHVibGljIFN0eWxlSW1hZ2UgeworY2xh
c3MgU3R5bGVQZW5kaW5nSW1hZ2UgZmluYWwgOiBwdWJsaWMgU3R5bGVJbWFnZSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVQZW5kaW5nSW1hZ2U+IGNyZWF0ZShDU1NWYWx1
ZSogdmFsdWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVBlbmRpbmdJbWFnZSh2YWx1ZSkp
OyB9CiAKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBp
bWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCosIGZsb2F0IC8qbXVsdGlwbGllciovKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBGbG9hdFNpemUoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBpbWFn
ZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lv
bnMoY29uc3QgUmVuZGVyRWxlbWVudCosIExlbmd0aCYgLyogaW50cmluc2ljV2lkdGggKi8gLCBM
ZW5ndGgmIC8qIGludHJpbnNpY0hlaWdodCAqLywgRmxvYXRTaXplJiAvKiBpbnRyaW5zaWNSYXRp
byAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNv
bnN0IFJlbmRlckVsZW1lbnQqLCBMZW5ndGgmIC8qIGludHJpbnNpY1dpZHRoICovICwgTGVuZ3Ro
JiAvKiBpbnRyaW5zaWNIZWlnaHQgKi8sIEZsb2F0U2l6ZSYgLyogaW50cmluc2ljUmF0aW8gKi8p
IG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNp
emUmLCBmbG9hdCkgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChSZW5k
ZXJFbGVtZW50Kikgb3ZlcnJpZGUgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0Jsb2NrLmgKaW5kZXggN2E0ZmRmOGI1MzY5ODZmMmU4ZDEzMmMzMzY4NDAyYjRk
MWQ1MmRkMy4uZGRjNWI5MjZkNWJmMTEwMDllZDVhZjg5NzQ2NDA1YjUzMWIyZDgzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaApAQCAtNDMsNyAr
NDMsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21TdHlsZSgpIG92
ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyU1ZHQmxvY2soKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9OworICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bmRlclNWR0Jsb2NrKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKaW5kZXggNDI5NThkNGVjMmFi
YmM5OWRhNTBkODI0OGEwODA2ZGNlZjMzMDNmNy4uODcyNTNhZGNjNzEwNDY3YTU3ZDEwMDkwZjc1
MDQ2YmQ4NmUxMjhmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0NvbnRhaW5lci5oCkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoK
ICAgICBSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1NWR0NvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHQ29udGFpbmVyIjsgfQogCiAgICAg
dmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KQEAgLTczLDYgKzcyLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgdXBkYXRl
Q2FjaGVkQm91bmRhcmllcygpOwogCiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1NWR0Nv
bnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIEZs
b2F0UmVjdCBtX29iamVjdEJvdW5kaW5nQm94OwogICAgIGJvb2wgbV9vYmplY3RCb3VuZGluZ0Jv
eFZhbGlkOwogICAgIEZsb2F0UmVjdCBtX3N0cm9rZUJvdW5kaW5nQm94OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaAppbmRleCBkNjJhNTYwNGVh
YmUzNjk4Zjk5MTMzYTIxNTQwNTQzYmRmZmNmMjBkLi4zMDI3ZjEwYzBlZGU4ODdkZDBjZmVlZDJj
ZTAyODNlZTcwNTNjMjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0VsbGlwc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0VsbGlwc2UuaApAQCAtMzcsMTUgKzM3LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5SZW5kZXJTVkdFbGxpcHNlKCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR0VsbGlwc2UiOyB9CisgICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlclNWR0VsbGlwc2UiOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2hhcGVGcm9t
RWxlbWVudCgpOwotICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV91
c2VQYXRoRmFsbGJhY2sgPyBSZW5kZXJTVkdTaGFwZTo6aXNFbXB0eSgpIDogbV9maWxsQm91bmRp
bmdCb3guaXNFbXB0eSgpOyB9OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVt
ZW50KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3VzZVBhdGhGYWxsYmFjayA/IFJlbmRlclNWR1NoYXBlOjppc0VtcHR5KCkg
OiBtX2ZpbGxCb3VuZGluZ0JveC5pc0VtcHR5KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5k
ZXJpbmdEaXNhYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hh
cGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBl
KEdyYXBoaWNzQ29udGV4dCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVu
dFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hh
cGVEZXBlbmRlbnRGaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFdpbmRSdWxl
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNv
bnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRl
eHQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRTdHJv
a2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29s
IHNoYXBlRGVwZW5kZW50RmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBXaW5k
UnVsZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYWxjdWxhdGVSYWRpaUFuZENlbnRlcigp
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ZvcmVpZ25PYmplY3QuaAppbmRleCA0ZTY3Y2FlOTJkM2Q1MmJiODRhYTI1NDA5Yzcw
YTc3Y2FhOTE3MjBkLi5jNzViYmZmMTRkYTQ4OTQyOGNiOTdmOGQ0MDdkYWU0YzAwNmM0N2QzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25P
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuaApAQCAtMzcsMzUgKzM3LDM1IEBAIHB1YmxpYzoKIAogICAgIFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50JiBmb3JlaWduT2JqZWN0RWxlbWVudCgpIGNvbnN0OwogCi0gICAgdmlydHVh
bCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wg
Zml4ZWQgPSBmYWxzZSkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWly
ZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGxheW91
dCgpOworICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIG1fdmlld3BvcnQuc2l6ZSgpKTsgfQotICAgIHZpcnR1YWwg
RmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgbV92aWV3cG9ydC5zaXplKCkpOyB9Ci0gICAgdmlydHVhbCBGbG9hdFJlY3Qg
cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBtX3ZpZXdwb3J0LnNpemUoKSk7IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVj
dCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIG1fdmlld3BvcnQuc2l6ZSgpKTsgfQorICAgIHZpcnR1YWwgRmxvYXRSZWN0
IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgbV92aWV3cG9ydC5zaXplKCkpOyB9CisgICAgdmlydHVhbCBGbG9hdFJlY3Qg
cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3ZpZXdwb3J0LnNpemUoKSk7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJl
c3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pOwor
ICAgIHZpcnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0Jiwg
SGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RB
Y3Rpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0
aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0
VGVzdEFjdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzU1ZHRm9yZWlnbk9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRv
Q29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncyA9IEFwcGx5Q29udGFpbmVyRmxp
cCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGNvbnN0
IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9u
ZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNU
cmFuc2Zvcm1VcGRhdGUoKSBvdmVycmlkZSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVl
OyB9CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzU1ZHRm9yZWlnbk9iamVjdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgp
IGNvbnN0ID0gZGVsZXRlOwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdGb3JlaWduT2JqZWN0IjsgfQogCiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91
dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVu
dFRyYW5zZm9ybSgpIGNvbnN0OwotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsVHJh
bnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQorICAgIHZpcnR1YWwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAKICAgICBib29sIG1fbmVl
ZHNUcmFuc2Zvcm1VcGRhdGUgOiAxOwogICAgIEZsb2F0UmVjdCBtX3ZpZXdwb3J0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCmluZGV4IDg2MWQxMzIy
YTcxMjkyNTBlYWQwYWY5MmYyN2E0YjIwMmMwYjQ0MDcuLjAxM2EwNGY1OGIwNDZhMDQ2YmY0ZjUy
YzU2MDdmOWJmYWRkNTJlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmgKQEAgLTQyLDkgKzQyLDkgQEAgcHVibGljOgogICAgIFNWR0ltYWdlRWxl
bWVudCYgaW1hZ2VFbGVtZW50KCkgY29uc3Q7CiAKICAgICBib29sIHVwZGF0ZUltYWdlVmlld3Bv
cnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCkgeyBtX25l
ZWRzQm91bmRhcmllc1VwZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNC
b3VuZGFyaWVzVXBkYXRlKCkgb3ZlcnJpZGUgeyBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSA9IHRy
dWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNCb3VuZGFyaWVzVXBkYXRlKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9
CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgb3ZlcnJpZGUgeyBt
X25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQogCiAgICAgUmVuZGVySW1hZ2VSZXNvdXJj
ZSYgaW1hZ2VSZXNvdXJjZSgpIHsgcmV0dXJuICptX2ltYWdlUmVzb3VyY2U7IH0KICAgICBjb25z
dCBSZW5kZXJJbWFnZVJlc291cmNlJiBpbWFnZVJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gKm1f
aW1hZ2VSZXNvdXJjZTsgfQpAQCAtNTUsMjkgKzU1LDI5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHSW1hZ2UiOyB9CisgICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlclNWR0ltYWdlIjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRy
ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVy
biBtX2xvY2FsVHJhbnNmb3JtOyB9CisgICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvY2Fs
VHJhbnNmb3JtOyB9CiAKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgp
IGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0KLSAgICB2aXJ0dWFsIEZsb2F0
UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdC
b3g7IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWludEJvdW5kaW5nQm94OyB9CisgICAgdmlydHVhbCBG
bG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX29i
amVjdEJvdW5kaW5nQm94OyB9CisgICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdC
b3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX29iamVjdEJvdW5kaW5nQm94OyB9CisgICAg
dmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3JlcGFpbnRCb3VuZGluZ0JveDsgfQogICAgIHZpcnR1YWwgRmxv
YXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzRXhjbHVkaW5nU1ZHU2hhZG93KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3hFeGNsdWRpbmdTaGFk
b3c7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVj
dD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXIgPSAwKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDAp
OworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJ
bnRSZWN0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgp
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYp
OworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgaW52YWxpZGF0ZUJ1ZmZlcmVkRm9yZWdyb3VuZCgpOwogCi0gICAgdmlydHVhbCBib29sIG5v
ZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbik7CisgICAgdmlydHVh
bCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVz
dWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbikgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5z
Zm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFu
c2Zvcm07IH0KICAgICB2b2lkIGNhbGN1bGF0ZUltYWdlVmlld3BvcnQoKTsKIAogICAgIGJvb2wg
bV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1BhdGguaAppbmRleCA0NGZkMTcyNjc1ZGFlMWRiYTEyZjcwZjdlYWJlNTcx
YjIzZGY5MzNkLi5lYTZlY2MyMzVlOThmNTg1MWEzNjUzYmFhMjFmNmVhZGY3NzhiZjMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaApAQCAtMzcsNyAr
MzcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzU1ZHUGF0aCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHUGF0aCI7IH0KKyAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyU1ZHUGF0aCI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50
KCkgb3ZlcnJpZGU7CiAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VCb3VuZGlu
Z0JveCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
Y3QuaAppbmRleCBmMDJkZmNmNzg3MzQ2ZWFkNjc0YjYyOGNjMDQxMTIzYjJhYTZmMmY3Li40ZGEx
YjNiOTgyYTMwYzBhOGEwYjQ0NWRmM2NjMWJmYTA5MDM3NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaApAQCAtNDMsMTUgKzQzLDE1IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgdm9pZCBncmFwaGljc0VsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsK
IAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJS
ZW5kZXJTVkdSZWN0IjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZWN0IjsgfQogCi0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlUGF0aEZhbGxiYWNrID8gUmVuZGVyU1ZHU2hhcGU6OmlzRW1w
dHkoKSA6IG1fZmlsbEJvdW5kaW5nQm94LmlzRW1wdHkoKTsgfTsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBpc0Vt
cHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sgPyBSZW5kZXJT
VkdTaGFwZTo6aXNFbXB0eSgpIDogbV9maWxsQm91bmRpbmdCb3guaXNFbXB0eSgpOyB9CiAgICAg
dmlydHVhbCBib29sIGlzUmVuZGVyaW5nRGlzYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGJvb2wgc2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50Jik7Ci0g
ICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50RmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0UG9p
bnQmLCBjb25zdCBXaW5kUnVsZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGZpbGxTaGFwZShH
cmFwaGljc0NvbnRleHQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Ryb2tl
U2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29s
IHNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudEZpbGxDb250YWlucyhjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgV2luZFJ1bGUpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IEZsb2F0UmVjdCBtX2lubmVyU3Ryb2tlUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCmluZGV4IGUwMDgwZTBk
NTI5NDBkOTE4YTA5OTY0OWY2NDBhM2U0MTlmOTJjNTcuLmNhMDcyY2FhZmMwOGVhMjRhMTRhNmNj
YmViOTgwYzdmZGQ4YTk2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBhcHBseUNsaXBwaW5nVG9Db250ZXh0KFJlbmRlckVsZW1lbnQmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0NvbnRleHQqKTsKICAgICB2
aXJ0dWFsIEZsb2F0UmVjdCByZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IFJlbmRlck9iamVjdCYp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VU
eXBlKCkgY29uc3QgeyByZXR1cm4gQ2xpcHBlclJlc291cmNlVHlwZTsgfQorICAgIHZpcnR1YWwg
UmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIENsaXBwZXJSZXNvdXJjZVR5cGU7IH0KICAgICAKICAgICBib29sIGhpdFRlc3RDbGlwQ29u
dGVudChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50Jik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaApp
bmRleCBlODVjNzk0NDAxZDA5ZTQ4NzBjYjEyYTE2NWJkN2M2YTFlNTc0OTJlLi45NWJkMTAwMmRj
MjUyZGZjM2NkOGNkOWJkNjRmMDYyNGJkMWI4NTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCkBAIC04Miw3ICs4
Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChSZW5k
ZXJPYmplY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclNW
R1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNlVHlw
ZTsgfQorICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJlbmRl
clNWR1Jlc291cmNlVHlwZSBzX3Jlc291cmNlVHlwZTsKIAogICAgIEZsb2F0UmVjdCBkcmF3aW5n
UmVnaW9uKFJlbmRlck9iamVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5o
CmluZGV4IDJmOGRhM2E5NjUxMWNmNjdiNjAxZTM5MWMzNjBiYTdlYzE2MmZhM2EuLmRmNDc1OThk
YmIzY2M2ZmMwNjM2NzFlZDg4NzY4MjYxNGFjNTlmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJp
bWl0aXZlLmgKQEAgLTM5LDEwICszOSw5IEBAIHB1YmxpYzoKICAgICBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmLCBQ
YXNzUmVmPFJlbmRlclN0eWxlPik7CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzJiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSopOwor
ICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJl
bmRlclN0eWxlKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUiOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlIjsg
fQogCiAgICAgLy8gVGhleSBkZXBlbmQgb24gdGhlIFJlbmRlck9iamVjdCBhcmd1bWVudCBvZiBS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZS4KICAgICBzdGF0aWMgRmxvYXRS
ZWN0IGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXJFZmZlY3QmKTsKQEAg
LTU1LDYgKzU0LDcgQEAgcHVibGljOgogICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlcio+KGZpbHRlciktPnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQodGhpcywgYXR0
cmlidXRlKTsKICAgICB9CiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291cmNl
RmlsdGVyUHJpbWl0aXZlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZv
aWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGll
bnQuaAppbmRleCBjMWY1MmI3ZGNkZTUxYjdkNGNlZjNmZGY5ZDhjZGVkNjliNDExM2YxLi44YWFk
M2ZmNDIxY2IyOTIwMDk2Njk0MWM1MTFmZDJiMTQ1NWMwMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFy
R3JhZGllbnQuaApAQCAtMzQsMTMgKzM0LDEzIEBAIHB1YmxpYzoKIAogICAgIFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudCYgbGluZWFyR3JhZGllbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93
bmNhc3Q8U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50PihSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
OjpncmFkaWVudEVsZW1lbnQoKSk7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VU
eXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CisgICAg
dmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KICAgICBzdGF0aWMgUmVuZGVyU1ZHUmVzb3Vy
Y2VUeXBlIHNfcmVzb3VyY2VUeXBlOwogCi0gICAgdmlydHVhbCBTVkdVbml0VHlwZXM6OlNWR1Vu
aXRUeXBlIGdyYWRpZW50VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZ3JhZGll
bnRVbml0cygpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUdyYWRpZW50VHJhbnNmb3Jt
KEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKSB7IHRyYW5zZm9ybSA9IG1fYXR0cmlidXRlcy5n
cmFkaWVudFRyYW5zZm9ybSgpOyB9CisgICAgdmlydHVhbCBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlIGdyYWRpZW50VW5pdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZXMu
Z3JhZGllbnRVbml0cygpOyB9CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUdyYWRpZW50VHJh
bnNmb3JtKEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKSBvdmVycmlkZSB7IHRyYW5zZm9ybSA9
IG1fYXR0cmlidXRlcy5ncmFkaWVudFRyYW5zZm9ybSgpOyB9CiAgICAgdmlydHVhbCBib29sIGNv
bGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYnVp
bGRHcmFkaWVudChHcmFkaWVudERhdGEqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYnVpbGRH
cmFkaWVudChHcmFkaWVudERhdGEqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZsb2F0UG9pbnQg
c3RhcnRQb2ludChjb25zdCBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMmKSBjb25zdDsKICAgICBG
bG9hdFBvaW50IGVuZFBvaW50KGNvbnN0IExpbmVhckdyYWRpZW50QXR0cmlidXRlcyYpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hcmtlci5oCmluZGV4IDYzNmEzNGVjYjkyZWQ4NzliMjZiMTliOTA5MzI5Y2E5YmJiMmVm
MjIuLjFhOGQwODM4Nzg4YmExZmNkODM2YzVkMDAzYzI4ZDAyNGMyYzY5ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2Vy
LmgKQEAgLTQ1LDExICs0NSwxMSBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsY3VsYXRlcyBtYXJrZXIg
Ym91bmRhcmllcywgbWFwcGVkIHRvIHRoZSB0YXJnZXQgZWxlbWVudCdzIGNvb3JkaW5hdGUgc3Bh
Y2UKICAgICBGbG9hdFJlY3QgbWFya2VyQm91bmRhcmllcyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IG1hcmtlclRyYW5zZm9ybWF0aW9uKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseVZp
ZXdwb3J0Q2xpcChQYWludEluZm8mKTsKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci0gICAg
dmlydHVhbCB2b2lkIGNhbGNWaWV3cG9ydCgpOworICAgIHZpcnR1YWwgdm9pZCBhcHBseVZpZXdw
b3J0Q2xpcChQYWludEluZm8mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNhbGNWaWV3cG9ydCgpIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0o
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVu
dFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFmZmluZVRyYW5zZm9ybSBtYXJrZXJU
cmFuc2Zvcm1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvcmlnaW4sIGZsb2F0IGFuZ2xlLCBmbG9h
dCBzdHJva2VXaWR0aCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHlSZXNvdXJjZShS
ZW5kZXJFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqJiwgdW5z
aWduZWQgc2hvcnQpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC01OSw3ICs1OSw3IEBA
IHB1YmxpYzoKICAgICBmbG9hdCBhbmdsZSgpIGNvbnN0OwogICAgIFNWR01hcmtlclVuaXRzVHlw
ZSBtYXJrZXJVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1hcmtlckVsZW1lbnQoKS5tYXJrZXJVbml0
cygpOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUo
KSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQorICAgIHZpcnR1YWwgUmVuZGVyU1ZH
UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNfcmVz
b3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlwZSBzX3Jlc291cmNl
VHlwZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAppbmRleCBhNTI3MjZlYjkyMTJjZTAwZGU0ZTVl
Zjc2MmI3ZjJmN2Y5YjNmOWRmLi44OWIzMDVmNmNiM2U1NDgxNzBmNDNiYmNhOTBjOTgxZjU1ZWIy
ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFza2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hc2tlci5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBTVkdVbml0
VHlwZXM6OlNWR1VuaXRUeXBlIG1hc2tVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1hc2tFbGVtZW50
KCkubWFza1VuaXRzKCk7IH0KICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIG1hc2tDb250
ZW50VW5pdHMoKSBjb25zdCB7IHJldHVybiBtYXNrRWxlbWVudCgpLm1hc2tDb250ZW50VW5pdHMo
KTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkg
Y29uc3QgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclNWR1Jl
c291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzX3Jlc291
cmNlVHlwZTsgfQogICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgc19yZXNvdXJjZVR5
cGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAppbmRleCBmNjZkNTU1Yjc1YjdhYzdkNjViNWM0
MGMzZWQ2NGI2OTUxNjhlZTRmLi5mMWZmYzQ0MzViOWEyZDZiOTRkZTljN2I3YThlMDIzZDk0OTYx
OTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgR3JhcGhpY3NDb250ZXh0
KiYsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSwgY29uc3QgUGF0aCosIGNvbnN0IFJlbmRl
clNWR1NoYXBlKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3VyY2VCb3Vu
ZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZSB7IHJldHVybiBGbG9hdFJlY3Qo
KTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkg
Y29uc3QgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclNWR1Jl
c291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzX3Jlc291
cmNlVHlwZTsgfQogICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgc19yZXNvdXJjZVR5
cGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCmluZGV4IDk2MjAzMjg5
N2YzNDc3NDkyZWNlMTA0YTNhNmNkMjBhNTM0OTM1MDQuLmY1YTY1NDM4Y2I0ZGM3ZmI1ZjA3ZWUw
Yjk1OTM1YTQ3ODkxMmMwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCkBAIC0zNiwx
MiArMzYsMTIgQEAgcHVibGljOgogCiAgICAgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50JiByYWRp
YWxHcmFkaWVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmdyYWRpZW50RWxlbWVudCgp
KTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkg
Y29uc3QgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclNWR1Jl
c291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzX3Jlc291
cmNlVHlwZTsgfQogICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgc19yZXNvdXJjZVR5
cGU7CiAKLSAgICB2aXJ0dWFsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0
cygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5ncmFkaWVudFVuaXRzKCk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgY2FsY3VsYXRlR3JhZGllbnRUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtJiB0
cmFuc2Zvcm0pIHsgdHJhbnNmb3JtID0gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VHJhbnNmb3JtKCk7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgYnVpbGRHcmFkaWVudChHcmFkaWVudERhdGEqKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlcy5ncmFkaWVudFVuaXRzKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlR3JhZGllbnRUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3Jt
JiB0cmFuc2Zvcm0pIG92ZXJyaWRlIHsgdHJhbnNmb3JtID0gbV9hdHRyaWJ1dGVzLmdyYWRpZW50
VHJhbnNmb3JtKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYnVpbGRHcmFkaWVudChHcmFkaWVudERh
dGEqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZsb2F0UG9pbnQgY2VudGVyUG9pbnQoY29uc3Qg
UmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzJikgY29uc3Q7CiAgICAgRmxvYXRQb2ludCBmb2NhbFBv
aW50KGNvbnN0IFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAppbmRleCBmZjU0OGVhYzk5MDkzZjNi
MzJjYzg1MWFlOTgxOTg5ZTdmZmQ0M2Q1Li5hY2U5MjNlZTI1OGYyMTFkZjYxYjkyNjdlYTQxODc2
MjgyNWY2ZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jv
b3QuaApAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRmxvYXRSZWN0IG9i
amVjdEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9vYmplY3RCb3VuZGlu
Z0JveDsgfQogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9zdHJva2VCb3VuZGluZ0JveDsgfQogICAgIHZpcnR1YWwgRmxv
YXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3g7IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBh
aW50UmVjdEluTG9jYWxDb29yZGluYXRlc0V4Y2x1ZGluZ1NWR1NoYWRvdygpIGNvbnN0IHsgcmV0
dXJuIG1fcmVwYWludEJvdW5kaW5nQm94RXhjbHVkaW5nU2hhZG93OyB9CisgICAgRmxvYXRSZWN0
IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzRXhjbHVkaW5nU1ZHU2hhZG93KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3hFeGNsdWRpbmdTaGFkb3c7IH0KIAogICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4u
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaAppbmRleCBl
OTcyY2JlYzVkY2ZkZDA0YjVhZmZlODljYTljNWNmYzk1MzE2NjViLi4zZmQ5Nzk3MTVkODY1ZTE3
YmNhNTRiZjRjNzYyMTkzODA0MzlkY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUU3Bhbi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwotICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdUU3Bh
biI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHVFNwYW4iOyB9CiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCmluZGV4IDA3YjE4MTNhNjNmMWZhY2JkNjE4
N2YxZDQyOTEwODhiODMxYzVhNTEuLmQ5NjBlN2UwYjUwODAwNzI2NWE4NWEwYWM3MGQzZjc2ODM3
YmVjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5o
CkBAIC0zOSwxMiArMzksMTIgQEAgcHVibGljOgogCiAgICAgU1ZHVGV4dEVsZW1lbnQmIHRleHRF
bGVtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3Qg
UmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TmVlZHNQb3NpdGlvbmluZ1ZhbHVlc1Vw
ZGF0ZSgpIHsgbV9uZWVkc1Bvc2l0aW9uaW5nVmFsdWVzVXBkYXRlID0gdHJ1ZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9uZWVkc1RyYW5zZm9ybVVw
ZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUo
KSBvdmVycmlkZSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CiAgICAgdm9pZCBz
ZXROZWVkc1RleHRNZXRyaWNzVXBkYXRlKCkgeyBtX25lZWRzVGV4dE1ldHJpY3NVcGRhdGUgPSB0
cnVlOyB9Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0
ZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29y
ZGluYXRlcygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIFJlbmRlclNWR1RleHQqIGxv
Y2F0ZVJlbmRlclNWR1RleHRBbmNlc3RvcihSZW5kZXJPYmplY3QmKTsKICAgICBzdGF0aWMgY29u
c3QgUmVuZGVyU1ZHVGV4dCogbG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKGNvbnN0IFJlbmRl
ck9iamVjdCYpOwpAQCAtNjQsMTggKzY0LDE4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9p
ZCBncmFwaGljc0VsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdUZXh0IjsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc1NWR1RleHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclNWR1RleHQiOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZHVGV4dCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8m
LCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8m
LCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0
TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIG5v
ZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbik7Ci0gICAgdmlydHVh
bCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNv
bnN0IFJlbmRlclJlZ2lvbiopOworICAgIHZpcnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgVmlzaWJs
ZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5k
ZXJSZWdpb24qKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAg
dmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jiwg
Ym9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0
IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Qgb3ZlcnJp
ZGU7CkBAIC04MywxNiArODMsMTYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBtYXBM
b2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncyA9IEFwcGx5Q29udGFp
bmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNo
aWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGFk
ZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSBu
dWxscHRyKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQo
UmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3ll
ZCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2Fs
VG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9Ci0g
ICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVy
biBtX2xvY2FsVHJhbnNmb3JtOyB9CisgICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvY2Fs
VHJhbnNmb3JtOyB9CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAgICAgdmlydHVh
bCBzdGQ6OnVuaXF1ZV9wdHI8Um9vdElubGluZUJveD4gY3JlYXRlUm9vdElubGluZUJveCgpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25z
dDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRmlyc3RMZXR0ZXIoKTsKKyAgICB2aXJ0dWFsIFJl
bmRlckJsb2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVGaXJzdExldHRlcigpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRIYW5k
bGVTdWJ0cmVlTXV0YXRpb25zKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmgK
aW5kZXggNjdkMGE1NjdiZDI0ZTliOWMxOWEzYzA4YzNhMzY3OGJmMTg4MDIxNS4uOWVkYWJlZWU3
MTMyNDc2OTRjNmZmODg3N2M5N2YwZDQxMGE0ZDc1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyLmgKQEAgLTMyLDE1ICszMiwxNSBAQCBwdWJsaWM6CiAgICAgUmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lcihTVkdHcmFwaGljc0VsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50JiBncmFwaGljc0VsZW1lbnQoKSB7IHJldHVybiBkb3du
Y2FzdDxTVkdHcmFwaGljc0VsZW1lbnQ+KFJlbmRlclNWR0NvbnRhaW5lcjo6ZWxlbWVudCgpKTsg
fQogCi0gICAgdmlydHVhbCBib29sIGlzU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcigpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9j
YWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSB7IG1fbmVlZHNUcmFu
c2Zvcm1VcGRhdGUgPSB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGRpZFRyYW5zZm9ybVRvUm9v
dFVwZGF0ZSgpIHsgcmV0dXJuIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlOyB9CisgICAgdmly
dHVhbCBib29sIGlzU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxU
b1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zv
cm07IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSBvdmVycmlk
ZSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGRp
ZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZGlkVHJhbnNmb3Jt
VG9Sb290VXBkYXRlOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBk
ZWxldGU7Ci0gICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKCk7Ci0gICAg
dmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBt
X2xvY2FsVHJhbnNmb3JtOyB9CisgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUxvY2FsVHJhbnNm
b3JtKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zv
cm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAKICAgICBi
b29sIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgOiAxOwogICAgIGJvb2wgbV9kaWRUcmFuc2Zvcm1U
b1Jvb3RVcGRhdGUgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCmluZGV4IGNjNTI0ODYxMmY4MTJlNmI5
ZTY5NWJkMzljMWExZjZjY2MzOTFlN2YuLmY2MjRmNWY0N2RjZGJhOGM4OWEyMTg5YzhiZjBjY2Vl
YmNjYmNkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKQEAgLTM4LDI3ICszOCwyNyBAQCBwdWJsaWM6
CiAgICAgRmxvYXRSZWN0IHZpZXdwb3J0KCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydDsgfQog
CiAgICAgYm9vbCBpc0xheW91dFNpemVDaGFuZ2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xheW91
dFNpemVDaGFuZ2VkOyB9Ci0gICAgdmlydHVhbCBib29sIGRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0
ZSgpIHsgcmV0dXJuIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlOyB9CisgICAgdmlydHVhbCBi
b29sIGRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZGlkVHJh
bnNmb3JtVG9Sb290VXBkYXRlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lSWZMYXlv
dXRTaXplQ2hhbmdlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0
ZSgpIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGV0ZXJtaW5lSWZMYXlvdXRTaXplQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWVkc1RyYW5zZm9ybVVw
ZGF0ZSA9IHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgp
IGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBib29sIGlzU1ZHVmlld3BvcnRDb250YWlu
ZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIjsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc1NWR1ZpZXdwb3J0Q29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciI7IH0KIAog
ICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0OwotICAgIHZpcnR1
YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qg
eyByZXR1cm4gbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtOyB9CisgICAgdmlydHVhbCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07IH0KIAotICAgIHZpcnR1YWwgdm9pZCBj
YWxjVmlld3BvcnQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0o
KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY1ZpZXdwb3J0KCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBib29sIGNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYXBwbHlWaWV3cG9ydENsaXAoUGFpbnRJbmZvJik7Ci0gICAgdmlydHVhbCBib29sIHBv
aW50SXNJbnNpZGVWaWV3cG9ydENsaXAoY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCk7
CisgICAgdmlydHVhbCB2b2lkIGFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgYm9vbCBwb2ludElzSW5zaWRlVmlld3BvcnRDbGlwKGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50SW5QYXJlbnQpIG92ZXJyaWRlOwogCiAgICAgRmxvYXRSZWN0IG1fdmlld3Bv
cnQ7CiAgICAgbXV0YWJsZSBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbFRvUGFyZW50VHJhbnNmb3Jt
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaApp
bmRleCA3YjdkODU3ZjEyZjljODk5MDc4MGY3OTE1ZDYzYWI2NzlmNzI5YmJiLi44NTliZmUyODU2
NTYzNTAzNWZkNTZhMDUwNGI4NDM5YWJlNmI0Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaApAQCAtMzcsMjggKzM3LDI4IEBAIHB1Ymxp
YzoKIAogICAgIFJlbmRlclNWR0lubGluZVRleHQmIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4g
ZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lVGV4dD4oSW5saW5lVGV4dEJveDo6cmVuZGVyZXIoKSk7
IH0KIAotICAgIHZpcnR1YWwgZmxvYXQgdmlydHVhbExvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX2xvZ2ljYWxIZWlnaHQ7IH0KKyAgICB2aXJ0dWFsIGZsb2F0IHZpcnR1YWxMb2dpY2Fs
SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2dpY2FsSGVpZ2h0OyB9CiAgICAg
dm9pZCBzZXRMb2dpY2FsSGVpZ2h0KGZsb2F0IGhlaWdodCkgeyBtX2xvZ2ljYWxIZWlnaHQgPSBo
ZWlnaHQ7IH0KIAotICAgIHZpcnR1YWwgaW50IHNlbGVjdGlvblRvcCgpIHsgcmV0dXJuIHRvcCgp
OyB9Ci0gICAgdmlydHVhbCBpbnQgc2VsZWN0aW9uSGVpZ2h0KCkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihjZWlsZihtX2xvZ2ljYWxIZWlnaHQpKTsgfQotICAgIHZpcnR1YWwgaW50IG9mZnNl
dEZvclBvc2l0aW9uKGZsb2F0IHgsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMgPSB0cnVlKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGZsb2F0IHBvc2l0aW9uRm9yT2Zmc2V0KGludCBvZmZzZXQpIGNv
bnN0OworICAgIGludCBzZWxlY3Rpb25Ub3AoKSB7IHJldHVybiB0b3AoKTsgfQorICAgIGludCBz
ZWxlY3Rpb25IZWlnaHQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKG1fbG9naWNh
bEhlaWdodCkpOyB9CisgICAgdmlydHVhbCBpbnQgb2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgeCwg
Ym9vbCBpbmNsdWRlUGFydGlhbEdseXBocyA9IHRydWUpIGNvbnN0IG92ZXJyaWRlOworICAgIHZp
cnR1YWwgZmxvYXQgcG9zaXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIHBhaW50U2VsZWN0aW9uQmFja2dyb3VuZChQYWludEluZm8mKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRV
bml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSk7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBM
YXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBs
b2NhbFNlbGVjdGlvblJlY3QoaW50IHN0YXJ0UG9zaXRpb24sIGludCBlbmRQb3NpdGlvbikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIG1hcFN0YXJ0RW5kUG9zaXRpb25zSW50b0ZyYWdtZW50
Q29vcmRpbmF0ZXMoY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgaW50JiBzdGFydFBvc2l0aW9uLCBp
bnQmIGVuZFBvc2l0aW9uKSBjb25zdDsKIAotICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNhbGN1bGF0
ZUJvdW5kYXJpZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjYWxjdWxhdGVCb3Vu
ZGFyaWVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyVGV4dEZyYWdtZW50cygp
IHsgbV90ZXh0RnJhZ21lbnRzLmNsZWFyKCk7IH0KICAgICBWZWN0b3I8U1ZHVGV4dEZyYWdtZW50
PiYgdGV4dEZyYWdtZW50cygpIHsgcmV0dXJuIG1fdGV4dEZyYWdtZW50czsgfQogICAgIGNvbnN0
IFZlY3RvcjxTVkdUZXh0RnJhZ21lbnQ+JiB0ZXh0RnJhZ21lbnRzKCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0RnJhZ21lbnRzOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlydHlPd25MaW5lQm94ZXMo
KSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlydHlMaW5lQm94ZXMoKSBvdmVy
cmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlydHlPd25MaW5lQm94ZXMoKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlydHlMaW5lQm94ZXMoKSBvdmVycmlkZTsKIAogICAgIGJv
b2wgc3RhcnRzTmV3VGV4dENodW5rKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydHNOZXdUZXh0Q2h1
bms7IH0KICAgICB2b2lkIHNldFN0YXJ0c05ld1RleHRDaHVuayhib29sIG5ld1RleHRDaHVuaykg
eyBtX3N0YXJ0c05ld1RleHRDaHVuayA9IG5ld1RleHRDaHVuazsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaAppbmRleCBiMzdlMDRhMjFkY2Iz
M2FhODUxNWMxOTU1YTdiYjUxYjdjZmNhMmE2Li5lZWEzMGY1MDc2MzY5NjJhODNiZDFiM2I3NWIz
NGUwNWNmZWRhOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jv
b3RJbmxpbmVCb3guaApAQCAtMzgsMTcgKzM4LDE3IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlclNW
R1RleHQmIHJlbmRlclNWR1RleHQoKTsKIAotICAgIHZpcnR1YWwgZmxvYXQgdmlydHVhbExvZ2lj
YWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2xvZ2ljYWxIZWlnaHQ7
IH0KKyAgICB2aXJ0dWFsIGZsb2F0IHZpcnR1YWxMb2dpY2FsSGVpZ2h0KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9sb2dpY2FsSGVpZ2h0OyB9CiAgICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0
KGZsb2F0IGhlaWdodCkgeyBtX2xvZ2ljYWxIZWlnaHQgPSBoZWlnaHQ7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91dFVuaXQg
bGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0
IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNv
bXB1dGVQZXJDaGFyYWN0ZXJMYXlvdXRJbmZvcm1hdGlvbigpOwogCiAgICAgSW5saW5lQm94KiBj
bG9zZXN0TGVhZkNoaWxkRm9yUG9zaXRpb24oY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogcHJpdmF0
ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSb290SW5saW5lQm94KCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jvb3RJbmxpbmVC
b3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCByZW9yZGVyVmFs
dWVMaXN0cyhWZWN0b3I8U1ZHVGV4dExheW91dEF0dHJpYnV0ZXMqPiYpOwogICAgIHZvaWQgbGF5
b3V0Q2hhcmFjdGVyc0luVGV4dEJveGVzKElubGluZUZsb3dCb3gqLCBTVkdUZXh0TGF5b3V0RW5n
aW5lJik7CiAgICAgdm9pZCBsYXlvdXRDaGlsZEJveGVzKElubGluZUZsb3dCb3gqLCBGbG9hdFJl
Y3QqID0gMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240322</attachid>
            <date>2014-10-22 20:10:12 -0700</date>
            <delta_ts>2014-10-22 20:14:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137984-20141022201018.patch</filename>
            <type>text/plain</type>
            <size>110829</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTM0N2VhOGU0MjliYmJk
YjkxYWQwZTdlMTY4ZGQyMmJmOGQzOWRlMC4uY2VlZjU3Yzc4NDFkOTZmZGVlZWYwZjViZDZjNDQ3
NWM5OGE3YWMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMSBAQAorMjAxNC0xMC0yMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHZpcnR1YWwg
ZnVuY3Rpb25zIGluIHJlbmRlcmluZy8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIENsZWFuIHVwIHZpcnR1YWwgZnVuY3Rpb25zIGluIHJlbmRlcmluZy8gYnk6
CisgICAgICAgIC0gTWFraW5nIHZpcnR1YWwgZnVuY3Rpb25zIGZpbmFsIHdoZW4gcG9zc2libGUK
KyAgICAgICAgLSBNYWtpbmcgY2xhc3NlcyBmaW5hbCB3aGVuIHBvc3NpYmxlCisgICAgICAgIC0g
VXNpbmcgJ292ZXJyaWRlJyB3aGVuIGFwcHJvcHJpYXRlCisgICAgICAgIC0gRXhwbGljaXRseSBt
YXJraW5nIGZ1bmN0aW9ucyAvIGRlc3RydWN0b3JzIGFzIHZpcnR1YWwgd2hlbiB0aGV5IGFyZQor
ICAgICAgICAgIGluaGVyZW50bHkgdmlydHVhbAorICAgICAgICAtIERyb3BwaW5nIHZpcnR1YWwg
ZGVzdHJ1Y3RvcnMgd2hlbiB0aGUgY2xhc3MgZG9lcyBub3QgaGF2ZSBzdWJjbGFzc2VzCisgICAg
ICAgICAgYW5kIG1hcmsgdGhlIGNsYXNzIGFzIGZpbmFsLCB0byBnZXQgcmlkIG9mIHVubmVjZXNz
YXJ5IHZ0YWJsZXMKKyAgICAgICAgLSBNYWtpbmcgaXNYWFgoKSB2aXJ0dWFsIGZ1bmN0aW9ucyBw
cml2YXRlIG9uIFhYWCBjbGFzc2VzIHRvIGF2b2lkCisgICAgICAgICAgdW5uZWNlc3NhcnkgdHlw
ZSBjaGVja3MKKyAgICAgICAgLSBEZS12aXJ0dWFsaXppbmcgc29tZSBmdW5jdGlvbnMgdGhhdCBk
byBub3QgbmVlZCB0byBiZSB2aXJ0dWFsCisgICAgICAgIC0gRHJvcHBpbmcgZmluYWwgZm9yIHZp
cnR1YWwgZnVuY3Rpb25zIGluIGNsYXNzZXMgYWxyZWFkeSBtYXJrZWQgYXMKKyAgICAgICAgICBm
aW5hbAorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvQXV0b1RhYmxlTGF5
b3V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwUGF0aE9wZXJhdGlvbjo6aXNTYW1lVHlwZSk6CisgICAgICAgICogcmVuZGVyaW5nL0VsbGlw
c2lzQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVl
bi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNYXJxdWVl
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUXVvdGUuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJSZWdpb246OnJlbmRlck5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJSZXBsaWNhLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBh
cnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp+UmVuZGVyU2Nyb2xsYmFyVGhlbWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnNjcm9s
bGJhclRoaWNrbmVzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxi
YXJUaGVtZTo6YnV0dG9uc1BsYWNlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6c3VwcG9ydHNDb250cm9sVGludHMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnNob3VsZENlbnRlck9uVGh1bWIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmluaXRp
YWxBdXRvc2Nyb2xsVGltZXJEZWxheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTY3JvbGxiYXJUaGVtZTo6YXV0b3Njcm9sbFRpbWVyRGVsYXkpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVy
U2Nyb2xsYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRB
dXRvc2l6ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvVHJhaWxpbmdGbG9hdHNSb290SW5saW5l
Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MU2NyaXB0cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVG9rZW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVu
ZGVyT3Zlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zaGFwZXMvUmFzdGVyU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1JlY3Rh
bmdsZVNoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVBlbmRpbmdJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMpOiBE
ZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VSYWRpYWxHcmFkaWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9TVkdJbmxpbmVUZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSb290
SW5saW5lQm94Lmg6CisKIDIwMTQtMTAtMjIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBTVkcgbG9hZGVkIHRocm91Z2ggaHRtbCA8aW1nPiBj
YW4ndCByZXF1ZXN0IHRvIGxvYWQgYW55IGV4dGVybmFsIHJlc291cmNlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGIxMGY5OWYxMDU1
N2IxMjcxNDEzMzI0MWY2OWEyMjQ2YTRjNzNiMDQuLmI3ZWYyOWQxZmI0M2U3NWMxOTk1MGJiOWNl
NzIzZmY1ZWQwNmQ5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvagpAQCAtMTEzOTQsNyArMTEzOTQsNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVj
dGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVj
dGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJUaGVtZVNhZmFyaS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyVGhlbWVXaW4u
Y3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTIw
MzA3LDcgKzIwMzA2LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xS
ZW5kZXJUZXh0RnJhZ21lbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRl
cmluZ1xSZW5kZXJUZXh0TGluZUJveGVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxyZW5kZXJpbmdcUmVuZGVyVGhlbWUuaCIgLz4KLSAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1
ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJUaGVtZVNhZmFyaS5oIiAvPgogICAgIDxDdXN0b21CdWls
ZFN0ZXAgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlclRoZW1lV2luLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyVHJlZUFzVGV4dC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlclZUVEN1ZS5oIiAvPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5m
aWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5m
aWx0ZXJzCmluZGV4IDMyMmI3MGM2ZWZkZWQ4YjNhOWQxYWUwYTMxMWQ0MDBhMDFlZWJmMGEuLmFj
YzgzYzZjYTBhMjNkY2E5N2JkMGRjZGZmY2JmZWI4M2MwNjkzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAg
LTI3MDksOSArMjcwOSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
UmVuZGVyVGhlbWUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVy
VGhlbWVTYWZhcmkuY3BwIj4KLSAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+Ci0gICAg
PC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVy
VGhlbWVXaW4uY3BwIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+CkBAIC0xNTQyOCw5ICsxNTQyNSw2IEBACiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJ
bmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyTWVkaWFDb250cm9scy5oIj4KICAgICAgIDxGaWx0
ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAgICAgPC9DdXN0b21CdWlsZFN0ZXA+Ci0gICAgPEN1c3Rv
bUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyVGhlbWVTYWZhcmkuaCI+Ci0g
ICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVyPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgog
ICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlclRoZW1lV2lu
LmgiPgogICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KICAgICA8L0N1c3RvbUJ1aWxk
U3RlcD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuY3BwCmluZGV4IDI2MmM2MDA2ZjUzZjgxZmZjN2ZhZjgyMWM5NmU2ZDExODgzY2NkZjkuLmY5
Y2VkNmRmMTQyODVhMGY5NTIxNjE0NmI3NTQwZTYyNzI4ZThiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtMTA5LDcgKzEw
OSw3IEBAIGJvb2wgUmVuZGVyU2xpZGVyVGh1bWI6OmlzU2xpZGVyVGh1bWIoKSBjb25zdAogCiAv
LyBGSVhNRTogRmluZCBhIHdheSB0byBjYXNjYWRlIGFwcGVhcmFuY2UgYW5kIGFkanVzdCBoZWln
aHRzLCBhbmQgZ2V0IHJpZCBvZiB0aGlzIGNsYXNzLgogLy8gaHR0cDovL3dlYmtpdC5vcmcvYi82
MjUzNQotY2xhc3MgUmVuZGVyU2xpZGVyQ29udGFpbmVyIDogcHVibGljIFJlbmRlckZsZXhpYmxl
Qm94IHsKK2NsYXNzIFJlbmRlclNsaWRlckNvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJG
bGV4aWJsZUJveCB7CiBwdWJsaWM6CiAgICAgUmVuZGVyU2xpZGVyQ29udGFpbmVyKFNsaWRlckNv
bnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAg
ICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmgKaW5kZXggNGMwYzM0MGIyNWUx
YzQ1ZmYxODljMmQxM2JmN2ZlM2NhODE5NGMwMi4uMmYzMTlmZWE4ZGE2NzJjMTQxOGY4ODQxY2Iy
Mjg1ZjJlMmMwYTk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9U
YWJsZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlv
dXQuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJU
YWJsZTsKIGNsYXNzIFJlbmRlclRhYmxlQ2VsbDsKIAotY2xhc3MgQXV0b1RhYmxlTGF5b3V0IDog
cHVibGljIFRhYmxlTGF5b3V0IHsKK2NsYXNzIEF1dG9UYWJsZUxheW91dCBmaW5hbCA6IHB1Ymxp
YyBUYWJsZUxheW91dCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQXV0b1RhYmxlTGF5b3V0KFJl
bmRlclRhYmxlKik7CiAgICAgdmlydHVhbCB+QXV0b1RhYmxlTGF5b3V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCmluZGV4IDc5YjY2NWNjZmQxNmMw
MjIwNjdiNTkwNmJmOTY3MmYxMDQ3MmQxZDYuLmU3MjMxZTZjYTQwMzI4ZWZlNGIwNjJlMjlhODEx
MzcyY2RjZDY1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0
aE9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJh
dGlvbi5oCkBAIC01Miw4ICs1Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDbGlwUGF0aE9wZXJhdGlvbiYpIGNvbnN0ID0gMDsKICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgQ2xpcFBhdGhPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMg
PT0gbyk7IH0KIAotICAgIHZpcnR1YWwgT3BlcmF0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2FtZVR5cGUoY29uc3QgQ2xpcFBhdGhP
cGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuIG8udHlwZSgpID09IG1fdHlwZTsgfQorICAgIE9w
ZXJhdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGJvb2wgaXNT
YW1lVHlwZShjb25zdCBDbGlwUGF0aE9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gby50eXBl
KCkgPT0gbV90eXBlOyB9CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDbGlwUGF0aE9wZXJh
dGlvbihPcGVyYXRpb25UeXBlIHR5cGUpCkBAIC02NCw3ICs2NCw3IEBAIHByb3RlY3RlZDoKICAg
ICBPcGVyYXRpb25UeXBlIG1fdHlwZTsKIH07CiAKLWNsYXNzIFJlZmVyZW5jZUNsaXBQYXRoT3Bl
cmF0aW9uIDogcHVibGljIENsaXBQYXRoT3BlcmF0aW9uIHsKK2NsYXNzIFJlZmVyZW5jZUNsaXBQ
YXRoT3BlcmF0aW9uIGZpbmFsIDogcHVibGljIENsaXBQYXRoT3BlcmF0aW9uIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50KQogICAgIHsKQEAgLTk0
LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9mcmFnbWVudDsKIH07CiAKLWNsYXNz
IFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24gOiBwdWJsaWMgQ2xpcFBhdGhPcGVyYXRpb24geworY2xh
c3MgU2hhcGVDbGlwUGF0aE9wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDbGlwUGF0aE9wZXJhdGlv
biB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcGVDbGlwUGF0aE9wZXJhdGlv
bj4gY3JlYXRlKFBhc3NSZWY8QmFzaWNTaGFwZT4gc2hhcGUpCiAgICAgewpAQCAtMTMzLDcgKzEz
Myw3IEBAIHByaXZhdGU6CiAgICAgQ1NTQm94VHlwZSBtX3JlZmVyZW5jZUJveDsKIH07CiAKLWNs
YXNzIEJveENsaXBQYXRoT3BlcmF0aW9uIDogcHVibGljIENsaXBQYXRoT3BlcmF0aW9uIHsKK2Ns
YXNzIEJveENsaXBQYXRoT3BlcmF0aW9uIGZpbmFsIDogcHVibGljIENsaXBQYXRoT3BlcmF0aW9u
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCb3hDbGlwUGF0aE9wZXJhdGlvbj4g
Y3JlYXRlKENTU0JveFR5cGUgcmVmZXJlbmNlQm94KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0VsbGlwc2lzQm94LmgKaW5kZXggZjNjZjhkYjZmMWFmZGYwZjgwZGExYWYxMDQyYzEwNTUz
YmQ3ZWRiNS4uOTU3NzVkMGVkNDVkMjEyN2FiZTEwNzViYWFlYzUzZjJiNDczMzQ4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmgKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3Mg
SGl0VGVzdFJlc3VsdDsKIGNsYXNzIEVsbGlwc2lzQm94IGZpbmFsIDogcHVibGljIElubGluZUVs
ZW1lbnRCb3ggewogcHVibGljOgogICAgIEVsbGlwc2lzQm94KFJlbmRlckJsb2NrRmxvdyYsIGNv
bnN0IEF0b21pY1N0cmluZyYgZWxsaXBzaXNTdHIsIElubGluZUZsb3dCb3gqIHBhcmVudCwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgeSwgYm9vbCBmaXJzdExpbmUsIGJvb2wgaXNWZXJ0aWNh
bCwgSW5saW5lQm94KiBtYXJrdXBCb3gpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBs
aW5lQm90dG9tKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxp
bmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTZWxl
Y3Rpb25TdGF0ZShSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHMpIHsgbV9zZWxlY3Rpb25T
dGF0ZSA9IHM7IH0KICAgICBJbnRSZWN0IHNlbGVjdGlvblJlY3QoKTsKQEAgLTQwLDggKzQwLDgg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRNYXJrdXBCb3goUGFpbnRJbmZv
JiwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExh
eW91dFVuaXQgbGluZUJvdHRvbSwgY29uc3QgUmVuZGVyU3R5bGUmKTsKLSAgICB2aXJ0dWFsIGlu
dCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQotICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZSgpIHsgcmV0dXJuIG1fc2VsZWN0
aW9uU3RhdGU7IH0KKyAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0K
KyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUo
KSBvdmVycmlkZSB7IHJldHVybiBtX3NlbGVjdGlvblN0YXRlOyB9CiAgICAgdm9pZCBwYWludFNl
bGVjdGlvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRl
clN0eWxlJiwgY29uc3QgRm9udCYpOwogICAgIElubGluZUJveCogbWFya3VwQm94KCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5oCmluZGV4IDlm
YTU2ZDE3MjIxYTU1ZDE0OTYyZjNlZDVmNTY0ZjI1YTU2NWE2OGUuLmQ3YmNiZDY1NTMxMDkzMWVh
ODhjMDZmMTFkYmQxMjNjYTU2Y2IyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9GaXhlZFRhYmxlTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
eGVkVGFibGVMYXlvdXQuaApAQCAtMzAsMTMgKzMwLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUmVuZGVyVGFibGU7CiAKLWNsYXNzIEZpeGVkVGFibGVMYXlvdXQgOiBwdWJsaWMg
VGFibGVMYXlvdXQgeworY2xhc3MgRml4ZWRUYWJsZUxheW91dCBmaW5hbCA6IHB1YmxpYyBUYWJs
ZUxheW91dCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRml4ZWRUYWJsZUxheW91dChSZW5kZXJU
YWJsZSopOwogCiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhz
KExheW91dFVuaXQmIG1pbldpZHRoLCBMYXlvdXRVbml0JiBtYXhXaWR0aCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGFwcGx5UHJlZmVycmVkTG9naWNhbFdpZHRoUXVpcmtzKExheW91dFVu
aXQmIG1pbldpZHRoLCBMYXlvdXRVbml0JiBtYXhXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKICAgICBpbnQgY2FsY1dpZHRoQXJyYXkoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVFbGVtZW50Qm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oCmluZGV4IDk2MWEwNzU0NTNkNWY5NDdhZWY0
NjY0MGQ4YWNlYzc0ZDYyM2ZlODQuLjU2NjM5NWIyYjhmM2Q1MzFkZjdhMDYxZjJmYmI2MWRhNTE2
MjFhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVFbGVtZW50
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guaApA
QCAtNDQsOSArNDQsOSBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVu
ZGVyZXIoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oSW5s
aW5lQm94OjpyZW5kZXJlcigpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUxpbmUoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZXh0cmFjdExpbmUoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoTGluZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVMaW5lKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGV4dHJhY3RMaW5lKCkg
b3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGF0dGFjaExpbmUoKSBvdmVycmlkZSBm
aW5hbDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBI
aXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVy
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRv
cCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCBhYjc2MzlmYTEyYjczMTNiOGRhZTJmYmM2ZGVh
YzY0MDhkYjQ0NDhlLi45NjYxYzU2MzMzMzA0Mjg5OTgwMjI5MTkwMTM2NzFlYzg2MGVjM2M4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC0yODAsNyAr
MjgwLDcgQEAgcHVibGljOgogICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogbXVsdGlD
b2x1bW5GbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZUJsb2NrRmxvd0RhdGEoKSA/
IHJhcmVCbG9ja0Zsb3dEYXRhKCktPm1fbXVsdGlDb2x1bW5GbG93VGhyZWFkIDogbnVsbHB0cjsg
fQogICAgIHZvaWQgc2V0TXVsdGlDb2x1bW5GbG93VGhyZWFkKFJlbmRlck11bHRpQ29sdW1uRmxv
d1RocmVhZCopOwogICAgIAotICAgIGJvb2wgY29udGFpbnNGbG9hdHMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2Zsb2F0aW5nT2JqZWN0cyAmJiAhbV9mbG9hdGluZ09iamVjdHMtPnNldCgp
LmlzRW1wdHkoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBjb250YWluc0Zsb2F0cygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fZmxvYXRpbmdPYmplY3RzICYmICFtX2Zsb2F0aW5nT2JqZWN0cy0+
c2V0KCkuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBjb250YWluc0Zsb2F0KFJlbmRlckJveCYpIGNv
bnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUxpbmVzKCkgb3ZlcnJpZGU7CkBAIC0zNzYs
OCArMzc2LDggQEAgcHVibGljOgogICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodEZvckNoaWxk
Rm9yRnJhZ21lbnRhdGlvbihjb25zdCBSZW5kZXJCb3gmIGNoaWxkKSBjb25zdDsKICAgICBib29s
IGhhc05leHRQYWdlKExheW91dFVuaXQgbG9naWNhbE9mZnNldCwgUGFnZUJvdW5kYXJ5UnVsZSA9
IEV4Y2x1ZGVQYWdlQm91bmRhcnkpIGNvbnN0OwogCi0gICAgdm9pZCBhZGRDaGlsZChSZW5kZXJP
YmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7
Ci0gICAgUmVuZGVyT2JqZWN0KiByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY3Jl
YXRlTXVsdGlDb2x1bW5GbG93VGhyZWFkKCk7CiAgICAgdm9pZCBkZXN0cm95TXVsdGlDb2x1bW5G
bG93VGhyZWFkKCk7CkBAIC00NTAsOCArNDUwLDggQEAgcHJvdGVjdGVkOgogICAgIExheW91dFVu
aXQgY29tcHV0ZWRDb2x1bW5XaWR0aCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGNvbXB1dGVkQ29s
dW1uQ291bnQoKSBjb25zdDsKICAgICAKLSAgICBib29sIGlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxv
d2VkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93
ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUb3BMYXlvdXRPdmVyZmxv
d0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMZWZ0TGF5b3V0
T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIG1vdmVGbG9hdHNU
byhSZW5kZXJCbG9ja0Zsb3cqIHRvQmxvY2spOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaAppbmRleCBhNTk1OGQ0MDg0MjNiY2Y4OGY3MjE1NTJj
OWMzNDQxMGVjYWYyNjVlLi4wMWJlNGQ2M2QyNmY4M2MyZDBlMTEyMDJmMzBmYWI1NTlmNDhhZGVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaApAQCAt
NDUsMTAgKzQ1LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBub2RlKCkgY29uc3Qg
PSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDb21iaW5lVGV4dCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGZsb2F0IHdpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIGxlbmd0aCwgY29uc3QgRm9udCYsIGZsb2F0IHhQb3NpdGlvbiwgSGFzaFNldDxjb25zdCBT
aW1wbGVGb250RGF0YSo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVy
biAiUmVuZGVyQ29tYmluZVRleHQiOyB9Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNDb21iaW5lVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIGZsb2F0IHdpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCwg
Y29uc3QgRm9udCYsIGZsb2F0IHhQb3NpdGlvbiwgSGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0
YSo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVuZGVyQ29tYmluZVRleHQiOyB9CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVuZGVyZWRUZXh0KGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwogCiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX2NvbWJpbmVGb250U3R5bGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaAppbmRleCBhZGZhODZiZDRlNmQ1
MWFhZWQ0NmNmY2RkYTQ2NjMyYjUwMjQ1ZGVjLi5iZjNkNDQ1NjFjYzEyNWM4OWQ1MTJjN2Y5Njdh
MTIwMzdkNmJiYjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Q291bnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgK
QEAgLTQzLDEyICs0MywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDb3VudGVyKCk7CiAK
IHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CisgICAgdmly
dHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBp
c0NvdW50ZXIoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBvcmlnaW5hbFRleHQoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNDb3VudGVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBTdHJpbmcgb3JpZ2luYWxUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCkgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guaAppbmRleCA5NDc0ZTg4OTRjOGNiYTNkYWI0Y2E0ZDRlZDM0YmU2
NTI5NTc1NGNiLi5jNjFjNTg2OTdmODk0OTI5NzhhYjRjZmYxNWI1ZmUxMTQ5NTYzMDU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4
aWJsZUJveC5oCkBAIC0zNiwyMiArMzYsMjIgQEAgcHVibGljOgogCiAgICAgRWxlbWVudCYgZWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1v
dXMoKSk7IH0KIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJl
bmRlclN0eWxlJiBuZXdTdHlsZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0
QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VIZWlnaHQgPSAwKTsK
KyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlv
dXRVbml0IHBhZ2VIZWlnaHQgPSAwKSBvdmVycmlkZTsKICAgICB2b2lkIGxheW91dEhvcml6b250
YWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKTsKICAgICB2b2lkIGxheW91dFZlcnRpY2FsQm94
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXZvaWRzRmxvYXRz
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0RlcHJlY2F0ZWRG
bGV4aWJsZUJveCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNT
dHJldGNoaW5nQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX3N0cmV0Y2hpbmdDaGlsZHJlbjsg
fQorICAgIHZpcnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzU3RyZXRjaGluZ0NoaWxkcmVuKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9zdHJldGNoaW5nQ2hpbGRyZW47IH0KICAgICB2aXJ0dWFsIGJv
b2wgY2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgcGxhY2VDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBjb25z
dCBMYXlvdXRQb2ludCYgbG9jYXRpb24sIExheW91dFNpemUqIGNoaWxkTGF5b3V0RGVsdGEgPSAw
KTsKIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNEZXByZWNhdGVkRmxleGlibGVCb3go
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1
dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5
b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAppbmRleCAwYmY3MTcxNmYwMzli
Njg0YzRhNWIzNWU0ZmNmZjhkY2ZmY2FkODQ4Li4yYjZlZmFjNjE4MWU2ZTg4ZWUxYTNlYjFmNjFi
YjljZjJmOGIwNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guaApAQCAtNDQsNyArNDQsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0Zs
ZXhpYmxlQm94KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGNhbkNvbGxhcHNlQW5vbnltb3VzQmxvY2tDaGlsZCgp
IGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNh
bEhlaWdodCA9IDApIG92ZXJyaWRlIGZpbmFsOwpAQCAtNTcsOCArNTYsOCBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGlzSG9yaXpvbnRhbEZsb3coKSBjb25zdDsKIAotICAgIGJvb2wgaXNUb3BMYXlv
dXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzTGVmdExheW91
dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBpc1Rv
cExheW91dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9v
bCBpc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlv
dXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29u
c3Qgb3ZlcnJpZGU7CkBAIC04Niw2ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gVXNlIGFuIGlu
bGluZSBjYXBhY2l0eSBvZiA4LCBzaW5jZSBmbGV4Ym94IGNvbnRhaW5lcnMgdXN1YWxseSBoYXZl
IGxlc3MgdGhhbiA4IGNoaWxkcmVuLgogICAgIHR5cGVkZWYgVmVjdG9yPExheW91dFJlY3QsIDg+
IENoaWxkRnJhbWVSZWN0czsKIAorICAgIHZpcnR1YWwgYm9vbCBpc0ZsZXhpYmxlQm94KCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaGFzT3J0aG9nb25h
bEZsb3coUmVuZGVyQm94JiBjaGlsZCkgY29uc3Q7CiAgICAgYm9vbCBpc0NvbHVtbkZsb3coKSBj
b25zdDsKICAgICBib29sIGlzTGVmdFRvUmlnaHRGbG93KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAppbmRleCA2NjU2NTcxM2NmMWYwN2Q2ZWE5
ZjFlODg3YzUwMTA2ZDViZGJmZGZlLi45YjZjOGRiN2I5NThjZWMyNzlmZTI5MzVmZTgyMzEzNTNi
MjYxMjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNj
cmVlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgK
QEAgLTM2LDcgKzM2LDYgQEAgY2xhc3MgUmVuZGVyRnVsbFNjcmVlbiBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6CiAgICAgUmVuZGVyRnVsbFNjcmVlbihEb2N1bWVu
dCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckZ1
bGxTY3JlZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZ1
bGxTY3JlZW4iOyB9CiAKICAgICB2b2lkIHNldFBsYWNlaG9sZGVyKFJlbmRlckJsb2NrKik7CkBA
IC00Nyw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVud3JhcFJlbmRlcmVyKGJvb2wmIHJl
cXVpcmVzUmVuZGVyVHJlZVJlYnVpbGQpOwogCiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBp
c1JlbmRlckZ1bGxTY3JlZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCBjZjFjNzMwNzJiZjYzMmQwYjk2
ZWIxNDhhOTI1MDdjMjhkM2Y3YWMxLi5iYjM0OTRhYTQ5NzhjYWVlNGU0MThhYzYwMTQ4MTVjNTU4
MTg0MzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTEwNiw3ICsx
MDYsNyBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0VW5pdCBncmlkQXJlYUJyZWFkdGhGb3JDaGls
ZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0
IFZlY3RvcjxHcmlkVHJhY2s+JikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDaGls
ZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwg
UGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpIG92ZXJyaWRlIGZpbmFsOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludENoaWxkcmVuKFBhaW50SW5mbyYgZm9yU2VsZiwgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBQYWludEluZm8mIGZvckNoaWxkLCBib29sIHVzZVBy
aW50UmVjdCkgb3ZlcnJpZGU7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCB0cmFja3NBcmVX
aWRlclRoYW5NaW5UcmFja0JyZWFkdGgoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBW
ZWN0b3I8R3JpZFRyYWNrPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApp
bmRleCA5ZTcxZDJkMWRhYzI3NWM2NWEwY2I0Mjg3OGNkZWIyNDg5NjcwZTgxLi40ZmU2ZDYxMjcz
YjU1MDNjYjVjNGM3YzBiMTZlODUxZWFhNGNkMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaApAQCAtNzg5LDcgKzc4OSw3IEBAIHB1YmxpYzoKICAgICBib29sIHByZXNl
cnZlczNEKCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLnRyYW5zZm9ybVN0eWxl
M0QoKSA9PSBUcmFuc2Zvcm1TdHlsZTNEUHJlc2VydmUzRDsgfQogICAgIGJvb2wgaGFzM0RUcmFu
c2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybSAmJiAhbV90cmFuc2Zvcm0tPmlzQWZm
aW5lKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBmaWx0ZXJOZWVkc1JlcGFpbnQoKTsKKyAgICB2
b2lkIGZpbHRlck5lZWRzUmVwYWludCgpOwogICAgIGJvb2wgaGFzRmlsdGVyKCkgY29uc3QgeyBy
ZXR1cm4gcmVuZGVyZXIoKS5oYXNGaWx0ZXIoKTsgfQogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJ
VElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApp
bmRleCA3ZDkxODVmMTlmNjMwOTQ4MjA0ZjE4NGM0MThiOTIzMmI4ZDYxMmQ5Li5mZThlYjgzNTdl
OTUwZTE5YTdmMzAyYjg3NDk2Y2U2NmZmNGIyMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCkBAIC0yMTksNyArMjE5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BpeGVsQWxpZ21lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAhbV9pc01haW5GcmFtZVJlbmRlclZpZXdMYXllcjsgfQogCiAjaWZuZGVmIE5ERUJVRwot
ICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlOb3RQYWludGluZygpOworICAgIHZpcnR1YWwgdm9pZCB2
ZXJpZnlOb3RQYWludGluZygpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9S
VCBMYXlvdXRSZWN0IGNvbnRlbnRzQm94KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggMmQ1MTkwMWJiNmQ4NGMyYzY5
OTE5OWVmMWJlMWJjY2UwZDRlN2Y2Ni4uNjQyNGNmNDkwYTZkN2U0NjkzZDcyYWQ5NjRjYmIxYzg3
MzhmMzM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuaApAQCAtOTIsMTEgKzkyLDExIEBAIHR5cGVkZWYgdW5zaWduZWQgQ29tcG9zaXRp
bmdSZWFzb25zOwogLy8gCiAvLyBUaGVyZSBpcyBvbmUgUmVuZGVyTGF5ZXJDb21wb3NpdG9yIHBl
ciBSZW5kZXJWaWV3LgogCi1jbGFzcyBSZW5kZXJMYXllckNvbXBvc2l0b3IgOiBwdWJsaWMgR3Jh
cGhpY3NMYXllckNsaWVudCwgcHVibGljIEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50IHsKK2Ns
YXNzIFJlbmRlckxheWVyQ29tcG9zaXRvciBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xp
ZW50LCBwdWJsaWMgR3JhcGhpY3NMYXllclVwZGF0ZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlckxheWVyQ29tcG9zaXRv
cihSZW5kZXJWaWV3Jik7Ci0gICAgflJlbmRlckxheWVyQ29tcG9zaXRvcigpOworICAgIHZpcnR1
YWwgflJlbmRlckxheWVyQ29tcG9zaXRvcigpOwogCiAgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhp
cyBSZW5kZXJWaWV3IGlzIGluICJjb21wb3NpdGluZyBtb2RlIiAoaS5lLiBoYXMgb25lIG9yIG1v
cmUKICAgICAvLyBjb21wb3NpdGVkIFJlbmRlckxheWVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaAppbmRleCAyNjVmNzNmMmVhYjE5YWE5
OGMwM2VlOWFjYzE2OTg1OTY5OTliYTlmLi5mOTlkZTEwYzZhYjA3MmE5Njc1OWYzNmQ0ZTYyN2E2
NDk0OWI0ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
RmlsdGVySW5mby5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBy
ZW1vdmUoUmVuZGVyTGF5ZXImKTsKIAogICAgIGV4cGxpY2l0IEZpbHRlckluZm8oUmVuZGVyTGF5
ZXImKTsKLSAgICB+RmlsdGVySW5mbygpOworICAgIHZpcnR1YWwgfkZpbHRlckluZm8oKTsKIAog
ICAgIGNvbnN0IExheW91dFJlY3QmIGRpcnR5U291cmNlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlydHlTb3VyY2VSZWN0OyB9CiAgICAgdm9pZCBleHBhbmREaXJ0eVNvdXJjZVJlY3QoY29uc3Qg
TGF5b3V0UmVjdCYgcmVjdCkgeyBtX2RpcnR5U291cmNlUmVjdC51bml0ZShyZWN0KTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCmluZGV4IGQwZTNmZTVkMjk0
NzEyYjIyMmM0OWM3M2IyODNhM2Y2N2UwNjBmZjQuLmY1Zjk2NDM1MzA3ZGYzYzQ5MzcyYWIyN2Fm
NzU4MjVkNGU0YzUzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQnJlYWsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJy
ZWFrLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vZGUoKSBjb25zdCA9
IGRlbGV0ZTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8m
LCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIGZpbmFsIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIHsgfQogCiAg
ICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IGNh
cmV0TWluT2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1hcnF1ZWUuaAppbmRleCA2Yzg3OTkzN2QzNTU5ODA0ZjQ1ZDcxY2QwYjc3NGI4ZWJmOTA2
YzMyLi44N2MyMDJkYWFiMzMzZDQxOTNlMzdkOWE1YTFkMDFiZmZhY2Y3OWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmgKQEAgLTUzLDExICs1MywxMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJMYXllcjsKIAogLy8gVGhpcyBjbGFzcyBoYW5k
bGVzIHRoZSBhdXRvLXNjcm9sbGluZyBvZiBsYXllcnMgd2l0aCBvdmVyZmxvdzogbWFycXVlZS4K
LWNsYXNzIFJlbmRlck1hcnF1ZWUgeworY2xhc3MgUmVuZGVyTWFycXVlZSBmaW5hbCB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUmVuZGVyTWFycXVlZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlck1hcnF1ZWUoUmVuZGVyTGF5ZXIqKTsK
LSAgICB2aXJ0dWFsIH5SZW5kZXJNYXJxdWVlKCk7CisgICAgflJlbmRlck1hcnF1ZWUoKTsKIAog
ICAgIGludCBzcGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlZWQ7IH0KICAgICBpbnQgbWFycXVl
ZVNwZWVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oCmluZGV4IDg2ZDI3NzhmOWM4MDZiNzA3YmY0M2YxYWNl
YzhjMWJhMmZhNjBjMGYuLjdhNjVjMjk5Mjk4YjhjM2I2Nzg0MTZlOTc0ODMyYmUzZjVlOWNjYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xF
bGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRy
b2xFbGVtZW50cy5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJNZWRpYVZv
bHVtZVNsaWRlckNvbnRhaW5lcihFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5
b3V0KCkgb3ZlcnJpZGU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBA
IC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNv
bnRhaW5lcihFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwogCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJp
ZGU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02Myw3ICs2Myw3
IEBAIHB1YmxpYzoKICAgICBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KEVsZW1lbnQm
LCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIH07CiAKICNlbmRp
ZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKaW5kZXggMDIyM2M5ODJjNzIwYzM3
ZTY3NTk0YTA3OGU5YzljODBjMGVjMTQ2Zi4uZjk1NWZhMmZkZTk3NGM1MmI4ZmIzNjM5N2MzZmY5
NTIzMDQyYjE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaApAQCAtNDEsOCArNDEsNiBAQCBwdWJsaWM6CiAgICAg
UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4pOwogICAgIH5SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBpc1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLQogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGbG93Q2hpbGRJbmZvKFJlbmRl
ck9iamVjdCopIG92ZXJyaWRlOwogCiAgICAgUmVuZGVyQmxvY2tGbG93KiBtdWx0aUNvbHVtbkJs
b2NrRmxvdygpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4ocGFyZW50
KCkpOyB9CkBAIC01NSw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlck11bHRpQ29sdW1u
U3Bhbm5lclBsYWNlaG9sZGVyKiBmaW5kQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKFJlbmRlckJv
eCogc3Bhbm5lcikgY29uc3QgeyByZXR1cm4gbV9zcGFubmVyTWFwLmdldChzcGFubmVyKTsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAogICAgIC8vIEZpbmQgdGhlIHNldCBpbnNpZGUgd2hp
Y2ggdGhlIHNwZWNpZmllZCByZW5kZXJlciB3b3VsZCBiZSByZW5kZXJlZC4KICAgICBSZW5kZXJN
dWx0aUNvbHVtblNldCogZmluZFNldFJlbmRlcmluZyhSZW5kZXJPYmplY3QqKSBjb25zdDsKQEAg
LTExNSw2ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZENoZWNrQ29s
dW1uQnJlYWtzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBib29s
IGlzUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBhZGRSZWdpb25Ub1RocmVhZChSZW5kZXJSZWdpb24qKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5TZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5o
CmluZGV4IDI3Y2E3MzdjMzhkODJhY2U0ZGY0YzU2NzUyOTlkMWZmYjU2ZTM3NmQuLjhjYWMwNTA1
NGI4YjU0MDRjNDAwYjM3MWUzMmQ0ZjE4OWQ2MWM4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCkBAIC00Nyw4ICs0Nyw2IEBAIGNsYXNz
IFJlbmRlck11bHRpQ29sdW1uU2V0IGZpbmFsIDogcHVibGljIFJlbmRlclJlZ2lvblNldCB7CiBw
dWJsaWM6CiAgICAgUmVuZGVyTXVsdGlDb2x1bW5TZXQoUmVuZGVyRmxvd1RocmVhZCYsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1u
U2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgUmVuZGVyQmxvY2tG
bG93KiBtdWx0aUNvbHVtbkJsb2NrRmxvdygpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFJlbmRl
ckJsb2NrRmxvdz4ocGFyZW50KCkpOyB9CiAgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFk
KiBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZW5k
ZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqPihmbG93VGhyZWFkKCkpOyB9CiAKQEAgLTEzMSw5ICsx
MjksMTAgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50KCkgY29uc3Q7CiAKIHBy
b3RlY3RlZDoKLSAgICB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKCkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAg
CiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1uU2V0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRV
bml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENv
bXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xNTUsNyArMTU0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0VW5pdCBjYWxjdWxh
dGVNYXhDb2x1bW5IZWlnaHQoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNvbHVtbkdhcCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uU3Bhbm5lclBsYWNlaG9sZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaAppbmRleCBmMWE1Yjg4NDczYjg0YWY1YThh
YjI1YzNiZDMzZTQ3YWIzYjQ3YWUzLi5jZjlkMWIzNzljYzRmZjkxYzdlMzc1ZTZlYjMxNGY4YjA5
NDE3OGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlD
b2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaApAQCAtNDAsMTUgKzQwLDE1IEBA
IGNsYXNzIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyIGZpbmFsIDogcHVibGlj
IFJlbmRlckJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5l
clBsYWNlaG9sZGVyKiBjcmVhdGVBbm9ueW1vdXMoUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFk
KiwgUmVuZGVyQm94KiBzcGFubmVyLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwogCi0gICAg
dmlydHVhbCBib29sIGlzUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgUmVuZGVyQm94KiBzcGFubmVyKCkgY29u
c3QgeyByZXR1cm4gbV9zcGFubmVyOyB9CiAgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFk
KiBmbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9mbG93VGhyZWFkOyB9CiAKIHByaXZhdGU6
CiAgICAgUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIoUmVuZGVyTXVsdGlDb2x1
bW5GbG93VGhyZWFkKiwgUmVuZGVyQm94KiBzcGFubmVyLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2Fu
SGF2ZUNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVy
cmlkZSB7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIFJlbmRlckJveCogbV9zcGFubmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaAppbmRleCBjNWVmYjMyNDk0YzM4
MWE2MmY4NDU3MWFmMTc3YTY0NDZiM2MxZDVhLi4yYzI0NjlmNzdkYTQ2MGExNjZhODA1ZTdlNTBi
ZGNiNjNiZDAzYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQuaApAQCAtNTQsMTIgKzU0LDExIEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYg
cGFyZW50U3R5bGUpOwogCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2
b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFu
Z2U+PiYpIGNvbnN0OwogCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0
KCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0KCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCBtYXhQYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0
OwogICAgIAogICAgIExheW91dFJlY3QgZmxvd1RocmVhZFBvcnRpb25SZWN0Rm9yQ2xpcHBpbmco
Ym9vbCBpc0ZpcnN0UmVnaW9uSW5SYW5nZSwgYm9vbCBpc0xhc3RSZWdpb25JblJhbmdlKSBjb25z
dDsKQEAgLTEyMSw2ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVnaW9u
SWZOZWVkZWQoKTsKIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQiOyB9CiAKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjb21w
dXRlU3R5bGVJblJlZ2lvbihSZW5kZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxl
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1l
ZEZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dU
aHJlYWQuaAppbmRleCAxYjBlNzk0MDUzNmY3MDg0MDQ5Mjk3YTU3YmQ1MTU5NmRkMWQ4N2JkLi5k
ODczZjFiN2IzZmY1NjZlMjQ3YzVlZGVhOWEyZWYwMzA5MmIyZjA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCkBAIC04Myw3ICs4Myw3
IEBAIHB1YmxpYzoKICAgICBib29sIGlzTWFya2VkRm9yRGVzdHJ1Y3Rpb24oKSBjb25zdDsKICAg
ICB2b2lkIGdldFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPj4mLCBjb25zdCBSZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudCopIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5QnJlYWtBZnRl
ckNvbnRlbnQoTGF5b3V0VW5pdCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGFw
cGx5QnJlYWtBZnRlckNvbnRlbnQoTGF5b3V0VW5pdCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFs
IGJvb2wgY29sbGVjdHNHcmFwaGljc0xheWVyc1VuZGVyUmVnaW9ucygpIGNvbnN0IG92ZXJyaWRl
OwogCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJSZW5kZXJPYmpl
Y3RDdXN0b21TdHlsZShjb25zdCBSZW5kZXJPYmplY3QqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVGbG93Q2hpbGRJbmZvKFJlbmRlck9iamVjdCopIG92ZXJyaWRlIGZpbmFsOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVGbG93Q2hpbGRJbmZvKFJlbmRlck9iamVjdCopIG92ZXJyaWRlOwog
CiAgICAgTGF5b3V0VW5pdCBmbG93Q29udGVudEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxv
d0NvbnRlbnRCb3R0b207IH0KICAgICB2b2lkIGRpc3BhdGNoTmFtZWRGbG93RXZlbnRzKCk7CkBA
IC0xMTEsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVPdmVyZmxvdyhM
YXlvdXRVbml0LCBib29sID0gZmFsc2UpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGRpc3BhdGNoUmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50SWZOZWVkZWQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaAppbmRleCBkNWZiMWQzNWRiMDJl
N2ZhNTVmNWNiYTVlMDIzYmUyNThjZmJiMDFiLi45NzQzYTRmNDdlYTg5MGUxMDE3ZTdlMzU3ZDAw
NDdmMDgzNDE1NjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UXVvdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaApAQCAt
MzksNyArMzksNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3ll
ZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJRdW90ZSI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNR
dW90ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH07CisgICAgdmlydHVhbCBib29s
IGlzUXVvdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2
b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAppbmRleCAyOWQ3OWQ1
MmE0MzVkMzg2OGI0ZjNjZWYwZjVjN2FkMzcyYzJlOTdmLi5iM2YzMWI4MDhiYjYzNjhiMDYzMDcw
MmM2YzAyYmJjZmJlNzNhMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5oCkBAIC00OCw4ICs0OCw2IEBAIGNsYXNzIFJlbmRlck5hbWVkRmxvd1RocmVhZDsKIAogY2xh
c3MgUmVuZGVyUmVnaW9uIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAg
dmlydHVhbCBib29sIGlzUmVuZGVyUmVnaW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQotCiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKIAogICAgIHZvaWQgc2V0Rmxvd1Ro
cmVhZFBvcnRpb25SZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpIHsgbV9mbG93VGhyZWFkUG9y
dGlvblJlY3QgPSByZWN0OyB9CkBAIC0xNTAsNyArMTQ4LDggQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgY29tcHV0ZU92ZXJmbG93RnJvbUZsb3dUaHJlYWQoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUmVnaW9u
IjsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclJlZ2lvbigpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVnaW9uIjsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGluc2VydGVkSW50b1RyZWUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bEJlUmVtb3ZlZEZyb21UcmVlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxpY2EuaAppbmRleCBjOTQ1Y2JjZGIyZTY5OGEzZTY3OTkyYzRiZmMzZGFiOTI0ZThl
MDZhLi41ZjRhNWFlODIwNDBkZWIzZDE0Y2FmNTY1MDUwZTVhYzZjMjZhNjI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmgKQEAgLTM4LDEzICszOCwxMyBAQCBwdWJs
aWM6CiAgICAgUmVuZGVyUmVwbGljYShEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsK
ICAgICB2aXJ0dWFsIH5SZW5kZXJSZXBsaWNhKCk7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUmVwbGljYSI7IH0KKyAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyUmVwbGljYSI7IH0KIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIAogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNSZXBsaWNhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaAppbmRl
eCBjMzBhYTExMWU5ZTJmMzMzOWYyODM1MWJjZDM2NGQ5MmNlNzVlOGFiLi5iNzIwZTU3MDIxMDUz
NDViZjMwNTFmZTBjNjNkZjdlNjA4MTI2NTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieUJhc2UuaApAQCAtNDIsMTQgKzQyLDEzIEBAIHB1YmxpYzoKICAgICBSZW5kZXJS
dWJ5QmFzZShEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5S
ZW5kZXJSdWJ5QmFzZSgpOwogICAgIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJSdWJ5QmFzZSAoYW5vbnltb3VzKSI7IH0KLQotICAg
IHZpcnR1YWwgYm9vbCBpc1J1YnlCYXNlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJSdWJ5QmFzZSAoYW5vbnltb3VzKSI7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJv
b2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEVUZXh0QWxpZ24gdGV4dEFsaWdubWVudEZvckxpbmUoYm9v
bCBlbmRzV2l0aFNvZnRCcmVhaykgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdElubGlu
ZURpcmVjdGlvbkxpbmVCb3VuZHMoaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQsIGZsb2F0
JiBsb2dpY2FsTGVmdCwgZmxvYXQmIGxvZ2ljYWxXaWR0aCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGlzUnVieUJhc2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmly
dHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRl
clN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBFVGV4dEFsaWduIHRleHRBbGln
bm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91bmRzKGludCBleHBhbnNp
b25PcHBvcnR1bml0eUNvdW50LCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBsb2dpY2FsV2lk
dGgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgbWVyZ2VDaGlsZHJlbldpdGhCYXNlKFJlbmRl
clJ1YnlCYXNlKiB0b0Jsb2NrKTsKIAogICAgIHZvaWQgbW92ZUNoaWxkcmVuKFJlbmRlclJ1YnlC
YXNlKiB0b0Jhc2UsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCmluZGV4IGQ5ZGNlNGY3OGE2ZWU1ZTM0Y2E3Njk5
ZWM0YzEwMTNhNWY2OGM3Y2UuLjA3MmNiZmU0OTM5NWM4ZmIwMmM4M2ViZmMxMzNmZDU3MzRhMTgx
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaApAQCAtNDgsMjAg
KzQ4LDIwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzUnVieVRleHQoKSBjb25zdDsKICAgICBi
b29sIGhhc1J1YnlCYXNlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZTsKICAgICBSZW5kZXJSdWJ5VGV4
dCogcnVieVRleHQoKSBjb25zdDsKICAgICBSZW5kZXJSdWJ5QmFzZSogcnVieUJhc2UoKSBjb25z
dDsKICAgICBSZW5kZXJSdWJ5QmFzZSogcnVieUJhc2VTYWZlKCk7IC8vIGNyZWF0ZXMgdGhlIGJh
c2UgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogbGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91
dFNwZWNpYWxFeGNsdWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlz
Q2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRl
ck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93
ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
UmVuZGVyQmxvY2sqIGZpcnN0TGluZUJsb2NrKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUZpcnN0TGV0dGVyKCk7CisgICAgdmlydHVhbCBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxv
Y2soKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRmlyc3RMZXR0ZXIo
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0T3ZlcmhhbmcoYm9vbCBmaXJzdExpbmUsIFJlbmRl
ck9iamVjdCogc3RhcnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlciwgaW50JiBz
dGFydE92ZXJoYW5nLCBpbnQmIGVuZE92ZXJoYW5nKSBjb25zdDsKIApAQCAtNzEsMTAgKzcxLDEw
IEBAIHByb3RlY3RlZDoKICAgICBSZW5kZXJSdWJ5QmFzZSogY3JlYXRlUnVieUJhc2UoKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNSdWJ5UnVuKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJSZW5kZXJSdWJ5UnVuIChhbm9ueW1vdXMpIjsgfQotICAgIHZpcnR1YWwgYm9vbCBj
cmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJCbG9jayopIHsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc1J1YnlSdW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlclJ1YnlSdW4gKGFub255bW91cykiOyB9CisgICAgdmlydHVhbCBib29s
IGNyZWF0ZXNBbm9ueW1vdXNXcmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVMZWZ0b3ZlckFub255bW91c0Jsb2NrKFJlbmRlckJs
b2NrKikgb3ZlcnJpZGUgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKaW5kZXggZGYxMGI3NTJmMWFhZTUz
ZDUxMDg1YzI0ZjY5NzQ0MDNiZDY2YzkxNi4uZjZjYjMyZDYyZDcwYzY3MDFhNzY2NDg0NzdmYmJl
MTU1NTE0MTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIu
aApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBpbnQgbWluaW11bVRodW1iTGVuZ3Ro
KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNPdmVybGF5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNPdmVybGF5U2Nyb2xsYmFyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGZsb2F0IG9wYWNpdHkoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKaW5kZXggY2Vh
NzdiYjc0ZmFiMTA2ZThkYTQzOTY2NWYzOGY2OWViMTU2NDExYy4uZWU2NDIyYjdlMWI4NDBmYjgy
MTkzZWM0OGVlNDI0ZGE5ZjIwZWViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyUGFydC5oCkBAIC0zOSwxMSArMzksMTEgQEAgcHVibGljOgogICAgIAog
ICAgIHZpcnR1YWwgflJlbmRlclNjcm9sbGJhclBhcnQoKTsKIAotICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTY3JvbGxiYXJQYXJ0Ijsg
fQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJTY3JvbGxiYXJQYXJ0IjsgfQogICAgIAotICAgIHZpcnR1YWwgYm9vbCBy
ZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
cmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRl
OwogICAgIAogICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBM
YXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmKTsKIApAQCAtNTMsMTUgKzUzLDE1IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNvbnN0IG92ZXJyaWRl
IHsgQVNTRVJUKGlzSW50ZWdlclZhbHVlKG1fbWFyZ2luQm94LmxlZnQoKSkpOyByZXR1cm4gbV9t
YXJnaW5Cb3gubGVmdCgpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyBBU1NFUlQoaXNJbnRlZ2VyVmFsdWUobV9tYXJnaW5Cb3gucmlnaHQo
KSkpOyByZXR1cm4gbV9tYXJnaW5Cb3gucmlnaHQoKTsgfQogCi0gICAgdmlydHVhbCBib29sIGlz
UmVuZGVyU2Nyb2xsYmFyUGFydCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICBSZW5kZXJC
b3gqIHJlbmRlcmVyT3duaW5nU2Nyb2xsYmFyKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2
aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUpOwotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZElt
YWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0
IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2
b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7CisgICAgdmlydHVhbCBib29sIGlz
UmVuZGVyU2Nyb2xsYmFyUGFydCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgbGF5b3V0SG9yaXpvbnRhbFBhcnQoKTsKICAgICB2b2lkIGxheW91dFZlcnRp
Y2FsUGFydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
VGhlbWUuaAppbmRleCBlMzMxZDAwOWI3N2VkYTUxZWNlZDYyODI4Nzc3MzQyYzRhOGU0YjQ5Li41
MmUwMTZmNzNiZTUyMjA1MmIwNjNmMGNiNDkwZWU0ZDFhNmY5MzU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaApAQCAtMzQsNTEgKzM0LDUx
IEBAIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFNjcm9sbGJhcjsKIGNsYXNzIFNj
cm9sbFZpZXc7CiAKLWNsYXNzIFJlbmRlclNjcm9sbGJhclRoZW1lIDogcHVibGljIFNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlIHsKK2NsYXNzIFJlbmRlclNjcm9sbGJhclRoZW1lIGZpbmFsIDogcHVi
bGljIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5SZW5k
ZXJTY3JvbGxiYXJUaGVtZSgpIHt9OworICAgIHZpcnR1YWwgflJlbmRlclNjcm9sbGJhclRoZW1l
KCkgeyB9CiAgICAgCi0gICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJh
ckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUo
KS0+c2Nyb2xsYmFyVGhpY2tuZXNzKGNvbnRyb2xTaXplKTsgfQorICAgIHZpcnR1YWwgaW50IHNj
cm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkgb3ZlcnJp
ZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcyhj
b250cm9sU2l6ZSk7IH0KIAotICAgIHZpcnR1YWwgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBi
dXR0b25zUGxhY2VtZW50KCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkt
PmJ1dHRvbnNQbGFjZW1lbnQoKTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyQnV0dG9uc1BsYWNl
bWVudCBidXR0b25zUGxhY2VtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFy
VGhlbWU6OnRoZW1lKCktPmJ1dHRvbnNQbGFjZW1lbnQoKTsgfQogCi0gICAgdmlydHVhbCBib29s
IHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3Kiwg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCktPnNob3VsZENlbnRlck9uVGh1bWIoc2Nyb2xsYmFyLCBldmVudCk7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBvdmVycmlkZSB7IHJl
dHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2hvdWxkQ2VudGVyT25UaHVtYihzY3JvbGxi
YXIsIGV2ZW50KTsgfQogICAgIAotICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xs
VGltZXJEZWxheSgpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5pbml0aWFsQXV0
b3Njcm9sbFRpbWVyRGVsYXkoKTsgfQotICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1l
ckRlbGF5KCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPmF1dG9zY3JvbGxUaW1l
ckRlbGF5KCk7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVs
YXkoKSBvdmVycmlkZSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+aW5pdGlhbEF1
dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBhdXRvc2Nyb2xsVGlt
ZXJEZWxheSgpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5hdXRv
c2Nyb2xsVGltZXJEZWxheSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxi
YXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCktPnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
KSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+dW5yZWdpc3RlclNjcm9sbGJhcihz
Y3JvbGxiYXIpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1l
Ojp0aGVtZSgpLT5yZWdpc3RlclNjcm9sbGJhcihzY3JvbGxiYXIpOyB9CisgICAgdmlydHVhbCB2
b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikg
b3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVucmVnaXN0ZXJTY3Jv
bGxiYXIoc2Nyb2xsYmFyKTsgfQogCi0gICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3Ro
KFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVu
Z3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGJ1dHRvblNp
emVzQWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBpbnQmIGJlZm9yZVNpemUs
IGludCYgYWZ0ZXJTaXplKTsKICAgICAKICAgICBzdGF0aWMgUmVuZGVyU2Nyb2xsYmFyVGhlbWUq
IHJlbmRlclNjcm9sbGJhclRoZW1lKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wg
aGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopOwotICAgIHZpcnR1YWwgYm9vbCBoYXNU
aHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25z
KFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGhhc1Ro
dW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEludFJl
Y3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBi
b29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9u
UmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tC
dXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRv
blJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5n
ID0gZmFsc2UpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCB2b2lkIHdpbGxQYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxi
YXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRQYWludFNjcm9s
bGJhcihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOwog
ICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3ND
b250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
cmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBj
b25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGlj
c0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxi
YXJQYXJ0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xs
YmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBj
b25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgY29uc3RyYWlu
VHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNl
cyhTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgKaW5kZXggZjk5MzI3OTMyNzY2YTI2OTgwZTQ4MzQ2
NWIyOWE5NTAzNzVkNzMzNC4uN2Y3ZjM1MjY3ZDMxMjA3ODUzNWIyZGE4NWFjNTkyM2FjOWFlMDIy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luLmgKQEAgLTQ5LDExICs0OSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZnJhbWVPd25l
ckVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4iOyB9CiAKLSAg
ICB2aXJ0dWFsIEN1cnNvckRpcmVjdGl2ZSBnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBD
dXJzb3ImKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTbmFwc2hv
dHRlZFBsdWdJbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
aXJ0dWFsIEN1cnNvckRpcmVjdGl2ZSBnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBDdXJz
b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTbmFwc2hvdHRlZFBsdWdJ
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAgICAKLSAgICB2
aXJ0dWFsIGJvb2wgY2FuSGF2ZVdpZGdldCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNhbkhhdmVXaWRnZXQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBwYWludFNuYXBzaG90KFBhaW50SW5mbyYs
IGNvbnN0IExheW91dFBvaW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKaW5kZXggZDYyYjAwODM3ZmNiOWI2N2M1
NWU4Zjk5ZTJjZTM3ZDliMjUwODQ2Ny4uMDY3OWEwZmJjOWJhODFjY2QxMGMwNDhmYzU2NDgwNWQw
ZWEzYTlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lLmgKQEAgLTM4LDE3ICszOCwxNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBib29s
IGlzVGV4dEFyZWEoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlz
VGV4dEFyZWEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFs
IGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jiwg
Y29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBmbG9hdCBnZXRBdmVyYWdlQ2hhcldpZHRoKCk7Ci0gICAgdmlydHVhbCBMYXlvdXRV
bml0IHByZWZlcnJlZENvbnRlbnRMb2dpY2FsV2lkdGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGZsb2F0IGdldEF2ZXJhZ2VDaGFyV2lkdGgoKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIExheW91dFVuaXQgcHJlZmVycmVkQ29udGVudExvZ2ljYWxXaWR0aChmbG9hdCBjaGFy
V2lkdGgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlQ29u
dHJvbExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsaW5lSGVpZ2h0LCBMYXlvdXRVbml0IG5vbkNv
bnRlbnRIZWlnaHQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9z
aXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExp
bmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0OworICAgIHZp
cnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwg
TGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmlu
Z0xpbmUpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBQYXNzUmVmPFJlbmRlclN0eWxl
PiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29u
c3Q7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNsdWRlZENoaWxk
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7CisgICAgdmlydHVhbCBQYXNzUmVmPFJlbmRlclN0eWxl
PiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNs
dWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dEZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZy
YWdtZW50LmgKaW5kZXggNzIzMWI1NmY1N2U4ZjA0OGU4NTc0MWI0MjAyMDRkNDg0OWQxMjFiZi4u
ODJkY2IxOWUyODAyM2MxYzgxM2YzYzgxMTFkYTUzMzFhZjc0Y2E5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaApAQCAtMzksOCArMzksNiBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0RnJhZ21lbnQoKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBpc1RleHRGcmFnbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LQogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHVuc2lnbmVkIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydDsgfQpAQCAtNTks
NiArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbHRUZXh0KGNvbnN0IFN0cmluZyYgYWx0
VGV4dCkgeyBtX2FsdFRleHQgPSBhbHRUZXh0OyB9CiAgICAgCiBwcml2YXRlOgorICAgIHZpcnR1
YWwgYm9vbCBpc1RleHRGcmFnbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVE
ZXN0cm95ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVHdGsuaAppbmRleCAwZTEwNjViNDk2YzcyZGVmNDIwY2NiNmMxOTRhNjY2YTVjNDdiMTJkLi5m
ZTFmZTZmMmE4ZGI2Mjc0ODIyOGNlN2NkOWFmNGZiZjRkYjdiNzg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuaApAQCAtMTE2LDEwICsxMTYsMTAgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0Jiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIHBhaW50VGV4dEFyZWEoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICBpbnQgcG9wdXBJbnRlcm5hbFBh
ZGRpbmdMZWZ0KFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IHBvcHVwSW50
ZXJuYWxQYWRkaW5nUmlnaHQoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICBpbnQg
cG9wdXBJbnRlcm5hbFBhZGRpbmdUb3AoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdCb3R0b20oUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ0xlZnQoUmVuZGVyU3R5
bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGlu
Z1JpZ2h0KFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBpbnQgcG9w
dXBJbnRlcm5hbFBhZGRpbmdUb3AoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ0JvdHRvbShSZW5kZXJTdHlsZSYpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgLy8gVGhlIE1hYyBwb3J0IGRpZmZlcmVudGlhdGVzIGJldHdlZW4g
dGhlICJtZW51IGxpc3QiIGFuZCB0aGUgIm1lbnUgbGlzdCBidXR0b24uIgogICAgIC8vIFRoZSBm
b3JtZXIgaXMgdXNlZCB3aGVuIGEgbWVudSBsaXN0IGJ1dHRvbiBoYXMgYmVlbiBzdHlsZWQuIFRo
aXMgaXMgdXNlZCB0byBlbnN1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLmgKaW5kZXggY2Q4ZWYyY2M0MjUzOTIzZTU5ZjAzYTM4MDRmNDNlM2QxY2VjYzY5Ny4uMWM4
NDM1N2FjZGMzN2UzNmJkMGJlYThiYzliMTBjYzRiMTIyYTY4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAgICAg
Ci1jbGFzcyBSZW5kZXJUaGVtZUlPUyA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CitjbGFzcyBSZW5k
ZXJUaGVtZUlPUyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCmluZGV4IGFlYjQzOGYwMTU3YWE5MjhjZjMyZDQ2NTky
YWFiMDM5NTVhMTJjZjIuLmNjODM4ZWYxNDNiOWMwYmNlZjZlNGRiZDQxMTUyYjdiYTllNzg1Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCkBAIC00NywxMiAr
NDcsMTIgQEAgc3RydWN0IFRoZW1lRGF0YSB7CiAgICAgdW5zaWduZWQgbV9jbGFzc2ljU3RhdGU7
CiB9OwogCi1jbGFzcyBSZW5kZXJUaGVtZVdpbiA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CitjbGFz
cyBSZW5kZXJUaGVtZVdpbiBmaW5hbDogcHVibGljIFJlbmRlclRoZW1lIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CiAKLSAgICB2aXJ0dWFs
IFN0cmluZyBleHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgZXh0
cmFRdWlya3NTdHlsZVNoZWV0KCk7CisgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFEZWZhdWx0U3R5
bGVTaGVldCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhUXVpcmtzU3R5bGVT
aGVldCgpIG92ZXJyaWRlOwogCiAgICAgLy8gQSBtZXRob2QgYXNraW5nIGlmIHRoZSB0aGVtZSdz
IGNvbnRyb2xzIGFjdHVhbGx5IGNhcmUgYWJvdXQgcmVkcmF3aW5nIHdoZW4gaG92ZXJlZC4KICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVv
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAppbmRleCBlYTYwOGVj
ODE2NjBiYjA0NzcxNWMzOTJlYzRjZDc0YzBmNzU2NzA0Li43NDgyNGI3YzY5YjM5YTMzYzFlMDIz
NjllZTgzNzczMTRlMGNjMDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlkZW8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8u
aApAQCAtNTAsMzcgKzUwLDM3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcmVxdWlyZXNJbW1lZGlh
dGVDb21wb3NpdGluZygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIHNob3VsZERpc3BsYXlW
aWRlbygpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRGlzcGxheVZpZGVvKCkgY29uc3Q7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBtZWRpYUVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVG
cm9tRWxlbWVudCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVD
aGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCkgb3ZlcnJp
ZGU7CiAgICAgTGF5b3V0U2l6ZSBjYWxjdWxhdGVJbnRyaW5zaWNTaXplKCk7CiAgICAgdm9pZCB1
cGRhdGVJbnRyaW5zaWNTaXplKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdy
YXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopOworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNo
YW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0Kikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyVmlk
ZW8iOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlclZpZGVvIjsgfQogCi0gICAgdmlydHVhbCBib29sIHJlcXVpcmVz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVmlkZW8o
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzVmlk
ZW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1
YWwgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkICA9IENvbXB1dGVBY3R1YWwpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsSGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIExheW91dFVuaXQg
bWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldExlZnQoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0VG9wKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBM
YXlvdXRVbml0IG9mZnNldFdpZHRoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG9m
ZnNldEhlaWdodCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRMZWZ0KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldFRvcCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRXaWR0aCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRIZWlnaHQoKSBjb25zdCBvdmVy
cmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCB1cGRhdGVQbGF5ZXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oCmluZGV4IGJmZmQyMmNkMmFmNmJiYjljMzQ1MTk5OGVl
NjNjMzhlNGVmYTUzMjEuLjI3NWY4NjZlNzU5ODVmODZkNjA2ZmYyNjhhMjA2ZDk4NzFlZjM1ZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuaApAQCAtNDEsMTIgKzQx
LDEyIEBAIGNsYXNzIFJlbmRlclRleHQ7CiBzdHJ1Y3QgVGV4dEF1dG9zaXppbmdXaW5kb3dJbmZv
Owogc3RydWN0IFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm87CiAKLWNsYXNzIFRleHRBdXRvc2l6
ZXIgeworY2xhc3MgVGV4dEF1dG9zaXplciBmaW5hbCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoVGV4dEF1dG9zaXplcik7CiAKIHB1YmxpYzoKICAgICBleHBsaWNpdCBUZXh0QXV0b3NpemVy
KERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCB+VGV4dEF1dG9zaXplcigpOworICAgIH5UZXh0QXV0
b3NpemVyKCk7CiAKICAgICBib29sIHByb2Nlc3NTdWJ0cmVlKFJlbmRlck9iamVjdCogbGF5b3V0
Um9vdCk7CiAgICAgdm9pZCByZWNhbGN1bGF0ZU11bHRpcGxpZXJzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LmgKaW5k
ZXggY2I4OTU3NmVmZmQ1NDg1OGI0MDA5NmNmNWZmZmJlMTI1MmMxNWZiZC4uYTM0NzNlZWE4M2Fk
M2NkNTc4NGYyNDlmYmNhNDNkNGZhY2I3YTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaApAQCAtMzksNyArMzks
NyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgZmxvYXQgdmlydHVh
bExvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBmbG9hdCB2
aXJ0dWFsTG9naWNhbEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAppbmRleCBjOTRhMjFkN2RiYzI3NGU5ODNkYjhl
NzYwZjJmNTEwNjI3YTA0YWUxLi5mOGYxMmE4ZmEzYmExNDM0NzU4ZWZiN2ZkNGJiYzNjNzBjNTNl
ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxUYWJsZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxUYWJsZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MVGFibGUiOyB9
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE1lbmNsb3NlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE1lbmNsb3NlLmgKaW5kZXggNDNiNDYzNDgxYjlkNDM5NmFkMjg1ZDlmMGZiMjQyYTZh
NjhlMWJmZS4uNzY5ODQ4OTliYjkwNDQ3ZTU5NGUyYTJmYTIyYWM4YTQ2MmMxOWI2YiAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9z
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVu
Y2xvc2UuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTWF0aE1MTWVuY2xv
c2UoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyTWF0aE1M
TWVuY2xvc2UiOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTE1lbmNsb3NlIjsgfQogICAgIHZpcnR1YWwg
dm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVMb2dpY2FsSGVpZ2h0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVm
b3JlQ2hpbGQgPSBudWxscHRyKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAppbmRleCBkNGI2OWQ4ZjUx
MTU2NjExOGE1MmMyMjBjMTVjZmU4YTFlMWNiMmJhLi4zNjk5YjcxY2Q2ODg2YTc0YzM0MGQ5Nzcz
ZDljOTAwNGRiZjNmNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCkBAIC03MiwxMiArNzIsMTIgQEAgcHVibGlj
OgogICAgIC8vIEZJWE1FOiBUaGUgZGlzcGxheXN0eWxlIHByb3BlcnR5IGlzIG5vdCBpbXBsZW1l
bnRlZCAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODczNykuCiAg
ICAgYm9vbCBpc0xhcmdlT3BlcmF0b3JJbkRpc3BsYXlTdHlsZSgpIGNvbnN0IHsgcmV0dXJuICFo
YXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpTdHJldGNoeSkgJiYgaGFz
T3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6TGFyZ2VPcCk7IH0KIAotICAg
IHZvaWQgdXBkYXRlU3R5bGUoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlU3R5bGUoKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgdm9pZCB1cGRhdGVUb2tlbkNvbnRl
bnQoY29uc3QgU3RyaW5nJiBvcGVyYXRvclN0cmluZyk7Ci0gICAgdm9pZCB1cGRhdGVUb2tlbkNv
bnRlbnQoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVG9rZW5Db250
ZW50KCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVPcGVyYXRvclByb3BlcnRpZXMo
KTsKICAgICB2b2lkIHNldE9wZXJhdG9yRmxhZ0FuZFNjaGVkdWxlTGF5b3V0SWZOZWVkZWQoTWF0
aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0
ZVZhbHVlKTsKICAgICBMYXlvdXRVbml0IHRyYWlsaW5nU3BhY2VFcnJvcigpOwpAQCAtMTU3LDcg
KzE1Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVs
bGlzaGVkT3BlcmF0b3IoKSBvdmVycmlkZSB7IHJldHVybiB0aGlzOyB9CiAgICAgdm9pZCByZWJ1
aWxkVG9rZW5Db250ZW50KGNvbnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcpOwotICAgIHZvaWQg
dXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJv
bUVsZW1lbnQoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dTdHJldGNoaW5nKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oCmluZGV4IGVjY2Q2MWM4NGRjZGY5OTIw
NzM0NTdiZDMzNzIzYzEzMzhiODMzZGYuLjVhMmE3OWZjNjZhYTE1ODhhMWQ0ZjRlOGQ2N2E3NWJi
NGJmZDhiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MT3BlcmF0b3IgewogcHVibGljOgogICAgIFJlbmRlck1h
dGhNTFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RyZXRjaFRvKExheW91dFVuaXQgaGVpZ2h0QWJvdmVCYXNlbGluZSwg
TGF5b3V0VW5pdCBkZXB0aEJlbG93QmFzZWxpbmUpOworICAgIHZpcnR1YWwgdm9pZCBzdHJldGNo
VG8oTGF5b3V0VW5pdCBoZWlnaHRBYm92ZUJhc2VsaW5lLCBMYXlvdXRVbml0IGRlcHRoQmVsb3dC
YXNlbGluZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVp
Z2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dp
Y2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KSBvdmVy
cmlkZTsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgaXNSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0
b3IgKGFub255bW91cykiIDogIlJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvciI7IH0KLSAgICB2
b2lkIHNldE9wZXJhdG9yUHJvcGVydGllcygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRPcGVyYXRvclByb3BlcnRpZXMoKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb290LmgKaW5kZXggYWYwMDBhNzJjMzkzNzBhZWMyZjM4MjI1ZGU1OTY1M2M1Y2NjYmU4Yy4u
OGFjNDhkNDUxOTUxMDk3MzQ5OTI2MGMyNTczZWU3YWMwMDFmZDQ4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgKQEAgLTczLDcg
KzczLDcgQEAgcHJpdmF0ZToKIH07CiAKIC8vIFRoZXNlIGFyZSBzcGVjaWZpYyB3cmFwcGVycyBm
b3IgdGhlIGluZGV4IGFuZCBiYXNlLCB0aGF0IGFzayB0aGUgcGFyZW50IHRvIHJlc3RydWN0dXJl
IHRoZSByZW5kZXJlcnMgYWZ0ZXIgY2hpbGQgcmVtb3ZhbC4KLWNsYXNzIFJlbmRlck1hdGhNTFJv
b3RXcmFwcGVyIDogcHVibGljIFJlbmRlck1hdGhNTFJvdyB7CitjbGFzcyBSZW5kZXJNYXRoTUxS
b290V3JhcHBlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxSb3cgewogCiBmcmllbmQgY2xh
c3MgUmVuZGVyTWF0aE1MUm9vdDsKIApAQCAtODMsOSArODMsOSBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgUmVuZGVyT2JqZWN0KiByZW1vdmVDaGlsZFdpdGhvdXRSZXN0cnVjdHVyaW5nKFJl
bmRlck9iamVjdCYpOwotICAgIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIHJlbW92ZUNoaWxkKFJlbmRl
ck9iamVjdCYpIG92ZXJyaWRlOwogICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MUm9v
dFdyYXBwZXI+IGNyZWF0ZUFub255bW91c1dyYXBwZXIoUmVuZGVyTWF0aE1MUm9vdCogcmVuZGVy
T2JqZWN0KTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxSb290V3JhcHBlcigpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNS
ZW5kZXJNYXRoTUxSb290V3JhcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIiOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAppbmRleCBiYTVkZjg4MjU3
ZDY4ZGJkMTQwMjE0NmMxY2UwZWY1YTA3Nzg3MDI3Li5iODdkOTY0MDRjODIxYmMyYzg3NTA4NWMz
Nzk4OGU2ZDBmMGVlNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm93LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
dXBkYXRlT3BlcmF0b3JQcm9wZXJ0aWVzKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFJvdygpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKaW5kZXggNzU0MjY3ODJlMGQ0ZTUyM2Y3
NjA5MjcxNzhkMGZiMjMyMjg5ZTVmYS4uMWI1ZTcxZDY2NjEyM2FiNTlmN2QzZmVmYzM3ODhmMGQ0
YzcwMzUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTY3JpcHRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTY3JpcHRzLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MU2NyaXB0czsKIAotY2xhc3MgUmVuZGVyTWF0aE1M
U2NyaXB0c1dyYXBwZXIgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgeworY2xhc3MgUmVuZGVy
TWF0aE1MU2NyaXB0c1dyYXBwZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewog
CiBmcmllbmQgY2xhc3MgUmVuZGVyTWF0aE1MU2NyaXB0czsKIApAQCAtNjYsNyArNjYsNyBAQCBw
cml2YXRlOgogfTsKIAogLy8gUmVuZGVyIGEgYmFzZSB3aXRoIHNjcmlwdHMuCi1jbGFzcyBSZW5k
ZXJNYXRoTUxTY3JpcHRzIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKK2NsYXNzIFJlbmRl
ck1hdGhNTFNjcmlwdHMgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogCiBmcmll
bmQgY2xhc3MgUmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXI7CiAKQEAgLTc1LDE3ICs3NSwxNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQs
IFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAgICAgCi0g
ICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCk7
CisgICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9y
KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBv
dmVycmlkZTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAgICAgCiBwcml2YXRlOgogICAgIHZvaWQg
YWRkQ2hpbGRJbnRlcm5hbChib29sIG5vcm1hbEluc2VydGlvbiwgUmVuZGVyT2JqZWN0KiBjaGls
ZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwogICAgIFJlbmRlck9iamVjdCogcmVt
b3ZlQ2hpbGRJbnRlcm5hbChib29sIG5vcm1hbFJlbW92YWwsIFJlbmRlck9iamVjdCYgY2hpbGQp
OwogCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MU2NyaXB0cygpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRo
TUxTY3JpcHRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJN
YXRoTUxTY3JpcHRzIjsgfQogCiAgICAgdm9pZCBmaXhBbm9ueW1vdXNTdHlsZUZvclN1YlN1cFBh
aXIoUmVuZGVyT2JqZWN0KiBzdWJTdXBQYWlyLCBib29sIGlzUG9zdFNjcmlwdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKaW5k
ZXggZjVhZDViYmEwNGYwYjUxYjAwNjkxYjFiZTI4NDI4OGRmYmUzMTYyOC4uMGE0ZDY0YWZjZGJk
NzJhNmFiYmMyNzY3ZmQ2MWIyOGM4ZDE2YzM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaApAQCAtNDEsMTYgKzQxLDE2IEBA
IHB1YmxpYzoKIAogICAgIE1hdGhNTFRleHRFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8TWF0aE1MVGV4dEVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxUb2tlbigpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9OwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5l
d0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlVG9rZW5Db250ZW50KCk7Ci0gICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92ZXJyaWRl
OwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjcmVhdGVXcmFwcGVySWZOZWVkZWQoKTsKIAogcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxUb2tlbigpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpc0Fub255bW91cygpID8gIlJlbmRlck1h
dGhNTFRva2VuIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJNYXRoTUxUb2tlbiI7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdHlsZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxV
bmRlck92ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
VW5kZXJPdmVyLmgKaW5kZXggYmRlNTkxNTY3ODc4OGMxNTg2MGQ4ZjBkZGI5OTQyOTc1ZjkzYjc5
OS4uNmY2NTNkNTFjMDA4MGFmODAwYmZmYjQ4OTRhNzRhOTAzN2NmNjZkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zl
ci5oCkBAIC0zMiwxNiArMzIsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotY2xh
c3MgUmVuZGVyTWF0aE1MVW5kZXJPdmVyIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKK2Ns
YXNzIFJlbmRlck1hdGhNTFVuZGVyT3ZlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9j
ayB7CiBwdWJsaWM6CiAgICAgUmVuZGVyTWF0aE1MVW5kZXJPdmVyKEVsZW1lbnQmLCBQYXNzUmVm
PFJlbmRlclN0eWxlPik7CiAgICAgCi0gICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciog
dW5lbWJlbGxpc2hlZE9wZXJhdG9yKCk7CisgICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRv
ciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGludCBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MVW5kZXJPdmVy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9Cb3hTaGFwZS5oCmluZGV4IDgwOWJhODI0NDY4ODY2MDk3MGUyM2ZlNjFhZGQ4
Y2I0Y2ZjODBlYWEuLmMyYjE3NzEzN2MzNzVhMjZhNWRiZDZjMWUyNzVkOTU1OTgxZjkzMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmgKQEAgLTQwLDcgKzQw
LDcgQEAgY2xhc3MgUmVuZGVyQm94OwogCiBSb3VuZGVkUmVjdCBjb21wdXRlUm91bmRlZFJlY3RG
b3JCb3hTaGFwZShDU1NCb3hUeXBlLCBjb25zdCBSZW5kZXJCb3gmKTsKIAotY2xhc3MgQm94U2hh
cGUgOiBwdWJsaWMgU2hhcGUgeworY2xhc3MgQm94U2hhcGUgZmluYWwgOiBwdWJsaWMgU2hhcGUg
ewogcHVibGljOgogICAgIEJveFNoYXBlKGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGJvdW5kcykK
ICAgICAgICAgOiBtX2JvdW5kcyhib3VuZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9Qb2x5Z29uU2hhcGUuaAppbmRleCA0NGZlNjI5N2FkZWQyZThhYThjOTJiNWNkNjk1
NzMyMjkxODRmYTE2Li5hZTUwYjBmN2UxZDA4ODIxOTllNGI2YjBlMmYzNTYyODk5MDJiOWUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmgKQEAg
LTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBPZmZzZXRQb2x5
Z29uRWRnZSA6IHB1YmxpYyBWZXJ0ZXhQYWlyIHsKK2NsYXNzIE9mZnNldFBvbHlnb25FZGdlIGZp
bmFsIDogcHVibGljIFZlcnRleFBhaXIgewogcHVibGljOgogICAgIE9mZnNldFBvbHlnb25FZGdl
KGNvbnN0IEZsb2F0UG9seWdvbkVkZ2UmIGVkZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQog
ICAgICAgICA6IG1fdmVydGV4MShlZGdlLnZlcnRleDEoKSArIG9mZnNldCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaAppbmRleCBiN2IwMTM1NmFkNDky
ZDAyMjAzOTQwYjlhZjNmNDliYTVhY2FlZDYyLi5jMDliNTJlYzU2OGQ1NjE5NTZhYmFjNTI0Zjhl
NzVmMjZlN2I2MmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1Jhc3RlclNoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0
ZXJTaGFwZS5oCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fb2Zmc2V0Owog
fTsKIAotY2xhc3MgUmFzdGVyU2hhcGUgOiBwdWJsaWMgU2hhcGUgeworY2xhc3MgUmFzdGVyU2hh
cGUgZmluYWwgOiBwdWJsaWMgU2hhcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJhc3Rl
clNoYXBlKTsKIHB1YmxpYzoKICAgICBSYXN0ZXJTaGFwZShzdGQ6OnVuaXF1ZV9wdHI8UmFzdGVy
U2hhcGVJbnRlcnZhbHM+IGludGVydmFscywgY29uc3QgSW50U2l6ZSYgbWFyZ2luUmVjdFNpemUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNo
YXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmgK
aW5kZXggZjBlM2YwZjc3YTU3Y2RmNTUxNWQ2ZmY3YjkzZmIwNzk0M2ExM2U2OC4uYjAzNjFjNjEy
MjI3MTE0NWI1OWU3OTJhODZhYzE0ZmUwOGZjZDY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuaApAQCAtMzksNyArMzksNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJlY3RhbmdsZVNoYXBlIDogcHVibGljIFNoYXBl
IHsKK2NsYXNzIFJlY3RhbmdsZVNoYXBlIGZpbmFsIDogcHVibGljIFNoYXBlIHsKIHB1YmxpYzoK
ICAgICBSZWN0YW5nbGVTaGFwZShjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvYXRT
aXplJiByYWRpaSkKICAgICAgICAgOiBtX2JvdW5kcyhib3VuZHMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCmluZGV4IGNiNzdjY2U2NmFjYmZjY2NjMDc5
OGJlZmU2NDlmOGUwNjIxOWIzZWQuLjQ5NDhkZjE3OWY1OTFjZjQ5NTRjMzVkY2Y0ZmVjODI4N2Iw
ZGIyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1No
YXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5o
CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKIAogfTsKIAotY2xhc3MgQmFzaWNTaGFwZUNp
cmNsZSA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKK2NsYXNzIEJhc2ljU2hhcGVDaXJjbGUgZmluYWwg
OiBwdWJsaWMgQmFzaWNTaGFwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QmFz
aWNTaGFwZUNpcmNsZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljU2hhcGVD
aXJjbGUpOyB9CiAKQEAgLTE3MCw3ICsxNzAsNyBAQCBwcml2YXRlOgogICAgIEJhc2ljU2hhcGVS
YWRpdXMgbV9yYWRpdXM7CiB9OwogCi1jbGFzcyBCYXNpY1NoYXBlRWxsaXBzZSA6IHB1YmxpYyBC
YXNpY1NoYXBlIHsKK2NsYXNzIEJhc2ljU2hhcGVFbGxpcHNlIGZpbmFsIDogcHVibGljIEJhc2lj
U2hhcGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhc2ljU2hhcGVFbGxpcHNl
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNTaGFwZUVsbGlwc2UpOyB9CiAK
QEAgLTE5OCw3ICsxOTgsNyBAQCBwcml2YXRlOgogICAgIEJhc2ljU2hhcGVSYWRpdXMgbV9yYWRp
dXNZOwogfTsKIAotY2xhc3MgQmFzaWNTaGFwZVBvbHlnb24gOiBwdWJsaWMgQmFzaWNTaGFwZSB7
CitjbGFzcyBCYXNpY1NoYXBlUG9seWdvbiBmaW5hbCA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY1NoYXBlUG9seWdvbj4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljU2hhcGVQb2x5Z29uKTsgfQogCkBAIC0yMjQsNyAr
MjI0LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8TGVuZ3RoPiBtX3ZhbHVlczsKIH07CiAKLWNs
YXNzIEJhc2ljU2hhcGVJbnNldCA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKK2NsYXNzIEJhc2ljU2hh
cGVJbnNldCBmaW5hbCA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxCYXNpY1NoYXBlSW5zZXQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBCYXNpY1NoYXBlSW5zZXQpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgKaW5kZXggNTY3M2IwNzk3ZjkzYmY0MDU3ZWQ3NDc5
OTUyNDdlNGM4YjhmNTQwMi4uYjRkMTkxMDIzYmNlMzNkNDQ2MzdmOTQxMzUzMDQ5NGJhYzIxNDU2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGlu
Z0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGlu
Z0ltYWdlLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gc3R5bGUg
cmVzb2x1dGlvbiwgaW4gb3JkZXIgdG8gYXZvaWQgbG9hZGluZyBpbWFnZXMgdGhhdCBhcmUgbm90
IHJlZmVyZW5jZWQgYnkgdGhlIGZpbmFsIHN0eWxlLgogLy8gVGhleSBzaG91bGQgbmV2ZXIgZXhp
c3QgaW4gYSBSZW5kZXJTdHlsZSBhZnRlciBpdCBoYXMgYmVlbiByZXR1cm5lZCBmcm9tIHRoZSBz
dHlsZSBzZWxlY3Rvci4KIAotY2xhc3MgU3R5bGVQZW5kaW5nSW1hZ2UgOiBwdWJsaWMgU3R5bGVJ
bWFnZSB7CitjbGFzcyBTdHlsZVBlbmRpbmdJbWFnZSBmaW5hbCA6IHB1YmxpYyBTdHlsZUltYWdl
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVBlbmRpbmdJbWFnZT4gY3Jl
YXRlKENTU1ZhbHVlKiB2YWx1ZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUGVuZGluZ0lt
YWdlKHZhbHVlKSk7IH0KIApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
RmxvYXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgLyptdWx0aXBs
aWVyKi8pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0U2l6ZSgpOyB9CiAgICAgdmlydHVh
bCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmlu
c2ljRGltZW5zaW9ucyhjb25zdCBSZW5kZXJFbGVtZW50KiwgTGVuZ3RoJiAvKiBpbnRyaW5zaWNX
aWR0aCAqLyAsIExlbmd0aCYgLyogaW50cmluc2ljSGVpZ2h0ICovLCBGbG9hdFNpemUmIC8qIGlu
dHJpbnNpY1JhdGlvICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0Rp
bWVuc2lvbnMoY29uc3QgUmVuZGVyRWxlbWVudCosIExlbmd0aCYgLyogaW50cmluc2ljV2lkdGgg
Ki8gLCBMZW5ndGgmIC8qIGludHJpbnNpY0hlaWdodCAqLywgRmxvYXRTaXplJiAvKiBpbnRyaW5z
aWNSYXRpbyAqLykgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRh
aW5lclNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCosIGNv
bnN0IEZsb2F0U2l6ZSYsIGZsb2F0KSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWRk
Q2xpZW50KFJlbmRlckVsZW1lbnQqKSBvdmVycmlkZSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAppbmRleCA3YTRmZGY4YjUzNjk4NmYyZThkMTMy
YzMzNjg0MDJiNGQxZDUyZGQzLi5kZGM1YjkyNmQ1YmYxMTAwOWVkNWFmODk3NDY0MDViNTMxYjJk
ODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Js
b2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5o
CkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJv
bVN0eWxlKCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJTVkdC
bG9jaygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH07CisgICAgdmlydHVh
bCBib29sIGlzUmVuZGVyU1ZHQmxvY2soKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAppbmRleCA0
Mjk1OGQ0ZWMyYWJiYzk5ZGE1MGQ4MjQ4YTA4MDZkY2VmMzMwM2Y3Li44NzI1M2FkY2M3MTA0Njdh
NTdkMTAwOTBmNzUwNDZiZDg2ZTEyOGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKQEAgLTQyLDcgKzQyLDYgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIFJlbmRlclNWR0NvbnRhaW5lcihTVkdFbGVtZW50JiwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pOwogCi0gICAgdmlydHVhbCBib29sIGlzU1ZHQ29udGFpbmVyKCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdDb250YWluZXIi
OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNzMsNiArNzIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCB1cGRhdGVDYWNoZWRCb3VuZGFyaWVzKCk7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBi
b29sIGlzU1ZHQ29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQorCiAgICAgRmxvYXRSZWN0IG1fb2JqZWN0Qm91bmRpbmdCb3g7CiAgICAgYm9vbCBtX29iamVj
dEJvdW5kaW5nQm94VmFsaWQ7CiAgICAgRmxvYXRSZWN0IG1fc3Ryb2tlQm91bmRpbmdCb3g7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCmluZGV4
IGQ2MmE1NjA0ZWFiZTM2OThmOTkxMzNhMjE1NDA1NDNiZGZmY2YyMGQuLjMwMjdmMTBjMGVkZTg4
N2RkMGNmZWVkMmNlMDI4M2VlNzA1M2MyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCkBAIC0zNywxNSArMzcsMTUgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflJlbmRlclNWR0VsbGlwc2UoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHRWxsaXBz
ZSI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHRWxsaXBzZSI7IH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVTaGFwZUZyb21FbGVtZW50KCk7Ci0gICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX3VzZVBhdGhGYWxsYmFjayA/IFJlbmRlclNWR1NoYXBlOjppc0VtcHR5KCkgOiBt
X2ZpbGxCb3VuZGluZ0JveC5pc0VtcHR5KCk7IH07CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNo
YXBlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdXNlUGF0aEZhbGxiYWNrID8gUmVuZGVyU1ZHU2hhcGU6
OmlzRW1wdHkoKSA6IG1fZmlsbEJvdW5kaW5nQm94LmlzRW1wdHkoKTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc1JlbmRlcmluZ0Rpc2FibGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHNo
YXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYpOwotICAgIHZpcnR1
YWwgYm9vbCBzaGFwZURlcGVuZGVudEZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgV2luZFJ1bGUpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3ND
b250ZXh0KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdy
YXBoaWNzQ29udGV4dCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBzaGFwZURl
cGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRGaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IFdpbmRSdWxlKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNhbGN1bGF0ZVJhZGlp
QW5kQ2VudGVyKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCmluZGV4IDRlNjdjYWU5MmQzZDUyYmI4
NGFhMjU0MDljNzBhNzdjYWE5MTcyMGQuLmM3NWJiZmYxNGRhNDg5NDI4Y2I5N2Y4ZDQwN2RhZTRj
MDA2YzQ3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHRm9yZWlnbk9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdC5oCkBAIC0zNywzNSArMzcsMzUgQEAgcHVibGljOgogCiAgICAg
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQmIGZvcmVpZ25PYmplY3RFbGVtZW50KCkgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFp
bnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRS
ZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
Ym9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3Qg
eyByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV92aWV3cG9ydC5zaXplKCkpOyB9Ci0g
ICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3ZpZXdwb3J0LnNpemUoKSk7IH0KLSAgICB2aXJ0dWFs
IEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0dXJu
IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fdmlld3BvcnQuc2l6ZSgpKTsgfQorICAgIHZpcnR1
YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV92aWV3cG9ydC5zaXplKCkpOyB9CisgICAgdmlydHVh
bCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3ZpZXdwb3J0LnNpemUoKSk7IH0KKyAgICB2aXJ0dWFs
IEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fdmlld3BvcnQuc2l6ZSgpKTsgfQog
Ci0gICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
LCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVz
dEFjdGlvbik7CisgICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVu
dCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2Nh
dGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdG
b3JlaWduT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzID0gQXBwbHlD
b250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFw
JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBk
YXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWVkc1RyYW5zZm9ybVVw
ZGF0ZSA9IHRydWU7IH0KIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdGb3JlaWdu
T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgZ3JhcGhp
Y3NFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0ZvcmVpZ25PYmplY3Qi
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoKCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhl
aWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMm
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBs
b2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zv
cm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0o
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5z
Zm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KIAogICAg
IGJvb2wgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA6IDE7CiAgICAgRmxvYXRSZWN0IG1fdmlld3Bv
cnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgKaW5k
ZXggODYxZDEzMjJhNzEyOTI1MGVhZDBhZjkyZjI3YTRiMjAyYzBiNDQwNy4uMDEzYTA0ZjU4YjA0
NmEwNDZiZjRmNTJjNTYwN2Y5YmZhZGQ1MmU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaApAQCAtNDIsOSArNDIsOSBAQCBwdWJsaWM6CiAgICAg
U1ZHSW1hZ2VFbGVtZW50JiBpbWFnZUVsZW1lbnQoKSBjb25zdDsKIAogICAgIGJvb2wgdXBkYXRl
SW1hZ2VWaWV3cG9ydCgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0JvdW5kYXJpZXNVcGRh
dGUoKSB7IG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlID0gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKSBvdmVycmlkZSB7IG1fbmVlZHNCb3VuZGFyaWVz
VXBkYXRlID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0JvdW5kYXJpZXNVcGRhdGUo
KSBvdmVycmlkZSB7IHJldHVybiBtX25lZWRzQm91bmRhcmllc1VwZGF0ZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0
ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSBv
dmVycmlkZSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CiAKICAgICBSZW5kZXJJ
bWFnZVJlc291cmNlJiBpbWFnZVJlc291cmNlKCkgeyByZXR1cm4gKm1faW1hZ2VSZXNvdXJjZTsg
fQogICAgIGNvbnN0IFJlbmRlckltYWdlUmVzb3VyY2UmIGltYWdlUmVzb3VyY2UoKSBjb25zdCB7
IHJldHVybiAqbV9pbWFnZVJlc291cmNlOyB9CkBAIC01NSwyOSArNTUsMjkgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdJbWFn
ZSI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHSW1hZ2UiOyB9CiAgICAgdmlydHVhbCBib29sIGlzU1ZHSW1h
Z2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGNh
bkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2
aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KIAotICAgIHZpcnR1YWwgRmxvYXRSZWN0IG9iamVjdEJv
dW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RCb3VuZGluZ0JveDsgfQotICAgIHZp
cnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV9vYmpl
Y3RCb3VuZGluZ0JveDsgfQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2Nh
bENvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3g7IH0KKyAg
ICB2aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzdHJv
a2VCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdC
b3g7IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRl
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVwYWludEJvdW5kaW5nQm94OyB9CiAgICAg
dmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXNFeGNsdWRpbmdT
VkdTaGFkb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlcGFpbnRCb3VuZGluZ0JveEV4
Y2x1ZGluZ1NoYWRvdzsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZl
Y3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWludENvbnRhaW5lciA9IDApIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IElu
dFJlY3QqID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQ
dHIsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBpbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKCk7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsK
KyAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYs
IEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0
QWN0aW9uKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsVHJh
bnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQorICAgIHZpcnR1YWwg
QWZmaW5lVHJhbnNmb3JtIGxvY2FsVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9sb2NhbFRyYW5zZm9ybTsgfQogICAgIHZvaWQgY2FsY3VsYXRlSW1hZ2VWaWV3cG9ydCgpOwog
CiAgICAgYm9vbCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSA6IDE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oCmluZGV4IDQ0ZmQxNzI2NzVkYWUxZGJhMTJm
NzBmN2VhYmU1NzFiMjNkZjkzM2QuLmVhNmVjYzIzNWU5OGY1ODUxYTM2NTNiYWEyMWY2ZWFkZjc3
OGJmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5o
CkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
aXNTVkdQYXRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdQYXRoIjsg
fQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJTVkdQYXRoIjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNoYXBl
RnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICBGbG9hdFJlY3QgY2FsY3VsYXRlVXBkYXRlZFN0
cm9rZUJvdW5kaW5nQm94KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVjdC5oCmluZGV4IGYwMmRmY2Y3ODczNDZlYWQ2NzRiNjI4Y2MwNDExMjNiMmFh
NmYyZjcuLjRkYTFiM2I5ODJhMzBjMGE4YTBiNDQ1ZGYzY2MxYmZhMDkwMzc3NmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oCkBAIC00MywxNSArNDMs
MTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0
ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
eyByZXR1cm4gIlJlbmRlclNWR1JlY3QiOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1JlY3QiOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpOwotICAgIHZpcnR1YWwgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sgPyBSZW5kZXJTVkdT
aGFwZTo6aXNFbXB0eSgpIDogbV9maWxsQm91bmRpbmdCb3guaXNFbXB0eSgpOyB9OworICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3VzZVBhdGhGYWxsYmFj
ayA/IFJlbmRlclNWR1NoYXBlOjppc0VtcHR5KCkgOiBtX2ZpbGxCb3VuZGluZ0JveC5pc0VtcHR5
KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJpbmdEaXNhYmxlZCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0
UG9pbnQmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRGaWxsQ29udGFpbnMoY29u
c3QgRmxvYXRQb2ludCYsIGNvbnN0IFdpbmRSdWxlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50RmlsbENvbnRhaW5z
KGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBXaW5kUnVsZSkgY29uc3Qgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CiAgICAgRmxvYXRSZWN0IG1faW5uZXJTdHJva2VSZWN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKaW5k
ZXggZTAwODBlMGQ1Mjk0MGQ5MThhMDk5NjQ5ZjY0MGEzZTQxOWY5MmM1Ny4uY2EwNzJjYWFmYzA4
ZWEyNGExNGE2Y2NiZWI5ODBjN2ZkZDhhOTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCkBAIC01NCw3ICs1
NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVyRWxl
bWVudCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzQ29udGV4
dCopOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlc291cmNlQm91bmRpbmdCb3goY29uc3QgUmVu
ZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlw
ZSByZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBDbGlwcGVyUmVzb3VyY2VUeXBlOyB9Cisg
ICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gQ2xpcHBlclJlc291cmNlVHlwZTsgfQogICAgIAogICAgIGJvb2wgaGl0
VGVzdENsaXBDb250ZW50KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5oCmluZGV4IGU4NWM3OTQ0MDFkMDllNDg3MGNiMTJhMTY1YmQ3YzZhMWU1NzQ5MmUu
Ljk1YmQxMDAyZGMyNTJkZmMzY2Q4Y2Q5YmQ2NGYwNjI0YmQxYjg1ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgK
QEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwcmltaXRpdmVBdHRyaWJ1dGVD
aGFuZ2VkKFJlbmRlck9iamVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIHZpcnR1
YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHNf
cmVzb3VyY2VUeXBlOyB9CisgICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3Vy
Y2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KICAgICBz
dGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHNfcmVzb3VyY2VUeXBlOwogCiAgICAgRmxvYXRS
ZWN0IGRyYXdpbmdSZWdpb24oUmVuZGVyT2JqZWN0KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlLmgKaW5kZXggMmY4ZGEzYTk2NTExY2Y2N2I2MDFlMzkxYzM2MGJhN2VjMTYyZmEz
YS4uZGY0NzU5OGRiYjNjYzZmYzA2MzY3MWVkODg3NjgyNjE0YWM1OWYzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXJQcmltaXRpdmUuaApAQCAtMzksMTAgKzM5LDkgQEAgcHVibGljOgogICAgIFJlbmRl
clNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcyYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMmIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQoKSBjb25zdDsKIAotICAg
IHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRl
clN0eWxlKik7CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclBy
aW1pdGl2ZSI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQ
cmltaXRpdmUiOyB9CiAKICAgICAvLyBUaGV5IGRlcGVuZCBvbiB0aGUgUmVuZGVyT2JqZWN0IGFy
Z3VtZW50IG9mIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlLgogICAgIHN0
YXRpYyBGbG9hdFJlY3QgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlckVm
ZmVjdCYpOwpAQCAtNTUsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0YXRpY19jYXN0PFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyKj4oZmlsdGVyKS0+cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdl
ZCh0aGlzLCBhdHRyaWJ1dGUpOwogICAgIH0KIHByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlz
U1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3Jh
ZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VM
aW5lYXJHcmFkaWVudC5oCmluZGV4IGMxZjUyYjdkY2RlNTFiN2Q0Y2VmM2ZkZjlkOGNkZWQ2OWI0
MTEzZjEuLjhhYWQzZmY0MjFjYjI5MjAwOTY2OTQxYzUxMWZkMmIxNDU1YzAxOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJH
cmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VMaW5lYXJHcmFkaWVudC5oCkBAIC0zNCwxMyArMzQsMTMgQEAgcHVibGljOgogCiAgICAg
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50JiBsaW5lYXJHcmFkaWVudEVsZW1lbnQoKSBjb25zdCB7
IHJldHVybiBkb3duY2FzdDxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ+KFJlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQ6OmdyYWRpZW50RWxlbWVudCgpKTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJT
VkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gc19yZXNvdXJjZVR5
cGU7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQogICAgIHN0YXRpYyBSZW5k
ZXJTVkdSZXNvdXJjZVR5cGUgc19yZXNvdXJjZVR5cGU7CiAKLSAgICB2aXJ0dWFsIFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmli
dXRlcy5ncmFkaWVudFVuaXRzKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlR3JhZGll
bnRUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pIHsgdHJhbnNmb3JtID0gbV9h
dHRyaWJ1dGVzLmdyYWRpZW50VHJhbnNmb3JtKCk7IH0KKyAgICB2aXJ0dWFsIFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
YXR0cmlidXRlcy5ncmFkaWVudFVuaXRzKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRl
R3JhZGllbnRUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pIG92ZXJyaWRlIHsg
dHJhbnNmb3JtID0gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VHJhbnNmb3JtKCk7IH0KICAgICB2aXJ0
dWFsIGJvb2wgY29sbGVjdEdyYWRpZW50QXR0cmlidXRlcygpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBidWlsZEdyYWRpZW50KEdyYWRpZW50RGF0YSopIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBidWlsZEdyYWRpZW50KEdyYWRpZW50RGF0YSopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
RmxvYXRQb2ludCBzdGFydFBvaW50KGNvbnN0IExpbmVhckdyYWRpZW50QXR0cmlidXRlcyYpIGNv
bnN0OwogICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQoY29uc3QgTGluZWFyR3JhZGllbnRBdHRyaWJ1
dGVzJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFya2VyLmgKaW5kZXggNjM2YTM0ZWNiOTJlZDg3OWIyNmIxOWI5MDkz
MjljYTliYmIyZWYyMi4uMWE4ZDA4Mzg3ODhiYTFmY2Q4MzZjNWQwMDNjMjhkMDI0YzJjNjllNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXIuaApAQCAtNDUsMTEgKzQ1LDExIEBAIHB1YmxpYzoKICAgICAvLyBDYWxjdWxh
dGVzIG1hcmtlciBib3VuZGFyaWVzLCBtYXBwZWQgdG8gdGhlIHRhcmdldCBlbGVtZW50J3MgY29v
cmRpbmF0ZSBzcGFjZQogICAgIEZsb2F0UmVjdCBtYXJrZXJCb3VuZGFyaWVzKGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgbWFya2VyVHJhbnNmb3JtYXRpb24pIGNvbnN0OwogCi0gICAgdmlydHVhbCB2
b2lkIGFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYpOwotICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY1ZpZXdwb3J0KCk7CisgICAgdmlydHVhbCB2b2lk
IGFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY1ZpZXdwb3J0KCkgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVu
dFRyYW5zZm9ybSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBs
b2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQWZmaW5lVHJhbnNm
b3JtIG1hcmtlclRyYW5zZm9ybWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9yaWdpbiwgZmxvYXQg
YW5nbGUsIGZsb2F0IHN0cm9rZVdpZHRoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBhcHBs
eVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29u
dGV4dComLCB1bnNpZ25lZCBzaG9ydCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIGZsb2F0IGFuZ2xlKCkgY29uc3Q7CiAgICAgU1ZHTWFy
a2VyVW5pdHNUeXBlIG1hcmtlclVuaXRzKCkgY29uc3QgeyByZXR1cm4gbWFya2VyRWxlbWVudCgp
Lm1hcmtlclVuaXRzKCk7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJl
c291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CisgICAgdmlydHVh
bCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KICAgICBzdGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2VUeXBl
IHNfcmVzb3VyY2VUeXBlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCmluZGV4IGE1MjcyNmViOTIx
MmNlMDBkZTRlNWVmNzYyYjdmMmY3ZjliM2Y5ZGYuLjg5YjMwNWY2Y2IzZTU0ODE3MGY0M2JiY2E5
MGM5ODFmNTVlYjJlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgog
ICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgbWFza1VuaXRzKCkgY29uc3QgeyByZXR1cm4g
bWFza0VsZW1lbnQoKS5tYXNrVW5pdHMoKTsgfQogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5
cGUgbWFza0NvbnRlbnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1hc2tFbGVtZW50KCkubWFza0Nv
bnRlbnRVbml0cygpOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNv
dXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQorICAgIHZpcnR1YWwg
UmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlwZSBz
X3Jlc291cmNlVHlwZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCmluZGV4IGY2NmQ1NTViNzVi
N2FjN2Q2NWI1YzQwYzNlZDY0YjY5NTE2OGVlNGYuLmYxZmZjNDQzNWI5YTJkNmI5NGRlOWM3Yjdh
OGUwMjNkOTQ5NjE5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBHcmFw
aGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlLCBjb25zdCBQYXRoKiwg
Y29uc3QgUmVuZGVyU1ZHU2hhcGUqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBy
ZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IFJlbmRlck9iamVjdCYpIG92ZXJyaWRlIHsgcmV0dXJu
IEZsb2F0UmVjdCgpOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNv
dXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQorICAgIHZpcnR1YWwg
UmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlwZSBz
X3Jlc291cmNlVHlwZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKaW5k
ZXggOTYyMDMyODk3ZjM0Nzc0OTJlY2UxMDRhM2E2Y2QyMGE1MzQ5MzUwNC4uZjVhNjU0MzhjYjRk
YzdmYjVmMDdlZTBiOTU5MzVhNDc4OTEyYzBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50
LmgKQEAgLTM2LDEyICszNiwxMiBAQCBwdWJsaWM6CiAKICAgICBTVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQmIHJhZGlhbEdyYWRpZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6Z3JhZGll
bnRFbGVtZW50KCkpOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNv
dXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQorICAgIHZpcnR1YWwg
UmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlwZSBz
X3Jlc291cmNlVHlwZTsKIAotICAgIHZpcnR1YWwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBn
cmFkaWVudFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VW5pdHMo
KTsgfQotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVHcmFkaWVudFRyYW5zZm9ybShBZmZpbmVU
cmFuc2Zvcm0mIHRyYW5zZm9ybSkgeyB0cmFuc2Zvcm0gPSBtX2F0dHJpYnV0ZXMuZ3JhZGllbnRU
cmFuc2Zvcm0oKTsgfQotICAgIHZpcnR1YWwgdm9pZCBidWlsZEdyYWRpZW50KEdyYWRpZW50RGF0
YSopIGNvbnN0OworICAgIHZpcnR1YWwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBncmFkaWVu
dFVuaXRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VW5p
dHMoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVHcmFkaWVudFRyYW5zZm9ybShBZmZp
bmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkgb3ZlcnJpZGUgeyB0cmFuc2Zvcm0gPSBtX2F0dHJpYnV0
ZXMuZ3JhZGllbnRUcmFuc2Zvcm0oKTsgfQorICAgIHZpcnR1YWwgdm9pZCBidWlsZEdyYWRpZW50
KEdyYWRpZW50RGF0YSopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRmxvYXRQb2ludCBjZW50ZXJQ
b2ludChjb25zdCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMmKSBjb25zdDsKICAgICBGbG9hdFBv
aW50IGZvY2FsUG9pbnQoY29uc3QgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzJikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4IGZmNTQ4
ZWFjOTkwOTNmM2IzMmNjODUxYWU5ODE5ODllN2ZmZDQzZDUuLmFjZTkyM2VlMjU4ZjIxMWRmNjFi
OTI2N2VhNDE4NzYyODI1ZjZkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5oCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBG
bG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX29i
amVjdEJvdW5kaW5nQm94OyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdC
b3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3N0cm9rZUJvdW5kaW5nQm94OyB9CiAgICAg
dmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3JlcGFpbnRCb3VuZGluZ0JveDsgfQotICAgIHZpcnR1YWwgRmxv
YXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzRXhjbHVkaW5nU1ZHU2hhZG93KCkg
Y29uc3QgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3hFeGNsdWRpbmdTaGFkb3c7IH0KKyAg
ICBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXNFeGNsdWRpbmdTVkdTaGFk
b3coKSBjb25zdCB7IHJldHVybiBtX3JlcGFpbnRCb3VuZGluZ0JveEV4Y2x1ZGluZ1NoYWRvdzsg
fQogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0Jiwg
SGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5l
ciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUU3Bhbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bh
bi5oCmluZGV4IGU5NzJjYmVjNWRjZmRkMDRiNWFmZmU4OWNhOWM1Y2ZjOTUzMTY2NWIuLjNmZDk3
OTcxNWQ4NjVlMTdiY2E1NGJmNGM3NjIxOTM4MDQzOWRjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIHZvaWQgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7
Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJl
bmRlclNWR1RTcGFuIjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdUU3BhbiI7IH0KIH07CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5kZXggMDdiMTgxM2E2
M2YxZmFjYmQ2MTg3ZjFkNDI5MTA4OGI4MzFjNWE1MS4uZDk2MGU3ZTBiNTA4MDA3MjY1YTg1YTBh
YzcwZDNmNzY4MzdiZWM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmgKQEAgLTM5LDEyICszOSwxMiBAQCBwdWJsaWM6CiAKICAgICBTVkdUZXh0RWxl
bWVudCYgdGV4dEVsZW1lbnQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxs
b3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBS
ZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXROZWVkc1Bvc2l0aW9u
aW5nVmFsdWVzVXBkYXRlKCkgeyBtX25lZWRzUG9zaXRpb25pbmdWYWx1ZXNVcGRhdGUgPSB0cnVl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRz
VHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5z
Zm9ybVVwZGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0K
ICAgICB2b2lkIHNldE5lZWRzVGV4dE1ldHJpY3NVcGRhdGUoKSB7IG1fbmVlZHNUZXh0TWV0cmlj
c1VwZGF0ZSA9IHRydWU7IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9j
YWxDb29yZGluYXRlcygpIGNvbnN0OworICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRSZWN0
SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgUmVuZGVy
U1ZHVGV4dCogbG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKFJlbmRlck9iamVjdCYpOwogICAg
IHN0YXRpYyBjb25zdCBSZW5kZXJTVkdUZXh0KiBsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3Io
Y29uc3QgUmVuZGVyT2JqZWN0Jik7CkBAIC02NCwxOCArNjQsMTggQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR1Rl
eHQiOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU1ZHVGV4dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVuZGVyU1ZHVGV4dCI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdUZXh0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNv
bnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsK
LSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91
dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKik7CisgICAgdmlydHVhbCBib29sIG5vZGVBdEZs
b2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYs
IGNvbnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHJlcXVp
cmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3
YXNGaXhlZCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFs
IExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBj
b25zdCBvdmVycmlkZTsKQEAgLTgzLDE2ICs4MywxNiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzID0g
QXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21l
dHJ5TWFwJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRl
ck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZv
cmVDaGlsZCA9IG51bGxwdHIpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBy
ZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFu
c2Zvcm07IH0KLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2Nh
bFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0K
ICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxSb290SW5saW5lQm94PiBjcmVhdGVSb290SW5s
aW5lQm94KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlckJsb2NrKiBmaXJzdExpbmVC
bG9jaygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGaXJzdExldHRlcigpOworICAg
IHZpcnR1YWwgUmVuZGVyQmxvY2sqIGZpcnN0TGluZUJsb2NrKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZpcnN0TGV0dGVyKCkgb3ZlcnJpZGU7CiAKICAgICBib29s
IHNob3VsZEhhbmRsZVN1YnRyZWVNdXRhdGlvbnMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVD
b250YWluZXIuaAppbmRleCA2N2QwYTU2N2JkMjRlOWI5YzE5YTNjMDhjM2EzNjc4YmYxODgwMjE1
Li45ZWRhYmVlZTcxMzI0NzY5NGM2ZmY4ODc3Yzk3ZjBkNDEwYTRkNzUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWlu
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXIuaApAQCAtMzIsMTUgKzMyLDE1IEBAIHB1YmxpYzoKICAgICBSZW5kZXJT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR0dyYXBoaWNzRWxlbWVudCYsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KTsKICAgICBTVkdHcmFwaGljc0VsZW1lbnQmIGdyYXBoaWNzRWxlbWVudCgpIHsg
cmV0dXJuIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4oUmVuZGVyU1ZHQ29udGFpbmVyOjpl
bGVtZW50KCkpOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFRy
YW5zZm9ybTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsg
bV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZGlkVHJh
bnNmb3JtVG9Sb290VXBkYXRlKCkgeyByZXR1cm4gbV9kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9s
b2NhbFRyYW5zZm9ybTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0
ZSgpIG92ZXJyaWRlIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9k
aWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGU7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQo
KSBjb25zdCA9IGRlbGV0ZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlTG9jYWxUcmFuc2Zv
cm0oKTsKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRl
TG9jYWxUcmFuc2Zvcm0oKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBs
b2NhbFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07
IH0KIAogICAgIGJvb2wgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA6IDE7CiAgICAgYm9vbCBtX2Rp
ZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKaW5kZXggY2M1MjQ4
NjEyZjgxMmU2YjllNjk1YmQzOWMxYTFmNmNjYzM5MWU3Zi4uZjYyNGY1ZjQ3ZGNkYmE4Yzg5YTIx
ODljOGJmMGNjZWViY2NiY2QwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaApAQCAtMzgsMjcgKzM4LDI3
IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3Qgdmlld3BvcnQoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZXdwb3J0OyB9CiAKICAgICBib29sIGlzTGF5b3V0U2l6ZUNoYW5nZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQ7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZGlkVHJhbnNmb3Jt
VG9Sb290VXBkYXRlKCkgeyByZXR1cm4gbV9kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGU7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKCkgb3ZlcnJpZGUgeyByZXR1
cm4gbV9kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZXRl
cm1pbmVJZkxheW91dFNpemVDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJh
bnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZXRlcm1pbmVJZkxheW91dFNpemVDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgb3ZlcnJpZGUgeyBtX25lZWRz
VHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdWaWV3
cG9ydENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHVmlld3BvcnRDb250
YWluZXIiOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZHVmlld3BvcnRDb250YWluZXIoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1ZpZXdwb3J0Q29udGFp
bmVyIjsgfQogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdwb3J0VHJhbnNmb3JtKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zv
cm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07IH0KKyAgICB2aXJ0
dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUb1BhcmVudFRyYW5zZm9ybTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGNhbGNWaWV3cG9ydCgpOwotICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVMb2Nh
bFRyYW5zZm9ybSgpOworICAgIHZpcnR1YWwgdm9pZCBjYWxjVmlld3BvcnQoKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0oKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhcHBseVZpZXdwb3J0Q2xpcChQYWludEluZm8mKTsKLSAgICB2aXJ0
dWFsIGJvb2wgcG9pbnRJc0luc2lkZVZpZXdwb3J0Q2xpcChjb25zdCBGbG9hdFBvaW50JiBwb2lu
dEluUGFyZW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlWaWV3cG9ydENsaXAoUGFpbnRJbmZv
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHBvaW50SXNJbnNpZGVWaWV3cG9ydENsaXAo
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCkgb3ZlcnJpZGU7CiAKICAgICBGbG9hdFJl
Y3QgbV92aWV3cG9ydDsKICAgICBtdXRhYmxlIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsVG9QYXJl
bnRUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5l
VGV4dEJveC5oCmluZGV4IDdiN2Q4NTdmMTJmOWM4OTkwNzgwZjc5MTVkNjNhYjY3OWY3MjliYmIu
Ljg1OWJmZTI4NTY1NjM1MDM1ZmQ1NmEwNTA0Yjg0MzlhYmU2YjRjYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCkBAIC0zNywyOCArMzcs
MjggQEAgcHVibGljOgogCiAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCYgcmVuZGVyZXIoKSBjb25z
dCB7IHJldHVybiBkb3duY2FzdDxSZW5kZXJTVkdJbmxpbmVUZXh0PihJbmxpbmVUZXh0Qm94Ojpy
ZW5kZXJlcigpKTsgfQogCi0gICAgdmlydHVhbCBmbG9hdCB2aXJ0dWFsTG9naWNhbEhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbEhlaWdodDsgfQorICAgIHZpcnR1YWwgZmxvYXQgdmly
dHVhbExvZ2ljYWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvZ2ljYWxIZWln
aHQ7IH0KICAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoZmxvYXQgaGVpZ2h0KSB7IG1fbG9naWNh
bEhlaWdodCA9IGhlaWdodDsgfQogCi0gICAgdmlydHVhbCBpbnQgc2VsZWN0aW9uVG9wKCkgeyBy
ZXR1cm4gdG9wKCk7IH0KLSAgICB2aXJ0dWFsIGludCBzZWxlY3Rpb25IZWlnaHQoKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKG1fbG9naWNhbEhlaWdodCkpOyB9Ci0gICAgdmlydHVh
bCBpbnQgb2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgeCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cyA9IHRydWUpIGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQgcG9zaXRpb25Gb3JPZmZzZXQoaW50
IG9mZnNldCkgY29uc3Q7CisgICAgaW50IHNlbGVjdGlvblRvcCgpIHsgcmV0dXJuIHRvcCgpOyB9
CisgICAgaW50IHNlbGVjdGlvbkhlaWdodCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oY2Vp
bGYobV9sb2dpY2FsSGVpZ2h0KSk7IH0KKyAgICB2aXJ0dWFsIGludCBvZmZzZXRGb3JQb3NpdGlv
bihmbG9hdCB4LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzID0gdHJ1ZSkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBmbG9hdCBwb3NpdGlvbkZvck9mZnNldChpbnQgb2Zmc2V0KSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZvaWQgcGFpbnRTZWxlY3Rpb25CYWNrZ3JvdW5kKFBhaW50SW5m
byYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2lu
dCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0
IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBM
YXlvdXRSZWN0IGxvY2FsU2VsZWN0aW9uUmVjdChpbnQgc3RhcnRQb3NpdGlvbiwgaW50IGVuZFBv
c2l0aW9uKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgbWFwU3RhcnRFbmRQb3NpdGlvbnNJ
bnRvRnJhZ21lbnRDb29yZGluYXRlcyhjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBpbnQmIHN0YXJ0
UG9zaXRpb24sIGludCYgZW5kUG9zaXRpb24pIGNvbnN0OwogCi0gICAgdmlydHVhbCBGbG9hdFJl
Y3QgY2FsY3VsYXRlQm91bmRhcmllcygpIGNvbnN0OworICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNh
bGN1bGF0ZUJvdW5kYXJpZXMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgY2xlYXJUZXh0
RnJhZ21lbnRzKCkgeyBtX3RleHRGcmFnbWVudHMuY2xlYXIoKTsgfQogICAgIFZlY3RvcjxTVkdU
ZXh0RnJhZ21lbnQ+JiB0ZXh0RnJhZ21lbnRzKCkgeyByZXR1cm4gbV90ZXh0RnJhZ21lbnRzOyB9
CiAgICAgY29uc3QgVmVjdG9yPFNWR1RleHRGcmFnbWVudD4mIHRleHRGcmFnbWVudHMoKSBjb25z
dCB7IHJldHVybiBtX3RleHRGcmFnbWVudHM7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaXJ0eU93
bkxpbmVCb3hlcygpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBkaXJ0eUxpbmVC
b3hlcygpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBkaXJ0eU93bkxpbmVCb3hl
cygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXJ0eUxpbmVCb3hlcygpIG92ZXJyaWRl
OwogCiAgICAgYm9vbCBzdGFydHNOZXdUZXh0Q2h1bmsoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0
c05ld1RleHRDaHVuazsgfQogICAgIHZvaWQgc2V0U3RhcnRzTmV3VGV4dENodW5rKGJvb2wgbmV3
VGV4dENodW5rKSB7IG1fc3RhcnRzTmV3VGV4dENodW5rID0gbmV3VGV4dENodW5rOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5oCmluZGV4IGIz
N2UwNGEyMWRjYjMzYWE4NTE1YzE5NTVhN2JiNTFiN2NmY2EyYTYuLmVlYTMwZjUwNzYzNjk2MmE4
M2JkMWIzYjc1YjM0ZTA1Y2ZlZGE5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUm9vdElubGluZUJveC5oCkBAIC0zOCwxNyArMzgsMTcgQEAgcHVibGljOgogCiAg
ICAgUmVuZGVyU1ZHVGV4dCYgcmVuZGVyU1ZHVGV4dCgpOwogCi0gICAgdmlydHVhbCBmbG9hdCB2
aXJ0dWFsTG9naWNhbEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fbG9n
aWNhbEhlaWdodDsgfQorICAgIHZpcnR1YWwgZmxvYXQgdmlydHVhbExvZ2ljYWxIZWlnaHQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvZ2ljYWxIZWlnaHQ7IH0KICAgICB2b2lkIHNldExv
Z2ljYWxIZWlnaHQoZmxvYXQgaGVpZ2h0KSB7IG1fbG9naWNhbEhlaWdodCA9IGhlaWdodDsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jiwg
TGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlIGZpbmFs
OworICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYs
IExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgY29tcHV0ZVBlckNoYXJhY3RlckxheW91dEluZm9ybWF0aW9uKCk7CiAKICAgICBJ
bmxpbmVCb3gqIGNsb3Nlc3RMZWFmQ2hpbGRGb3JQb3NpdGlvbihjb25zdCBMYXlvdXRQb2ludCYp
OwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jvb3RJbmxpbmVCb3goKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZH
Um9vdElubGluZUJveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lk
IHJlb3JkZXJWYWx1ZUxpc3RzKFZlY3RvcjxTVkdUZXh0TGF5b3V0QXR0cmlidXRlcyo+Jik7CiAg
ICAgdm9pZCBsYXlvdXRDaGFyYWN0ZXJzSW5UZXh0Qm94ZXMoSW5saW5lRmxvd0JveCosIFNWR1Rl
eHRMYXlvdXRFbmdpbmUmKTsKICAgICB2b2lkIGxheW91dENoaWxkQm94ZXMoSW5saW5lRmxvd0Jv
eCosIEZsb2F0UmVjdCogPSAwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240323</attachid>
            <date>2014-10-22 20:14:08 -0700</date>
            <delta_ts>2014-10-22 21:32:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137984-20141022201414.patch</filename>
            <type>text/plain</type>
            <size>108264</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTM0N2VhOGU0MjliYmJk
YjkxYWQwZTdlMTY4ZGQyMmJmOGQzOWRlMC4uZTI4ZmJkN2RlOTQ3OGFkYjM3OGZkZDZkM2NjYzk0
MDVkNTdhYTFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAxNC0xMC0yMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHZpcnR1YWwg
ZnVuY3Rpb25zIGluIHJlbmRlcmluZy8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIENsZWFuIHVwIHZpcnR1YWwgZnVuY3Rpb25zIGluIHJlbmRlcmluZy8gYnk6
CisgICAgICAgIC0gTWFraW5nIHZpcnR1YWwgZnVuY3Rpb25zIGZpbmFsIHdoZW4gcG9zc2libGUK
KyAgICAgICAgLSBNYWtpbmcgY2xhc3NlcyBmaW5hbCB3aGVuIHBvc3NpYmxlCisgICAgICAgIC0g
VXNpbmcgJ292ZXJyaWRlJyB3aGVuIGFwcHJvcHJpYXRlCisgICAgICAgIC0gRXhwbGljaXRseSBt
YXJraW5nIGZ1bmN0aW9ucyAvIGRlc3RydWN0b3JzIGFzIHZpcnR1YWwgd2hlbiB0aGV5IGFyZQor
ICAgICAgICAgIGluaGVyZW50bHkgdmlydHVhbAorICAgICAgICAtIERyb3BwaW5nIHZpcnR1YWwg
ZGVzdHJ1Y3RvcnMgd2hlbiB0aGUgY2xhc3MgZG9lcyBub3QgaGF2ZSBzdWJjbGFzc2VzCisgICAg
ICAgICAgYW5kIG1hcmsgdGhlIGNsYXNzIGFzIGZpbmFsLCB0byBnZXQgcmlkIG9mIHVubmVjZXNz
YXJ5IHZ0YWJsZXMKKyAgICAgICAgLSBNYWtpbmcgaXNYWFgoKSB2aXJ0dWFsIGZ1bmN0aW9ucyBw
cml2YXRlIG9uIFhYWCBjbGFzc2VzIHRvIGF2b2lkCisgICAgICAgICAgdW5uZWNlc3NhcnkgdHlw
ZSBjaGVja3MKKyAgICAgICAgLSBEZS12aXJ0dWFsaXppbmcgc29tZSBmdW5jdGlvbnMgdGhhdCBk
byBub3QgbmVlZCB0byBiZSB2aXJ0dWFsCisgICAgICAgIC0gRHJvcHBpbmcgZmluYWwgZm9yIHZp
cnR1YWwgZnVuY3Rpb25zIGluIGNsYXNzZXMgYWxyZWFkeSBtYXJrZWQgYXMKKyAgICAgICAgICBm
aW5hbAorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvQXV0b1RhYmxlTGF5b3V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0NsaXBQYXRoT3Bl
cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6dHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6aXNTYW1lVHlwZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL0VsbGlwc2lzQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0ZpeGVkVGFi
bGVMYXlvdXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQ29tYmluZVRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyRnVsbFNjcmVlbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJNYXJxdWVlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29u
dHJvbEVsZW1lbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxv
d1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyUXVvdGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnJlbmRlck5hbWUpOiBEZWxldGVkLgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclJ1YnlCYXNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp+UmVu
ZGVyU2Nyb2xsYmFyVGhlbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Ny
b2xsYmFyVGhlbWU6OnNjcm9sbGJhclRoaWNrbmVzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uc1BsYWNlbWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6c3VwcG9ydHNDb250cm9sVGlu
dHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnNo
b3VsZENlbnRlck9uVGh1bWIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Ny
b2xsYmFyVGhlbWU6OmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YXV0b3Njcm9sbFRpbWVyRGVsYXkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJlZ2lz
dGVyU2Nyb2xsYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJh
clRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2xNdWx0aUxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dEZy
YWdtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lV2luLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvVHJhaWxp
bmdGbG9hdHNSb290SW5saW5lQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
TWVuY2xvc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3Bl
cmF0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oOgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMv
Qm94U2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L0Jhc2ljU2hhcGVzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0lt
YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVBlbmRpbmdJbWFnZTo6Y29tcHV0ZUludHJp
bnNpY0RpbWVuc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1BhdGguaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVFNwYW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94Lmg6CisKIDIwMTQtMTAtMjIgIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBTVkcgbG9hZGVkIHRo
cm91Z2ggaHRtbCA8aW1nPiBjYW4ndCByZXF1ZXN0IHRvIGxvYWQgYW55IGV4dGVybmFsIHJlc291
cmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuY3BwCmluZGV4IDI2MmM2MDA2ZjUzZjgxZmZjN2ZhZjgyMWM5NmU2ZDExODgzY2NkZjkuLmY5
Y2VkNmRmMTQyODVhMGY5NTIxNjE0NmI3NTQwZTYyNzI4ZThiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtMTA5LDcgKzEw
OSw3IEBAIGJvb2wgUmVuZGVyU2xpZGVyVGh1bWI6OmlzU2xpZGVyVGh1bWIoKSBjb25zdAogCiAv
LyBGSVhNRTogRmluZCBhIHdheSB0byBjYXNjYWRlIGFwcGVhcmFuY2UgYW5kIGFkanVzdCBoZWln
aHRzLCBhbmQgZ2V0IHJpZCBvZiB0aGlzIGNsYXNzLgogLy8gaHR0cDovL3dlYmtpdC5vcmcvYi82
MjUzNQotY2xhc3MgUmVuZGVyU2xpZGVyQ29udGFpbmVyIDogcHVibGljIFJlbmRlckZsZXhpYmxl
Qm94IHsKK2NsYXNzIFJlbmRlclNsaWRlckNvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJG
bGV4aWJsZUJveCB7CiBwdWJsaWM6CiAgICAgUmVuZGVyU2xpZGVyQ29udGFpbmVyKFNsaWRlckNv
bnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAg
ICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmgKaW5kZXggNGMwYzM0MGIyNWUx
YzQ1ZmYxODljMmQxM2JmN2ZlM2NhODE5NGMwMi4uMmYzMTlmZWE4ZGE2NzJjMTQxOGY4ODQxY2Iy
Mjg1ZjJlMmMwYTk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9U
YWJsZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlv
dXQuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJU
YWJsZTsKIGNsYXNzIFJlbmRlclRhYmxlQ2VsbDsKIAotY2xhc3MgQXV0b1RhYmxlTGF5b3V0IDog
cHVibGljIFRhYmxlTGF5b3V0IHsKK2NsYXNzIEF1dG9UYWJsZUxheW91dCBmaW5hbCA6IHB1Ymxp
YyBUYWJsZUxheW91dCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQXV0b1RhYmxlTGF5b3V0KFJl
bmRlclRhYmxlKik7CiAgICAgdmlydHVhbCB+QXV0b1RhYmxlTGF5b3V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCmluZGV4IDc5YjY2NWNjZmQxNmMw
MjIwNjdiNTkwNmJmOTY3MmYxMDQ3MmQxZDYuLmU3MjMxZTZjYTQwMzI4ZWZlNGIwNjJlMjlhODEx
MzcyY2RjZDY1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0
aE9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJh
dGlvbi5oCkBAIC01Miw4ICs1Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDbGlwUGF0aE9wZXJhdGlvbiYpIGNvbnN0ID0gMDsKICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgQ2xpcFBhdGhPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMg
PT0gbyk7IH0KIAotICAgIHZpcnR1YWwgT3BlcmF0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2FtZVR5cGUoY29uc3QgQ2xpcFBhdGhP
cGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuIG8udHlwZSgpID09IG1fdHlwZTsgfQorICAgIE9w
ZXJhdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGJvb2wgaXNT
YW1lVHlwZShjb25zdCBDbGlwUGF0aE9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gby50eXBl
KCkgPT0gbV90eXBlOyB9CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDbGlwUGF0aE9wZXJh
dGlvbihPcGVyYXRpb25UeXBlIHR5cGUpCkBAIC02NCw3ICs2NCw3IEBAIHByb3RlY3RlZDoKICAg
ICBPcGVyYXRpb25UeXBlIG1fdHlwZTsKIH07CiAKLWNsYXNzIFJlZmVyZW5jZUNsaXBQYXRoT3Bl
cmF0aW9uIDogcHVibGljIENsaXBQYXRoT3BlcmF0aW9uIHsKK2NsYXNzIFJlZmVyZW5jZUNsaXBQ
YXRoT3BlcmF0aW9uIGZpbmFsIDogcHVibGljIENsaXBQYXRoT3BlcmF0aW9uIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50KQogICAgIHsKQEAgLTk0
LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9mcmFnbWVudDsKIH07CiAKLWNsYXNz
IFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24gOiBwdWJsaWMgQ2xpcFBhdGhPcGVyYXRpb24geworY2xh
c3MgU2hhcGVDbGlwUGF0aE9wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDbGlwUGF0aE9wZXJhdGlv
biB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcGVDbGlwUGF0aE9wZXJhdGlv
bj4gY3JlYXRlKFBhc3NSZWY8QmFzaWNTaGFwZT4gc2hhcGUpCiAgICAgewpAQCAtMTMzLDcgKzEz
Myw3IEBAIHByaXZhdGU6CiAgICAgQ1NTQm94VHlwZSBtX3JlZmVyZW5jZUJveDsKIH07CiAKLWNs
YXNzIEJveENsaXBQYXRoT3BlcmF0aW9uIDogcHVibGljIENsaXBQYXRoT3BlcmF0aW9uIHsKK2Ns
YXNzIEJveENsaXBQYXRoT3BlcmF0aW9uIGZpbmFsIDogcHVibGljIENsaXBQYXRoT3BlcmF0aW9u
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCb3hDbGlwUGF0aE9wZXJhdGlvbj4g
Y3JlYXRlKENTU0JveFR5cGUgcmVmZXJlbmNlQm94KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0VsbGlwc2lzQm94LmgKaW5kZXggZjNjZjhkYjZmMWFmZGYwZjgwZGExYWYxMDQyYzEwNTUz
YmQ3ZWRiNS4uOTU3NzVkMGVkNDVkMjEyN2FiZTEwNzViYWFlYzUzZjJiNDczMzQ4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmgKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3Mg
SGl0VGVzdFJlc3VsdDsKIGNsYXNzIEVsbGlwc2lzQm94IGZpbmFsIDogcHVibGljIElubGluZUVs
ZW1lbnRCb3ggewogcHVibGljOgogICAgIEVsbGlwc2lzQm94KFJlbmRlckJsb2NrRmxvdyYsIGNv
bnN0IEF0b21pY1N0cmluZyYgZWxsaXBzaXNTdHIsIElubGluZUZsb3dCb3gqIHBhcmVudCwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgeSwgYm9vbCBmaXJzdExpbmUsIGJvb2wgaXNWZXJ0aWNh
bCwgSW5saW5lQm94KiBtYXJrdXBCb3gpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBs
aW5lQm90dG9tKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxp
bmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTZWxl
Y3Rpb25TdGF0ZShSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHMpIHsgbV9zZWxlY3Rpb25T
dGF0ZSA9IHM7IH0KICAgICBJbnRSZWN0IHNlbGVjdGlvblJlY3QoKTsKQEAgLTQwLDggKzQwLDgg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRNYXJrdXBCb3goUGFpbnRJbmZv
JiwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExh
eW91dFVuaXQgbGluZUJvdHRvbSwgY29uc3QgUmVuZGVyU3R5bGUmKTsKLSAgICB2aXJ0dWFsIGlu
dCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQotICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZSgpIHsgcmV0dXJuIG1fc2VsZWN0
aW9uU3RhdGU7IH0KKyAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0K
KyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUo
KSBvdmVycmlkZSB7IHJldHVybiBtX3NlbGVjdGlvblN0YXRlOyB9CiAgICAgdm9pZCBwYWludFNl
bGVjdGlvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRl
clN0eWxlJiwgY29uc3QgRm9udCYpOwogICAgIElubGluZUJveCogbWFya3VwQm94KCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5oCmluZGV4IDlm
YTU2ZDE3MjIxYTU1ZDE0OTYyZjNlZDVmNTY0ZjI1YTU2NWE2OGUuLmQ3YmNiZDY1NTMxMDkzMWVh
ODhjMDZmMTFkYmQxMjNjYTU2Y2IyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9GaXhlZFRhYmxlTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
eGVkVGFibGVMYXlvdXQuaApAQCAtMzAsMTMgKzMwLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUmVuZGVyVGFibGU7CiAKLWNsYXNzIEZpeGVkVGFibGVMYXlvdXQgOiBwdWJsaWMg
VGFibGVMYXlvdXQgeworY2xhc3MgRml4ZWRUYWJsZUxheW91dCBmaW5hbCA6IHB1YmxpYyBUYWJs
ZUxheW91dCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRml4ZWRUYWJsZUxheW91dChSZW5kZXJU
YWJsZSopOwogCiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhz
KExheW91dFVuaXQmIG1pbldpZHRoLCBMYXlvdXRVbml0JiBtYXhXaWR0aCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGFwcGx5UHJlZmVycmVkTG9naWNhbFdpZHRoUXVpcmtzKExheW91dFVu
aXQmIG1pbldpZHRoLCBMYXlvdXRVbml0JiBtYXhXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKICAgICBpbnQgY2FsY1dpZHRoQXJyYXkoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVFbGVtZW50Qm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oCmluZGV4IDk2MWEwNzU0NTNkNWY5NDdhZWY0
NjY0MGQ4YWNlYzc0ZDYyM2ZlODQuLjU2NjM5NWIyYjhmM2Q1MzFkZjdhMDYxZjJmYmI2MWRhNTE2
MjFhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVFbGVtZW50
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guaApA
QCAtNDQsOSArNDQsOSBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVu
ZGVyZXIoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oSW5s
aW5lQm94OjpyZW5kZXJlcigpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUxpbmUoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZXh0cmFjdExpbmUoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoTGluZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVMaW5lKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGV4dHJhY3RMaW5lKCkg
b3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGF0dGFjaExpbmUoKSBvdmVycmlkZSBm
aW5hbDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBI
aXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVy
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRv
cCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCBhYjc2MzlmYTEyYjczMTNiOGRhZTJmYmM2ZGVh
YzY0MDhkYjQ0NDhlLi45NjYxYzU2MzMzMzA0Mjg5OTgwMjI5MTkwMTM2NzFlYzg2MGVjM2M4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC0yODAsNyAr
MjgwLDcgQEAgcHVibGljOgogICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogbXVsdGlD
b2x1bW5GbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZUJsb2NrRmxvd0RhdGEoKSA/
IHJhcmVCbG9ja0Zsb3dEYXRhKCktPm1fbXVsdGlDb2x1bW5GbG93VGhyZWFkIDogbnVsbHB0cjsg
fQogICAgIHZvaWQgc2V0TXVsdGlDb2x1bW5GbG93VGhyZWFkKFJlbmRlck11bHRpQ29sdW1uRmxv
d1RocmVhZCopOwogICAgIAotICAgIGJvb2wgY29udGFpbnNGbG9hdHMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2Zsb2F0aW5nT2JqZWN0cyAmJiAhbV9mbG9hdGluZ09iamVjdHMtPnNldCgp
LmlzRW1wdHkoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBjb250YWluc0Zsb2F0cygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fZmxvYXRpbmdPYmplY3RzICYmICFtX2Zsb2F0aW5nT2JqZWN0cy0+
c2V0KCkuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBjb250YWluc0Zsb2F0KFJlbmRlckJveCYpIGNv
bnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUxpbmVzKCkgb3ZlcnJpZGU7CkBAIC0zNzYs
OCArMzc2LDggQEAgcHVibGljOgogICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodEZvckNoaWxk
Rm9yRnJhZ21lbnRhdGlvbihjb25zdCBSZW5kZXJCb3gmIGNoaWxkKSBjb25zdDsKICAgICBib29s
IGhhc05leHRQYWdlKExheW91dFVuaXQgbG9naWNhbE9mZnNldCwgUGFnZUJvdW5kYXJ5UnVsZSA9
IEV4Y2x1ZGVQYWdlQm91bmRhcnkpIGNvbnN0OwogCi0gICAgdm9pZCBhZGRDaGlsZChSZW5kZXJP
YmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7
Ci0gICAgUmVuZGVyT2JqZWN0KiByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY3Jl
YXRlTXVsdGlDb2x1bW5GbG93VGhyZWFkKCk7CiAgICAgdm9pZCBkZXN0cm95TXVsdGlDb2x1bW5G
bG93VGhyZWFkKCk7CkBAIC00NTAsOCArNDUwLDggQEAgcHJvdGVjdGVkOgogICAgIExheW91dFVu
aXQgY29tcHV0ZWRDb2x1bW5XaWR0aCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGNvbXB1dGVkQ29s
dW1uQ291bnQoKSBjb25zdDsKICAgICAKLSAgICBib29sIGlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxv
d2VkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93
ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUb3BMYXlvdXRPdmVyZmxv
d0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMZWZ0TGF5b3V0
T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIG1vdmVGbG9hdHNU
byhSZW5kZXJCbG9ja0Zsb3cqIHRvQmxvY2spOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaAppbmRleCBhNTk1OGQ0MDg0MjNiY2Y4OGY3MjE1NTJj
OWMzNDQxMGVjYWYyNjVlLi4wMWJlNGQ2M2QyNmY4M2MyZDBlMTEyMDJmMzBmYWI1NTlmNDhhZGVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaApAQCAt
NDUsMTAgKzQ1LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBub2RlKCkgY29uc3Qg
PSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDb21iaW5lVGV4dCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGZsb2F0IHdpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIGxlbmd0aCwgY29uc3QgRm9udCYsIGZsb2F0IHhQb3NpdGlvbiwgSGFzaFNldDxjb25zdCBT
aW1wbGVGb250RGF0YSo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVy
biAiUmVuZGVyQ29tYmluZVRleHQiOyB9Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNDb21iaW5lVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIGZsb2F0IHdpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCwg
Y29uc3QgRm9udCYsIGZsb2F0IHhQb3NpdGlvbiwgSGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0
YSo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVuZGVyQ29tYmluZVRleHQiOyB9CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVuZGVyZWRUZXh0KGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwogCiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX2NvbWJpbmVGb250U3R5bGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaAppbmRleCBhZGZhODZiZDRlNmQ1
MWFhZWQ0NmNmY2RkYTQ2NjMyYjUwMjQ1ZGVjLi5iZjNkNDQ1NjFjYzEyNWM4OWQ1MTJjN2Y5Njdh
MTIwMzdkNmJiYjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Q291bnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgK
QEAgLTQzLDEyICs0MywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDb3VudGVyKCk7CiAK
IHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CisgICAgdmly
dHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBp
c0NvdW50ZXIoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBvcmlnaW5hbFRleHQoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNDb3VudGVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBTdHJpbmcgb3JpZ2luYWxUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCkgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guaAppbmRleCA5NDc0ZTg4OTRjOGNiYTNkYWI0Y2E0ZDRlZDM0YmU2
NTI5NTc1NGNiLi5jNjFjNTg2OTdmODk0OTI5NzhhYjRjZmYxNWI1ZmUxMTQ5NTYzMDU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4
aWJsZUJveC5oCkBAIC0zNiwyMiArMzYsMjIgQEAgcHVibGljOgogCiAgICAgRWxlbWVudCYgZWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1v
dXMoKSk7IH0KIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJl
bmRlclN0eWxlJiBuZXdTdHlsZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0
QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VIZWlnaHQgPSAwKTsK
KyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlv
dXRVbml0IHBhZ2VIZWlnaHQgPSAwKSBvdmVycmlkZTsKICAgICB2b2lkIGxheW91dEhvcml6b250
YWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKTsKICAgICB2b2lkIGxheW91dFZlcnRpY2FsQm94
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXZvaWRzRmxvYXRz
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0RlcHJlY2F0ZWRG
bGV4aWJsZUJveCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNT
dHJldGNoaW5nQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX3N0cmV0Y2hpbmdDaGlsZHJlbjsg
fQorICAgIHZpcnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzU3RyZXRjaGluZ0NoaWxkcmVuKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9zdHJldGNoaW5nQ2hpbGRyZW47IH0KICAgICB2aXJ0dWFsIGJv
b2wgY2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgcGxhY2VDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBjb25z
dCBMYXlvdXRQb2ludCYgbG9jYXRpb24sIExheW91dFNpemUqIGNoaWxkTGF5b3V0RGVsdGEgPSAw
KTsKIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNEZXByZWNhdGVkRmxleGlibGVCb3go
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1
dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5
b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAppbmRleCAwYmY3MTcxNmYwMzli
Njg0YzRhNWIzNWU0ZmNmZjhkY2ZmY2FkODQ4Li4yYjZlZmFjNjE4MWU2ZTg4ZWUxYTNlYjFmNjFi
YjljZjJmOGIwNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guaApAQCAtNDQsNyArNDQsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0Zs
ZXhpYmxlQm94KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGNhbkNvbGxhcHNlQW5vbnltb3VzQmxvY2tDaGlsZCgp
IGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNh
bEhlaWdodCA9IDApIG92ZXJyaWRlIGZpbmFsOwpAQCAtNTcsOCArNTYsOCBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGlzSG9yaXpvbnRhbEZsb3coKSBjb25zdDsKIAotICAgIGJvb2wgaXNUb3BMYXlv
dXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzTGVmdExheW91
dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBpc1Rv
cExheW91dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9v
bCBpc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlv
dXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29u
c3Qgb3ZlcnJpZGU7CkBAIC04Niw2ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gVXNlIGFuIGlu
bGluZSBjYXBhY2l0eSBvZiA4LCBzaW5jZSBmbGV4Ym94IGNvbnRhaW5lcnMgdXN1YWxseSBoYXZl
IGxlc3MgdGhhbiA4IGNoaWxkcmVuLgogICAgIHR5cGVkZWYgVmVjdG9yPExheW91dFJlY3QsIDg+
IENoaWxkRnJhbWVSZWN0czsKIAorICAgIHZpcnR1YWwgYm9vbCBpc0ZsZXhpYmxlQm94KCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaGFzT3J0aG9nb25h
bEZsb3coUmVuZGVyQm94JiBjaGlsZCkgY29uc3Q7CiAgICAgYm9vbCBpc0NvbHVtbkZsb3coKSBj
b25zdDsKICAgICBib29sIGlzTGVmdFRvUmlnaHRGbG93KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAppbmRleCA2NjU2NTcxM2NmMWYwN2Q2ZWE5
ZjFlODg3YzUwMTA2ZDViZGJmZGZlLi45YjZjOGRiN2I5NThjZWMyNzlmZTI5MzVmZTgyMzEzNTNi
MjYxMjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNj
cmVlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgK
QEAgLTM2LDcgKzM2LDYgQEAgY2xhc3MgUmVuZGVyRnVsbFNjcmVlbiBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6CiAgICAgUmVuZGVyRnVsbFNjcmVlbihEb2N1bWVu
dCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckZ1
bGxTY3JlZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZ1
bGxTY3JlZW4iOyB9CiAKICAgICB2b2lkIHNldFBsYWNlaG9sZGVyKFJlbmRlckJsb2NrKik7CkBA
IC00Nyw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVud3JhcFJlbmRlcmVyKGJvb2wmIHJl
cXVpcmVzUmVuZGVyVHJlZVJlYnVpbGQpOwogCiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBp
c1JlbmRlckZ1bGxTY3JlZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCBjZjFjNzMwNzJiZjYzMmQwYjk2
ZWIxNDhhOTI1MDdjMjhkM2Y3YWMxLi5iYjM0OTRhYTQ5NzhjYWVlNGU0MThhYzYwMTQ4MTVjNTU4
MTg0MzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTEwNiw3ICsx
MDYsNyBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0VW5pdCBncmlkQXJlYUJyZWFkdGhGb3JDaGls
ZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0
IFZlY3RvcjxHcmlkVHJhY2s+JikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDaGls
ZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwg
UGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpIG92ZXJyaWRlIGZpbmFsOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludENoaWxkcmVuKFBhaW50SW5mbyYgZm9yU2VsZiwgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBQYWludEluZm8mIGZvckNoaWxkLCBib29sIHVzZVBy
aW50UmVjdCkgb3ZlcnJpZGU7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCB0cmFja3NBcmVX
aWRlclRoYW5NaW5UcmFja0JyZWFkdGgoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBW
ZWN0b3I8R3JpZFRyYWNrPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApp
bmRleCA5ZTcxZDJkMWRhYzI3NWM2NWEwY2I0Mjg3OGNkZWIyNDg5NjcwZTgxLi40ZmU2ZDYxMjcz
YjU1MDNjYjVjNGM3YzBiMTZlODUxZWFhNGNkMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaApAQCAtNzg5LDcgKzc4OSw3IEBAIHB1YmxpYzoKICAgICBib29sIHByZXNl
cnZlczNEKCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLnRyYW5zZm9ybVN0eWxl
M0QoKSA9PSBUcmFuc2Zvcm1TdHlsZTNEUHJlc2VydmUzRDsgfQogICAgIGJvb2wgaGFzM0RUcmFu
c2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybSAmJiAhbV90cmFuc2Zvcm0tPmlzQWZm
aW5lKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBmaWx0ZXJOZWVkc1JlcGFpbnQoKTsKKyAgICB2
b2lkIGZpbHRlck5lZWRzUmVwYWludCgpOwogICAgIGJvb2wgaGFzRmlsdGVyKCkgY29uc3QgeyBy
ZXR1cm4gcmVuZGVyZXIoKS5oYXNGaWx0ZXIoKTsgfQogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJ
VElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApp
bmRleCA3ZDkxODVmMTlmNjMwOTQ4MjA0ZjE4NGM0MThiOTIzMmI4ZDYxMmQ5Li5mZThlYjgzNTdl
OTUwZTE5YTdmMzAyYjg3NDk2Y2U2NmZmNGIyMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCkBAIC0yMTksNyArMjE5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BpeGVsQWxpZ21lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAhbV9pc01haW5GcmFtZVJlbmRlclZpZXdMYXllcjsgfQogCiAjaWZuZGVmIE5ERUJVRwot
ICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlOb3RQYWludGluZygpOworICAgIHZpcnR1YWwgdm9pZCB2
ZXJpZnlOb3RQYWludGluZygpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9S
VCBMYXlvdXRSZWN0IGNvbnRlbnRzQm94KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggMmQ1MTkwMWJiNmQ4NGMyYzY5
OTE5OWVmMWJlMWJjY2UwZDRlN2Y2Ni4uNjQyNGNmNDkwYTZkN2U0NjkzZDcyYWQ5NjRjYmIxYzg3
MzhmMzM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuaApAQCAtOTIsMTEgKzkyLDExIEBAIHR5cGVkZWYgdW5zaWduZWQgQ29tcG9zaXRp
bmdSZWFzb25zOwogLy8gCiAvLyBUaGVyZSBpcyBvbmUgUmVuZGVyTGF5ZXJDb21wb3NpdG9yIHBl
ciBSZW5kZXJWaWV3LgogCi1jbGFzcyBSZW5kZXJMYXllckNvbXBvc2l0b3IgOiBwdWJsaWMgR3Jh
cGhpY3NMYXllckNsaWVudCwgcHVibGljIEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50IHsKK2Ns
YXNzIFJlbmRlckxheWVyQ29tcG9zaXRvciBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xp
ZW50LCBwdWJsaWMgR3JhcGhpY3NMYXllclVwZGF0ZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlckxheWVyQ29tcG9zaXRv
cihSZW5kZXJWaWV3Jik7Ci0gICAgflJlbmRlckxheWVyQ29tcG9zaXRvcigpOworICAgIHZpcnR1
YWwgflJlbmRlckxheWVyQ29tcG9zaXRvcigpOwogCiAgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhp
cyBSZW5kZXJWaWV3IGlzIGluICJjb21wb3NpdGluZyBtb2RlIiAoaS5lLiBoYXMgb25lIG9yIG1v
cmUKICAgICAvLyBjb21wb3NpdGVkIFJlbmRlckxheWVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaAppbmRleCAyNjVmNzNmMmVhYjE5YWE5
OGMwM2VlOWFjYzE2OTg1OTY5OTliYTlmLi5mOTlkZTEwYzZhYjA3MmE5Njc1OWYzNmQ0ZTYyN2E2
NDk0OWI0ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
RmlsdGVySW5mby5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBy
ZW1vdmUoUmVuZGVyTGF5ZXImKTsKIAogICAgIGV4cGxpY2l0IEZpbHRlckluZm8oUmVuZGVyTGF5
ZXImKTsKLSAgICB+RmlsdGVySW5mbygpOworICAgIHZpcnR1YWwgfkZpbHRlckluZm8oKTsKIAog
ICAgIGNvbnN0IExheW91dFJlY3QmIGRpcnR5U291cmNlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlydHlTb3VyY2VSZWN0OyB9CiAgICAgdm9pZCBleHBhbmREaXJ0eVNvdXJjZVJlY3QoY29uc3Qg
TGF5b3V0UmVjdCYgcmVjdCkgeyBtX2RpcnR5U291cmNlUmVjdC51bml0ZShyZWN0KTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCmluZGV4IGQwZTNmZTVkMjk0
NzEyYjIyMmM0OWM3M2IyODNhM2Y2N2UwNjBmZjQuLmY1Zjk2NDM1MzA3ZGYzYzQ5MzcyYWIyN2Fm
NzU4MjVkNGU0YzUzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQnJlYWsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJy
ZWFrLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vZGUoKSBjb25zdCA9
IGRlbGV0ZTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8m
LCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIGZpbmFsIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIHsgfQogCiAg
ICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IGNh
cmV0TWluT2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1hcnF1ZWUuaAppbmRleCA2Yzg3OTkzN2QzNTU5ODA0ZjQ1ZDcxY2QwYjc3NGI4ZWJmOTA2
YzMyLi44N2MyMDJkYWFiMzMzZDQxOTNlMzdkOWE1YTFkMDFiZmZhY2Y3OWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmgKQEAgLTUzLDExICs1MywxMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJMYXllcjsKIAogLy8gVGhpcyBjbGFzcyBoYW5k
bGVzIHRoZSBhdXRvLXNjcm9sbGluZyBvZiBsYXllcnMgd2l0aCBvdmVyZmxvdzogbWFycXVlZS4K
LWNsYXNzIFJlbmRlck1hcnF1ZWUgeworY2xhc3MgUmVuZGVyTWFycXVlZSBmaW5hbCB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUmVuZGVyTWFycXVlZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlck1hcnF1ZWUoUmVuZGVyTGF5ZXIqKTsK
LSAgICB2aXJ0dWFsIH5SZW5kZXJNYXJxdWVlKCk7CisgICAgflJlbmRlck1hcnF1ZWUoKTsKIAog
ICAgIGludCBzcGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlZWQ7IH0KICAgICBpbnQgbWFycXVl
ZVNwZWVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oCmluZGV4IDg2ZDI3NzhmOWM4MDZiNzA3YmY0M2YxYWNl
YzhjMWJhMmZhNjBjMGYuLjdhNjVjMjk5Mjk4YjhjM2I2Nzg0MTZlOTc0ODMyYmUzZjVlOWNjYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xF
bGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRy
b2xFbGVtZW50cy5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJNZWRpYVZv
bHVtZVNsaWRlckNvbnRhaW5lcihFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5
b3V0KCkgb3ZlcnJpZGU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBA
IC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNv
bnRhaW5lcihFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwogCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJp
ZGU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02Myw3ICs2Myw3
IEBAIHB1YmxpYzoKICAgICBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KEVsZW1lbnQm
LCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIH07CiAKICNlbmRp
ZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKaW5kZXggMDIyM2M5ODJjNzIwYzM3
ZTY3NTk0YTA3OGU5YzljODBjMGVjMTQ2Zi4uZjk1NWZhMmZkZTk3NGM1MmI4ZmIzNjM5N2MzZmY5
NTIzMDQyYjE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaApAQCAtNDEsOCArNDEsNiBAQCBwdWJsaWM6CiAgICAg
UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4pOwogICAgIH5SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBpc1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLQogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGbG93Q2hpbGRJbmZvKFJlbmRl
ck9iamVjdCopIG92ZXJyaWRlOwogCiAgICAgUmVuZGVyQmxvY2tGbG93KiBtdWx0aUNvbHVtbkJs
b2NrRmxvdygpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4ocGFyZW50
KCkpOyB9CkBAIC01NSw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlck11bHRpQ29sdW1u
U3Bhbm5lclBsYWNlaG9sZGVyKiBmaW5kQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKFJlbmRlckJv
eCogc3Bhbm5lcikgY29uc3QgeyByZXR1cm4gbV9zcGFubmVyTWFwLmdldChzcGFubmVyKTsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAogICAgIC8vIEZpbmQgdGhlIHNldCBpbnNpZGUgd2hp
Y2ggdGhlIHNwZWNpZmllZCByZW5kZXJlciB3b3VsZCBiZSByZW5kZXJlZC4KICAgICBSZW5kZXJN
dWx0aUNvbHVtblNldCogZmluZFNldFJlbmRlcmluZyhSZW5kZXJPYmplY3QqKSBjb25zdDsKQEAg
LTExNSw2ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZENoZWNrQ29s
dW1uQnJlYWtzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBib29s
IGlzUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBhZGRSZWdpb25Ub1RocmVhZChSZW5kZXJSZWdpb24qKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5TZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5o
CmluZGV4IDI3Y2E3MzdjMzhkODJhY2U0ZGY0YzU2NzUyOTlkMWZmYjU2ZTM3NmQuLjhjYWMwNTA1
NGI4YjU0MDRjNDAwYjM3MWUzMmQ0ZjE4OWQ2MWM4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCkBAIC00Nyw4ICs0Nyw2IEBAIGNsYXNz
IFJlbmRlck11bHRpQ29sdW1uU2V0IGZpbmFsIDogcHVibGljIFJlbmRlclJlZ2lvblNldCB7CiBw
dWJsaWM6CiAgICAgUmVuZGVyTXVsdGlDb2x1bW5TZXQoUmVuZGVyRmxvd1RocmVhZCYsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1u
U2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgUmVuZGVyQmxvY2tG
bG93KiBtdWx0aUNvbHVtbkJsb2NrRmxvdygpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFJlbmRl
ckJsb2NrRmxvdz4ocGFyZW50KCkpOyB9CiAgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFk
KiBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZW5k
ZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqPihmbG93VGhyZWFkKCkpOyB9CiAKQEAgLTEzMSw5ICsx
MjksMTAgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50KCkgY29uc3Q7CiAKIHBy
b3RlY3RlZDoKLSAgICB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKCkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAg
CiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1uU2V0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRV
bml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENv
bXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xNTUsNyArMTU0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0VW5pdCBjYWxjdWxh
dGVNYXhDb2x1bW5IZWlnaHQoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNvbHVtbkdhcCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uU3Bhbm5lclBsYWNlaG9sZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaAppbmRleCBmMWE1Yjg4NDczYjg0YWY1YThh
YjI1YzNiZDMzZTQ3YWIzYjQ3YWUzLi5jZjlkMWIzNzljYzRmZjkxYzdlMzc1ZTZlYjMxNGY4YjA5
NDE3OGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlD
b2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaApAQCAtNDAsMTUgKzQwLDE1IEBA
IGNsYXNzIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyIGZpbmFsIDogcHVibGlj
IFJlbmRlckJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5l
clBsYWNlaG9sZGVyKiBjcmVhdGVBbm9ueW1vdXMoUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFk
KiwgUmVuZGVyQm94KiBzcGFubmVyLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwogCi0gICAg
dmlydHVhbCBib29sIGlzUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgUmVuZGVyQm94KiBzcGFubmVyKCkgY29u
c3QgeyByZXR1cm4gbV9zcGFubmVyOyB9CiAgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFk
KiBmbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9mbG93VGhyZWFkOyB9CiAKIHByaXZhdGU6
CiAgICAgUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIoUmVuZGVyTXVsdGlDb2x1
bW5GbG93VGhyZWFkKiwgUmVuZGVyQm94KiBzcGFubmVyLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2Fu
SGF2ZUNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVy
cmlkZSB7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIFJlbmRlckJveCogbV9zcGFubmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaAppbmRleCBjNWVmYjMyNDk0YzM4
MWE2MmY4NDU3MWFmMTc3YTY0NDZiM2MxZDVhLi4yYzI0NjlmNzdkYTQ2MGExNjZhODA1ZTdlNTBi
ZGNiNjNiZDAzYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQuaApAQCAtNTQsMTIgKzU0LDExIEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYg
cGFyZW50U3R5bGUpOwogCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2
b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFu
Z2U+PiYpIGNvbnN0OwogCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0
KCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0KCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCBtYXhQYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0
OwogICAgIAogICAgIExheW91dFJlY3QgZmxvd1RocmVhZFBvcnRpb25SZWN0Rm9yQ2xpcHBpbmco
Ym9vbCBpc0ZpcnN0UmVnaW9uSW5SYW5nZSwgYm9vbCBpc0xhc3RSZWdpb25JblJhbmdlKSBjb25z
dDsKQEAgLTEyMSw2ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVnaW9u
SWZOZWVkZWQoKTsKIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQiOyB9CiAKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjb21w
dXRlU3R5bGVJblJlZ2lvbihSZW5kZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxl
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1l
ZEZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dU
aHJlYWQuaAppbmRleCAxYjBlNzk0MDUzNmY3MDg0MDQ5Mjk3YTU3YmQ1MTU5NmRkMWQ4N2JkLi5k
ODczZjFiN2IzZmY1NjZlMjQ3YzVlZGVhOWEyZWYwMzA5MmIyZjA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCkBAIC04Myw3ICs4Myw3
IEBAIHB1YmxpYzoKICAgICBib29sIGlzTWFya2VkRm9yRGVzdHJ1Y3Rpb24oKSBjb25zdDsKICAg
ICB2b2lkIGdldFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPj4mLCBjb25zdCBSZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudCopIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5QnJlYWtBZnRl
ckNvbnRlbnQoTGF5b3V0VW5pdCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGFw
cGx5QnJlYWtBZnRlckNvbnRlbnQoTGF5b3V0VW5pdCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFs
IGJvb2wgY29sbGVjdHNHcmFwaGljc0xheWVyc1VuZGVyUmVnaW9ucygpIGNvbnN0IG92ZXJyaWRl
OwogCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJSZW5kZXJPYmpl
Y3RDdXN0b21TdHlsZShjb25zdCBSZW5kZXJPYmplY3QqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVGbG93Q2hpbGRJbmZvKFJlbmRlck9iamVjdCopIG92ZXJyaWRlIGZpbmFsOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVGbG93Q2hpbGRJbmZvKFJlbmRlck9iamVjdCopIG92ZXJyaWRlOwog
CiAgICAgTGF5b3V0VW5pdCBmbG93Q29udGVudEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxv
d0NvbnRlbnRCb3R0b207IH0KICAgICB2b2lkIGRpc3BhdGNoTmFtZWRGbG93RXZlbnRzKCk7CkBA
IC0xMTEsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVPdmVyZmxvdyhM
YXlvdXRVbml0LCBib29sID0gZmFsc2UpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGRpc3BhdGNoUmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50SWZOZWVkZWQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaAppbmRleCBkNWZiMWQzNWRiMDJl
N2ZhNTVmNWNiYTVlMDIzYmUyNThjZmJiMDFiLi45NzQzYTRmNDdlYTg5MGUxMDE3ZTdlMzU3ZDAw
NDdmMDgzNDE1NjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UXVvdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaApAQCAt
MzksNyArMzksNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3ll
ZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJRdW90ZSI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNR
dW90ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH07CisgICAgdmlydHVhbCBib29s
IGlzUXVvdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2
b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAppbmRleCAyOWQ3OWQ1
MmE0MzVkMzg2OGI0ZjNjZWYwZjVjN2FkMzcyYzJlOTdmLi5iM2YzMWI4MDhiYjYzNjhiMDYzMDcw
MmM2YzAyYmJjZmJlNzNhMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5oCkBAIC00OCw4ICs0OCw2IEBAIGNsYXNzIFJlbmRlck5hbWVkRmxvd1RocmVhZDsKIAogY2xh
c3MgUmVuZGVyUmVnaW9uIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAg
dmlydHVhbCBib29sIGlzUmVuZGVyUmVnaW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQotCiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKIAogICAgIHZvaWQgc2V0Rmxvd1Ro
cmVhZFBvcnRpb25SZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpIHsgbV9mbG93VGhyZWFkUG9y
dGlvblJlY3QgPSByZWN0OyB9CkBAIC0xNTAsNyArMTQ4LDggQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgY29tcHV0ZU92ZXJmbG93RnJvbUZsb3dUaHJlYWQoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUmVnaW9u
IjsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclJlZ2lvbigpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVnaW9uIjsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGluc2VydGVkSW50b1RyZWUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bEJlUmVtb3ZlZEZyb21UcmVlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxpY2EuaAppbmRleCBjOTQ1Y2JjZGIyZTY5OGEzZTY3OTkyYzRiZmMzZGFiOTI0ZThl
MDZhLi41ZjRhNWFlODIwNDBkZWIzZDE0Y2FmNTY1MDUwZTVhYzZjMjZhNjI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmgKQEAgLTM4LDEzICszOCwxMyBAQCBwdWJs
aWM6CiAgICAgUmVuZGVyUmVwbGljYShEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsK
ICAgICB2aXJ0dWFsIH5SZW5kZXJSZXBsaWNhKCk7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUmVwbGljYSI7IH0KKyAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyUmVwbGljYSI7IH0KIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIAogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNSZXBsaWNhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaAppbmRl
eCBjMzBhYTExMWU5ZTJmMzMzOWYyODM1MWJjZDM2NGQ5MmNlNzVlOGFiLi5iNzIwZTU3MDIxMDUz
NDViZjMwNTFmZTBjNjNkZjdlNjA4MTI2NTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieUJhc2UuaApAQCAtNDIsMTQgKzQyLDEzIEBAIHB1YmxpYzoKICAgICBSZW5kZXJS
dWJ5QmFzZShEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5S
ZW5kZXJSdWJ5QmFzZSgpOwogICAgIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJSdWJ5QmFzZSAoYW5vbnltb3VzKSI7IH0KLQotICAg
IHZpcnR1YWwgYm9vbCBpc1J1YnlCYXNlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJSdWJ5QmFzZSAoYW5vbnltb3VzKSI7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJv
b2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEVUZXh0QWxpZ24gdGV4dEFsaWdubWVudEZvckxpbmUoYm9v
bCBlbmRzV2l0aFNvZnRCcmVhaykgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdElubGlu
ZURpcmVjdGlvbkxpbmVCb3VuZHMoaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQsIGZsb2F0
JiBsb2dpY2FsTGVmdCwgZmxvYXQmIGxvZ2ljYWxXaWR0aCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGlzUnVieUJhc2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmly
dHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRl
clN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBFVGV4dEFsaWduIHRleHRBbGln
bm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91bmRzKGludCBleHBhbnNp
b25PcHBvcnR1bml0eUNvdW50LCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBsb2dpY2FsV2lk
dGgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgbWVyZ2VDaGlsZHJlbldpdGhCYXNlKFJlbmRl
clJ1YnlCYXNlKiB0b0Jsb2NrKTsKIAogICAgIHZvaWQgbW92ZUNoaWxkcmVuKFJlbmRlclJ1YnlC
YXNlKiB0b0Jhc2UsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCmluZGV4IGQ5ZGNlNGY3OGE2ZWU1ZTM0Y2E3Njk5
ZWM0YzEwMTNhNWY2OGM3Y2UuLjA3MmNiZmU0OTM5NWM4ZmIwMmM4M2ViZmMxMzNmZDU3MzRhMTgx
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaApAQCAtNDgsMjAg
KzQ4LDIwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzUnVieVRleHQoKSBjb25zdDsKICAgICBi
b29sIGhhc1J1YnlCYXNlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZTsKICAgICBSZW5kZXJSdWJ5VGV4
dCogcnVieVRleHQoKSBjb25zdDsKICAgICBSZW5kZXJSdWJ5QmFzZSogcnVieUJhc2UoKSBjb25z
dDsKICAgICBSZW5kZXJSdWJ5QmFzZSogcnVieUJhc2VTYWZlKCk7IC8vIGNyZWF0ZXMgdGhlIGJh
c2UgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogbGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91
dFNwZWNpYWxFeGNsdWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlz
Q2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRl
ck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93
ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
UmVuZGVyQmxvY2sqIGZpcnN0TGluZUJsb2NrKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUZpcnN0TGV0dGVyKCk7CisgICAgdmlydHVhbCBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxv
Y2soKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRmlyc3RMZXR0ZXIo
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0T3ZlcmhhbmcoYm9vbCBmaXJzdExpbmUsIFJlbmRl
ck9iamVjdCogc3RhcnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlciwgaW50JiBz
dGFydE92ZXJoYW5nLCBpbnQmIGVuZE92ZXJoYW5nKSBjb25zdDsKIApAQCAtNzEsMTAgKzcxLDEw
IEBAIHByb3RlY3RlZDoKICAgICBSZW5kZXJSdWJ5QmFzZSogY3JlYXRlUnVieUJhc2UoKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNSdWJ5UnVuKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJSZW5kZXJSdWJ5UnVuIChhbm9ueW1vdXMpIjsgfQotICAgIHZpcnR1YWwgYm9vbCBj
cmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJCbG9jayopIHsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc1J1YnlSdW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlclJ1YnlSdW4gKGFub255bW91cykiOyB9CisgICAgdmlydHVhbCBib29s
IGNyZWF0ZXNBbm9ueW1vdXNXcmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVMZWZ0b3ZlckFub255bW91c0Jsb2NrKFJlbmRlckJs
b2NrKikgb3ZlcnJpZGUgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKaW5kZXggZGYxMGI3NTJmMWFhZTUz
ZDUxMDg1YzI0ZjY5NzQ0MDNiZDY2YzkxNi4uZjZjYjMyZDYyZDcwYzY3MDFhNzY2NDg0NzdmYmJl
MTU1NTE0MTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIu
aApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBpbnQgbWluaW11bVRodW1iTGVuZ3Ro
KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNPdmVybGF5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNPdmVybGF5U2Nyb2xsYmFyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGZsb2F0IG9wYWNpdHkoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKaW5kZXggY2Vh
NzdiYjc0ZmFiMTA2ZThkYTQzOTY2NWYzOGY2OWViMTU2NDExYy4uZWU2NDIyYjdlMWI4NDBmYjgy
MTkzZWM0OGVlNDI0ZGE5ZjIwZWViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyUGFydC5oCkBAIC0zOSwxMSArMzksMTEgQEAgcHVibGljOgogICAgIAog
ICAgIHZpcnR1YWwgflJlbmRlclNjcm9sbGJhclBhcnQoKTsKIAotICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTY3JvbGxiYXJQYXJ0Ijsg
fQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJTY3JvbGxiYXJQYXJ0IjsgfQogICAgIAotICAgIHZpcnR1YWwgYm9vbCBy
ZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
cmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRl
OwogICAgIAogICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBM
YXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmKTsKIApAQCAtNTMsMTUgKzUzLDE1IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNvbnN0IG92ZXJyaWRl
IHsgQVNTRVJUKGlzSW50ZWdlclZhbHVlKG1fbWFyZ2luQm94LmxlZnQoKSkpOyByZXR1cm4gbV9t
YXJnaW5Cb3gubGVmdCgpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyBBU1NFUlQoaXNJbnRlZ2VyVmFsdWUobV9tYXJnaW5Cb3gucmlnaHQo
KSkpOyByZXR1cm4gbV9tYXJnaW5Cb3gucmlnaHQoKTsgfQogCi0gICAgdmlydHVhbCBib29sIGlz
UmVuZGVyU2Nyb2xsYmFyUGFydCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICBSZW5kZXJC
b3gqIHJlbmRlcmVyT3duaW5nU2Nyb2xsYmFyKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2
aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUpOwotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZElt
YWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0
IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2
b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7CisgICAgdmlydHVhbCBib29sIGlz
UmVuZGVyU2Nyb2xsYmFyUGFydCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgbGF5b3V0SG9yaXpvbnRhbFBhcnQoKTsKICAgICB2b2lkIGxheW91dFZlcnRp
Y2FsUGFydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
VGhlbWUuaAppbmRleCBlMzMxZDAwOWI3N2VkYTUxZWNlZDYyODI4Nzc3MzQyYzRhOGU0YjQ5Li41
MmUwMTZmNzNiZTUyMjA1MmIwNjNmMGNiNDkwZWU0ZDFhNmY5MzU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaApAQCAtMzQsNTEgKzM0LDUx
IEBAIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFNjcm9sbGJhcjsKIGNsYXNzIFNj
cm9sbFZpZXc7CiAKLWNsYXNzIFJlbmRlclNjcm9sbGJhclRoZW1lIDogcHVibGljIFNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlIHsKK2NsYXNzIFJlbmRlclNjcm9sbGJhclRoZW1lIGZpbmFsIDogcHVi
bGljIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5SZW5k
ZXJTY3JvbGxiYXJUaGVtZSgpIHt9OworICAgIHZpcnR1YWwgflJlbmRlclNjcm9sbGJhclRoZW1l
KCkgeyB9CiAgICAgCi0gICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJh
ckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUo
KS0+c2Nyb2xsYmFyVGhpY2tuZXNzKGNvbnRyb2xTaXplKTsgfQorICAgIHZpcnR1YWwgaW50IHNj
cm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkgb3ZlcnJp
ZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcyhj
b250cm9sU2l6ZSk7IH0KIAotICAgIHZpcnR1YWwgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBi
dXR0b25zUGxhY2VtZW50KCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkt
PmJ1dHRvbnNQbGFjZW1lbnQoKTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyQnV0dG9uc1BsYWNl
bWVudCBidXR0b25zUGxhY2VtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFy
VGhlbWU6OnRoZW1lKCktPmJ1dHRvbnNQbGFjZW1lbnQoKTsgfQogCi0gICAgdmlydHVhbCBib29s
IHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3Kiwg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCktPnNob3VsZENlbnRlck9uVGh1bWIoc2Nyb2xsYmFyLCBldmVudCk7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBvdmVycmlkZSB7IHJl
dHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2hvdWxkQ2VudGVyT25UaHVtYihzY3JvbGxi
YXIsIGV2ZW50KTsgfQogICAgIAotICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xs
VGltZXJEZWxheSgpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5pbml0aWFsQXV0
b3Njcm9sbFRpbWVyRGVsYXkoKTsgfQotICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1l
ckRlbGF5KCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPmF1dG9zY3JvbGxUaW1l
ckRlbGF5KCk7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVs
YXkoKSBvdmVycmlkZSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+aW5pdGlhbEF1
dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBhdXRvc2Nyb2xsVGlt
ZXJEZWxheSgpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5hdXRv
c2Nyb2xsVGltZXJEZWxheSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxi
YXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCktPnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
KSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+dW5yZWdpc3RlclNjcm9sbGJhcihz
Y3JvbGxiYXIpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1l
Ojp0aGVtZSgpLT5yZWdpc3RlclNjcm9sbGJhcihzY3JvbGxiYXIpOyB9CisgICAgdmlydHVhbCB2
b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikg
b3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVucmVnaXN0ZXJTY3Jv
bGxiYXIoc2Nyb2xsYmFyKTsgfQogCi0gICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3Ro
KFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVu
Z3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGJ1dHRvblNp
emVzQWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBpbnQmIGJlZm9yZVNpemUs
IGludCYgYWZ0ZXJTaXplKTsKICAgICAKICAgICBzdGF0aWMgUmVuZGVyU2Nyb2xsYmFyVGhlbWUq
IHJlbmRlclNjcm9sbGJhclRoZW1lKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wg
aGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopOwotICAgIHZpcnR1YWwgYm9vbCBoYXNU
aHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25z
KFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGhhc1Ro
dW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEludFJl
Y3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBi
b29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9u
UmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tC
dXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRv
blJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5n
ID0gZmFsc2UpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCB2b2lkIHdpbGxQYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxi
YXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRQYWludFNjcm9s
bGJhcihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92ZXJyaWRlOwog
ICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3ND
b250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
cmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBj
b25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGlj
c0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxi
YXJQYXJ0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xs
YmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBj
b25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgY29uc3RyYWlu
VHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNl
cyhTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgKaW5kZXggZjk5MzI3OTMyNzY2YTI2OTgwZTQ4MzQ2
NWIyOWE5NTAzNzVkNzMzNC4uN2Y3ZjM1MjY3ZDMxMjA3ODUzNWIyZGE4NWFjNTkyM2FjOWFlMDIy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luLmgKQEAgLTQ5LDExICs0OSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZnJhbWVPd25l
ckVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4iOyB9CiAKLSAg
ICB2aXJ0dWFsIEN1cnNvckRpcmVjdGl2ZSBnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBD
dXJzb3ImKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTbmFwc2hv
dHRlZFBsdWdJbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
aXJ0dWFsIEN1cnNvckRpcmVjdGl2ZSBnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBDdXJz
b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTbmFwc2hvdHRlZFBsdWdJ
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAgICAKLSAgICB2
aXJ0dWFsIGJvb2wgY2FuSGF2ZVdpZGdldCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNhbkhhdmVXaWRnZXQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBwYWludFNuYXBzaG90KFBhaW50SW5mbyYs
IGNvbnN0IExheW91dFBvaW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKaW5kZXggZDYyYjAwODM3ZmNiOWI2N2M1
NWU4Zjk5ZTJjZTM3ZDliMjUwODQ2Ny4uMDY3OWEwZmJjOWJhODFjY2QxMGMwNDhmYzU2NDgwNWQw
ZWEzYTlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lLmgKQEAgLTM4LDE3ICszOCwxNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBib29s
IGlzVGV4dEFyZWEoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlz
VGV4dEFyZWEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFs
IGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jiwg
Y29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBmbG9hdCBnZXRBdmVyYWdlQ2hhcldpZHRoKCk7Ci0gICAgdmlydHVhbCBMYXlvdXRV
bml0IHByZWZlcnJlZENvbnRlbnRMb2dpY2FsV2lkdGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGZsb2F0IGdldEF2ZXJhZ2VDaGFyV2lkdGgoKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIExheW91dFVuaXQgcHJlZmVycmVkQ29udGVudExvZ2ljYWxXaWR0aChmbG9hdCBjaGFy
V2lkdGgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlQ29u
dHJvbExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsaW5lSGVpZ2h0LCBMYXlvdXRVbml0IG5vbkNv
bnRlbnRIZWlnaHQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9z
aXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExp
bmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0OworICAgIHZp
cnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwg
TGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmlu
Z0xpbmUpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBQYXNzUmVmPFJlbmRlclN0eWxl
PiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29u
c3Q7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNsdWRlZENoaWxk
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7CisgICAgdmlydHVhbCBQYXNzUmVmPFJlbmRlclN0eWxl
PiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNs
dWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dEZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZy
YWdtZW50LmgKaW5kZXggNzIzMWI1NmY1N2U4ZjA0OGU4NTc0MWI0MjAyMDRkNDg0OWQxMjFiZi4u
ODJkY2IxOWUyODAyM2MxYzgxM2YzYzgxMTFkYTUzMzFhZjc0Y2E5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaApAQCAtMzksOCArMzksNiBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0RnJhZ21lbnQoKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBpc1RleHRGcmFnbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LQogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHVuc2lnbmVkIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydDsgfQpAQCAtNTks
NiArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbHRUZXh0KGNvbnN0IFN0cmluZyYgYWx0
VGV4dCkgeyBtX2FsdFRleHQgPSBhbHRUZXh0OyB9CiAgICAgCiBwcml2YXRlOgorICAgIHZpcnR1
YWwgYm9vbCBpc1RleHRGcmFnbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVE
ZXN0cm95ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVHdGsuaAppbmRleCAwZTEwNjViNDk2YzcyZGVmNDIwY2NiNmMxOTRhNjY2YTVjNDdiMTJkLi5m
ZTFmZTZmMmE4ZGI2Mjc0ODIyOGNlN2NkOWFmNGZiZjRkYjdiNzg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuaApAQCAtMTE2LDEwICsxMTYsMTAgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0Jiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIHBhaW50VGV4dEFyZWEoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICBpbnQgcG9wdXBJbnRlcm5hbFBh
ZGRpbmdMZWZ0KFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IHBvcHVwSW50
ZXJuYWxQYWRkaW5nUmlnaHQoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICBpbnQg
cG9wdXBJbnRlcm5hbFBhZGRpbmdUb3AoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdCb3R0b20oUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ0xlZnQoUmVuZGVyU3R5
bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGlu
Z1JpZ2h0KFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBpbnQgcG9w
dXBJbnRlcm5hbFBhZGRpbmdUb3AoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ0JvdHRvbShSZW5kZXJTdHlsZSYpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgLy8gVGhlIE1hYyBwb3J0IGRpZmZlcmVudGlhdGVzIGJldHdlZW4g
dGhlICJtZW51IGxpc3QiIGFuZCB0aGUgIm1lbnUgbGlzdCBidXR0b24uIgogICAgIC8vIFRoZSBm
b3JtZXIgaXMgdXNlZCB3aGVuIGEgbWVudSBsaXN0IGJ1dHRvbiBoYXMgYmVlbiBzdHlsZWQuIFRo
aXMgaXMgdXNlZCB0byBlbnN1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLmgKaW5kZXggY2Q4ZWYyY2M0MjUzOTIzZTU5ZjAzYTM4MDRmNDNlM2QxY2VjYzY5Ny4uMWM4
NDM1N2FjZGMzN2UzNmJkMGJlYThiYzliMTBjYzRiMTIyYTY4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAgICAg
Ci1jbGFzcyBSZW5kZXJUaGVtZUlPUyA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CitjbGFzcyBSZW5k
ZXJUaGVtZUlPUyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCmluZGV4IGFlYjQzOGYwMTU3YWE5MjhjZjMyZDQ2NTky
YWFiMDM5NTVhMTJjZjIuLmNjODM4ZWYxNDNiOWMwYmNlZjZlNGRiZDQxMTUyYjdiYTllNzg1Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCkBAIC00NywxMiAr
NDcsMTIgQEAgc3RydWN0IFRoZW1lRGF0YSB7CiAgICAgdW5zaWduZWQgbV9jbGFzc2ljU3RhdGU7
CiB9OwogCi1jbGFzcyBSZW5kZXJUaGVtZVdpbiA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CitjbGFz
cyBSZW5kZXJUaGVtZVdpbiBmaW5hbDogcHVibGljIFJlbmRlclRoZW1lIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CiAKLSAgICB2aXJ0dWFs
IFN0cmluZyBleHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgZXh0
cmFRdWlya3NTdHlsZVNoZWV0KCk7CisgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFEZWZhdWx0U3R5
bGVTaGVldCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhUXVpcmtzU3R5bGVT
aGVldCgpIG92ZXJyaWRlOwogCiAgICAgLy8gQSBtZXRob2QgYXNraW5nIGlmIHRoZSB0aGVtZSdz
IGNvbnRyb2xzIGFjdHVhbGx5IGNhcmUgYWJvdXQgcmVkcmF3aW5nIHdoZW4gaG92ZXJlZC4KICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVv
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAppbmRleCBlYTYwOGVj
ODE2NjBiYjA0NzcxNWMzOTJlYzRjZDc0YzBmNzU2NzA0Li43NDgyNGI3YzY5YjM5YTMzYzFlMDIz
NjllZTgzNzczMTRlMGNjMDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlkZW8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8u
aApAQCAtNTAsMzcgKzUwLDM3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcmVxdWlyZXNJbW1lZGlh
dGVDb21wb3NpdGluZygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIHNob3VsZERpc3BsYXlW
aWRlbygpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRGlzcGxheVZpZGVvKCkgY29uc3Q7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBtZWRpYUVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVG
cm9tRWxlbWVudCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVD
aGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCkgb3ZlcnJp
ZGU7CiAgICAgTGF5b3V0U2l6ZSBjYWxjdWxhdGVJbnRyaW5zaWNTaXplKCk7CiAgICAgdm9pZCB1
cGRhdGVJbnRyaW5zaWNTaXplKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdy
YXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopOworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNo
YW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0Kikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyVmlk
ZW8iOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlclZpZGVvIjsgfQogCi0gICAgdmlydHVhbCBib29sIHJlcXVpcmVz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVmlkZW8o
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzVmlk
ZW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1
YWwgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkICA9IENvbXB1dGVBY3R1YWwpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsSGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIExheW91dFVuaXQg
bWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldExlZnQoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0VG9wKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBM
YXlvdXRVbml0IG9mZnNldFdpZHRoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG9m
ZnNldEhlaWdodCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRMZWZ0KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldFRvcCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRXaWR0aCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRIZWlnaHQoKSBjb25zdCBvdmVy
cmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCB1cGRhdGVQbGF5ZXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oCmluZGV4IGJmZmQyMmNkMmFmNmJiYjljMzQ1MTk5OGVl
NjNjMzhlNGVmYTUzMjEuLjI3NWY4NjZlNzU5ODVmODZkNjA2ZmYyNjhhMjA2ZDk4NzFlZjM1ZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuaApAQCAtNDEsMTIgKzQx
LDEyIEBAIGNsYXNzIFJlbmRlclRleHQ7CiBzdHJ1Y3QgVGV4dEF1dG9zaXppbmdXaW5kb3dJbmZv
Owogc3RydWN0IFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm87CiAKLWNsYXNzIFRleHRBdXRvc2l6
ZXIgeworY2xhc3MgVGV4dEF1dG9zaXplciBmaW5hbCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoVGV4dEF1dG9zaXplcik7CiAKIHB1YmxpYzoKICAgICBleHBsaWNpdCBUZXh0QXV0b3NpemVy
KERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCB+VGV4dEF1dG9zaXplcigpOworICAgIH5UZXh0QXV0
b3NpemVyKCk7CiAKICAgICBib29sIHByb2Nlc3NTdWJ0cmVlKFJlbmRlck9iamVjdCogbGF5b3V0
Um9vdCk7CiAgICAgdm9pZCByZWNhbGN1bGF0ZU11bHRpcGxpZXJzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LmgKaW5k
ZXggY2I4OTU3NmVmZmQ1NDg1OGI0MDA5NmNmNWZmZmJlMTI1MmMxNWZiZC4uYTM0NzNlZWE4M2Fk
M2NkNTc4NGYyNDlmYmNhNDNkNGZhY2I3YTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaApAQCAtMzksNyArMzks
NyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgZmxvYXQgdmlydHVh
bExvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBmbG9hdCB2
aXJ0dWFsTG9naWNhbEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAppbmRleCBjOTRhMjFkN2RiYzI3NGU5ODNkYjhl
NzYwZjJmNTEwNjI3YTA0YWUxLi5mOGYxMmE4ZmEzYmExNDM0NzU4ZWZiN2ZkNGJiYzNjNzBjNTNl
ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxUYWJsZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxUYWJsZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MVGFibGUiOyB9
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE1lbmNsb3NlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE1lbmNsb3NlLmgKaW5kZXggNDNiNDYzNDgxYjlkNDM5NmFkMjg1ZDlmMGZiMjQyYTZh
NjhlMWJmZS4uNzY5ODQ4OTliYjkwNDQ3ZTU5NGUyYTJmYTIyYWM4YTQ2MmMxOWI2YiAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9z
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVu
Y2xvc2UuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTWF0aE1MTWVuY2xv
c2UoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyTWF0aE1M
TWVuY2xvc2UiOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTE1lbmNsb3NlIjsgfQogICAgIHZpcnR1YWwg
dm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVMb2dpY2FsSGVpZ2h0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVm
b3JlQ2hpbGQgPSBudWxscHRyKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAppbmRleCBkNGI2OWQ4ZjUx
MTU2NjExOGE1MmMyMjBjMTVjZmU4YTFlMWNiMmJhLi4zNjk5YjcxY2Q2ODg2YTc0YzM0MGQ5Nzcz
ZDljOTAwNGRiZjNmNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCkBAIC03MiwxMiArNzIsMTIgQEAgcHVibGlj
OgogICAgIC8vIEZJWE1FOiBUaGUgZGlzcGxheXN0eWxlIHByb3BlcnR5IGlzIG5vdCBpbXBsZW1l
bnRlZCAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODczNykuCiAg
ICAgYm9vbCBpc0xhcmdlT3BlcmF0b3JJbkRpc3BsYXlTdHlsZSgpIGNvbnN0IHsgcmV0dXJuICFo
YXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpTdHJldGNoeSkgJiYgaGFz
T3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6TGFyZ2VPcCk7IH0KIAotICAg
IHZvaWQgdXBkYXRlU3R5bGUoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlU3R5bGUoKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgdm9pZCB1cGRhdGVUb2tlbkNvbnRl
bnQoY29uc3QgU3RyaW5nJiBvcGVyYXRvclN0cmluZyk7Ci0gICAgdm9pZCB1cGRhdGVUb2tlbkNv
bnRlbnQoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVG9rZW5Db250
ZW50KCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVPcGVyYXRvclByb3BlcnRpZXMo
KTsKICAgICB2b2lkIHNldE9wZXJhdG9yRmxhZ0FuZFNjaGVkdWxlTGF5b3V0SWZOZWVkZWQoTWF0
aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0
ZVZhbHVlKTsKICAgICBMYXlvdXRVbml0IHRyYWlsaW5nU3BhY2VFcnJvcigpOwpAQCAtMTU3LDcg
KzE1Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVs
bGlzaGVkT3BlcmF0b3IoKSBvdmVycmlkZSB7IHJldHVybiB0aGlzOyB9CiAgICAgdm9pZCByZWJ1
aWxkVG9rZW5Db250ZW50KGNvbnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcpOwotICAgIHZvaWQg
dXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJv
bUVsZW1lbnQoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dTdHJldGNoaW5nKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oCmluZGV4IGVjY2Q2MWM4NGRjZGY5OTIw
NzM0NTdiZDMzNzIzYzEzMzhiODMzZGYuLjVhMmE3OWZjNjZhYTE1ODhhMWQ0ZjRlOGQ2N2E3NWJi
NGJmZDhiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MT3BlcmF0b3IgewogcHVibGljOgogICAgIFJlbmRlck1h
dGhNTFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RyZXRjaFRvKExheW91dFVuaXQgaGVpZ2h0QWJvdmVCYXNlbGluZSwg
TGF5b3V0VW5pdCBkZXB0aEJlbG93QmFzZWxpbmUpOworICAgIHZpcnR1YWwgdm9pZCBzdHJldGNo
VG8oTGF5b3V0VW5pdCBoZWlnaHRBYm92ZUJhc2VsaW5lLCBMYXlvdXRVbml0IGRlcHRoQmVsb3dC
YXNlbGluZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVp
Z2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dp
Y2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KSBvdmVy
cmlkZTsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgaXNSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0
b3IgKGFub255bW91cykiIDogIlJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvciI7IH0KLSAgICB2
b2lkIHNldE9wZXJhdG9yUHJvcGVydGllcygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRPcGVyYXRvclByb3BlcnRpZXMoKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb290LmgKaW5kZXggYWYwMDBhNzJjMzkzNzBhZWMyZjM4MjI1ZGU1OTY1M2M1Y2NjYmU4Yy4u
OGFjNDhkNDUxOTUxMDk3MzQ5OTI2MGMyNTczZWU3YWMwMDFmZDQ4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgKQEAgLTczLDcg
KzczLDcgQEAgcHJpdmF0ZToKIH07CiAKIC8vIFRoZXNlIGFyZSBzcGVjaWZpYyB3cmFwcGVycyBm
b3IgdGhlIGluZGV4IGFuZCBiYXNlLCB0aGF0IGFzayB0aGUgcGFyZW50IHRvIHJlc3RydWN0dXJl
IHRoZSByZW5kZXJlcnMgYWZ0ZXIgY2hpbGQgcmVtb3ZhbC4KLWNsYXNzIFJlbmRlck1hdGhNTFJv
b3RXcmFwcGVyIDogcHVibGljIFJlbmRlck1hdGhNTFJvdyB7CitjbGFzcyBSZW5kZXJNYXRoTUxS
b290V3JhcHBlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxSb3cgewogCiBmcmllbmQgY2xh
c3MgUmVuZGVyTWF0aE1MUm9vdDsKIApAQCAtODMsOSArODMsOSBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgUmVuZGVyT2JqZWN0KiByZW1vdmVDaGlsZFdpdGhvdXRSZXN0cnVjdHVyaW5nKFJl
bmRlck9iamVjdCYpOwotICAgIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIHJlbW92ZUNoaWxkKFJlbmRl
ck9iamVjdCYpIG92ZXJyaWRlOwogICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MUm9v
dFdyYXBwZXI+IGNyZWF0ZUFub255bW91c1dyYXBwZXIoUmVuZGVyTWF0aE1MUm9vdCogcmVuZGVy
T2JqZWN0KTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxSb290V3JhcHBlcigpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNS
ZW5kZXJNYXRoTUxSb290V3JhcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIiOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAppbmRleCBiYTVkZjg4MjU3
ZDY4ZGJkMTQwMjE0NmMxY2UwZWY1YTA3Nzg3MDI3Li5iODdkOTY0MDRjODIxYmMyYzg3NTA4NWMz
Nzk4OGU2ZDBmMGVlNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm93LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
dXBkYXRlT3BlcmF0b3JQcm9wZXJ0aWVzKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFJvdygpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKaW5kZXggNzU0MjY3ODJlMGQ0ZTUyM2Y3
NjA5MjcxNzhkMGZiMjMyMjg5ZTVmYS4uMWI1ZTcxZDY2NjEyM2FiNTlmN2QzZmVmYzM3ODhmMGQ0
YzcwMzUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTY3JpcHRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTY3JpcHRzLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MU2NyaXB0czsKIAotY2xhc3MgUmVuZGVyTWF0aE1M
U2NyaXB0c1dyYXBwZXIgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgeworY2xhc3MgUmVuZGVy
TWF0aE1MU2NyaXB0c1dyYXBwZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewog
CiBmcmllbmQgY2xhc3MgUmVuZGVyTWF0aE1MU2NyaXB0czsKIApAQCAtNjYsNyArNjYsNyBAQCBw
cml2YXRlOgogfTsKIAogLy8gUmVuZGVyIGEgYmFzZSB3aXRoIHNjcmlwdHMuCi1jbGFzcyBSZW5k
ZXJNYXRoTUxTY3JpcHRzIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKK2NsYXNzIFJlbmRl
ck1hdGhNTFNjcmlwdHMgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogCiBmcmll
bmQgY2xhc3MgUmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXI7CiAKQEAgLTc1LDE3ICs3NSwxNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQs
IFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAgICAgCi0g
ICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCk7
CisgICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9y
KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBv
dmVycmlkZTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAgICAgCiBwcml2YXRlOgogICAgIHZvaWQg
YWRkQ2hpbGRJbnRlcm5hbChib29sIG5vcm1hbEluc2VydGlvbiwgUmVuZGVyT2JqZWN0KiBjaGls
ZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwogICAgIFJlbmRlck9iamVjdCogcmVt
b3ZlQ2hpbGRJbnRlcm5hbChib29sIG5vcm1hbFJlbW92YWwsIFJlbmRlck9iamVjdCYgY2hpbGQp
OwogCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MU2NyaXB0cygpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRo
TUxTY3JpcHRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJN
YXRoTUxTY3JpcHRzIjsgfQogCiAgICAgdm9pZCBmaXhBbm9ueW1vdXNTdHlsZUZvclN1YlN1cFBh
aXIoUmVuZGVyT2JqZWN0KiBzdWJTdXBQYWlyLCBib29sIGlzUG9zdFNjcmlwdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKaW5k
ZXggZjVhZDViYmEwNGYwYjUxYjAwNjkxYjFiZTI4NDI4OGRmYmUzMTYyOC4uMGE0ZDY0YWZjZGJk
NzJhNmFiYmMyNzY3ZmQ2MWIyOGM4ZDE2YzM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaApAQCAtNDEsMTYgKzQxLDE2IEBA
IHB1YmxpYzoKIAogICAgIE1hdGhNTFRleHRFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8TWF0aE1MVGV4dEVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxUb2tlbigpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9OwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5l
d0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlVG9rZW5Db250ZW50KCk7Ci0gICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92ZXJyaWRl
OwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjcmVhdGVXcmFwcGVySWZOZWVkZWQoKTsKIAogcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxUb2tlbigpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpc0Fub255bW91cygpID8gIlJlbmRlck1h
dGhNTFRva2VuIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJNYXRoTUxUb2tlbiI7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdHlsZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxV
bmRlck92ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
VW5kZXJPdmVyLmgKaW5kZXggYmRlNTkxNTY3ODc4OGMxNTg2MGQ4ZjBkZGI5OTQyOTc1ZjkzYjc5
OS4uNmY2NTNkNTFjMDA4MGFmODAwYmZmYjQ4OTRhNzRhOTAzN2NmNjZkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zl
ci5oCkBAIC0zMiwxNiArMzIsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotY2xh
c3MgUmVuZGVyTWF0aE1MVW5kZXJPdmVyIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKK2Ns
YXNzIFJlbmRlck1hdGhNTFVuZGVyT3ZlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9j
ayB7CiBwdWJsaWM6CiAgICAgUmVuZGVyTWF0aE1MVW5kZXJPdmVyKEVsZW1lbnQmLCBQYXNzUmVm
PFJlbmRlclN0eWxlPik7CiAgICAgCi0gICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciog
dW5lbWJlbGxpc2hlZE9wZXJhdG9yKCk7CisgICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRv
ciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGludCBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MVW5kZXJPdmVy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9Cb3hTaGFwZS5oCmluZGV4IDgwOWJhODI0NDY4ODY2MDk3MGUyM2ZlNjFhZGQ4
Y2I0Y2ZjODBlYWEuLmMyYjE3NzEzN2MzNzVhMjZhNWRiZDZjMWUyNzVkOTU1OTgxZjkzMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmgKQEAgLTQwLDcgKzQw
LDcgQEAgY2xhc3MgUmVuZGVyQm94OwogCiBSb3VuZGVkUmVjdCBjb21wdXRlUm91bmRlZFJlY3RG
b3JCb3hTaGFwZShDU1NCb3hUeXBlLCBjb25zdCBSZW5kZXJCb3gmKTsKIAotY2xhc3MgQm94U2hh
cGUgOiBwdWJsaWMgU2hhcGUgeworY2xhc3MgQm94U2hhcGUgZmluYWwgOiBwdWJsaWMgU2hhcGUg
ewogcHVibGljOgogICAgIEJveFNoYXBlKGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGJvdW5kcykK
ICAgICAgICAgOiBtX2JvdW5kcyhib3VuZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9Qb2x5Z29uU2hhcGUuaAppbmRleCA0NGZlNjI5N2FkZWQyZThhYThjOTJiNWNkNjk1
NzMyMjkxODRmYTE2Li5hZTUwYjBmN2UxZDA4ODIxOTllNGI2YjBlMmYzNTYyODk5MDJiOWUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmgKQEAg
LTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBPZmZzZXRQb2x5
Z29uRWRnZSA6IHB1YmxpYyBWZXJ0ZXhQYWlyIHsKK2NsYXNzIE9mZnNldFBvbHlnb25FZGdlIGZp
bmFsIDogcHVibGljIFZlcnRleFBhaXIgewogcHVibGljOgogICAgIE9mZnNldFBvbHlnb25FZGdl
KGNvbnN0IEZsb2F0UG9seWdvbkVkZ2UmIGVkZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQog
ICAgICAgICA6IG1fdmVydGV4MShlZGdlLnZlcnRleDEoKSArIG9mZnNldCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaAppbmRleCBiN2IwMTM1NmFkNDky
ZDAyMjAzOTQwYjlhZjNmNDliYTVhY2FlZDYyLi5jMDliNTJlYzU2OGQ1NjE5NTZhYmFjNTI0Zjhl
NzVmMjZlN2I2MmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1Jhc3RlclNoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0
ZXJTaGFwZS5oCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fb2Zmc2V0Owog
fTsKIAotY2xhc3MgUmFzdGVyU2hhcGUgOiBwdWJsaWMgU2hhcGUgeworY2xhc3MgUmFzdGVyU2hh
cGUgZmluYWwgOiBwdWJsaWMgU2hhcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJhc3Rl
clNoYXBlKTsKIHB1YmxpYzoKICAgICBSYXN0ZXJTaGFwZShzdGQ6OnVuaXF1ZV9wdHI8UmFzdGVy
U2hhcGVJbnRlcnZhbHM+IGludGVydmFscywgY29uc3QgSW50U2l6ZSYgbWFyZ2luUmVjdFNpemUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNo
YXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmgK
aW5kZXggZjBlM2YwZjc3YTU3Y2RmNTUxNWQ2ZmY3YjkzZmIwNzk0M2ExM2U2OC4uYjAzNjFjNjEy
MjI3MTE0NWI1OWU3OTJhODZhYzE0ZmUwOGZjZDY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuaApAQCAtMzksNyArMzksNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJlY3RhbmdsZVNoYXBlIDogcHVibGljIFNoYXBl
IHsKK2NsYXNzIFJlY3RhbmdsZVNoYXBlIGZpbmFsIDogcHVibGljIFNoYXBlIHsKIHB1YmxpYzoK
ICAgICBSZWN0YW5nbGVTaGFwZShjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvYXRT
aXplJiByYWRpaSkKICAgICAgICAgOiBtX2JvdW5kcyhib3VuZHMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCmluZGV4IGNiNzdjY2U2NmFjYmZjY2NjMDc5
OGJlZmU2NDlmOGUwNjIxOWIzZWQuLjQ5NDhkZjE3OWY1OTFjZjQ5NTRjMzVkY2Y0ZmVjODI4N2Iw
ZGIyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1No
YXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5o
CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKIAogfTsKIAotY2xhc3MgQmFzaWNTaGFwZUNp
cmNsZSA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKK2NsYXNzIEJhc2ljU2hhcGVDaXJjbGUgZmluYWwg
OiBwdWJsaWMgQmFzaWNTaGFwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QmFz
aWNTaGFwZUNpcmNsZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljU2hhcGVD
aXJjbGUpOyB9CiAKQEAgLTE3MCw3ICsxNzAsNyBAQCBwcml2YXRlOgogICAgIEJhc2ljU2hhcGVS
YWRpdXMgbV9yYWRpdXM7CiB9OwogCi1jbGFzcyBCYXNpY1NoYXBlRWxsaXBzZSA6IHB1YmxpYyBC
YXNpY1NoYXBlIHsKK2NsYXNzIEJhc2ljU2hhcGVFbGxpcHNlIGZpbmFsIDogcHVibGljIEJhc2lj
U2hhcGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhc2ljU2hhcGVFbGxpcHNl
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNTaGFwZUVsbGlwc2UpOyB9CiAK
QEAgLTE5OCw3ICsxOTgsNyBAQCBwcml2YXRlOgogICAgIEJhc2ljU2hhcGVSYWRpdXMgbV9yYWRp
dXNZOwogfTsKIAotY2xhc3MgQmFzaWNTaGFwZVBvbHlnb24gOiBwdWJsaWMgQmFzaWNTaGFwZSB7
CitjbGFzcyBCYXNpY1NoYXBlUG9seWdvbiBmaW5hbCA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY1NoYXBlUG9seWdvbj4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljU2hhcGVQb2x5Z29uKTsgfQogCkBAIC0yMjQsNyAr
MjI0LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8TGVuZ3RoPiBtX3ZhbHVlczsKIH07CiAKLWNs
YXNzIEJhc2ljU2hhcGVJbnNldCA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKK2NsYXNzIEJhc2ljU2hh
cGVJbnNldCBmaW5hbCA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxCYXNpY1NoYXBlSW5zZXQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBCYXNpY1NoYXBlSW5zZXQpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgKaW5kZXggNTY3M2IwNzk3ZjkzYmY0MDU3ZWQ3NDc5
OTUyNDdlNGM4YjhmNTQwMi4uYjRkMTkxMDIzYmNlMzNkNDQ2MzdmOTQxMzUzMDQ5NGJhYzIxNDU2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGlu
Z0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGlu
Z0ltYWdlLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gc3R5bGUg
cmVzb2x1dGlvbiwgaW4gb3JkZXIgdG8gYXZvaWQgbG9hZGluZyBpbWFnZXMgdGhhdCBhcmUgbm90
IHJlZmVyZW5jZWQgYnkgdGhlIGZpbmFsIHN0eWxlLgogLy8gVGhleSBzaG91bGQgbmV2ZXIgZXhp
c3QgaW4gYSBSZW5kZXJTdHlsZSBhZnRlciBpdCBoYXMgYmVlbiByZXR1cm5lZCBmcm9tIHRoZSBz
dHlsZSBzZWxlY3Rvci4KIAotY2xhc3MgU3R5bGVQZW5kaW5nSW1hZ2UgOiBwdWJsaWMgU3R5bGVJ
bWFnZSB7CitjbGFzcyBTdHlsZVBlbmRpbmdJbWFnZSBmaW5hbCA6IHB1YmxpYyBTdHlsZUltYWdl
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVBlbmRpbmdJbWFnZT4gY3Jl
YXRlKENTU1ZhbHVlKiB2YWx1ZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUGVuZGluZ0lt
YWdlKHZhbHVlKSk7IH0KIApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
RmxvYXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgLyptdWx0aXBs
aWVyKi8pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0U2l6ZSgpOyB9CiAgICAgdmlydHVh
bCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmlu
c2ljRGltZW5zaW9ucyhjb25zdCBSZW5kZXJFbGVtZW50KiwgTGVuZ3RoJiAvKiBpbnRyaW5zaWNX
aWR0aCAqLyAsIExlbmd0aCYgLyogaW50cmluc2ljSGVpZ2h0ICovLCBGbG9hdFNpemUmIC8qIGlu
dHJpbnNpY1JhdGlvICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0Rp
bWVuc2lvbnMoY29uc3QgUmVuZGVyRWxlbWVudCosIExlbmd0aCYgLyogaW50cmluc2ljV2lkdGgg
Ki8gLCBMZW5ndGgmIC8qIGludHJpbnNpY0hlaWdodCAqLywgRmxvYXRTaXplJiAvKiBpbnRyaW5z
aWNSYXRpbyAqLykgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRh
aW5lclNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCosIGNv
bnN0IEZsb2F0U2l6ZSYsIGZsb2F0KSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWRk
Q2xpZW50KFJlbmRlckVsZW1lbnQqKSBvdmVycmlkZSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAppbmRleCA3YTRmZGY4YjUzNjk4NmYyZThkMTMy
YzMzNjg0MDJiNGQxZDUyZGQzLi5kZGM1YjkyNmQ1YmYxMTAwOWVkNWFmODk3NDY0MDViNTMxYjJk
ODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Js
b2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5o
CkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJv
bVN0eWxlKCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJTVkdC
bG9jaygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH07CisgICAgdmlydHVh
bCBib29sIGlzUmVuZGVyU1ZHQmxvY2soKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAppbmRleCA0
Mjk1OGQ0ZWMyYWJiYzk5ZGE1MGQ4MjQ4YTA4MDZkY2VmMzMwM2Y3Li44NzI1M2FkY2M3MTA0Njdh
NTdkMTAwOTBmNzUwNDZiZDg2ZTEyOGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKQEAgLTQyLDcgKzQyLDYgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIFJlbmRlclNWR0NvbnRhaW5lcihTVkdFbGVtZW50JiwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pOwogCi0gICAgdmlydHVhbCBib29sIGlzU1ZHQ29udGFpbmVyKCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdDb250YWluZXIi
OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNzMsNiArNzIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCB1cGRhdGVDYWNoZWRCb3VuZGFyaWVzKCk7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBi
b29sIGlzU1ZHQ29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQorCiAgICAgRmxvYXRSZWN0IG1fb2JqZWN0Qm91bmRpbmdCb3g7CiAgICAgYm9vbCBtX29iamVj
dEJvdW5kaW5nQm94VmFsaWQ7CiAgICAgRmxvYXRSZWN0IG1fc3Ryb2tlQm91bmRpbmdCb3g7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCmluZGV4
IGQ2MmE1NjA0ZWFiZTM2OThmOTkxMzNhMjE1NDA1NDNiZGZmY2YyMGQuLjMwMjdmMTBjMGVkZTg4
N2RkMGNmZWVkMmNlMDI4M2VlNzA1M2MyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCkBAIC0zNywxNSArMzcsMTUgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflJlbmRlclNWR0VsbGlwc2UoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHRWxsaXBz
ZSI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHRWxsaXBzZSI7IH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVTaGFwZUZyb21FbGVtZW50KCk7Ci0gICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX3VzZVBhdGhGYWxsYmFjayA/IFJlbmRlclNWR1NoYXBlOjppc0VtcHR5KCkgOiBt
X2ZpbGxCb3VuZGluZ0JveC5pc0VtcHR5KCk7IH07CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNo
YXBlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdXNlUGF0aEZhbGxiYWNrID8gUmVuZGVyU1ZHU2hhcGU6
OmlzRW1wdHkoKSA6IG1fZmlsbEJvdW5kaW5nQm94LmlzRW1wdHkoKTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc1JlbmRlcmluZ0Rpc2FibGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHNo
YXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYpOwotICAgIHZpcnR1
YWwgYm9vbCBzaGFwZURlcGVuZGVudEZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgV2luZFJ1bGUpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3ND
b250ZXh0KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdy
YXBoaWNzQ29udGV4dCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBzaGFwZURl
cGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRGaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IFdpbmRSdWxlKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNhbGN1bGF0ZVJhZGlp
QW5kQ2VudGVyKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCmluZGV4IDRlNjdjYWU5MmQzZDUyYmI4
NGFhMjU0MDljNzBhNzdjYWE5MTcyMGQuLmM3NWJiZmYxNGRhNDg5NDI4Y2I5N2Y4ZDQwN2RhZTRj
MDA2YzQ3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHRm9yZWlnbk9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdC5oCkBAIC0zNywzNSArMzcsMzUgQEAgcHVibGljOgogCiAgICAg
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQmIGZvcmVpZ25PYmplY3RFbGVtZW50KCkgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFp
bnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRS
ZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
Ym9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3Qg
eyByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV92aWV3cG9ydC5zaXplKCkpOyB9Ci0g
ICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3ZpZXdwb3J0LnNpemUoKSk7IH0KLSAgICB2aXJ0dWFs
IEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0dXJu
IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fdmlld3BvcnQuc2l6ZSgpKTsgfQorICAgIHZpcnR1
YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV92aWV3cG9ydC5zaXplKCkpOyB9CisgICAgdmlydHVh
bCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3ZpZXdwb3J0LnNpemUoKSk7IH0KKyAgICB2aXJ0dWFs
IEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fdmlld3BvcnQuc2l6ZSgpKTsgfQog
Ci0gICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
LCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVz
dEFjdGlvbik7CisgICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVu
dCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2Nh
dGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdG
b3JlaWduT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzID0gQXBwbHlD
b250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFw
JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBk
YXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWVkc1RyYW5zZm9ybVVw
ZGF0ZSA9IHRydWU7IH0KIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdGb3JlaWdu
T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgZ3JhcGhp
Y3NFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0ZvcmVpZ25PYmplY3Qi
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoKCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhl
aWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMm
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBs
b2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zv
cm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0o
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5z
Zm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KIAogICAg
IGJvb2wgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA6IDE7CiAgICAgRmxvYXRSZWN0IG1fdmlld3Bv
cnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgKaW5k
ZXggODYxZDEzMjJhNzEyOTI1MGVhZDBhZjkyZjI3YTRiMjAyYzBiNDQwNy4uMDEzYTA0ZjU4YjA0
NmEwNDZiZjRmNTJjNTYwN2Y5YmZhZGQ1MmU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaApAQCAtNDIsOSArNDIsOSBAQCBwdWJsaWM6CiAgICAg
U1ZHSW1hZ2VFbGVtZW50JiBpbWFnZUVsZW1lbnQoKSBjb25zdDsKIAogICAgIGJvb2wgdXBkYXRl
SW1hZ2VWaWV3cG9ydCgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0JvdW5kYXJpZXNVcGRh
dGUoKSB7IG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlID0gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKSBvdmVycmlkZSB7IG1fbmVlZHNCb3VuZGFyaWVz
VXBkYXRlID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0JvdW5kYXJpZXNVcGRhdGUo
KSBvdmVycmlkZSB7IHJldHVybiBtX25lZWRzQm91bmRhcmllc1VwZGF0ZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0
ZSA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSBv
dmVycmlkZSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CiAKICAgICBSZW5kZXJJ
bWFnZVJlc291cmNlJiBpbWFnZVJlc291cmNlKCkgeyByZXR1cm4gKm1faW1hZ2VSZXNvdXJjZTsg
fQogICAgIGNvbnN0IFJlbmRlckltYWdlUmVzb3VyY2UmIGltYWdlUmVzb3VyY2UoKSBjb25zdCB7
IHJldHVybiAqbV9pbWFnZVJlc291cmNlOyB9CkBAIC01NSwyOSArNTUsMjkgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdJbWFn
ZSI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHSW1hZ2UiOyB9CiAgICAgdmlydHVhbCBib29sIGlzU1ZHSW1h
Z2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGNh
bkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2
aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KIAotICAgIHZpcnR1YWwgRmxvYXRSZWN0IG9iamVjdEJv
dW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RCb3VuZGluZ0JveDsgfQotICAgIHZp
cnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV9vYmpl
Y3RCb3VuZGluZ0JveDsgfQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2Nh
bENvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3g7IH0KKyAg
ICB2aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzdHJv
a2VCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdC
b3g7IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRl
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVwYWludEJvdW5kaW5nQm94OyB9CiAgICAg
dmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXNFeGNsdWRpbmdT
VkdTaGFkb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlcGFpbnRCb3VuZGluZ0JveEV4
Y2x1ZGluZ1NoYWRvdzsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZl
Y3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWludENvbnRhaW5lciA9IDApIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IElu
dFJlY3QqID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQ
dHIsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBpbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKCk7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsK
KyAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYs
IEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0
QWN0aW9uKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsVHJh
bnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQorICAgIHZpcnR1YWwg
QWZmaW5lVHJhbnNmb3JtIGxvY2FsVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9sb2NhbFRyYW5zZm9ybTsgfQogICAgIHZvaWQgY2FsY3VsYXRlSW1hZ2VWaWV3cG9ydCgpOwog
CiAgICAgYm9vbCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSA6IDE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oCmluZGV4IDQ0ZmQxNzI2NzVkYWUxZGJhMTJm
NzBmN2VhYmU1NzFiMjNkZjkzM2QuLmVhNmVjYzIzNWU5OGY1ODUxYTM2NTNiYWEyMWY2ZWFkZjc3
OGJmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5o
CkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
aXNTVkdQYXRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdQYXRoIjsg
fQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJTVkdQYXRoIjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNoYXBl
RnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICBGbG9hdFJlY3QgY2FsY3VsYXRlVXBkYXRlZFN0
cm9rZUJvdW5kaW5nQm94KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVjdC5oCmluZGV4IGYwMmRmY2Y3ODczNDZlYWQ2NzRiNjI4Y2MwNDExMjNiMmFh
NmYyZjcuLjRkYTFiM2I5ODJhMzBjMGE4YTBiNDQ1ZGYzY2MxYmZhMDkwMzc3NmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oCkBAIC00MywxNSArNDMs
MTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0
ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
eyByZXR1cm4gIlJlbmRlclNWR1JlY3QiOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1JlY3QiOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpOwotICAgIHZpcnR1YWwgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sgPyBSZW5kZXJTVkdT
aGFwZTo6aXNFbXB0eSgpIDogbV9maWxsQm91bmRpbmdCb3guaXNFbXB0eSgpOyB9OworICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3VzZVBhdGhGYWxsYmFj
ayA/IFJlbmRlclNWR1NoYXBlOjppc0VtcHR5KCkgOiBtX2ZpbGxCb3VuZGluZ0JveC5pc0VtcHR5
KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJpbmdEaXNhYmxlZCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0
UG9pbnQmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRGaWxsQ29udGFpbnMoY29u
c3QgRmxvYXRQb2ludCYsIGNvbnN0IFdpbmRSdWxlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50RmlsbENvbnRhaW5z
KGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBXaW5kUnVsZSkgY29uc3Qgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CiAgICAgRmxvYXRSZWN0IG1faW5uZXJTdHJva2VSZWN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKaW5k
ZXggZTAwODBlMGQ1Mjk0MGQ5MThhMDk5NjQ5ZjY0MGEzZTQxOWY5MmM1Ny4uY2EwNzJjYWFmYzA4
ZWEyNGExNGE2Y2NiZWI5ODBjN2ZkZDhhOTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCkBAIC01NCw3ICs1
NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVyRWxl
bWVudCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzQ29udGV4
dCopOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlc291cmNlQm91bmRpbmdCb3goY29uc3QgUmVu
ZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlw
ZSByZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBDbGlwcGVyUmVzb3VyY2VUeXBlOyB9Cisg
ICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gQ2xpcHBlclJlc291cmNlVHlwZTsgfQogICAgIAogICAgIGJvb2wgaGl0
VGVzdENsaXBDb250ZW50KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5oCmluZGV4IGU4NWM3OTQ0MDFkMDllNDg3MGNiMTJhMTY1YmQ3YzZhMWU1NzQ5MmUu
Ljk1YmQxMDAyZGMyNTJkZmMzY2Q4Y2Q5YmQ2NGYwNjI0YmQxYjg1ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgK
QEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwcmltaXRpdmVBdHRyaWJ1dGVD
aGFuZ2VkKFJlbmRlck9iamVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIHZpcnR1
YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHNf
cmVzb3VyY2VUeXBlOyB9CisgICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3Vy
Y2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KICAgICBz
dGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHNfcmVzb3VyY2VUeXBlOwogCiAgICAgRmxvYXRS
ZWN0IGRyYXdpbmdSZWdpb24oUmVuZGVyT2JqZWN0KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlLmgKaW5kZXggMmY4ZGEzYTk2NTExY2Y2N2I2MDFlMzkxYzM2MGJhN2VjMTYyZmEz
YS4uZGY0NzU5OGRiYjNjYzZmYzA2MzY3MWVkODg3NjgyNjE0YWM1OWYzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXJQcmltaXRpdmUuaApAQCAtMzksMTAgKzM5LDkgQEAgcHVibGljOgogICAgIFJlbmRl
clNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcyYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMmIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQoKSBjb25zdDsKIAotICAg
IHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRl
clN0eWxlKik7CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclBy
aW1pdGl2ZSI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQ
cmltaXRpdmUiOyB9CiAKICAgICAvLyBUaGV5IGRlcGVuZCBvbiB0aGUgUmVuZGVyT2JqZWN0IGFy
Z3VtZW50IG9mIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlLgogICAgIHN0
YXRpYyBGbG9hdFJlY3QgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlckVm
ZmVjdCYpOwpAQCAtNTUsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0YXRpY19jYXN0PFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyKj4oZmlsdGVyKS0+cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdl
ZCh0aGlzLCBhdHRyaWJ1dGUpOwogICAgIH0KIHByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlz
U1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3Jh
ZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VM
aW5lYXJHcmFkaWVudC5oCmluZGV4IGMxZjUyYjdkY2RlNTFiN2Q0Y2VmM2ZkZjlkOGNkZWQ2OWI0
MTEzZjEuLjhhYWQzZmY0MjFjYjI5MjAwOTY2OTQxYzUxMWZkMmIxNDU1YzAxOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJH
cmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VMaW5lYXJHcmFkaWVudC5oCkBAIC0zNCwxMyArMzQsMTMgQEAgcHVibGljOgogCiAgICAg
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50JiBsaW5lYXJHcmFkaWVudEVsZW1lbnQoKSBjb25zdCB7
IHJldHVybiBkb3duY2FzdDxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ+KFJlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQ6OmdyYWRpZW50RWxlbWVudCgpKTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJT
VkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gc19yZXNvdXJjZVR5
cGU7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQogICAgIHN0YXRpYyBSZW5k
ZXJTVkdSZXNvdXJjZVR5cGUgc19yZXNvdXJjZVR5cGU7CiAKLSAgICB2aXJ0dWFsIFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmli
dXRlcy5ncmFkaWVudFVuaXRzKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlR3JhZGll
bnRUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pIHsgdHJhbnNmb3JtID0gbV9h
dHRyaWJ1dGVzLmdyYWRpZW50VHJhbnNmb3JtKCk7IH0KKyAgICB2aXJ0dWFsIFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
YXR0cmlidXRlcy5ncmFkaWVudFVuaXRzKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRl
R3JhZGllbnRUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pIG92ZXJyaWRlIHsg
dHJhbnNmb3JtID0gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VHJhbnNmb3JtKCk7IH0KICAgICB2aXJ0
dWFsIGJvb2wgY29sbGVjdEdyYWRpZW50QXR0cmlidXRlcygpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBidWlsZEdyYWRpZW50KEdyYWRpZW50RGF0YSopIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBidWlsZEdyYWRpZW50KEdyYWRpZW50RGF0YSopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
RmxvYXRQb2ludCBzdGFydFBvaW50KGNvbnN0IExpbmVhckdyYWRpZW50QXR0cmlidXRlcyYpIGNv
bnN0OwogICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQoY29uc3QgTGluZWFyR3JhZGllbnRBdHRyaWJ1
dGVzJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFya2VyLmgKaW5kZXggNjM2YTM0ZWNiOTJlZDg3OWIyNmIxOWI5MDkz
MjljYTliYmIyZWYyMi4uMWE4ZDA4Mzg3ODhiYTFmY2Q4MzZjNWQwMDNjMjhkMDI0YzJjNjllNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXIuaApAQCAtNDUsMTEgKzQ1LDExIEBAIHB1YmxpYzoKICAgICAvLyBDYWxjdWxh
dGVzIG1hcmtlciBib3VuZGFyaWVzLCBtYXBwZWQgdG8gdGhlIHRhcmdldCBlbGVtZW50J3MgY29v
cmRpbmF0ZSBzcGFjZQogICAgIEZsb2F0UmVjdCBtYXJrZXJCb3VuZGFyaWVzKGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgbWFya2VyVHJhbnNmb3JtYXRpb24pIGNvbnN0OwogCi0gICAgdmlydHVhbCB2
b2lkIGFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYpOwotICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY1ZpZXdwb3J0KCk7CisgICAgdmlydHVhbCB2b2lk
IGFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY1ZpZXdwb3J0KCkgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVu
dFRyYW5zZm9ybSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBs
b2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQWZmaW5lVHJhbnNm
b3JtIG1hcmtlclRyYW5zZm9ybWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9yaWdpbiwgZmxvYXQg
YW5nbGUsIGZsb2F0IHN0cm9rZVdpZHRoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBhcHBs
eVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29u
dGV4dComLCB1bnNpZ25lZCBzaG9ydCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIGZsb2F0IGFuZ2xlKCkgY29uc3Q7CiAgICAgU1ZHTWFy
a2VyVW5pdHNUeXBlIG1hcmtlclVuaXRzKCkgY29uc3QgeyByZXR1cm4gbWFya2VyRWxlbWVudCgp
Lm1hcmtlclVuaXRzKCk7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJl
c291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CisgICAgdmlydHVh
bCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gc19yZXNvdXJjZVR5cGU7IH0KICAgICBzdGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2VUeXBl
IHNfcmVzb3VyY2VUeXBlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCmluZGV4IGE1MjcyNmViOTIx
MmNlMDBkZTRlNWVmNzYyYjdmMmY3ZjliM2Y5ZGYuLjg5YjMwNWY2Y2IzZTU0ODE3MGY0M2JiY2E5
MGM5ODFmNTVlYjJlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgog
ICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgbWFza1VuaXRzKCkgY29uc3QgeyByZXR1cm4g
bWFza0VsZW1lbnQoKS5tYXNrVW5pdHMoKTsgfQogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5
cGUgbWFza0NvbnRlbnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1hc2tFbGVtZW50KCkubWFza0Nv
bnRlbnRVbml0cygpOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNv
dXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQorICAgIHZpcnR1YWwg
UmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlwZSBz
X3Jlc291cmNlVHlwZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCmluZGV4IGY2NmQ1NTViNzVi
N2FjN2Q2NWI1YzQwYzNlZDY0YjY5NTE2OGVlNGYuLmYxZmZjNDQzNWI5YTJkNmI5NGRlOWM3Yjdh
OGUwMjNkOTQ5NjE5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBHcmFw
aGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlLCBjb25zdCBQYXRoKiwg
Y29uc3QgUmVuZGVyU1ZHU2hhcGUqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBy
ZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IFJlbmRlck9iamVjdCYpIG92ZXJyaWRlIHsgcmV0dXJu
IEZsb2F0UmVjdCgpOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNv
dXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQorICAgIHZpcnR1YWwg
UmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlwZSBz
X3Jlc291cmNlVHlwZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKaW5k
ZXggOTYyMDMyODk3ZjM0Nzc0OTJlY2UxMDRhM2E2Y2QyMGE1MzQ5MzUwNC4uZjVhNjU0MzhjYjRk
YzdmYjVmMDdlZTBiOTU5MzVhNDc4OTEyYzBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50
LmgKQEAgLTM2LDEyICszNiwxMiBAQCBwdWJsaWM6CiAKICAgICBTVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQmIHJhZGlhbEdyYWRpZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6Z3JhZGll
bnRFbGVtZW50KCkpOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNv
dXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQorICAgIHZpcnR1YWwg
UmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlwZSBz
X3Jlc291cmNlVHlwZTsKIAotICAgIHZpcnR1YWwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBn
cmFkaWVudFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VW5pdHMo
KTsgfQotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVHcmFkaWVudFRyYW5zZm9ybShBZmZpbmVU
cmFuc2Zvcm0mIHRyYW5zZm9ybSkgeyB0cmFuc2Zvcm0gPSBtX2F0dHJpYnV0ZXMuZ3JhZGllbnRU
cmFuc2Zvcm0oKTsgfQotICAgIHZpcnR1YWwgdm9pZCBidWlsZEdyYWRpZW50KEdyYWRpZW50RGF0
YSopIGNvbnN0OworICAgIHZpcnR1YWwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBncmFkaWVu
dFVuaXRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VW5p
dHMoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVHcmFkaWVudFRyYW5zZm9ybShBZmZp
bmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkgb3ZlcnJpZGUgeyB0cmFuc2Zvcm0gPSBtX2F0dHJpYnV0
ZXMuZ3JhZGllbnRUcmFuc2Zvcm0oKTsgfQorICAgIHZpcnR1YWwgdm9pZCBidWlsZEdyYWRpZW50
KEdyYWRpZW50RGF0YSopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRmxvYXRQb2ludCBjZW50ZXJQ
b2ludChjb25zdCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMmKSBjb25zdDsKICAgICBGbG9hdFBv
aW50IGZvY2FsUG9pbnQoY29uc3QgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzJikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4IGZmNTQ4
ZWFjOTkwOTNmM2IzMmNjODUxYWU5ODE5ODllN2ZmZDQzZDUuLmFjZTkyM2VlMjU4ZjIxMWRmNjFi
OTI2N2VhNDE4NzYyODI1ZjZkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5oCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBG
bG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX29i
amVjdEJvdW5kaW5nQm94OyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdC
b3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3N0cm9rZUJvdW5kaW5nQm94OyB9CiAgICAg
dmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3JlcGFpbnRCb3VuZGluZ0JveDsgfQotICAgIHZpcnR1YWwgRmxv
YXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzRXhjbHVkaW5nU1ZHU2hhZG93KCkg
Y29uc3QgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3hFeGNsdWRpbmdTaGFkb3c7IH0KKyAg
ICBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXNFeGNsdWRpbmdTVkdTaGFk
b3coKSBjb25zdCB7IHJldHVybiBtX3JlcGFpbnRCb3VuZGluZ0JveEV4Y2x1ZGluZ1NoYWRvdzsg
fQogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0Jiwg
SGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5l
ciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUU3Bhbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bh
bi5oCmluZGV4IGU5NzJjYmVjNWRjZmRkMDRiNWFmZmU4OWNhOWM1Y2ZjOTUzMTY2NWIuLjNmZDk3
OTcxNWQ4NjVlMTdiY2E1NGJmNGM3NjIxOTM4MDQzOWRjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIHZvaWQgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7
Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJl
bmRlclNWR1RTcGFuIjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdUU3BhbiI7IH0KIH07CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5kZXggMDdiMTgxM2E2
M2YxZmFjYmQ2MTg3ZjFkNDI5MTA4OGI4MzFjNWE1MS4uZDk2MGU3ZTBiNTA4MDA3MjY1YTg1YTBh
YzcwZDNmNzY4MzdiZWM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmgKQEAgLTM5LDEyICszOSwxMiBAQCBwdWJsaWM6CiAKICAgICBTVkdUZXh0RWxl
bWVudCYgdGV4dEVsZW1lbnQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxs
b3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBS
ZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXROZWVkc1Bvc2l0aW9u
aW5nVmFsdWVzVXBkYXRlKCkgeyBtX25lZWRzUG9zaXRpb25pbmdWYWx1ZXNVcGRhdGUgPSB0cnVl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRz
VHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5z
Zm9ybVVwZGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0K
ICAgICB2b2lkIHNldE5lZWRzVGV4dE1ldHJpY3NVcGRhdGUoKSB7IG1fbmVlZHNUZXh0TWV0cmlj
c1VwZGF0ZSA9IHRydWU7IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9j
YWxDb29yZGluYXRlcygpIGNvbnN0OworICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRSZWN0
SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgUmVuZGVy
U1ZHVGV4dCogbG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKFJlbmRlck9iamVjdCYpOwogICAg
IHN0YXRpYyBjb25zdCBSZW5kZXJTVkdUZXh0KiBsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3Io
Y29uc3QgUmVuZGVyT2JqZWN0Jik7CkBAIC02NCwxOCArNjQsMTggQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR1Rl
eHQiOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU1ZHVGV4dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVuZGVyU1ZHVGV4dCI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdUZXh0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNv
bnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsK
LSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91
dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKik7CisgICAgdmlydHVhbCBib29sIG5vZGVBdEZs
b2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYs
IGNvbnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHJlcXVp
cmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3
YXNGaXhlZCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFs
IExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBj
b25zdCBvdmVycmlkZTsKQEAgLTgzLDE2ICs4MywxNiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzID0g
QXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21l
dHJ5TWFwJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRl
ck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZv
cmVDaGlsZCA9IG51bGxwdHIpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBy
ZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFu
c2Zvcm07IH0KLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2Nh
bFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0K
ICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxSb290SW5saW5lQm94PiBjcmVhdGVSb290SW5s
aW5lQm94KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlckJsb2NrKiBmaXJzdExpbmVC
bG9jaygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGaXJzdExldHRlcigpOworICAg
IHZpcnR1YWwgUmVuZGVyQmxvY2sqIGZpcnN0TGluZUJsb2NrKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZpcnN0TGV0dGVyKCkgb3ZlcnJpZGU7CiAKICAgICBib29s
IHNob3VsZEhhbmRsZVN1YnRyZWVNdXRhdGlvbnMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVD
b250YWluZXIuaAppbmRleCA2N2QwYTU2N2JkMjRlOWI5YzE5YTNjMDhjM2EzNjc4YmYxODgwMjE1
Li45ZWRhYmVlZTcxMzI0NzY5NGM2ZmY4ODc3Yzk3ZjBkNDEwYTRkNzUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWlu
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXIuaApAQCAtMzIsMTUgKzMyLDE1IEBAIHB1YmxpYzoKICAgICBSZW5kZXJT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR0dyYXBoaWNzRWxlbWVudCYsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KTsKICAgICBTVkdHcmFwaGljc0VsZW1lbnQmIGdyYXBoaWNzRWxlbWVudCgpIHsg
cmV0dXJuIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4oUmVuZGVyU1ZHQ29udGFpbmVyOjpl
bGVtZW50KCkpOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFRy
YW5zZm9ybTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsg
bV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZGlkVHJh
bnNmb3JtVG9Sb290VXBkYXRlKCkgeyByZXR1cm4gbV9kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9s
b2NhbFRyYW5zZm9ybTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0
ZSgpIG92ZXJyaWRlIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9k
aWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGU7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQo
KSBjb25zdCA9IGRlbGV0ZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlTG9jYWxUcmFuc2Zv
cm0oKTsKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRl
TG9jYWxUcmFuc2Zvcm0oKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBs
b2NhbFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07
IH0KIAogICAgIGJvb2wgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA6IDE7CiAgICAgYm9vbCBtX2Rp
ZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKaW5kZXggY2M1MjQ4
NjEyZjgxMmU2YjllNjk1YmQzOWMxYTFmNmNjYzM5MWU3Zi4uZjYyNGY1ZjQ3ZGNkYmE4Yzg5YTIx
ODljOGJmMGNjZWViY2NiY2QwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaApAQCAtMzgsMjcgKzM4LDI3
IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3Qgdmlld3BvcnQoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZXdwb3J0OyB9CiAKICAgICBib29sIGlzTGF5b3V0U2l6ZUNoYW5nZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQ7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZGlkVHJhbnNmb3Jt
VG9Sb290VXBkYXRlKCkgeyByZXR1cm4gbV9kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGU7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKCkgb3ZlcnJpZGUgeyByZXR1
cm4gbV9kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZXRl
cm1pbmVJZkxheW91dFNpemVDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJh
bnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZXRlcm1pbmVJZkxheW91dFNpemVDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgb3ZlcnJpZGUgeyBtX25lZWRz
VHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdWaWV3
cG9ydENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHVmlld3BvcnRDb250
YWluZXIiOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZHVmlld3BvcnRDb250YWluZXIoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1ZpZXdwb3J0Q29udGFp
bmVyIjsgfQogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdwb3J0VHJhbnNmb3JtKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zv
cm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07IH0KKyAgICB2aXJ0
dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUb1BhcmVudFRyYW5zZm9ybTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGNhbGNWaWV3cG9ydCgpOwotICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVMb2Nh
bFRyYW5zZm9ybSgpOworICAgIHZpcnR1YWwgdm9pZCBjYWxjVmlld3BvcnQoKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0oKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhcHBseVZpZXdwb3J0Q2xpcChQYWludEluZm8mKTsKLSAgICB2aXJ0
dWFsIGJvb2wgcG9pbnRJc0luc2lkZVZpZXdwb3J0Q2xpcChjb25zdCBGbG9hdFBvaW50JiBwb2lu
dEluUGFyZW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlWaWV3cG9ydENsaXAoUGFpbnRJbmZv
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHBvaW50SXNJbnNpZGVWaWV3cG9ydENsaXAo
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCkgb3ZlcnJpZGU7CiAKICAgICBGbG9hdFJl
Y3QgbV92aWV3cG9ydDsKICAgICBtdXRhYmxlIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsVG9QYXJl
bnRUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5l
VGV4dEJveC5oCmluZGV4IDdiN2Q4NTdmMTJmOWM4OTkwNzgwZjc5MTVkNjNhYjY3OWY3MjliYmIu
Ljg1OWJmZTI4NTY1NjM1MDM1ZmQ1NmEwNTA0Yjg0MzlhYmU2YjRjYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCkBAIC0zNywyOCArMzcs
MjggQEAgcHVibGljOgogCiAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCYgcmVuZGVyZXIoKSBjb25z
dCB7IHJldHVybiBkb3duY2FzdDxSZW5kZXJTVkdJbmxpbmVUZXh0PihJbmxpbmVUZXh0Qm94Ojpy
ZW5kZXJlcigpKTsgfQogCi0gICAgdmlydHVhbCBmbG9hdCB2aXJ0dWFsTG9naWNhbEhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbEhlaWdodDsgfQorICAgIHZpcnR1YWwgZmxvYXQgdmly
dHVhbExvZ2ljYWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvZ2ljYWxIZWln
aHQ7IH0KICAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoZmxvYXQgaGVpZ2h0KSB7IG1fbG9naWNh
bEhlaWdodCA9IGhlaWdodDsgfQogCi0gICAgdmlydHVhbCBpbnQgc2VsZWN0aW9uVG9wKCkgeyBy
ZXR1cm4gdG9wKCk7IH0KLSAgICB2aXJ0dWFsIGludCBzZWxlY3Rpb25IZWlnaHQoKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKG1fbG9naWNhbEhlaWdodCkpOyB9Ci0gICAgdmlydHVh
bCBpbnQgb2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgeCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cyA9IHRydWUpIGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQgcG9zaXRpb25Gb3JPZmZzZXQoaW50
IG9mZnNldCkgY29uc3Q7CisgICAgaW50IHNlbGVjdGlvblRvcCgpIHsgcmV0dXJuIHRvcCgpOyB9
CisgICAgaW50IHNlbGVjdGlvbkhlaWdodCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oY2Vp
bGYobV9sb2dpY2FsSGVpZ2h0KSk7IH0KKyAgICB2aXJ0dWFsIGludCBvZmZzZXRGb3JQb3NpdGlv
bihmbG9hdCB4LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzID0gdHJ1ZSkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBmbG9hdCBwb3NpdGlvbkZvck9mZnNldChpbnQgb2Zmc2V0KSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZvaWQgcGFpbnRTZWxlY3Rpb25CYWNrZ3JvdW5kKFBhaW50SW5m
byYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2lu
dCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0
IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBM
YXlvdXRSZWN0IGxvY2FsU2VsZWN0aW9uUmVjdChpbnQgc3RhcnRQb3NpdGlvbiwgaW50IGVuZFBv
c2l0aW9uKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgbWFwU3RhcnRFbmRQb3NpdGlvbnNJ
bnRvRnJhZ21lbnRDb29yZGluYXRlcyhjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBpbnQmIHN0YXJ0
UG9zaXRpb24sIGludCYgZW5kUG9zaXRpb24pIGNvbnN0OwogCi0gICAgdmlydHVhbCBGbG9hdFJl
Y3QgY2FsY3VsYXRlQm91bmRhcmllcygpIGNvbnN0OworICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNh
bGN1bGF0ZUJvdW5kYXJpZXMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgY2xlYXJUZXh0
RnJhZ21lbnRzKCkgeyBtX3RleHRGcmFnbWVudHMuY2xlYXIoKTsgfQogICAgIFZlY3RvcjxTVkdU
ZXh0RnJhZ21lbnQ+JiB0ZXh0RnJhZ21lbnRzKCkgeyByZXR1cm4gbV90ZXh0RnJhZ21lbnRzOyB9
CiAgICAgY29uc3QgVmVjdG9yPFNWR1RleHRGcmFnbWVudD4mIHRleHRGcmFnbWVudHMoKSBjb25z
dCB7IHJldHVybiBtX3RleHRGcmFnbWVudHM7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaXJ0eU93
bkxpbmVCb3hlcygpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBkaXJ0eUxpbmVC
b3hlcygpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBkaXJ0eU93bkxpbmVCb3hl
cygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXJ0eUxpbmVCb3hlcygpIG92ZXJyaWRl
OwogCiAgICAgYm9vbCBzdGFydHNOZXdUZXh0Q2h1bmsoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0
c05ld1RleHRDaHVuazsgfQogICAgIHZvaWQgc2V0U3RhcnRzTmV3VGV4dENodW5rKGJvb2wgbmV3
VGV4dENodW5rKSB7IG1fc3RhcnRzTmV3VGV4dENodW5rID0gbmV3VGV4dENodW5rOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5oCmluZGV4IGIz
N2UwNGEyMWRjYjMzYWE4NTE1YzE5NTVhN2JiNTFiN2NmY2EyYTYuLmVlYTMwZjUwNzYzNjk2MmE4
M2JkMWIzYjc1YjM0ZTA1Y2ZlZGE5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUm9vdElubGluZUJveC5oCkBAIC0zOCwxNyArMzgsMTcgQEAgcHVibGljOgogCiAg
ICAgUmVuZGVyU1ZHVGV4dCYgcmVuZGVyU1ZHVGV4dCgpOwogCi0gICAgdmlydHVhbCBmbG9hdCB2
aXJ0dWFsTG9naWNhbEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fbG9n
aWNhbEhlaWdodDsgfQorICAgIHZpcnR1YWwgZmxvYXQgdmlydHVhbExvZ2ljYWxIZWlnaHQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvZ2ljYWxIZWlnaHQ7IH0KICAgICB2b2lkIHNldExv
Z2ljYWxIZWlnaHQoZmxvYXQgaGVpZ2h0KSB7IG1fbG9naWNhbEhlaWdodCA9IGhlaWdodDsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jiwg
TGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlIGZpbmFs
OworICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYs
IExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgY29tcHV0ZVBlckNoYXJhY3RlckxheW91dEluZm9ybWF0aW9uKCk7CiAKICAgICBJ
bmxpbmVCb3gqIGNsb3Nlc3RMZWFmQ2hpbGRGb3JQb3NpdGlvbihjb25zdCBMYXlvdXRQb2ludCYp
OwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jvb3RJbmxpbmVCb3goKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZH
Um9vdElubGluZUJveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lk
IHJlb3JkZXJWYWx1ZUxpc3RzKFZlY3RvcjxTVkdUZXh0TGF5b3V0QXR0cmlidXRlcyo+Jik7CiAg
ICAgdm9pZCBsYXlvdXRDaGFyYWN0ZXJzSW5UZXh0Qm94ZXMoSW5saW5lRmxvd0JveCosIFNWR1Rl
eHRMYXlvdXRFbmdpbmUmKTsKICAgICB2b2lkIGxheW91dENoaWxkQm94ZXMoSW5saW5lRmxvd0Jv
eCosIEZsb2F0UmVjdCogPSAwKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>