<?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>86022</bug_id>
          
          <creation_ts>2012-05-09 15:22:16 -0700</creation_ts>
          <short_desc>Refactor layer-related logic out of RenderBoxModelObject</short_desc>
          <delta_ts>2012-10-01 15:12:09 -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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>90738</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Florin Malita">fmalita</reporter>
          <assigned_to name="Florin Malita">fmalita</assigned_to>
          <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hyatt</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>krit</cc>
    
    <cc>pdr</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>schenney</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>619908</commentid>
    <comment_count>0</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-05-09 15:22:16 -0700</bug_when>
    <thetext>The intent is to extract layer-related functionality into a dedicated class that can be used to support non-RenderBoxModelObject layers. This is the first phase (and a prerequisite) for adding SVG ForeignObject layers support.

The plan:

(currently)
                                     +--------------+
                                     | RenderObject |
                                     +--------------+
                                            ^
                                            |
                                +-----------+-------------+
                                |                         |
+-------------+     +-----------+----------+   +----------+-----------+
| RenderLayer |*----| RenderBoxModelObject |   | RenderSVGModelObject |
+-------------+     +----------------------+   +----------------------+



(this refactoring)

                               +--------------+
                               | RenderObject |
                               +--------------+
                                      ^
                                      |
                           +----------+-----------+
                           |                      |
+-------------+     +------+-------+   +----------+-----------+
| RenderLayer |*----| (LayerStuff) |   | RenderSVGModelObject |
+-------------+     +--------------+   +----------------------+
                           ^
                           |
                +----------------------+
                | RenderBoxModelObject |
                +----------------------+


(eventually)

                    +--------------+
                    | RenderObject |
                    +--------------+
                           ^
                           |
+-------------+     +--------------+
| RenderLayer |*----| (LayerStuff) |
+-------------+     +--------------+
                           ^
                           |
               +-----------+-------------+
               |                         |
   +-----------+----------+   +----------+-----------+
   | RenderBoxModelObject |   | RenderSVGModelObject |
   +----------------------+   +----------------------+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619919</commentid>
    <comment_count>1</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-05-09 15:29:53 -0700</bug_when>
    <thetext>http://bugs.webkit.org/show_bug.cgi?id=23113 explains how this relates to SVG ForeignObject layers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619954</commentid>
    <comment_count>2</comment_count>
      <attachid>141038</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-05-09 16:03:02 -0700</bug_when>
    <thetext>Created attachment 141038
Patch

First pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619963</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-09 16:06:37 -0700</bug_when>
    <thetext>RenderLayer has a whole bunch of CSS-specific stuff.  I&apos;m surprised we&apos;d want SVG objects to have a RenderLayer as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619980</commentid>
    <comment_count>4</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-05-09 16:17:20 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; RenderLayer has a whole bunch of CSS-specific stuff.  I&apos;m surprised we&apos;d want SVG objects to have a RenderLayer as is.

Refactoring RenderLayer should remain an option - I haven&apos;t gotten far enough down that path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619990</commentid>
    <comment_count>5</comment_count>
      <attachid>141038</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-09 16:22:24 -0700</bug_when>
    <thetext>Comment on attachment 141038
Patch

Attachment 141038 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12644867</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620013</commentid>
    <comment_count>6</comment_count>
      <attachid>141038</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-09 16:37:55 -0700</bug_when>
    <thetext>Comment on attachment 141038
Patch

Attachment 141038 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12663132</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620019</commentid>
    <comment_count>7</comment_count>
      <attachid>141038</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-09 16:41:26 -0700</bug_when>
    <thetext>Comment on attachment 141038
Patch

I don&apos;t think RenderLayerBase is a good name for something that RenderBoxModelObject inherits from; that name implies that it&apos;s a base class of RenderLayer.

The name should be RenderSomethingBox or RenderBoxSomething. RenderBoxModelObject was actually created for this very purpose a while back, so perhaps you should investigate why RenderSVGModelObject can&apos;t inherit from RenderBoxModelObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620042</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-09 17:00:39 -0700</bug_when>
    <thetext>RenderSVGModelObject was created by me (on a 16hr plane flight to sydney) to unify SVG object logic into a single baseclass.  Previously all SVG renders had been moved off of RenderBlock (where they started) as the SVG layout model is quite distinct from the CSS box model.

SVG ignores non-SVG objects inside its tree:
http://www.w3.org/TR/SVG/extend.html#ForeignNamespaces

similarly, SVG objects which exist outside of an &lt;svg&gt; root, are ignored by CSS, as svg elements require an &lt;svg&gt; element to establish a viewport for them:
http://www.w3.org/TR/SVG/coords.html

It&apos;s possible that &quot;being&quot; is not the right model for logic inclusion here.

Unfortunately Simon and I didn&apos;t get to chat at the contributor meeting about what troubles with foreignObject participating in the layer tree were.  &lt;foreignObject&gt; is a RenderBlock and thus could have a layer.  It&apos;s unclear to me if there are still troubles there or not.

I do not believe that RenderSVGBoxModelObjects want a RenderLayer as RenderLayer is currently designed.  They may very well want a GraphicsLayer, but they can get that w/o having a RenderLayer.  I view RenderLayer as largely a rare-data object for RenderBoxModelObject.  I understand it does more than that, but it&apos;s largely tied to being an object which participates in the CSS box model, which all SVG renders (with the exception of SVGRenderRoot) do not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620070</commentid>
    <comment_count>9</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-05-09 17:14:31 -0700</bug_when>
    <thetext>More comments, Dirk Schulze mentioned that SVG is only interested in the &quot;stacking context&quot; part of RenderLayer IIRC. I am looking into splitting RenderLayer which could help your effort.

I am unsure about the current direction: splitting the code into a new class is good but I don&apos;t think the new class should be a RenderObject. Having a holder for layers would be much better.

I may be wrong but if you want something akin to RenderLayer (to attach GraphicsLayer or share code with CSS) in SVG, it looks like the &quot;RenderLayer&quot; object should be attached to RenderObject, not some artificial new object inserted in the middle. All CSS classes are RenderBoxModelObjects so that&apos;s not a memory penalty, only SVG and MathML would see an increase in objects&apos; size, which was to be expected for SVG anyway. It would also remove all of the down-casts that we have in RenderObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620144</commentid>
    <comment_count>10</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-05-09 18:32:43 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 141038 [details])
&gt; I don&apos;t think RenderLayerBase is a good name for something that RenderBoxModelObject inherits from; that name implies that it&apos;s a base class of RenderLayer.

Agreed. I forgot to mention that the class name is tentative at best and I&apos;m looking for suggestions.


&gt; The name should be RenderSomethingBox or RenderBoxSomething. RenderBoxModelObject was actually created for this very purpose a while back, so perhaps you should investigate why RenderSVGModelObject can&apos;t inherit from RenderBoxModelObject.

I think the short answer is that the CSS box model is not applicable to SVG objects, and most of the stuff in RenderBoxModelObject is simply not needed. So it seems reasonable to extract the few layer-related bits that are needed in a common base class. In this light, a Render*Box* name may not be the best choice either.


(In reply to comment #8)
&gt; Unfortunately Simon and I didn&apos;t get to chat at the contributor meeting about what troubles with foreignObject participating in the layer tree were.  &lt;foreignObject&gt; is a RenderBlock and thus could have a layer.  It&apos;s unclear to me if there are still troubles there or not.

Two issues that I&apos;m aware of:

* preserving the painting context across layers - SVG elements accumulate state (transforms, filters, masks, etc) as the tree is painted; this context is currently lost when switching between layers (so for example painting a FO with a layer will ignore any filters on its ancestors).

* stacking order - SVG elements stack in document order and a direct FO layer approach (simply giving the FO its own layer) would pretty much break that. To properly support FO layers using the current stacking logic, we would have to create a synthetic pre-FO layer, the actual FO layer and another synthetic post-FO layer.

The related discussion is on this thread: http://bugs.webkit.org/show_bug.cgi?id=23113

This patch is a step towards addressing the second problem: supporting the ability to create pre &amp; post FO layers for arbitrary SVG elements. Without it, ForeignObject layers would break the SVG stacking order.


&gt; I do not believe that RenderSVGBoxModelObjects want a RenderLayer as RenderLayer is currently designed.

That may very well be the case. But whatever RenderSVGBoxModelObjects wants (and gets) should be able to stack and intermingle with regular RenderLayers, because ForeignObject content can always insert those into the hierarchy.


(In reply to comment #9)
&gt; More comments, Dirk Schulze mentioned that SVG is only interested in the &quot;stacking context&quot; part of RenderLayer IIRC. I am looking into splitting RenderLayer which could help your effort.

Great - if we can isolate the stacking logic and only use that subset for SVG-related layers then that should address some of Eric&apos;s concerns. 

 
&gt; I may be wrong but if you want something akin to RenderLayer (to attach GraphicsLayer or share code with CSS) in SVG, it looks like the &quot;RenderLayer&quot; object should be attached to RenderObject, not some artificial new object inserted in the middle. All CSS classes are RenderBoxModelObjects so that&apos;s not a memory penalty, only SVG and MathML would see an increase in objects&apos; size, which was to be expected for SVG anyway. It would also remove all of the down-casts that we have in RenderObject.

I&apos;ve actually considered that, and decided to try what I deemed to be a less controversial approach first :) But I like the idea and would definitely give it a shot if others are on board.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659568</commentid>
    <comment_count>11</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-06-28 09:47:33 -0700</bug_when>
    <thetext>I looked at pushing the layer RenderBoxModelObject bits into RenderObject, but that would add unneeded overhead to RenderText - so it&apos;s probably better to keep it as a separate class.

I&apos;m still hoping for inspiration to strike as far as naming goes (RenderLayerObject, RenderObjectWithLayer, RenderPleaseSomeoneComeUpWithAGoodNameObject ;), but I&apos;ll put up an update to test some platform build fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659608</commentid>
    <comment_count>12</comment_count>
      <attachid>149971</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-06-28 10:47:09 -0700</bug_when>
    <thetext>Created attachment 149971
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659613</commentid>
    <comment_count>13</comment_count>
      <attachid>149971</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-06-28 10:56:38 -0700</bug_when>
    <thetext>Comment on attachment 149971
Patch

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

&gt; Source/WebCore/rendering/RenderLayerObject.h:29
&gt; +class RenderLayerObject : public RenderObject {

I don&apos;t really like the class name. I&apos;d prefer to pick a name that reflects what&apos;s common about RenderBoxModelObject and RenderSVG stuff in terms of behavior, not in terms of implementation. I&apos;d also like to reduce the ties between RenderObjects and RenderLayers, not strengthen them, conceptually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665171</commentid>
    <comment_count>14</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-07-09 14:26:31 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I don&apos;t really like the class name. I&apos;d prefer to pick a name that reflects what&apos;s common about RenderBoxModelObject and RenderSVG stuff in terms of behavior, not in terms of implementation. I&apos;d also like to reduce the ties between RenderObjects and RenderLayers, not strengthen them, conceptually.

Here are some alternatives that we (jchaffraix, schenney and myself) have come up with, in order of preference:

* RenderModelObject - a RenderObject with some model applied to it (box model, svg model, ...)

* RenderAugmentableObject - a RenderObject that can be possibly modified/augmented via various operations: positioning, transforming, stacking, filters, clipping, etc.

* RenderOperationsTarget - same idea as above

Let me know what you think would work best. And by all means, it doesn&apos;t have to be on this shortlist :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665176</commentid>
    <comment_count>15</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-07-09 14:27:56 -0700</bug_when>
    <thetext>RenderTransformableObject? RenderBaseObject?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665193</commentid>
    <comment_count>16</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-07-09 14:43:18 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; RenderTransformableObject? RenderBaseObject?

Both sound good to me (and were on our long list in some form). I&apos;ll put an updated patch up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665815</commentid>
    <comment_count>17</comment_count>
      <attachid>151471</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-07-10 09:48:16 -0700</bug_when>
    <thetext>Created attachment 151471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668347</commentid>
    <comment_count>18</comment_count>
      <attachid>151471</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-07-12 16:05:20 -0700</bug_when>
    <thetext>Comment on attachment 151471
Patch

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

All in all, it&apos;s a fine patch but I would like to see another round. The next round will very likely get an r+ from me so if you want to nitpick, now is the moment.

&gt; Source/WebCore/ChangeLog:12
&gt; +

I would like an explanation for what qualifies for your massive s/RenderBoxModelObject/RenderBaseObject/. Maybe better would be function-level comments about why groups of functions were touched.

&gt; Source/WebCore/rendering/RenderBaseObject.cpp:33
&gt; +};

Stray &apos;;&apos;

&gt; Source/WebCore/rendering/RenderBaseObject.cpp:69
&gt; +    // This must be done before we destroy the RenderObject.
&gt; +    if (m_layer)
&gt; +        m_layer-&gt;clearClipRects();

I don&apos;t think this is needed.

&gt; Source/WebCore/rendering/RenderBaseObject.h:29
&gt; +class RenderBaseObject : public RenderObject {

Sincerely this name doesn&apos;t add much. RenderBaseObject as in? There is a &lt;base&gt; element in HTML which doesn&apos;t have a renderer but such a naming would make me think it does.

I would rather go with the other alternative (RenderTransformableObject) so that everyone is happy :)

&gt; Source/WebCore/rendering/RenderBaseObject.h:40
&gt; +    virtual bool requiresLayer() const { return false; }

Nit: It would be better for now if this is pure virtual. Once SVG starts inheriting from this class, it could help us catch bad use.

&gt; Source/WebCore/rendering/RenderBaseObject.h:48
&gt; +    virtual bool isLayerBase() const OVERRIDE { return true; }

I find |isLayerBase| to be difficult to read and understand at call sites. Mostly because it&apos;s a very generic naming and using the full object name would be better: isRenderBaseObject().

Arguably, canHaveALayer() could be better as it matches what we are interested in (but we lose the consistency with the other is* flags and we could object that we are tying the name to RenderLayer).

&gt; Source/WebCore/rendering/RenderBox.cpp:3764
&gt; +        RenderLayer* layer = curr-&gt;hasLayer() &amp;&amp; curr-&gt;isBox() ? toRenderBaseObject(curr)-&gt;layer() : 0;

toRenderBox here.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:402
&gt;      if (requiresLayer()) {

Some of this should go to the new class (at least the creation / deletion). It&apos;s possible we want to defer that until SVG starts using it too as you would have a better picture.

&gt; Source/WebCore/rendering/RenderBoxModelObject.h:81
&gt;      virtual bool requiresLayer() const { return isRoot() || isOutOfFlowPositioned() || isRelPositioned() || isTransparent() || hasTransform() || hasHiddenBackface() || hasMask() || hasReflection() || hasFilter() || style()-&gt;specifiesColumns(); }

OVERRIDE.

&gt; Source/WebCore/rendering/svg/RenderSVGModelObject.h:56
&gt; +    virtual LayoutRect clippedOverflowRectForRepaint(RenderBaseObject* repaintContainer) const;
&gt; +    virtual void computeFloatRectForRepaint(RenderBaseObject* repaintContainer, FloatRect&amp;, bool fixed = false) const;
&gt; +    virtual LayoutRect outlineBoundsForRepaint(RenderBaseObject* repaintContainer, LayoutPoint*) const;

Let&apos;s annotate all the functions touched that are overriding something with OVERRIDE while at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669429</commentid>
    <comment_count>19</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-07-13 14:36:50 -0700</bug_when>
    <thetext>Thanks for the review Julien, updating the patch per your comments.

(In reply to comment #18)
&gt; &gt; Source/WebCore/rendering/RenderBaseObject.h:48
&gt; &gt; +    virtual bool isLayerBase() const OVERRIDE { return true; }
&gt; 
&gt; I find |isLayerBase| to be difficult to read and understand at call sites. Mostly because it&apos;s a very generic naming and using the full object name would be better: isRenderBaseObject().

Yup, that&apos;s a leftover from when the class name was RenderLayerBase, and my global rename script didn&apos;t catch it :) The intent is to match the class name, so it should be isTransformableObject() with the next version.


&gt; &gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:402
&gt; &gt;      if (requiresLayer()) {
&gt; 
&gt; Some of this should go to the new class (at least the creation / deletion). It&apos;s possible we want to defer that until SVG starts using it too as you would have a better picture.

Yes, that makes sense. I&apos;m taking a stab at simply moving the styleWillChange &amp; styleDidChange stuff into RenderTransformableObject for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669436</commentid>
    <comment_count>20</comment_count>
      <attachid>152337</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-07-13 14:41:50 -0700</bug_when>
    <thetext>Created attachment 152337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669491</commentid>
    <comment_count>21</comment_count>
      <attachid>152337</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-13 15:22:18 -0700</bug_when>
    <thetext>Comment on attachment 152337
Patch

Attachment 152337 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13239242</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669896</commentid>
    <comment_count>22</comment_count>
      <attachid>152439</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-07-14 17:29:20 -0700</bug_when>
    <thetext>Created attachment 152439
Patch

Hopefully fix the Win build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671611</commentid>
    <comment_count>23</comment_count>
      <attachid>152439</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-07-17 14:41:21 -0700</bug_when>
    <thetext>Comment on attachment 152439
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        of adding non-RenderBoxModelObject layer supprt.

typo: support

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:345
&gt; +    RenderTransformableObject::styleDidChange(diff, oldStyle);

This changes a bit the order in which we do the previous operations but I think it&apos;s safe.

&gt; Source/WebCore/rendering/RenderLayer.cpp:1095
&gt; +        RenderObject* renderer = curr-&gt;renderer();

RenderTransformableObject no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671626</commentid>
    <comment_count>24</comment_count>
      <attachid>152439</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-07-17 14:59:00 -0700</bug_when>
    <thetext>Comment on attachment 152439
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:345
&gt;&gt; +    RenderTransformableObject::styleDidChange(diff, oldStyle);
&gt; 
&gt; This changes a bit the order in which we do the previous operations but I think it&apos;s safe.

styleDidChange should always call super *first*. Is there a reason do to it in this order?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671638</commentid>
    <comment_count>25</comment_count>
      <attachid>152439</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-07-17 15:13:24 -0700</bug_when>
    <thetext>Comment on attachment 152439
Patch

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

&gt;&gt;&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:345
&gt;&gt;&gt; +    RenderTransformableObject::styleDidChange(diff, oldStyle);
&gt;&gt; 
&gt;&gt; This changes a bit the order in which we do the previous operations but I think it&apos;s safe.
&gt; 
&gt; styleDidChange should always call super *first*. Is there a reason do to it in this order?

Good catch, I don&apos;t believe there is any dependencies between the operations so we should call styleDidChange first as you pointed out. Maybe Florin has more insights though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672591</commentid>
    <comment_count>26</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-07-18 11:46:31 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 152439 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=152439&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:345
&gt; &gt;&gt; +    RenderTransformableObject::styleDidChange(diff, oldStyle);
&gt; &gt; 
&gt; &gt; This changes a bit the order in which we do the previous operations but I think it&apos;s safe.
&gt; 
&gt; styleDidChange should always call super *first*. Is there a reason do to it in this order?

Yes, it seems that updateBoxModelInfoFromStyle() needs to happen before the layer creation stuff (now in RenderTransformableObject::styleDidChange). On the first try I was calling super first and some tests were crashing.

We could preserve the super-first convention with another virtual call from RenderTransformableObject::styleDidChange (updateModelFromStyle?) - is introducing an additional virtual call on this code path acceptable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672594</commentid>
    <comment_count>27</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-07-18 11:50:57 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; We could preserve the super-first convention with another virtual call from RenderTransformableObject::styleDidChange (updateModelFromStyle?) - is introducing an additional virtual call on this code path acceptable?

Or I could revert the style{Did,Will}Change refactoring for now, and clean it up in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672602</commentid>
    <comment_count>28</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-07-18 11:59:02 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Yes, it seems that updateBoxModelInfoFromStyle() needs to happen before the layer creation stuff (now in RenderTransformableObject::styleDidChange). On the first try I was calling super first and some tests were crashing.

That suggests that there&apos;s some base class dependency on derived class behavior, which is bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672882</commentid>
    <comment_count>29</comment_count>
      <attachid>153116</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-07-18 15:49:03 -0700</bug_when>
    <thetext>Created attachment 153116
Patch

Reverted RenderBoxModelObject::style{Did,Will}Change refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673979</commentid>
    <comment_count>30</comment_count>
      <attachid>153116</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-07-19 15:29:40 -0700</bug_when>
    <thetext>Comment on attachment 153116
Patch

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

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:402
&gt; +    // FIXME: this should be handled by RenderTransformableObject::styleDidChange(), but it appears

Nit: s/this/This/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673983</commentid>
    <comment_count>31</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-07-19 15:33:05 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #26)
&gt; &gt; Yes, it seems that updateBoxModelInfoFromStyle() needs to happen before the layer creation stuff (now in RenderTransformableObject::styleDidChange). On the first try I was calling super first and some tests were crashing.
&gt; 
&gt; That suggests that there&apos;s some base class dependency on derived class behavior, which is bad.

I was the one pushing for the style{Did|Will}Change part but this uncovered some underlying bug. Florin, don&apos;t forget to file a follow-up bug about this bad dependency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673984</commentid>
    <comment_count>32</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-07-19 15:34:54 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #28)
&gt; &gt; (In reply to comment #26)
&gt; &gt; &gt; Yes, it seems that updateBoxModelInfoFromStyle() needs to happen before the layer creation stuff (now in RenderTransformableObject::styleDidChange). On the first try I was calling super first and some tests were crashing.
&gt; &gt; 
&gt; &gt; That suggests that there&apos;s some base class dependency on derived class behavior, which is bad.
&gt; 
&gt; I was the one pushing for the style{Did|Will}Change part but this uncovered some underlying bug. Florin, don&apos;t forget to file a follow-up bug about this bad dependency.

I&apos;d prefer that it be understaood before this patch lands. Maybe this refactor isn&apos;t actually the right approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673999</commentid>
    <comment_count>33</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-07-19 15:44:21 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #31)
&gt; &gt; (In reply to comment #28)
&gt; &gt; &gt; (In reply to comment #26)
&gt; &gt; &gt; &gt; Yes, it seems that updateBoxModelInfoFromStyle() needs to happen before the layer creation stuff (now in RenderTransformableObject::styleDidChange). On the first try I was calling super first and some tests were crashing.
&gt; &gt; &gt; 
&gt; &gt; &gt; That suggests that there&apos;s some base class dependency on derived class behavior, which is bad.
&gt; &gt; 
&gt; &gt; I was the one pushing for the style{Did|Will}Change part but this uncovered some underlying bug. Florin, don&apos;t forget to file a follow-up bug about this bad dependency.
&gt; 
&gt; I&apos;d prefer that it be understaood before this patch lands. Maybe this refactor isn&apos;t actually the right approach?

Are you referring specifically to the styleDidChange refactor, or the whole RenderTransformable patch? The latest version does not touch styleDidChange anymore (to avoid any functional changes in what is already a fairly large refactoring).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703013</commentid>
    <comment_count>34</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-08-23 08:22:01 -0700</bug_when>
    <thetext>Sorry about the delay, I finally got around to revisiting this.

UpdateBoxModelInfoFromStyle() needs to happen before handling RenderLayer creation/destruction because the latter depends on various bits being up to date. StyleWillChange() clears all the flags and (a possibly overwritten) updateBoxModelInfoFromStyle() is responsible for updating them. If that doesn&apos;t happen, the layer related logic will be looking at incorrect flags and likely making the wrong decision (for example not creating a layer because requiresLayer() returns false as hasTransform() has not been set yet).

I propose that we promote updateBoxModelInfoFromStyle() to a RenderTransformableObject virtual with a more generic name and call it from RenderTransformableObject::styleDidChange() instead of RenderBoxModelObject::styleDidChange(). That way we enforce the ordering at the right level and don&apos;t depend on derived class behavior.

I&apos;ll post an updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703014</commentid>
    <comment_count>35</comment_count>
      <attachid>160168</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-08-23 08:23:38 -0700</bug_when>
    <thetext>Created attachment 160168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703022</commentid>
    <comment_count>36</comment_count>
      <attachid>160168</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-23 08:35:21 -0700</bug_when>
    <thetext>Comment on attachment 160168
Patch

Attachment 160168 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13569653</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703026</commentid>
    <comment_count>37</comment_count>
      <attachid>160168</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-23 08:41:47 -0700</bug_when>
    <thetext>Comment on attachment 160168
Patch

Attachment 160168 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13562746</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703031</commentid>
    <comment_count>38</comment_count>
      <attachid>160171</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-08-23 08:43:00 -0700</bug_when>
    <thetext>Created attachment 160171
Patch

Build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703112</commentid>
    <comment_count>39</comment_count>
      <attachid>160171</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-23 10:18:21 -0700</bug_when>
    <thetext>Comment on attachment 160171
Patch

Attachment 160171 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13567740</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703149</commentid>
    <comment_count>40</comment_count>
      <attachid>160195</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-08-23 10:56:26 -0700</bug_when>
    <thetext>Created attachment 160195
Patch

Mac build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703165</commentid>
    <comment_count>41</comment_count>
      <attachid>160195</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-08-23 11:08:26 -0700</bug_when>
    <thetext>Comment on attachment 160195
Patch

I don&apos;t really mind the approach taken here, but RenderTransformableObject is just a terrible terrible name. You picked one aspect of layers (that they support transforms) and named the entire class after that one feature. That makes no sense. It seems like what you really mean is that this is an object that is capable of having a RenderLayer backing it. I think your name should simply reflect &quot;capable of having a RenderLayer&quot; and that it should not be using one specific feature of RenderLayers (that they are transformable).

I&apos;d suggest RenderLayerModelObject, since what you really mean is a RenderObject that participates in the RenderLayer way of doing things.

Also, I&apos;m not too happy with the generic rename to &quot;updateFromStyle&quot;, but I don&apos;t really have a better suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703178</commentid>
    <comment_count>42</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-08-23 11:25:32 -0700</bug_when>
    <thetext>&gt; I&apos;d suggest RenderLayerModelObject, since what you really mean is a RenderObject that participates in the RenderLayer way of doing things.

Dave, the consensus was that we shouldn&apos;t tie the new name to RenderLayer as it&apos;s an implementation detail that could change. See the first few patches that followed this naming and comment #14 with some alternate names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703211</commentid>
    <comment_count>43</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-08-23 11:53:26 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 160195 [details])
&gt; I don&apos;t really mind the approach taken here, but RenderTransformableObject is just a terrible terrible name. You picked one aspect of layers (that they support transforms) and named the entire class after that one feature. That makes no sense.

&quot;Transformable&quot; was intended to have a more general meaning here (not necessarily restricted to CSS/SVG transforms), but I can see how overloading the term may be confusing. We went through several naming ideas, and honestly I&apos;m ready to call it RenderYellowChicken if that would get everyone onboard :) 

Admittedly, RenderLayerModelObject is a good choice - except people have expressed reservations about reflecting a strong RenderLayer connection in the name.


&gt; Also, I&apos;m not too happy with the generic rename to &quot;updateFromStyle&quot;, but I don&apos;t really have a better suggestion.

My only other idea here was updateModelFromStyle - definitely open to suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703216</commentid>
    <comment_count>44</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-08-23 11:58:22 -0700</bug_when>
    <thetext>(In reply to comment #42)
&gt; &gt; I&apos;d suggest RenderLayerModelObject, since what you really mean is a RenderObject that participates in the RenderLayer way of doing things.
&gt; 
&gt; Dave, the consensus was that we shouldn&apos;t tie the new name to RenderLayer as it&apos;s an implementation detail that could change. See the first few patches that followed this naming and comment #14 with some alternate names.

I don&apos;t really agree with that consensus. If and when the object isn&apos;t about having a layer, then revisit the naming, but right now that&apos;s exactly what it is, so why obscure that fact? Like, are you really planning on making the object not use RenderLayers and/or not be about connecting to a RenderLayer? Isn&apos;t that the whole point here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716770</commentid>
    <comment_count>45</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-09-10 19:01:29 -0700</bug_when>
    <thetext>Simon suggested on IRC that we should also consider a composition-based approach. After poking around a bit, I still think inheritance works better in this instance: we already use composition to associate a RenderLayer with a renderer so the &quot;has a&quot; part is handled with the right abstraction; but it gets tricky as many methods need to handle layer-backed renderers uniformly (they basically operate on &quot;something that might have a layer&quot;).

The only elegant non-inheritance solution I see at this point is to push the layer bits (m_layer, layer(), hasSelfPaintingLayer(), ensureLayer(), destroyLayer(), etc.) all to way up into RenderObject - but that would add an unneeded pointer to RenderText which I believe was deemed unacceptable. Other approaches seem to add even more overhead in both code duplication and/or layer-tracking memory needed. I don&apos;t think it&apos;s worth paying this price just to avoid extending the inheritance chain, but maybe I&apos;m missing something. Thoughts?

Also, Simon, what do you think of Dave&apos;s naming proposal (RenderLayerModelObject)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729823</commentid>
    <comment_count>46</comment_count>
      <attachid>166057</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-09-27 13:41:32 -0700</bug_when>
    <thetext>Created attachment 166057
Patch

Updated class name: RenderLayerModelObject</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731453</commentid>
    <comment_count>47</comment_count>
      <attachid>166057</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-10-01 01:01:59 -0700</bug_when>
    <thetext>Comment on attachment 166057
Patch

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

Nice patch Florin. I&apos;m tempted to r+ as-is, but I also have no strong opinion regarding the naming. The others deserve a chance to comment as well (Dave? Simon?), so I&apos;ll leave r? for now :-)

&gt; Source/WebCore/ChangeLog:11
&gt; +        of adding non-RenderBoxModelObject layer supprt.

typo: support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731674</commentid>
    <comment_count>48</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-10-01 07:13:50 -0700</bug_when>
    <thetext>I am not absolutely happy with the name, since it looks like there is a inheritance hierarchies between the new class and RenderLayer. However, it is kind of sad that the naming is blocking this bug. I would like to move forward. The class can be renamed later anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731766</commentid>
    <comment_count>49</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-10-01 10:06:23 -0700</bug_when>
    <thetext>This naming issue is derailing an otherwise good patch and is beginning to block other work building on this :/ It looks like there&apos;s some consensus on the current name--Simon, do you mind weighing in?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731918</commentid>
    <comment_count>50</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-01 12:58:49 -0700</bug_when>
    <thetext>RenderLayerModelObject is OK with me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731923</commentid>
    <comment_count>51</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-10-01 13:04:55 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; RenderLayerModelObject is OK with me.

Woohoo, we have a quorum! I think the name was the only remaining issue. Dave or Niko, can you do the final review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731931</commentid>
    <comment_count>52</comment_count>
      <attachid>166057</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-10-01 13:22:49 -0700</bug_when>
    <thetext>Comment on attachment 166057
Patch

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

The patch looks good to me. Some snippets but nothing that could block a r+. Just giving dhyatt time to comment.

&gt; Source/WebCore/GNUmakefile.list.am:4998
&gt; +        Source/WebCore/rendering/RenderLayerModelObject.cpp \
&gt; +        Source/WebCore/rendering/RenderLayerModelObject.h \

indentation wrong.

&gt; Source/WebCore/rendering/RenderLayerModelObject.h:63
&gt; +    static bool s_wasFloating;
&gt; +    static bool s_hadLayer;
&gt; +    static bool s_hadTransform;
&gt; +    static bool s_layerWasSelfPainting;

You did not remove them from the header in RenderBoxModelObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731960</commentid>
    <comment_count>53</comment_count>
      <attachid>166537</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-10-01 14:01:14 -0700</bug_when>
    <thetext>Created attachment 166537
Patch

Updated per comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731966</commentid>
    <comment_count>54</comment_count>
      <attachid>166537</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-10-01 14:06:53 -0700</bug_when>
    <thetext>Comment on attachment 166537
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732033</commentid>
    <comment_count>55</comment_count>
      <attachid>166537</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-01 15:04:45 -0700</bug_when>
    <thetext>Comment on attachment 166537
Patch

Clearing flags on attachment: 166537

Committed r130081: &lt;http://trac.webkit.org/changeset/130081&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732034</commentid>
    <comment_count>56</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-01 15:04:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732037</commentid>
    <comment_count>57</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-10-01 15:12:09 -0700</bug_when>
    <thetext>Thanks everyone for reviewing this!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141038</attachid>
            <date>2012-05-09 16:03:02 -0700</date>
            <delta_ts>2012-06-28 10:47:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86022-20120509190301.patch</filename>
            <type>text/plain</type>
            <size>117163</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMzNTkxZTdjZTk0MmVh
OWFkNGFmOTlkN2RmYjAwNWIxNjdkMWRlMi4uOTY2NjNjYTEzODYzYzUzNjhiNjUyMTY5ZDM5ZWM3
MGVlNzc1NWEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwOCBAQAorMjAxMi0wNS0wOSAgRmxv
cmluIE1hbGl0YSAgPGZtYWxpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZmFjdG9yIGxh
eWVyLXJlbGF0ZWQgbG9naWMgb3V0IG9mIFJlbmRlckJveE1vZGVsT2JqZWN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjAyMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZXh0cmFjdHMg
dGhlIGxheWVyLXJlbGF0ZWQgbG9naWMgaW50byBhIGRlZGljYXRlZCBjbGFzcworICAgICAgICAo
UmVuZGVyTGF5ZXJCYXNlKSBhbmQgcmVmYWN0b3JzIGRlcGVuZGVudCBjb2RlIHRvIG1ha2UgdXNl
IG9mIHRoZSBuZXcKKyAgICAgICAgdHlwZSBpbnN0ZWFkIG9mIFJlbmRlckJveE1vZGVsT2JqZWN0
LiBUaGlzIGlzIGluIHByZXBhcmF0aW9uIG9mIGFkZGluZworICAgICAgICBub24tUmVuZGVyQm94
TW9kZWxPYmplY3QgbGF5ZXIgc3VwcHJ0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0czogcmVmYWN0
b3Jpbmcgd2l0aCBubyBiZWhhdmlvciBjaGFuZ2VzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJp
OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChMYXlvdXRSZXBhaW50ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCUi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQlI6OnNlbGVjdGlvblJlY3RGb3JSZXBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OnNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChSZW5kZXJCbG9jayk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmVuY2xvc2luZ0Zsb2F0UGFpbnRpbmdMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveC5oOgorICAgICAgICAoUmVuZGVyQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxP
YmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eE1vZGVsT2JqZWN0Ojp+UmVuZGVyQm94TW9kZWxPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94TW9kZWxPYmplY3Q6OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAgICAgIChSZW5kZXJCb3hNb2RlbE9i
amVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKFJlbmRlcklubGlu
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpSZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OmNvbXB1dGVSZXBhaW50UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tDb250YWlu
aW5nQmxvY2tDaGFpbkZvclBhZ2luYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnNjcm9sbFRvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZXBhaW50SW5jbHVk
aW5nTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmg6CisgICAgICAgIChSZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6cmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cmVuZGVyZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYXNlOjpSZW5kZXJMYXll
ckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYXNlOjp+UmVuZGVyTGF5ZXJC
YXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFzZTo6ZGVzdHJveUxheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFzZTo6ZW5zdXJlTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYXNlOjpoYXNTZWxmUGFpbnRpbmdMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhc2U6OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoUmVuZGVyTGF5ZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQmFzZTo6bGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYXNlOjpyZXF1
aXJlc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmVuZGVyTGF5ZXJCYXNlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQmFja2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcGFpbnRPbkNvbXBvc2l0aW5nQ2hhbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3Np
dGluZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVh
c29uRm9yQ29tcG9zaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpoYXNOb25BZmZpbmVUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnNlbGVj
dGlvblJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtl
ci5oOgorICAgICAgICAoUmVuZGVyTGlzdE1hcmtlcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkZENoaWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OnJlbW92ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
Om1vdmVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpmaW5kTmV4dExh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6ZW5jbG9zaW5nTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRMYXllck5lZWRzRnVsbFJlcGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRMYXllck5lZWRzRnVsbFJlcGFp
bnRGb3JQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0Ojpjb250YWluZXJGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6cmVwYWludFVzaW5nQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6cmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnRS
ZWN0YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJM
YXlvdXRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlY3RXaXRo
T3V0bGluZUZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OnNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclF1YWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVyUG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0Ojpjb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
Ojppc0NvbXBvc2l0ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc0xheWVy
QmFzZSk6CisgICAgICAgIChSZW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnNl
bGVjdGlvblJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2Vk
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmg6CisgICAgICAgIChSZW5kZXJSZXBsYWNlZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNl
bGVjdGlvbkluZm9CYXNlOjpyZXBhaW50Q29udGFpbmVyKToKKyAgICAgICAgKFJlbmRlclNlbGVj
dGlvbkluZm9CYXNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjb21wdXRlUmVj
dEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAg
ICAgICAgKFJlbmRlclRhYmxlQ2VsbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29sOjpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmg6
CisgICAgICAgIChSZW5kZXJUYWJsZUNvbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRh
YmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlUm93OjpjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93
Lmg6CisgICAgICAgIChSZW5kZXJUYWJsZVJvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c2VsZWN0aW9u
UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6CisgICAg
ICAgIChSZW5kZXJUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjptYXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzQ29tcG9zaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3
Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6
YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVF1
YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNlbGVjdGlvbkJvdW5kcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVmlldzo6Y2xlYXJTZWxlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJWaWV3Lmg6CisgICAgICAgIChSZW5kZXJWaWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHRm9yZWlnbk9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJl
cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bWFwTG9j
YWxUb0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0Lmg6CisgICAgICAgIChSZW5kZXJTVkdGb3JlaWduT2JqZWN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHR3JhZGllbnRTdG9wOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6Y2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpjb21wdXRl
RmxvYXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6
Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lLmg6CisgICAgICAgIChSZW5kZXJTVkdJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHTW9kZWxPYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6bWFwTG9jYWxUb0Nv
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGlu
ZUJvdW5kc0ZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9k
ZWxPYmplY3QuaDoKKyAgICAgICAgKFJlbmRlclNWR01vZGVsT2JqZWN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUm9vdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CisgICAgICAgIChSZW5kZXJTVkdSb290KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6Om1hcExvY2FsVG9Db250YWluZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oOgorICAgICAgICAoUmVu
ZGVyU1ZHVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1
dGVGbG9hdFJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBv
cnQ6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdSZW5kZXJTdXBw
b3J0KToKKwogMjAxMi0wNS0wOSAgVGFrYXNoaSBTYWthbW90byAgPHRhc2FrQGdvb2dsZS5jb20+
CiAKICAgICAgICAgU2hhZG93Um9vdCBuZWVkcyBhcHBseUF1dGhvclN0eWxlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBjYWRhN2M1MjRiZDRjMGJjMTZiMmFiOTdlMjBjNDA2YTVkZTVhNDkxLi5m
YjJkYzlmM2I2YzgzODI3Y2M2MGVkYmU2MmZhMzE2OGE5ZjMzMGZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMTM0Miw2ICsxMzQyLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAogICAg
IHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisgICAgcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFzZS5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAogICAg
IHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDI1YWU5MzQzYjU2YjMx
NzQ2YmE3N2JlYWM1YjZiN2Q2MDI3M2UyYTMuLjk3YWUwMzg5MmFlZTcwNGYyMjkyOWM2NmFlNzUy
OTQ2ZDFiNDBmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzgwMSw2ICsz
ODAxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
aCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFzZS5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhc2UuaCBcCiAJU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggZTQ3YTMz
NWQwMjhlODEzNGEzYjVmYThlOGU5Mjk0YmQxNGFlN2UzZS4uZjM5ZGEwYTg4NjMwMGI4ZDRhZmY1
YmY1NDZiYmU4M2U5ZjEzZGI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0xMjY3LDYgKzEyNjcsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBcCiAgICAgcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAgXAorICAgIHJlbmRlcmluZy9SZW5kZXJMYXllckJhc2UuY3BwIFwKICAgICByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyRmls
dGVySW5mby5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAgXApAQCAt
MjQ1OCw2ICsyNDU5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL1JlbmRlcklucHV0
U3BlZWNoLmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJMYXllci5oIFwKICAgICByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmggXAorICAgIHJlbmRlcmluZy9SZW5kZXJMYXllckJhc2UuaCBc
CiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIFwKICAgICByZW5kZXJpbmcv
UmVuZGVyTGluZUJveExpc3QuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggMTg1NzRhYmYwY2ZhZjU2MzY1ZDEzNzRlYmI3MDAzMTE3NDZkOGEy
MS4uNDYwZTRhNDE1OTQ0NGE1YmY4NzI0NmZlNzdjYWFmOWExMWE3ZDU2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtNTQ1LDYgKzU0NSw3IEBACiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJM
YXllci5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgnLAor
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJMYXllckJhc2UuaCcsCiAgICAgICAgICAgICAn
cmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5oJywKICAgICAgICAgICAgICdyZW5kZXJp
bmcvUmVuZGVyTGluZUJveExpc3QuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxp
c3RJdGVtLmgnLApAQCAtNDc5Niw2ICs0Nzk3LDcgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcv
UmVuZGVySW5wdXRTcGVlY2guaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAnLAor
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJMYXllckJhc2UuY3BwJywKICAgICAgICAgICAg
ICdyZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCcsCiAgICAgICAgICAgICAncmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcv
UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDBhY2U1NGQzZmQyM2Y1Y2Y1NGQzN2YwZjU5NzAwYjZi
OTU3N2FlNTcuLjdiNGEwYTZlZGNlY2EzODlmOGE5ZjA2NDVhNmZjZDQ3ODM1NmNlZWUgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zOTUxNCw2
ICszOTUxNCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVyTGF5ZXJCYXNlLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckxheWVyQmFz
ZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxy
ZW5kZXJpbmdcUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggOWVlYWM4ZWFjNzI4ZjE1YjhhZjI5YzQyNzgwYzJlOWIxNTdjYmE5YS4u
MGVkMjBkNjM0YWNjOTNlYTQzODQ3NWYzY2IzNTRhZGQwZjM4NzYxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAwMiw2ICsx
MDAyLDggQEAKIAkJM0FCMDJEMkIxMkQ0RjkxNjAwRkJCNjk0IC8qIFN0b3JhZ2VUcmFja2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNBQjAyRDI5
MTJENEY5MTYwMEZCQjY5NCAvKiBTdG9yYWdlVHJhY2tlci5jcHAgKi87IH07CiAJCTNBQzM2ODAw
MTJFRjdBMDkwMDZBM0Q2RiAvKiBTdG9yYWdlVHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0FDMzY3RkUxMkVGN0EwOTAwNkEzRDZG
IC8qIFN0b3JhZ2VUcmFja2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJM0FDNjQ4QjIxMjlFMTQ2NTAwQzNFQjI1IC8qIEVkaXRpbmdC
b3VuZGFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
M0FDNjQ4QjExMjlFMTQ2NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTNDMjQ0RkVBQTM3NUFDNjMz
Rjg4QkU2RiAvKiBSZW5kZXJMYXllckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDNDMjQ0RkU0QTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJMYXll
ckJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkzQzI0NEZFQkEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyTGF5ZXJCYXNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNDMjQ0RkU1QTM3NUFDNjMz
Rjg4QkU2RiAvKiBSZW5kZXJMYXllckJhc2UuY3BwICovOyB9OwogCQk0MTAwMkNDRDBGNjZFREVG
MDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkNDQjBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0
RnVuY3Rpb25DYWxsLmggKi87IH07CiAJCTQxMDAyQ0NFMEY2NkVERUYwMDlFNjYwRCAvKiBTY3Jp
cHRGdW5jdGlvbkNhbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAgKi87IH07CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9
OwpAQCAtNzk0OSw2ICs3OTUxLDggQEAKIAkJM0FCMDJEMjkxMkQ0RjkxNjAwRkJCNjk0IC8qIFN0
b3JhZ2VUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
b3JhZ2VUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0FDMzY3RkUx
MkVGN0EwOTAwNkEzRDZGIC8qIFN0b3JhZ2VUcmFja2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VUcmFja2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTNBQzY0OEIxMTI5RTE0NjUwMEMzRUIyNSAvKiBFZGl0aW5nQm91bmRh
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ0JvdW5kYXJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNDMjQ0RkU0QTM3NUFDNjMzRjg4QkU2RiAv
KiBSZW5kZXJMYXllckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVu
ZGVyTGF5ZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNDMjQ0RkU1QTM3
NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJMYXllckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTGF5ZXJCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEwMDJDQ0IwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2Fs
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBE
IC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA4ODUsNiArMjA4ODksOCBA
QAogCQkJCUJDRUE0ODNCMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMYXllci5oICovLAogCQkJ
CTBGNTgwQ0ZDMEYxMkRFOUIwMDUxRDY4OSAvKiBSZW5kZXJMYXllckJhY2tpbmcuY3BwICovLAog
CQkJCTBGNTgwQ0ZCMEYxMkRFOUIwMDUxRDY4OSAvKiBSZW5kZXJMYXllckJhY2tpbmcuaCAqLywK
KwkJCQkzQzI0NEZFNUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyTGF5ZXJCYXNlLmNwcCAqLywK
KwkJCQkzQzI0NEZFNEEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyTGF5ZXJCYXNlLmggKi8sCiAJ
CQkJMEY1ODBDRkEwRjEyREU5QjAwNTFENjg5IC8qIFJlbmRlckxheWVyQ29tcG9zaXRvci5jcHAg
Ki8sCiAJCQkJMEY1ODBDRjkwRjEyREU5QjAwNTFENjg5IC8qIFJlbmRlckxheWVyQ29tcG9zaXRv
ci5oICovLAogCQkJCTUwRDEwRDk3MTU0NUY1NzYwMDk2RDI4OCAvKiBSZW5kZXJMYXllckZpbHRl
ckluZm8uY3BwICovLApAQCAtMjQwMzEsNiArMjQwMzcsNyBAQAogCQkJCTc1MEQwMjk0MTFEMEU3
RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNF
QTQ4N0EwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjU4MENGRjBGMTJERTlCMDA1MUQ2ODkgLyogUmVuZGVyTGF5ZXJCYWNraW5nLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkzQzI0NEZFQUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyTGF5ZXJCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MENGRDBGMTJERTlCMDA1MUQ2ODkgLyogUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MEQxMEQ5QTE1NDVGNTc2MDA5
NkQyODggLyogUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQkUw
MzBBMjBGMzExMkZCMDAzQzFBNDYgLyogUmVuZGVyTGluZUJveExpc3QuaCBpbiBIZWFkZXJzICov
LApAQCAtMjcyMTEsNiArMjcyMTgsNyBAQAogCQkJCTc1MEQwMjkzMTFEMEU3RjMwMEJEMUIyNyAv
KiBSZW5kZXJJbnB1dFNwZWVjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg3OTA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1ODBE
MDAwRjEyREU5QjAwNTFENjg5IC8qIFJlbmRlckxheWVyQmFja2luZy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkzQzI0NEZFQkEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyTGF5ZXJCYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNTgwQ0ZFMEYxMkRFOUIwMDUxRDY4OSAvKiBSZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTBEMTBEOTkxNTQ1RjU3NjAwOTZE
Mjg4IC8qIFJlbmRlckxheWVyRmlsdGVySW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzMz
RkIxQjBGMzBFRTg1MDAyQ0REN0MgLyogUmVuZGVyTGluZUJveExpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0UmVwYWludGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmgKaW5kZXggNTc0
MDBmYWViZjdiMjBhMTY1NGM4OWE4MWRkYmNiM2YxOTM1ZmZiMC4uNTMyMzE0OTgyNjAzMjNmMTFj
YTI2NGU2YjQzMzk1ZThlODFjOTc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xheW91dFJlcGFpbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlv
dXRSZXBhaW50ZXIuaApAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIFJlbmRlckxheWVyQmFzZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKLWNsYXNzIFJlbmRl
ckJveE1vZGVsT2JqZWN0OwogCiBjbGFzcyBMYXlvdXRSZXBhaW50ZXIgewogcHVibGljOgpAQCAt
NDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyT2JqZWN0JiBtX29i
amVjdDsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbV9yZXBhaW50Q29udGFpbmVyOworICAg
IFJlbmRlckxheWVyQmFzZSogbV9yZXBhaW50Q29udGFpbmVyOwogICAgIC8vIFdlIHN0b3JlIHRo
ZXNlIHZhbHVlcyBhcyBMYXlvdXRSZWN0cywgYnV0IHRoZSBmaW5hbCBpbnZhbGlkYXRpb25zIHdp
bGwgYmUgcGl4ZWwgc25hcHBlZAogICAgIExheW91dFJlY3QgbV9vbGRCb3VuZHM7CiAgICAgTGF5
b3V0UmVjdCBtX29sZE91dGxpbmVCb3g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQlIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCUi5oCmlu
ZGV4IDQ5ZjliNWU2Y2MyMGU5NDlmNjYwNjFjYmRhZTNhMWIzNjBlYzM4NTAuLmEwNmFkOTFhYzQ2
MzNkNWFiODJhNDYxY2I5NmZhZjI2MGQzNDZlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCUi5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJCUiI7IH0KICAKLSAgICB2aXJ0
dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIC8qcmVwYWludENvbnRhaW5lciovLCBib29sIC8qY2xpcFRvVmlzaWJsZUNvbnRlbnQqLykg
eyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlv
blJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyQmFzZSogLypyZXBhaW50Q29udGFpbmVyKi8sIGJv
b2wgLypjbGlwVG9WaXNpYmxlQ29udGVudCovKSB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KIAog
ICAgIHZpcnR1YWwgZmxvYXQgd2lkdGgodW5zaWduZWQgLypmcm9tKi8sIHVuc2lnbmVkIC8qbGVu
Ki8sIGNvbnN0IEZvbnQmLCBmbG9hdCAvKnhQb3MqLywgSGFzaFNldDxjb25zdCBTaW1wbGVGb250
RGF0YSo+KiA9IDAgLypmYWxsYmFja0ZvbnRzKi8gLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0
IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGZsb2F0IHdpZHRoKHVuc2lnbmVkIC8qZnJvbSov
LCB1bnNpZ25lZCAvKmxlbiovLCBmbG9hdCAvKnhwb3MqLywgYm9vbCA9IGZhbHNlIC8qZmlyc3RM
aW5lKi8sIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiogPSAwIC8qZmFsbGJhY2tGb250
cyovLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGViY2FlOWQ1MWVhZTEwMzMwZWJhYjNk
YzM3ZDRlYjIwMDdlMGQzYjEuLjRhOGQ5ZmE1MWIzNmQyZDczOTk5MGY1YmRiMWU4OTJlYjlkZGZi
MGEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzAxMCw3
ICszMDEwLDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6aXNTZWxlY3Rpb25Sb290KCkgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLUdhcFJlY3RzIFJlbmRlckJsb2NrOjpzZWxlY3Rpb25HYXBS
ZWN0c0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCitH
YXBSZWN0cyBSZW5kZXJCbG9jazo6c2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KFJlbmRlckxh
eWVyQmFzZSogcmVwYWludENvbnRhaW5lcikKIHsKICAgICBBU1NFUlQoIW5lZWRzTGF5b3V0KCkp
OwogCkBAIC02MzcxLDcgKzYzNzEsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVF1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiAgICAgICAg
IHF1YWRzLmFwcGVuZChSZW5kZXJCb3g6OmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KDAs
IDAsIHdpZHRoKCksIGhlaWdodCgpKSwgZmFsc2UsIHdhc0ZpeGVkKSk7CiB9CiAKLUxheW91dFJl
Y3QgUmVuZGVyQmxvY2s6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdAor
TGF5b3V0UmVjdCBSZW5kZXJCbG9jazo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJM
YXllckJhc2UqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25z
dAogewogICAgIExheW91dFJlY3QgcihSZW5kZXJCb3g6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFp
bnQocmVwYWludENvbnRhaW5lciwgb3V0bGluZVdpZHRoKSk7CiAgICAgaWYgKGlzQW5vbnltb3Vz
QmxvY2tDb250aW51YXRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgK
aW5kZXggYTNjYzMzZWE2OWRhOGY2OWJkMTY4YjBjZDdmOGE2MGY1MzYyMmJjMi4uM2UyYTFjZWZk
ZTg5YmRmMjE5MjFkOGQwODY1MTY0MGJkYTU2N2FhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmgKQEAgLTIwMyw3ICsyMDMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNv
bnRhaW5zTm9uWmVyb0JpZGlMZXZlbCgpIGNvbnN0OwogCi0gICAgR2FwUmVjdHMgc2VsZWN0aW9u
R2FwUmVjdHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KTsKKyAgICBHYXBSZWN0cyBzZWxlY3Rpb25HYXBSZWN0c0ZvclJlcGFpbnQoUmVuZGVyTGF5ZXJC
YXNlKiByZXBhaW50Q29udGFpbmVyKTsKICAgICBMYXlvdXRSZWN0IGxvZ2ljYWxMZWZ0U2VsZWN0
aW9uR2FwKFJlbmRlckJsb2NrKiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaW50JiByb290Qmxv
Y2tQaHlzaWNhbFBvc2l0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdEJsb2Nr
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBz
ZWxPYmosIExheW91dFVuaXQgbG9naWNhbExlZnQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5
b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBjb25zdCBQYWludEluZm8qKTsKICAgICBMYXlvdXRSZWN0
IGxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBjb25zdCBM
YXlvdXRQb2ludCYgcm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYg
b2Zmc2V0RnJvbVJvb3RCbG9jaywKQEAgLTc2OSwxNCArNzY5LDE0IEBAIHByaXZhdGU6CiAgICAg
Ly8gY2hpbGRyZW4uCiAgICAgdmlydHVhbCBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBj
b25zdDsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxp
bmVXaWR0aCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHJlY3RXaXRoT3V0bGluZUZv
clJlcGFpbnQoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91
dGxpbmVXaWR0aCkgY29uc3Q7CiAgICAgdmlydHVhbCBSZW5kZXJTdHlsZSogb3V0bGluZVN0eWxl
Rm9yUmVwYWludCgpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBob3Zl
ckFuY2VzdG9yKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURyYWdTdGF0ZShib29s
IGRyYWdPbik7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkQmVjYW1lTm9uSW5saW5lKFJlbmRlck9i
amVjdCogY2hpbGQpOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qY2xp
cFRvVmlzaWJsZUNvbnRlbnQqLykKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVj
dEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qY2xp
cFRvVmlzaWJsZUNvbnRlbnQqLykKICAgICB7CiAgICAgICAgIHJldHVybiBzZWxlY3Rpb25HYXBS
ZWN0c0ZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAxOTlkZWI2YjIzMmVhY2I2NWYwNjQ0YzhkZTdjNmIy
MGQ3ZmY0NTY0Li5mMGNjZWI2NTM4YzRkNTIxMTgxY2MzMDM4OTRjMDNmNTY0Y2YzMjA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNTY1LDcgKzU2NSw3IEBAIEZs
b2F0UXVhZCBSZW5kZXJCb3g6OmFic29sdXRlQ29udGVudFF1YWQoKSBjb25zdAogICAgIHJldHVy
biBsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChyZWN0KSk7CiB9CiAKLUxheW91dFJlY3Qg
UmVuZGVyQm94OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldFRvUmVwYWludENvbnRh
aW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyQm94OjpvdXRsaW5lQm91bmRzRm9yUmVwYWlu
dChSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIsIExheW91dFBvaW50KiBjYWNoZWRP
ZmZzZXRUb1JlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCBib3ggPSBi
b3JkZXJCb3VuZGluZ0JveCgpOwogICAgIGFkanVzdFJlY3RGb3JPdXRsaW5lQW5kU2hhZG93KGJv
eCk7CkBAIC0xMzcwLDcgKzEzNzAsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6cGVycGVuZGlj
dWxhckNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBjYi0+
Y29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHRMZW5ndGgudmFsdWUo
KSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9y
bXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JO
b3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250
YWluZXIoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29s
IHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250
YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50
Q29udGFpbmVyID09IHRoaXMpCiAgICAgICAgIHJldHVybjsKQEAgLTE1NDEsNyArMTU0MSw3IEBA
IHZvaWQgUmVuZGVyQm94OjpkZWxldGVMaW5lQm94V3JhcHBlcigpCiAgICAgfQogfQogCi1MYXlv
dXRSZWN0IFJlbmRlckJveDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlckJv
eDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50
Q29udGFpbmVyKSBjb25zdAogewogICAgIGlmIChzdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklT
SUJMRSAmJiAhZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKICAgICAgICAg
cmV0dXJuIExheW91dFJlY3QoKTsKQEAgLTE1NjgsNyArMTU2OCw3IEBAIExheW91dFJlY3QgUmVu
ZGVyQm94OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWluCiAgICAgcmV0dXJuIHI7CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUmVj
dEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91
dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVJl
Y3RGb3JSZXBhaW50KFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVj
dCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICAvLyBUaGUgcmVjdCB3ZSBjb21wdXRl
IGF0IGVhY2ggc3RlcCBpcyBzaGlmdGVkIGJ5IG91ciB4L3kgb2Zmc2V0IGluIHRoZSBwYXJlbnQg
Y29udGFpbmVyJ3MgY29vcmRpbmF0ZSBzcGFjZS4KICAgICAvLyBPbmx5IHdoZW4gd2UgY3Jvc3Mg
YSB3cml0aW5nIG1vZGUgYm91bmRhcnkgd2lsbCB3ZSBoYXZlIHRvIHBvc3NpYmx5IGZsaXBGb3JX
cml0aW5nTW9kZSAodG8gY29udmVydCBpbnRvIGEgbW9yZSBhcHByb3ByaWF0ZQpAQCAtMzgyNiw3
ICszODI2LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckJveDo6ZW5jbG9zaW5nRmxvYXRQYWludGlu
Z0xheWVyKCkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIGN1cnIgPSB0aGlzOwog
ICAgIHdoaWxlIChjdXJyKSB7Ci0gICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IGN1cnItPmhh
c0xheWVyKCkgJiYgY3Vyci0+aXNCb3goKSA/IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY3Vycikt
PmxheWVyKCkgOiAwOworICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBjdXJyLT5oYXNMYXll
cigpICYmIGN1cnItPmlzQm94KCkgPyB0b1JlbmRlckxheWVyQmFzZShjdXJyKS0+bGF5ZXIoKSA6
IDA7CiAgICAgICAgIGlmIChsYXllciAmJiBsYXllci0+aXNTZWxmUGFpbnRpbmdMYXllcigpKQog
ICAgICAgICAgICAgcmV0dXJuIGxheWVyOwogICAgICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggOWYwMGE0NGUzNjZlOGE4NWM4
NTQxZjhkMGZjNmQyNTA1YzMzNGFjYy4uYTUwYTNiOGY4ZDA2MGUwZjliZDdmMmJhMzY2N2Y4MzAw
OTA0MzMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMTQ2LDcgKzE0
Niw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRSZWN0IGNvbXB1dGVkQ1NTQ29udGVudEJveFJlY3Qo
KSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KGJvcmRlckxlZnQoKSArIGNvbXB1dGVkQ1NTUGFk
ZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBjb21wdXRlZENTU1BhZGRpbmdUb3AoKSwgY2xpZW50
V2lkdGgoKSAtIGNvbXB1dGVkQ1NTUGFkZGluZ0xlZnQoKSAtIGNvbXB1dGVkQ1NTUGFkZGluZ1Jp
Z2h0KCksIGNsaWVudEhlaWdodCgpIC0gY29tcHV0ZWRDU1NQYWRkaW5nVG9wKCkgLSBjb21wdXRl
ZENTU1BhZGRpbmdCb3R0b20oKSk7IH0KIAogICAgIC8vIEJvdW5kcyBvZiB0aGUgb3V0bGluZSBi
b3ggaW4gYWJzb2x1dGUgY29vcmRzLiBSZXNwZWN0cyB0cmFuc2Zvcm1zCi0gICAgdmlydHVhbCBM
YXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiAv
KnJlcGFpbnRDb250YWluZXIqLywgTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldFRvUmVwYWludENv
bnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JS
ZXBhaW50KFJlbmRlckxheWVyQmFzZSogLypyZXBhaW50Q29udGFpbmVyKi8sIExheW91dFBvaW50
KiBjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYp
OwogCiAgICAgLy8gVXNlIHRoaXMgd2l0aCBjYXV0aW9uISBObyB0eXBlIGNoZWNraW5nIGlzIGRv
bmUhCkBAIC0zMDksOCArMzA5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5saW5lQm94V3Jh
cHBlcihJbmxpbmVCb3gqIGJveFdyYXBwZXIpIHsgbV9pbmxpbmVCb3hXcmFwcGVyID0gYm94V3Jh
cHBlcjsgfQogICAgIHZvaWQgZGVsZXRlTGluZUJveFdyYXBwZXIoKTsKIAotICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVS
ZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5
b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRS
ZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyQmFzZSogcmVwYWlu
dENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWlu
dChSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZp
eGVkID0gZmFsc2UpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnREdXJpbmdMYXlv
dXRJZk1vdmVkKGNvbnN0IExheW91dFJlY3QmKTsKIApAQCAtNTE5LDcgKzUxOSw3IEBAIHByb3Rl
Y3RlZDoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2Vk
KCkgY29uc3QgeyByZXR1cm4gaXNSZXBsYWNlZCgpICYmICFpc0lubGluZUJsb2NrT3JJbmxpbmVU
YWJsZSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFu
c2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlD
b250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciwg
Ym9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29u
dGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDAp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZp
eGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CiAKICAgICB2
b2lkIHBhaW50Um9vdEJveEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBmY2Nh
MWIzZDUxYjhmNTViMTkyOTM2YmQxOTdmNDAwMDgwYmE2MzY5Li44YjhkZjBlOTkxN2NkYzI3ZmEy
MmU1Mjc5MmU3YWJmMmFkYzVmZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTMxNiwxNiArMzE2LDEyIEBAIGJvb2wgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgSW1hCiB9CiAKIFJlbmRlckJveE1vZGVsT2JqZWN0OjpSZW5kZXJCb3hNb2Rl
bE9iamVjdChOb2RlKiBub2RlKQotICAgIDogUmVuZGVyT2JqZWN0KG5vZGUpCi0gICAgLCBtX2xh
eWVyKDApCisgICAgOiBSZW5kZXJMYXllckJhc2Uobm9kZSkKIHsKIH0KIAogUmVuZGVyQm94TW9k
ZWxPYmplY3Q6On5SZW5kZXJCb3hNb2RlbE9iamVjdCgpCiB7Ci0gICAgLy8gT3VyIGxheWVyIHNo
b3VsZCBoYXZlIGJlZW4gZGVzdHJveWVkIGFuZCBjbGVhcmVkIGJ5IG5vdwotICAgIEFTU0VSVCgh
aGFzTGF5ZXIoKSk7Ci0gICAgQVNTRVJUKCFtX2xheWVyKTsKICAgICBpZiAoZ0ltYWdlUXVhbGl0
eUNvbnRyb2xsZXIpIHsKICAgICAgICAgZ0ltYWdlUXVhbGl0eUNvbnRyb2xsZXItPm9iamVjdERl
c3Ryb3llZCh0aGlzKTsKICAgICAgICAgaWYgKGdJbWFnZVF1YWxpdHlDb250cm9sbGVyLT5pc0Vt
cHR5KCkpIHsKQEAgLTMzNSwyMCArMzMxLDggQEAgUmVuZGVyQm94TW9kZWxPYmplY3Q6On5SZW5k
ZXJCb3hNb2RlbE9iamVjdCgpCiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpkZXN0cm95TGF5ZXIoKQotewotICAgIEFTU0VSVCghaGFzTGF5ZXIoKSk7IC8vIENhbGxlcnMg
c2hvdWxkIGhhdmUgYWxyZWFkeSBjYWxsZWQgc2V0SGFzTGF5ZXIoZmFsc2UpCi0gICAgQVNTRVJU
KG1fbGF5ZXIpOwotICAgIG1fbGF5ZXItPmRlc3Ryb3kocmVuZGVyQXJlbmEoKSk7Ci0gICAgbV9s
YXllciA9IDA7Ci19Ci0KIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OndpbGxCZURlc3Ryb3ll
ZCgpCiB7Ci0gICAgLy8gVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIHdlIGRlc3Ryb3kgdGhlIFJl
bmRlck9iamVjdC4KLSAgICBpZiAobV9sYXllcikKLSAgICAgICAgbV9sYXllci0+Y2xlYXJDbGlw
UmVjdHMoKTsKLQogICAgIC8vIEEgY29udGludWF0aW9uIG9mIHRoaXMgUmVuZGVyT2JqZWN0IHNo
b3VsZCBiZSBkZXN0cm95ZWQgYXQgc3ViY2xhc3Nlcy4KICAgICBBU1NFUlQoIWNvbnRpbnVhdGlv
bigpKTsKIApAQCAtMzU3LDEzICszNDEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojp3
aWxsQmVEZXN0cm95ZWQoKQogICAgIGlmIChmaXJzdExldHRlclJlbWFpbmluZ1RleHQoKSkKICAg
ICAgICAgc2V0Rmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KDApOwogCi0gICAgLy8gUmVuZGVyT2Jq
ZWN0Ojp3aWxsQmVEZXN0cm95ZWQgY2FsbHMgYmFjayB0byBkZXN0cm95TGF5ZXIoKSBmb3IgbGF5
ZXIgZGVzdHJ1Y3Rpb24KLSAgICBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpOwotfQot
Ci1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fbGF5ZXIgJiYgbV9sYXllci0+aXNTZWxmUGFpbnRpbmdMYXllcigp
OworICAgIFJlbmRlckxheWVyQmFzZTo6d2lsbEJlRGVzdHJveWVkKCk7CiB9CiAKIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwg
Y29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKQpAQCAtNDEzLDMyICszOTEsMzAgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZm
LCBjb25zdCBSZW5kZXJTdHkKICAgICAgICAgfQogICAgIH0KIAotICAgIFJlbmRlck9iamVjdDo6
c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIG5ld1N0eWxlKTsKKyAgICBSZW5kZXJMYXllckJhc2U6OnN0
eWxlV2lsbENoYW5nZShkaWZmLCBuZXdTdHlsZSk7CiB9CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUpCiB7Ci0gICAgUmVuZGVyT2JqZWN0OjpzdHlsZURpZENoYW5nZShkaWZm
LCBvbGRTdHlsZSk7CisgICAgUmVuZGVyTGF5ZXJCYXNlOjpzdHlsZURpZENoYW5nZShkaWZmLCBv
bGRTdHlsZSk7CiAgICAgdXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CiAgICAgCiAgICAg
aWYgKHJlcXVpcmVzTGF5ZXIoKSkgewogICAgICAgICBpZiAoIWxheWVyKCkgJiYgbGF5ZXJDcmVh
dGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkpIHsKICAgICAgICAgICAgIGlmIChzX3dhc0Zsb2F0aW5n
ICYmIGlzRmxvYXRpbmcoKSkKICAgICAgICAgICAgICAgICBzZXRDaGlsZE5lZWRzTGF5b3V0KHRy
dWUpOwotICAgICAgICAgICAgbV9sYXllciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTGF5
ZXIodGhpcyk7Ci0gICAgICAgICAgICBzZXRIYXNMYXllcih0cnVlKTsKLSAgICAgICAgICAgIG1f
bGF5ZXItPmluc2VydE9ubHlUaGlzTGF5ZXIoKTsKKyAgICAgICAgICAgIGVuc3VyZUxheWVyKCk7
CiAgICAgICAgICAgICBpZiAocGFyZW50KCkgJiYgIW5lZWRzTGF5b3V0KCkgJiYgY29udGFpbmlu
Z0Jsb2NrKCkpIHsKLSAgICAgICAgICAgICAgICBtX2xheWVyLT5zZXRSZXBhaW50U3RhdHVzKE5l
ZWRzRnVsbFJlcGFpbnQpOworICAgICAgICAgICAgICAgIGxheWVyKCktPnNldFJlcGFpbnRTdGF0
dXMoTmVlZHNGdWxsUmVwYWludCk7CiAgICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgb25seSBv
bmUgbGF5ZXIgdG8gdXBkYXRlLCBpdCBpcyBub3Qgd29ydGggdXNpbmcgfGNhY2hlZE9mZnNldHwg
c2luY2UKICAgICAgICAgICAgICAgICAvLyB3ZSBhcmUgbm90IHN1cmUgdGhlIHZhbHVlIHdpbGwg
YmUgdXNlZC4KLSAgICAgICAgICAgICAgICBtX2xheWVyLT51cGRhdGVMYXllclBvc2l0aW9ucygw
KTsKKyAgICAgICAgICAgICAgICBsYXllcigpLT51cGRhdGVMYXllclBvc2l0aW9ucygwKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobGF5ZXIoKSAmJiBsYXllcigp
LT5wYXJlbnQoKSkgewogICAgICAgICBzZXRIYXNUcmFuc2Zvcm0oZmFsc2UpOyAvLyBFaXRoZXIg
YSB0cmFuc2Zvcm0gd2Fzbid0IHNwZWNpZmllZCBvciB0aGUgb2JqZWN0IGRvZXNuJ3Qgc3VwcG9y
dCB0cmFuc2Zvcm1zLCBzbyBqdXN0IG51bGwgb3V0IHRoZSBiaXQuCiAgICAgICAgIHNldEhhc1Jl
ZmxlY3Rpb24oZmFsc2UpOwotICAgICAgICBtX2xheWVyLT5yZW1vdmVPbmx5VGhpc0xheWVyKCk7
IC8vIGNhbGxzIGRlc3Ryb3lMYXllcigpIHdoaWNoIGNsZWFycyBtX2xheWVyCisgICAgICAgIGxh
eWVyKCktPnJlbW92ZU9ubHlUaGlzTGF5ZXIoKTsgLy8gY2FsbHMgZGVzdHJveUxheWVyKCkgd2hp
Y2ggY2xlYXJzIG1fbGF5ZXIKICAgICAgICAgaWYgKHNfd2FzRmxvYXRpbmcgJiYgaXNGbG9hdGlu
ZygpKQogICAgICAgICAgICAgc2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKICAgICAgICAgaWYg
KHNfaGFkVHJhbnNmb3JtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuaAppbmRleCA2Yzg4ZjBmYmZlM2FkOTQ1MDc1YTMxNTJhY2U0NGQyNTIwODU5
MzI5Li40YjE4MTdiMmEzMDBjY2FlNDM1YmM1YzJmZWU1ZmI1N2NhMjcxZjRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMjQsNyAr
MjQsNyBAQAogI2lmbmRlZiBSZW5kZXJCb3hNb2RlbE9iamVjdF9oCiAjZGVmaW5lIFJlbmRlckJv
eE1vZGVsT2JqZWN0X2gKIAotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJl
bmRlckxheWVyQmFzZS5oIgogI2luY2x1ZGUgIlNoYWRvd0RhdGEuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBLZXlmcmFtZUxpc3Q7CiAvLyBUaGlzIGNs
YXNzIGlzIHRoZSBiYXNlIGZvciBhbGwgb2JqZWN0cyB0aGF0IGFkaGVyZSB0byB0aGUgQ1NTIGJv
eCBtb2RlbCBhcyBkZXNjcmliZWQKIC8vIGF0IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL2Jv
eC5odG1sCiAKLWNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0IDogcHVibGljIFJlbmRlck9iamVj
dCB7CitjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdCA6IHB1YmxpYyBSZW5kZXJMYXllckJhc2Ug
ewogcHVibGljOgogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KE5vZGUqKTsKICAgICB2aXJ0dWFs
IH5SZW5kZXJCb3hNb2RlbE9iamVjdCgpOwpAQCAtNzksOCArNzksNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQm94TW9kZWxJbmZvRnJv
bVN0eWxlKCk7CiAKLSAgICBib29sIGhhc1NlbGZQYWludGluZ0xheWVyKCkgY29uc3Q7Ci0gICAg
UmVuZGVyTGF5ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcjsgfQogICAgIHZpcnR1
YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gaXNSb290KCkgfHwgaXNQb3Np
dGlvbmVkKCkgfHwgaXNSZWxQb3NpdGlvbmVkKCkgfHwgaXNUcmFuc3BhcmVudCgpIHx8IGhhc1Ry
YW5zZm9ybSgpIHx8IGhhc0hpZGRlbkJhY2tmYWNlKCkgfHwgaGFzTWFzaygpIHx8IGhhc1JlZmxl
Y3Rpb24oKSB8fCBoYXNGaWx0ZXIoKSB8fCBzdHlsZSgpLT5zcGVjaWZpZXNDb2x1bW5zKCk7IH0K
IAogICAgIC8vIFRoaXMgd2lsbCB3b3JrIG9uIGlubGluZXMgdG8gcmV0dXJuIHRoZSBib3VuZGlu
ZyBib3ggb2YgYWxsIG9mIHRoZSBsaW5lcycgYm9yZGVyIGJveGVzLgpAQCAtMTU3LDkgKzE1NSw2
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChi
b29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3QgT1ZF
UlJJREU7CiAKLSAgICAvLyBDYWxsZWQgYnkgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQo
KSBhbmQgaXMgdGhlIG9ubHkgd2F5IGxheWVycyBzaG91bGQgZXZlciBiZSBkZXN0cm95ZWQKLSAg
ICB2b2lkIGRlc3Ryb3lMYXllcigpOwotCiAgICAgdm9pZCBoaWdoUXVhbGl0eVJlcGFpbnRUaW1l
ckZpcmVkKFRpbWVyPFJlbmRlckJveE1vZGVsT2JqZWN0PiopOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlIHMpOwpAQCAtMjcwLDEwICsyNjUsNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRoaWNrbmVzcywg
ZmxvYXQgZHJhd1RoaWNrbmVzcywgQm94U2lkZSwgY29uc3QgUmVuZGVyU3R5bGUqLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb2xvciwgRUJvcmRlclN0eWxlLCBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSk7CiAKLSAgICBmcmllbmQgY2xhc3MgUmVuZGVyVmlldzsKLQotICAgIFJl
bmRlckxheWVyKiBtX2xheWVyOwotICAgIAogICAgIC8vIFVzZWQgdG8gc3RvcmUgc3RhdGUgYmV0
d2VlbiBzdHlsZVdpbGxDaGFuZ2UgYW5kIHN0eWxlRGlkQ2hhbmdlCiAgICAgc3RhdGljIGJvb2wg
c193YXNGbG9hdGluZzsKICAgICBzdGF0aWMgYm9vbCBzX2hhZExheWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA1YzkzMzYxMDRhNzRkZTAwZTJkYjhk
YzBlOTkyZjgyYzA1NTIyM2M0Li4zZWEwYzdlYzFlNmUyM2QxYTg4MTg2Nzk0MmFmYWVhM2RhZDY1
NjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtOTk2
LDcgKzk5Niw3IEBAIExheW91dFJlY3QgUmVuZGVySW5saW5lOjpsaW5lc1Zpc3VhbE92ZXJmbG93
Qm91bmRpbmdCb3goKSBjb25zdAogICAgIHJldHVybiByZWN0OwogfQogCi1MYXlvdXRSZWN0IFJl
bmRlcklubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlcklubGluZTo6
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdAogewogICAgIC8vIE9ubHkgcnVuLWlucyBhcmUgYWxsb3dlZCBpbiBoZXJl
IGR1cmluZyBsYXlvdXQuCiAgICAgQVNTRVJUKCF2aWV3KCkgfHwgIXZpZXcoKS0+bGF5b3V0U3Rh
dGVFbmFibGVkKCkgfHwgaXNSdW5JbigpKTsKQEAgLTEwNjUsNyArMTA2NSw3IEBAIExheW91dFJl
Y3QgUmVuZGVySW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwCiAgICAgcmV0dXJuIHI7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVySW5s
aW5lOjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QKK0xheW91dFJlY3Qg
UmVuZGVySW5saW5lOjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckxheWVyQmFzZSog
cmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CiB7CiAgICAg
TGF5b3V0UmVjdCByKFJlbmRlckJveE1vZGVsT2JqZWN0OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBh
aW50KHJlcGFpbnRDb250YWluZXIsIG91dGxpbmVXaWR0aCkpOwogICAgIGZvciAoUmVuZGVyT2Jq
ZWN0KiBjdXJyID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmco
KSkgewpAQCAtMTA3NSw3ICsxMDc1LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OnJlY3RX
aXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnQKICAgICBy
ZXR1cm4gcjsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwg
Ym9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVySW5saW5lOjpjb21wdXRlUmVjdEZvclJlcGFp
bnQoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBi
b29sIGZpeGVkKSBjb25zdAogewogICAgIGlmIChSZW5kZXJWaWV3KiB2ID0gdmlldygpKSB7CiAg
ICAgICAgIC8vIExheW91dFN0YXRlIGlzIG9ubHkgdmFsaWQgZm9yIHJvb3QtcmVsYXRpdmUgcmVw
YWludGluZwpAQCAtMTE2Miw3ICsxMTYyLDcgQEAgTGF5b3V0U2l6ZSBSZW5kZXJJbmxpbmU6Om9m
ZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiBjb250YWluZXIsIGNvbnN0IExheW8KICAg
ICByZXR1cm4gb2Zmc2V0OwogfQogCi12b2lkIFJlbmRlcklubGluZTo6bWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwg
Ym9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5
Q29udGFpbmVyRmxpcE9yTm90IGFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQpIGNv
bnN0Cit2b2lkIFJlbmRlcklubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJMYXllckJh
c2UqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJh
bnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCBhcHBs
eUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50
Q29udGFpbmVyID09IHRoaXMpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuaAppbmRleCAxOTBjYmVjNDFjZmE1M2U0ZTI5OGVhMzI3Nzk4OTZhMDE1
NGUwOTllLi5hNjNlOThlZDRjNjgzMDcyM2U1NjQyZDIyNzk4Njg1M2MyNmFhYTZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC0xMjYsMTEgKzEyNiwxMSBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIGxpbmVzQm91bmRpbmdCb3goKS53aWR0aCgpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0
IG9mZnNldEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxpbmVzQm91bmRpbmdCb3goKS5oZWlnaHQo
KTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2
aXJ0dWFsIExheW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkKSBjb25zdDsK
KyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91
dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRD
b250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIG1h
cExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNv
bnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAw
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJMYXll
ckJhc2UqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3Jtcywg
VHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVy
RmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKIAogICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNzBjZWI2ZmViYWY1NjRjMWZiNTFh
NmI1NzgzMWU2MjkyNjkzZTkxMS4uOTE0YmNhZjkxMGNhYTY1MDNlYmZkOTJhOTkxMmMzNmNkZGI2
NzY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xNDQs
NyArMTQ0LDcgQEAgdm9pZCBDbGlwUmVjdHM6OmRlc3Ryb3koUmVuZGVyQXJlbmEqIHJlbmRlckFy
ZW5hKQogICAgIHJlbmRlckFyZW5hLT5mcmVlKCooc2l6ZV90ICopdGhpcywgdGhpcyk7CiB9CiAK
LVJlbmRlckxheWVyOjpSZW5kZXJMYXllcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIp
CitSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXJCYXNlKiByZW5kZXJlcikKICAg
ICA6IG1faW5SZXNpemVNb2RlKGZhbHNlKQogICAgICwgbV9zY3JvbGxEaW1lbnNpb25zRGlydHko
dHJ1ZSkKICAgICAsIG1fbm9ybWFsRmxvd0xpc3REaXJ0eSh0cnVlKQpAQCAtNDAxLDcgKzQwMSw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKExheW91dFBvaW50KiBv
ZmZzZXRGcm9tUm9vdCwgVXBkYXRlTGF5ZXJQCiAgICAgICAgIC8vIExheW91dFN0YXRlIG91dHNp
ZGUgdGhlIGxheW91dCgpIHBoYXNlIGFuZCB1c2UgaXQgaGVyZS4KICAgICAgICAgQVNTRVJUKCF2
aWV3LT5sYXlvdXRTdGF0ZUVuYWJsZWQoKSk7CiAKLSAgICAgICAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIgPSByZW5kZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50KCk7
CisgICAgICAgIFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCkt
PmNvbnRhaW5lckZvclJlcGFpbnQoKTsKICAgICAgICAgTGF5b3V0UmVjdCBvbGRSZXBhaW50UmVj
dCA9IG1fcmVwYWludFJlY3Q7CiAgICAgICAgIExheW91dFJlY3Qgb2xkT3V0bGluZUJveCA9IG1f
b3V0bGluZUJveDsKICAgICAgICAgY29tcHV0ZVJlcGFpbnRSZWN0cyhvZmZzZXRGcm9tUm9vdCk7
CkBAIC00NjQsNyArNDY0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29tcHV0ZVJlcGFpbnRSZWN0
cyhMYXlvdXRQb2ludCogb2Zmc2V0RnJvbVJvb3QpCiB7CiAgICAgQVNTRVJUKCFtX3Zpc2libGVD
b250ZW50U3RhdHVzRGlydHkpOwogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIgPSByZW5kZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50KCk7CisgICAgUmVuZGVy
TGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVw
YWludCgpOwogICAgIG1fcmVwYWludFJlY3QgPSByZW5kZXJlcigpLT5jbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsKICAgICBtX291dGxpbmVCb3ggPSByZW5k
ZXJlcigpLT5vdXRsaW5lQm91bmRzRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCBvZmZzZXRG
cm9tUm9vdCk7CiB9CkBAIC01NzUsMTAgKzU3NSwxMCBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBS
ZW5kZXJMYXllcjo6cmVuZGVyYWJsZVRyYW5zZm9ybShQYWludEJlaGF2aW9yIHBhaW50QmVoYXZp
bwogICAgIHJldHVybiAqbV90cmFuc2Zvcm07CiB9CiAKLXN0YXRpYyBib29sIGNoZWNrQ29udGFp
bmluZ0Jsb2NrQ2hhaW5Gb3JQYWdpbmF0aW9uKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJl
ciwgUmVuZGVyQm94KiBhbmNlc3RvckNvbHVtbnNSZW5kZXJlcikKK3N0YXRpYyBib29sIGNoZWNr
Q29udGFpbmluZ0Jsb2NrQ2hhaW5Gb3JQYWdpbmF0aW9uKFJlbmRlckxheWVyQmFzZSogcmVuZGVy
ZXIsIFJlbmRlckJveCogYW5jZXN0b3JDb2x1bW5zUmVuZGVyZXIpCiB7CiAgICAgUmVuZGVyVmll
dyogdmlldyA9IHJlbmRlcmVyLT52aWV3KCk7Ci0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHBy
ZXZCbG9jayA9IHJlbmRlcmVyOworICAgIFJlbmRlckxheWVyQmFzZSogcHJldkJsb2NrID0gcmVu
ZGVyZXI7CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jazsKICAgICBmb3IgKGNvbnRh
aW5pbmdCbG9jayA9IHJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgIGNvbnRh
aW5pbmdCbG9jayAmJiBjb250YWluaW5nQmxvY2sgIT0gdmlldyAmJiBjb250YWluaW5nQmxvY2sg
IT0gYW5jZXN0b3JDb2x1bW5zUmVuZGVyZXI7CkBAIC04MjMsNyArODIzLDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbigpCiAgICAgfQogICAgICAgICAKICAgICBpZiAo
cmVuZGVyZXIoKS0+aXNSZWxQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgbV9yZWxhdGl2ZU9mZnNl
dCA9IHJlbmRlcmVyKCktPnJlbGF0aXZlUG9zaXRpb25PZmZzZXQoKTsKKyAgICAgICAgbV9yZWxh
dGl2ZU9mZnNldCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIoKSktPnJlbGF0aXZl
UG9zaXRpb25PZmZzZXQoKTsKICAgICAgICAgbG9jYWxQb2ludC5tb3ZlKG1fcmVsYXRpdmVPZmZz
ZXQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fcmVsYXRpdmVPZmZzZXQgPSBMYXlvdXRTaXpl
KCk7CkBAIC0xNjA5LDcgKzE2MDksNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUbyhpbnQg
eCwgaW50IHkpCiAKICAgICB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsKCk7CiAK
LSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCkt
PmNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICBSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250
YWluZXIgPSByZW5kZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50KCk7CiAgICAgRnJhbWUqIGZy
YW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKTsKICAgICBpZiAoZnJhbWUpIHsKICAgICAgICAgLy8g
VGhlIGNhcmV0IHJlY3QgbmVlZHMgdG8gYmUgaW52YWxpZGF0ZWQgYWZ0ZXIgc2Nyb2xsaW5nCkBA
IC00NjMzLDcgKzQ2MzMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzZXRCYWNraW5nTmVlZHNSZXBh
aW50SW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHIpCiB9CiAKIC8vIFNpbmNlIHdlJ3JlIG9ubHkg
cGFpbnRpbmcgbm9uLWNvbXBvc2l0ZWQgbGF5ZXJzLCB3ZSBrbm93IHRoYXQgdGhleSBhbGwgc2hh
cmUgdGhlIHNhbWUgcmVwYWludENvbnRhaW5lci4KLXZvaWQgUmVuZGVyTGF5ZXI6OnJlcGFpbnRJ
bmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRzKFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyKQordm9pZCBSZW5kZXJMYXllcjo6cmVwYWludEluY2x1ZGluZ05vbkNv
bXBvc2l0aW5nRGVzY2VuZGFudHMoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyKQog
ewogICAgIHJlbmRlcmVyKCktPnJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVy
LCByZW5kZXJlcigpLT5jbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFp
bmVyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggOWIzNGU3
ZjY2ZDI1YzFjNGVlNTYwNmJkYTk5M2FlZmVlMzkzYmUxOS4uOTBhNmM2YmJhYjE5ZmRmZDIxYTQ0
N2I1YmRlZmNjZDIzMmQ4OTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmgKQEAgLTIxNywxMCArMjE3LDEwIEBAIGNsYXNzIFJlbmRlckxheWVyIDogcHVibGljIFNjcm9s
bGFibGVBcmVhIHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyUmVwbGljYTsKIAot
ICAgIFJlbmRlckxheWVyKFJlbmRlckJveE1vZGVsT2JqZWN0Kik7CisgICAgUmVuZGVyTGF5ZXIo
UmVuZGVyTGF5ZXJCYXNlKik7CiAgICAgflJlbmRlckxheWVyKCk7CiAKLSAgICBSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyOyB9CisgICAg
UmVuZGVyTGF5ZXJCYXNlKiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0K
ICAgICBSZW5kZXJCb3gqIHJlbmRlckJveCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXIgJiYg
bV9yZW5kZXJlci0+aXNCb3goKSA/IHRvUmVuZGVyQm94KG1fcmVuZGVyZXIpIDogMDsgfQogICAg
IFJlbmRlckxheWVyKiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIFJl
bmRlckxheWVyKiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzOyB9
CkBAIC0yNDEsNyArMjQxLDcgQEAgcHVibGljOgogICAgIC8vIGlmIGxheWVyIGNvbXBvc2l0aW5n
IGlzIGJlaW5nIHVzZWQsCiAgICAgdm9pZCBzZXRCYWNraW5nTmVlZHNSZXBhaW50KCk7CiAgICAg
dm9pZCBzZXRCYWNraW5nTmVlZHNSZXBhaW50SW5SZWN0KGNvbnN0IExheW91dFJlY3QmKTsgLy8g
ciBpcyBpbiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiB0aGUgbGF5ZXIncyByZW5kZXIgb2JqZWN0
Ci0gICAgdm9pZCByZXBhaW50SW5jbHVkaW5nTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7CisgICAgdm9pZCByZXBhaW50SW5j
bHVkaW5nTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRD
b250YWluZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIHN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVu
Y2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CkBAIC03OTQsNyArNzk0LDcgQEAgcHJp
dmF0ZToKIAogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllckJhY2tpbmc7CiAgICAgZnJpZW5k
IGNsYXNzIFJlbmRlckxheWVyQ29tcG9zaXRvcjsKLSAgICBmcmllbmQgY2xhc3MgUmVuZGVyQm94
TW9kZWxPYmplY3Q7CisgICAgZnJpZW5kIGNsYXNzIFJlbmRlckxheWVyQmFzZTsKIAogICAgIC8v
IE9ubHkgc2FmZSB0byBjYWxsIGZyb20gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXll
cihSZW5kZXJBcmVuYSopCiAgICAgdm9pZCBkZXN0cm95KFJlbmRlckFyZW5hKik7CkBAIC04NjMs
NyArODYzLDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9oYXNGaWx0ZXJJbmZvIDogMTsKICNl
bmRpZgogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgUmVuZGVy
TGF5ZXJCYXNlKiBtX3JlbmRlcmVyOwogCiAgICAgUmVuZGVyTGF5ZXIqIG1fcGFyZW50OwogICAg
IFJlbmRlckxheWVyKiBtX3ByZXZpb3VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5oCmluZGV4IGE2YTAzYWM3N2Q1NDU2YmVjZDlkYzU5MmMyNzg0NjFi
ODUxYTkwNmQuLjU4NzMxNmJkZGM3OWY2NjRjMDZhMDc1MTc2ODZkY2I2YzljYzExZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKQEAgLTE3MCw3
ICsxNzAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4g
Y3JlYXRlR3JhcGhpY3NMYXllcihjb25zdCBTdHJpbmcmKTsKIAotICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fb3duaW5nTGF5ZXItPnJlbmRlcmVy
KCk7IH0KKyAgICBSZW5kZXJMYXllckJhc2UqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9v
d25pbmdMYXllci0+cmVuZGVyZXIoKTsgfQogICAgIFJlbmRlckxheWVyQ29tcG9zaXRvciogY29t
cG9zaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fb3duaW5nTGF5ZXItPmNvbXBvc2l0b3IoKTsgfQog
CiAgICAgdm9pZCB1cGRhdGVJbnRlcm5hbEhpZXJhcmNoeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmNlYjg0NzhkODdkYzY0
NzA3Njg3MWMzY2MxYWVkM2E4NzFkYmRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFzZS5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFzZS5oIgorCisjaW5jbHVkZSAiUmVuZGVy
TGF5ZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitSZW5kZXJMYXllckJhc2U6OlJlbmRlckxheWVyQmFzZShOb2RlKiBub2RlKQorICAgIDogUmVu
ZGVyT2JqZWN0KG5vZGUpCisgICAgLCBtX2xheWVyKDApCit7Cit9OworCitSZW5kZXJMYXllckJh
c2U6On5SZW5kZXJMYXllckJhc2UoKQoreworICAgIC8vIE91ciBsYXllciBzaG91bGQgaGF2ZSBi
ZWVuIGRlc3Ryb3llZCBhbmQgY2xlYXJlZCBieSBub3cKKyAgICBBU1NFUlQoIWhhc0xheWVyKCkp
OworICAgIEFTU0VSVCghbV9sYXllcik7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXJCYXNlOjpkZXN0
cm95TGF5ZXIoKQoreworICAgIEFTU0VSVCghaGFzTGF5ZXIoKSk7IC8vIENhbGxlcnMgc2hvdWxk
IGhhdmUgYWxyZWFkeSBjYWxsZWQgc2V0SGFzTGF5ZXIoZmFsc2UpCisgICAgQVNTRVJUKG1fbGF5
ZXIpOworICAgIG1fbGF5ZXItPmRlc3Ryb3kocmVuZGVyQXJlbmEoKSk7CisgICAgbV9sYXllciA9
IDA7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXJCYXNlOjplbnN1cmVMYXllcigpCit7CisgICAgaWYg
KG1fbGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGF5ZXIgPSBuZXcgKHJlbmRlckFy
ZW5hKCkpIFJlbmRlckxheWVyKHRoaXMpOworICAgIHNldEhhc0xheWVyKHRydWUpOworICAgIG1f
bGF5ZXItPmluc2VydE9ubHlUaGlzTGF5ZXIoKTsKK30KKworYm9vbCBSZW5kZXJMYXllckJhc2U6
Omhhc1NlbGZQYWludGluZ0xheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllciAmJiBt
X2xheWVyLT5pc1NlbGZQYWludGluZ0xheWVyKCk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXJCYXNl
Ojp3aWxsQmVEZXN0cm95ZWQoKQoreworICAgIC8vIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSB3
ZSBkZXN0cm95IHRoZSBSZW5kZXJPYmplY3QuCisgICAgaWYgKG1fbGF5ZXIpCisgICAgICAgIG1f
bGF5ZXItPmNsZWFyQ2xpcFJlY3RzKCk7CisKKyAgICAvLyBSZW5kZXJPYmplY3Q6OndpbGxCZURl
c3Ryb3llZCBjYWxscyBiYWNrIHRvIGRlc3Ryb3lMYXllcigpIGZvciBsYXllciBkZXN0cnVjdGlv
bgorICAgIFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFzZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE5ODNkMjRjNGVlZDA2MWE4OGRiMmY0Yzk3M2FjMmE4NDJkMzNiYmYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYXNl
LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2lmbmRlZiBSZW5kZXJMYXllckJhc2VfaAorI2RlZmluZSBSZW5kZXJM
YXllckJhc2VfaAorCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgUmVuZGVyTGF5ZXI7CisKK2NsYXNzIFJlbmRlckxheWVyQmFzZSA6IHB1
YmxpYyBSZW5kZXJPYmplY3QgeworcHVibGljOgorICAgIFJlbmRlckxheWVyQmFzZShOb2RlKik7
CisgICAgdmlydHVhbCB+UmVuZGVyTGF5ZXJCYXNlKCk7CisKKyAgICAvLyBDYWxsZWQgYnkgUmVu
ZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKSBhbmQgaXMgdGhlIG9ubHkgd2F5IGxheWVycyBz
aG91bGQgZXZlciBiZSBkZXN0cm95ZWQKKyAgICB2b2lkIGRlc3Ryb3lMYXllcigpOworCisgICAg
Ym9vbCBoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0OworICAgIFJlbmRlckxheWVyKiBsYXll
cigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXI7IH0KKworICAgIHZpcnR1YWwgYm9vbCByZXF1aXJl
c0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQg
ZW5zdXJlTGF5ZXIoKTsKKworICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBPVkVS
UklERTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNMYXllckJhc2UoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBSZW5kZXJMYXllciogbV9sYXllcjsKK307
CisKK2lubGluZSBSZW5kZXJMYXllckJhc2UqIHRvUmVuZGVyTGF5ZXJCYXNlKFJlbmRlck9iamVj
dCogb2JqZWN0KQoreworICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+aXNMYXllckJhc2Uo
KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlckxheWVyQmFzZSo+KG9iamVjdCk7Cit9
CisKK2lubGluZSBjb25zdCBSZW5kZXJMYXllckJhc2UqIHRvUmVuZGVyTGF5ZXJCYXNlKGNvbnN0
IFJlbmRlck9iamVjdCogb2JqZWN0KQoreworICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+
aXNMYXllckJhc2UoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbmRlckxheWVy
QmFzZSo+KG9iamVjdCk7Cit9CisKKy8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4g
dW5uZWNlc3NhcnkgY2FzdC4KK3ZvaWQgdG9SZW5kZXJMYXllckJhc2UoY29uc3QgUmVuZGVyTGF5
ZXJCYXNlKik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlbmRlckxh
eWVyQmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwCmluZGV4IDg0ZWYwNGJjZDlmNWNmMDQzNTBjNjZhZTBjMTNiNDE4NjYxNzJl
ODYuLjU1OGI1ZDg3MzU4MThlNzU2NWQwNTExMzU1MTRmZjlkNTVlMTJlZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC01
MDIsNyArNTAyLDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmco
UmVuZGVyTGF5ZXIqIGxheWVyLCBDb21wb3NpdGluZ0NoYW5nZVIKICAgICAgICAgICAgIC8vIGl0
cyByZXBsaWNhIEdyYXBoaWNzTGF5ZXIuIEluIHByYWN0aWNlIHRoaXMgc2hvdWxkIG5ldmVyIGhh
cHBlbiBiZWNhdXNlIHJlZmxlY3RlZSBhbmQgcmVmbGVjdGlvbiAKICAgICAgICAgICAgIC8vIGFy
ZSBib3RoIGVpdGhlciBjb21wb3NpdGVkLCBvciBub3QgY29tcG9zaXRlZC4KICAgICAgICAgICAg
IGlmIChsYXllci0+aXNSZWZsZWN0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJMYXll
ciogc291cmNlTGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGxheWVyLT5yZW5kZXJlcigp
LT5wYXJlbnQoKSktPmxheWVyKCk7CisgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIHNvdXJj
ZUxheWVyID0gdG9SZW5kZXJMYXllckJhc2UobGF5ZXItPnJlbmRlcmVyKCktPnBhcmVudCgpKS0+
bGF5ZXIoKTsKICAgICAgICAgICAgICAgICBpZiAoUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5n
ID0gc291cmNlTGF5ZXItPmJhY2tpbmcoKSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
YmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5yZXBsaWNhTGF5ZXIoKSA9PSBsYXllci0+YmFja2lu
ZygpLT5ncmFwaGljc0xheWVyKCkpOwogICAgICAgICAgICAgICAgICAgICBiYWNraW5nLT5ncmFw
aGljc0xheWVyKCktPnNldFJlcGxpY2F0ZWRCeUxheWVyKDApOwpAQCAtNTU3LDcgKzU1Nyw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXBhaW50T25Db21wb3NpdGluZ0NoYW5nZShS
ZW5kZXJMYXllciogbGF5ZXIpCiAgICAgaWYgKGxheWVyLT5yZW5kZXJlcigpICE9IG1fcmVuZGVy
VmlldyAmJiAhbGF5ZXItPnJlbmRlcmVyKCktPnBhcmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IGxheWVyLT5yZW5k
ZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50KCk7CisgICAgUmVuZGVyTGF5ZXJCYXNlKiByZXBh
aW50Q29udGFpbmVyID0gbGF5ZXItPnJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsK
ICAgICBpZiAoIXJlcGFpbnRDb250YWluZXIpCiAgICAgICAgIHJlcGFpbnRDb250YWluZXIgPSBt
X3JlbmRlclZpZXc7CiAKQEAgLTEzOTYsNyArMTM5Niw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVy
KSBjCiAgICAgLy8gVGhlIGNvbXBvc2l0aW5nIHN0YXRlIG9mIGEgcmVmbGVjdGlvbiBzaG91bGQg
bWF0Y2ggdGhhdCBvZiBpdHMgcmVmbGVjdGVkIGxheWVyLgogICAgIGlmIChsYXllci0+aXNSZWZs
ZWN0aW9uKCkpIHsKICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7IC8vIFRo
ZSBSZW5kZXJSZXBsaWNhJ3MgcGFyZW50IGlzIHRoZSBvYmplY3QgYmVpbmcgcmVmbGVjdGVkLgot
ICAgICAgICBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpLT5sYXllcigp
OworICAgICAgICBsYXllciA9IHRvUmVuZGVyTGF5ZXJCYXNlKHJlbmRlcmVyKS0+bGF5ZXIoKTsK
ICAgICB9CiAgICAgLy8gVGhlIHJvb3QgbGF5ZXIgYWx3YXlzIGhhcyBhIGNvbXBvc2l0aW5nIGxh
eWVyLCBidXQgaXQgbWF5IG5vdCBoYXZlIGJhY2tpbmcuCiAgICAgcmV0dXJuIHJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JUcmFuc2Zvcm0ocmVuZGVyZXIpCkBAIC0xNDUwLDcgKzE0NTAsNyBAQCBjb25z
dCBjaGFyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbkZvckNvbXBvc2l0aW5nKGNvbnN0
IFJlbmRlckxheWVyKiBsYXllcgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBsYXllci0+
cmVuZGVyZXIoKTsKICAgICBpZiAobGF5ZXItPmlzUmVmbGVjdGlvbigpKSB7CiAgICAgICAgIHJl
bmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOwotICAgICAgICBsYXllciA9IHRvUmVuZGVyQm94
TW9kZWxPYmplY3QocmVuZGVyZXIpLT5sYXllcigpOworICAgICAgICBsYXllciA9IHRvUmVuZGVy
TGF5ZXJCYXNlKHJlbmRlcmVyKS0+bGF5ZXIoKTsKICAgICB9CiAKICAgICBpZiAocmVuZGVyZXIt
Pmhhc1RyYW5zZm9ybSgpICYmIHJlbmRlcmVyLT5zdHlsZSgpLT5oYXNQZXJzcGVjdGl2ZSgpKQpA
QCAtMTcyMyw3ICsxNzIzLDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Omhhc05vbkFm
ZmluZVRyYW5zZm9ybShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAogICAgIGlmICghcmVu
ZGVyZXItPmhhc1RyYW5zZm9ybSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAg
aWYgKFRyYW5zZm9ybWF0aW9uTWF0cml4KiB0cmFuc2Zvcm0gPSB0b1JlbmRlckJveE1vZGVsT2Jq
ZWN0KHJlbmRlcmVyKS0+bGF5ZXIoKS0+dHJhbnNmb3JtKCkpCisgICAgaWYgKFRyYW5zZm9ybWF0
aW9uTWF0cml4KiB0cmFuc2Zvcm0gPSB0b1JlbmRlckxheWVyQmFzZShyZW5kZXJlciktPmxheWVy
KCktPnRyYW5zZm9ybSgpKQogICAgICAgICByZXR1cm4gIXRyYW5zZm9ybS0+aXNBZmZpbmUoKTsK
ICAgICAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggMGQyZjQ4ZGQ1MTAxZTdmNGM3YzM0ZWZhMDYyM2E4YjBi
ODkwNDg3NC4uMTM4Zjc1OGY4ODE4NTUwNWVjMDUyZDJmZGRiMDhiNDU4NzJhNzI2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMTcwMiw3
ICsxNzAyLDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpzZXRTZWxlY3Rpb25TdGF0ZShTZWxl
Y3Rpb25TdGF0ZSBzdGF0ZSkKICAgICAgICAgICAgIHJvb3QtPnNldEhhc1NlbGVjdGVkQ2hpbGRy
ZW4oc3RhdGUgIT0gU2VsZWN0aW9uTm9uZSk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyTGlzdE1h
cmtlcjo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpCitMYXlvdXRSZWN0IFJlbmRl
ckxpc3RNYXJrZXI6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyQmFzZSogcmVw
YWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkKIHsKICAgICBBU1NFUlQo
IW5lZWRzTGF5b3V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdE1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RN
YXJrZXIuaAppbmRleCBkODhkOTIyYjBlNDI4M2NjYTQ1NjAzNWY0ZWViMTE3ZDgyYzhmNTJkLi42
NTJjMjhkNzc1MTFkOGJkYThkNTAxNTJmZGZhZjBiZmY0YTk1NWI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuICFpc0ltYWdlKCk7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25TdGF0ZSk7Ci0gICAgdmly
dHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSk7
CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckxh
eWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRy
dWUpOwogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKICAgICB2b2lkIHVwZGF0ZU1hcmdpbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggYWIzZDJmMjExYjAwODZiOTEzMzhhODdiYjA0
NjZhMGZhMDYwNzVkOS4uZTA1Y2Q3N2UxZjlhMDY5ZWEyNmMxMWZiNWZlOTVjZjE1MTM5ZDFkOCAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTMxNyw3ICsz
MTcsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGls
ZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKICAgICAvLyBUbyBhdm9pZCB0aGUgcHJvYmxl
bSBhbGx0b2dldGhlciwgZGV0ZWN0IGVhcmx5IGlmIHdlJ3JlIGluc2lkZSBhIGhpZGRlbiBTVkcg
c3VidHJlZQogICAgIC8vIGFuZCBzdG9wIGNyZWF0aW5nIGxheWVycyBhdCBhbGwgZm9yIHRoZXNl
IGNhc2VzIC0gdGhleSdyZSBub3QgdXNlZCBhbnl3YXlzLgogICAgIGlmIChuZXdDaGlsZC0+aGFz
TGF5ZXIoKSAmJiAhbGF5ZXJDcmVhdGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkpCi0gICAgICAgIHRv
UmVuZGVyQm94TW9kZWxPYmplY3QobmV3Q2hpbGQpLT5sYXllcigpLT5yZW1vdmVPbmx5VGhpc0xh
eWVyKCk7CisgICAgICAgIHRvUmVuZGVyTGF5ZXJCYXNlKG5ld0NoaWxkKS0+bGF5ZXIoKS0+cmVt
b3ZlT25seVRoaXNMYXllcigpOwogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlQ2hpbGQo
UmVuZGVyT2JqZWN0KiBvbGRDaGlsZCkKQEAgLTQzNyw3ICs0MzcsNyBAQCBzdGF0aWMgdm9pZCBh
ZGRMYXllcnMoUmVuZGVyT2JqZWN0KiBvYmosIFJlbmRlckxheWVyKiBwYXJlbnRMYXllciwgUmVu
ZGVyT2JqZWN0KgogICAgICAgICAgICAgYmVmb3JlQ2hpbGQgPSBuZXdPYmplY3QtPnBhcmVudCgp
LT5maW5kTmV4dExheWVyKHBhcmVudExheWVyLCBuZXdPYmplY3QpOwogICAgICAgICAgICAgbmV3
T2JqZWN0ID0gMDsKICAgICAgICAgfQotICAgICAgICBwYXJlbnRMYXllci0+YWRkQ2hpbGQodG9S
ZW5kZXJCb3hNb2RlbE9iamVjdChvYmopLT5sYXllcigpLCBiZWZvcmVDaGlsZCk7CisgICAgICAg
IHBhcmVudExheWVyLT5hZGRDaGlsZCh0b1JlbmRlckxheWVyQmFzZShvYmopLT5sYXllcigpLCBi
ZWZvcmVDaGlsZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2MSw3ICs0NjEsNyBA
QCB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlTGF5ZXJzKFJlbmRlckxheWVyKiBwYXJlbnRMYXll
cikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc0xheWVyKCkpIHsKLSAgICAgICAgcGFy
ZW50TGF5ZXItPnJlbW92ZUNoaWxkKHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVy
KCkpOworICAgICAgICBwYXJlbnRMYXllci0+cmVtb3ZlQ2hpbGQodG9SZW5kZXJMYXllckJhc2Uo
dGhpcyktPmxheWVyKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NzUsNyArNDc1
LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6Om1vdmVMYXllcnMoUmVuZGVyTGF5ZXIqIG9sZFBhcmVu
dCwgUmVuZGVyTGF5ZXIqIG5ld1BhcmVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhh
c0xheWVyKCkpIHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gdG9SZW5kZXJCb3hNb2Rl
bE9iamVjdCh0aGlzKS0+bGF5ZXIoKTsKKyAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gdG9S
ZW5kZXJMYXllckJhc2UodGhpcyktPmxheWVyKCk7CiAgICAgICAgIEFTU0VSVChvbGRQYXJlbnQg
PT0gbGF5ZXItPnBhcmVudCgpKTsKICAgICAgICAgaWYgKG9sZFBhcmVudCkKICAgICAgICAgICAg
IG9sZFBhcmVudC0+cmVtb3ZlQ2hpbGQobGF5ZXIpOwpAQCAtNDk1LDcgKzQ5NSw3IEBAIFJlbmRl
ckxheWVyKiBSZW5kZXJPYmplY3Q6OmZpbmROZXh0TGF5ZXIoUmVuZGVyTGF5ZXIqIHBhcmVudExh
eWVyLCBSZW5kZXJPYmplY3QqCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gU3RlcCAxOiBJ
ZiBvdXIgbGF5ZXIgaXMgYSBjaGlsZCBvZiB0aGUgZGVzaXJlZCBwYXJlbnQsIHRoZW4gcmV0dXJu
IG91ciBsYXllci4KLSAgICBSZW5kZXJMYXllciogb3VyTGF5ZXIgPSBoYXNMYXllcigpID8gdG9S
ZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKSA6IDA7CisgICAgUmVuZGVyTGF5ZXIq
IG91ckxheWVyID0gaGFzTGF5ZXIoKSA/IHRvUmVuZGVyTGF5ZXJCYXNlKHRoaXMpLT5sYXllcigp
IDogMDsKICAgICBpZiAob3VyTGF5ZXIgJiYgb3VyTGF5ZXItPnBhcmVudCgpID09IHBhcmVudExh
eWVyKQogICAgICAgICByZXR1cm4gb3VyTGF5ZXI7CiAKQEAgLTUyNyw3ICs1MjcsNyBAQCBSZW5k
ZXJMYXllciogUmVuZGVyT2JqZWN0OjplbmNsb3NpbmdMYXllcigpIGNvbnN0CiB7CiAgICAgY29u
c3QgUmVuZGVyT2JqZWN0KiBjdXJyID0gdGhpczsKICAgICB3aGlsZSAoY3VycikgewotICAgICAg
ICBSZW5kZXJMYXllciogbGF5ZXIgPSBjdXJyLT5oYXNMYXllcigpID8gdG9SZW5kZXJCb3hNb2Rl
bE9iamVjdChjdXJyKS0+bGF5ZXIoKSA6IDA7CisgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9
IGN1cnItPmhhc0xheWVyKCkgPyB0b1JlbmRlckxheWVyQmFzZShjdXJyKS0+bGF5ZXIoKSA6IDA7
CiAgICAgICAgIGlmIChsYXllcikKICAgICAgICAgICAgIHJldHVybiBsYXllcjsKICAgICAgICAg
Y3VyciA9IGN1cnItPnBhcmVudCgpOwpAQCAtNjkyLDEzICs2OTIsMTMgQEAgdm9pZCBSZW5kZXJP
YmplY3Q6OmludmFsaWRhdGVDb250YWluZXJQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKIHZvaWQg
UmVuZGVyT2JqZWN0OjpzZXRMYXllck5lZWRzRnVsbFJlcGFpbnQoKQogewogICAgIEFTU0VSVCho
YXNMYXllcigpKTsKLSAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5z
ZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnQpOworICAgIHRvUmVuZGVyTGF5ZXJCYXNl
KHRoaXMpLT5sYXllcigpLT5zZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnQpOwogfQog
CiB2b2lkIFJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25l
ZE1vdmVtZW50TGF5b3V0KCkKIHsKICAgICBBU1NFUlQoaGFzTGF5ZXIoKSk7Ci0gICAgdG9SZW5k
ZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1
bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KTsKKyAgICB0b1JlbmRlckxheWVy
QmFzZSh0aGlzKS0+bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50Rm9y
UG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KTsKIH0KIAogUmVuZGVyQmxvY2sqIFJlbmRlck9iamVj
dDo6Y29udGFpbmluZ0Jsb2NrKCkgY29uc3QKQEAgLTEyNDUsMTMgKzEyNDUsMTMgQEAgdm9pZCBS
ZW5kZXJPYmplY3Q6OnBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikKIHsKIH0K
IAotUmVuZGVyQm94TW9kZWxPYmplY3QqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyRm9yUmVwYWlu
dCgpIGNvbnN0CitSZW5kZXJMYXllckJhc2UqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyRm9yUmVw
YWludCgpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyogdiA9IHZpZXcoKTsKICAgICBpZiAoIXYp
CiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyID0gMDsKKyAgICBSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIg
PSAwOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlmICh2LT51c2Vz
Q29tcG9zaXRpbmcoKSkgewpAQCAtMTI4MSw3ICsxMjgxLDcgQEAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyRm9yUmVwYWludCgpIGNvbnN0CiAgICAgcmV0dXJu
IHJlcGFpbnRDb250YWluZXI7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0OjpyZXBhaW50VXNpbmdD
b250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExh
eW91dFJlY3QmIHIsIGJvb2wgaW1tZWRpYXRlKQordm9pZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRV
c2luZ0NvbnRhaW5lcihSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExh
eW91dFJlY3QmIHIsIGJvb2wgaW1tZWRpYXRlKQogewogICAgIGlmICghcmVwYWludENvbnRhaW5l
cikgewogICAgICAgICB2aWV3KCktPnJlcGFpbnRWaWV3UmVjdGFuZ2xlKHIsIGltbWVkaWF0ZSk7
CkBAIC0xMzM0LDcgKzEzMzQsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6cmVwYWludChib29sIGlt
bWVkaWF0ZSkKICAgICBpZiAodmlldy0+cHJpbnRpbmcoKSkKICAgICAgICAgcmV0dXJuOyAvLyBE
b24ndCByZXBhaW50IGlmIHdlJ3JlIHByaW50aW5nLgogCi0gICAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIgPSBjb250YWluZXJGb3JSZXBhaW50KCk7CisgICAgUmVuZGVy
TGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyID0gY29udGFpbmVyRm9yUmVwYWludCgpOwogICAg
IHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyID8gcmVwYWludENvbnRhaW5l
ciA6IHZpZXcsIGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIp
LCBpbW1lZGlhdGUpOwogfQogCkBAIC0xMzU0LDcgKzEzNTQsNyBAQCB2b2lkIFJlbmRlck9iamVj
dDo6cmVwYWludFJlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JiByLCBib29sIGltbWVkaWF0ZSkK
ICAgICAvLyByZXBhaW50IGNvbnRhaW5lcnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzMwOAogICAgIGRpcnR5UmVjdC5tb3ZlKHZpZXctPmxheW91dERlbHRhKCkp
OwogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBjb250YWlu
ZXJGb3JSZXBhaW50KCk7CisgICAgUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyID0g
Y29udGFpbmVyRm9yUmVwYWludCgpOwogICAgIGNvbXB1dGVSZWN0Rm9yUmVwYWludChyZXBhaW50
Q29udGFpbmVyLCBkaXJ0eVJlY3QpOwogICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50
Q29udGFpbmVyID8gcmVwYWludENvbnRhaW5lciA6IHZpZXcsIGRpcnR5UmVjdCwgaW1tZWRpYXRl
KTsKIH0KQEAgLTEzNjQsNyArMTM2NCw3IEBAIEludFJlY3QgUmVuZGVyT2JqZWN0OjpwaXhlbFNu
YXBwZWRBYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdAogICAgIHJldHVybiBwaXhl
bFNuYXBwZWRJbnRSZWN0KGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpKTsKIH0KIAotYm9v
bCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRCb3VuZHMsIGNv
bnN0IExheW91dFJlY3QmIG9sZE91dGxpbmVCb3gsIGNvbnN0IExheW91dFJlY3QqIG5ld0JvdW5k
c1B0ciwgY29uc3QgTGF5b3V0UmVjdCogbmV3T3V0bGluZUJveFJlY3RQdHIpCitib29sIFJlbmRl
ck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoUmVuZGVyTGF5ZXJCYXNlKiByZXBh
aW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRCb3VuZHMsIGNvbnN0IExheW91dFJl
Y3QmIG9sZE91dGxpbmVCb3gsIGNvbnN0IExheW91dFJlY3QqIG5ld0JvdW5kc1B0ciwgY29uc3Qg
TGF5b3V0UmVjdCogbmV3T3V0bGluZUJveFJlY3RQdHIpCiB7CiAgICAgUmVuZGVyVmlldyogdiA9
IHZpZXcoKTsKICAgICBpZiAodi0+cHJpbnRpbmcoKSkKQEAgLTE0ODgsMjAgKzE0ODgsMjAgQEAg
Ym9vbCBSZW5kZXJPYmplY3Q6OmNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpIGNvbnN0CiAg
ICAgcmV0dXJuICFkb2N1bWVudCgpLT52aWV3KCktPm5lZWRzRnVsbFJlcGFpbnQoKSAmJiAhaGFz
TGF5ZXIoKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnJlY3RXaXRoT3V0bGluZUZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVu
aXQgb3V0bGluZVdpZHRoKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnJlY3RXaXRo
T3V0bGluZUZvclJlcGFpbnQoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyLCBMYXlv
dXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IHIoY2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcikpOwogICAgIHIuaW5mbGF0ZShv
dXRsaW5lV2lkdGgpOwogICAgIHJldHVybiByOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlck9iamVj
dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqKSBj
b25zdAorTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlckxheWVyQmFzZSopIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OmNvbXB1
dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
TGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyT2JqZWN0Ojpj
b21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyLCBM
YXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29u
dGFpbmVyID09IHRoaXMpCiAgICAgICAgIHJldHVybjsKQEAgLTE1MzIsNyArMTUzMiw3IEBAIHZv
aWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsCiAgICAgfQogfQogCi12b2lkIFJlbmRlck9iamVjdDo6Y29t
cHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqLCBGbG9hdFJlY3Qm
LCBib29sKSBjb25zdAordm9pZCBSZW5kZXJPYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBh
aW50KFJlbmRlckxheWVyQmFzZSosIEZsb2F0UmVjdCYsIGJvb2wpIGNvbnN0CiB7CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xNjkzLDcgKzE2OTMsNyBAQCBTdHlsZURpZmZlcmVu
Y2UgUmVuZGVyT2JqZWN0OjphZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIHVuc2lnbgogICAgICAgICAvLyBUZXh0IG5vZGVzIHNoYXJlIHN0eWxlIHdpdGggdGhlaXIg
cGFyZW50cyBidXQgdHJhbnNmb3JtcyBkb24ndCBhcHBseSB0byB0aGVtLAogICAgICAgICAvLyBo
ZW5jZSB0aGUgIWlzVGV4dCgpIGNoZWNrLgogICAgICAgICAvLyBGSVhNRTogd2hlbiB0cmFuc2Zv
cm1zIGFyZSB0YWtlbiBpbnRvIGFjY291bnQgZm9yIG92ZXJmbG93LCB3ZSB3aWxsIG5lZWQgdG8g
ZG8gYSBsYXlvdXQuCi0gICAgICAgIGlmICghaXNUZXh0KCkgJiYgKCFoYXNMYXllcigpIHx8ICF0
b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkpIHsK
KyAgICAgICAgaWYgKCFpc1RleHQoKSAmJiAoIWhhc0xheWVyKCkgfHwgIXRvUmVuZGVyTGF5ZXJC
YXNlKHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkpIHsKICAgICAgICAgICAgIC8vIFdl
IG5lZWQgdG8gc2V0IGF0IGxlYXN0IFNpbXBsaWZpZWRMYXlvdXQsIGJ1dCBpZiBQb3NpdGlvbmVk
TW92ZW1lbnRPbmx5IGlzIGFscmVhZHkgc2V0CiAgICAgICAgICAgICAvLyB0aGVuIHdlIGFjdHVh
bGx5IG5lZWQgU2ltcGxpZmllZExheW91dEFuZFBvc2l0aW9uZWRNb3ZlbWVudC4KICAgICAgICAg
ICAgIGlmICghaGFzTGF5ZXIoKSkKQEAgLTE3MDksNyArMTcwOSw3IEBAIFN0eWxlRGlmZmVyZW5j
ZSBSZW5kZXJPYmplY3Q6OmFkanVzdFN0eWxlRGlmZmVyZW5jZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgdW5zaWduCiAgICAgLy8gSWYgb3BhY2l0eSBjaGFuZ2VkLCBhbmQgd2UgYXJlIG5vdCBjb21w
b3NpdGVkLCBuZWVkIHRvIHJlcGFpbnQgKGFsc28KICAgICAvLyBpZ25vcmluZyB0ZXh0IG5vZGVz
KQogICAgIGlmIChjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyAmIENvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0eU9wYWNpdHkpIHsKLSAgICAgICAgaWYgKCFpc1RleHQoKSAmJiAoIWhhc0xheWVyKCkg
fHwgIXRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgp
KSkKKyAgICAgICAgaWYgKCFpc1RleHQoKSAmJiAoIWhhc0xheWVyKCkgfHwgIXRvUmVuZGVyTGF5
ZXJCYXNlKHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkpCiAgICAgICAgICAgICBkaWZm
ID0gU3R5bGVEaWZmZXJlbmNlUmVwYWludExheWVyOwogICAgICAgICBlbHNlIGlmIChkaWZmIDwg
U3R5bGVEaWZmZXJlbmNlUmVjb21wb3NpdGVMYXllcikKICAgICAgICAgICAgIGRpZmYgPSBTdHls
ZURpZmZlcmVuY2VSZWNvbXBvc2l0ZUxheWVyOwpAQCAtMTcxNyw3ICsxNzE3LDcgQEAgU3R5bGVE
aWZmZXJlbmNlIFJlbmRlck9iamVjdDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVy
ZW5jZSBkaWZmLCB1bnNpZ24KICAgICAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgaWYg
KChjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyAmIENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eUZp
bHRlcikgJiYgaGFzTGF5ZXIoKSkgewotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1Jl
bmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpOworICAgICAgICBSZW5kZXJMYXllciog
bGF5ZXIgPSB0b1JlbmRlckxheWVyQmFzZSh0aGlzKS0+bGF5ZXIoKTsKICAgICAgICAgaWYgKCFs
YXllci0+aXNDb21wb3NpdGVkKCkgfHwgbGF5ZXItPnBhaW50c1dpdGhGaWx0ZXJzKCkpCiAgICAg
ICAgICAgICBkaWZmID0gU3R5bGVEaWZmZXJlbmNlUmVwYWludExheWVyOwogICAgICAgICBlbHNl
IGlmIChkaWZmIDwgU3R5bGVEaWZmZXJlbmNlUmVjb21wb3NpdGVMYXllcikKQEAgLTE3MjgsOCAr
MTcyOCw4IEBAIFN0eWxlRGlmZmVyZW5jZSBSZW5kZXJPYmplY3Q6OmFkanVzdFN0eWxlRGlmZmVy
ZW5jZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgdW5zaWduCiAgICAgLy8gVGhlIGFuc3dlciB0byBy
ZXF1aXJlc0xheWVyKCkgZm9yIHBsdWdpbnMgYW5kIGlmcmFtZXMgY2FuIGNoYW5nZSBvdXRzaWRl
IG9mIHRoZSBzdHlsZSBzeXN0ZW0sCiAgICAgLy8gc2luY2UgaXQgZGVwZW5kcyBvbiB3aGV0aGVy
IHdlIGRlY2lkZSB0byBjb21wb3NpdGUgdGhlc2UgZWxlbWVudHMuIFdoZW4gdGhlIGxheWVyIHN0
YXR1cyBvZgogICAgIC8vIG9uZSBvZiB0aGVzZSBlbGVtZW50cyBjaGFuZ2VzLCB3ZSBuZWVkIHRv
IGZvcmNlIGEgbGF5b3V0LgotICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUVxdWFsICYm
IHN0eWxlKCkgJiYgaXNCb3hNb2RlbE9iamVjdCgpKSB7Ci0gICAgICAgIGlmIChoYXNMYXllcigp
ICE9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPnJlcXVpcmVzTGF5ZXIoKSkKKyAgICBp
ZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VFcXVhbCAmJiBzdHlsZSgpICYmIGlzTGF5ZXJCYXNl
KCkpIHsKKyAgICAgICAgaWYgKGhhc0xheWVyKCkgIT0gdG9SZW5kZXJMYXllckJhc2UodGhpcykt
PnJlcXVpcmVzTGF5ZXIoKSkKICAgICAgICAgICAgIGRpZmYgPSBTdHlsZURpZmZlcmVuY2VMYXlv
dXQ7CiAgICAgfQogI2Vsc2UKQEAgLTIwMjUsNyArMjAyNSw3IEBAIEZsb2F0UG9pbnQgUmVuZGVy
T2JqZWN0OjphYnNvbHV0ZVRvTG9jYWwoY29uc3QgRmxvYXRQb2ludCYgY29udGFpbmVyUG9pbnQs
IGJvb2wKICAgICByZXR1cm4gdHJhbnNmb3JtU3RhdGUubGFzdFBsYW5hclBvaW50KCk7CiB9CiAK
LXZvaWQgUmVuZGVyT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRy
YW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJv
b2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJPYmplY3Q6Om1hcExvY2FsVG9Db250YWlu
ZXIoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVz
ZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWlu
ZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29u
dGFpbmVyID09IHRoaXMpCiAgICAgICAgIHJldHVybjsKQEAgLTIwNjQsNyArMjA2NCw3IEBAIGJv
b2wgUmVuZGVyT2JqZWN0OjpzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJl
bmRlck9iamVjdCogY29udGFpbmVyCiAjaWYgRU5BQkxFKDNEX1JFTkRFUklORykKICAgICAvLyBo
YXNUcmFuc2Zvcm0oKSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgb2JqZWN0IGhhcyB0cmFuc2Zvcm0s
IHRyYW5zZm9ybS1zdHlsZSBvciBwZXJzcGVjdGl2ZS4gV2UganVzdCBjYXJlIGFib3V0IHRyYW5z
Zm9ybSwKICAgICAvLyBzbyBjaGVjayB0aGUgbGF5ZXIncyB0cmFuc2Zvcm0gZGlyZWN0bHkuCi0g
ICAgcmV0dXJuIChoYXNMYXllcigpICYmIHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxh
eWVyKCktPnRyYW5zZm9ybSgpKSB8fCAoY29udGFpbmVyT2JqZWN0ICYmIGNvbnRhaW5lck9iamVj
dC0+c3R5bGUoKS0+aGFzUGVyc3BlY3RpdmUoKSk7CisgICAgcmV0dXJuIChoYXNMYXllcigpICYm
IHRvUmVuZGVyTGF5ZXJCYXNlKHRoaXMpLT5sYXllcigpLT50cmFuc2Zvcm0oKSkgfHwgKGNvbnRh
aW5lck9iamVjdCAmJiBjb250YWluZXJPYmplY3QtPnN0eWxlKCktPmhhc1BlcnNwZWN0aXZlKCkp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGFpbmVyT2JqZWN0KTsKICAgICByZXR1cm4g
aGFzVHJhbnNmb3JtKCk7CkBAIC0yMDc2LDE0ICsyMDc2LDE0IEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogY29udGFpbmVy
T2JqZWN0CiAgICAgdHJhbnNmb3JtLm1ha2VJZGVudGl0eSgpOwogICAgIHRyYW5zZm9ybS50cmFu
c2xhdGUob2Zmc2V0SW5Db250YWluZXIud2lkdGgoKSwgb2Zmc2V0SW5Db250YWluZXIuaGVpZ2h0
KCkpOwogICAgIFJlbmRlckxheWVyKiBsYXllcjsKLSAgICBpZiAoaGFzTGF5ZXIoKSAmJiAobGF5
ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpKSAmJiBsYXllci0+dHJh
bnNmb3JtKCkpCisgICAgaWYgKGhhc0xheWVyKCkgJiYgKGxheWVyID0gdG9SZW5kZXJMYXllckJh
c2UodGhpcyktPmxheWVyKCkpICYmIGxheWVyLT50cmFuc2Zvcm0oKSkKICAgICAgICAgdHJhbnNm
b3JtLm11bHRpcGx5KGxheWVyLT5jdXJyZW50VHJhbnNmb3JtKCkpOwogICAgIAogI2lmIEVOQUJM
RSgzRF9SRU5ERVJJTkcpCiAgICAgaWYgKGNvbnRhaW5lck9iamVjdCAmJiBjb250YWluZXJPYmpl
Y3QtPmhhc0xheWVyKCkgJiYgY29udGFpbmVyT2JqZWN0LT5zdHlsZSgpLT5oYXNQZXJzcGVjdGl2
ZSgpKSB7CiAgICAgICAgIC8vIFBlcnBzZWN0aXZlIG9uIHRoZSBjb250YWluZXIgYWZmZWN0cyB1
cywgc28gd2UgaGF2ZSB0byBmYWN0b3IgaXQgaW4gaGVyZS4KICAgICAgICAgQVNTRVJUKGNvbnRh
aW5lck9iamVjdC0+aGFzTGF5ZXIoKSk7Ci0gICAgICAgIEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVP
cmlnaW4gPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGNvbnRhaW5lck9iamVjdCktPmxheWVyKCkt
PnBlcnNwZWN0aXZlT3JpZ2luKCk7CisgICAgICAgIEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVPcmln
aW4gPSB0b1JlbmRlckxheWVyQmFzZShjb250YWluZXJPYmplY3QpLT5sYXllcigpLT5wZXJzcGVj
dGl2ZU9yaWdpbigpOwogCiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBlcnNwZWN0aXZl
TWF0cml4OwogICAgICAgICBwZXJzcGVjdGl2ZU1hdHJpeC5hcHBseVBlcnNwZWN0aXZlKGNvbnRh
aW5lck9iamVjdC0+c3R5bGUoKS0+cGVyc3BlY3RpdmUoKSk7CkBAIC0yMDk3LDcgKzIwOTcsNyBA
QCB2b2lkIFJlbmRlck9iamVjdDo6Z2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5k
ZXJPYmplY3QqIGNvbnRhaW5lck9iamVjdAogI2VuZGlmCiB9CiAKLUZsb2F0UXVhZCBSZW5kZXJP
YmplY3Q6OmxvY2FsVG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0UXVhZCYgbG9jYWxRdWFkLCBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCog
d2FzRml4ZWQpIGNvbnN0CitGbG9hdFF1YWQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVy
UXVhZChjb25zdCBGbG9hdFF1YWQmIGxvY2FsUXVhZCwgUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50
Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICAvLyBU
cmFjayB0aGUgcG9pbnQgYXQgdGhlIGNlbnRlciBvZiB0aGUgcXVhZCdzIGJvdW5kaW5nIGJveC4g
QXMgbWFwTG9jYWxUb0NvbnRhaW5lcigpIGNhbGxzIG9mZnNldEZyb21Db250YWluZXIoKSwKICAg
ICAvLyBpdCB3aWxsIHVzZSB0aGF0IHBvaW50IGFzIHRoZSByZWZlcmVuY2UgcG9pbnQgdG8gZGVj
aWRlIHdoaWNoIGNvbHVtbidzIHRyYW5zZm9ybSB0byBhcHBseSBpbiBtdWx0aXBsZS1jb2x1bW4g
YmxvY2tzLgpAQCAtMjEwOCw3ICsyMTA4LDcgQEAgRmxvYXRRdWFkIFJlbmRlck9iamVjdDo6bG9j
YWxUb0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiBsb2NhbFF1YWQsIFJlbmRlckIKICAg
ICByZXR1cm4gdHJhbnNmb3JtU3RhdGUubGFzdFBsYW5hclF1YWQoKTsKIH0KIAotRmxvYXRQb2lu
dCBSZW5kZXJPYmplY3Q6OmxvY2FsVG9Db250YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiBs
b2NhbFBvaW50LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBm
aXhlZCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CitGbG9hdFBvaW50IFJlbmRlck9iamVjdDo6bG9j
YWxUb0NvbnRhaW5lclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsUG9pbnQsIFJlbmRlckxh
eWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCogd2FzRml4ZWQpIGNv
bnN0CiB7CiAgICAgVHJhbnNmb3JtU3RhdGUgdHJhbnNmb3JtU3RhdGUoVHJhbnNmb3JtU3RhdGU6
OkFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uLCBsb2NhbFBvaW50KTsKICAgICBtYXBMb2NhbFRvQ29u
dGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZpeGVkLCB0cnVlLCB0cmFuc2Zvcm1TdGF0ZSwgQXBw
bHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CkBAIC0yMjAzLDcgKzIyMDMsNyBAQCBib29sIFJl
bmRlck9iamVjdDo6aGFzT3V0bGluZUFubm90YXRpb24oKSBjb25zdAogICAgIHJldHVybiBub2Rl
KCkgJiYgbm9kZSgpLT5pc0xpbmsoKSAmJiBkb2N1bWVudCgpLT5wcmludGluZygpOwogfQogCi1S
ZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBib29sKiByZXBhaW50Q29udGFpbmVyU2tpcHBlZCkgY29uc3QK
K1JlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojpjb250YWluZXIoUmVuZGVyTGF5ZXJCYXNlKiBy
ZXBhaW50Q29udGFpbmVyLCBib29sKiByZXBhaW50Q29udGFpbmVyU2tpcHBlZCkgY29uc3QKIHsK
ICAgICBpZiAocmVwYWludENvbnRhaW5lclNraXBwZWQpCiAgICAgICAgICpyZXBhaW50Q29udGFp
bmVyU2tpcHBlZCA9IGZhbHNlOwpAQCAtMjMyNCw3ICsyMzI0LDcgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OndpbGxCZURlc3Ryb3llZCgpCiAgICAgLy8gYmUgbW92ZWQgaW50byBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6ZGVzdHJveS4KICAgICBpZiAoaGFzTGF5ZXIoKSkgewogICAgICAgICBzZXRIYXNM
YXllcihmYWxzZSk7Ci0gICAgICAgIHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmRlc3Ry
b3lMYXllcigpOworICAgICAgICB0b1JlbmRlckxheWVyQmFzZSh0aGlzKS0+ZGVzdHJveUxheWVy
KCk7CiAgICAgfQogCiAgICAgc2V0QW5jZXN0b3JMaW5lQm94RGlydHkoZmFsc2UpOwpAQCAtMjQx
NSw3ICsyNDE1LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnVwZGF0ZURyYWdTdGF0ZShib29sIGRy
YWdPbikKIAogYm9vbCBSZW5kZXJPYmplY3Q6OmlzQ29tcG9zaXRlZCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGhhc0xheWVyKCkgJiYgdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIo
KS0+aXNDb21wb3NpdGVkKCk7CisgICAgcmV0dXJuIGhhc0xheWVyKCkgJiYgdG9SZW5kZXJMYXll
ckJhc2UodGhpcyktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOwogfQogCiBib29sIFJlbmRlck9i
amVjdDo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0LCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0RmlsdGVyIGhpdFRlc3RGaWx0ZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggMzk1MDJlYzE0NjE3
NzdkZWQ0ZDVkYTJmYzg0NWZjYjdlNjc0ZGM3OS4uM2M2NTkyYmJmYzRiMmY3OTBlZGY0NjhjOWVl
NTUzMzZhYWJmNTIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApA
QCAtNjEsNiArNjEsNyBAQCBjbGFzcyBSZW5kZXJJbmxpbmU7CiBjbGFzcyBSZW5kZXJCbG9jazsK
IGNsYXNzIFJlbmRlckZsb3dUaHJlYWQ7CiBjbGFzcyBSZW5kZXJMYXllcjsKK2NsYXNzIFJlbmRl
ckxheWVyQmFzZTsKIGNsYXNzIFJlbmRlclRhYmxlOwogY2xhc3MgUmVuZGVyVGhlbWU7CiBjbGFz
cyBUcmFuc2Zvcm1TdGF0ZTsKQEAgLTMwOCw2ICszMDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzRnJhbWVTZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc0xheWVyQmFzZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzTGlzdEJveCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGlzTGlzdEl0ZW0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc0xpc3RNYXJrZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNTc3LDcg
KzU3OSw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBvYmplY3QgY29udGFpbmluZyB0
aGlzIG9uZS4gQ2FuIGJlIGRpZmZlcmVudCBmcm9tIHBhcmVudCBmb3IgcG9zaXRpb25lZCBlbGVt
ZW50cy4KICAgICAvLyBJZiByZXBhaW50Q29udGFpbmVyIGFuZCByZXBhaW50Q29udGFpbmVyU2tp
cHBlZCBhcmUgbm90IG51bGwsIG9uIHJldHVybiAqcmVwYWludENvbnRhaW5lclNraXBwZWQKICAg
ICAvLyBpcyB0cnVlIGlmIHRoZSByZW5kZXJlciByZXR1cm5lZCBpcyBhbiBhbmNlc3RvciBvZiBy
ZXBhaW50Q29udGFpbmVyLgotICAgIFJlbmRlck9iamVjdCogY29udGFpbmVyKFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gMCwgYm9vbCogcmVwYWludENvbnRhaW5lclNr
aXBwZWQgPSAwKSBjb25zdDsKKyAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5lcihSZW5kZXJMYXll
ckJhc2UqIHJlcGFpbnRDb250YWluZXIgPSAwLCBib29sKiByZXBhaW50Q29udGFpbmVyU2tpcHBl
ZCA9IDApIGNvbnN0OwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGhvdmVyQW5jZXN0b3Io
KSBjb25zdCB7IHJldHVybiBwYXJlbnQoKTsgfQogCkBAIC02NzMsOCArNjc1LDggQEAgcHVibGlj
OgogICAgIH0KIAogICAgIC8vIENvbnZlcnQgYSBsb2NhbCBxdWFkIGludG8gdGhlIGNvb3JkaW5h
dGUgc3lzdGVtIG9mIGNvbnRhaW5lciwgdGFraW5nIHRyYW5zZm9ybXMgaW50byBhY2NvdW50Lgot
ICAgIEZsb2F0UXVhZCBsb2NhbFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmLCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCA9IGZhbHNlLCBi
b29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwotICAgIEZsb2F0UG9pbnQgbG9jYWxUb0NvbnRhaW5l
clBvaW50KGNvbnN0IEZsb2F0UG9pbnQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCBmaXhlZCA9IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0Owor
ICAgIEZsb2F0UXVhZCBsb2NhbFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmLCBSZW5k
ZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQgPSBmYWxzZSwgYm9vbCog
d2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICBGbG9hdFBvaW50IGxvY2FsVG9Db250YWluZXJQb2lu
dChjb25zdCBGbG9hdFBvaW50JiwgUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyLCBi
b29sIGZpeGVkID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CiAKICAgICAvLyBS
ZXR1cm4gdGhlIG9mZnNldCBmcm9tIHRoZSBjb250YWluZXIoKSByZW5kZXJlciAoZXhjbHVkaW5n
IHRyYW5zZm9ybXMpLiBJbiBtdWx0aS1jb2x1bW4gbGF5b3V0LAogICAgIC8vIGRpZmZlcmVudCBv
ZmZzZXRzIGFwcGx5IGF0IGRpZmZlcmVudCBwb2ludHMsIHNvIHJldHVybiB0aGUgb2Zmc2V0IHRo
YXQgYXBwbGllcyB0byB0aGUgZ2l2ZW4gcG9pbnQuCkBAIC03MTUsMTMgKzcxNywxMyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGdldFRleHREZWNvcmF0aW9uQ29sb3JzKGludCBkZWNvcmF0aW9ucywg
Q29sb3ImIHVuZGVybGluZSwgQ29sb3ImIG92ZXJsaW5lLCBDb2xvciYgbGluZXRocm91Z2gsIGJv
b2wgcXVpcmtzTW9kZSA9IGZhbHNlLCBib29sIGZpcnN0bGluZVN0eWxlID0gZmFsc2UpOwogCi0g
ICAgLy8gUmV0dXJuIHRoZSBSZW5kZXJCb3ggaW4gdGhlIGNvbnRhaW5lciBjaGFpbiB3aGljaCBp
cyByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgdGhpcyBvYmplY3QsIG9yIDAKKyAgICAvLyBSZXR1
cm4gdGhlIFJlbmRlckxheWVyQmFzZSBpbiB0aGUgY29udGFpbmVyIGNoYWluIHdoaWNoIGlzIHJl
c3BvbnNpYmxlIGZvciBwYWludGluZyB0aGlzIG9iamVjdCwgb3IgMAogICAgIC8vIGlmIHBhaW50
aW5nIGlzIHJvb3QtcmVsYXRpdmUuIFRoaXMgaXMgdGhlIGNvbnRhaW5lciB0aGF0IHNob3VsZCBi
ZSBwYXNzZWQgdG8gdGhlICdmb3JSZXBhaW50JwogICAgIC8vIG1ldGhvZHMuCi0gICAgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIGNvbnRhaW5lckZvclJlcGFpbnQoKSBjb25zdDsKKyAgICBSZW5kZXJM
YXllckJhc2UqIGNvbnRhaW5lckZvclJlcGFpbnQoKSBjb25zdDsKICAgICAvLyBBY3R1YWxseSBk
byB0aGUgcmVwYWludCBvZiByZWN0IHIgZm9yIHRoaXMgb2JqZWN0IHdoaWNoIGhhcyBiZWVuIGNv
bXB1dGVkIGluIHRoZSBjb29yZGluYXRlIHNwYWNlCiAgICAgLy8gb2YgcmVwYWludENvbnRhaW5l
ci4gSWYgcmVwYWludENvbnRhaW5lciBpcyAwLCByZXBhaW50IHZpYSB0aGUgdmlldy4KLSAgICB2
b2lkIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOworICAg
IHZvaWQgcmVwYWludFVzaW5nQ29udGFpbmVyKFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRh
aW5lciwgY29uc3QgTGF5b3V0UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOwogICAgIAog
ICAgIC8vIFJlcGFpbnQgdGhlIGVudGlyZSBvYmplY3QuICBDYWxsZWQgd2hlbiwgZS5nLiwgdGhl
IGNvbG9yIG9mIGEgYm9yZGVyIGNoYW5nZXMsIG9yIHdoZW4gYSBib3JkZXIKICAgICAvLyBzdHls
ZSBjaGFuZ2VzLgpAQCAtNzMxLDcgKzczMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcGFpbnRS
ZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOwogCiAg
ICAgLy8gUmVwYWludCBvbmx5IGlmIG91ciBvbGQgYm91bmRzIGFuZCBuZXcgYm91bmRzIGFyZSBk
aWZmZXJlbnQuIFRoZSBjYWxsZXIgbWF5IHBhc3MgaW4gbmV3Qm91bmRzIGFuZCBuZXdPdXRsaW5l
Qm94IGlmIHRoZXkgYXJlIGtub3duLgotICAgIGJvb2wgcmVwYWludEFmdGVyTGF5b3V0SWZOZWVk
ZWQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFJl
Y3QmIG9sZEJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgb2xkT3V0bGluZUJveCwgY29uc3QgTGF5
b3V0UmVjdCogbmV3Qm91bmRzUHRyID0gMCwgY29uc3QgTGF5b3V0UmVjdCogbmV3T3V0bGluZUJv
eFB0ciA9IDApOworICAgIGJvb2wgcmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoUmVuZGVyTGF5
ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRCb3VuZHMsIGNv
bnN0IExheW91dFJlY3QmIG9sZE91dGxpbmVCb3gsIGNvbnN0IExheW91dFJlY3QqIG5ld0JvdW5k
c1B0ciA9IDAsIGNvbnN0IExheW91dFJlY3QqIG5ld091dGxpbmVCb3hQdHIgPSAwKTsKIAogICAg
IC8vIFJlcGFpbnQgb25seSBpZiB0aGUgb2JqZWN0IG1vdmVkLgogICAgIHZpcnR1YWwgdm9pZCBy
ZXBhaW50RHVyaW5nTGF5b3V0SWZNb3ZlZChjb25zdCBMYXlvdXRSZWN0Jik7CkBAIC03NDgsOCAr
NzUwLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY2xpcHBlZE92ZXJmbG93UmVjdEZvclJl
cGFpbnQoMCk7CiAgICAgfQogICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkQWJzb2x1dGVDbGlwcGVk
T3ZlcmZsb3dSZWN0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRs
aW5lV2lkdGgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0Owor
ICAgIHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckxh
eWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0
OwogCiAgICAgLy8gR2l2ZW4gYSByZWN0IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNl
LCBjb21wdXRlIGEgcmVjdCBzdWl0YWJsZSBmb3IgcmVwYWludGluZwogICAgIC8vIHRoYXQgcmVj
dCBpbiB2aWV3IGNvb3JkaW5hdGVzLgpAQCAtNzU5LDggKzc2MSw4IEBAIHB1YmxpYzoKICAgICB9
CiAgICAgLy8gR2l2ZW4gYSByZWN0IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNlLCBj
b21wdXRlIGEgcmVjdCBzdWl0YWJsZSBmb3IgcmVwYWludGluZwogICAgIC8vIHRoYXQgcmVjdCBp
biB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiByZXBhaW50Q29udGFpbmVyLgotICAgIHZpcnR1YWwg
dm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCA9
IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJl
bmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQg
PSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBh
aW50KFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50
UmVjdCwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKIAogICAgIC8vIElmIG11bHRpcGxlLWNv
bHVtbiBsYXlvdXQgcmVzdWx0cyBpbiBhcHBseWluZyBhbiBvZmZzZXQgdG8gdGhlIGdpdmVuIHBv
aW50LCBhZGQgdGhlIHNhbWUKICAgICAvLyBvZmZzZXQgdG8gdGhlIGdpdmVuIHNpemUuCkBAIC04
MDIsNyArODA0LDcgQEAgcHVibGljOgogICAgIC8vIEEgc2luZ2xlIHJlY3RhbmdsZSB0aGF0IGVu
Y29tcGFzc2VzIGFsbCBvZiB0aGUgc2VsZWN0ZWQgb2JqZWN0cyB3aXRoaW4gdGhpcyBvYmplY3Qu
ICBVc2VkIHRvIGRldGVybWluZSB0aGUgdGlnaHRlc3QKICAgICAvLyBwb3NzaWJsZSBib3VuZGlu
ZyBib3ggZm9yIHRoZSBzZWxlY3Rpb24uCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0KGJv
b2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSB7IHJldHVybiBzZWxlY3Rpb25SZWN0Rm9y
UmVwYWludCgwLCBjbGlwVG9WaXNpYmxlQ29udGVudCk7IH0KLSAgICB2aXJ0dWFsIExheW91dFJl
Y3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVwYWlu
dENvbnRhaW5lciovLCBib29sIC8qY2xpcFRvVmlzaWJsZUNvbnRlbnQqLyA9IHRydWUpIHsgcmV0
dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0
Rm9yUmVwYWludChSZW5kZXJMYXllckJhc2UqIC8qcmVwYWludENvbnRhaW5lciovLCBib29sIC8q
Y2xpcFRvVmlzaWJsZUNvbnRlbnQqLyA9IHRydWUpIHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQog
CiAgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgYm9vbCBoYXNTZWxlY3RlZENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gc2Vs
ZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lOyB9CkBAIC04NzIsNyArODc0LDcgQEAgcHVi
bGljOgogICAgIC8vIE1hcCBwb2ludHMgYW5kIHF1YWRzIHRocm91Z2ggZWxlbWVudHMsIHBvdGVu
dGlhbGx5IHZpYSAzZCB0cmFuc2Zvcm1zLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gY2FsbCB0
aGVzZSBkaXJlY3RseTsgdXNlCiAgICAgLy8gbG9jYWxUb0Fic29sdXRlL2Fic29sdXRlVG9Mb2Nh
bCBtZXRob2RzIGluc3RlYWQuCiAgICAgZW51bSBBcHBseUNvbnRhaW5lckZsaXBPck5vdCB7IERv
Tm90QXBwbHlDb250YWluZXJGbGlwLCBBcHBseUNvbnRhaW5lckZsaXAgfTsKLSAgICB2aXJ0dWFs
IHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYs
IEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNG
aXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29s
IGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlD
b250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMs
IFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CiAKICAgICBib29sIHNob3VsZFVzZVRyYW5zZm9ybUZy
b21Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXIpIGNvbnN0OwpAQCAtOTE0
LDcgKzkxNiw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVk
KCk7CiAgICAgdm9pZCBhcmVuYURlbGV0ZShSZW5kZXJBcmVuYSosIHZvaWQqIG9iamVjdEJhc2Up
OwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgTGF5b3V0UG9pbnQqIC8qY2Fj
aGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVyKi8gPSAwKSBjb25zdCB7IHJldHVybiBMYXlvdXRS
ZWN0KCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQo
UmVuZGVyTGF5ZXJCYXNlKiAvKnJlcGFpbnRDb250YWluZXIqLywgTGF5b3V0UG9pbnQqIC8qY2Fj
aGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVyKi8gPSAwKSBjb25zdCB7IHJldHVybiBMYXlvdXRS
ZWN0KCk7IH0KIAogcHJpdmF0ZToKICAgICBSZW5kZXJTdHlsZSogZmlyc3RMaW5lU3R5bGVTbG93
Q2FzZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5j
cHAKaW5kZXggZmQ2Yjg4MWIzMWY4MzMyYmY0MTY4Mjg0MjE0NjFmZjAxNDgxOWRlNi4uNGVkZjRi
M2UyNjZmYjY4NWVmYmI5NDA4NzQxNWFiODc1MmE2MjkwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgVmlzaWJsZVBv
c2l0aW9uIFJlbmRlclJlcGxhY2VkOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50
JiBwb2ludCkKICAgICByZXR1cm4gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KHBvaW50KTsK
IH0KIAotTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJs
ZUNvbnRlbnQpCitMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpzZWxlY3Rpb25SZWN0Rm9yUmVw
YWludChSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJs
ZUNvbnRlbnQpCiB7CiAgICAgQVNTRVJUKCFuZWVkc0xheW91dCgpKTsKIApAQCAtNTI3LDcgKzUy
Nyw3IEBAIGJvb2wgUmVuZGVyUmVwbGFjZWQ6OmlzU2VsZWN0ZWQoKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6Y2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNv
bnN0CitMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludChSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgaWYg
KHN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYmICFlbmNsb3NpbmdMYXllcigpLT5o
YXNWaXNpYmxlQ29udGVudCgpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAppbmRleCA5ZWJjNjM0YjAzMjM5MTQ4
ZTUyYzFmYzZiNjVkYWIzZDZkNWJkOGJkLi5jMmNhNzcxNjNjZDk0NzNkZDM5MzU3MGFkNjZkMDEw
ZDg3ZjIzNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApA
QCAtNzAsMTMgKzcwLDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzKCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSB7IH0KIAotICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lcikgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0
IExheW91dFBvaW50Jik7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVh
ZigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxl
Y3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpOworICAgIHZpcnR1YWwgTGF5b3V0
UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250
YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKTsKICAgICB2b2lkIGNvbXB1
dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uRm9yUmVuZGVyQm94KFJlbmRlckJveCosIEZsb2F0
U2l6ZSYgaW50cmluc2ljU2l6ZSwgZG91YmxlJiBpbnRyaW5zaWNSYXRpbywgYm9vbCYgaXNQZXJj
ZW50YWdlSW50cmluc2ljU2l6ZSkgY29uc3Q7CiAKICAgICBJbnRTaXplIG1faW50cmluc2ljU2l6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25J
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VsZWN0aW9uSW5mby5oCmlu
ZGV4IDg5MzZhMzc3ZTY2NTQzMDFjYTVhNGNmNDY2ZDNiNzk1Yjk4ZDM5ZDcuLjkwMWZiNThlZjAx
OTBiY2VmZjFlYzFiMDYxMDNmZTAwYzg0YzRjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uaApAQCAtNDgsMTIgKzQ4LDEyIEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgCiAgICAgUmVuZGVyT2JqZWN0KiBvYmplY3QoKSBjb25zdCB7IHJldHVybiBt
X29iamVjdDsgfQotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXBhaW50Q29udGFpbmVyOyB9CisgICAgUmVuZGVyTGF5ZXJCYXNl
KiByZXBhaW50Q29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50Q29udGFpbmVyOyB9
CiAgICAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGU7IH0KIAogcHJvdGVjdGVkOgogICAgIFJlbmRlck9iamVjdCogbV9vYmplY3Q7Ci0g
ICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG1fcmVwYWludENvbnRhaW5lcjsKKyAgICBSZW5kZXJM
YXllckJhc2UqIG1fcmVwYWludENvbnRhaW5lcjsKICAgICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlv
blN0YXRlIG1fc3RhdGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZUNlbGwuY3BwCmluZGV4IGVjMzNhN2M5ZmJkYjEwZTk0MThjNzkzMmVkZTgyZTQ2MWQ1Y2Fi
ZTIuLjI4N2JlMGIzNTM3MWJhY2NmM2M2YTk4MTA5NWQ4ZTE5ZjE2ZTViNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0yNTAsNyArMjUwLDcg
QEAgTGF5b3V0U2l6ZSBSZW5kZXJUYWJsZUNlbGw6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVy
T2JqZWN0KiBvLCBjb25zdCBMYXlvdXRQb2kKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1MYXlv
dXRSZWN0IFJlbmRlclRhYmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJl
bmRlclRhYmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJC
YXNlKiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIC8vIElmIHRoZSB0YWJsZSBncmlk
IGlzIGRpcnR5LCB3ZSBjYW5ub3QgZ2V0IHJlbGlhYmxlIGluZm9ybWF0aW9uIGFib3V0IGFkam9p
bmluZyBjZWxscywKICAgICAvLyBzbyB3ZSBpZ25vcmUgb3V0c2lkZSBib3JkZXJzLiBUaGlzIHNo
b3VsZCBub3QgYmUgYSBwcm9ibGVtIGJlY2F1c2UgaXQgbWVhbnMgdGhhdApAQCAtMzAxLDcgKzMw
MSw3IEBAIExheW91dFJlY3QgUmVuZGVyVGFibGVDZWxsOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCoKICAgICByZXR1cm4gcjsKIH0KIAotdm9pZCBS
ZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgciwgYm9vbCBmaXhlZCkgY29uc3QKK3Zv
aWQgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJCYXNl
KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByLCBib29sIGZpeGVkKSBjb25zdAogewog
ICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09IHRoaXMpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAppbmRleCBkYWM4YTc2MDZhNzg3
MTA1YmM1ZWQzYzgzNTllNWZiNjY5YmI0MTBmLi5iYjUxYzFjZTgzMzEwOTA1OTdlMDZjZWM2Y2Qx
NmU4YmNkNmVmNmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5oCkBAIC0xNTMsOCArMTUzLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgYm94U2hh
ZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwg
SW5saW5lRmxvd0JveCopIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBMYXlvdXRTaXpl
IG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UG9pbnQmKSBj
b25zdDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0Owor
ICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5k
ZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyLCBM
YXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKIAogICAgIGludCBib3JkZXJI
YWxmTGVmdChib29sIG91dGVyKSBjb25zdDsKICAgICBpbnQgYm9yZGVySGFsZlJpZ2h0KGJvb2wg
b3V0ZXIpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ29sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5j
cHAKaW5kZXggNjQ5YWFhYWJiZDJhMzcxNjM4MTllYWU1ZDI2NzU4NmY3YWVjYWE2NS4uZjljNjZj
MWFhMGY4M2ZjZThjMTEwMmZhOGVkOTJiMDlkMDYxMDJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGJvb2wgUmVuZGVy
VGFibGVDb2w6OmNhbkhhdmVDaGlsZHJlbigpIGNvbnN0CiAgICAgcmV0dXJuIHN0eWxlKCktPmRp
c3BsYXkoKSA9PSBUQUJMRV9DT0xVTU5fR1JPVVA7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyVGFi
bGVDb2w6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJUYWJsZUNvbDo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFp
bmVyKSBjb25zdAogewogICAgIC8vIEZvciBub3csIGp1c3QgcmVwYWludCB0aGUgd2hvbGUgdGFi
bGUuCiAgICAgLy8gRklYTUU6IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMsIGUuZy4sIG5l
ZWQgdG8gcmVwYWludCBhbGwgdGhlIGNlbGxzIHRoYXQgd2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ29sLmgKaW5kZXggZGEwMzdiODYzMTk1NzBkNDg1NjIwYWY3YzY2MTY1
NWU5MTlmODE4MC4uZTYzY2E5YzBhYTc4MmFlYzU2NGVmNTdhZmRkZWRlOTkyZmZkYjlkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKQEAgLTU2LDcgKzU2LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFs
IExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJCYXNl
KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2Vk
KFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVS
b3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAppbmRl
eCBkOTg4OTAwOGI2ODg2ODdkYTcxMzBjMGYwN2UyZDM5NTY2NTBhNGM5Li41YzA4NGViYTFkMGQ2
YWNiMTllYTQ2NzhkZTcwZmUxNGZkN2YwM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVJvdy5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFJlbmRlclRhYmxl
Um93OjpsYXlvdXQoKQogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0KIAotTGF5b3V0UmVj
dCBSZW5kZXJUYWJsZVJvdzo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclRh
YmxlUm93OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllckJhc2UqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHBhcmVudCgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAppbmRleCAwNDY5NjYwN2Q2OTI3NWNh
MWY1ODhlZDFiMjU2MjZiZDkzNjFiMWI4Li4wZjEwNmM2MGUyMjVjMzE0YTgzOTViODYzMGM0ZTFj
MTk4ZTE2NWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaApA
QCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJl
bmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKICAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJl
cGFpbnQoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0
JiwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbik7CiAKICAgICB2aXJ0dWFsIGJvb2wg
cmVxdWlyZXNMYXllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGlzVHJhbnNwYXJlbnQoKSB8
fCBoYXNPdmVyZmxvd0NsaXAoKSB8fCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNIaWRkZW5CYWNrZmFj
ZSgpIHx8IGhhc01hc2soKSB8fCBoYXNGaWx0ZXIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwCmluZGV4IDA2M2VmZDViOGIwNGU2MTQzNjYxZjA3YTk4ODE4ZTM0ZGZh
NDg5NzUuLjdlYjg3ZDM4NzUyM2U4NzlhYjBjMzI5ODVhODQ5MmZlOTI0MmI0OWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTE1MzYsNyArMTUzNiw3IEBAIExh
eW91dFJlY3QgUmVuZGVyVGV4dDo6bGluZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29u
c3QKICAgICByZXR1cm4gcmVjdDsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXJUb1JlcGFpbnQgPSBjb250YWluaW5nQmxvY2soKTsKIApA
QCAtMTU1Miw3ICsxNTUyLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWkKICAgICByZXR1cm4g
cmVuZGVyZXJUb1JlcGFpbnQtPmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRD
b250YWluZXIpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclRleHQ6OnNlbGVjdGlvblJlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBU
b1Zpc2libGVDb250ZW50KQorTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpzZWxlY3Rpb25SZWN0Rm9y
UmVwYWludChSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlz
aWJsZUNvbnRlbnQpCiB7CiAgICAgQVNTRVJUKCFuZWVkc0xheW91dCgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKaW5kZXggOTA0M2IwOTU0NzY0OGIyODdiNjhhZTdlZTg2
Yjk1ODU3NGYyYzllMC4uN2UxMWNkNjlmODU4MjUwNGUxZGUwNjVkOWJjNjE1NDgyZmYyNTEzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC05NywxMyArOTcsMTMgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0
aW9uU3RhdGUgcyk7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zp
c2libGVDb250ZW50ID0gdHJ1ZSk7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJl
Y3RGb3JSZXBhaW50KFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlw
VG9WaXNpYmxlQ29udGVudCA9IHRydWUpOwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbENh
cmV0UmVjdChJbmxpbmVCb3gqLCBpbnQgY2FyZXRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lk
dGhUb0VuZE9mTGluZSA9IDApOwogCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkxlZnQo
KSBjb25zdCB7IHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luTGVm
dCgpLCAwLCB2aWV3KCkpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpblJpZ2h0
KCksIDAsIHZpZXcoKSk7IH0KIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikg
Y29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CiAKICAgICBJbmxp
bmVUZXh0Qm94KiBmaXJzdFRleHRCb3goKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0VGV4dEJveDsg
fQogICAgIElubGluZVRleHRCb3gqIGxhc3RUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0
VGV4dEJveDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDRh
M2EyYmM4MzE0YjFjOTA3ZGU2NTVhNTYyZDgyNWEzYTYxYTc2YzMuLmNlOWM4YTIxMGM5YTVmMjA0
YzMyYWQ2OTExZGFkNTRlYWI2MmVkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFJlbmRlclZpZXc6OmxheW91dCgpCiAg
ICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCi12b2lkIFJlbmRlclZpZXc6Om1hcExvY2Fs
VG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wg
Zml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRl
LCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJl
bmRlclZpZXc6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29u
dGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0
cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBj
b25zdAogewogICAgIC8vIElmIGEgY29udGFpbmVyIHdhcyBzcGVjaWZpZWQsIGFuZCB3YXMgbm90
IDAgb3IgdGhlIFJlbmRlclZpZXcsCiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgaGF2ZSBmb3VuZCBp
dCBieSBub3cuCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogCiBzdGF0
aWMgaW5saW5lIGJvb2wgaXNDb21wb3NpdGVkKFJlbmRlck9iamVjdCogb2JqZWN0KQogewotICAg
IHJldHVybiBvYmplY3QtPmhhc0xheWVyKCkgJiYgdG9SZW5kZXJCb3hNb2RlbE9iamVjdChvYmpl
Y3QpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKKyAgICByZXR1cm4gb2JqZWN0LT5oYXNMYXll
cigpICYmIHRvUmVuZGVyTGF5ZXJCYXNlKG9iamVjdCktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgp
OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgcmVuZGVyZXJPYnNjdXJlc0JhY2tncm91bmQoUmVu
ZGVyT2JqZWN0KiBvYmplY3QpCkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBSZW5kZXJWaWV3Ojpy
ZXBhaW50UmVjdGFuZ2xlSW5WaWV3QW5kQ29tcG9zaXRlZExheWVycyhjb25zdCBMYXlvdXRSZWN0
JiB1ciwKICNlbmRpZgogfQogCi12b2lkIFJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVj
dCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBh
aW50KFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwg
Ym9vbCBmaXhlZCkgY29uc3QKIHsKICAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVk
LCBhbmQgd2FzIG5vdCAwIG9yIHRoZSBSZW5kZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hvdWxk
IGhhdmUgZm91bmQgaXQgYnkgbm93LgpAQCAtMzcxLDIwICszNzEsMjAgQEAgdm9pZCBSZW5kZXJW
aWV3Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIEwKICAgICAgICAgcmVjdC5tb3ZlKG1fZnJhbWVWaWV3LT5zY3JvbGxYRm9yRml4
ZWRQb3NpdGlvbigpLCBtX2ZyYW1lVmlldy0+c2Nyb2xsWUZvckZpeGVkUG9zaXRpb24oKSk7CiAg
ICAgICAgIAogICAgIC8vIEFwcGx5IG91ciB0cmFuc2Zvcm0gaWYgd2UgaGF2ZSBvbmUgKGJlY2F1
c2Ugb2YgZnVsbCBwYWdlIHpvb21pbmcpLgotICAgIGlmICghcmVwYWludENvbnRhaW5lciAmJiBt
X2xheWVyICYmIG1fbGF5ZXItPnRyYW5zZm9ybSgpKQotICAgICAgICByZWN0ID0gbV9sYXllci0+
dHJhbnNmb3JtKCktPm1hcFJlY3QocmVjdCk7CisgICAgaWYgKCFyZXBhaW50Q29udGFpbmVyICYm
IGxheWVyKCkgJiYgbGF5ZXIoKS0+dHJhbnNmb3JtKCkpCisgICAgICAgIHJlY3QgPSBsYXllcigp
LT50cmFuc2Zvcm0oKS0+bWFwUmVjdChyZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3OjphYnNv
bHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKLSAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50
UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgbV9sYXllci0+c2l6ZSgpKSk7CisgICAgcmVjdHMuYXBw
ZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIGxheWVyKCktPnNpemUo
KSkpOwogfQogCiB2b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAod2FzRml4ZWQpCiAg
ICAgICAgICp3YXNGaXhlZCA9IGZhbHNlOwotICAgIHF1YWRzLmFwcGVuZChGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBtX2xheWVyLT5zaXplKCkpKTsKKyAgICBxdWFkcy5hcHBlbmQoRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgbGF5ZXIoKS0+c2l6ZSgpKSk7CiB9CiAKIHN0YXRpYyBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgdW5zaWduZWQg
b2Zmc2V0KQpAQCAtNDI5LDcgKzQyOSw3IEBAIEludFJlY3QgUmVuZGVyVmlldzo6c2VsZWN0aW9u
Qm91bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpIGNvbnN0CiAgICAgICAgIFJlbmRlclNl
bGVjdGlvbkluZm8qIGluZm8gPSBpLT5zZWNvbmQ7CiAgICAgICAgIC8vIFJlbmRlclNlbGVjdGlv
bkluZm86OnJlY3QoKSBpcyBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHJlcGFpbnRDb250YWlu
ZXIsIHNvIG1hcCB0byBwYWdlIGNvb3JkaW5hdGVzLgogICAgICAgICBMYXlvdXRSZWN0IGN1cnJS
ZWN0ID0gaW5mby0+cmVjdCgpOwotICAgICAgICBpZiAoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIgPSBpbmZvLT5yZXBhaW50Q29udGFpbmVyKCkpIHsKKyAgICAgICAgaWYg
KFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciA9IGluZm8tPnJlcGFpbnRDb250YWlu
ZXIoKSkgewogICAgICAgICAgICAgRmxvYXRRdWFkIGFic1F1YWQgPSByZXBhaW50Q29udGFpbmVy
LT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChjdXJyUmVjdCkpOwogICAgICAgICAgICAg
Y3VyclJlY3QgPSBhYnNRdWFkLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7IAogICAgICAgICB9CkBA
IC01MzUsNyArNTM1LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVuZGVyT2Jq
ZWN0KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGUKICAgICB9CiAKICAgICBp
ZiAoYmxvY2tSZXBhaW50TW9kZSAhPSBSZXBhaW50Tm90aGluZykKLSAgICAgICAgbV9sYXllci0+
Y2xlYXJCbG9ja1NlbGVjdGlvbkdhcHNCb3VuZHMoKTsKKyAgICAgICAgbGF5ZXIoKS0+Y2xlYXJC
bG9ja1NlbGVjdGlvbkdhcHNCb3VuZHMoKTsKIAogICAgIC8vIE5vdyB0aGF0IHRoZSBzZWxlY3Rp
b24gc3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBmb3IgdGhlIG5ldyBvYmplY3RzLCB3YWxrIHRoZW0g
YWdhaW4gYW5kCiAgICAgLy8gcHV0IHRoZW0gaW4gdGhlIG5ldyBvYmplY3RzIGxpc3QuCkBAIC02
MzIsNyArNjMyLDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpnZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0
KiYgc3RhcnRSZW5kZXJlciwgaW50JiBzdGFydE9mZnNldCwgUmUKIAogdm9pZCBSZW5kZXJWaWV3
OjpjbGVhclNlbGVjdGlvbigpCiB7Ci0gICAgbV9sYXllci0+cmVwYWludEJsb2NrU2VsZWN0aW9u
R2FwcygpOworICAgIGxheWVyKCktPnJlcGFpbnRCbG9ja1NlbGVjdGlvbkdhcHMoKTsKICAgICBz
ZXRTZWxlY3Rpb24oMCwgLTEsIDAsIC0xLCBSZXBhaW50TmV3TWludXNPbGQpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCAxMzcxZTEzNmU4OGU0MmE0MTdjN2Q3
YjU5OTU4MzVhYWM1Y2M4MGJiLi5lZDE4MzJhYjQ4ODk4MjA5NDk0NzRiODliYzZkMGQ0OTMxYmIz
NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTY5LDcgKzY5LDcg
QEAgcHVibGljOgogCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcoKSBjb25zdCB7IHJldHVybiBt
X2ZyYW1lVmlldzsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wg
Zml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVw
YWludChSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29s
IGZpeGVkID0gZmFsc2UpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCByZXBhaW50Vmlld1JlY3Rh
bmdsZShjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSk7CiAgICAgLy8g
UmVwYWludCB0aGUgdmlldywgYW5kIGFsbCBjb21wb3NpdGVkIGxheWVycyB0aGF0IGludGVyc2Vj
dCB0aGUgZ2l2ZW4gYWJzb2x1dGUgcmVjdGFuZ2xlLgogICAgIC8vIEZJWE1FOiBpZGVhbGx5IHdl
J2QgbmV2ZXIgaGF2ZSB0byBkbyB0aGlzLCBpZiBhbGwgcmVwYWludHMgYXJlIGNvbnRhaW5lci1y
ZWxhdGl2ZS4KQEAgLTE4Nyw3ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVGaXhl
ZFBvc2l0aW9uZWRPYmplY3QoUmVuZGVyQm94Kik7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFs
IHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYs
IEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNG
aXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29s
IGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlD
b250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMs
IFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzQ29sdW1u
cyhpbnQgZGVzaXJlZENvbHVtbkNvdW50KSBjb25zdCBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAK
aW5kZXggMjkxOGZlM2E5N2U4NDdmY2Y1MzIwNmRjYWU1Y2M2MjQ0OTNmYmYwNi4uMWI5NmNmZTI5
YjJhYzBiMmEzYTZhZWVhNmQ1NDAzYTA1MjA4MjY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCkBAIC04Nywx
MiArODcsMTIgQEAgdm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgIH0KIH0KIAotTGF5b3V0UmVjdCBS
ZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVy
TGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5k
ZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29u
dGFpbmVyKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpjb21wdXRlRmxvYXRS
ZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxv
YXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJCYXNlKiBy
ZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25z
dAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHRo
aXMsIHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7CiB9CkBAIC0xODgsNyAr
MTg4LDcgQEAgYm9vbCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2RlQXRQb2ludChjb25zdCBI
aXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qIGZpeGVkICovLCBib29sIC8q
IHVzZVRyYW5zZm9ybXMgKi8sIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlD
b250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdG
b3JlaWduT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVyQmFzZSogcmVwYWlu
dENvbnRhaW5lciwgYm9vbCAvKiBmaXhlZCAqLywgYm9vbCAvKiB1c2VUcmFuc2Zvcm1zICovLCBU
cmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBi
b29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRv
Q29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCB3YXNGaXhl
ZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ZvcmVpZ25PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Rm9yZWlnbk9iamVjdC5oCmluZGV4IDRhMWE4YWMyNTg2ZWYzNzM2ODFmYjYyY2FmYWYyZjUzODQ5
ZGM5NWQuLjZjMmQ1MTgyNTBmMTNiY2I0ZGRlZWIyNzI2ZmFkOWRhMDhjOWEyODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5oCkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0
IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVj
dCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRh
aW5lcikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50
KFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhl
ZCA9IGZhbHNlKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CkBAIC01NCw3
ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0
VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5D
b250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFj
dGlvbik7CiAgICAgdmlydHVhbCBib29sIGlzU1ZHRm9yZWlnbk9iamVjdCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRy
YW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBs
eUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVy
LCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlD
b250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0g
MCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBt
X25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgKaW5kZXgg
YjkwYWI1MDgxMDQxMTM4NDE0MWMzMjM4OTQ3NmUzYzg0NDM0MDY1Yi4uMmQwMWM4ZGRkNjc3OGI2
YTE1ZDlhNTZlMzg4ZjZiODgwMjEyNWUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1
YmxpYzoKICAgICAvLyBUaGlzIG92ZXJyaWRlcyBhcmUgbmVlZGVkIHRvIHByZXZlbnQgQVNTRVJU
cyBvbiA8c3ZnPjxzdG9wIC8+PC9zdmc+CiAgICAgLy8gUmVuZGVyT2JqZWN0J3MgZGVmYXVsdCBp
bXBsZW1lbnRhdGlvbnMgQVNTRVJUX05PVF9SRUFDSEVEKCkKICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MDAKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qg
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqKSBjb25z
dCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJCYXNlKikgY29uc3QgeyByZXR1cm4g
TGF5b3V0UmVjdCgpOyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3go
KSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0
cm9rZUJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KICAgICB2aXJ0
dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0
dXJuIEZsb2F0UmVjdCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAppbmRleCBmMjZjNWZjNjFhMzdmODIwN2Q0
ZDY0OWJlNjgwOWQ1MmEyZjg4MjVmLi4zMTU2MDAwMmNlOTQ0YThiYzg2NzRhZDJhOGQ0YjExMGI0
NzFmM2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0hpZGRlbkNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAg
IAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCopIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQorICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJM
YXllckJhc2UqKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KICAgICB2aXJ0dWFsIHZv
aWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhp
dFRlc3RBY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmUuY3BwCmluZGV4IDk4YWY4ZTk1OGIyOGM0NmE4OTM5MjU1MGJlYTBjYWVmZmY2MGNj
MDYuLjhlZmZlOGMyMzRhOWU2NjcxY2M0NWZhYzUyZjFjMWEyYTUyZTY0ZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKQEAgLTY5LDE3
ICs2OSwxNyBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHSW5saW5lOjpyZXBhaW50UmVjdEluTG9jYWxD
b29yZGluYXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogfQogCi1MYXlvdXRS
ZWN0IFJlbmRlclNWR0lubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRl
clNWR0lubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJCYXNl
KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyKTsK
IH0KIAotdm9pZCBSZW5kZXJTVkdJbmxpbmU6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRS
ZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdJbmxpbmU6OmNvbXB1dGVGbG9h
dFJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgRmxvYXRS
ZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBw
b3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyLCBy
ZXBhaW50UmVjdCwgZml4ZWQpOwogfQogCi12b2lkIFJlbmRlclNWR0lubGluZTo6bWFwTG9jYWxU
b0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCAv
KiB1c2VUcmFuc2Zvcm1zICovLCBib29sIC8qIGZpeGVkICovLCBUcmFuc2Zvcm1TdGF0ZSYgdHJh
bnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29u
c3QKK3ZvaWQgUmVuZGVyU1ZHSW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVy
QmFzZSogcmVwYWludENvbnRhaW5lciwgYm9vbCAvKiB1c2VUcmFuc2Zvcm1zICovLCBib29sIC8q
IGZpeGVkICovLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVy
RmxpcE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0
OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0
YXRlLCB3YXNGaXhlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmUuaAppbmRleCA4YWE0YWI4NzUwZjIyZTg2Y2JmZjdhZTFkNjMwZTRjN2ZmZTQx
NTcxLi42MmFkODI0ODA1ZjVjZTZjODc1NDc3NDc3OWZmMmU4YTAzN2Q1MWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKQEAgLTQ1LDkgKzQ1
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0
ZXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0gZmFs
c2UpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wg
Zml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNv
bnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlv
dXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyQmFzZSogcmVw
YWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RG
b3JSZXBhaW50KFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0Jiwg
Ym9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0Nv
bnRhaW5lcihSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNm
b3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5v
dCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5kZXggNDhmZDdkODc5Mjc2YmY0MzRl
ZjQwOTViNGIwYjZlNWQxMTIzMjkzYi4uZGNkYTk2OTM1N2RhMjY1M2IyMzAyMzA5ZTcwNGFjNjhm
Y2NmMzkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdNb2RlbE9iamVjdC5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNpZiBFTkFCTEUoU1ZHKQog
I2luY2x1ZGUgIlJlbmRlclNWR01vZGVsT2JqZWN0LmgiCiAKKyNpbmNsdWRlICJSZW5kZXJCb3hN
b2RlbE9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFzZS5oIgogI2luY2x1ZGUgIlJl
bmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdS
ZXNvdXJjZXNDYWNoZS5oIgpAQCAtNDUsMTcgKzQ3LDE3IEBAIFJlbmRlclNWR01vZGVsT2JqZWN0
OjpSZW5kZXJTVkdNb2RlbE9iamVjdChTVkdTdHlsZWRFbGVtZW50KiBub2RlKQogewogfQogCi1M
YXlvdXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91
dFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICByZXR1cm4g
U1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQodGhpcywgcmVw
YWludENvbnRhaW5lcik7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNvbXB1dGVG
bG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJT
VkdNb2RlbE9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJCYXNl
KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBj
b25zdAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50
KHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7CiB9CiAKLXZvaWQg
UmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgLyogZml4ZWQgKi8sIGJvb2wgLyogdXNlVHJh
bnNmb3JtcyAqLywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5l
ckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR01vZGVsT2Jq
ZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5l
ciwgYm9vbCAvKiBmaXhlZCAqLywgYm9vbCAvKiB1c2VUcmFuc2Zvcm1zICovLCBUcmFuc2Zvcm1T
dGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29sKiB3YXNG
aXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVy
KHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7CiB9CkBA
IC02Myw3ICs2NSw3IEBAIHZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om1hcExvY2FsVG9Db250
YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250CiAvLyBDb3BpZWQgZnJvbSBS
ZW5kZXJCb3gsIHRoaXMgbWV0aG9kIGxpa2VseSByZXF1aXJlcyBmdXJ0aGVyIHJlZmFjdG9yaW5n
IHRvIHdvcmsgZWFzaWx5IGZvciBib3RoIFNWRyBhbmQgQ1NTIEJveCBNb2RlbCBjb250ZW50Lgog
Ly8gRklYTUU6IFRoaXMgbWF5IGFsc28gbmVlZCB0byBtb3ZlIGludG8gU1ZHUmVuZGVyU3VwcG9y
dCBhcyB0aGUgUmVuZGVyQm94IHZlcnNpb24gZGVwZW5kcwogLy8gb24gYm9yZGVyQm91bmRpbmdC
b3goKSB3aGljaCBTVkcgUmVuZGVyQm94IHN1YmNsYXNlcyAobGlrZSBTVkdSZW5kZXJCbG9jaykg
ZG8gbm90IGltcGxlbWVudC4KLUxheW91dFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om91dGxp
bmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBMYXlvdXRQb2ludCopIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0Ojpv
dXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIs
IExheW91dFBvaW50KikgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IGJveCA9IGVuY2xvc2luZ0xh
eW91dFJlY3QocmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSk7CiAgICAgYWRqdXN0UmVj
dEZvck91dGxpbmVBbmRTaGFkb3coYm94KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAppbmRleCBiOTY5MmZlMWRmY2ViNjFhN2Vh
Y2EyMWJjZmQ4NzUxM2FiNzY4MWQ1Li5jMTZkODdkN2M2ZDQ4YWUyMzE0ODcyODI0NzlhZjFhZDJh
ZTJlNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R01vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdNb2RlbE9iamVjdC5oCkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmly
dHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29t
cHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7Ci0gICAgdmlydHVh
bCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRQb2ludCopIGNvbnN0OworICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllckJhc2UqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0
Rm9yUmVwYWludChSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYs
IGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxp
bmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgTGF5
b3V0UG9pbnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29s
KiB3YXNGaXhlZCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5l
cihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zv
cm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90
ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVyQmFzZSogcmVwYWludENv
bnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYs
IEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNG
aXhlZCA9IDApIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpOwogICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHlsZSk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCA2N2I4YTcxNGI5
MDlmZjQzNWZjMTJiMGFlZDQ4YWVjNTk1YzYyODJjLi5jZWM3Zjk1OTI0MTU2MjM0MmJlZTYyNGU2
YWQ5M2IxYTM5ZjQ1NzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5jcHAKQEAgLTM1NywxMiArMzU3LDEyIEBAIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgUmVuZGVyU1ZHUm9vdDo6bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fbG9jYWxUb1BhcmVudFRyYW5zZm9ybTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJTVkdS
b290OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyU1ZHUm9vdDo6Y2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVy
KSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyKTsKIH0KIAotdm9pZCBSZW5kZXJT
VkdSb290Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29u
c3QKK3ZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVy
TGF5ZXJCYXNlKiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29s
IGZpeGVkKSBjb25zdAogewogICAgIC8vIEFwcGx5IG91ciBsb2NhbCB0cmFuc2Zvcm1zIChleGNl
cHQgZm9yIHgveSB0cmFuc2xhdGlvbiksIHRoZW4gb3VyIHNoYWRvdywgCiAgICAgLy8gYW5kIHRo
ZW4gY2FsbCBSZW5kZXJCb3gncyBtZXRob2QgdG8gaGFuZGxlIGFsbCB0aGUgbm9ybWFsIENTUyBC
b3ggbW9kZWwgYml0cwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29t
cHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
CiAvLyBUaGlzIG1ldGhvZCBleHBlY3RzIGxvY2FsIENTUyBib3ggY29vcmRpbmF0ZXMuCiAvLyBD
YWxsZXJzIHdpdGggbG9jYWwgU1ZHIHZpZXdwb3J0IGNvb3JkaW5hdGVzIHNob3VsZCBmaXJzdCBh
cHBseSB0aGUgbG9jYWxUb0JvcmRlckJveFRyYW5zZm9ybQogLy8gdG8gY29udmVydCBmcm9tIFNW
RyB2aWV3cG9ydCBjb29yZGluYXRlcyB0byBsb2NhbCBDU1MgYm94IGNvb3JkaW5hdGVzLgotdm9p
ZCBSZW5kZXJTVkdSb290OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5z
Zm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wq
IHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdSb290OjptYXBMb2NhbFRvQ29udGFpbmVy
KFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VU
cmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVy
RmxpcE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWZpeGVkKTsg
Ly8gV2Ugc2hvdWxkIGhhdmUgbm8gZml4ZWQgY29udGVudCBpbiB0aGUgU1ZHIHJlbmRlcmluZyB0
cmVlLgogICAgIEFTU0VSVCh1c2VUcmFuc2Zvcm1zKTsgLy8gbWFwcGluZyBhIHBvaW50IHRocm91
Z2ggU1ZHIHcvbyByZXNwZWN0aW5nIHRyYXNuZm9ybXMgaXMgdXNlbGVzcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKaW5kZXggYzMzNGFmYmU2ZmIyNjVh
NDU3ODllYmU5ODcyYTg2MGI4NzZiYjljNC4uNWZkMGZlMmU2Zjg5MzM3YjRiZjE0MzUyMjE5YWU0
MzJjMjViNDU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmgKQEAgLTkxLDEwICs5MSwxMCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IExh
eW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVw
YWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWlu
ZXIpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChS
ZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3Qs
IGJvb2wgZml4ZWQpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWlu
ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNm
b3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5v
dCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRD
b250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUm
LCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2Fz
Rml4ZWQgPSAwKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVu
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCBmMGYwYjljMzJlYTExMmY5NWJjZWVhMmIyOWE2
MDA4NjBhMmI1NTAwLi5jNzc3MTdhYzk4MmI1ZWRjZDlkODQxMjI1MWIzMDNmYTQ3MTg3YjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAg
LTg4LDI0ICs4OCwyNCBAQCBjb25zdCBSZW5kZXJTVkdUZXh0KiBSZW5kZXJTVkdUZXh0Ojpsb2Nh
dGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IoY29uc3QgUmVuZGVyT2JqZQogICAgIHJldHVybiB0b1Jl
bmRlclNWR1RleHQoc3RhcnQpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNWR1RleHQ6OmNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJTVkdUZXh0OjpjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIpOwogfQogCi12b2lkIFJlbmRlclNWR1RleHQ6OmNv
bXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHVGV4
dDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBGbG9hdFJlY3Qg
cmVwYWludFJlY3QgPSByZWN0OwogICAgIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHJlcGFp
bnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7CiAgICAgcmVjdCA9IGVuY2xvc2luZ0xh
eW91dFJlY3QocmVwYWludFJlY3QpOwogfQogCi12b2lkIFJlbmRlclNWR1RleHQ6OmNvbXB1dGVG
bG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJT
VkdUZXh0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllckJhc2UqIHJlcGFp
bnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7
CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQodGhpcywg
cmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJT
VkdUZXh0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBib29sIC8qIGZpeGVkICovLCBib29sIC8qIHVzZVRyYW5zZm9ybXMgKi8sIFRy
YW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJv
b2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdUZXh0OjptYXBMb2NhbFRvQ29udGFp
bmVyKFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgYm9vbCAvKiBmaXhlZCAqLywg
Ym9vbCAvKiB1c2VUcmFuc2Zvcm1zICovLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUs
IEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBT
VkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWlu
ZXIsIHRyYW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCmluZGV4IDIzYTBiNmE5YTZjYmY0OGQwYzYyNjI1Y2E5
ZmIxNmUzNThjOWM3MjcuLjYxZmEwN2FjOTkxMTRlOTI3Y2E1NGM0ZTk0ZDg1ZTAyMWU0ZDM4M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCkBAIC03
NCwxMSArNzQsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCi0gICAgdmlydHVh
bCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0
ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBM
YXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmly
dHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVy
QmFzZSogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVS
ZWN0Rm9yUmVwYWludChSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJl
Y3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
RmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWluZXIsIEZs
b2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5
Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9
IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxh
eWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVk
LCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWlu
ZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhZGRD
aGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7
CiAKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0
dXJuIGZyYW1lUmVjdCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCBiMjA2Y2I2YzJjZGIxMGJiNjk5ZTA0MzBiMzFlN2Ji
ZjMwNTQ4YzhhLi43OWY1ZGQ1NzU5ZTU2ZmM0ODk1OGI0YTZmMzdlNjE0NTQ5NmUwNGJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAK
QEAgLTQ1LDcgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1MYXlvdXRSZWN0IFNW
R1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRl
ck9iamVjdCogb2JqZWN0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikK
K0xheW91dFJlY3QgU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlckxheWVyQmFzZSogcmVwYWludENv
bnRhaW5lcikKIHsKICAgICAvLyBSZXR1cm4gZWFybHkgZm9yIGFueSBjYXNlcyB3aGVyZSB3ZSBk
b24ndCBhY3R1YWxseSBwYWludAogICAgIGlmIChvYmplY3QtPnN0eWxlKCktPnZpc2liaWxpdHko
KSAhPSBWSVNJQkxFICYmICFvYmplY3QtPmVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250
ZW50KCkpCkBAIC01OCw3ICs1OCw3IEBAIExheW91dFJlY3QgU1ZHUmVuZGVyU3VwcG9ydDo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiBvCiAgICAgcmV0
dXJuIGVuY2xvc2luZ0xheW91dFJlY3QocmVwYWludFJlY3QpOwogfQogCi12b2lkIFNWR1JlbmRl
clN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCog
b2JqZWN0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0
JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkKK3ZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0
ZUZsb2F0UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlckxh
eWVyQmFzZSogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBm
aXhlZCkKIHsKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnU3R5bGUgPSBvYmplY3QtPnN0
eWxlKCktPnN2Z1N0eWxlKCk7CiAgICAgaWYgKGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdyA9IHN2
Z1N0eWxlLT5zaGFkb3coKSkKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0
Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwg
UmUKICAgICBvYmplY3QtPnBhcmVudCgpLT5jb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChyZXBh
aW50Q29udGFpbmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwogfQogCi12b2lkIFNWR1JlbmRlclN1
cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJh
bnNmb3JtU3RhdGUsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBTVkdSZW5kZXJTdXBwb3J0OjptYXBM
b2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJMYXllckJh
c2UqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgYm9v
bCogd2FzRml4ZWQpCiB7CiAgICAgdHJhbnNmb3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0ob2JqZWN0
LT5sb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oCmluZGV4IGUyNWIxMmYwNjAxZjg4OGRkNGRlNTgz
NTNlMThiYzAwYjAwNGZhNjIuLjQ1ZTA0OTU1MDM4Yzc4OGMyMWNkYzY1ZDJmYWQ3NjIxNTI2MWQw
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3Vw
cG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9y
dC5oCkBAIC0zNCw2ICszNCw3IEBAIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFJlY3Q7
CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OworY2xhc3Mg
UmVuZGVyTGF5ZXJCYXNlOwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7
CiBjbGFzcyBSZW5kZXJTVkdSb290OwpAQCAtNjEsOSArNjIsOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgcGFpbnRJbmZvSW50ZXJzZWN0c1JlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
bG9jYWxSZXBhaW50UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRyYW5zZm9ybSwg
Y29uc3QgUGFpbnRJbmZvJik7CiAKICAgICAvLyBJbXBvcnRhbnQgZnVuY3Rpb25zIHVzZWQgYnkg
bmVhcmx5IGFsbCBTVkcgcmVuZGVyZXJzIGNlbnRyYWxpemluZyBjb29yZGluYXRlIHRyYW5zZm9y
bWF0aW9ucyAvIHJlcGFpbnQgcmVjdCBjYWxjdWxhdGlvbnMKLSAgICBzdGF0aWMgTGF5b3V0UmVj
dCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqLCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7Ci0gICAgc3RhdGljIHZvaWQgY29t
cHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiwgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQpOwotICAg
IHN0YXRpYyB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgYm9v
bCogd2FzRml4ZWQgPSAwKTsKKyAgICBzdGF0aWMgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqLCBSZW5kZXJMYXllckJhc2UqIHJlcGFp
bnRDb250YWluZXIpOworICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50
KGNvbnN0IFJlbmRlck9iamVjdCosIFJlbmRlckxheWVyQmFzZSogcmVwYWludENvbnRhaW5lciwg
RmxvYXRSZWN0JiwgYm9vbCBmaXhlZCk7CisgICAgc3RhdGljIHZvaWQgbWFwTG9jYWxUb0NvbnRh
aW5lcihjb25zdCBSZW5kZXJPYmplY3QqLCBSZW5kZXJMYXllckJhc2UqIHJlcGFpbnRDb250YWlu
ZXIsIFRyYW5zZm9ybVN0YXRlJiwgYm9vbCogd2FzRml4ZWQgPSAwKTsKIAogICAgIC8vIFNoYXJl
ZCBiZXR3ZWVuIFNWRyByZW5kZXJlcnMgYW5kIHJlc291cmNlcy4KICAgICBzdGF0aWMgdm9pZCBh
cHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0
eWxlKiwgY29uc3QgUmVuZGVyT2JqZWN0Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149971</attachid>
            <date>2012-06-28 10:47:09 -0700</date>
            <delta_ts>2012-07-10 09:48:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86022-20120628134709.patch</filename>
            <type>text/plain</type>
            <size>132998</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZhMjE0NDQ1YjliZjQ1
MjJjMDc1MjJjODlhZTc3OGZiODFjZjE1Ni4uYmIyYTQ1YmExYzU2OGI1YmJhNDYxZjcyYzVkNmM4
OTFhZWYyZGU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyNiBAQAorMjAxMi0wNi0yOCAgRmxv
cmluIE1hbGl0YSAgPGZtYWxpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZmFjdG9yIGxh
eWVyLXJlbGF0ZWQgbG9naWMgb3V0IG9mIFJlbmRlckJveE1vZGVsT2JqZWN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjAyMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZXh0cmFjdHMg
dGhlIGxheWVyLXJlbGF0ZWQgbG9naWMgaW50byBhIGRlZGljYXRlZCBjbGFzcworICAgICAgICAo
UmVuZGVyTGF5ZXJPYmplY3QpIGFuZCByZWZhY3RvcnMgZGVwZW5kZW50IGNvZGUgdG8gbWFrZSB1
c2Ugb2YgdGhlIG5ldworICAgICAgICB0eXBlIGluc3RlYWQgb2YgUmVuZGVyQm94TW9kZWxPYmpl
Y3QuIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gb2YgYWRkaW5nCisgICAgICAgIG5vbi1SZW5kZXJC
b3hNb2RlbE9iamVjdCBsYXllciBzdXBwcnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiByZWZh
Y3RvcmluZyB3aXRoIG5vIGJlaGF2aW9yIGNoYW5nZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5w
cmk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgp
OgorICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoTGF5b3V0UmVwYWludGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQlIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJSOjpzZWxlY3Rpb25SZWN0Rm9yUmVw
YWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpzZWxlY3Rpb25HYXBSZWN0c0ZvclJlcGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAoUmVuZGVyQmxvY2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6ZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94Lmg6CisgICAgICAgIChSZW5kZXJCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
TW9kZWxPYmplY3Q6On5SZW5kZXJCb3hNb2RlbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rv
cik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmg6CisgICAgICAgIChS
ZW5kZXJHZW9tZXRyeU1hcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6cmVjdFdpdGhPdXRsaW5l
Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNvbXB1dGVSZWN0
Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9D
b250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAg
IChSZW5kZXJJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpjb21wdXRlUmVwYWludFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6
OmNoZWNrQ29udGFpbmluZ0Jsb2NrQ2hhaW5Gb3JQYWdpbmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzUG9zaXRpb25lZENvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
c2Nyb2xsVG8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlcGFpbnRJbmNsdWRp
bmdOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaDoKKyAgICAgICAgKFJlbmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpyZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZW5kZXJlcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXBhaW50T25Db21wb3NpdGluZ0NoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29t
cG9zaXRpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJlYXNvbkZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJP
YmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJPYmplY3Q6OlJlbmRlckxheWVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyT2JqZWN0Ojp+UmVuZGVyTGF5ZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJPYmplY3Q6OmRlc3Ryb3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllck9iamVjdDo6ZW5zdXJlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJPYmplY3Q6Omhhc1NlbGZQYWludGluZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllck9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
UmVuZGVyTGF5ZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJPYmplY3Q6
OmxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyT2JqZWN0OjpyZXF1aXJlc0xh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmVuZGVyTGF5ZXJPYmplY3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxpc3RNYXJrZXI6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGlzdE1hcmtlci5oOgorICAgICAgICAoUmVuZGVyTGlzdE1hcmtlcik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZExheWVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlbW92ZUxheWVycyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6Om1vdmVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpmaW5kTmV4dExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
ZW5jbG9zaW5nTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRMYXll
ck5lZWRzRnVsbFJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRM
YXllck5lZWRzRnVsbFJlcGFpbnRGb3JQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpjb250YWluZXJGb3JSZXBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cmVwYWludFVzaW5nQ29udGFpbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OnJlcGFpbnRSZWN0YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Z2V0VHJhbnNmb3JtRnJvbUNvbnRh
aW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2FsVG9Db250YWluZXJR
dWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29udGFpbmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6aXNDb21wb3NpdGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6aXNMYXllckJhc2UpOgorICAgICAgICAoUmVuZGVyT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclJlcGxhY2VkOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJSZXBsYWNlZDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oOgorICAgICAgICAoUmVuZGVyUmVwbGFj
ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTZWxlY3Rpb25JbmZvQmFzZTo6cmVwYWludENvbnRhaW5lcik6Cisg
ICAgICAgIChSZW5kZXJTZWxlY3Rpb25JbmZvQmFzZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlQ2VsbDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmg6CisgICAgICAgIChSZW5kZXJUYWJsZUNlbGwpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZUNvbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNvbC5oOgorICAgICAgICAoUmVuZGVyVGFibGVDb2wpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZVJvdzo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZVJvdy5oOgorICAgICAgICAoUmVuZGVyVGFibGVSb3cpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHQ6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGV4dC5oOgorICAgICAgICAoUmVuZGVyVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6bWFwTG9jYWxU
b0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ29tcG9zaXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJWaWV3Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJWaWV3OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNl
bGVjdGlvbkJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzZXRTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6Y2xlYXJTZWxlY3Rpb24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisgICAgICAgIChSZW5kZXJWaWV3KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y29t
cHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdGb3JlaWduT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaDoKKyAgICAgICAgKFJlbmRlclNW
R0ZvcmVpZ25PYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGll
bnRTdG9wLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdHcmFkaWVudFN0b3A6OmNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0hpZGRlbkNvbnRhaW5lci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHSW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdJbmxpbmU6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWluZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmg6CisgICAgICAgIChSZW5k
ZXJTVkdJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVs
T2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdNb2RlbE9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGluZUJvdW5kc0ZvclJlcGFp
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaDoKKyAg
ICAgICAgKFJlbmRlclNWR01vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6Y2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9v
dDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUm9vdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSb290OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuaDoKKyAgICAgICAgKFJlbmRlclNWR1Jvb3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdUZXh0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKFJlbmRlclNWR1RleHQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0
Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2Nh
bFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6OnB1c2hN
YXBwaW5nVG9Db250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3Vw
cG9ydC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdSZW5kZXJTdXBwb3J0KToK
KwogMjAxMi0wNi0yOCAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW1F0XSBwbHVnaW4gaXMgbG9hZGVkIHRvIHRoZSB3ZWIgcHJvY2VzcyB2aWEgTWFpblJl
c291cmNlTG9hZGVyOjpzdWJzdGl0dXRlTUlNRVR5cGVGcm9tUGx1Z2luRGF0YWJhc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCA4YThhOTcwZWZkMjI4M2NjODhhODM0NDQ3ODg0ZTQzOTM5ZDc0NGU1Li5hNjNkMGRk
NWIzZWQyYmJjMTJhM2U4YTQxZDVlY2JiY2YyOTgwNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTggQEAKKzIwMTItMDYtMjggIEZsb3JpbiBNYWxpdGEgIDxmbWFsaXRhQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZWZhY3RvciBsYXllci1yZWxhdGVkIGxvZ2ljIG91dCBvZiBSZW5kZXJCb3hN
b2RlbE9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODYwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGV4dHJhY3RzIHRoZSBsYXllci1yZWxhdGVkIGxvZ2ljIGludG8gYSBkZWRp
Y2F0ZWQgY2xhc3MKKyAgICAgICAgKFJlbmRlckxheWVyT2JqZWN0KSBhbmQgcmVmYWN0b3JzIGRl
cGVuZGVudCBjb2RlIHRvIG1ha2UgdXNlIG9mIHRoZSBuZXcKKyAgICAgICAgdHlwZSBpbnN0ZWFk
IG9mIFJlbmRlckJveE1vZGVsT2JqZWN0LiBUaGlzIGlzIGluIHByZXBhcmF0aW9uIG9mIGFkZGlu
ZworICAgICAgICBub24tUmVuZGVyQm94TW9kZWxPYmplY3QgbGF5ZXIgc3VwcHJ0LgorCisgICAg
ICAgICogU2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVu
ZGVyTGF5ZXI6OldlYlJlbmRlckxheWVyKToKKwogMjAxMi0wNi0yOCAgQmFsYXpzIEtlbGVtZW4g
IDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBLVVJMIGFzc2VydCBhdCBmYXN0
L2xvYWRlci9vcGFxdWUtYmFzZS11cmwuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2ZDNk
YTdmOGMyNGI0NjI3YzVmMTIzMzk5OGRmMzcwZTUxMzQ0M2Y3Li5mMDQ2M2UwOTg1ZmMxMzYzOGMy
NzAxNGU0M2UxNzkzYmE1ODAxNTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM2OSw2ICsx
MzY5LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCisgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyT2JqZWN0LmNwcAogICAg
IHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckxpbmVCb3hMaXN0LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMzVlYzJlYzE1NTZmNDRmMjZmMTlkMTlkZjE3M2Jj
NzdlNDNmMmM4ZS4uNGUyZDNhZTc3M2M4Y2MxMGQ3MTRhYzg0MGYzYjY3MGRiZDlmNDBhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zODg0LDYgKzM4ODQsOCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJPYmplY3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJPYmplY3QuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyRmlsdGVySW5mby5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggN2I5NmI3NjI0MzA4OTg4YmU0
NTA2YmFmNWRlMzAyYWYyMWJkMDRkYy4uYWU5ZjAxZDcxNmFkNGJiMTg0ODY5MTk0MzQyNmUwNmRm
MjliOGM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0xMjg1LDYgKzEyODUsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgXAorICAgIHJl
bmRlcmluZy9SZW5kZXJMYXllck9iamVjdC5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNw
cCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcCBcCkBAIC0yNTA1LDYgKzI1
MDYsNyBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5wdXRTcGVlY2guaCBc
CiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyLmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuaCBcCisgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyT2JqZWN0LmggXAogICAgIHJl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxp
bmVCb3hMaXN0LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCBhYmRkZmI3MjJhZDJjM2M2NDRlMjk3MjNmYWU5ZTFjYjBiZTYxMzE0Li5j
YTYwMGJhOGQwYzNjMDBjM2M2ZWM2NGRiOWEyY2Y4MmVkZjljMGUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGUyMXZp
c2l0ZWREZXBlbmRlbnRDb2xvckVpCiBfX1pOSzdXZWJDb3JlMTFTY3JpcHRWYWx1ZTlnZXRTdHJp
bmdFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTEyUmVuZGVy
T2JqZWN0MTRlbmNsb3NpbmdMYXllckV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNWxv
Y2FsVG9BYnNvbHV0ZUVSS05TXzEwRmxvYXRQb2ludEViYgotX19aTks3V2ViQ29yZTEyUmVuZGVy
T2JqZWN0MjBsb2NhbFRvQ29udGFpbmVyUXVhZEVSS05TXzlGbG9hdFF1YWRFUE5TXzIwUmVuZGVy
Qm94TW9kZWxPYmplY3RFYlBiCitfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyMGxvY2FsVG9D
b250YWluZXJRdWFkRVJLTlNfOUZsb2F0UXVhZEVQTlNfMTdSZW5kZXJMYXllck9iamVjdEViUGIK
IF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYgog
X19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MzlwaXhlbFNuYXBwZWRBYnNvbHV0ZUNsaXBwZWRP
dmVyZmxvd1JlY3RFdgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0N2NoaWxkQXRFagpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDEwNTRlMDcyNTVjYTc2YWI4YmRlNWU0YzAyOWE5NjVlOWQzMDI4MDUu
LmRhNjRiMWY2MmNiMTkyMjkwNWQ1OGUwZWE3MTRiMTU2MjJlOTQ0NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTU1MSw2ICs1NTEsNyBAQAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZS5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oJywKKyAg
ICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGF5ZXJPYmplY3QuaCcsCiAgICAgICAgICAgICAn
cmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5oJywKICAgICAgICAgICAgICdyZW5kZXJp
bmcvUmVuZGVyTGluZUJveExpc3QuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxp
c3RJdGVtLmgnLApAQCAtNDg2NSw2ICs0ODY2LDcgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcv
UmVuZGVySW5wdXRTcGVlY2guaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAnLAor
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJMYXllck9iamVjdC5jcHAnLAogICAgICAgICAg
ICAgJ3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwJywKICAgICAgICAgICAgICdy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmlu
Zy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZDEyZGI1NjZjOGMzOTU5NmZkMGYxMjU0OGUwNzEx
NTY4NmMxMjdlOS4uYjdkYzI1NzllMjYzZjMxOWU0MzQ5M2I3ZGFjNjJhM2JlMTdkMjU4ZCAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTM5OTc1
LDYgKzM5OTc1LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJMYXllck9iamVjdC5jcHAiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJMYXll
ck9iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlxyZW5kZXJpbmdcUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCIKIAkJCQk+CiAJCQkJPEZp
bGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMmRkMzU4YzY4MjJiN2M5OGRkZGYzNjdiMTAxNjVjODE4ZDI4
ZDZmNy4uMTk5NzEwMzA4ZDBmNzIyNTRkOGNiNGY1NWUzMWIyZDZlYzBkYjY2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAw
Niw2ICsxMDA2LDggQEAKIAkJM0FCMDJEMkIxMkQ0RjkxNjAwRkJCNjk0IC8qIFN0b3JhZ2VUcmFj
a2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNB
QjAyRDI5MTJENEY5MTYwMEZCQjY5NCAvKiBTdG9yYWdlVHJhY2tlci5jcHAgKi87IH07CiAJCTNB
QzM2ODAwMTJFRjdBMDkwMDZBM0Q2RiAvKiBTdG9yYWdlVHJhY2tlckNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0FDMzY3RkUxMkVGN0EwOTAw
NkEzRDZGIC8qIFN0b3JhZ2VUcmFja2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJM0FDNjQ4QjIxMjlFMTQ2NTAwQzNFQjI1IC8qIEVk
aXRpbmdCb3VuZGFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gM0FDNjQ4QjExMjlFMTQ2NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTNDMjQ0RkVBQTM3
NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJMYXllck9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0MyNDRGRTRBMzc1QUM2MzNGODhCRTZGIC8qIFJl
bmRlckxheWVyT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJM0MyNDRGRUJBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlckxheWVyT2JqZWN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNDMjQ0
RkU1QTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJMYXllck9iamVjdC5jcHAgKi87IH07CiAJCTQx
MDAyQ0NEMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NCMEY2NkVERUYwMDlF
NjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLzsgfTsKIAkJNDEwMDJDQ0UwRjY2RURFRjAw
OUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkNDQzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcCAqLzsgfTsKIAkJNDEwQjdFNzIxMDQ1RkFCMDAwRDgyMjRGIC8qIEpT
TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1
c3RvbS5jcHAgKi87IH07CkBAIC04MDI0LDYgKzgwMjYsOCBAQAogCQkzQUIwMkQyOTEyRDRGOTE2
MDBGQkI2OTQgLyogU3RvcmFnZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RvcmFnZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzQUMzNjdGRTEyRUY3QTA5MDA2QTNENkYgLyogU3RvcmFnZVRyYWNrZXJDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZVRyYWNrZXJDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0FDNjQ4QjExMjlFMTQ2NTAwQzNFQjI1IC8q
IEVkaXRpbmdCb3VuZGFyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0
aW5nQm91bmRhcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0MyNDRGRTRBMzc1
QUM2MzNGODhCRTZGIC8qIFJlbmRlckxheWVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbmRlckxheWVyT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTNDMjQ0RkU1QTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJMYXllck9iamVjdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJMYXllck9iamVjdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMDAyQ0NCMEY2NkVERUYwMDlFNjYw
RCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NyaXB0RnVuY3Rpb25DYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
MDAyQ0NDMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpT
TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIxMTE5LDYgKzIxMTIzLDggQEAKIAkJCQlCQ0VBNDgzQjA5N0Q5MzAyMDA5NEM5RTQgLyog
UmVuZGVyTGF5ZXIuaCAqLywKIAkJCQkwRjU4MENGQzBGMTJERTlCMDA1MUQ2ODkgLyogUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcCAqLywKIAkJCQkwRjU4MENGQjBGMTJERTlCMDA1MUQ2ODkgLyogUmVu
ZGVyTGF5ZXJCYWNraW5nLmggKi8sCisJCQkJM0MyNDRGRTVBMzc1QUM2MzNGODhCRTZGIC8qIFJl
bmRlckxheWVyT2JqZWN0LmNwcCAqLywKKwkJCQkzQzI0NEZFNEEzNzVBQzYzM0Y4OEJFNkYgLyog
UmVuZGVyTGF5ZXJPYmplY3QuaCAqLywKIAkJCQkwRjU4MENGQTBGMTJERTlCMDA1MUQ2ODkgLyog
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCAqLywKIAkJCQkwRjU4MENGOTBGMTJERTlCMDA1MUQ2
ODkgLyogUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggKi8sCiAJCQkJNTBEMTBEOTcxNTQ1RjU3NjAw
OTZEMjg4IC8qIFJlbmRlckxheWVyRmlsdGVySW5mby5jcHAgKi8sCkBAIC0yNDMwNSw2ICsyNDMx
MSw3IEBACiAJCQkJNzUwRDAyOTQxMUQwRTdGMzAwQkQxQjI3IC8qIFJlbmRlcklucHV0U3BlZWNo
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg3QTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVy
TGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQ0ZGMEYxMkRFOUIwMDUxRDY4OSAvKiBS
ZW5kZXJMYXllckJhY2tpbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCTNDMjQ0RkVBQTM3NUFDNjMz
Rjg4QkU2RiAvKiBSZW5kZXJMYXllck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBD
RkQwRjEyREU5QjAwNTFENjg5IC8qIFJlbmRlckxheWVyQ29tcG9zaXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTBEMTBEOUExNTQ1RjU3NjAwOTZEMjg4IC8qIFJlbmRlckxheWVyRmlsdGVySW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEJFMDMwQTIwRjMxMTJGQjAwM0MxQTQ2IC8qIFJlbmRl
ckxpbmVCb3hMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI3NTEyLDYgKzI3NTE5LDcgQEAKIAkJ
CQk3NTBEMDI5MzExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2guY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNFQTQ4NzkwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxheWVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTgwRDAwMEYxMkRFOUIwMDUxRDY4OSAvKiBSZW5kZXJM
YXllckJhY2tpbmcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJM0MyNDRGRUJBMzc1QUM2MzNGODhC
RTZGIC8qIFJlbmRlckxheWVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTgwQ0ZF
MEYxMkRFOUIwMDUxRDY4OSAvKiBSZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTBEMTBEOTkxNTQ1RjU3NjAwOTZEMjg4IC8qIFJlbmRlckxheWVyRmlsdGVySW5m
by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzMzRkIxQjBGMzBFRTg1MDAyQ0REN0MgLyogUmVu
ZGVyTGluZUJveExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKaW5kZXggMmNlY2MwMjg0OWU0ODUwNzQyODhiZTMzODIxYzEzNTU2MzBhOTZmNi4uMzJlODEx
NTUyNWY4NDYwOTFhMzMzZmRiNDdjZDNkYjQwN2Y5YTM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcApAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgYm9vbCBGcmFtZVZpZXc6OnNjcm9sbENvbnRl
bnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QKICNl
bmRpZgogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICAgICAgaWYgKHJlbmRlckJveC0+bGF5
ZXIoKSAmJiByZW5kZXJCb3gtPmxheWVyKCktPnBhcmVudCgpKSB7Ci0gICAgICAgICAgICBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIgPSByZW5kZXJCb3gtPmxheWVyKCktPnBhcmVudCgp
LT5yZW5kZXJlcigpOworICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHJlbmRl
ckJveC0+bGF5ZXIoKS0+cGFyZW50KCktPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICBpZiAocmVu
ZGVyZXItPnN0eWxlKCktPmhhc0ZpbHRlck91dHNldHMoKSkgewogICAgICAgICAgICAgICAgIC8v
IElmIHRoZSBmaXhlZCBsYXllciBoYXMgYSBibHVyL2Ryb3Atc2hhZG93IGZpbHRlciBhcHBsaWVk
IG9uIGl0cyBwYXJlbnQsIHdlIGNhbm5vdCAKICAgICAgICAgICAgICAgICAvLyBzY3JvbGwgdXNp
bmcgdGhlIGZhc3QgcGF0aCwgb3RoZXJ3aXNlIHRoZSBvdXRzZXRzIG9mIHRoZSBmaWx0ZXIgd2ls
bCBiZSBtb3ZlZCBhcm91bmQgdGhlIHBhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5
b3V0UmVwYWludGVyLmgKaW5kZXggNTc0MDBmYWViZjdiMjBhMTY1NGM4OWE4MWRkYmNiM2YxOTM1
ZmZiMC4uNTczYjZjMGIzYTNlYmE2MDUxYWVjNmE0MmQ2MTdkMGY2ZjE1MTM3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuaApAQCAtMzAsOCArMzAsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJlbmRlckxheWVyT2JqZWN0OwogY2xhc3Mg
UmVuZGVyT2JqZWN0OwotY2xhc3MgUmVuZGVyQm94TW9kZWxPYmplY3Q7CiAKIGNsYXNzIExheW91
dFJlcGFpbnRlciB7CiBwdWJsaWM6CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBSZW5kZXJPYmplY3QmIG1fb2JqZWN0OwotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0
KiBtX3JlcGFpbnRDb250YWluZXI7CisgICAgUmVuZGVyTGF5ZXJPYmplY3QqIG1fcmVwYWludENv
bnRhaW5lcjsKICAgICAvLyBXZSBzdG9yZSB0aGVzZSB2YWx1ZXMgYXMgTGF5b3V0UmVjdHMsIGJ1
dCB0aGUgZmluYWwgaW52YWxpZGF0aW9ucyB3aWxsIGJlIHBpeGVsIHNuYXBwZWQKICAgICBMYXlv
dXRSZWN0IG1fb2xkQm91bmRzOwogICAgIExheW91dFJlY3QgbV9vbGRPdXRsaW5lQm94OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaAppbmRleCA0OWY5YjVlNmNjMjBlOTQ5ZjY2MDYxY2Jk
YWUzYTFiMzYwZWMzODUwLi5jNDcyM2U1M2RmMGRjNTY3NDAwZDYwZWVmNzU1MjIxOThlMjI0NTlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVy
biAiUmVuZGVyQlIiOyB9CiAgCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgYm9v
bCAvKmNsaXBUb1Zpc2libGVDb250ZW50Ki8pIHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQorICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck9i
amVjdCogLypyZXBhaW50Q29udGFpbmVyKi8sIGJvb2wgLypjbGlwVG9WaXNpYmxlQ29udGVudCov
KSB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KIAogICAgIHZpcnR1YWwgZmxvYXQgd2lkdGgodW5z
aWduZWQgLypmcm9tKi8sIHVuc2lnbmVkIC8qbGVuKi8sIGNvbnN0IEZvbnQmLCBmbG9hdCAvKnhQ
b3MqLywgSGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0YSo+KiA9IDAgLypmYWxsYmFja0ZvbnRz
Ki8gLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFs
IGZsb2F0IHdpZHRoKHVuc2lnbmVkIC8qZnJvbSovLCB1bnNpZ25lZCAvKmxlbiovLCBmbG9hdCAv
Knhwb3MqLywgYm9vbCA9IGZhbHNlIC8qZmlyc3RMaW5lKi8sIEhhc2hTZXQ8Y29uc3QgU2ltcGxl
Rm9udERhdGEqPiogPSAwIC8qZmFsbGJhY2tGb250cyovLCBHbHlwaE92ZXJmbG93KiA9IDApIGNv
bnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CmluZGV4IGZkYjFjMDM4NDdlYzQ3OWM5NmNiZTM0MzQ3ZjJkMGRmMGNmZDdjOGQuLjczMGYzYjIy
MWIwMWFjZGJhZmQyOWIzMWFmYWE1MDM4YWIzM2VmZTYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzE0Nyw3ICszMTQ3LDcgQEAgYm9vbCBSZW5kZXJCbG9j
azo6aXNTZWxlY3Rpb25Sb290KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUdhcFJl
Y3RzIFJlbmRlckJsb2NrOjpzZWxlY3Rpb25HYXBSZWN0c0ZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCitHYXBSZWN0cyBSZW5kZXJCbG9jazo6c2VsZWN0
aW9uR2FwUmVjdHNGb3JSZXBhaW50KFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KQogewogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7CiAKQEAgLTY0OTEsNyArNjQ5MSw3IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRz
LCBib29sKiB3YXNGaXhlZCkgY29uc3QKICAgICAgICAgcXVhZHMuYXBwZW5kKFJlbmRlckJveDo6
bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoMCwgMCwgd2lkdGgoKSwgaGVpZ2h0KCkpLCBm
YWxzZSwgd2FzRml4ZWQpKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJCbG9jazo6cmVjdFdpdGhP
dXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
TGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpy
ZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IHIo
UmVuZGVyQm94OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIG91
dGxpbmVXaWR0aCkpOwogICAgIGlmIChpc0Fub255bW91c0Jsb2NrQ29udGludWF0aW9uKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDgxYTZlZDc0MDFkZWUyMzdj
MTFiYmYxODAwYmU0MzU5NDBiMjc2N2IuLjJhNWMxYWU3M2ZjYzM0ZTE4MTI5OTA3YjM4ZDVmNWFk
N2Q4YWM1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0yMDUs
NyArMjA1LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb250YWluc05vblplcm9CaWRpTGV2ZWwo
KSBjb25zdDsKIAotICAgIEdhcFJlY3RzIHNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7CisgICAgR2FwUmVjdHMgc2VsZWN0
aW9uR2FwUmVjdHNGb3JSZXBhaW50KFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KTsKICAgICBMYXlvdXRSZWN0IGxvZ2ljYWxMZWZ0U2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrKiBy
b290QmxvY2ssIGNvbnN0IExheW91dFBvaW50JiByb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBj
b25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdEJsb2NrLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBzZWxPYmosIExheW91dFVuaXQgbG9n
aWNhbExlZnQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0
LCBjb25zdCBQYWludEluZm8qKTsKICAgICBMYXlvdXRSZWN0IGxvZ2ljYWxSaWdodFNlbGVjdGlv
bkdhcChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQb2ludCYgcm9vdEJsb2Nr
UGh5c2ljYWxQb3NpdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3RCbG9jaywK
QEAgLTc3MSwxNCArNzcxLDE0IEBAIHByaXZhdGU6CiAgICAgLy8gY2hpbGRyZW4uCiAgICAgdmly
dHVhbCBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCByZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3Q7CisgICAg
dmlydHVhbCBMYXlvdXRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyTGF5ZXJP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFJlbmRlclN0eWxlKiBvdXRsaW5lU3R5bGVGb3JSZXBhaW50KCkgY29uc3Q7
CiAgICAgCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGhvdmVyQW5jZXN0b3IoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRHJhZ1N0YXRlKGJvb2wgZHJhZ09uKTsKICAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRCZWNhbWVOb25JbmxpbmUoUmVuZGVyT2JqZWN0KiBjaGlsZCk7CiAKLSAg
ICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgLypjbGlwVG9WaXNpYmxlQ29udGVudCov
KQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJM
YXllck9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCAvKmNsaXBUb1Zpc2libGVDb250ZW50
Ki8pCiAgICAgewogICAgICAgICByZXR1cm4gc2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KHJl
cGFpbnRDb250YWluZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKaW5kZXggNTI0MDgyZTI2YTRiZDhjYTA4MjcxN2ZhZGUxYzM0NWU1MzcxZTgzNi4uYzcwMzg1
MmY5NWQzM2Q0MWFhNDk5OTQyNzEyZjc1OTNlMmQxYWQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKQEAgLTQ1Miw3ICs0NTIsNyBAQCBGbG9hdFF1YWQgUmVuZGVyQm94
OjphYnNvbHV0ZUNvbnRlbnRRdWFkKCkgY29uc3QKICAgICByZXR1cm4gbG9jYWxUb0Fic29sdXRl
UXVhZChGbG9hdFJlY3QocmVjdCkpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlckJveDo6b3V0bGlu
ZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IExheW91dFBvaW50KiBjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlv
dXRSZWN0IFJlbmRlckJveDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFBvaW50KiBjYWNoZWRPZmZzZXRUb1JlcGFpbnRD
b250YWluZXIpIGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCBib3ggPSBib3JkZXJCb3VuZGluZ0Jv
eCgpOwogICAgIGFkanVzdFJlY3RGb3JPdXRsaW5lQW5kU2hhZG93KGJveCk7CkBAIC0xMjYwLDcg
KzEyNjAsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6cGVycGVuZGljdWxhckNvbnRhaW5pbmdC
bG9ja0xvZ2ljYWxIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBjYi0+Y29tcHV0ZUNvbnRlbnRC
b3hMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHRMZW5ndGgudmFsdWUoKSk7CiB9CiAKLXZvaWQg
UmVuZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0
YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdAordm9pZCBSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyTGF5
ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3Jt
cywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5v
dCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXIgPT0g
dGhpcykKICAgICAgICAgcmV0dXJuOwpAQCAtMTMyMiw3ICsxMzIyLDcgQEAgdm9pZCBSZW5kZXJC
b3g6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIGJvb2wKICAgICBvLT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIs
IGZpeGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSwgRG9Ob3RBcHBseUNvbnRhaW5l
ckZsaXAsIHdhc0ZpeGVkKTsKIH0KIAotY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJCb3g6OnB1
c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9y
VG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJl
bmRlck9iamVjdCogUmVuZGVyQm94OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRl
ckxheWVyT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0
cnlNYXApIGNvbnN0CiB7CiAgICAgQVNTRVJUKGFuY2VzdG9yVG9TdG9wQXQgIT0gdGhpcyk7CiAK
QEAgLTE0NzUsNyArMTQ3NSw3IEBAIHZvaWQgUmVuZGVyQm94OjpkZWxldGVMaW5lQm94V3JhcHBl
cigpCiAgICAgfQogfQogCi1MYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0
CitMYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgaWYgKHN0eWxl
KCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYmICFlbmNsb3NpbmdMYXllcigpLT5oYXNWaXNp
YmxlQ29udGVudCgpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwpAQCAtMTUwMiw3ICsx
NTAyLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW4KICAgICByZXR1cm4gcjsKIH0KIAotdm9p
ZCBSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3Zv
aWQgUmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAg
ICAgLy8gVGhlIHJlY3Qgd2UgY29tcHV0ZSBhdCBlYWNoIHN0ZXAgaXMgc2hpZnRlZCBieSBvdXIg
eC95IG9mZnNldCBpbiB0aGUgcGFyZW50IGNvbnRhaW5lcidzIGNvb3JkaW5hdGUgc3BhY2UuCiAg
ICAgLy8gT25seSB3aGVuIHdlIGNyb3NzIGEgd3JpdGluZyBtb2RlIGJvdW5kYXJ5IHdpbGwgd2Ug
aGF2ZSB0byBwb3NzaWJseSBmbGlwRm9yV3JpdGluZ01vZGUgKHRvIGNvbnZlcnQgaW50byBhIG1v
cmUgYXBwcm9wcmlhdGUKQEAgLTM3NTksNyArMzc1OSw3IEBAIFJlbmRlckxheWVyKiBSZW5kZXJC
b3g6OmVuY2xvc2luZ0Zsb2F0UGFpbnRpbmdMYXllcigpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVu
ZGVyT2JqZWN0KiBjdXJyID0gdGhpczsKICAgICB3aGlsZSAoY3VycikgewotICAgICAgICBSZW5k
ZXJMYXllciogbGF5ZXIgPSBjdXJyLT5oYXNMYXllcigpICYmIGN1cnItPmlzQm94KCkgPyB0b1Jl
bmRlckJveE1vZGVsT2JqZWN0KGN1cnIpLT5sYXllcigpIDogMDsKKyAgICAgICAgUmVuZGVyTGF5
ZXIqIGxheWVyID0gY3Vyci0+aGFzTGF5ZXIoKSAmJiBjdXJyLT5pc0JveCgpID8gdG9SZW5kZXJM
YXllck9iamVjdChjdXJyKS0+bGF5ZXIoKSA6IDA7CiAgICAgICAgIGlmIChsYXllciAmJiBsYXll
ci0+aXNTZWxmUGFpbnRpbmdMYXllcigpKQogICAgICAgICAgICAgcmV0dXJuIGxheWVyOwogICAg
ICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmgKaW5kZXggOWYwNTc3ZTgyMDFhN2U4ZDlmYjQxMDUzYmE3M2Q2YTcxMjYzNjE1ZC4uNjI4ZDU4
NzRjYzE4OGEyOTI2YTBkYjcxNGU1YWNlODAzZDNmMGYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaApAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRSZWN0
IGNvbXB1dGVkQ1NTQ29udGVudEJveFJlY3QoKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KGJv
cmRlckxlZnQoKSArIGNvbXB1dGVkQ1NTUGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBjb21w
dXRlZENTU1BhZGRpbmdUb3AoKSwgY2xpZW50V2lkdGgoKSAtIGNvbXB1dGVkQ1NTUGFkZGluZ0xl
ZnQoKSAtIGNvbXB1dGVkQ1NTUGFkZGluZ1JpZ2h0KCksIGNsaWVudEhlaWdodCgpIC0gY29tcHV0
ZWRDU1NQYWRkaW5nVG9wKCkgLSBjb21wdXRlZENTU1BhZGRpbmdCb3R0b20oKSk7IH0KIAogICAg
IC8vIEJvdW5kcyBvZiB0aGUgb3V0bGluZSBib3ggaW4gYWJzb2x1dGUgY29vcmRzLiBSZXNwZWN0
cyB0cmFuc2Zvcm1zCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgTGF5b3V0UG9p
bnQqIGNhY2hlZE9mZnNldFRvUmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCBM
YXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckxheWVyT2JqZWN0KiAvKnJl
cGFpbnRDb250YWluZXIqLywgTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldFRvUmVwYWludENvbnRh
aW5lcikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJ
bnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKICAgICAvLyBVc2UgdGhpcyB3aXRoIGNh
dXRpb24hIE5vIHR5cGUgY2hlY2tpbmcgaXMgZG9uZSEKQEAgLTMwOCw4ICszMDgsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRJbmxpbmVCb3hXcmFwcGVyKElubGluZUJveCogYm94V3JhcHBlcikg
eyBtX2lubGluZUJveFdyYXBwZXIgPSBib3hXcmFwcGVyOyB9CiAgICAgdm9pZCBkZWxldGVMaW5l
Qm94V3JhcHBlcigpOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25z
dDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNl
KSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJl
cGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCB2b2lkIHJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKGNvbnN0IExheW91dFJl
Y3QmKTsKIApAQCAtNTE4LDggKzUxOCw4IEBAIHByb3RlY3RlZDoKICAgICAKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2VkKCkgY29uc3QgeyByZXR1cm4gaXNSZXBs
YWNlZCgpICYmICFpc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYs
IEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNG
aXhlZCA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiwgUmVuZGVyR2VvbWV0
cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5k
ZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFu
c2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlD
b250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgY29u
c3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVy
T2JqZWN0KiwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbWFw
QWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFu
c2Zvcm1TdGF0ZSYpIGNvbnN0OwogCiAgICAgdm9pZCBwYWludFJvb3RCb3hGaWxsTGF5ZXJzKGNv
bnN0IFBhaW50SW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAKaW5kZXggYTM1YTIwNmUyY2ZhYjBhMDgzMjEzOTAwOGNmMTNmNzE1
ZGFiYTBiMy4uOTBkYjc3ODQyZTZlM2E0NjUxODVmZDZmNmJmMGRkOWQzOTdiZTQ2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBA
IC0zMTYsMTYgKzMxNiwxMiBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRQYWlu
dEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEltYQogfQogCiBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QoTm9kZSogbm9kZSkKLSAgICA6IFJl
bmRlck9iamVjdChub2RlKQotICAgICwgbV9sYXllcigwKQorICAgIDogUmVuZGVyTGF5ZXJPYmpl
Y3Qobm9kZSkKIHsKIH0KIAogUmVuZGVyQm94TW9kZWxPYmplY3Q6On5SZW5kZXJCb3hNb2RlbE9i
amVjdCgpCiB7Ci0gICAgLy8gT3VyIGxheWVyIHNob3VsZCBoYXZlIGJlZW4gZGVzdHJveWVkIGFu
ZCBjbGVhcmVkIGJ5IG5vdwotICAgIEFTU0VSVCghaGFzTGF5ZXIoKSk7Ci0gICAgQVNTRVJUKCFt
X2xheWVyKTsKICAgICBpZiAoZ0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIpIHsKICAgICAgICAgZ0lt
YWdlUXVhbGl0eUNvbnRyb2xsZXItPm9iamVjdERlc3Ryb3llZCh0aGlzKTsKICAgICAgICAgaWYg
KGdJbWFnZVF1YWxpdHlDb250cm9sbGVyLT5pc0VtcHR5KCkpIHsKQEAgLTMzNSwxNCArMzMxLDYg
QEAgUmVuZGVyQm94TW9kZWxPYmplY3Q6On5SZW5kZXJCb3hNb2RlbE9iamVjdCgpCiAgICAgfQog
fQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkZXN0cm95TGF5ZXIoKQotewotICAgIEFT
U0VSVCghaGFzTGF5ZXIoKSk7IC8vIENhbGxlcnMgc2hvdWxkIGhhdmUgYWxyZWFkeSBjYWxsZWQg
c2V0SGFzTGF5ZXIoZmFsc2UpCi0gICAgQVNTRVJUKG1fbGF5ZXIpOwotICAgIG1fbGF5ZXItPmRl
c3Ryb3kocmVuZGVyQXJlbmEoKSk7Ci0gICAgbV9sYXllciA9IDA7Ci19Ci0KIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpCiB7CiAgICAgLy8gQSBjb250aW51YXRp
b24gb2YgdGhpcyBSZW5kZXJPYmplY3Qgc2hvdWxkIGJlIGRlc3Ryb3llZCBhdCBzdWJjbGFzc2Vz
LgpAQCAtMzUzLDEzICszNDEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojp3aWxsQmVE
ZXN0cm95ZWQoKQogICAgIGlmIChmaXJzdExldHRlclJlbWFpbmluZ1RleHQoKSkKICAgICAgICAg
c2V0Rmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KDApOwogCi0gICAgLy8gUmVuZGVyT2JqZWN0Ojp3
aWxsQmVEZXN0cm95ZWQgY2FsbHMgYmFjayB0byBkZXN0cm95TGF5ZXIoKSBmb3IgbGF5ZXIgZGVz
dHJ1Y3Rpb24KLSAgICBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpOwotfQotCi1ib29s
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fbGF5ZXIgJiYgbV9sYXllci0+aXNTZWxmUGFpbnRpbmdMYXllcigpOworICAg
IFJlbmRlckxheWVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKTsKIH0KIAogdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25z
dCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpCkBAIC00MDksMzIgKzM5MSwzMCBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNv
bnN0IFJlbmRlclN0eQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVuZGVyT2JqZWN0OjpzdHls
ZVdpbGxDaGFuZ2UoZGlmZiwgbmV3U3R5bGUpOworICAgIFJlbmRlckxheWVyT2JqZWN0OjpzdHls
ZVdpbGxDaGFuZ2UoZGlmZiwgbmV3U3R5bGUpOwogfQogCiB2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5
bGUqIG9sZFN0eWxlKQogewotICAgIFJlbmRlck9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwg
b2xkU3R5bGUpOworICAgIFJlbmRlckxheWVyT2JqZWN0OjpzdHlsZURpZENoYW5nZShkaWZmLCBv
bGRTdHlsZSk7CiAgICAgdXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CiAgICAgCiAgICAg
aWYgKHJlcXVpcmVzTGF5ZXIoKSkgewogICAgICAgICBpZiAoIWxheWVyKCkgJiYgbGF5ZXJDcmVh
dGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkpIHsKICAgICAgICAgICAgIGlmIChzX3dhc0Zsb2F0aW5n
ICYmIGlzRmxvYXRpbmcoKSkKICAgICAgICAgICAgICAgICBzZXRDaGlsZE5lZWRzTGF5b3V0KHRy
dWUpOwotICAgICAgICAgICAgbV9sYXllciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTGF5
ZXIodGhpcyk7Ci0gICAgICAgICAgICBzZXRIYXNMYXllcih0cnVlKTsKLSAgICAgICAgICAgIG1f
bGF5ZXItPmluc2VydE9ubHlUaGlzTGF5ZXIoKTsKKyAgICAgICAgICAgIGVuc3VyZUxheWVyKCk7
CiAgICAgICAgICAgICBpZiAocGFyZW50KCkgJiYgIW5lZWRzTGF5b3V0KCkgJiYgY29udGFpbmlu
Z0Jsb2NrKCkpIHsKLSAgICAgICAgICAgICAgICBtX2xheWVyLT5zZXRSZXBhaW50U3RhdHVzKE5l
ZWRzRnVsbFJlcGFpbnQpOworICAgICAgICAgICAgICAgIGxheWVyKCktPnNldFJlcGFpbnRTdGF0
dXMoTmVlZHNGdWxsUmVwYWludCk7CiAgICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgb25seSBv
bmUgbGF5ZXIgdG8gdXBkYXRlLCBpdCBpcyBub3Qgd29ydGggdXNpbmcgfGNhY2hlZE9mZnNldHwg
c2luY2UKICAgICAgICAgICAgICAgICAvLyB3ZSBhcmUgbm90IHN1cmUgdGhlIHZhbHVlIHdpbGwg
YmUgdXNlZC4KLSAgICAgICAgICAgICAgICBtX2xheWVyLT51cGRhdGVMYXllclBvc2l0aW9ucygw
KTsKKyAgICAgICAgICAgICAgICBsYXllcigpLT51cGRhdGVMYXllclBvc2l0aW9ucygwKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobGF5ZXIoKSAmJiBsYXllcigp
LT5wYXJlbnQoKSkgewogICAgICAgICBzZXRIYXNUcmFuc2Zvcm0oZmFsc2UpOyAvLyBFaXRoZXIg
YSB0cmFuc2Zvcm0gd2Fzbid0IHNwZWNpZmllZCBvciB0aGUgb2JqZWN0IGRvZXNuJ3Qgc3VwcG9y
dCB0cmFuc2Zvcm1zLCBzbyBqdXN0IG51bGwgb3V0IHRoZSBiaXQuCiAgICAgICAgIHNldEhhc1Jl
ZmxlY3Rpb24oZmFsc2UpOwotICAgICAgICBtX2xheWVyLT5yZW1vdmVPbmx5VGhpc0xheWVyKCk7
IC8vIGNhbGxzIGRlc3Ryb3lMYXllcigpIHdoaWNoIGNsZWFycyBtX2xheWVyCisgICAgICAgIGxh
eWVyKCktPnJlbW92ZU9ubHlUaGlzTGF5ZXIoKTsgLy8gY2FsbHMgZGVzdHJveUxheWVyKCkgd2hp
Y2ggY2xlYXJzIG1fbGF5ZXIKICAgICAgICAgaWYgKHNfd2FzRmxvYXRpbmcgJiYgaXNGbG9hdGlu
ZygpKQogICAgICAgICAgICAgc2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKICAgICAgICAgaWYg
KHNfaGFkVHJhbnNmb3JtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuaAppbmRleCBiMTRmNTNkMjFiNzc2YmI1NTNjYzQ5Mzk3M2QxMGY3OTFlYzQ0
MWVmLi44ZDdhNjU0OWFiODEyOGQ1MzZmNDE0NmI5MjhjN2JkNWE1ZmNlMTAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMjQsNyAr
MjQsNyBAQAogI2lmbmRlZiBSZW5kZXJCb3hNb2RlbE9iamVjdF9oCiAjZGVmaW5lIFJlbmRlckJv
eE1vZGVsT2JqZWN0X2gKIAotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJl
bmRlckxheWVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2hhZG93RGF0YS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIEtleWZyYW1lTGlzdDsKIC8vIFRoaXMg
Y2xhc3MgaXMgdGhlIGJhc2UgZm9yIGFsbCBvYmplY3RzIHRoYXQgYWRoZXJlIHRvIHRoZSBDU1Mg
Ym94IG1vZGVsIGFzIGRlc2NyaWJlZAogLy8gYXQgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEv
Ym94Lmh0bWwKIAotY2xhc3MgUmVuZGVyQm94TW9kZWxPYmplY3QgOiBwdWJsaWMgUmVuZGVyT2Jq
ZWN0IHsKK2NsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0IDogcHVibGljIFJlbmRlckxheWVyT2Jq
ZWN0IHsKIHB1YmxpYzoKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdChOb2RlKik7CiAgICAgdmly
dHVhbCB+UmVuZGVyQm94TW9kZWxPYmplY3QoKTsKQEAgLTc3LDggKzc3LDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdHlsZSk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJveE1vZGVsSW5m
b0Zyb21TdHlsZSgpOwogCi0gICAgYm9vbCBoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0Owot
ICAgIFJlbmRlckxheWVyKiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXI7IH0KICAgICB2
aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGlzUm9vdCgpIHx8IGlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGlzUmVsUG9zaXRpb25lZCgpIHx8IGlzVHJhbnNwYXJl
bnQoKSB8fCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNIaWRkZW5CYWNrZmFjZSgpIHx8IGhhc01hc2so
KSB8fCBoYXNSZWZsZWN0aW9uKCkgfHwgaGFzRmlsdGVyKCkgfHwgc3R5bGUoKS0+c3BlY2lmaWVz
Q29sdW1ucygpOyB9CiAKICAgICAvLyBUaGlzIHdpbGwgd29yayBvbiBpbmxpbmVzIHRvIHJldHVy
biB0aGUgYm91bmRpbmcgYm94IG9mIGFsbCBvZiB0aGUgbGluZXMnIGJvcmRlciBib3hlcy4KQEAg
LTE1NSw5ICsxNTMsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVU
b0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0
ZSYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgLy8gQ2FsbGVkIGJ5IFJlbmRlck9iamVjdDo6d2ls
bEJlRGVzdHJveWVkKCkgYW5kIGlzIHRoZSBvbmx5IHdheSBsYXllcnMgc2hvdWxkIGV2ZXIgYmUg
ZGVzdHJveWVkCi0gICAgdm9pZCBkZXN0cm95TGF5ZXIoKTsKLQogICAgIHZvaWQgaGlnaFF1YWxp
dHlSZXBhaW50VGltZXJGaXJlZChUaW1lcjxSZW5kZXJCb3hNb2RlbE9iamVjdD4qKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25TdGF0ZSBzKTsKQEAgLTI5
NiwxMCArMjkxLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCB0aGlja25lc3MsIGZsb2F0IGRyYXdUaGlja25lc3MsIEJveFNpZGUsIGNvbnN0IFJlbmRlclN0
eWxlKiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IsIEVCb3JkZXJTdHlsZSwg
QmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJv
b2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCi0gICAgZnJpZW5kIGNsYXNzIFJlbmRlclZp
ZXc7Ci0KLSAgICBSZW5kZXJMYXllciogbV9sYXllcjsKLSAgICAKICAgICAvLyBVc2VkIHRvIHN0
b3JlIHN0YXRlIGJldHdlZW4gc3R5bGVXaWxsQ2hhbmdlIGFuZCBzdHlsZURpZENoYW5nZQogICAg
IHN0YXRpYyBib29sIHNfd2FzRmxvYXRpbmc7CiAgICAgc3RhdGljIGJvb2wgc19oYWRMYXllcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmluZGV4
IGExZjUwZWQzMzMzMGQ1MDUwZTY0NjdhZTcwN2Q5MjcxY2Q3NDkzYmUuLjA5NTdlMGY3NzNjMDc4
N2U3NGE1MDgwMjJkODg0YmQxYWMwM2U2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgUmVuZGVy
R2VvbWV0cnlNYXA6Om1hcFRvQWJzb2x1dGUoVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRl
KSBjb25zdAogICAgIHRyYW5zZm9ybVN0YXRlLmZsYXR0ZW4oKTsgICAgCiB9CiAKLXZvaWQgUmVu
ZGVyR2VvbWV0cnlNYXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIp
Cit2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJl
bmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlckxheWVyT2JqZWN0KiBhbmNlc3RvclJl
bmRlcmVyKQogewogICAgIC8vIFdlIG5lZWQgdG8gcHVzaCBtYXBwaW5ncyBpbiByZXZlcnNlIG9y
ZGVyIGhlcmUsIHNvIGRvIGluc2VydGlvbnMgcmF0aGVyIHRoYW4gYXBwZW5kcy4KICAgICBUZW1w
b3JhcnlDaGFuZ2U8c2l6ZV90PiBwb3NpdGlvbkNoYW5nZShtX2luc2VydGlvblBvc2l0aW9uLCBt
X21hcHBpbmcuc2l6ZSgpKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5
TWFwOjpwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgY29u
c3QgUgogICAgICAgICBwdXNoKHJlbmRlcmVyLCB0b0xheW91dFNpemUobGF5ZXJPZmZzZXQpLCAv
KmFjY3VtdWxhdGluZ1RyYW5zZm9ybSovIHRydWUsIC8qaXNOb25Vbmlmb3JtKi8gZmFsc2UsIC8q
aXNGaXhlZFBvc2l0aW9uKi8gZmFsc2UsIC8qaGFzVHJhbnNmb3JtKi8gZmFsc2UpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3Rv
clJlbmRlcmVyID0gYW5jZXN0b3JMYXllciA/IGFuY2VzdG9yTGF5ZXItPnJlbmRlcmVyKCkgOiAw
OworICAgIGNvbnN0IFJlbmRlckxheWVyT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyID0gYW5jZXN0
b3JMYXllciA/IGFuY2VzdG9yTGF5ZXItPnJlbmRlcmVyKCkgOiAwOwogICAgIHB1c2hNYXBwaW5n
c1RvQW5jZXN0b3IocmVuZGVyZXIsIGFuY2VzdG9yUmVuZGVyZXIpOwogfQogCkBAIC0yMjAsNyAr
MjIwLDcgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaFZpZXcoY29uc3QgUmVuZGVyVmll
dyogdmlldywgY29uc3QgTGF5b3V0U2l6ZSYgc2Nyb2wKICAgICBtX21hcHBpbmcuaW5zZXJ0KG1f
aW5zZXJ0aW9uUG9zaXRpb24sIHN0ZXAucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBSZW5kZXJHZW9t
ZXRyeU1hcDo6cG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0
KiBhbmNlc3RvclJlbmRlcmVyKQordm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cG9wTWFwcGluZ3NU
b0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVyT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyKQogewog
ICAgIEFTU0VSVChtX21hcHBpbmcuc2l6ZSgpKTsKIApAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQg
UmVuZGVyR2VvbWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogYW5jZXN0CiAKIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnBvcE1hcHBpbmdz
VG9BbmNlc3Rvcihjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllcikKIHsKLSAgICBjb25z
dCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JSZW5kZXJlciA9IGFuY2VzdG9yTGF5ZXIg
PyBhbmNlc3RvckxheWVyLT5yZW5kZXJlcigpIDogMDsKKyAgICBjb25zdCBSZW5kZXJMYXllck9i
amVjdCogYW5jZXN0b3JSZW5kZXJlciA9IGFuY2VzdG9yTGF5ZXIgPyBhbmNlc3RvckxheWVyLT5y
ZW5kZXJlcigpIDogMDsKICAgICBwb3BNYXBwaW5nc1RvQW5jZXN0b3IoYW5jZXN0b3JSZW5kZXJl
cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9t
ZXRyeU1hcC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmgK
aW5kZXggNjgwMDJhODM3NGNmNDA4NDZkOGI2ZmFkNGRhNWQyYjFhYWMzMmU3NC4uY2MzYzlmMjA2
ZGFkNDQ1MGE5ZmNjYjQwYWQ5NDhkYjFmMWJiZGMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAg
IC8vIENhbGxlZCBieSBjb2RlIHdhbGtpbmcgdGhlIHJlbmRlcmVyIG9yIGxheWVyIHRyZWVzLgog
ICAgIHZvaWQgcHVzaE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJMYXllciosIGNvbnN0
IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyKTsKICAgICB2b2lkIHBvcE1hcHBpbmdzVG9BbmNl
c3Rvcihjb25zdCBSZW5kZXJMYXllciopOwotICAgIHZvaWQgcHVzaE1hcHBpbmdzVG9BbmNlc3Rv
cihjb25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0
b3JSZW5kZXJlcik7Ci0gICAgdm9pZCBwb3BNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVy
Qm94TW9kZWxPYmplY3QqKTsKKyAgICB2b2lkIHB1c2hNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3Qg
UmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyTGF5ZXJPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIp
OworICAgIHZvaWQgcG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVyT2JqZWN0
Kik7CiAgICAgCiAgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIHNob3VsZCBvbmx5IGJlIGNh
bGxlZCBieSByZW5kZXJlcnMgaW5zaWRlIGEgY2FsbCB0byBwdXNoTWFwcGluZ3NUb0FuY2VzdG9y
KCkuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggYTRi
MWM3OTMxMGU5YTFlMjYzMDVmNzdhZmUzYjYxYjM4MGJlNWExYi4uNjhjOWFlOTVmN2YzYjRlYTIx
MjM2YzA0OTE5NDA2ZmRhMzcwOTE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAKQEAgLTk1MSw3ICs5NTEsNyBAQCBMYXlvdXRSZWN0IFJlbmRlcklubGluZTo6
bGluZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29uc3QKICAgICByZXR1cm4gcmVjdDsK
IH0KIAotTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0
UmVjdCBSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxh
eWVyT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIC8vIE9ubHkgcnVuLWlu
cyBhcmUgYWxsb3dlZCBpbiBoZXJlIGR1cmluZyBsYXlvdXQuCiAgICAgQVNTRVJUKCF2aWV3KCkg
fHwgIXZpZXcoKS0+bGF5b3V0U3RhdGVFbmFibGVkKCkgfHwgaXNSdW5JbigpKTsKQEAgLTEwMDks
NyArMTAwOSw3IEBAIExheW91dFJlY3QgUmVuZGVySW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwCiAgICAgcmV0dXJuIHJlcGFpbnRS
ZWN0OwogfQogCi1MYXlvdXRSZWN0IFJlbmRlcklubGluZTo6cmVjdFdpdGhPdXRsaW5lRm9yUmVw
YWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBv
dXRsaW5lV2lkdGgpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlcklubGluZTo6cmVjdFdpdGhPdXRs
aW5lRm9yUmVwYWludChSZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0
VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCByKFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIG91
dGxpbmVXaWR0aCkpOwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyID0gZmlyc3RDaGlsZCgp
OyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmcoKSkgewpAQCAtMTAxOSw3ICsxMDE5LDcg
QEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnQKICAgICByZXR1cm4gcjsKIH0KIAotdm9pZCBSZW5k
ZXJJbmxpbmU6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQg
UmVuZGVySW5saW5lOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAg
ICAgaWYgKFJlbmRlclZpZXcqIHYgPSB2aWV3KCkpIHsKICAgICAgICAgLy8gTGF5b3V0U3RhdGUg
aXMgb25seSB2YWxpZCBmb3Igcm9vdC1yZWxhdGl2ZSByZXBhaW50aW5nCkBAIC0xMTA5LDcgKzEx
MDksNyBAQCBMYXlvdXRTaXplIFJlbmRlcklubGluZTo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5k
ZXJPYmplY3QqIGNvbnRhaW5lciwgY29uc3QgTGF5bwogICAgIHJldHVybiBvZmZzZXQ7CiB9CiAK
LXZvaWQgUmVuZGVySW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRy
YW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgYXBw
bHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVySW5saW5l
OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zv
cm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgYXBwbHlDb250YWluZXJGbGlwLCBib29s
KiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAocmVwYWludENvbnRhaW5lciA9PSB0aGlzKQog
ICAgICAgICByZXR1cm47CkBAIC0xMTU3LDcgKzExNTcsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6
bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgYgogICAgIG8tPm1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgZml4ZWQs
IHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlLCBhcHBseUNvbnRhaW5lckZsaXAsIHdhc0Zp
eGVkKTsKIH0KIAotY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJJbmxpbmU6OnB1c2hNYXBwaW5n
VG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQs
IFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9iamVj
dCogUmVuZGVySW5saW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVy
T2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXAp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGFuY2VzdG9yVG9TdG9wQXQgIT0gdGhpcyk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCA3MjIzMDBhYjgyOTg0ZGFhOWRm
YTI3Y2YyNzg4ZTgyNzQ3YjZmNDM5Li4wYzMwYzQyZTg1NmFmZWNhODI2YTE3NDQwYjJhYjI1MzE0
M2ZmMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC0xMzEs
MTIgKzEzMSwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRXaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIGxpbmVzQm91bmRpbmdCb3goKS53aWR0aCgpOyB9CiAgICAgdmly
dHVhbCBMYXlvdXRVbml0IG9mZnNldEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxpbmVzQm91bmRp
bmdCb3goKS5oZWlnaHQoKTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRs
aW5lV2lkdGgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29s
IGZpeGVkKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0Owor
ICAgIHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckxh
eWVyT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck9i
amVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQpIGNvbnN0Owog
Ci0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJh
bnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxp
cCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9i
amVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCog
YW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYsIEFw
cGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhl
ZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGlu
Z1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBS
ZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24g
cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAxMmMzYjkyNjcxNjkzNzQwNjZlMGIyZTQ5Zjky
YjBkNjAyNDljMjhmLi5hMzBjNDgxZDU5ZDVlYTE2ZTdmZTA0NDY1NDEzNDBmNGM2NTVlMmE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTEzMCw3ICsxMzAs
NyBAQCBib29sIENsaXBSZWN0OjppbnRlcnNlY3RzKGNvbnN0IEhpdFRlc3RQb2ludCYgaGl0VGVz
dFBvaW50KQogICAgIHJldHVybiBoaXRUZXN0UG9pbnQuaW50ZXJzZWN0cyhtX3JlY3QpOwogfQog
Ci1SZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVy
KQorUmVuZGVyTGF5ZXI6OlJlbmRlckxheWVyKFJlbmRlckxheWVyT2JqZWN0KiByZW5kZXJlcikK
ICAgICA6IG1faW5SZXNpemVNb2RlKGZhbHNlKQogICAgICwgbV9zY3JvbGxEaW1lbnNpb25zRGly
dHkodHJ1ZSkKICAgICAsIG1fbm9ybWFsRmxvd0xpc3REaXJ0eSh0cnVlKQpAQCAtMzg1LDcgKzM4
NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKExheW91dFBvaW50
KiBvZmZzZXRGcm9tUm9vdCwgVXBkYXRlTGF5ZXJQCiAgICAgICAgIC8vIExheW91dFN0YXRlIG91
dHNpZGUgdGhlIGxheW91dCgpIHBoYXNlIGFuZCB1c2UgaXQgaGVyZS4KICAgICAgICAgQVNTRVJU
KCF2aWV3LT5sYXlvdXRTdGF0ZUVuYWJsZWQoKSk7CiAKLSAgICAgICAgUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIgPSByZW5kZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50
KCk7CisgICAgICAgIFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gcmVuZGVy
ZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOwogICAgICAgICBMYXlvdXRSZWN0IG9sZFJlcGFp
bnRSZWN0ID0gbV9yZXBhaW50UmVjdDsKICAgICAgICAgTGF5b3V0UmVjdCBvbGRPdXRsaW5lQm94
ID0gbV9vdXRsaW5lQm94OwogICAgICAgICBjb21wdXRlUmVwYWludFJlY3RzKG9mZnNldEZyb21S
b290KTsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjb21wdXRlUmVwYWlu
dFJlY3RzKExheW91dFBvaW50KiBvZmZzZXRGcm9tUm9vdCkKIHsKICAgICBBU1NFUlQoIW1fdmlz
aWJsZUNvbnRlbnRTdGF0dXNEaXJ0eSk7CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICBS
ZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5l
ckZvclJlcGFpbnQoKTsKICAgICBtX3JlcGFpbnRSZWN0ID0gcmVuZGVyZXIoKS0+Y2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcik7CiAgICAgbV9vdXRsaW5lQm94
ID0gcmVuZGVyZXIoKS0+b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwg
b2Zmc2V0RnJvbVJvb3QpOwogfQpAQCAtNTkxLDEwICs1OTEsMTAgQEAgVHJhbnNmb3JtYXRpb25N
YXRyaXggUmVuZGVyTGF5ZXI6OnJlbmRlcmFibGVUcmFuc2Zvcm0oUGFpbnRCZWhhdmlvciBwYWlu
dEJlaGF2aW8KICAgICByZXR1cm4gKm1fdHJhbnNmb3JtOwogfQogCi1zdGF0aWMgYm9vbCBjaGVj
a0NvbnRhaW5pbmdCbG9ja0NoYWluRm9yUGFnaW5hdGlvbihSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVuZGVyZXIsIFJlbmRlckJveCogYW5jZXN0b3JDb2x1bW5zUmVuZGVyZXIpCitzdGF0aWMgYm9v
bCBjaGVja0NvbnRhaW5pbmdCbG9ja0NoYWluRm9yUGFnaW5hdGlvbihSZW5kZXJMYXllck9iamVj
dCogcmVuZGVyZXIsIFJlbmRlckJveCogYW5jZXN0b3JDb2x1bW5zUmVuZGVyZXIpCiB7CiAgICAg
UmVuZGVyVmlldyogdmlldyA9IHJlbmRlcmVyLT52aWV3KCk7Ci0gICAgUmVuZGVyQm94TW9kZWxP
YmplY3QqIHByZXZCbG9jayA9IHJlbmRlcmVyOworICAgIFJlbmRlckxheWVyT2JqZWN0KiBwcmV2
QmxvY2sgPSByZW5kZXJlcjsKICAgICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrOwogICAg
IGZvciAoY29udGFpbmluZ0Jsb2NrID0gcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpOwogICAg
ICAgICAgY29udGFpbmluZ0Jsb2NrICYmIGNvbnRhaW5pbmdCbG9jayAhPSB2aWV3ICYmIGNvbnRh
aW5pbmdCbG9jayAhPSBhbmNlc3RvckNvbHVtbnNSZW5kZXJlcjsKQEAgLTg1MSw3ICs4NTEsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKCkKICAgICB9CiAgICAgICAg
IAogICAgIGlmIChyZW5kZXJlcigpLT5pc1JlbFBvc2l0aW9uZWQoKSkgewotICAgICAgICBtX3Jl
bGF0aXZlT2Zmc2V0ID0gcmVuZGVyZXIoKS0+cmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpOworICAg
ICAgICBtX3JlbGF0aXZlT2Zmc2V0ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlcigp
KS0+cmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpOwogICAgICAgICBsb2NhbFBvaW50Lm1vdmUobV9y
ZWxhdGl2ZU9mZnNldCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9yZWxhdGl2ZU9mZnNldCA9
IExheW91dFNpemUoKTsKQEAgLTkxNCw3ICs5MTQsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5
ZXI6OnN0YWNraW5nQ29udGV4dCgpIGNvbnN0CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Bvc2l0
aW9uZWRDb250YWluZXIoUmVuZGVyTGF5ZXIqIGxheWVyKQogewotICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0KiBsYXllclJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyTGF5
ZXJPYmplY3QqIGxheWVyUmVuZGVyZXIgPSBsYXllci0+cmVuZGVyZXIoKTsKICAgICByZXR1cm4g
bGF5ZXItPmlzUm9vdExheWVyKCkgfHwgbGF5ZXJSZW5kZXJlci0+aXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkgfHwgbGF5ZXJSZW5kZXJlci0+aXNSZWxQb3NpdGlvbmVkKCkgfHwgbGF5ZXItPmhhc1Ry
YW5zZm9ybSgpOwogfQogCkBAIC0xNjQ1LDcgKzE2NDUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpz
Y3JvbGxUbyhpbnQgeCwgaW50IHkpCiAKICAgICB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVy
U2Nyb2xsKCk7CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9
IHJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICBSZW5kZXJMYXllck9iamVj
dCogcmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsK
ICAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlcigpLT5mcmFtZSgpOwogICAgIGlmIChmcmFtZSkg
ewogICAgICAgICAvLyBUaGUgY2FyZXQgcmVjdCBuZWVkcyB0byBiZSBpbnZhbGlkYXRlZCBhZnRl
ciBzY3JvbGxpbmcKQEAgLTQ2NzksNyArNDY3OSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNldEJh
Y2tpbmdOZWVkc1JlcGFpbnRJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcikKIH0KIAogLy8gU2lu
Y2Ugd2UncmUgb25seSBwYWludGluZyBub24tY29tcG9zaXRlZCBsYXllcnMsIHdlIGtub3cgdGhh
dCB0aGV5IGFsbCBzaGFyZSB0aGUgc2FtZSByZXBhaW50Q29udGFpbmVyLgotdm9pZCBSZW5kZXJM
YXllcjo6cmVwYWludEluY2x1ZGluZ05vbkNvbXBvc2l0aW5nRGVzY2VuZGFudHMoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCit2b2lkIFJlbmRlckxheWVyOjpyZXBhaW50
SW5jbHVkaW5nTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhSZW5kZXJMYXllck9iamVjdCogcmVw
YWludENvbnRhaW5lcikKIHsKICAgICByZW5kZXJlcigpLT5yZXBhaW50VXNpbmdDb250YWluZXIo
cmVwYWludENvbnRhaW5lciwgcmVuZGVyZXIoKS0+Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQocmVwYWludENvbnRhaW5lcikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5oCmluZGV4IDE4Njk2NTkwNTMxMTgxN2QxMmYwOTY0NGVkZGJlZDkyZjA1YTAwN2IuLmYzNmI4
MzMwYjFkZWE0ZTdmMDdiZTQ5Zjc3MDlmZDEzODRiZDZkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oCkBAIC0yNDUsMTAgKzI0NSwxMCBAQCBjbGFzcyBSZW5kZXJMYXll
ciA6IHB1YmxpYyBTY3JvbGxhYmxlQXJlYSB7CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIFJl
bmRlclJlcGxpY2E7CiAKLSAgICBSZW5kZXJMYXllcihSZW5kZXJCb3hNb2RlbE9iamVjdCopOwor
ICAgIFJlbmRlckxheWVyKFJlbmRlckxheWVyT2JqZWN0Kik7CiAgICAgflJlbmRlckxheWVyKCk7
CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBt
X3JlbmRlcmVyOyB9CisgICAgUmVuZGVyTGF5ZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZW5kZXJlcjsgfQogICAgIFJlbmRlckJveCogcmVuZGVyQm94KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZW5kZXJlciAmJiBtX3JlbmRlcmVyLT5pc0JveCgpID8gdG9SZW5kZXJCb3gobV9y
ZW5kZXJlcikgOiAwOyB9CiAgICAgUmVuZGVyTGF5ZXIqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyZW50OyB9CiAgICAgUmVuZGVyTGF5ZXIqIHByZXZpb3VzU2libGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fcHJldmlvdXM7IH0KQEAgLTI2OSw3ICsyNjksNyBAQCBwdWJsaWM6CiAgICAgLy8g
aWYgbGF5ZXIgY29tcG9zaXRpbmcgaXMgYmVpbmcgdXNlZCwKICAgICB2b2lkIHNldEJhY2tpbmdO
ZWVkc1JlcGFpbnQoKTsKICAgICB2b2lkIHNldEJhY2tpbmdOZWVkc1JlcGFpbnRJblJlY3QoY29u
c3QgTGF5b3V0UmVjdCYpOyAvLyByIGlzIGluIHRoZSBjb29yZGluYXRlIHNwYWNlIG9mIHRoZSBs
YXllcidzIHJlbmRlciBvYmplY3QKLSAgICB2b2lkIHJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3Np
dGluZ0Rlc2NlbmRhbnRzKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKTsK
KyAgICB2b2lkIHJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRzKFJlbmRl
ckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKTsKICNlbmRpZgogCiAgICAgdm9pZCBzdHls
ZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwpA
QCAtODU4LDcgKzg1OCw3IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyTGF5
ZXJCYWNraW5nOwogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllckNvbXBvc2l0b3I7Ci0gICAg
ZnJpZW5kIGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OworICAgIGZyaWVuZCBjbGFzcyBSZW5k
ZXJMYXllck9iamVjdDsKIAogICAgIC8vIE9ubHkgc2FmZSB0byBjYWxsIGZyb20gUmVuZGVyQm94
TW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcihSZW5kZXJBcmVuYSopCiAgICAgdm9pZCBkZXN0cm95
KFJlbmRlckFyZW5hKik7CkBAIC05MjYsNyArOTI2LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
bV9oYXNGaWx0ZXJJbmZvIDogMTsKICNlbmRpZgogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IG1fcmVuZGVyZXI7CisgICAgUmVuZGVyTGF5ZXJPYmplY3QqIG1fcmVuZGVyZXI7CiAKICAgICBS
ZW5kZXJMYXllciogbV9wYXJlbnQ7CiAgICAgUmVuZGVyTGF5ZXIqIG1fcHJldmlvdXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggZDg3MTg4
NThlYWY2YmNlNDE5MDA0YjYxOTQ5ZjJmZTE5MGIwZDM4Mi4uODVmZmFkN2U2YTJjMDcyNTI3N2U5
M2QyYWI4MTI0ZjJiOGQ3MmVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuaApAQCAtMTcwLDcgKzE3MCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAg
UGFzc093blB0cjxHcmFwaGljc0xheWVyPiBjcmVhdGVHcmFwaGljc0xheWVyKGNvbnN0IFN0cmlu
ZyYpOwogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1
cm4gbV9vd25pbmdMYXllci0+cmVuZGVyZXIoKTsgfQorICAgIFJlbmRlckxheWVyT2JqZWN0KiBy
ZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fb3duaW5nTGF5ZXItPnJlbmRlcmVyKCk7IH0KICAg
ICBSZW5kZXJMYXllckNvbXBvc2l0b3IqIGNvbXBvc2l0b3IoKSBjb25zdCB7IHJldHVybiBtX293
bmluZ0xheWVyLT5jb21wb3NpdG9yKCk7IH0KIAogICAgIHZvaWQgdXBkYXRlSW50ZXJuYWxIaWVy
YXJjaHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKaW5kZXggMjg2OWY2NjUzODAwZmM1NDA4YTEzZTJhMzcwZGUyNmQ1NjgxNjcw
NS4uOTRhNTg1OWNlYWJhNWI4Mjk4OWFlMDZiN2Y5ODlhZTEyZmFjYWNiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTUx
MCw3ICs1MTAsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQmFja2luZyhS
ZW5kZXJMYXllciogbGF5ZXIsIENvbXBvc2l0aW5nQ2hhbmdlUgogICAgICAgICAgICAgLy8gaXRz
IHJlcGxpY2EgR3JhcGhpY3NMYXllci4gSW4gcHJhY3RpY2UgdGhpcyBzaG91bGQgbmV2ZXIgaGFw
cGVuIGJlY2F1c2UgcmVmbGVjdGVlIGFuZCByZWZsZWN0aW9uIAogICAgICAgICAgICAgLy8gYXJl
IGJvdGggZWl0aGVyIGNvbXBvc2l0ZWQsIG9yIG5vdCBjb21wb3NpdGVkLgogICAgICAgICAgICAg
aWYgKGxheWVyLT5pc1JlZmxlY3Rpb24oKSkgewotICAgICAgICAgICAgICAgIFJlbmRlckxheWVy
KiBzb3VyY2VMYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QobGF5ZXItPnJlbmRlcmVyKCkt
PnBhcmVudCgpKS0+bGF5ZXIoKTsKKyAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogc291cmNl
TGF5ZXIgPSB0b1JlbmRlckxheWVyT2JqZWN0KGxheWVyLT5yZW5kZXJlcigpLT5wYXJlbnQoKSkt
PmxheWVyKCk7CiAgICAgICAgICAgICAgICAgaWYgKFJlbmRlckxheWVyQmFja2luZyogYmFja2lu
ZyA9IHNvdXJjZUxheWVyLT5iYWNraW5nKCkpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+cmVwbGljYUxheWVyKCkgPT0gbGF5ZXItPmJhY2tp
bmcoKS0+Z3JhcGhpY3NMYXllcigpKTsKICAgICAgICAgICAgICAgICAgICAgYmFja2luZy0+Z3Jh
cGhpY3NMYXllcigpLT5zZXRSZXBsaWNhdGVkQnlMYXllcigwKTsKQEAgLTU3Myw3ICs1NzMsNyBA
QCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVwYWludE9uQ29tcG9zaXRpbmdDaGFuZ2Uo
UmVuZGVyTGF5ZXIqIGxheWVyKQogICAgIGlmIChsYXllci0+cmVuZGVyZXIoKSAhPSBtX3JlbmRl
clZpZXcgJiYgIWxheWVyLT5yZW5kZXJlcigpLT5wYXJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBsYXllci0+cmVu
ZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOworICAgIFJlbmRlckxheWVyT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyID0gbGF5ZXItPnJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQo
KTsKICAgICBpZiAoIXJlcGFpbnRDb250YWluZXIpCiAgICAgICAgIHJlcGFpbnRDb250YWluZXIg
PSBtX3JlbmRlclZpZXc7CiAKQEAgLTE0MzksNyArMTQzOSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxh
eWVyKSBjCiAgICAgLy8gVGhlIGNvbXBvc2l0aW5nIHN0YXRlIG9mIGEgcmVmbGVjdGlvbiBzaG91
bGQgbWF0Y2ggdGhhdCBvZiBpdHMgcmVmbGVjdGVkIGxheWVyLgogICAgIGlmIChsYXllci0+aXNS
ZWZsZWN0aW9uKCkpIHsKICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7IC8v
IFRoZSBSZW5kZXJSZXBsaWNhJ3MgcGFyZW50IGlzIHRoZSBvYmplY3QgYmVpbmcgcmVmbGVjdGVk
LgotICAgICAgICBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpLT5sYXll
cigpOworICAgICAgICBsYXllciA9IHRvUmVuZGVyTGF5ZXJPYmplY3QocmVuZGVyZXIpLT5sYXll
cigpOwogICAgIH0KICAgICAvLyBUaGUgcm9vdCBsYXllciBhbHdheXMgaGFzIGEgY29tcG9zaXRp
bmcgbGF5ZXIsIGJ1dCBpdCBtYXkgbm90IGhhdmUgYmFja2luZy4KICAgICByZXR1cm4gcmVxdWly
ZXNDb21wb3NpdGluZ0ZvclRyYW5zZm9ybShyZW5kZXJlcikKQEAgLTE1MDMsNyArMTUwMyw3IEBA
IGNvbnN0IGNoYXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVhc29uRm9yQ29tcG9zaXRpbmco
Y29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGxh
eWVyLT5yZW5kZXJlcigpOwogICAgIGlmIChsYXllci0+aXNSZWZsZWN0aW9uKCkpIHsKICAgICAg
ICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7Ci0gICAgICAgIGxheWVyID0gdG9SZW5k
ZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlciktPmxheWVyKCk7CisgICAgICAgIGxheWVyID0gdG9S
ZW5kZXJMYXllck9iamVjdChyZW5kZXJlciktPmxheWVyKCk7CiAgICAgfQogCiAgICAgaWYgKHJl
cXVpcmVzQ29tcG9zaXRpbmdGb3JUcmFuc2Zvcm0ocmVuZGVyZXIpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmY1OGFhZDIz
NDQ2NTgwMGVhZjhlNDhkZmJiZjI0ZGI0YjllYjIyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck9iamVjdC5jcHAKQEAgLTAsMCArMSw3NiBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyT2JqZWN0LmgiCisKKyNpbmNs
dWRlICJSZW5kZXJMYXllci5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlbmRlckxheWVyT2JqZWN0OjpSZW5kZXJMYXllck9iamVjdChOb2RlKiBu
b2RlKQorICAgIDogUmVuZGVyT2JqZWN0KG5vZGUpCisgICAgLCBtX2xheWVyKDApCit7Cit9Owor
CitSZW5kZXJMYXllck9iamVjdDo6flJlbmRlckxheWVyT2JqZWN0KCkKK3sKKyAgICAvLyBPdXIg
bGF5ZXIgc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95ZWQgYW5kIGNsZWFyZWQgYnkgbm93CisgICAg
QVNTRVJUKCFoYXNMYXllcigpKTsKKyAgICBBU1NFUlQoIW1fbGF5ZXIpOworfQorCit2b2lkIFJl
bmRlckxheWVyT2JqZWN0OjpkZXN0cm95TGF5ZXIoKQoreworICAgIEFTU0VSVCghaGFzTGF5ZXIo
KSk7IC8vIENhbGxlcnMgc2hvdWxkIGhhdmUgYWxyZWFkeSBjYWxsZWQgc2V0SGFzTGF5ZXIoZmFs
c2UpCisgICAgQVNTRVJUKG1fbGF5ZXIpOworICAgIG1fbGF5ZXItPmRlc3Ryb3kocmVuZGVyQXJl
bmEoKSk7CisgICAgbV9sYXllciA9IDA7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXJPYmplY3Q6OmVu
c3VyZUxheWVyKCkKK3sKKyAgICBpZiAobV9sYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9sYXllciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTGF5ZXIodGhpcyk7CisgICAgc2V0
SGFzTGF5ZXIodHJ1ZSk7CisgICAgbV9sYXllci0+aW5zZXJ0T25seVRoaXNMYXllcigpOworfQor
Citib29sIFJlbmRlckxheWVyT2JqZWN0OjpoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fbGF5ZXIgJiYgbV9sYXllci0+aXNTZWxmUGFpbnRpbmdMYXllcigpOwor
fQorCit2b2lkIFJlbmRlckxheWVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQoreworICAgIC8v
IFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSB3ZSBkZXN0cm95IHRoZSBSZW5kZXJPYmplY3QuCisg
ICAgaWYgKG1fbGF5ZXIpCisgICAgICAgIG1fbGF5ZXItPmNsZWFyQ2xpcFJlY3RzKCk7CisKKyAg
ICAvLyBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCBjYWxscyBiYWNrIHRvIGRlc3Ryb3lM
YXllcigpIGZvciBsYXllciBkZXN0cnVjdGlvbgorICAgIFJlbmRlck9iamVjdDo6d2lsbEJlRGVz
dHJveWVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzY5MjMwZTkzMDM3
OGNjZDIyNGI3YzVmYjY5YWNjMmRhMmFkMzAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyT2JqZWN0LmgKQEAgLTAsMCArMSw3MCBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBS
ZW5kZXJMYXllck9iamVjdF9oCisjZGVmaW5lIFJlbmRlckxheWVyT2JqZWN0X2gKKworI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRl
ckxheWVyOworCitjbGFzcyBSZW5kZXJMYXllck9iamVjdCA6IHB1YmxpYyBSZW5kZXJPYmplY3Qg
eworcHVibGljOgorICAgIFJlbmRlckxheWVyT2JqZWN0KE5vZGUqKTsKKyAgICB2aXJ0dWFsIH5S
ZW5kZXJMYXllck9iamVjdCgpOworCisgICAgLy8gQ2FsbGVkIGJ5IFJlbmRlck9iamVjdDo6d2ls
bEJlRGVzdHJveWVkKCkgYW5kIGlzIHRoZSBvbmx5IHdheSBsYXllcnMgc2hvdWxkIGV2ZXIgYmUg
ZGVzdHJveWVkCisgICAgdm9pZCBkZXN0cm95TGF5ZXIoKTsKKworICAgIGJvb2wgaGFzU2VsZlBh
aW50aW5nTGF5ZXIoKSBjb25zdDsKKyAgICBSZW5kZXJMYXllciogbGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2xheWVyOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGVuc3VyZUxheWVyKCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgT1ZFUlJJREU7CisKK3ByaXZh
dGU6CisgICAgdmlydHVhbCBib29sIGlzTGF5ZXJCYXNlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gdHJ1ZTsgfQorCisgICAgUmVuZGVyTGF5ZXIqIG1fbGF5ZXI7Cit9OworCitpbmxpbmUgUmVu
ZGVyTGF5ZXJPYmplY3QqIHRvUmVuZGVyTGF5ZXJPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3Qp
Cit7CisgICAgQVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0LT5pc0xheWVyQmFzZSgpKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyTGF5ZXJPYmplY3QqPihvYmplY3QpOworfQorCitpbmxp
bmUgY29uc3QgUmVuZGVyTGF5ZXJPYmplY3QqIHRvUmVuZGVyTGF5ZXJPYmplY3QoY29uc3QgUmVu
ZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0LT5pc0xh
eWVyQmFzZSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVyTGF5ZXJPYmpl
Y3QqPihvYmplY3QpOworfQorCisvLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVu
bmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvUmVuZGVyTGF5ZXJPYmplY3QoY29uc3QgUmVuZGVyTGF5
ZXJPYmplY3QqKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVuZGVy
TGF5ZXJPYmplY3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJr
ZXIuY3BwCmluZGV4IDBkMmY0OGRkNTEwMWU3ZjRjN2MzNGVmYTA2MjNhOGIwYjg5MDQ4NzQuLjE2
MmFmZGEwMmMzYzdiNzNhZjNlMjYwYzFlYjBiOGE0YjE1MjkxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAgLTE3MDIsNyArMTcwMiw3IEBA
IHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6c2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUg
c3RhdGUpCiAgICAgICAgICAgICByb290LT5zZXRIYXNTZWxlY3RlZENoaWxkcmVuKHN0YXRlICE9
IFNlbGVjdGlvbk5vbmUpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlckxpc3RNYXJrZXI6OnNlbGVj
dGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KQorTGF5b3V0UmVjdCBSZW5kZXJMaXN0TWFya2Vy
OjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkKIHsKICAgICBBU1NFUlQoIW5lZWRzTGF5
b3V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaApp
bmRleCBkODhkOTIyYjBlNDI4M2NjYTQ1NjAzNWY0ZWViMTE3ZDgyYzhmNTJkLi41MjdkMzc0ZDYz
ZTI2ZmZjMzRjNmNhZTJlNWIxNDkwMmU0ZDRiZjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuICFpc0ltYWdlKCk7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25TdGF0ZSk7Ci0gICAgdmlydHVhbCBMYXlv
dXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSk7CisgICAgdmly
dHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSk7CiAg
ICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KIAogICAgIHZvaWQgdXBkYXRlTWFyZ2lucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAppbmRleCAxOTE2ZmEwYTkwOThhM2U1OTI3OTA4NjZjNDY0ZTdhMzMw
OTJiMzg3Li44YzYwMWFhNjE3NDJkNGY3NTk3MTFjYTk5MDA4MjNjMTdjMmM4NWU0IDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMzE5LDcgKzMxOSw3IEBA
IHZvaWQgUmVuZGVyT2JqZWN0OjphZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5k
ZXJPYmplY3QqIGJlZm9yZUNoaWxkKQogICAgIC8vIFRvIGF2b2lkIHRoZSBwcm9ibGVtIGFsbHRv
Z2V0aGVyLCBkZXRlY3QgZWFybHkgaWYgd2UncmUgaW5zaWRlIGEgaGlkZGVuIFNWRyBzdWJ0cmVl
CiAgICAgLy8gYW5kIHN0b3AgY3JlYXRpbmcgbGF5ZXJzIGF0IGFsbCBmb3IgdGhlc2UgY2FzZXMg
LSB0aGV5J3JlIG5vdCB1c2VkIGFueXdheXMuCiAgICAgaWYgKG5ld0NoaWxkLT5oYXNMYXllcigp
ICYmICFsYXllckNyZWF0aW9uQWxsb3dlZEZvclN1YnRyZWUoKSkKLSAgICAgICAgdG9SZW5kZXJC
b3hNb2RlbE9iamVjdChuZXdDaGlsZCktPmxheWVyKCktPnJlbW92ZU9ubHlUaGlzTGF5ZXIoKTsK
KyAgICAgICAgdG9SZW5kZXJMYXllck9iamVjdChuZXdDaGlsZCktPmxheWVyKCktPnJlbW92ZU9u
bHlUaGlzTGF5ZXIoKTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZUNoaWxkKFJlbmRl
ck9iamVjdCogb2xkQ2hpbGQpCkBAIC00NDEsNyArNDQxLDcgQEAgc3RhdGljIHZvaWQgYWRkTGF5
ZXJzKFJlbmRlck9iamVjdCogb2JqLCBSZW5kZXJMYXllciogcGFyZW50TGF5ZXIsIFJlbmRlck9i
amVjdCoKICAgICAgICAgICAgIGJlZm9yZUNoaWxkID0gbmV3T2JqZWN0LT5wYXJlbnQoKS0+Zmlu
ZE5leHRMYXllcihwYXJlbnRMYXllciwgbmV3T2JqZWN0KTsKICAgICAgICAgICAgIG5ld09iamVj
dCA9IDA7CiAgICAgICAgIH0KLSAgICAgICAgcGFyZW50TGF5ZXItPmFkZENoaWxkKHRvUmVuZGVy
Qm94TW9kZWxPYmplY3Qob2JqKS0+bGF5ZXIoKSwgYmVmb3JlQ2hpbGQpOworICAgICAgICBwYXJl
bnRMYXllci0+YWRkQ2hpbGQodG9SZW5kZXJMYXllck9iamVjdChvYmopLT5sYXllcigpLCBiZWZv
cmVDaGlsZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2
b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlTGF5ZXJzKFJlbmRlckxheWVyKiBwYXJlbnRMYXllcikK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc0xheWVyKCkpIHsKLSAgICAgICAgcGFyZW50
TGF5ZXItPnJlbW92ZUNoaWxkKHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCkp
OworICAgICAgICBwYXJlbnRMYXllci0+cmVtb3ZlQ2hpbGQodG9SZW5kZXJMYXllck9iamVjdCh0
aGlzKS0+bGF5ZXIoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ3OSw3ICs0Nzks
NyBAQCB2b2lkIFJlbmRlck9iamVjdDo6bW92ZUxheWVycyhSZW5kZXJMYXllciogb2xkUGFyZW50
LCBSZW5kZXJMYXllciogbmV3UGFyZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaGFz
TGF5ZXIoKSkgewotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVs
T2JqZWN0KHRoaXMpLT5sYXllcigpOworICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1Jl
bmRlckxheWVyT2JqZWN0KHRoaXMpLT5sYXllcigpOwogICAgICAgICBBU1NFUlQob2xkUGFyZW50
ID09IGxheWVyLT5wYXJlbnQoKSk7CiAgICAgICAgIGlmIChvbGRQYXJlbnQpCiAgICAgICAgICAg
ICBvbGRQYXJlbnQtPnJlbW92ZUNoaWxkKGxheWVyKTsKQEAgLTQ5OSw3ICs0OTksNyBAQCBSZW5k
ZXJMYXllciogUmVuZGVyT2JqZWN0OjpmaW5kTmV4dExheWVyKFJlbmRlckxheWVyKiBwYXJlbnRM
YXllciwgUmVuZGVyT2JqZWN0KgogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIFN0ZXAgMTog
SWYgb3VyIGxheWVyIGlzIGEgY2hpbGQgb2YgdGhlIGRlc2lyZWQgcGFyZW50LCB0aGVuIHJldHVy
biBvdXIgbGF5ZXIuCi0gICAgUmVuZGVyTGF5ZXIqIG91ckxheWVyID0gaGFzTGF5ZXIoKSA/IHRv
UmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCkgOiAwOworICAgIFJlbmRlckxheWVy
KiBvdXJMYXllciA9IGhhc0xheWVyKCkgPyB0b1JlbmRlckxheWVyT2JqZWN0KHRoaXMpLT5sYXll
cigpIDogMDsKICAgICBpZiAob3VyTGF5ZXIgJiYgb3VyTGF5ZXItPnBhcmVudCgpID09IHBhcmVu
dExheWVyKQogICAgICAgICByZXR1cm4gb3VyTGF5ZXI7CiAKQEAgLTUzMSw3ICs1MzEsNyBAQCBS
ZW5kZXJMYXllciogUmVuZGVyT2JqZWN0OjplbmNsb3NpbmdMYXllcigpIGNvbnN0CiB7CiAgICAg
Y29uc3QgUmVuZGVyT2JqZWN0KiBjdXJyID0gdGhpczsKICAgICB3aGlsZSAoY3VycikgewotICAg
ICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBjdXJyLT5oYXNMYXllcigpID8gdG9SZW5kZXJCb3hN
b2RlbE9iamVjdChjdXJyKS0+bGF5ZXIoKSA6IDA7CisgICAgICAgIFJlbmRlckxheWVyKiBsYXll
ciA9IGN1cnItPmhhc0xheWVyKCkgPyB0b1JlbmRlckxheWVyT2JqZWN0KGN1cnIpLT5sYXllcigp
IDogMDsKICAgICAgICAgaWYgKGxheWVyKQogICAgICAgICAgICAgcmV0dXJuIGxheWVyOwogICAg
ICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7CkBAIC03MDgsMTMgKzcwOCwxMyBAQCB2b2lkIFJl
bmRlck9iamVjdDo6aW52YWxpZGF0ZUNvbnRhaW5lclByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQog
dm9pZCBSZW5kZXJPYmplY3Q6OnNldExheWVyTmVlZHNGdWxsUmVwYWludCgpCiB7CiAgICAgQVNT
RVJUKGhhc0xheWVyKCkpOwotICAgIHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVy
KCktPnNldFJlcGFpbnRTdGF0dXMoTmVlZHNGdWxsUmVwYWludCk7CisgICAgdG9SZW5kZXJMYXll
ck9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50
KTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OnNldExheWVyTmVlZHNGdWxsUmVwYWludEZvclBv
c2l0aW9uZWRNb3ZlbWVudExheW91dCgpCiB7CiAgICAgQVNTRVJUKGhhc0xheWVyKCkpOwotICAg
IHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCktPnNldFJlcGFpbnRTdGF0dXMo
TmVlZHNGdWxsUmVwYWludEZvclBvc2l0aW9uZWRNb3ZlbWVudExheW91dCk7CisgICAgdG9SZW5k
ZXJMYXllck9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxS
ZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KTsKIH0KIAogUmVuZGVyQmxvY2sqIFJl
bmRlck9iamVjdDo6Y29udGFpbmluZ0Jsb2NrKCkgY29uc3QKQEAgLTExOTcsMTMgKzExOTcsMTMg
QEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
JikKIHsKIH0KIAotUmVuZGVyQm94TW9kZWxPYmplY3QqIFJlbmRlck9iamVjdDo6Y29udGFpbmVy
Rm9yUmVwYWludCgpIGNvbnN0CitSZW5kZXJMYXllck9iamVjdCogUmVuZGVyT2JqZWN0Ojpjb250
YWluZXJGb3JSZXBhaW50KCkgY29uc3QKIHsKICAgICBSZW5kZXJWaWV3KiB2ID0gdmlldygpOwog
ICAgIGlmICghdikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIgPSAwOworICAgIFJlbmRlckxheWVyT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyID0gMDsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAg
ICBpZiAodi0+dXNlc0NvbXBvc2l0aW5nKCkpIHsKQEAgLTEyMzMsNyArMTIzMyw3IEBAIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5lckZvclJlcGFpbnQoKSBjb25z
dAogICAgIHJldHVybiByZXBhaW50Q29udGFpbmVyOwogfQogCi12b2lkIFJlbmRlck9iamVjdDo6
cmVwYWludFVzaW5nQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBjb25zdCBMYXlvdXRSZWN0JiByLCBib29sIGltbWVkaWF0ZSkKK3ZvaWQgUmVuZGVyT2Jq
ZWN0OjpyZXBhaW50VXNpbmdDb250YWluZXIoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIGNvbnN0IExheW91dFJlY3QmIHIsIGJvb2wgaW1tZWRpYXRlKQogewogICAgIGlmICgh
cmVwYWludENvbnRhaW5lcikgewogICAgICAgICB2aWV3KCktPnJlcGFpbnRWaWV3UmVjdGFuZ2xl
KHIsIGltbWVkaWF0ZSk7CkBAIC0xMjg2LDcgKzEyODYsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6
cmVwYWludChib29sIGltbWVkaWF0ZSkKICAgICBpZiAodmlldy0+cHJpbnRpbmcoKSkKICAgICAg
ICAgcmV0dXJuOyAvLyBEb24ndCByZXBhaW50IGlmIHdlJ3JlIHByaW50aW5nLgogCi0gICAgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBjb250YWluZXJGb3JSZXBhaW50
KCk7CisgICAgUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBjb250YWluZXJG
b3JSZXBhaW50KCk7CiAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIg
PyByZXBhaW50Q29udGFpbmVyIDogdmlldywgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
cmVwYWludENvbnRhaW5lciksIGltbWVkaWF0ZSk7CiB9CiAKQEAgLTEzMDYsNyArMTMwNiw3IEBA
IHZvaWQgUmVuZGVyT2JqZWN0OjpyZXBhaW50UmVjdGFuZ2xlKGNvbnN0IExheW91dFJlY3QmIHIs
IGJvb2wgaW1tZWRpYXRlKQogICAgIC8vIHJlcGFpbnQgY29udGFpbmVycy4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzA4CiAgICAgZGlydHlSZWN0Lm1vdmUodmll
dy0+bGF5b3V0RGVsdGEoKSk7CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciA9IGNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICBSZW5kZXJMYXllck9iamVjdCog
cmVwYWludENvbnRhaW5lciA9IGNvbnRhaW5lckZvclJlcGFpbnQoKTsKICAgICBjb21wdXRlUmVj
dEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgZGlydHlSZWN0KTsKICAgICByZXBhaW50VXNp
bmdDb250YWluZXIocmVwYWludENvbnRhaW5lciA/IHJlcGFpbnRDb250YWluZXIgOiB2aWV3LCBk
aXJ0eVJlY3QsIGltbWVkaWF0ZSk7CiB9CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBJbnRSZWN0IFJl
bmRlck9iamVjdDo6cGl4ZWxTbmFwcGVkQWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkgY29u
c3QKICAgICByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChhYnNvbHV0ZUNsaXBwZWRPdmVyZmxv
d1JlY3QoKSk7CiB9CiAKLWJvb2wgUmVuZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5l
ZWRlZChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0
UmVjdCYgb2xkQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRPdXRsaW5lQm94LCBjb25zdCBM
YXlvdXRSZWN0KiBuZXdCb3VuZHNQdHIsIGNvbnN0IExheW91dFJlY3QqIG5ld091dGxpbmVCb3hS
ZWN0UHRyKQorYm9vbCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKFJl
bmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRC
b3VuZHMsIGNvbnN0IExheW91dFJlY3QmIG9sZE91dGxpbmVCb3gsIGNvbnN0IExheW91dFJlY3Qq
IG5ld0JvdW5kc1B0ciwgY29uc3QgTGF5b3V0UmVjdCogbmV3T3V0bGluZUJveFJlY3RQdHIpCiB7
CiAgICAgUmVuZGVyVmlldyogdiA9IHZpZXcoKTsKICAgICBpZiAodi0+cHJpbnRpbmcoKSkKQEAg
LTE0NDAsMjAgKzE0NDAsMjAgQEAgYm9vbCBSZW5kZXJPYmplY3Q6OmNoZWNrRm9yUmVwYWludER1
cmluZ0xheW91dCgpIGNvbnN0CiAgICAgcmV0dXJuICFkb2N1bWVudCgpLT52aWV3KCktPm5lZWRz
RnVsbFJlcGFpbnQoKSAmJiAhaGFzTGF5ZXIoKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJPYmpl
Y3Q6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdAorTGF5b3V0UmVjdCBS
ZW5kZXJPYmplY3Q6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdAogewogICAg
IExheW91dFJlY3QgcihjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFp
bmVyKSk7CiAgICAgci5pbmZsYXRlKG91dGxpbmVXaWR0aCk7CiAgICAgcmV0dXJuIHI7CiB9CiAK
LUxheW91dFJlY3QgUmVuZGVyT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCopIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqKSBjb25zdAogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiB9CiAK
LXZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNv
bnN0Cit2b2lkIFJlbmRlck9iamVjdDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVy
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBj
b25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09IHRoaXMpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE0ODQsNyArMTQ4NCw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsCiAgICAgfQog
fQogCi12b2lkIFJlbmRlck9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqLCBGbG9hdFJlY3QmLCBib29sKSBjb25zdAordm9pZCBSZW5kZXJPYmpl
Y3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyT2JqZWN0KiwgRmxvYXRS
ZWN0JiwgYm9vbCkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTE2
NDUsNyArMTY0NSw3IEBAIFN0eWxlRGlmZmVyZW5jZSBSZW5kZXJPYmplY3Q6OmFkanVzdFN0eWxl
RGlmZmVyZW5jZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgdW5zaWduCiAgICAgICAgIC8vIFRleHQg
bm9kZXMgc2hhcmUgc3R5bGUgd2l0aCB0aGVpciBwYXJlbnRzIGJ1dCB0cmFuc2Zvcm1zIGRvbid0
IGFwcGx5IHRvIHRoZW0sCiAgICAgICAgIC8vIGhlbmNlIHRoZSAhaXNUZXh0KCkgY2hlY2suCiAg
ICAgICAgIC8vIEZJWE1FOiB3aGVuIHRyYW5zZm9ybXMgYXJlIHRha2VuIGludG8gYWNjb3VudCBm
b3Igb3ZlcmZsb3csIHdlIHdpbGwgbmVlZCB0byBkbyBhIGxheW91dC4KLSAgICAgICAgaWYgKCFp
c1RleHQoKSAmJiAoIWhhc0xheWVyKCkgfHwgIXRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcykt
PmxheWVyKCktPmlzQ29tcG9zaXRlZCgpKSkgeworICAgICAgICBpZiAoIWlzVGV4dCgpICYmICgh
aGFzTGF5ZXIoKSB8fCAhdG9SZW5kZXJMYXllck9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+aXNDb21w
b3NpdGVkKCkpKSB7CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHNldCBhdCBsZWFzdCBTaW1w
bGlmaWVkTGF5b3V0LCBidXQgaWYgUG9zaXRpb25lZE1vdmVtZW50T25seSBpcyBhbHJlYWR5IHNl
dAogICAgICAgICAgICAgLy8gdGhlbiB3ZSBhY3R1YWxseSBuZWVkIFNpbXBsaWZpZWRMYXlvdXRB
bmRQb3NpdGlvbmVkTW92ZW1lbnQuCiAgICAgICAgICAgICBpZiAoIWhhc0xheWVyKCkpCkBAIC0x
NjYxLDcgKzE2NjEsNyBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyT2JqZWN0OjphZGp1c3RTdHls
ZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIHVuc2lnbgogICAgIC8vIElmIG9wYWNp
dHkgY2hhbmdlZCwgYW5kIHdlIGFyZSBub3QgY29tcG9zaXRlZCwgbmVlZCB0byByZXBhaW50IChh
bHNvCiAgICAgLy8gaWdub3JpbmcgdGV4dCBub2RlcykKICAgICBpZiAoY29udGV4dFNlbnNpdGl2
ZVByb3BlcnRpZXMgJiBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlPcGFjaXR5KSB7Ci0gICAgICAg
IGlmICghaXNUZXh0KCkgJiYgKCFoYXNMYXllcigpIHx8ICF0b1JlbmRlckJveE1vZGVsT2JqZWN0
KHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkpCisgICAgICAgIGlmICghaXNUZXh0KCkg
JiYgKCFoYXNMYXllcigpIHx8ICF0b1JlbmRlckxheWVyT2JqZWN0KHRoaXMpLT5sYXllcigpLT5p
c0NvbXBvc2l0ZWQoKSkpCiAgICAgICAgICAgICBkaWZmID0gU3R5bGVEaWZmZXJlbmNlUmVwYWlu
dExheWVyOwogICAgICAgICBlbHNlIGlmIChkaWZmIDwgU3R5bGVEaWZmZXJlbmNlUmVjb21wb3Np
dGVMYXllcikKICAgICAgICAgICAgIGRpZmYgPSBTdHlsZURpZmZlcmVuY2VSZWNvbXBvc2l0ZUxh
eWVyOwpAQCAtMTY2OSw3ICsxNjY5LDcgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlck9iamVjdDo6
YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCB1bnNpZ24KICAgICAK
ICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgaWYgKChjb250ZXh0U2Vuc2l0aXZlUHJvcGVy
dGllcyAmIENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eUZpbHRlcikgJiYgaGFzTGF5ZXIoKSkgewot
ICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMp
LT5sYXllcigpOworICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckxheWVyT2Jq
ZWN0KHRoaXMpLT5sYXllcigpOwogICAgICAgICBpZiAoIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSB8
fCBsYXllci0+cGFpbnRzV2l0aEZpbHRlcnMoKSkKICAgICAgICAgICAgIGRpZmYgPSBTdHlsZURp
ZmZlcmVuY2VSZXBhaW50TGF5ZXI7CiAgICAgICAgIGVsc2UgaWYgKGRpZmYgPCBTdHlsZURpZmZl
cmVuY2VSZWNvbXBvc2l0ZUxheWVyKQpAQCAtMTY4MCw4ICsxNjgwLDggQEAgU3R5bGVEaWZmZXJl
bmNlIFJlbmRlck9iamVjdDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSBk
aWZmLCB1bnNpZ24KICAgICAvLyBUaGUgYW5zd2VyIHRvIHJlcXVpcmVzTGF5ZXIoKSBmb3IgcGx1
Z2lucyBhbmQgaWZyYW1lcyBjYW4gY2hhbmdlIG91dHNpZGUgb2YgdGhlIHN0eWxlIHN5c3RlbSwK
ICAgICAvLyBzaW5jZSBpdCBkZXBlbmRzIG9uIHdoZXRoZXIgd2UgZGVjaWRlIHRvIGNvbXBvc2l0
ZSB0aGVzZSBlbGVtZW50cy4gV2hlbiB0aGUgbGF5ZXIgc3RhdHVzIG9mCiAgICAgLy8gb25lIG9m
IHRoZXNlIGVsZW1lbnRzIGNoYW5nZXMsIHdlIG5lZWQgdG8gZm9yY2UgYSBsYXlvdXQuCi0gICAg
aWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlRXF1YWwgJiYgc3R5bGUoKSAmJiBpc0JveE1vZGVs
T2JqZWN0KCkpIHsKLSAgICAgICAgaWYgKGhhc0xheWVyKCkgIT0gdG9SZW5kZXJCb3hNb2RlbE9i
amVjdCh0aGlzKS0+cmVxdWlyZXNMYXllcigpKQorICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVy
ZW5jZUVxdWFsICYmIHN0eWxlKCkgJiYgaXNMYXllckJhc2UoKSkgeworICAgICAgICBpZiAoaGFz
TGF5ZXIoKSAhPSB0b1JlbmRlckxheWVyT2JqZWN0KHRoaXMpLT5yZXF1aXJlc0xheWVyKCkpCiAg
ICAgICAgICAgICBkaWZmID0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogICAgIH0KICNlbHNlCkBA
IC0xOTgzLDcgKzE5ODMsNyBAQCBGbG9hdFBvaW50IFJlbmRlck9iamVjdDo6YWJzb2x1dGVUb0xv
Y2FsKGNvbnN0IEZsb2F0UG9pbnQmIGNvbnRhaW5lclBvaW50LCBib29sCiAgICAgcmV0dXJuIHRy
YW5zZm9ybVN0YXRlLmxhc3RQbGFuYXJQb2ludCgpOwogfQogCi12b2lkIFJlbmRlck9iamVjdDo6
bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNm
b3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QK
K3ZvaWQgUmVuZGVyT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVyT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5z
Zm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wq
IHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09IHRoaXMpCiAg
ICAgICAgIHJldHVybjsKQEAgLTIwMDgsNyArMjAwOCw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpt
YXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBiCiAgICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBmaXhlZCwg
dXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUsIERvTm90QXBwbHlDb250YWluZXJGbGlwLCB3
YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3Rv
cEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5kZXJP
YmplY3QqIFJlbmRlck9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJM
YXllck9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5
TWFwKSBjb25zdAogewogICAgIEFTU0VSVF9VTlVTRUQoYW5jZXN0b3JUb1N0b3BBdCwgYW5jZXN0
b3JUb1N0b3BBdCAhPSB0aGlzKTsKIApAQCAtMjA0MSw3ICsyMDQxLDcgQEAgYm9vbCBSZW5kZXJP
YmplY3Q6OnNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0
KiBjb250YWluZXIKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5HKQogICAgIC8vIGhhc1RyYW5zZm9y
bSgpIGluZGljYXRlcyB3aGV0aGVyIHRoZSBvYmplY3QgaGFzIHRyYW5zZm9ybSwgdHJhbnNmb3Jt
LXN0eWxlIG9yIHBlcnNwZWN0aXZlLiBXZSBqdXN0IGNhcmUgYWJvdXQgdHJhbnNmb3JtLAogICAg
IC8vIHNvIGNoZWNrIHRoZSBsYXllcidzIHRyYW5zZm9ybSBkaXJlY3RseS4KLSAgICByZXR1cm4g
KGhhc0xheWVyKCkgJiYgdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+dHJh
bnNmb3JtKCkpIHx8IChjb250YWluZXJPYmplY3QgJiYgY29udGFpbmVyT2JqZWN0LT5zdHlsZSgp
LT5oYXNQZXJzcGVjdGl2ZSgpKTsKKyAgICByZXR1cm4gKGhhc0xheWVyKCkgJiYgdG9SZW5kZXJM
YXllck9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+dHJhbnNmb3JtKCkpIHx8IChjb250YWluZXJPYmpl
Y3QgJiYgY29udGFpbmVyT2JqZWN0LT5zdHlsZSgpLT5oYXNQZXJzcGVjdGl2ZSgpKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRhaW5lck9iamVjdCk7CiAgICAgcmV0dXJuIGhhc1RyYW5z
Zm9ybSgpOwpAQCAtMjA1MywxNCArMjA1MywxNCBAQCB2b2lkIFJlbmRlck9iamVjdDo6Z2V0VHJh
bnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIGNvbnRhaW5lck9iamVjdAog
ICAgIHRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9m
ZnNldEluQ29udGFpbmVyLndpZHRoKCksIG9mZnNldEluQ29udGFpbmVyLmhlaWdodCgpKTsKICAg
ICBSZW5kZXJMYXllciogbGF5ZXI7Ci0gICAgaWYgKGhhc0xheWVyKCkgJiYgKGxheWVyID0gdG9S
ZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKSkgJiYgbGF5ZXItPnRyYW5zZm9ybSgp
KQorICAgIGlmIChoYXNMYXllcigpICYmIChsYXllciA9IHRvUmVuZGVyTGF5ZXJPYmplY3QodGhp
cyktPmxheWVyKCkpICYmIGxheWVyLT50cmFuc2Zvcm0oKSkKICAgICAgICAgdHJhbnNmb3JtLm11
bHRpcGx5KGxheWVyLT5jdXJyZW50VHJhbnNmb3JtKCkpOwogICAgIAogI2lmIEVOQUJMRSgzRF9S
RU5ERVJJTkcpCiAgICAgaWYgKGNvbnRhaW5lck9iamVjdCAmJiBjb250YWluZXJPYmplY3QtPmhh
c0xheWVyKCkgJiYgY29udGFpbmVyT2JqZWN0LT5zdHlsZSgpLT5oYXNQZXJzcGVjdGl2ZSgpKSB7
CiAgICAgICAgIC8vIFBlcnBzZWN0aXZlIG9uIHRoZSBjb250YWluZXIgYWZmZWN0cyB1cywgc28g
d2UgaGF2ZSB0byBmYWN0b3IgaXQgaW4gaGVyZS4KICAgICAgICAgQVNTRVJUKGNvbnRhaW5lck9i
amVjdC0+aGFzTGF5ZXIoKSk7Ci0gICAgICAgIEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4g
PSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGNvbnRhaW5lck9iamVjdCktPmxheWVyKCktPnBlcnNw
ZWN0aXZlT3JpZ2luKCk7CisgICAgICAgIEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4gPSB0
b1JlbmRlckxheWVyT2JqZWN0KGNvbnRhaW5lck9iamVjdCktPmxheWVyKCktPnBlcnNwZWN0aXZl
T3JpZ2luKCk7CiAKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVNYXRy
aXg7CiAgICAgICAgIHBlcnNwZWN0aXZlTWF0cml4LmFwcGx5UGVyc3BlY3RpdmUoY29udGFpbmVy
T2JqZWN0LT5zdHlsZSgpLT5wZXJzcGVjdGl2ZSgpKTsKQEAgLTIwNzQsNyArMjA3NCw3IEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlck9i
amVjdCogY29udGFpbmVyT2JqZWN0CiAjZW5kaWYKIH0KIAotRmxvYXRRdWFkIFJlbmRlck9iamVj
dDo6bG9jYWxUb0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiBsb2NhbFF1YWQsIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sKiB3YXNG
aXhlZCkgY29uc3QKK0Zsb2F0UXVhZCBSZW5kZXJPYmplY3Q6OmxvY2FsVG9Db250YWluZXJRdWFk
KGNvbnN0IEZsb2F0UXVhZCYgbG9jYWxRdWFkLCBSZW5kZXJMYXllck9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gVHJh
Y2sgdGhlIHBvaW50IGF0IHRoZSBjZW50ZXIgb2YgdGhlIHF1YWQncyBib3VuZGluZyBib3guIEFz
IG1hcExvY2FsVG9Db250YWluZXIoKSBjYWxscyBvZmZzZXRGcm9tQ29udGFpbmVyKCksCiAgICAg
Ly8gaXQgd2lsbCB1c2UgdGhhdCBwb2ludCBhcyB0aGUgcmVmZXJlbmNlIHBvaW50IHRvIGRlY2lk
ZSB3aGljaCBjb2x1bW4ncyB0cmFuc2Zvcm0gdG8gYXBwbHkgaW4gbXVsdGlwbGUtY29sdW1uIGJs
b2Nrcy4KQEAgLTIwODUsNyArMjA4NSw3IEBAIEZsb2F0UXVhZCBSZW5kZXJPYmplY3Q6OmxvY2Fs
VG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0UXVhZCYgbG9jYWxRdWFkLCBSZW5kZXJCCiAgICAg
cmV0dXJuIHRyYW5zZm9ybVN0YXRlLmxhc3RQbGFuYXJRdWFkKCk7CiB9CiAKLUZsb2F0UG9pbnQg
UmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVyUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgbG9j
YWxQb2ludCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4
ZWQsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAorRmxvYXRQb2ludCBSZW5kZXJPYmplY3Q6OmxvY2Fs
VG9Db250YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiBsb2NhbFBvaW50LCBSZW5kZXJMYXll
ck9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCogd2FzRml4ZWQpIGNv
bnN0CiB7CiAgICAgVHJhbnNmb3JtU3RhdGUgdHJhbnNmb3JtU3RhdGUoVHJhbnNmb3JtU3RhdGU6
OkFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uLCBsb2NhbFBvaW50KTsKICAgICBtYXBMb2NhbFRvQ29u
dGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZpeGVkLCB0cnVlLCB0cmFuc2Zvcm1TdGF0ZSwgQXBw
bHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CkBAIC0yMTgzLDcgKzIxODMsNyBAQCBib29sIFJl
bmRlck9iamVjdDo6aGFzT3V0bGluZUFubm90YXRpb24oKSBjb25zdAogICAgIHJldHVybiBub2Rl
KCkgJiYgbm9kZSgpLT5pc0xpbmsoKSAmJiBkb2N1bWVudCgpLT5wcmludGluZygpOwogfQogCi1S
ZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sKiByZXBhaW50Q29udGFpbmVyU2tpcHBlZCkg
Y29uc3QKK1JlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojpjb250YWluZXIoY29uc3QgUmVuZGVy
TGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wqIHJlcGFpbnRDb250YWluZXJTa2lw
cGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyU2tpcHBlZCkKICAgICAgICAg
KnJlcGFpbnRDb250YWluZXJTa2lwcGVkID0gZmFsc2U7CkBAIC0yMzExLDcgKzIzMTEsNyBAQCB2
b2lkIFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkKICAgICAvLyBiZSBtb3ZlZCBpbnRv
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpkZXN0cm95LgogICAgIGlmIChoYXNMYXllcigpKSB7CiAg
ICAgICAgIHNldEhhc0xheWVyKGZhbHNlKTsKLSAgICAgICAgdG9SZW5kZXJCb3hNb2RlbE9iamVj
dCh0aGlzKS0+ZGVzdHJveUxheWVyKCk7CisgICAgICAgIHRvUmVuZGVyTGF5ZXJPYmplY3QodGhp
cyktPmRlc3Ryb3lMYXllcigpOwogICAgIH0KIAogICAgIHNldEFuY2VzdG9yTGluZUJveERpcnR5
KGZhbHNlKTsKQEAgLTI0MDIsNyArMjQwMiw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojp1cGRhdGVE
cmFnU3RhdGUoYm9vbCBkcmFnT24pCiAKIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0NvbXBvc2l0ZWQo
KSBjb25zdAogewotICAgIHJldHVybiBoYXNMYXllcigpICYmIHRvUmVuZGVyQm94TW9kZWxPYmpl
Y3QodGhpcyktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOworICAgIHJldHVybiBoYXNMYXllcigp
ICYmIHRvUmVuZGVyTGF5ZXJPYmplY3QodGhpcyktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOwog
fQogCiBib29sIFJlbmRlck9iamVjdDo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVx
dWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0UG9pbnQmIHBvaW50SW5D
b250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEZp
bHRlciBoaXRUZXN0RmlsdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CmluZGV4IDNmMDFlOTBmOTMwZmY5NTlkMDJiMWRmZmFjZTdiYzc2NjY3YjBiMmUuLmE2ZWE2YWM0
Yjg4NDI5ZWQ1NjJlZjg1NDg2MDNjYWM5YTQwYTJmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgUmVuZGVyQmxvY2s7CiBj
bGFzcyBSZW5kZXJGbG93VGhyZWFkOwogY2xhc3MgUmVuZGVyR2VvbWV0cnlNYXA7CiBjbGFzcyBS
ZW5kZXJMYXllcjsKK2NsYXNzIFJlbmRlckxheWVyT2JqZWN0OwogY2xhc3MgUmVuZGVyVGFibGU7
CiBjbGFzcyBSZW5kZXJUaGVtZTsKIGNsYXNzIFRyYW5zZm9ybVN0YXRlOwpAQCAtMzEzLDYgKzMx
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZVNldCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTGF5ZXJCYXNlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0Qm94KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0SXRlbSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTGlzdE1hcmtlcigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkBAIC01ODQsNyArNTg2LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVy
bnMgdGhlIG9iamVjdCBjb250YWluaW5nIHRoaXMgb25lLiBDYW4gYmUgZGlmZmVyZW50IGZyb20g
cGFyZW50IGZvciBwb3NpdGlvbmVkIGVsZW1lbnRzLgogICAgIC8vIElmIHJlcGFpbnRDb250YWlu
ZXIgYW5kIHJlcGFpbnRDb250YWluZXJTa2lwcGVkIGFyZSBub3QgbnVsbCwgb24gcmV0dXJuICpy
ZXBhaW50Q29udGFpbmVyU2tpcHBlZAogICAgIC8vIGlzIHRydWUgaWYgdGhlIHJlbmRlcmVyIHJl
dHVybmVkIGlzIGFuIGFuY2VzdG9yIG9mIHJlcGFpbnRDb250YWluZXIuCi0gICAgUmVuZGVyT2Jq
ZWN0KiBjb250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIgPSAwLCBib29sKiByZXBhaW50Q29udGFpbmVyU2tpcHBlZCA9IDApIGNvbnN0OworICAgIFJl
bmRlck9iamVjdCogY29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyID0gMCwgYm9vbCogcmVwYWludENvbnRhaW5lclNraXBwZWQgPSAwKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBob3ZlckFuY2VzdG9yKCkgY29uc3QgeyByZXR1cm4g
cGFyZW50KCk7IH0KIApAQCAtNjgwLDggKzY4Miw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAv
LyBDb252ZXJ0IGEgbG9jYWwgcXVhZCBpbnRvIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiBjb250
YWluZXIsIHRha2luZyB0cmFuc2Zvcm1zIGludG8gYWNjb3VudC4KLSAgICBGbG9hdFF1YWQgbG9j
YWxUb0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiwgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQgPSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSAw
KSBjb25zdDsKLSAgICBGbG9hdFBvaW50IGxvY2FsVG9Db250YWluZXJQb2ludChjb25zdCBGbG9h
dFBvaW50JiwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4
ZWQgPSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICBGbG9hdFF1YWQgbG9j
YWxUb0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiwgUmVuZGVyTGF5ZXJPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQgPSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSAwKSBj
b25zdDsKKyAgICBGbG9hdFBvaW50IGxvY2FsVG9Db250YWluZXJQb2ludChjb25zdCBGbG9hdFBv
aW50JiwgUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQgPSBm
YWxzZSwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKIAogICAgIC8vIFJldHVybiB0aGUgb2Zm
c2V0IGZyb20gdGhlIGNvbnRhaW5lcigpIHJlbmRlcmVyIChleGNsdWRpbmcgdHJhbnNmb3Jtcyku
IEluIG11bHRpLWNvbHVtbiBsYXlvdXQsCiAgICAgLy8gZGlmZmVyZW50IG9mZnNldHMgYXBwbHkg
YXQgZGlmZmVyZW50IHBvaW50cywgc28gcmV0dXJuIHRoZSBvZmZzZXQgdGhhdCBhcHBsaWVzIHRv
IHRoZSBnaXZlbiBwb2ludC4KQEAgLTcyMiwxMyArNzI0LDEzIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZ2V0VGV4dERlY29yYXRpb25Db2xvcnMoaW50IGRlY29yYXRpb25zLCBDb2xvciYgdW5kZXJs
aW5lLCBDb2xvciYgb3ZlcmxpbmUsIENvbG9yJiBsaW5ldGhyb3VnaCwgYm9vbCBxdWlya3NNb2Rl
ID0gZmFsc2UsIGJvb2wgZmlyc3RsaW5lU3R5bGUgPSBmYWxzZSk7CiAKLSAgICAvLyBSZXR1cm4g
dGhlIFJlbmRlckJveCBpbiB0aGUgY29udGFpbmVyIGNoYWluIHdoaWNoIGlzIHJlc3BvbnNpYmxl
IGZvciBwYWludGluZyB0aGlzIG9iamVjdCwgb3IgMAorICAgIC8vIFJldHVybiB0aGUgUmVuZGVy
TGF5ZXJPYmplY3QgaW4gdGhlIGNvbnRhaW5lciBjaGFpbiB3aGljaCBpcyByZXNwb25zaWJsZSBm
b3IgcGFpbnRpbmcgdGhpcyBvYmplY3QsIG9yIDAKICAgICAvLyBpZiBwYWludGluZyBpcyByb290
LXJlbGF0aXZlLiBUaGlzIGlzIHRoZSBjb250YWluZXIgdGhhdCBzaG91bGQgYmUgcGFzc2VkIHRv
IHRoZSAnZm9yUmVwYWludCcKICAgICAvLyBtZXRob2RzLgotICAgIFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBjb250YWluZXJGb3JSZXBhaW50KCkgY29uc3Q7CisgICAgUmVuZGVyTGF5ZXJPYmplY3Qq
IGNvbnRhaW5lckZvclJlcGFpbnQoKSBjb25zdDsKICAgICAvLyBBY3R1YWxseSBkbyB0aGUgcmVw
YWludCBvZiByZWN0IHIgZm9yIHRoaXMgb2JqZWN0IHdoaWNoIGhhcyBiZWVuIGNvbXB1dGVkIGlu
IHRoZSBjb29yZGluYXRlIHNwYWNlCiAgICAgLy8gb2YgcmVwYWludENvbnRhaW5lci4gSWYgcmVw
YWludENvbnRhaW5lciBpcyAwLCByZXBhaW50IHZpYSB0aGUgdmlldy4KLSAgICB2b2lkIHJlcGFp
bnRVc2luZ0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOworICAgIHZvaWQgcmVw
YWludFVzaW5nQ29udGFpbmVyKFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBj
b25zdCBMYXlvdXRSZWN0JiwgYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSk7CiAgICAgCiAgICAgLy8g
UmVwYWludCB0aGUgZW50aXJlIG9iamVjdC4gIENhbGxlZCB3aGVuLCBlLmcuLCB0aGUgY29sb3Ig
b2YgYSBib3JkZXIgY2hhbmdlcywgb3Igd2hlbiBhIGJvcmRlcgogICAgIC8vIHN0eWxlIGNoYW5n
ZXMuCkBAIC03MzgsNyArNzQwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVwYWludFJlY3Rhbmds
ZShjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSk7CiAKICAgICAvLyBS
ZXBhaW50IG9ubHkgaWYgb3VyIG9sZCBib3VuZHMgYW5kIG5ldyBib3VuZHMgYXJlIGRpZmZlcmVu
dC4gVGhlIGNhbGxlciBtYXkgcGFzcyBpbiBuZXdCb3VuZHMgYW5kIG5ld091dGxpbmVCb3ggaWYg
dGhleSBhcmUga25vd24uCi0gICAgYm9vbCByZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYgb2xk
Qm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRPdXRsaW5lQm94LCBjb25zdCBMYXlvdXRSZWN0
KiBuZXdCb3VuZHNQdHIgPSAwLCBjb25zdCBMYXlvdXRSZWN0KiBuZXdPdXRsaW5lQm94UHRyID0g
MCk7CisgICAgYm9vbCByZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChSZW5kZXJMYXllck9iamVj
dCogcmVwYWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYgb2xkQm91bmRzLCBjb25zdCBM
YXlvdXRSZWN0JiBvbGRPdXRsaW5lQm94LCBjb25zdCBMYXlvdXRSZWN0KiBuZXdCb3VuZHNQdHIg
PSAwLCBjb25zdCBMYXlvdXRSZWN0KiBuZXdPdXRsaW5lQm94UHRyID0gMCk7CiAKICAgICAvLyBS
ZXBhaW50IG9ubHkgaWYgdGhlIG9iamVjdCBtb3ZlZC4KICAgICB2aXJ0dWFsIHZvaWQgcmVwYWlu
dER1cmluZ0xheW91dElmTW92ZWQoY29uc3QgTGF5b3V0UmVjdCYpOwpAQCAtNzU1LDggKzc1Nyw4
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KDApOwogICAgIH0KICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZEFic29sdXRlQ2xpcHBlZE92ZXJm
bG93UmVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29u
c3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdp
ZHRoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OworICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckxheWVy
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3Q7
CiAKICAgICAvLyBHaXZlbiBhIHJlY3QgaW4gdGhlIG9iamVjdCdzIGNvb3JkaW5hdGUgc3BhY2Us
IGNvbXB1dGUgYSByZWN0IHN1aXRhYmxlIGZvciByZXBhaW50aW5nCiAgICAgLy8gdGhhdCByZWN0
IGluIHZpZXcgY29vcmRpbmF0ZXMuCkBAIC03NjYsOCArNzY4LDggQEAgcHVibGljOgogICAgIH0K
ICAgICAvLyBHaXZlbiBhIHJlY3QgaW4gdGhlIG9iamVjdCdzIGNvb3JkaW5hdGUgc3BhY2UsIGNv
bXB1dGUgYSByZWN0IHN1aXRhYmxlIGZvciByZXBhaW50aW5nCiAgICAgLy8gdGhhdCByZWN0IGlu
IHRoZSBjb29yZGluYXRlIHNwYWNlIG9mIHJlcGFpbnRDb250YWluZXIuCi0gICAgdmlydHVhbCB2
b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkID0g
ZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVu
ZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVk
ID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVw
YWludChSZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBh
aW50UmVjdCwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKIAogICAgIC8vIElmIG11bHRpcGxl
LWNvbHVtbiBsYXlvdXQgcmVzdWx0cyBpbiBhcHBseWluZyBhbiBvZmZzZXQgdG8gdGhlIGdpdmVu
IHBvaW50LCBhZGQgdGhlIHNhbWUKICAgICAvLyBvZmZzZXQgdG8gdGhlIGdpdmVuIHNpemUuCkBA
IC04MDksNyArODExLDcgQEAgcHVibGljOgogICAgIC8vIEEgc2luZ2xlIHJlY3RhbmdsZSB0aGF0
IGVuY29tcGFzc2VzIGFsbCBvZiB0aGUgc2VsZWN0ZWQgb2JqZWN0cyB3aXRoaW4gdGhpcyBvYmpl
Y3QuICBVc2VkIHRvIGRldGVybWluZSB0aGUgdGlnaHRlc3QKICAgICAvLyBwb3NzaWJsZSBib3Vu
ZGluZyBib3ggZm9yIHRoZSBzZWxlY3Rpb24uCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0
KGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSB7IHJldHVybiBzZWxlY3Rpb25SZWN0
Rm9yUmVwYWludCgwLCBjbGlwVG9WaXNpYmxlQ29udGVudCk7IH0KLSAgICB2aXJ0dWFsIExheW91
dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVw
YWludENvbnRhaW5lciovLCBib29sIC8qY2xpcFRvVmlzaWJsZUNvbnRlbnQqLyA9IHRydWUpIHsg
cmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25S
ZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck9iamVjdCogLypyZXBhaW50Q29udGFpbmVyKi8sIGJv
b2wgLypjbGlwVG9WaXNpYmxlQ29udGVudCovID0gdHJ1ZSkgeyByZXR1cm4gTGF5b3V0UmVjdCgp
OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICBib29sIGhhc1NlbGVjdGVkQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVy
biBzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmU7IH0KQEAgLTg3OSwxMiArODgxLDEy
IEBAIHB1YmxpYzoKICAgICAvLyBNYXAgcG9pbnRzIGFuZCBxdWFkcyB0aHJvdWdoIGVsZW1lbnRz
LCBwb3RlbnRpYWxseSB2aWEgM2QgdHJhbnNmb3Jtcy4gWW91IHNob3VsZCBuZXZlciBuZWVkIHRv
IGNhbGwgdGhlc2UgZGlyZWN0bHk7IHVzZQogICAgIC8vIGxvY2FsVG9BYnNvbHV0ZS9hYnNvbHV0
ZVRvTG9jYWwgbWV0aG9kcyBpbnN0ZWFkLgogICAgIGVudW0gQXBwbHlDb250YWluZXJGbGlwT3JO
b3QgeyBEb05vdEFwcGx5Q29udGFpbmVyRmxpcCwgQXBwbHlDb250YWluZXJGbGlwIH07Ci0gICAg
dmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3Jt
U3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9v
bCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zv
cm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90
ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRy
YW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CiAKICAgICAvLyBQdXNoZXMgc3RhdGUg
b250byBSZW5kZXJHZW9tZXRyeU1hcCBhYm91dCBob3cgdG8gbWFwIGNvb3JkaW5hdGVzIGZyb20g
dGhpcyByZW5kZXJlciB0byBpdHMgY29udGFpbmVyLCBvciBhbmNlc3RvclRvU3RvcEF0ICh3aGlj
aGV2ZXIgaXMgZW5jb3VudGVyZWQgZmlyc3QpLgogICAgIC8vIFJldHVybnMgdGhlIHJlbmRlcmVy
IHdoaWNoIHdhcyBtYXBwZWQgdG8gKGNvbnRhaW5lciBvciBhbmNlc3RvclRvU3RvcEF0KS4KLSAg
ICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25z
dCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlN
YXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVu
ZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKICAgICAKICAgICBib29sIHNob3VsZFVzZVRyYW5zZm9y
bUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXIpIGNvbnN0OwogICAg
IHZvaWQgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIGNvbnRh
aW5lciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0SW5Db250YWluZXIsIFRyYW5zZm9ybWF0aW9u
TWF0cml4JikgY29uc3Q7CkBAIC05MjUsNyArOTI3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKICAgICB2b2lkIGFyZW5hRGVsZXRlKFJlbmRlckFy
ZW5hKiwgdm9pZCogb2JqZWN0QmFzZSk7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGlu
ZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5l
ciovLCBMYXlvdXRQb2ludCogLypjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIqLyA9IDAp
IGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBv
dXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJMYXllck9iamVjdCogLypyZXBhaW50Q29udGFp
bmVyKi8sIExheW91dFBvaW50KiAvKmNhY2hlZE9mZnNldFRvUmVwYWludENvbnRhaW5lciovID0g
MCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgUmVuZGVy
U3R5bGUqIGZpcnN0TGluZVN0eWxlU2xvd0Nhc2UoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDc5NGFjZDgyMDM5NDE4Yzc0NDE0ZWZm
OTg0M2MyM2U4MGUzYjUxMDMuLjU5YWIwMGIwMThiODgwNjgyYTQ1ZGNlNzk5M2NlNjBmYTRkNGRi
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAt
NDYxLDcgKzQ2MSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJSZXBsYWNlZDo6cG9zaXRpb25G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgcmV0dXJuIFJlbmRlckJveDo6
cG9zaXRpb25Gb3JQb2ludChwb2ludCk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyUmVwbGFjZWQ6
OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KQorTGF5b3V0UmVjdCBSZW5kZXJSZXBs
YWNlZDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpCiB7CiAgICAgQVNTRVJUKCFuZWVk
c0xheW91dCgpKTsKIApAQCAtNTI2LDcgKzUyNiw3IEBAIGJvb2wgUmVuZGVyUmVwbGFjZWQ6Omlz
U2VsZWN0ZWQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTGF5b3V0UmVjdCBSZW5k
ZXJSZXBsYWNlZDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2Vk
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck9iamVjdCogcmVwYWlu
dENvbnRhaW5lcikgY29uc3QKIHsKICAgICBpZiAoc3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJ
U0lCTEUgJiYgIWVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpCiAgICAgICAg
IHJldHVybiBMYXlvdXRSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5oCmluZGV4IDllYmM2MzRiMDMyMzkxNDhlNTJjMWZjNmI2NWRhYjNkNmQ1YmQ4YmQuLjcy
YTNmZDc1NDY5ZDFlZGZiNzk0YzEyMTVmOTg1NGUwMDNlZjRhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCkBAIC03MCwxMyArNzAsMTMgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsKICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYp
IHsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2
aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5
ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogCiAgICAgdmlydHVhbCBWaXNpYmxl
UG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIAogICAg
IHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRl
bnQgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFp
bnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJs
ZUNvbnRlbnQgPSB0cnVlKTsKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0
aW9uRm9yUmVuZGVyQm94KFJlbmRlckJveCosIEZsb2F0U2l6ZSYgaW50cmluc2ljU2l6ZSwgZG91
YmxlJiBpbnRyaW5zaWNSYXRpbywgYm9vbCYgaXNQZXJjZW50YWdlSW50cmluc2ljU2l6ZSkgY29u
c3Q7CiAKICAgICBJbnRTaXplIG1faW50cmluc2ljU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2VsZWN0aW9uSW5mby5oCmluZGV4IDg5MzZhMzc3ZTY2NTQzMDFjYTVh
NGNmNDY2ZDNiNzk1Yjk4ZDM5ZDcuLmFmOTgwNGI4NGM1NWRlNGQ4YWI2YzkzZjljODM2ODgyYmUy
ZDE0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rp
b25JbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlbGVjdGlvbklu
Zm8uaApAQCAtNDgsMTIgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgUmVuZGVy
T2JqZWN0KiBvYmplY3QoKSBjb25zdCB7IHJldHVybiBtX29iamVjdDsgfQotICAgIFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50
Q29udGFpbmVyOyB9CisgICAgUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIoKSBj
b25zdCB7IHJldHVybiBtX3JlcGFpbnRDb250YWluZXI7IH0KICAgICBSZW5kZXJPYmplY3Q6OlNl
bGVjdGlvblN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCiBwcm90ZWN0
ZWQ6CiAgICAgUmVuZGVyT2JqZWN0KiBtX29iamVjdDsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVj
dCogbV9yZXBhaW50Q29udGFpbmVyOworICAgIFJlbmRlckxheWVyT2JqZWN0KiBtX3JlcGFpbnRD
b250YWluZXI7CiAgICAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBtX3N0YXRlOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCAx
NTliNTRiM2IzOGViOGM5ZTg3YTBiOWVlODBiNjFhMGMxYjNkYmI3Li4xYjY1OWQ0Y2Q3YjdjNjg4
YWI3NGRmZDgxZDIwMTc2Yzg2ZGZlNjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcApAQCAtMjUwLDcgKzI1MCw3IEBAIExheW91dFNpemUgUmVuZGVy
VGFibGVDZWxsOjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCogbywgY29uc3QgTGF5
b3V0UG9pCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJUYWJsZUNl
bGw6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJUYWJsZUNlbGw6OmNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKSBjb25zdAogewogICAgIC8vIElmIHRoZSB0YWJsZSBncmlkIGlzIGRpcnR5LCB3ZSBjYW5u
b3QgZ2V0IHJlbGlhYmxlIGluZm9ybWF0aW9uIGFib3V0IGFkam9pbmluZyBjZWxscywKICAgICAv
LyBzbyB3ZSBpZ25vcmUgb3V0c2lkZSBib3JkZXJzLiBUaGlzIHNob3VsZCBub3QgYmUgYSBwcm9i
bGVtIGJlY2F1c2UgaXQgbWVhbnMgdGhhdApAQCAtMzAxLDcgKzMwMSw3IEBAIExheW91dFJlY3Qg
UmVuZGVyVGFibGVDZWxsOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCoKICAgICByZXR1cm4gcjsKIH0KIAotdm9pZCBSZW5kZXJUYWJsZUNlbGw6OmNv
bXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0UmVjdCYgciwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyVGFibGVDZWxs
Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIExheW91dFJlY3QmIHIsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRD
b250YWluZXIgPT0gdGhpcykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5oCmluZGV4IDQzODE1NTVjZGQwZDMwNWIwZDcxMTU1ZDFiYmU4
Y2M2YjBhMDEwNTAuLjBjYjI0OWUzODBiN2UwYzg4MjkwOTBlY2FlYjhlMjk4YTg5NzhlMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTE4Nyw4ICsx
ODcsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBib3hTaGFkb3dTaG91bGRCZUFwcGxp
ZWRUb0JhY2tncm91bmQoQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94Kikg
Y29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRh
aW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVu
ZHNPblBvaW50ID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9
IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0
OwogCiAgICAgaW50IGJvcmRlckhhbGZMZWZ0KGJvb2wgb3V0ZXIpIGNvbnN0OwogICAgIGludCBi
b3JkZXJIYWxmUmlnaHQoYm9vbCBvdXRlcikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ29sLmNwcAppbmRleCA5N2NkOGNjM2VkMDk1NjhmNjg5MTYwYTUwZGU4
Njk0MzcwMGNkZTI5Li4zMWY1YjI1MGNlMTM5NTQ2YjExNDUwMDY3NTdlNGI1NjBlODMzZTkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKQEAgLTgyLDcg
KzgyLDcgQEAgYm9vbCBSZW5kZXJUYWJsZUNvbDo6Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QKICAg
ICByZXR1cm4gaXNUYWJsZUNvbHVtbkdyb3VwKCk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyVGFi
bGVDb2w6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJUYWJsZUNvbDo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0CiB7CiAgICAgLy8gRm9yIG5vdywganVzdCByZXBhaW50IHRoZSB3aG9sZSB0
YWJsZS4KICAgICAvLyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gZG8gdGhpcywgZS5nLiwg
bmVlZCB0byByZXBhaW50IGFsbCB0aGUgY2VsbHMgdGhhdCB3ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDb2wuaAppbmRleCA2MmYzMjg4ZThkNjYzODc0MGY2OWVmNjFkZjY4
N2FiYmViYzI0MjFjLi5kZDU0NzMxNWE3NDRiOThkMWNjMjQ0OTk5MjU0MDBlYzdkNmY2MzBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaApAQCAtNzksNyArNzks
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OworICAgIHZpcnR1
YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck9i
amVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hh
bmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAK
aW5kZXggMGU0MjRiYzExMmIyZjAwYWRiNDQ5OTUxMmJlOWVlMzRlM2RkNjk5NC4uODY5MmFkNGQ2
ZjdkNWY1MmI2ZDk0NjQwNmNiZDBiYzUwZDZkZjMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBSZW5kZXJU
YWJsZVJvdzo6bGF5b3V0KCkKICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAKLUxheW91
dFJlY3QgUmVuZGVyVGFibGVSb3c6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5k
ZXJUYWJsZVJvdzo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHBhcmVudCgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAppbmRleCBhZmE4MzhjMTI1
NDYxYmU1ZmMzNTVkMDI2NWRjZDMxY2VmNmEyYzMxLi43NjFlMTk3MDcwYTQ1ZmMxZjY3YjM0N2Zj
MmQ3YmE2N2Y2MjBlNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVS
b3cuaApAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGFkZENo
aWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsK
ICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRl
c3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IGlzVHJhbnNwYXJlbnQoKSB8fCBoYXNPdmVyZmxvd0NsaXAoKSB8fCBoYXNUcmFuc2Zvcm0oKSB8
fCBoYXNIaWRkZW5CYWNrZmFjZSgpIHx8IGhhc01hc2soKSB8fCBoYXNGaWx0ZXIoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGJhZjk1NDc1Y2Q0MGM0MTAw
OTM3MDk0ZjRjMzJjOTVhMGI3NGRlMWEuLjdkYmFkOWZlZDg3NGI3MTNhNmE4Nzk3YTZjYmJjNTgw
YWFkZDEyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTE2
MTgsNyArMTYxOCw3IEBAIExheW91dFJlY3QgUmVuZGVyVGV4dDo6bGluZXNWaXN1YWxPdmVyZmxv
d0JvdW5kaW5nQm94KCkgY29uc3QKICAgICByZXR1cm4gcmVjdDsKIH0KIAotTGF5b3V0UmVjdCBS
ZW5kZXJUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyVGV4dDo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlclRvUmVwYWludCA9IGNv
bnRhaW5pbmdCbG9jaygpOwogCkBAIC0xNjM0LDcgKzE2MzQsNyBAQCBMYXlvdXRSZWN0IFJlbmRl
clRleHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaQogICAgIHJldHVybiByZW5kZXJlclRvUmVwYWludC0+Y2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcik7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyVGV4
dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpCitMYXlvdXRSZWN0IFJlbmRlclRl
eHQ6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KQogewogICAgIEFTU0VSVCghbmVlZHNM
YXlvdXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IGI5NmVj
YTczZjM2YzE1ZmY2MjI1ZTk5OGEzOTExMDU1NjcxN2Y0NGEuLjZmZGU3YzEyZDU0MGFjMjY2YjY0
YzdkYzBhNjI4MWRiMmVkMzNhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
aApAQCAtOTcsMTMgKzk3LDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNl
bGVjdGlvbkxlYWYoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlIHMpOwotICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpOworICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck9iamVjdCogcmVw
YWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpOwogICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqLCBpbnQgY2FyZXRPZmZz
ZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDApOwogCiAgICAgdmlydHVh
bCBMYXlvdXRVbml0IG1hcmdpbkxlZnQoKSBjb25zdCB7IHJldHVybiBtaW5pbXVtVmFsdWVGb3JM
ZW5ndGgoc3R5bGUoKS0+bWFyZ2luTGVmdCgpLCAwLCB2aWV3KCkpOyB9CiAgICAgdmlydHVhbCBM
YXlvdXRVbml0IG1hcmdpblJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVu
Z3RoKHN0eWxlKCktPm1hcmdpblJpZ2h0KCksIDAsIHZpZXcoKSk7IH0KIAotICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdDsKIAogICAgIElubGluZVRleHRCb3gqIGZpcnN0VGV4dEJveCgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlyc3RUZXh0Qm94OyB9CiAgICAgSW5saW5lVGV4dEJveCogbGFzdFRleHRC
b3goKSBjb25zdCB7IHJldHVybiBtX2xhc3RUZXh0Qm94OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAKaW5kZXggZDQ5N2EzM2FiMTRlZDM5ODQ3MWE1YTFkNWY1ZjI1YzRh
Y2I3NTI0Ny4uNjE0OTE3OTJhMWRmNTZlNDIxZTUxYjRjOTA2Y2RjYjQ4N2IzNGQxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZv
aWQgUmVuZGVyVmlldzo6bGF5b3V0KCkKICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAK
LXZvaWQgUmVuZGVyVmlldzo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFu
c2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29s
KiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyVmlldzo6bWFwTG9jYWxUb0NvbnRhaW5lcihS
ZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VU
cmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVy
RmxpcE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICAvLyBJZiBhIGNvbnRhaW5l
ciB3YXMgc3BlY2lmaWVkLCBhbmQgd2FzIG5vdCAwIG9yIHRoZSBSZW5kZXJWaWV3LAogICAgIC8v
IHRoZW4gd2Ugc2hvdWxkIGhhdmUgZm91bmQgaXQgYnkgbm93LgpAQCAtMTcyLDcgKzE3Miw3IEBA
IHZvaWQgUmVuZGVyVmlldzo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vCiAgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUobV9m
cmFtZVZpZXctPnNjcm9sbE9mZnNldEZvckZpeGVkUG9zaXRpb24oKSk7CiB9CiAKLWNvbnN0IFJl
bmRlck9iamVjdCogUmVuZGVyVmlldzo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdl
b21ldHJ5TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJWaWV3OjpwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0
LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgLy8gSWYgYSBj
b250YWluZXIgd2FzIHNwZWNpZmllZCwgYW5kIHdhcyBub3QgMCBvciB0aGUgUmVuZGVyVmlldywK
ICAgICAvLyB0aGVuIHdlIHNob3VsZCBoYXZlIGZvdW5kIGl0IGJ5IG5vdy4KQEAgLTI1Miw3ICsy
NTIsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NvbXBv
c2l0ZWQoUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgcmV0dXJuIG9iamVjdC0+aGFzTGF5
ZXIoKSAmJiB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG9iamVjdCktPmxheWVyKCktPmlzQ29tcG9z
aXRlZCgpOworICAgIHJldHVybiBvYmplY3QtPmhhc0xheWVyKCkgJiYgdG9SZW5kZXJMYXllck9i
amVjdChvYmplY3QpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKIH0KIAogc3RhdGljIGlubGlu
ZSBib29sIHJlbmRlcmVyT2JzY3VyZXNCYWNrZ3JvdW5kKFJlbmRlck9iamVjdCogb2JqZWN0KQpA
QCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cmVwYWludFJlY3RhbmdsZUluVmll
d0FuZENvbXBvc2l0ZWRMYXllcnMoY29uc3QgTGF5b3V0UmVjdCYgdXIsCiAjZW5kaWYKIH0KIAot
dm9pZCBSZW5kZXJWaWV3Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0
Cit2b2lkIFJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck9iamVj
dCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QK
IHsKICAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBhbmQgd2FzIG5vdCAwIG9y
IHRoZSBSZW5kZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIGhhdmUgZm91bmQgaXQgYnkg
bm93LgpAQCAtMzk3LDIwICszOTcsMjAgQEAgdm9pZCBSZW5kZXJWaWV3Ojpjb21wdXRlUmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEwKICAgICAg
ICAgcmVjdC5tb3ZlKG1fZnJhbWVWaWV3LT5zY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCkp
OwogICAgICAgICAKICAgICAvLyBBcHBseSBvdXIgdHJhbnNmb3JtIGlmIHdlIGhhdmUgb25lIChi
ZWNhdXNlIG9mIGZ1bGwgcGFnZSB6b29taW5nKS4KLSAgICBpZiAoIXJlcGFpbnRDb250YWluZXIg
JiYgbV9sYXllciAmJiBtX2xheWVyLT50cmFuc2Zvcm0oKSkKLSAgICAgICAgcmVjdCA9IG1fbGF5
ZXItPnRyYW5zZm9ybSgpLT5tYXBSZWN0KHJlY3QpOworICAgIGlmICghcmVwYWludENvbnRhaW5l
ciAmJiBsYXllcigpICYmIGxheWVyKCktPnRyYW5zZm9ybSgpKQorICAgICAgICByZWN0ID0gbGF5
ZXIoKS0+dHJhbnNmb3JtKCktPm1hcFJlY3QocmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6
YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBl
ZEludFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIG1fbGF5ZXItPnNpemUoKSkpOworICAgIHJlY3Rz
LmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBsYXllcigpLT5z
aXplKCkpKTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHdhc0ZpeGVk
KQogICAgICAgICAqd2FzRml4ZWQgPSBmYWxzZTsKLSAgICBxdWFkcy5hcHBlbmQoRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgbV9sYXllci0+c2l6ZSgpKSk7CisgICAgcXVhZHMuYXBwZW5kKEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIGxheWVyKCktPnNpemUoKSkpOwogfQogCiBzdGF0aWMgUmVuZGVy
T2JqZWN0KiByZW5kZXJlckFmdGVyUG9zaXRpb24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIHVuc2ln
bmVkIG9mZnNldCkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBJbnRSZWN0IFJlbmRlclZpZXc6OnNlbGVj
dGlvbkJvdW5kcyhib29sIGNsaXBUb1Zpc2libGVDb250ZW50KSBjb25zdAogICAgICAgICBSZW5k
ZXJTZWxlY3Rpb25JbmZvKiBpbmZvID0gaS0+c2Vjb25kLmdldCgpOwogICAgICAgICAvLyBSZW5k
ZXJTZWxlY3Rpb25JbmZvOjpyZWN0KCkgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSByZXBh
aW50Q29udGFpbmVyLCBzbyBtYXAgdG8gcGFnZSBjb29yZGluYXRlcy4KICAgICAgICAgTGF5b3V0
UmVjdCBjdXJyUmVjdCA9IGluZm8tPnJlY3QoKTsKLSAgICAgICAgaWYgKFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gaW5mby0+cmVwYWludENvbnRhaW5lcigpKSB7Cisg
ICAgICAgIGlmIChSZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lciA9IGluZm8tPnJl
cGFpbnRDb250YWluZXIoKSkgewogICAgICAgICAgICAgRmxvYXRRdWFkIGFic1F1YWQgPSByZXBh
aW50Q29udGFpbmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChjdXJyUmVjdCkpOwog
ICAgICAgICAgICAgY3VyclJlY3QgPSBhYnNRdWFkLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7IAog
ICAgICAgICB9CkBAIC01NjAsNyArNTYwLDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRTZWxlY3Rp
b24oUmVuZGVyT2JqZWN0KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGUKICAg
ICB9CiAKICAgICBpZiAoYmxvY2tSZXBhaW50TW9kZSAhPSBSZXBhaW50Tm90aGluZykKLSAgICAg
ICAgbV9sYXllci0+Y2xlYXJCbG9ja1NlbGVjdGlvbkdhcHNCb3VuZHMoKTsKKyAgICAgICAgbGF5
ZXIoKS0+Y2xlYXJCbG9ja1NlbGVjdGlvbkdhcHNCb3VuZHMoKTsKIAogICAgIC8vIE5vdyB0aGF0
IHRoZSBzZWxlY3Rpb24gc3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBmb3IgdGhlIG5ldyBvYmplY3Rz
LCB3YWxrIHRoZW0gYWdhaW4gYW5kCiAgICAgLy8gcHV0IHRoZW0gaW4gdGhlIG5ldyBvYmplY3Rz
IGxpc3QuCkBAIC02NDAsNyArNjQwLDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpnZXRTZWxlY3Rpb24o
UmVuZGVyT2JqZWN0KiYgc3RhcnRSZW5kZXJlciwgaW50JiBzdGFydE9mZnNldCwgUmUKIAogdm9p
ZCBSZW5kZXJWaWV3OjpjbGVhclNlbGVjdGlvbigpCiB7Ci0gICAgbV9sYXllci0+cmVwYWludEJs
b2NrU2VsZWN0aW9uR2FwcygpOworICAgIGxheWVyKCktPnJlcGFpbnRCbG9ja1NlbGVjdGlvbkdh
cHMoKTsKICAgICBzZXRTZWxlY3Rpb24oMCwgLTEsIDAsIC0xLCBSZXBhaW50TmV3TWludXNPbGQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCA4ZTViYzNjNWEx
ZDFjZjMxODcyNmVjY2RmZDNlNmMxYjkzYzY0MzEzLi5kNTM4ZjdmMmJhZjgyYmYxNGExMTQ0NGNm
NmE2MjRiZDk4MzgxMjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAg
LTczLDcgKzczLDcgQEAgcHVibGljOgogCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcoKSBjb25z
dCB7IHJldHVybiBtX2ZyYW1lVmlldzsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0
UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1
dGVSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5
b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHJl
cGFpbnRWaWV3UmVjdGFuZ2xlKGNvbnN0IExheW91dFJlY3QmLCBib29sIGltbWVkaWF0ZSA9IGZh
bHNlKTsKICAgICAvLyBSZXBhaW50IHRoZSB2aWV3LCBhbmQgYWxsIGNvbXBvc2l0ZWQgbGF5ZXJz
IHRoYXQgaW50ZXJzZWN0IHRoZSBnaXZlbiBhYnNvbHV0ZSByZWN0YW5nbGUuCiAgICAgLy8gRklY
TUU6IGlkZWFsbHkgd2UnZCBuZXZlciBoYXZlIHRvIGRvIHRoaXMsIGlmIGFsbCByZXBhaW50cyBh
cmUgY29udGFpbmVyLXJlbGF0aXZlLgpAQCAtMTkzLDggKzE5Myw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEZpeGVkUG9zaXRpb25lZE9iamVjdHNOZWVkTGF5b3V0KCk7CiAKIHByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFu
c2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlw
LCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2Jq
ZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBh
bmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBw
bHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVk
ID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5n
VG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJl
bmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9M
b2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUm
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNDb2x1bW5zKGludCBkZXNpcmVkQ29s
dW1uQ291bnQpIGNvbnN0IE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAppbmRleCBkNjYwNTY2MTUw
NzlhZWNmNzY3Y2NjYjk3NDllMTVjNjFhODViZmNmLi45ZDYxMDdlZjJiNzliNmM1MzhiYzA4ODU5
OTNiNDg0MDljMjBlMTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKQEAgLTg4LDEyICs4OCwxMiBAQCB2b2lk
IFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYpCiAgICAgfQogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNWR0ZvcmVpZ25P
YmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck9iamVjdCogcmVw
YWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lcik7CiB9CiAK
LXZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWlu
dFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNv
bXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIFNW
R1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRD
b250YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7CiB9CkBAIC0xOTAsMTIgKzE5MCwxMiBAQCBi
b29sIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRl
clNWR0ZvcmVpZ25PYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgLyogZml4ZWQgKi8sIGJvb2wgLyogdXNlVHJhbnNm
b3JtcyAqLywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZs
aXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmpl
Y3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIGJvb2wgLyogZml4ZWQgKi8sIGJvb2wgLyogdXNlVHJhbnNmb3JtcyAqLywgVHJhbnNmb3Jt
U3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2Fz
Rml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5l
cih0aGlzLCByZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4ZWQpOwogfQog
Ci1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OnB1c2hNYXBwaW5n
VG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQs
IFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9iamVj
dCogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJMYXllck9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdl
b21ldHJ5TWFwKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKHRoaXMsIGFuY2VzdG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFwKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWln
bk9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0LmgKaW5kZXggODBkZGZkNjMwOGRkOGY2MzlhMTQ1ZDJkMDUzM2YwMjRiNmYyYmNjYy4u
Y2NkMGNlODY3YjAwOWIxOTdhNmQxOTNmNjAwYmQzZTc1NWYxYmFiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKQEAg
LTQwLDggKzQwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5m
byYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9v
bCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5k
ZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9
IGZhbHNlKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CkBAIC01NCw4ICs1
NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdFBvaW50JiBwb2ludEluQ29u
dGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rp
b24pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ZvcmVpZ25PYmplY3QoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5l
cihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9v
bCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90
ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwotICAgIHZp
cnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVy
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMs
IFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5l
ckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBSZW5k
ZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJPYmplY3Qq
IGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRl
ID0gdHJ1ZTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgKaW5kZXggYjkwYWI1MDgxMDQxMTM4NDE0MWMz
MjM4OTQ3NmUzYzg0NDM0MDY1Yi4uMjNiYjEzNjdhOGJkMmUzMjgzMThiZWM5NGQxZTFkNjc2YTUy
ZmI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdH
cmFkaWVudFN0b3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0dyYWRpZW50U3RvcC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIG92
ZXJyaWRlcyBhcmUgbmVlZGVkIHRvIHByZXZlbnQgQVNTRVJUcyBvbiA8c3ZnPjxzdG9wIC8+PC9z
dmc+CiAgICAgLy8gUmVuZGVyT2JqZWN0J3MgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgQVNTRVJU
X05PVF9SRUFDSEVEKCkKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA0MDAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0
KCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyTGF5ZXJPYmplY3QqKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KICAg
ICB2aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIEZs
b2F0UmVjdCgpOyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBj
b25zdCB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFp
bnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRl
bkNvbnRhaW5lci5oCmluZGV4IGYyNmM1ZmM2MWEzN2Y4MjA3ZDRkNjQ5YmU2ODA5ZDUyYTJmODgy
NWYuLmNmMDQ4MWFmMjIyMTAxNjAyM2VmZWQ1NWMxNTg4OTFjMDJhZWUxYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWlu
ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgCi0gICAgdmlydHVhbCBMYXlv
dXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KikgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0
IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyT2JqZWN0KikgY29uc3Qg
eyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRl
eCAwNTdiZmRhMDA3ZTJjNjg0MzQ5ZTNjNzNmZWI4NmIwMWNmMzVkMzBhLi5mNDgyMTkxZTk2N2Y2
NzI4MmE1NDAyNjUxZTZiNWFjMTBmNDJjODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCkBAIC02OSwyMiArNjksMjIgQEAgRmxvYXRS
ZWN0IFJlbmRlclNWR0lubGluZTo6cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25z
dAogICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJTVkdJbmxp
bmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJTVkdJbmxpbmU6OmNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyKTsKIH0KIAotdm9pZCBSZW5k
ZXJTVkdJbmxpbmU6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVk
KSBjb25zdAordm9pZCBSZW5kZXJTVkdJbmxpbmU6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50
KFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRS
ZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVG
bG9hdFJlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBm
aXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHSW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qIHVzZVRyYW5zZm9y
bXMgKi8sIGJvb2wgLyogZml4ZWQgKi8sIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwg
QXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5k
ZXJTVkdJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGJvb2wgLyogdXNlVHJhbnNmb3JtcyAqLywgYm9vbCAvKiBmaXhlZCAqLywg
VHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwg
Ym9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxU
b0NvbnRhaW5lcih0aGlzLCByZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4
ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR0lubGluZTo6cHVzaE1hcHBp
bmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BB
dCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2Jq
ZWN0KiBSZW5kZXJTVkdJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVy
TGF5ZXJPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRy
eU1hcCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdU
b0NvbnRhaW5lcih0aGlzLCBhbmNlc3RvclRvU3RvcEF0LCBnZW9tZXRyeU1hcCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAppbmRleCA1MzNh
OTlhYTZiMDE3N2U4N2JhOGM3MDRmYTExMWIxMWI3MzZjNDI4Li4xMGI5MzQxMmI2OWUzOGIxOGQ2
ZjRhMjMwOWIyOGJmZTlmOTllZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lLmgKQEAgLTQ1LDEwICs0NSwxMCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdDsKICAgICB2aXJ0dWFsIEZs
b2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0OwogCi0gICAgdmly
dHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29t
cHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUm
LCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2Fz
Rml4ZWQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1h
cHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0
b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qg
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRD
b250YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVw
YWludChSZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9v
bCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zv
cm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90
ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZp
cnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJl
bmRlckxheWVyT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jiwg
Ym9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAppbmRleCAxOGU3ZWNh
Y2U3YTNhM2M2OGQ4ZjVmNDA0ODhmMmY2ZDkyYjU0ZTE1Li42YjkzYjI3OGZhNjY5YzM2NDhhOTVh
ODY1YWMyMzllZWVjMzVlYTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2lmIEVO
QUJMRShTVkcpCiAjaW5jbHVkZSAiUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCIKIAorI2luY2x1ZGUg
IlJlbmRlckJveE1vZGVsT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJPYmplY3QuaCIK
ICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAj
aW5jbHVkZSAiU1ZHUmVzb3VyY2VzQ2FjaGUuaCIKQEAgLTQ1LDIyICs0NywyMiBAQCBSZW5kZXJT
VkdNb2RlbE9iamVjdDo6UmVuZGVyU1ZHTW9kZWxPYmplY3QoU1ZHU3R5bGVkRWxlbWVudCogbm9k
ZSkKIHsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIp
IGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QK
IHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJl
cGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lcik7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHTW9kZWxP
YmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25z
dAordm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQo
UmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJl
Y3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZs
b2F0UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZp
eGVkKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5l
cihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCAvKiBmaXhlZCAq
LywgYm9vbCAvKiB1c2VUcmFuc2Zvcm1zICovLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3Rh
dGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQg
UmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyTGF5ZXJPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgLyogZml4ZWQgKi8sIGJvb2wgLyogdXNlVHJhbnNm
b3JtcyAqLywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZs
aXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6
bWFwTG9jYWxUb0NvbnRhaW5lcih0aGlzLCByZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0
ZSwgd2FzRml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR01vZGVsT2Jq
ZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBh
bmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citj
b25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR01vZGVsT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29u
dGFpbmVyKGNvbnN0IFJlbmRlckxheWVyT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJH
ZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1
cHBvcnQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIodGhpcywgYW5jZXN0b3JUb1N0b3BBdCwgZ2Vv
bWV0cnlNYXApOwogfQpAQCAtNjgsNyArNzAsNyBAQCBjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRl
clNWR01vZGVsT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveAog
Ly8gQ29waWVkIGZyb20gUmVuZGVyQm94LCB0aGlzIG1ldGhvZCBsaWtlbHkgcmVxdWlyZXMgZnVy
dGhlciByZWZhY3RvcmluZyB0byB3b3JrIGVhc2lseSBmb3IgYm90aCBTVkcgYW5kIENTUyBCb3gg
TW9kZWwgY29udGVudC4KIC8vIEZJWE1FOiBUaGlzIG1heSBhbHNvIG5lZWQgdG8gbW92ZSBpbnRv
IFNWR1JlbmRlclN1cHBvcnQgYXMgdGhlIFJlbmRlckJveCB2ZXJzaW9uIGRlcGVuZHMKIC8vIG9u
IGJvcmRlckJvdW5kaW5nQm94KCkgd2hpY2ggU1ZHIFJlbmRlckJveCBzdWJjbGFzZXMgKGxpa2Ug
U1ZHUmVuZGVyQmxvY2spIGRvIG5vdCBpbXBsZW1lbnQuCi1MYXlvdXRSZWN0IFJlbmRlclNWR01v
ZGVsT2JqZWN0OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9pbnQqKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJT
VkdNb2RlbE9iamVjdDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIExheW91dFBvaW50KikgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0
IGJveCA9IGVuY2xvc2luZ0xheW91dFJlY3QocmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMo
KSk7CiAgICAgYWRqdXN0UmVjdEZvck91dGxpbmVBbmRTaGFkb3coYm94KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAppbmRleCAw
ZDgxOTI2MDkzZjZiZjc0ZWRjMDhjNDhjMjg3OTc3NGE0NGIyZDYwLi5lNjg3OWY5NmNjMjBjYmUy
NzAzOTYxYWQ3NDFlOWRhODVlMDg2ZGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCkBAIC01MSwxNSArNTEsMTUgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRQb2ludCopIGNvbnN0
OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChS
ZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJMYXllck9iamVj
dCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9pbnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYs
IEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNG
aXhlZCA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3Rv
cEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2Nh
bFRvQ29udGFpbmVyKFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVz
ZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJG
bGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7
CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIo
Y29uc3QgUmVuZGVyTGF5ZXJPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5
TWFwJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZl
cmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAK
aW5kZXggYzA5NDU3ZTYxYjFiNzU5MTQ3MzQ3ZGZjMDA1ODU5YzcyMTMwNTg0ZC4uYjg3Yjc0YzAy
Mjk1N2JhNDdkMmUxMWQyMzVlNmI5MzdjYTQzZmMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC0zNjksMTIgKzM2OSwxMiBAQCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIFJlbmRlclNWR1Jvb3Q6OmxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0o
KSBjb25zdAogICAgIHJldHVybiBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07CiB9CiAKLUxheW91
dFJlY3QgUmVuZGVyU1ZHUm9vdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRl
clNWR1Jvb3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyKTsK
IH0KIAotdm9pZCBSZW5kZXJTVkdSb290Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVj
dCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZsb2F0UmVj
dEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVj
dCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gQXBwbHkgb3VyIGxv
Y2FsIHRyYW5zZm9ybXMgKGV4Y2VwdCBmb3IgeC95IHRyYW5zbGF0aW9uKSwgdGhlbiBvdXIgc2hh
ZG93LCAKICAgICAvLyBhbmQgdGhlbiBjYWxsIFJlbmRlckJveCdzIG1ldGhvZCB0byBoYW5kbGUg
YWxsIHRoZSBub3JtYWwgQ1NTIEJveCBtb2RlbCBiaXRzCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9p
ZCBSZW5kZXJTVkdSb290Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnQKIC8vIFRoaXMgbWV0aG9kIGV4cGVjdHMgbG9jYWwgQ1NTIGJv
eCBjb29yZGluYXRlcy4KIC8vIENhbGxlcnMgd2l0aCBsb2NhbCBTVkcgdmlld3BvcnQgY29vcmRp
bmF0ZXMgc2hvdWxkIGZpcnN0IGFwcGx5IHRoZSBsb2NhbFRvQm9yZGVyQm94VHJhbnNmb3JtCiAv
LyB0byBjb252ZXJ0IGZyb20gU1ZHIHZpZXdwb3J0IGNvb3JkaW5hdGVzIHRvIGxvY2FsIENTUyBi
b3ggY29vcmRpbmF0ZXMuCi12b2lkIFJlbmRlclNWR1Jvb3Q6Om1hcExvY2FsVG9Db250YWluZXIo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wg
dXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRh
aW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1Jvb3Q6
Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9y
bVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKCFmaXhlZCk7IC8vIFdlIHNob3VsZCBoYXZlIG5vIGZpeGVkIGNvbnRlbnQg
aW4gdGhlIFNWRyByZW5kZXJpbmcgdHJlZS4KICAgICBBU1NFUlQodXNlVHJhbnNmb3Jtcyk7IC8v
IG1hcHBpbmcgYSBwb2ludCB0aHJvdWdoIFNWRyB3L28gcmVzcGVjdGluZyB0cmFzbmZvcm1zIGlz
IHVzZWxlc3MuCkBAIC00MDMsNyArNDAzLDcgQEAgdm9pZCBSZW5kZXJTVkdSb290OjptYXBMb2Nh
bFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLAogICAg
IFJlbmRlclJlcGxhY2VkOjptYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZp
eGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwLCB3
YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHUm9vdDo6cHVzaE1h
cHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0
b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAorY29uc3QgUmVuZGVy
T2JqZWN0KiBSZW5kZXJTVkdSb290OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRl
ckxheWVyT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0
cnlNYXApIGNvbnN0CiB7CiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKGFuY2VzdG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFwKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKaW5kZXggOWFhN2U3YzE4NmFlNDg3
NjkwYzQwYWFjOTA1ZmY1Y2MwZDAyMzc0NC4uM2U0NDk4ZGEwN2ZmNTQ0ZjIzOGQ5ZTM3MjAxNjQz
ZGZlYzM3NGNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmgKQEAgLTkyLDExICs5MiwxMSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhp
dFRlc3RQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgTGF5b3V0
UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJl
Y3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9h
dFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91
dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0
Rm9yUmVwYWludChSZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0
JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFw
TG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
Ym9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29u
dGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDAp
IGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29u
dGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5k
ZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFp
bmVyKFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9y
bXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3Qg
PSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgdmly
dHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyTGF5ZXJPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VGV4dC5jcHAKaW5kZXggZjUxNGUyMTU3YzQ1YzY5YWY1MzZhZDA2MTM3YjM3NzgzNDk0OGE5NC4u
NTNmM2VjMzU0NTcxNmVlYzFlMWQ4MDg1YTI5Yzg0MGE2MzhlNzE3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC05NCwyOSArOTQsMjkg
QEAgY29uc3QgUmVuZGVyU1ZHVGV4dCogUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4
dEFuY2VzdG9yKGNvbnN0IFJlbmRlck9iamUKICAgICByZXR1cm4gdG9SZW5kZXJTVkdUZXh0KHN0
YXJ0KTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJTVkdUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QK
K0xheW91dFJlY3QgUmVuZGVyU1ZHVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
UmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHRoaXMsIHJl
cGFpbnRDb250YWluZXIpOwogfQogCi12b2lkIFJlbmRlclNWR1RleHQ6OmNvbXB1dGVSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVj
dCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZVJl
Y3RGb3JSZXBhaW50KFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRS
ZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIEZsb2F0UmVjdCByZXBhaW50UmVj
dCA9IHJlY3Q7CiAgICAgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5l
ciwgcmVwYWludFJlY3QsIGZpeGVkKTsKICAgICByZWN0ID0gZW5jbG9zaW5nTGF5b3V0UmVjdChy
ZXBhaW50UmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZUZsb2F0UmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVj
dCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1RleHQ6OmNv
bXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIFNW
R1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRD
b250YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHVGV4dDo6
bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgYm9vbCAvKiBmaXhlZCAqLywgYm9vbCAvKiB1c2VUcmFuc2Zvcm1zICovLCBUcmFuc2Zvcm1T
dGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29sKiB3YXNG
aXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5k
ZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCAvKiBmaXhlZCAqLywgYm9vbCAv
KiB1c2VUcmFuc2Zvcm1zICovLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5
Q29udGFpbmVyRmxpcE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5k
ZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRy
YW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVy
U1ZHVGV4dDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVj
dCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25z
dAorY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdUZXh0OjpwdXNoTWFwcGluZ1RvQ29udGFp
bmVyKGNvbnN0IFJlbmRlckxheWVyT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9t
ZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBv
cnQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIodGhpcywgYW5jZXN0b3JUb1N0b3BBdCwgZ2VvbWV0
cnlNYXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQu
aAppbmRleCA5M2NiNjRmOGZiMmU3NGVlYjI4NmFlYmI0NjJkNzlmMmYxYmNkNmRkLi41OWMzN2U3
ZDUyZjI0ZTBiY2RlYjkzZmRhNmFiNzgzMWQ2NzcxNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaApAQCAtNzEsMTIgKzcxLDEyIEBAIHByaXZhdGU6
CiAKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJv
b2wqIHdhc0ZpeGVkKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQg
PSBmYWxzZSkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBi
b29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJM
YXllck9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBm
YWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50
KFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZp
eGVkID0gZmFsc2UpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWlu
ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNm
b3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5v
dCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAm
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJMYXll
ck9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVk
LCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWlu
ZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgUmVu
ZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyT2JqZWN0
KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9y
ZUNoaWxkID0gMCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBPVkVSUklERTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9y
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3Bw
CmluZGV4IDBiZmIwYTUyNzljODg4NDk0NjVlZGYyZjk1MWJmOGFlMDM0NGRhYzEuLmU3ZDViMTIz
MzA1NWI0NmM5M2FiYWU0ZTA1NTRmNjAxYWY3MDM5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtNDYsNyArNDYsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUxheW91dFJlY3QgU1ZHUmVuZGVyU3VwcG9ydDo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKQorTGF5b3V0UmVjdCBTVkdSZW5k
ZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmpl
Y3QqIG9iamVjdCwgUmVuZGVyTGF5ZXJPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCiB7CiAgICAg
Ly8gUmV0dXJuIGVhcmx5IGZvciBhbnkgY2FzZXMgd2hlcmUgd2UgZG9uJ3QgYWN0dWFsbHkgcGFp
bnQKICAgICBpZiAob2JqZWN0LT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAh
b2JqZWN0LT5lbmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVudCgpKQpAQCAtNTksNyAr
NTksNyBAQCBMYXlvdXRSZWN0IFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCogbwogICAgIHJldHVybiBlbmNsb3NpbmdMYXlv
dXRSZWN0KHJlcGFpbnRSZWN0KTsKIH0KIAotdm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRl
RmxvYXRSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJv
b2wgZml4ZWQpCit2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBh
aW50KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJMYXllck9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkKIHsKICAgICBj
b25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnU3R5bGUgPSBvYmplY3QtPnN0eWxlKCktPnN2Z1N0eWxl
KCk7CiAgICAgaWYgKGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdyA9IHN2Z1N0eWxlLT5zaGFkb3co
KSkKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRS
ZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmUKICAgICBvYmplY3Qt
PnBhcmVudCgpLT5jb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCBy
ZXBhaW50UmVjdCwgZml4ZWQpOwogfQogCi12b2lkIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2Fs
VG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIGJv
b2wqIHdhc0ZpeGVkKQordm9pZCBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVy
KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJMYXllck9iamVjdCogcmVwYWludENv
bnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBib29sKiB3YXNGaXhlZCkK
IHsKICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybShvYmplY3QtPmxvY2FsVG9QYXJl
bnRUcmFuc2Zvcm0oKSk7CiAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0
OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJC
b3gKICAgICBwYXJlbnQtPm1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgZmFs
c2UsIHRydWUsIHRyYW5zZm9ybVN0YXRlLCBSZW5kZXJPYmplY3Q6OkRvTm90QXBwbHlDb250YWlu
ZXJGbGlwLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogU1ZHUmVuZGVyU3Vw
cG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwg
Y29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21l
dHJ5TWFwJiBnZW9tZXRyeU1hcCkKK2NvbnN0IFJlbmRlck9iamVjdCogU1ZHUmVuZGVyU3VwcG9y
dDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgY29u
c3QgUmVuZGVyTGF5ZXJPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFw
JiBnZW9tZXRyeU1hcCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGFuY2VzdG9yVG9TdG9wQXQsIGFu
Y2VzdG9yVG9TdG9wQXQgIT0gb2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaAppbmRleCBmYTk2MGYwNWU2OWUwMmExYTVlYmIxODIy
MDY2MmZiN2E3NTc5MDgzLi44MmYyZGUyNWI5YmQzOTRhYjk5OThiZWM4ZWMzYzAyZTg3NTE1ZWU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBv
cnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQu
aApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsK
IGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyR2VvbWV0cnlNYXA7Citj
bGFzcyBSZW5kZXJMYXllck9iamVjdDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRl
clN0eWxlOwogY2xhc3MgUmVuZGVyU1ZHUm9vdDsKQEAgLTYyLDEwICs2MywxMCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGJvb2wgcGFpbnRJbmZvSW50ZXJzZWN0c1JlcGFpbnRSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgbG9jYWxSZXBhaW50UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRy
YW5zZm9ybSwgY29uc3QgUGFpbnRJbmZvJik7CiAKICAgICAvLyBJbXBvcnRhbnQgZnVuY3Rpb25z
IHVzZWQgYnkgbmVhcmx5IGFsbCBTVkcgcmVuZGVyZXJzIGNlbnRyYWxpemluZyBjb29yZGluYXRl
IHRyYW5zZm9ybWF0aW9ucyAvIHJlcGFpbnQgcmVjdCBjYWxjdWxhdGlvbnMKLSAgICBzdGF0aWMg
TGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmpl
Y3QqLCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7Ci0gICAgc3RhdGlj
IHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiwgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4
ZWQpOwotICAgIHN0YXRpYyB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2Jq
ZWN0KiwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0
YXRlJiwgYm9vbCogd2FzRml4ZWQgPSAwKTsKLSAgICBzdGF0aWMgY29uc3QgUmVuZGVyT2JqZWN0
KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpOwor
ICAgIHN0YXRpYyBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0
IFJlbmRlck9iamVjdCosIFJlbmRlckxheWVyT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKTsKKyAg
ICBzdGF0aWMgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmpl
Y3QqLCBSZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9v
bCBmaXhlZCk7CisgICAgc3RhdGljIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJPYmplY3QqLCBSZW5kZXJMYXllck9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3Jt
U3RhdGUmLCBib29sKiB3YXNGaXhlZCA9IDApOworICAgIHN0YXRpYyBjb25zdCBSZW5kZXJPYmpl
Y3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVu
ZGVyTGF5ZXJPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJik7CiAK
ICAgICAvLyBTaGFyZWQgYmV0d2VlbiBTVkcgcmVuZGVyZXJzIGFuZCByZXNvdXJjZXMuCiAgICAg
c3RhdGljIHZvaWQgYXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFJlbmRlck9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJSZW5kZXJMYXllci5jcHAKaW5kZXggNTg2ZjEzNjJlMjE1YmFkM2RhY2FlZWNmNWY1
ZTIxZmVhNzE1Mzg0Ni4uNGVhNTQ0YWJlMThmZTE2ODYyOTBmNThmMWNkOGQ1YTljZWM5ZjE5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyTGF5ZXIuY3BwCkBAIC03NSw3ICs3NSw3
IEBAIFBhc3NSZWZQdHI8TXV0YWJsZUFycmF5PiBXZWJSZW5kZXJMYXllcjo6Y3JlYXRlQXJyYXlG
cm9tTGF5ZXJMaXN0KFZlY3RvcjxSZW5kZXJMCiAKIFdlYlJlbmRlckxheWVyOjpXZWJSZW5kZXJM
YXllcihSZW5kZXJMYXllciogbGF5ZXIpCiB7Ci0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
bmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IGxheWVyLT5yZW5kZXJlcigpOwogCiAgICAgbV9yZW5kZXJPYmplY3ROYW1lID0gcmVuZGVyZXIt
PnJlbmRlck5hbWUoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151471</attachid>
            <date>2012-07-10 09:48:16 -0700</date>
            <delta_ts>2012-07-13 14:41:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86022-20120710124815.patch</filename>
            <type>text/plain</type>
            <size>130609</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ2NmU1ZWIwZDgyY2I3
M2YyMmQwNmUxMjA5OTZkYjVkMDA5MjZmYy4uYmI1OGM1MTE5YWI1MDA2ZmJlN2I4MWNlMjE4OWNl
Nzg0ODNkZDNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyNSBAQAorMjAxMi0wNy0xMCAgRmxv
cmluIE1hbGl0YSAgPGZtYWxpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZmFjdG9yIGxh
eWVyLXJlbGF0ZWQgbG9naWMgb3V0IG9mIFJlbmRlckJveE1vZGVsT2JqZWN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjAyMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZXh0cmFjdHMg
dGhlIGxheWVyLXJlbGF0ZWQgbG9naWMgaW50byBhIGRlZGljYXRlZCBjbGFzcworICAgICAgICAo
UmVuZGVyQmFzZU9iamVjdCkgYW5kIHJlZmFjdG9ycyBkZXBlbmRlbnQgY29kZSB0byBtYWtlIHVz
ZSBvZiB0aGUgbmV3CisgICAgICAgIHR5cGUgaW5zdGVhZCBvZiBSZW5kZXJCb3hNb2RlbE9iamVj
dC4gVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBvZiBhZGRpbmcKKyAgICAgICAgbm9uLVJlbmRlckJv
eE1vZGVsT2JqZWN0IGxheWVyIHN1cHBydC4KKworICAgICAgICBObyBuZXcgdGVzdHM6IHJlZmFj
dG9yaW5nIHdpdGggbm8gYmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnBy
aToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRS
ZXBhaW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5b3V0UmVwYWludGVy
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQlIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJSOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJhc2VPYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmFzZU9iamVjdDo6UmVuZGVyQmFzZU9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCYXNlT2JqZWN0Ojp+UmVuZGVyQmFzZU9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCYXNlT2JqZWN0OjpkZXN0cm95TGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmFzZU9iamVjdDo6ZW5zdXJlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmFzZU9iamVjdDo6aGFzU2VsZlBhaW50aW5nTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmFzZU9iamVjdDo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmFzZU9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
UmVuZGVyQmFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCYXNlT2JqZWN0Ojps
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCYXNlT2JqZWN0OjpyZXF1aXJlc0xheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmVuZGVyQmFzZU9iamVjdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpz
ZWxlY3Rpb25HYXBSZWN0c0ZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCbG9jay5oOgorICAgICAgICAoUmVuZGVyQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6b3V0bGluZUJvdW5k
c0ZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjptYXBMb2NhbFRvQ29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cHVzaE1hcHBpbmdUb0NvbnRh
aW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlY3RGb3JS
ZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6ZW5jbG9zaW5nRmxvYXRQYWlu
dGluZ0xheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChS
ZW5kZXJCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6UmVuZGVyQm94TW9kZWxP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6On5SZW5kZXJC
b3hNb2RlbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6
d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuaDoKKyAgICAgICAgKFJlbmRlckJveE1vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2Vv
bWV0cnlNYXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyR2VvbWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rvcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckdlb21ldHJ5TWFwLmg6CisgICAgICAgIChSZW5kZXJHZW9tZXRyeU1hcCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcklubGluZTo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW5saW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAgIChSZW5kZXJJbmxpbmUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVw
ZGF0ZUxheWVyUG9zaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb21w
dXRlUmVwYWludFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrQ29udGFpbmluZ0Jsb2Nr
Q2hhaW5Gb3JQYWdpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRh
dGVMYXllclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUG9zaXRpb25lZENvbnRhaW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGFzQW5jZXN0b3JXaXRoRmlsdGVy
T3V0c2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsVG8pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGlu
Z0Rlc2NlbmRhbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAg
ICAgKFJlbmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZW5kZXJl
cik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZW5kZXJlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXBhaW50T25Db21wb3NpdGluZ0NoYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbkZvckNvbXBv
c2l0aW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKFJlbmRl
ckxpc3RNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3Jl
OjphZGRMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZW1vdmVMYXll
cnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojptb3ZlTGF5ZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6ZmluZE5leHRMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmVuY2xvc2luZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVt
ZW50TGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29udGFpbmVyRm9y
UmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnRVc2luZ0Nv
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZXBhaW50UmVjdGFuZ2xlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJl
cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJl
cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0
Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkanVzdFN0eWxl
RGlmZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om1hcExvY2FsVG9D
b250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2hvdWxkVXNlVHJh
bnNmb3JtRnJvbUNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omdl
dFRyYW5zZm9ybUZyb21Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
Ojpsb2NhbFRvQ29udGFpbmVyUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OmxvY2FsVG9Db250YWluZXJQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OmNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ry
b3llZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzQ29tcG9zaXRlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzTGF5ZXJCYXNlKToKKyAgICAgICAgKFJl
bmRlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNlbGVjdGlvblJl
Y3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6b3V0bGluZUJv
dW5kc0ZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6c2VsZWN0aW9uUmVjdEZvclJlcGFp
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaDoKKyAg
ICAgICAgKFJlbmRlclJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2VsZWN0
aW9uSW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2VsZWN0aW9uSW5mb0Jhc2U6OnJl
cGFpbnRDb250YWluZXIpOgorICAgICAgICAoUmVuZGVyU2VsZWN0aW9uSW5mb0Jhc2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGFibGVDZWxsOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAoUmVuZGVyVGFibGVD
ZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGFibGVDb2w6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaDoKKyAgICAgICAgKFJlbmRlclRh
YmxlQ29sKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaDoKKyAgICAgICAgKFJlbmRl
clRhYmxlUm93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKFJlbmRlclRleHQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZXc6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Vmlldzo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjppc0NvbXBv
c2l0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBh
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJWaWV3OjpzZWxlY3Rpb25Cb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVmlldzo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmNs
ZWFyU2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorICAgICAg
ICAoUmVuZGVyVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRh
aW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg6
CisgICAgICAgIChSZW5kZXJTVkdGb3JlaWduT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
R3JhZGllbnRTdG9wOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpjb21wdXRlRmxvYXRSZWN0
Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6Om1hcExvY2Fs
VG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGlu
ZS5oOgorICAgICAgICAoUmVuZGVyU1ZHSW5saW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01v
ZGVsT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om1hcExvY2FsVG9Db250YWlu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OnB1c2hNYXBwaW5n
VG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om91
dGxpbmVCb3VuZHNGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R01vZGVsT2JqZWN0Lmg6CisgICAgICAgIChSZW5kZXJTVkdNb2RlbE9iamVjdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jvb3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CisgICAgICAgIChSZW5kZXJTVkdS
b290KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JS
ZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6Om1hcExvY2FsVG9Db250
YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6cHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0Lmg6CisgICAg
ICAgIChSZW5kZXJTVkdUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1
cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3VwcG9y
dDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVu
ZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
U1ZHUmVuZGVyU3VwcG9ydCk6CisKIDIwMTItMDctMTAgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVs
bGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgRG9uJ3QgZGVzdHJveSB0aGUgZGVjb2RlZCBk
YXRhIG9mIGFuIGltYWdlIGlmIFdlYktpdCBpcyBhYm91dCB0byByZW5kZXIgdGhlIGltYWdlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlMDczN2Q4ZmQ1YzgzMTM3Nzg3ZGRiMmYwMTA3OTFmYzky
N2ZhYjc4Li5lMzc4NDkzMzA4M2ZkM2YwZWEzMzczMDVhY2JlMWIzNGQ3OTVlMGE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTM3NCw2ICsxMzc0LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwog
ICAgIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisgICAgcmVuZGVyaW5n
L1JlbmRlckJhc2VPYmplY3QuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwCiAgICAgcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBhYjFl
NDU5NzVjMGRlNjdiNTllODY2NzA2ZDZmZDRiMThiYTAwM2U3Li42YmJjMTMwNWRmMmRlNzY4MjM1
NDdkZGVjZTQxODA1YTQxMmQwYWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTM4OTQsNiArMzg5NCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCYXNlT2JqZWN0
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJhc2VPYmplY3QuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBcCiAJU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
aW5kZXggMGMxNDAwZmRmNWQ1MTg3ZjNhMjYwNmJiY2IxZmNhM2MxZWZlMTM0NS4uNDVlNDY4MTU5
NGM1NDgzYzgxNzA0ZjA1MWQ3YzAyMWEzZjQyMWFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0xMjg4LDYg
KzEyODgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBc
CiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAgXAorICAgIHJlbmRlcmluZy9SZW5kZXJCYXNlT2JqZWN0LmNwcCBcCiAg
ICAgcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgXAogICAgIHJlbmRlcmluZy9S
ZW5kZXJMYXllckZpbHRlckluZm8uY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGluZUJveExp
c3QuY3BwIFwKQEAgLTI1MjIsNiArMjUyMyw3IEBAIEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmlu
Zy9SZW5kZXJJbnB1dFNwZWVjaC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBcCiAg
ICAgcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIFwKKyAgICByZW5kZXJpbmcvUmVuZGVy
QmFzZU9iamVjdC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggXAog
ICAgIHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMmZhN2Q1Y2Y3MzA2NDVlYTM2MTE1
YjcwZTdlZDU4ZmRkYmU2YTA0MC4uZTNjNjFkN2U3YjI1ZDNiMGI0ZDU4ZDExYTQ3MmRiMzUxNzk3
OGE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTEwOTIsNyArMTA5Miw3IEBAIF9fWk5LN1dl
YkNvcmUxMVJlbmRlclN0eWxlMjF2aXNpdGVkRGVwZW5kZW50Q29sb3JFaQogX19aTks3V2ViQ29y
ZTExU2NyaXB0VmFsdWU5Z2V0U3RyaW5nRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGNlN0cmluZ0UK
IF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE0ZW5jbG9zaW5nTGF5ZXJFdgogX19aTks3V2Vi
Q29yZTEyUmVuZGVyT2JqZWN0MTVsb2NhbFRvQWJzb2x1dGVFUktOU18xMEZsb2F0UG9pbnRFYmIK
LV9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDIwbG9jYWxUb0NvbnRhaW5lclF1YWRFUktOU185
RmxvYXRRdWFkRVBOU18yMFJlbmRlckJveE1vZGVsT2JqZWN0RWJQYgorX19aTks3V2ViQ29yZTEy
UmVuZGVyT2JqZWN0MjBsb2NhbFRvQ29udGFpbmVyUXVhZEVSS05TXzlGbG9hdFF1YWRFUE5TXzE2
UmVuZGVyQmFzZU9iamVjdEViUGIKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDIzYWJzb2x1
dGVCb3VuZGluZ0JveFJlY3RFYgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MzlwaXhlbFNu
YXBwZWRBYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3RFdgogX19aTks3V2ViQ29yZTEyUmVuZGVy
T2JqZWN0N2NoaWxkQXRFagpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDUwZWZlMTBlY2MzZWVlOThjZjhh
YWRiMTMxZTBhZjZjZjExY2RlYWIuLjIzOTBlNDE0YmUwZWI2NDYyMzc1YmVjODk4MWRiYTc3MzI5
MjEwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTU1Myw2ICs1NTMsNyBAQAogICAgICAgICAgICAg
J3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oJywKICAgICAgICAgICAg
ICdyZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyQmFzZU9iamVj
dC5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgnLAog
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5oJywKICAgICAgICAgICAg
ICdyZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaCcsCkBAIC00Njk3LDYgKzQ2OTgsNyBAQAogICAg
ICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbnB1dFNwZWVjaC5oJywKICAgICAgICAgICAgICdy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckJhc2VPYmpl
Y3QuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oJywKICAg
ICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDkwNjJjOGIyMzFm
NmMwYTVhYTNiZDFhOTRiNTFmNGQ0OGZkMzg4MzQuLjg2YjVkMzUxNTE5ZDU0ZGI4ODYyNWQyNWZi
MDZkNzQ0MjQ3N2E4OGUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC00MDAzMSw2ICs0MDAzMSwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVyQmFzZU9iamVjdC5j
cHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJl
bmRlcmluZ1xSZW5kZXJCYXNlT2JqZWN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
IgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NzVmNDI1Y2VlMDc4ZGVjNTlj
Yjg0ZTA2ZGFhZWE0Y2YyMWVjNGI1Li4wOWY3OWZhMDEyZWJlZjg3YWVhYzRjYWFlNWNlNGM0NDdh
ZjcyNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMDExLDYgKzEwMTEsOCBAQAogCQkzQUIwMkQyQjEyRDRGOTE2MDBGQkI2
OTQgLyogU3RvcmFnZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gM0FCMDJEMjkxMkQ0RjkxNjAwRkJCNjk0IC8qIFN0b3JhZ2VUcmFja2Vy
LmNwcCAqLzsgfTsKIAkJM0FDMzY4MDAxMkVGN0EwOTAwNkEzRDZGIC8qIFN0b3JhZ2VUcmFja2Vy
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
QUMzNjdGRTEyRUY3QTA5MDA2QTNENkYgLyogU3RvcmFnZVRyYWNrZXJDbGllbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzQUM2NDhCMjEyOUUx
NDY1MDBDM0VCMjUgLyogRWRpdGluZ0JvdW5kYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQUM2NDhCMTEyOUUxNDY1MDBDM0VCMjUgLyogRWRpdGlu
Z0JvdW5kYXJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJM0MyNDRGRUFBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlckJhc2VPYmplY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNDMjQ0RkU0QTM3NUFD
NjMzRjg4QkU2RiAvKiBSZW5kZXJCYXNlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJM0MyNDRGRUJBMzc1QUM2MzNGODhCRTZGIC8qIFJl
bmRlckJhc2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gM0MyNDRGRTVBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlckJhc2VPYmplY3QuY3Bw
ICovOyB9OwogCQk0MTAwMkNDRDBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkND
QjBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi87IH07CiAJCTQxMDAy
Q0NFMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMDJDQ0MwRjY2RURFRjAwOUU2
NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi87IH07CiAJCTQxMEI3RTcyMTA0NUZBQjAw
MEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwpAQCAtODA0MCw2ICs4MDQyLDggQEAKIAkJM0FC
MDJEMjkxMkQ0RjkxNjAwRkJCNjk0IC8qIFN0b3JhZ2VUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3JhZ2VUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJM0FDMzY3RkUxMkVGN0EwOTAwNkEzRDZGIC8qIFN0b3JhZ2VUcmFj
a2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VUcmFj
a2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNBQzY0OEIxMTI5RTE0
NjUwMEMzRUIyNSAvKiBFZGl0aW5nQm91bmRhcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRWRpdGluZ0JvdW5kYXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTNDMjQ0RkU0QTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJCYXNlT2JqZWN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckJhc2VPYmplY3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJM0MyNDRGRTVBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlckJhc2VP
YmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQmFz
ZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMDAyQ0NCMEY2NkVE
RUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMDAyQ0NDMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxs
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwQjdFNzExMDQ1RkFCMDAwRDgy
MjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIxMTU0LDYgKzIxMTU4LDggQEAKIAkJCQlCQ0VBNDgzQjA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVyTGF5ZXIuaCAqLywKIAkJCQkwRjU4MENGQzBGMTJERTlCMDA1MUQ2ODkg
LyogUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCAqLywKIAkJCQkwRjU4MENGQjBGMTJERTlCMDA1MUQ2
ODkgLyogUmVuZGVyTGF5ZXJCYWNraW5nLmggKi8sCisJCQkJM0MyNDRGRTVBMzc1QUM2MzNGODhC
RTZGIC8qIFJlbmRlckJhc2VPYmplY3QuY3BwICovLAorCQkJCTNDMjQ0RkU0QTM3NUFDNjMzRjg4
QkU2RiAvKiBSZW5kZXJCYXNlT2JqZWN0LmggKi8sCiAJCQkJMEY1ODBDRkEwRjEyREU5QjAwNTFE
Njg5IC8qIFJlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgKi8sCiAJCQkJMEY1ODBDRjkwRjEyREU5
QjAwNTFENjg5IC8qIFJlbmRlckxheWVyQ29tcG9zaXRvci5oICovLAogCQkJCTUwRDEwRDk3MTU0
NUY1NzYwMDk2RDI4OCAvKiBSZW5kZXJMYXllckZpbHRlckluZm8uY3BwICovLApAQCAtMjQzNDMs
NiArMjQzNDksNyBAQAogCQkJCTc1MEQwMjk0MTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1
dFNwZWVjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4N0EwOTdEOTMwMjAwOTRDOUU0IC8q
IFJlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MENGRjBGMTJERTlCMDA1MUQ2
ODkgLyogUmVuZGVyTGF5ZXJCYWNraW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQkzQzI0NEZFQUEz
NzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyQmFzZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY1ODBDRkQwRjEyREU5QjAwNTFENjg5IC8qIFJlbmRlckxheWVyQ29tcG9zaXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTBEMTBEOUExNTQ1RjU3NjAwOTZEMjg4IC8qIFJlbmRlckxheWVyRmls
dGVySW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEJFMDMwQTIwRjMxMTJGQjAwM0MxQTQ2IC8q
IFJlbmRlckxpbmVCb3hMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI3NTU0LDYgKzI3NTYxLDcg
QEAKIAkJCQk3NTBEMDI5MzExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2guY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NzkwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxh
eWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTgwRDAwMEYxMkRFOUIwMDUxRDY4OSAvKiBS
ZW5kZXJMYXllckJhY2tpbmcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJM0MyNDRGRUJBMzc1QUM2
MzNGODhCRTZGIC8qIFJlbmRlckJhc2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1
ODBDRkUwRjEyREU5QjAwNTFENjg5IC8qIFJlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MEQxMEQ5OTE1NDVGNTc2MDA5NkQyODggLyogUmVuZGVyTGF5ZXJGaWx0
ZXJJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMzNGQjFCMEYzMEVFODUwMDJDREQ3QyAv
KiBSZW5kZXJMaW5lQm94TGlzdC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuaAppbmRleCA1NzQwMGZhZWJmN2IyMGExNjU0Yzg5YTgx
ZGRiY2IzZjE5MzVmZmIwLi4wMDdhMDE5YTQwMDYzMTc5ZWFiY2IxOTk1YjhjMWZkOGU0NjY1MmFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5oCkBAIC0zMCw4
ICszMCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVyQmFzZU9iamVj
dDsKIGNsYXNzIFJlbmRlck9iamVjdDsKLWNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OwogCiBj
bGFzcyBMYXlvdXRSZXBhaW50ZXIgewogcHVibGljOgpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyT2JqZWN0JiBtX29iamVjdDsKLSAgICBSZW5kZXJCb3hN
b2RlbE9iamVjdCogbV9yZXBhaW50Q29udGFpbmVyOworICAgIFJlbmRlckJhc2VPYmplY3QqIG1f
cmVwYWludENvbnRhaW5lcjsKICAgICAvLyBXZSBzdG9yZSB0aGVzZSB2YWx1ZXMgYXMgTGF5b3V0
UmVjdHMsIGJ1dCB0aGUgZmluYWwgaW52YWxpZGF0aW9ucyB3aWxsIGJlIHBpeGVsIHNuYXBwZWQK
ICAgICBMYXlvdXRSZWN0IG1fb2xkQm91bmRzOwogICAgIExheW91dFJlY3QgbV9vbGRPdXRsaW5l
Qm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaAppbmRleCA0OWY5YjVlNmNjMjBlOTQ5
ZjY2MDYxY2JkYWUzYTFiMzYwZWMzODUwLi5lMDdhNTJlYWMxZjAzYmQwNGYwYmVmMzk2ZDljMjRj
MGZhM2I2NzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaApAQCAtMzgsNyArMzgs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCB7IHJldHVybiAiUmVuZGVyQlIiOyB9CiAgCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVj
dGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWlu
ZXIqLywgYm9vbCAvKmNsaXBUb1Zpc2libGVDb250ZW50Ki8pIHsgcmV0dXJuIExheW91dFJlY3Qo
KTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5k
ZXJCYXNlT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgYm9vbCAvKmNsaXBUb1Zpc2libGVD
b250ZW50Ki8pIHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQogCiAgICAgdmlydHVhbCBmbG9hdCB3
aWR0aCh1bnNpZ25lZCAvKmZyb20qLywgdW5zaWduZWQgLypsZW4qLywgY29uc3QgRm9udCYsIGZs
b2F0IC8qeFBvcyovLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qID0gMCAvKmZhbGxi
YWNrRm9udHMqLyAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAg
IHZpcnR1YWwgZmxvYXQgd2lkdGgodW5zaWduZWQgLypmcm9tKi8sIHVuc2lnbmVkIC8qbGVuKi8s
IGZsb2F0IC8qeHBvcyovLCBib29sID0gZmFsc2UgLypmaXJzdExpbmUqLywgSGFzaFNldDxjb25z
dCBTaW1wbGVGb250RGF0YSo+KiA9IDAgLypmYWxsYmFja0ZvbnRzKi8sIEdseXBoT3ZlcmZsb3cq
ID0gMCkgY29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJhc2VPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJhc2VPYmplY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyZjZiNjUwMmUyODYyMmIxNWQ4NmMwNzFl
ZDE3OTQxMmQ4YmNhOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmFzZU9iamVjdC5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqICBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlbmRlckJhc2VPYmplY3QuaCIKKworI2luY2x1ZGUgIlJlbmRlckxheWVyLmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVuZGVy
QmFzZU9iamVjdDo6UmVuZGVyQmFzZU9iamVjdChOb2RlKiBub2RlKQorICAgIDogUmVuZGVyT2Jq
ZWN0KG5vZGUpCisgICAgLCBtX2xheWVyKDApCit7Cit9OworCitSZW5kZXJCYXNlT2JqZWN0Ojp+
UmVuZGVyQmFzZU9iamVjdCgpCit7CisgICAgLy8gT3VyIGxheWVyIHNob3VsZCBoYXZlIGJlZW4g
ZGVzdHJveWVkIGFuZCBjbGVhcmVkIGJ5IG5vdworICAgIEFTU0VSVCghaGFzTGF5ZXIoKSk7Cisg
ICAgQVNTRVJUKCFtX2xheWVyKTsKK30KKwordm9pZCBSZW5kZXJCYXNlT2JqZWN0OjpkZXN0cm95
TGF5ZXIoKQoreworICAgIEFTU0VSVCghaGFzTGF5ZXIoKSk7IC8vIENhbGxlcnMgc2hvdWxkIGhh
dmUgYWxyZWFkeSBjYWxsZWQgc2V0SGFzTGF5ZXIoZmFsc2UpCisgICAgQVNTRVJUKG1fbGF5ZXIp
OworICAgIG1fbGF5ZXItPmRlc3Ryb3kocmVuZGVyQXJlbmEoKSk7CisgICAgbV9sYXllciA9IDA7
Cit9CisKK3ZvaWQgUmVuZGVyQmFzZU9iamVjdDo6ZW5zdXJlTGF5ZXIoKQoreworICAgIGlmICht
X2xheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xheWVyID0gbmV3IChyZW5kZXJBcmVu
YSgpKSBSZW5kZXJMYXllcih0aGlzKTsKKyAgICBzZXRIYXNMYXllcih0cnVlKTsKKyAgICBtX2xh
eWVyLT5pbnNlcnRPbmx5VGhpc0xheWVyKCk7Cit9CisKK2Jvb2wgUmVuZGVyQmFzZU9iamVjdDo6
aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyICYmIG1f
bGF5ZXItPmlzU2VsZlBhaW50aW5nTGF5ZXIoKTsKK30KKwordm9pZCBSZW5kZXJCYXNlT2JqZWN0
Ojp3aWxsQmVEZXN0cm95ZWQoKQoreworICAgIC8vIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSB3
ZSBkZXN0cm95IHRoZSBSZW5kZXJPYmplY3QuCisgICAgaWYgKG1fbGF5ZXIpCisgICAgICAgIG1f
bGF5ZXItPmNsZWFyQ2xpcFJlY3RzKCk7CisKKyAgICAvLyBSZW5kZXJPYmplY3Q6OndpbGxCZURl
c3Ryb3llZCBjYWxscyBiYWNrIHRvIGRlc3Ryb3lMYXllcigpIGZvciBsYXllciBkZXN0cnVjdGlv
bgorICAgIFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJhc2VPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCYXNlT2JqZWN0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWM1OWNmZmQ3NjE1MDRiNjhjMWQzNmRhMzI3MWNiZWY3MjU0ZjI2Ygot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCYXNlT2Jq
ZWN0LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBSZW5kZXJCYXNlT2JqZWN0X2gKKyNkZWZpbmUgUmVu
ZGVyQmFzZU9iamVjdF9oCisKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJMYXllcjsKKworY2xhc3MgUmVuZGVyQmFzZU9iamVj
dCA6IHB1YmxpYyBSZW5kZXJPYmplY3QgeworcHVibGljOgorICAgIFJlbmRlckJhc2VPYmplY3Qo
Tm9kZSopOworICAgIHZpcnR1YWwgflJlbmRlckJhc2VPYmplY3QoKTsKKworICAgIC8vIENhbGxl
ZCBieSBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpIGFuZCBpcyB0aGUgb25seSB3YXkg
bGF5ZXJzIHNob3VsZCBldmVyIGJlIGRlc3Ryb3llZAorICAgIHZvaWQgZGVzdHJveUxheWVyKCk7
CisKKyAgICBib29sIGhhc1NlbGZQYWludGluZ0xheWVyKCkgY29uc3Q7CisgICAgUmVuZGVyTGF5
ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcjsgfQorCisgICAgdmlydHVhbCBib29s
IHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgdm9pZCBlbnN1cmVMYXllcigpOworCisgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3ll
ZCgpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc0xheWVyQmFzZSgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFJlbmRlckxheWVyKiBtX2xh
eWVyOworfTsKKworaW5saW5lIFJlbmRlckJhc2VPYmplY3QqIHRvUmVuZGVyQmFzZU9iamVjdChS
ZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NFUlQoIW9iamVjdCB8fCBvYmplY3QtPmlz
TGF5ZXJCYXNlKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJCYXNlT2JqZWN0Kj4o
b2JqZWN0KTsKK30KKworaW5saW5lIGNvbnN0IFJlbmRlckJhc2VPYmplY3QqIHRvUmVuZGVyQmFz
ZU9iamVjdChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NFUlQoIW9iamVj
dCB8fCBvYmplY3QtPmlzTGF5ZXJCYXNlKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBSZW5kZXJCYXNlT2JqZWN0Kj4ob2JqZWN0KTsKK30KKworLy8gVGhpcyB3aWxsIGNhdGNoIGFu
eW9uZSBkb2luZyBhbiB1bm5lY2Vzc2FyeSBjYXN0Lgordm9pZCB0b1JlbmRlckJhc2VPYmplY3Qo
Y29uc3QgUmVuZGVyQmFzZU9iamVjdCopOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBSZW5kZXJCYXNlT2JqZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCmluZGV4IGY5ZGFhZjMxOTc1MzgxODI2ZGU3Y2VlYTFjZmI4ZGZhZmEzYzc3ZmQu
LjZhZGRiOWNhMWJjNjI0OTM5YTllMDUxMzkyNjgzMTUxNjIzZGI1ZTAgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzE0OCw3ICszMTQ4LDcgQEAgYm9vbCBS
ZW5kZXJCbG9jazo6aXNTZWxlY3Rpb25Sb290KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLUdhcFJlY3RzIFJlbmRlckJsb2NrOjpzZWxlY3Rpb25HYXBSZWN0c0ZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCitHYXBSZWN0cyBSZW5kZXJCbG9j
azo6c2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRD
b250YWluZXIpCiB7CiAgICAgQVNTRVJUKCFuZWVkc0xheW91dCgpKTsKIApAQCAtNjUyMSw3ICs2
NTIxLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogICAgICAgICBxdWFkcy5hcHBlbmQoUmVu
ZGVyQm94Ojpsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdCgwLCAwLCB3aWR0aCgpLCBoZWln
aHQoKSksIGZhbHNlLCB3YXNGaXhlZCkpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpy
ZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QKK0xheW91dFJlY3QgUmVuZGVy
QmxvY2s6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQmFzZU9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CiB7CiAgICAgTGF5b3V0
UmVjdCByKFJlbmRlckJveDo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChyZXBhaW50Q29udGFp
bmVyLCBvdXRsaW5lV2lkdGgpKTsKICAgICBpZiAoaXNBbm9ueW1vdXNCbG9ja0NvbnRpbnVhdGlv
bigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCAzMzUxYzIwNTUw
MzZkNjg2NjZhYzY3ZDZjYjNjYjNhYTQwZjQ4ODU0Li44Njk5Y2U1ZTYyNTFlYzkwZWM2NDNmMDQz
MDFjNDU1YWJiMTRiY2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApA
QCAtMjA1LDcgKzIwNSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29udGFpbnNOb25aZXJvQmlk
aUxldmVsKCkgY29uc3Q7CiAKLSAgICBHYXBSZWN0cyBzZWxlY3Rpb25HYXBSZWN0c0ZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpOworICAgIEdhcFJlY3Rz
IHNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludChSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKTsKICAgICBMYXlvdXRSZWN0IGxvZ2ljYWxMZWZ0U2VsZWN0aW9uR2FwKFJlbmRlckJs
b2NrKiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaW50JiByb290QmxvY2tQaHlzaWNhbFBvc2l0
aW9uLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdEJsb2NrLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBzZWxPYmosIExheW91dFVu
aXQgbG9naWNhbExlZnQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2Fs
SGVpZ2h0LCBjb25zdCBQYWludEluZm8qKTsKICAgICBMYXlvdXRSZWN0IGxvZ2ljYWxSaWdodFNl
bGVjdGlvbkdhcChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQb2ludCYgcm9v
dEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3RC
bG9jaywKQEAgLTc3MiwxNCArNzcyLDE0IEBAIHByaXZhdGU6CiAgICAgLy8gY2hpbGRyZW4uCiAg
ICAgdmlydHVhbCBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3Q7
CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVy
QmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNv
bnN0OwogICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIG91dGxpbmVTdHlsZUZvclJlcGFpbnQoKSBj
b25zdDsKICAgICAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogaG92ZXJBbmNlc3RvcigpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEcmFnU3RhdGUoYm9vbCBkcmFnT24pOwogICAg
IHZpcnR1YWwgdm9pZCBjaGlsZEJlY2FtZU5vbklubGluZShSZW5kZXJPYmplY3QqIGNoaWxkKTsK
IAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCAvKmNsaXBUb1Zpc2libGVDb250
ZW50Ki8pCisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJl
bmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgLypjbGlwVG9WaXNpYmxlQ29u
dGVudCovKQogICAgIHsKICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWlu
dChyZXBhaW50Q29udGFpbmVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCmluZGV4IDhkODI4MjBjMGQ0YWY4MDY5M2MzZmNiOTAxNjc3MWJkM2Q1ODI3Y2IuLmUz
YWJjNWMzZGNkMTljMzMzZTM1ZDBhZTQwODg0YTUxZDJkZmVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgRmxvYXRRdWFkIFJlbmRl
ckJveDo6YWJzb2x1dGVDb250ZW50UXVhZCgpIGNvbnN0CiAgICAgcmV0dXJuIGxvY2FsVG9BYnNv
bHV0ZVF1YWQoRmxvYXRSZWN0KHJlY3QpKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om91
dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBMYXlvdXRQb2ludCogY2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVyKSBjb25zdAor
TGF5b3V0UmVjdCBSZW5kZXJCb3g6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJhc2VP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFBvaW50KiBjYWNoZWRPZmZzZXRUb1JlcGFp
bnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCBib3ggPSBib3JkZXJCb3VuZGlu
Z0JveCgpOwogICAgIGFkanVzdFJlY3RGb3JPdXRsaW5lQW5kU2hhZG93KGJveCk7CkBAIC0xMjYy
LDcgKzEyNjIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6cGVycGVuZGljdWxhckNvbnRhaW5p
bmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBjYi0+Y29tcHV0ZUNvbnRl
bnRCb3hMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHRMZW5ndGgudmFsdWUoKSk7CiB9CiAKLXZv
aWQgUmVuZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9y
bVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVy
QmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zv
cm1zLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9y
Tm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAocmVwYWludENvbnRhaW5lciA9
PSB0aGlzKQogICAgICAgICByZXR1cm47CkBAIC0xMzI0LDcgKzEzMjQsNyBAQCB2b2lkIFJlbmRl
ckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbAogICAgIG8tPm1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5l
ciwgZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlLCBEb05vdEFwcGx5Q29udGFp
bmVyRmxpcCwgd2FzRml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlckJveDo6
cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0
b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAorY29uc3Qg
UmVuZGVyT2JqZWN0KiBSZW5kZXJCb3g6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyQmFzZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21l
dHJ5TWFwKSBjb25zdAogewogICAgIEFTU0VSVChhbmNlc3RvclRvU3RvcEF0ICE9IHRoaXMpOwog
CkBAIC0xNDc3LDcgKzE0NzcsNyBAQCB2b2lkIFJlbmRlckJveDo6ZGVsZXRlTGluZUJveFdyYXBw
ZXIoKQogICAgIH0KIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25z
dAorTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJl
bmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgaWYgKHN0eWxl
KCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYmICFlbmNsb3NpbmdMYXllcigpLT5oYXNWaXNp
YmxlQ29udGVudCgpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwpAQCAtMTUwNCw3ICsx
NTA0LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW4KICAgICByZXR1cm4gcjsKIH0KIAotdm9p
ZCBSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3Zv
aWQgUmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQmFzZU9iamVjdCogcmVw
YWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAg
ICAvLyBUaGUgcmVjdCB3ZSBjb21wdXRlIGF0IGVhY2ggc3RlcCBpcyBzaGlmdGVkIGJ5IG91ciB4
L3kgb2Zmc2V0IGluIHRoZSBwYXJlbnQgY29udGFpbmVyJ3MgY29vcmRpbmF0ZSBzcGFjZS4KICAg
ICAvLyBPbmx5IHdoZW4gd2UgY3Jvc3MgYSB3cml0aW5nIG1vZGUgYm91bmRhcnkgd2lsbCB3ZSBo
YXZlIHRvIHBvc3NpYmx5IGZsaXBGb3JXcml0aW5nTW9kZSAodG8gY29udmVydCBpbnRvIGEgbW9y
ZSBhcHByb3ByaWF0ZQpAQCAtMzc2MSw3ICszNzYxLDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckJv
eDo6ZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVyKCkgY29uc3QKIHsKICAgICBjb25zdCBSZW5k
ZXJPYmplY3QqIGN1cnIgPSB0aGlzOwogICAgIHdoaWxlIChjdXJyKSB7Ci0gICAgICAgIFJlbmRl
ckxheWVyKiBsYXllciA9IGN1cnItPmhhc0xheWVyKCkgJiYgY3Vyci0+aXNCb3goKSA/IHRvUmVu
ZGVyQm94TW9kZWxPYmplY3QoY3VyciktPmxheWVyKCkgOiAwOworICAgICAgICBSZW5kZXJMYXll
ciogbGF5ZXIgPSBjdXJyLT5oYXNMYXllcigpICYmIGN1cnItPmlzQm94KCkgPyB0b1JlbmRlckJh
c2VPYmplY3QoY3VyciktPmxheWVyKCkgOiAwOwogICAgICAgICBpZiAobGF5ZXIgJiYgbGF5ZXIt
PmlzU2VsZlBhaW50aW5nTGF5ZXIoKSkKICAgICAgICAgICAgIHJldHVybiBsYXllcjsKICAgICAg
ICAgY3VyciA9IGN1cnItPnBhcmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
CmluZGV4IDlmMDU3N2U4MjAxYTdlOGQ5ZmI0MTA1M2JhNzNkNmE3MTI2MzYxNWQuLjFiNjMwODQ0
YTZkZjk0ZDBkNjc5ZjUzZWRhZWQzYmFiOTBhYzgxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmgKQEAgLTE0OSw3ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0UmVjdCBj
b21wdXRlZENTU0NvbnRlbnRCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdChib3Jk
ZXJMZWZ0KCkgKyBjb21wdXRlZENTU1BhZGRpbmdMZWZ0KCksIGJvcmRlclRvcCgpICsgY29tcHV0
ZWRDU1NQYWRkaW5nVG9wKCksIGNsaWVudFdpZHRoKCkgLSBjb21wdXRlZENTU1BhZGRpbmdMZWZ0
KCkgLSBjb21wdXRlZENTU1BhZGRpbmdSaWdodCgpLCBjbGllbnRIZWlnaHQoKSAtIGNvbXB1dGVk
Q1NTUGFkZGluZ1RvcCgpIC0gY29tcHV0ZWRDU1NQYWRkaW5nQm90dG9tKCkpOyB9CiAKICAgICAv
LyBCb3VuZHMgb2YgdGhlIG91dGxpbmUgYm94IGluIGFic29sdXRlIGNvb3Jkcy4gUmVzcGVjdHMg
dHJhbnNmb3JtcwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogLypyZXBhaW50Q29udGFpbmVyKi8sIExheW91dFBvaW50
KiBjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJCYXNlT2JqZWN0KiAvKnJlcGFp
bnRDb250YWluZXIqLywgTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldFRvUmVwYWludENvbnRhaW5l
cikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRS
ZWN0PiYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKICAgICAvLyBVc2UgdGhpcyB3aXRoIGNhdXRp
b24hIE5vIHR5cGUgY2hlY2tpbmcgaXMgZG9uZSEKQEAgLTMwOCw4ICszMDgsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRJbmxpbmVCb3hXcmFwcGVyKElubGluZUJveCogYm94V3JhcHBlcikgeyBt
X2lubGluZUJveFdyYXBwZXIgPSBib3hXcmFwcGVyOyB9CiAgICAgdm9pZCBkZWxldGVMaW5lQm94
V3JhcHBlcigpOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsK
LSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBj
b25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgdm9pZCByZXBhaW50RHVyaW5nTGF5b3V0SWZNb3ZlZChjb25zdCBMYXlvdXRSZWN0Jik7
CiAKQEAgLTUxOCw4ICs1MTgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgCiAgICAgdmlydHVhbCBib29s
IHNob3VsZENvbXB1dGVTaXplQXNSZXBsYWNlZCgpIGNvbnN0IHsgcmV0dXJuIGlzUmVwbGFjZWQo
KSAmJiAhaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKTsgfQogCi0gICAgdmlydHVhbCB2b2lk
IG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmLCBBcHBs
eUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQg
PSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCosIFJlbmRlckdlb21ldHJ5TWFw
JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQmFz
ZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1z
LCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWlu
ZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgUmVu
ZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJhc2VPYmplY3Qq
LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0
ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0
YXRlJikgY29uc3Q7CiAKICAgICB2b2lkIHBhaW50Um9vdEJveEZpbGxMYXllcnMoY29uc3QgUGFp
bnRJbmZvJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAppbmRleCBhMzVhMjA2ZTJjZmFiMGEwODMyMTM5MDA4Y2YxM2Y3MTVkYWJhMGIz
Li44NDk3NWM2MDAwOGM3NzY5ZWNlYjA4NTE0ZDMzNGU4M2E3MDkwYjYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTMxNiwx
NiArMzE2LDEyIEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNob3VsZFBhaW50QXRMb3dR
dWFsaXR5KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgSW1hCiB9CiAKIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVjdChOb2RlKiBub2RlKQotICAgIDogUmVuZGVyT2Jq
ZWN0KG5vZGUpCi0gICAgLCBtX2xheWVyKDApCisgICAgOiBSZW5kZXJCYXNlT2JqZWN0KG5vZGUp
CiB7CiB9CiAKIFJlbmRlckJveE1vZGVsT2JqZWN0Ojp+UmVuZGVyQm94TW9kZWxPYmplY3QoKQog
ewotICAgIC8vIE91ciBsYXllciBzaG91bGQgaGF2ZSBiZWVuIGRlc3Ryb3llZCBhbmQgY2xlYXJl
ZCBieSBub3cKLSAgICBBU1NFUlQoIWhhc0xheWVyKCkpOwotICAgIEFTU0VSVCghbV9sYXllcik7
CiAgICAgaWYgKGdJbWFnZVF1YWxpdHlDb250cm9sbGVyKSB7CiAgICAgICAgIGdJbWFnZVF1YWxp
dHlDb250cm9sbGVyLT5vYmplY3REZXN0cm95ZWQodGhpcyk7CiAgICAgICAgIGlmIChnSW1hZ2VR
dWFsaXR5Q29udHJvbGxlci0+aXNFbXB0eSgpKSB7CkBAIC0zMzUsMTQgKzMzMSw2IEBAIFJlbmRl
ckJveE1vZGVsT2JqZWN0Ojp+UmVuZGVyQm94TW9kZWxPYmplY3QoKQogICAgIH0KIH0KIAotdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZGVzdHJveUxheWVyKCkKLXsKLSAgICBBU1NFUlQoIWhh
c0xheWVyKCkpOyAvLyBDYWxsZXJzIHNob3VsZCBoYXZlIGFscmVhZHkgY2FsbGVkIHNldEhhc0xh
eWVyKGZhbHNlKQotICAgIEFTU0VSVChtX2xheWVyKTsKLSAgICBtX2xheWVyLT5kZXN0cm95KHJl
bmRlckFyZW5hKCkpOwotICAgIG1fbGF5ZXIgPSAwOwotfQotCiB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQogewogICAgIC8vIEEgY29udGludWF0aW9uIG9mIHRo
aXMgUmVuZGVyT2JqZWN0IHNob3VsZCBiZSBkZXN0cm95ZWQgYXQgc3ViY2xhc3Nlcy4KQEAgLTM1
MywxMyArMzQxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6d2lsbEJlRGVzdHJveWVk
KCkKICAgICBpZiAoZmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KCkpCiAgICAgICAgIHNldEZpcnN0
TGV0dGVyUmVtYWluaW5nVGV4dCgwKTsKIAotICAgIC8vIFJlbmRlck9iamVjdDo6d2lsbEJlRGVz
dHJveWVkIGNhbGxzIGJhY2sgdG8gZGVzdHJveUxheWVyKCkgZm9yIGxheWVyIGRlc3RydWN0aW9u
Ci0gICAgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKTsKLX0KLQotYm9vbCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVy
biBtX2xheWVyICYmIG1fbGF5ZXItPmlzU2VsZlBhaW50aW5nTGF5ZXIoKTsKKyAgICBSZW5kZXJC
YXNlT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKTsKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJT
dHlsZSogbmV3U3R5bGUpCkBAIC00MDksMzIgKzM5MSwzMCBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRl
clN0eQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFu
Z2UoZGlmZiwgbmV3U3R5bGUpOworICAgIFJlbmRlckJhc2VPYmplY3Q6OnN0eWxlV2lsbENoYW5n
ZShkaWZmLCBuZXdTdHlsZSk7CiB9CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUpCiB7Ci0gICAgUmVuZGVyT2JqZWN0OjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7
CisgICAgUmVuZGVyQmFzZU9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwog
ICAgIHVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOwogICAgIAogICAgIGlmIChyZXF1aXJl
c0xheWVyKCkpIHsKICAgICAgICAgaWYgKCFsYXllcigpICYmIGxheWVyQ3JlYXRpb25BbGxvd2Vk
Rm9yU3VidHJlZSgpKSB7CiAgICAgICAgICAgICBpZiAoc193YXNGbG9hdGluZyAmJiBpc0Zsb2F0
aW5nKCkpCiAgICAgICAgICAgICAgICAgc2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKLSAgICAg
ICAgICAgIG1fbGF5ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckxheWVyKHRoaXMpOwot
ICAgICAgICAgICAgc2V0SGFzTGF5ZXIodHJ1ZSk7Ci0gICAgICAgICAgICBtX2xheWVyLT5pbnNl
cnRPbmx5VGhpc0xheWVyKCk7CisgICAgICAgICAgICBlbnN1cmVMYXllcigpOwogICAgICAgICAg
ICAgaWYgKHBhcmVudCgpICYmICFuZWVkc0xheW91dCgpICYmIGNvbnRhaW5pbmdCbG9jaygpKSB7
Ci0gICAgICAgICAgICAgICAgbV9sYXllci0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxSZXBh
aW50KTsKKyAgICAgICAgICAgICAgICBsYXllcigpLT5zZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVs
bFJlcGFpbnQpOwogICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG9ubHkgb25lIGxheWVyIHRv
IHVwZGF0ZSwgaXQgaXMgbm90IHdvcnRoIHVzaW5nIHxjYWNoZWRPZmZzZXR8IHNpbmNlCiAgICAg
ICAgICAgICAgICAgLy8gd2UgYXJlIG5vdCBzdXJlIHRoZSB2YWx1ZSB3aWxsIGJlIHVzZWQuCi0g
ICAgICAgICAgICAgICAgbV9sYXllci0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMoMCk7CisgICAgICAg
ICAgICAgICAgbGF5ZXIoKS0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMoMCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGxheWVyKCkgJiYgbGF5ZXIoKS0+cGFyZW50KCkp
IHsKICAgICAgICAgc2V0SGFzVHJhbnNmb3JtKGZhbHNlKTsgLy8gRWl0aGVyIGEgdHJhbnNmb3Jt
IHdhc24ndCBzcGVjaWZpZWQgb3IgdGhlIG9iamVjdCBkb2Vzbid0IHN1cHBvcnQgdHJhbnNmb3Jt
cywgc28ganVzdCBudWxsIG91dCB0aGUgYml0LgogICAgICAgICBzZXRIYXNSZWZsZWN0aW9uKGZh
bHNlKTsKLSAgICAgICAgbV9sYXllci0+cmVtb3ZlT25seVRoaXNMYXllcigpOyAvLyBjYWxscyBk
ZXN0cm95TGF5ZXIoKSB3aGljaCBjbGVhcnMgbV9sYXllcgorICAgICAgICBsYXllcigpLT5yZW1v
dmVPbmx5VGhpc0xheWVyKCk7IC8vIGNhbGxzIGRlc3Ryb3lMYXllcigpIHdoaWNoIGNsZWFycyBt
X2xheWVyCiAgICAgICAgIGlmIChzX3dhc0Zsb2F0aW5nICYmIGlzRmxvYXRpbmcoKSkKICAgICAg
ICAgICAgIHNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAgICAgIGlmIChzX2hhZFRyYW5z
Zm9ybSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmgKaW5kZXggMDY3ZjYwNDZkMDkwOGE5NGM5N2U4YTQyMmU2MDJjYmNjYWZjMWQ5My4uZTY5OTRk
M2UxNWQ1NDg2YmIyNjA2MDIwMzFhZGVlYTZhNWI3OGNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTI0LDcgKzI0LDcgQEAKICNp
Zm5kZWYgUmVuZGVyQm94TW9kZWxPYmplY3RfaAogI2RlZmluZSBSZW5kZXJCb3hNb2RlbE9iamVj
dF9oCiAKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJCYXNlT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU2hhZG93RGF0YS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC01NCw3ICs1NCw3IEBAIGNsYXNzIEtleWZyYW1lTGlzdDsKIC8vIFRoaXMgY2xhc3MgaXMgdGhl
IGJhc2UgZm9yIGFsbCBvYmplY3RzIHRoYXQgYWRoZXJlIHRvIHRoZSBDU1MgYm94IG1vZGVsIGFz
IGRlc2NyaWJlZAogLy8gYXQgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvYm94Lmh0bWwKIAot
Y2xhc3MgUmVuZGVyQm94TW9kZWxPYmplY3QgOiBwdWJsaWMgUmVuZGVyT2JqZWN0IHsKK2NsYXNz
IFJlbmRlckJveE1vZGVsT2JqZWN0IDogcHVibGljIFJlbmRlckJhc2VPYmplY3QgewogcHVibGlj
OgogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KE5vZGUqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJC
b3hNb2RlbE9iamVjdCgpOwpAQCAtNzgsOCArNzgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7
CiAKLSAgICBib29sIGhhc1NlbGZQYWludGluZ0xheWVyKCkgY29uc3Q7Ci0gICAgUmVuZGVyTGF5
ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcjsgfQogICAgIHZpcnR1YWwgYm9vbCBy
ZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gaXNSb290KCkgfHwgaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkgfHwgaXNSZWxQb3NpdGlvbmVkKCkgfHwgaXNUcmFuc3BhcmVudCgpIHx8IGhhc1Ry
YW5zZm9ybSgpIHx8IGhhc0hpZGRlbkJhY2tmYWNlKCkgfHwgaGFzTWFzaygpIHx8IGhhc1JlZmxl
Y3Rpb24oKSB8fCBoYXNGaWx0ZXIoKSB8fCBzdHlsZSgpLT5zcGVjaWZpZXNDb2x1bW5zKCk7IH0K
IAogICAgIC8vIFRoaXMgd2lsbCB3b3JrIG9uIGlubGluZXMgdG8gcmV0dXJuIHRoZSBib3VuZGlu
ZyBib3ggb2YgYWxsIG9mIHRoZSBsaW5lcycgYm9yZGVyIGJveGVzLgpAQCAtMTU2LDkgKzE1NCw2
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChi
b29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3QgT1ZF
UlJJREU7CiAKLSAgICAvLyBDYWxsZWQgYnkgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQo
KSBhbmQgaXMgdGhlIG9ubHkgd2F5IGxheWVycyBzaG91bGQgZXZlciBiZSBkZXN0cm95ZWQKLSAg
ICB2b2lkIGRlc3Ryb3lMYXllcigpOwotCiAgICAgdm9pZCBoaWdoUXVhbGl0eVJlcGFpbnRUaW1l
ckZpcmVkKFRpbWVyPFJlbmRlckJveE1vZGVsT2JqZWN0PiopOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlIHMpOwpAQCAtMjk3LDEwICsyOTIsNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRoaWNrbmVzcywg
ZmxvYXQgZHJhd1RoaWNrbmVzcywgQm94U2lkZSwgY29uc3QgUmVuZGVyU3R5bGUqLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb2xvciwgRUJvcmRlclN0eWxlLCBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSk7CiAKLSAgICBmcmllbmQgY2xhc3MgUmVuZGVyVmlldzsKLQotICAgIFJl
bmRlckxheWVyKiBtX2xheWVyOwotICAgIAogICAgIC8vIFVzZWQgdG8gc3RvcmUgc3RhdGUgYmV0
d2VlbiBzdHlsZVdpbGxDaGFuZ2UgYW5kIHN0eWxlRGlkQ2hhbmdlCiAgICAgc3RhdGljIGJvb2wg
c193YXNGbG9hdGluZzsKICAgICBzdGF0aWMgYm9vbCBzX2hhZExheWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKaW5kZXggZTY5OTNkYmVmYTcz
YTZiYmVhZTg4YWJmZTg3MDQxZTNkM2I2NTY2OC4uYTIyOTA4ZjI1NTY1MDYyOTA4ZTE2NjlhMTA0
YjViYmQ4YzZlZDc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdlb21ldHJ5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2Vv
bWV0cnlNYXAuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6
bWFwVG9BYnNvbHV0ZShUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0CiAgICAg
dHJhbnNmb3JtU3RhdGUuZmxhdHRlbigpOyAgICAKIH0KIAotdm9pZCBSZW5kZXJHZW9tZXRyeU1h
cDo6cHVzaE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBj
b25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JSZW5kZXJlcikKK3ZvaWQgUmVuZGVy
R2VvbWV0cnlNYXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciwgY29uc3QgUmVuZGVyQmFzZU9iamVjdCogYW5jZXN0b3JSZW5kZXJlcikKIHsKICAg
ICAvLyBXZSBuZWVkIHRvIHB1c2ggbWFwcGluZ3MgaW4gcmV2ZXJzZSBvcmRlciBoZXJlLCBzbyBk
byBpbnNlcnRpb25zIHJhdGhlciB0aGFuIGFwcGVuZHMuCiAgICAgVGVtcG9yYXJ5Q2hhbmdlPHNp
emVfdD4gcG9zaXRpb25DaGFuZ2UobV9pbnNlcnRpb25Qb3NpdGlvbiwgbV9tYXBwaW5nLnNpemUo
KSk7CkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaE1hcHBp
bmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIGNvbnN0IFIKICAgICAgICAg
cHVzaChyZW5kZXJlciwgdG9MYXlvdXRTaXplKGxheWVyT2Zmc2V0KSwgLyphY2N1bXVsYXRpbmdU
cmFuc2Zvcm0qLyB0cnVlLCAvKmlzTm9uVW5pZm9ybSovIGZhbHNlLCAvKmlzRml4ZWRQb3NpdGlv
biovIGZhbHNlLCAvKmhhc1RyYW5zZm9ybSovIGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JSZW5kZXJlciA9IGFu
Y2VzdG9yTGF5ZXIgPyBhbmNlc3RvckxheWVyLT5yZW5kZXJlcigpIDogMDsKKyAgICBjb25zdCBS
ZW5kZXJCYXNlT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyID0gYW5jZXN0b3JMYXllciA/IGFuY2Vz
dG9yTGF5ZXItPnJlbmRlcmVyKCkgOiAwOwogICAgIHB1c2hNYXBwaW5nc1RvQW5jZXN0b3IocmVu
ZGVyZXIsIGFuY2VzdG9yUmVuZGVyZXIpOwogfQogCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBS
ZW5kZXJHZW9tZXRyeU1hcDo6cHVzaFZpZXcoY29uc3QgUmVuZGVyVmlldyogdmlldywgY29uc3Qg
TGF5b3V0U2l6ZSYgc2Nyb2wKICAgICBzdGVwSW5zZXJ0ZWQoc3RlcCk7CiB9CiAKLXZvaWQgUmVu
ZGVyR2VvbWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogYW5jZXN0b3JSZW5kZXJlcikKK3ZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnBvcE1h
cHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJCYXNlT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVy
KQogewogICAgIEFTU0VSVChtX21hcHBpbmcuc2l6ZSgpKTsKIApAQCAtMjEyLDcgKzIxMiw3IEBA
IHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0CiAKIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnBvcE1h
cHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllcikKIHsKLSAg
ICBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JSZW5kZXJlciA9IGFuY2VzdG9y
TGF5ZXIgPyBhbmNlc3RvckxheWVyLT5yZW5kZXJlcigpIDogMDsKKyAgICBjb25zdCBSZW5kZXJC
YXNlT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyID0gYW5jZXN0b3JMYXllciA/IGFuY2VzdG9yTGF5
ZXItPnJlbmRlcmVyKCkgOiAwOwogICAgIHBvcE1hcHBpbmdzVG9BbmNlc3RvcihhbmNlc3RvclJl
bmRlcmVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdlb21ldHJ5TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlN
YXAuaAppbmRleCA4ZTYzYzUwODQ4MTZkMzQ4MjhiZWZmODBhYTc5NDJmZjBjZTAwMTNhLi42NDlk
NGMwZDM0YjRjZDk2N2M2YmRkNDZkNmE3NDc2OTg1OTM2ZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaApAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6
CiAgICAgLy8gQ2FsbGVkIGJ5IGNvZGUgd2Fsa2luZyB0aGUgcmVuZGVyZXIgb3IgbGF5ZXIgdHJl
ZXMuCiAgICAgdm9pZCBwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVyKiwg
Y29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIpOwogICAgIHZvaWQgcG9wTWFwcGluZ3NU
b0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVyKik7Ci0gICAgdm9pZCBwdXNoTWFwcGluZ3NUb0Fu
Y2VzdG9yKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBh
bmNlc3RvclJlbmRlcmVyKTsKLSAgICB2b2lkIHBvcE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBS
ZW5kZXJCb3hNb2RlbE9iamVjdCopOworICAgIHZvaWQgcHVzaE1hcHBpbmdzVG9BbmNlc3Rvcihj
b25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJCYXNlT2JqZWN0KiBhbmNlc3RvclJlbmRl
cmVyKTsKKyAgICB2b2lkIHBvcE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJCYXNlT2Jq
ZWN0Kik7CiAgICAgCiAgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIHNob3VsZCBvbmx5IGJl
IGNhbGxlZCBieSByZW5kZXJlcnMgaW5zaWRlIGEgY2FsbCB0byBwdXNoTWFwcGluZ3NUb0FuY2Vz
dG9yKCkuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXgg
MzAzMjQ4MGM2ZDRkMTljZThlMzdhOWY3NjExMWQ4MWU5YmRjYzQ1YS4uMjkxMzkxNTE1ZGIzYmIw
MTg4MmNmMGUxYTNlYWExNjZjYjllMWQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHAKQEAgLTk1OSw3ICs5NTksNyBAQCBMYXlvdXRSZWN0IFJlbmRlcklubGlu
ZTo6bGluZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29uc3QKICAgICByZXR1cm4gcmVj
dDsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5
b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRl
ckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgLy8gT25seSBydW4t
aW5zIGFyZSBhbGxvd2VkIGluIGhlcmUgZHVyaW5nIGxheW91dC4KICAgICBBU1NFUlQoIXZpZXco
KSB8fCAhdmlldygpLT5sYXlvdXRTdGF0ZUVuYWJsZWQoKSB8fCBpc1J1bkluKCkpOwpAQCAtMTAx
Nyw3ICsxMDE3LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXAKICAgICByZXR1cm4gcmVwYWlu
dFJlY3Q7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVySW5saW5lOjpyZWN0V2l0aE91dGxpbmVGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0
IG91dGxpbmVXaWR0aCkgY29uc3QKK0xheW91dFJlY3QgUmVuZGVySW5saW5lOjpyZWN0V2l0aE91
dGxpbmVGb3JSZXBhaW50KFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91
dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdAogewogICAgIExheW91dFJlY3QgcihSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCBv
dXRsaW5lV2lkdGgpKTsKICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VyciA9IGZpcnN0Q2hpbGQo
KTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRTaWJsaW5nKCkpIHsKQEAgLTEwMjcsNyArMTAyNyw3
IEBAIExheW91dFJlY3QgUmVuZGVySW5saW5lOjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50CiAgICAgcmV0dXJuIHI7CiB9CiAKLXZvaWQgUmVu
ZGVySW5saW5lOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lk
IFJlbmRlcklubGluZTo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJhc2VPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAg
ICAgaWYgKFJlbmRlclZpZXcqIHYgPSB2aWV3KCkpIHsKICAgICAgICAgLy8gTGF5b3V0U3RhdGUg
aXMgb25seSB2YWxpZCBmb3Igcm9vdC1yZWxhdGl2ZSByZXBhaW50aW5nCkBAIC0xMTE3LDcgKzEx
MTcsNyBAQCBMYXlvdXRTaXplIFJlbmRlcklubGluZTo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5k
ZXJPYmplY3QqIGNvbnRhaW5lciwgY29uc3QgTGF5bwogICAgIHJldHVybiBvZmZzZXQ7CiB9CiAK
LXZvaWQgUmVuZGVySW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRy
YW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgYXBw
bHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVySW5saW5l
OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9y
bVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCBhcHBseUNvbnRhaW5lckZsaXAsIGJvb2wq
IHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09IHRoaXMpCiAg
ICAgICAgIHJldHVybjsKQEAgLTExNjUsNyArMTE2NSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpt
YXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBiCiAgICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBmaXhlZCwg
dXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUsIGFwcGx5Q29udGFpbmVyRmxpcCwgd2FzRml4
ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlcklubGluZTo6cHVzaE1hcHBpbmdU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwg
UmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0
KiBSZW5kZXJJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQmFzZU9i
amVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBj
b25zdAogewogICAgIEFTU0VSVChhbmNlc3RvclRvU3RvcEF0ICE9IHRoaXMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKaW5kZXggNzIyMzAwYWI4Mjk4NGRhYTlkZmEy
N2NmMjc4OGU4Mjc0N2I2ZjQzOS4uYzQ1YzBlMjdhNmZjNzZkNmQyN2Y3ZjRmYTNmNmY3ZDE4Zjg2
Y2RhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtMTMxLDEy
ICsxMzEsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0V2lkdGgo
KSBjb25zdCB7IHJldHVybiBsaW5lc0JvdW5kaW5nQm94KCkud2lkdGgoKTsgfQogICAgIHZpcnR1
YWwgTGF5b3V0VW5pdCBvZmZzZXRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBsaW5lc0JvdW5kaW5n
Qm94KCkuaGVpZ2h0KCk7IH0KIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikg
Y29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGlu
ZVdpZHRoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBm
aXhlZCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OworICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJhc2VP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJhc2VPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkKSBjb25zdDsKIAotICAg
IHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9y
bVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJv
b2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3Qq
IHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2Vz
dG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwg
Ym9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29u
dGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDAp
IGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29u
dGFpbmVyKGNvbnN0IFJlbmRlckJhc2VPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdl
b21ldHJ5TWFwJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlv
bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmluZGV4IDEyNzk0Y2I0NjQ3OWE0NzJjOWIyMjRjYzE0ZTIxZDg1MWE0
NDlmYTYuLmM1ZmI5N2YxZTgzY2UxNjU5ODYyNjJjOWZjN2E5YTFhYjVhMGU0YmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIGJv
b2wgQ2xpcFJlY3Q6OmludGVyc2VjdHMoY29uc3QgSGl0VGVzdFBvaW50JiBoaXRUZXN0UG9pbnQp
CiAgICAgcmV0dXJuIGhpdFRlc3RQb2ludC5pbnRlcnNlY3RzKG1fcmVjdCk7CiB9CiAKLVJlbmRl
ckxheWVyOjpSZW5kZXJMYXllcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIpCitSZW5k
ZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVuZGVyQmFzZU9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBt
X2luUmVzaXplTW9kZShmYWxzZSkKICAgICAsIG1fc2Nyb2xsRGltZW5zaW9uc0RpcnR5KHRydWUp
CiAgICAgLCBtX25vcm1hbEZsb3dMaXN0RGlydHkodHJ1ZSkKQEAgLTM4NSw3ICszODUsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhMYXlvdXRQb2ludCogb2Zmc2V0
RnJvbVJvb3QsIFVwZGF0ZUxheWVyUAogICAgICAgICAvLyBMYXlvdXRTdGF0ZSBvdXRzaWRlIHRo
ZSBsYXlvdXQoKSBwaGFzZSBhbmQgdXNlIGl0IGhlcmUuCiAgICAgICAgIEFTU0VSVCghdmlldy0+
bGF5b3V0U3RhdGVFbmFibGVkKCkpOwogCi0gICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOworICAg
ICAgICBSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29u
dGFpbmVyRm9yUmVwYWludCgpOwogICAgICAgICBMYXlvdXRSZWN0IG9sZFJlcGFpbnRSZWN0ID0g
bV9yZXBhaW50UmVjdDsKICAgICAgICAgTGF5b3V0UmVjdCBvbGRPdXRsaW5lQm94ID0gbV9vdXRs
aW5lQm94OwogICAgICAgICBjb21wdXRlUmVwYWludFJlY3RzKG9mZnNldEZyb21Sb290KTsKQEAg
LTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjb21wdXRlUmVwYWludFJlY3RzKExh
eW91dFBvaW50KiBvZmZzZXRGcm9tUm9vdCkKIHsKICAgICBBU1NFUlQoIW1fdmlzaWJsZUNvbnRl
bnRTdGF0dXNEaXJ0eSk7CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICBSZW5kZXJCYXNl
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWlu
dCgpOwogICAgIG1fcmVwYWludFJlY3QgPSByZW5kZXJlcigpLT5jbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsKICAgICBtX291dGxpbmVCb3ggPSByZW5kZXJl
cigpLT5vdXRsaW5lQm91bmRzRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCBvZmZzZXRGcm9t
Um9vdCk7CiB9CkBAIC01OTEsMTAgKzU5MSwxMCBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5k
ZXJMYXllcjo6cmVuZGVyYWJsZVRyYW5zZm9ybShQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpbwog
ICAgIHJldHVybiAqbV90cmFuc2Zvcm07CiB9CiAKLXN0YXRpYyBib29sIGNoZWNrQ29udGFpbmlu
Z0Jsb2NrQ2hhaW5Gb3JQYWdpbmF0aW9uKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciwg
UmVuZGVyQm94KiBhbmNlc3RvckNvbHVtbnNSZW5kZXJlcikKK3N0YXRpYyBib29sIGNoZWNrQ29u
dGFpbmluZ0Jsb2NrQ2hhaW5Gb3JQYWdpbmF0aW9uKFJlbmRlckJhc2VPYmplY3QqIHJlbmRlcmVy
LCBSZW5kZXJCb3gqIGFuY2VzdG9yQ29sdW1uc1JlbmRlcmVyKQogewogICAgIFJlbmRlclZpZXcq
IHZpZXcgPSByZW5kZXJlci0+dmlldygpOwotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBwcmV2
QmxvY2sgPSByZW5kZXJlcjsKKyAgICBSZW5kZXJCYXNlT2JqZWN0KiBwcmV2QmxvY2sgPSByZW5k
ZXJlcjsKICAgICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrOwogICAgIGZvciAoY29udGFp
bmluZ0Jsb2NrID0gcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgY29udGFp
bmluZ0Jsb2NrICYmIGNvbnRhaW5pbmdCbG9jayAhPSB2aWV3ICYmIGNvbnRhaW5pbmdCbG9jayAh
PSBhbmNlc3RvckNvbHVtbnNSZW5kZXJlcjsKQEAgLTg1MSw3ICs4NTEsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKCkKICAgICB9CiAgICAgICAgIAogICAgIGlmIChy
ZW5kZXJlcigpLT5pc1JlbFBvc2l0aW9uZWQoKSkgewotICAgICAgICBtX3JlbGF0aXZlT2Zmc2V0
ID0gcmVuZGVyZXIoKS0+cmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpOworICAgICAgICBtX3JlbGF0
aXZlT2Zmc2V0ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlcigpKS0+cmVsYXRpdmVQ
b3NpdGlvbk9mZnNldCgpOwogICAgICAgICBsb2NhbFBvaW50Lm1vdmUobV9yZWxhdGl2ZU9mZnNl
dCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9yZWxhdGl2ZU9mZnNldCA9IExheW91dFNpemUo
KTsKQEAgLTkxNCw3ICs5MTQsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OnN0YWNraW5n
Q29udGV4dCgpIGNvbnN0CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Bvc2l0aW9uZWRDb250YWlu
ZXIoUmVuZGVyTGF5ZXIqIGxheWVyKQogewotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBsYXll
clJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyQmFzZU9iamVjdCogbGF5
ZXJSZW5kZXJlciA9IGxheWVyLT5yZW5kZXJlcigpOwogICAgIHJldHVybiBsYXllci0+aXNSb290
TGF5ZXIoKSB8fCBsYXllclJlbmRlcmVyLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBsYXll
clJlbmRlcmVyLT5pc1JlbFBvc2l0aW9uZWQoKSB8fCBsYXllci0+aGFzVHJhbnNmb3JtKCk7CiB9
CiAKQEAgLTEwOTIsNyArMTA5Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNldEZpbHRlckJhY2tl
bmROZWVkc1JlcGFpbnRpbmdJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKIGJvb2wgUmVu
ZGVyTGF5ZXI6Omhhc0FuY2VzdG9yV2l0aEZpbHRlck91dHNldHMoKSBjb25zdAogewogICAgIGZv
ciAoY29uc3QgUmVuZGVyTGF5ZXIqIGN1cnIgPSB0aGlzOyBjdXJyOyBjdXJyID0gY3Vyci0+cGFy
ZW50KCkpIHsKLSAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyID0gY3Vyci0+
cmVuZGVyZXIoKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGN1cnItPnJlbmRl
cmVyKCk7CiAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS0+aGFzRmlsdGVyT3V0c2V0cygp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTY3Miw3ICsxNjcyLDcgQEAg
dm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsVG8oaW50IHgsIGludCB5KQogCiAgICAgdXBkYXRlQ29t
cG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbCgpOwogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIgPSByZW5kZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50KCk7Cisg
ICAgUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRh
aW5lckZvclJlcGFpbnQoKTsKICAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlcigpLT5mcmFtZSgp
OwogICAgIGlmIChmcmFtZSkgewogICAgICAgICAvLyBUaGUgY2FyZXQgcmVjdCBuZWVkcyB0byBi
ZSBpbnZhbGlkYXRlZCBhZnRlciBzY3JvbGxpbmcKQEAgLTQ3MDYsNyArNDcwNiw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnNldEJhY2tpbmdOZWVkc1JlcGFpbnRJblJlY3QoY29uc3QgTGF5b3V0UmVj
dCYgcikKIH0KIAogLy8gU2luY2Ugd2UncmUgb25seSBwYWludGluZyBub24tY29tcG9zaXRlZCBs
YXllcnMsIHdlIGtub3cgdGhhdCB0aGV5IGFsbCBzaGFyZSB0aGUgc2FtZSByZXBhaW50Q29udGFp
bmVyLgotdm9pZCBSZW5kZXJMYXllcjo6cmVwYWludEluY2x1ZGluZ05vbkNvbXBvc2l0aW5nRGVz
Y2VuZGFudHMoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCit2b2lkIFJl
bmRlckxheWVyOjpyZXBhaW50SW5jbHVkaW5nTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhSZW5k
ZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKQogewogICAgIHJlbmRlcmVyKCktPnJlcGFp
bnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCByZW5kZXJlcigpLT5jbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggMWMzMmE0Zjg5ZTIyNjEzNWJhNGY4MDhmYmRkYTZm
NjM2ZjE1YTZjNi4uODQ1ZTI2YzM1ZWYzNDhlYWMxZDQzNDFlNWY3ODZjMmM1ODZlZTE1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTI0NSwxMCArMjQ1LDEwIEBA
IGNsYXNzIFJlbmRlckxheWVyIDogcHVibGljIFNjcm9sbGFibGVBcmVhIHsKIHB1YmxpYzoKICAg
ICBmcmllbmQgY2xhc3MgUmVuZGVyUmVwbGljYTsKIAotICAgIFJlbmRlckxheWVyKFJlbmRlckJv
eE1vZGVsT2JqZWN0Kik7CisgICAgUmVuZGVyTGF5ZXIoUmVuZGVyQmFzZU9iamVjdCopOwogICAg
IH5SZW5kZXJMYXllcigpOwogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9yZW5kZXJlcjsgfQorICAgIFJlbmRlckJhc2VPYmplY3QqIHJlbmRl
cmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlcjsgfQogICAgIFJlbmRlckJveCogcmVuZGVy
Qm94KCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlciAmJiBtX3JlbmRlcmVyLT5pc0JveCgpID8g
dG9SZW5kZXJCb3gobV9yZW5kZXJlcikgOiAwOyB9CiAgICAgUmVuZGVyTGF5ZXIqIHBhcmVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CiAgICAgUmVuZGVyTGF5ZXIqIHByZXZpb3VzU2li
bGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXM7IH0KQEAgLTI2OSw3ICsyNjksNyBAQCBw
dWJsaWM6CiAgICAgLy8gaWYgbGF5ZXIgY29tcG9zaXRpbmcgaXMgYmVpbmcgdXNlZCwKICAgICB2
b2lkIHNldEJhY2tpbmdOZWVkc1JlcGFpbnQoKTsKICAgICB2b2lkIHNldEJhY2tpbmdOZWVkc1Jl
cGFpbnRJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYpOyAvLyByIGlzIGluIHRoZSBjb29yZGluYXRl
IHNwYWNlIG9mIHRoZSBsYXllcidzIHJlbmRlciBvYmplY3QKLSAgICB2b2lkIHJlcGFpbnRJbmNs
dWRpbmdOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRzKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKTsKKyAgICB2b2lkIHJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rl
c2NlbmRhbnRzKFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIpOwogI2VuZGlmCiAK
ICAgICB2b2lkIHN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSk7CkBAIC04NTksNyArODU5LDcgQEAgcHJpdmF0ZToKIAogICAgIGZyaWVuZCBj
bGFzcyBSZW5kZXJMYXllckJhY2tpbmc7CiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlckxheWVyQ29t
cG9zaXRvcjsKLSAgICBmcmllbmQgY2xhc3MgUmVuZGVyQm94TW9kZWxPYmplY3Q7CisgICAgZnJp
ZW5kIGNsYXNzIFJlbmRlckJhc2VPYmplY3Q7CiAKICAgICAvLyBPbmx5IHNhZmUgdG8gY2FsbCBm
cm9tIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkZXN0cm95TGF5ZXIoUmVuZGVyQXJlbmEqKQogICAg
IHZvaWQgZGVzdHJveShSZW5kZXJBcmVuYSopOwpAQCAtOTI3LDcgKzkyNyw3IEBAIHByb3RlY3Rl
ZDoKICAgICBib29sIG1faGFzRmlsdGVySW5mbyA6IDE7CiAjZW5kaWYKIAotICAgIFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBtX3JlbmRlcmVyOworICAgIFJlbmRlckJhc2VPYmplY3QqIG1fcmVuZGVy
ZXI7CiAKICAgICBSZW5kZXJMYXllciogbV9wYXJlbnQ7CiAgICAgUmVuZGVyTGF5ZXIqIG1fcHJl
dmlvdXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgK
aW5kZXggNjIyYzM4Yzg1MThiYzBkYWFkNGYzNDdjYzYwNzVlNGU1MDc5ZmQ3NC4uMDgxNGE5NjI5
ZmRjZGIzZDJhMTE4NDcyNjBmNWI1MzFjMzdmYzZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAtMTcwLDcgKzE3MCw3IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBjcmVhdGVHcmFwaGljc0xheWVy
KGNvbnN0IFN0cmluZyYpOwogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9vd25pbmdMYXllci0+cmVuZGVyZXIoKTsgfQorICAgIFJlbmRlckJh
c2VPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9vd25pbmdMYXllci0+cmVuZGVy
ZXIoKTsgfQogICAgIFJlbmRlckxheWVyQ29tcG9zaXRvciogY29tcG9zaXRvcigpIGNvbnN0IHsg
cmV0dXJuIG1fb3duaW5nTGF5ZXItPmNvbXBvc2l0b3IoKTsgfQogCiAgICAgdm9pZCB1cGRhdGVJ
bnRlcm5hbEhpZXJhcmNoeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA3M2YwNWZkN2E1N2Q2YmZkYjM4ZGM4YTdlYmRi
NTE5MDRiZDI0MWVlLi5lZGZiMGZkNzMyZDZkM2RiZjE1ZWNkYmQ4ZWRiMDU3MTk1YTk1ZmI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmNwcApAQCAtNTA4LDcgKzUwOCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRh
dGVCYWNraW5nKFJlbmRlckxheWVyKiBsYXllciwgQ29tcG9zaXRpbmdDaGFuZ2VSCiAgICAgICAg
ICAgICAvLyBpdHMgcmVwbGljYSBHcmFwaGljc0xheWVyLiBJbiBwcmFjdGljZSB0aGlzIHNob3Vs
ZCBuZXZlciBoYXBwZW4gYmVjYXVzZSByZWZsZWN0ZWUgYW5kIHJlZmxlY3Rpb24gCiAgICAgICAg
ICAgICAvLyBhcmUgYm90aCBlaXRoZXIgY29tcG9zaXRlZCwgb3Igbm90IGNvbXBvc2l0ZWQuCiAg
ICAgICAgICAgICBpZiAobGF5ZXItPmlzUmVmbGVjdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAg
UmVuZGVyTGF5ZXIqIHNvdXJjZUxheWVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChsYXllci0+
cmVuZGVyZXIoKS0+cGFyZW50KCkpLT5sYXllcigpOworICAgICAgICAgICAgICAgIFJlbmRlckxh
eWVyKiBzb3VyY2VMYXllciA9IHRvUmVuZGVyQmFzZU9iamVjdChsYXllci0+cmVuZGVyZXIoKS0+
cGFyZW50KCkpLT5sYXllcigpOwogICAgICAgICAgICAgICAgIGlmIChSZW5kZXJMYXllckJhY2tp
bmcqIGJhY2tpbmcgPSBzb3VyY2VMYXllci0+YmFja2luZygpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnJlcGxpY2FMYXllcigpID09IGxh
eWVyLT5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJh
Y2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+c2V0UmVwbGljYXRlZEJ5TGF5ZXIoMCk7CkBAIC01NzEs
NyArNTcxLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcGFpbnRPbkNvbXBvc2l0
aW5nQ2hhbmdlKFJlbmRlckxheWVyKiBsYXllcikKICAgICBpZiAobGF5ZXItPnJlbmRlcmVyKCkg
IT0gbV9yZW5kZXJWaWV3ICYmICFsYXllci0+cmVuZGVyZXIoKS0+cGFyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0g
bGF5ZXItPnJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICBSZW5kZXJCYXNl
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gbGF5ZXItPnJlbmRlcmVyKCktPmNvbnRhaW5lckZv
clJlcGFpbnQoKTsKICAgICBpZiAoIXJlcGFpbnRDb250YWluZXIpCiAgICAgICAgIHJlcGFpbnRD
b250YWluZXIgPSBtX3JlbmRlclZpZXc7CiAKQEAgLTE0MzcsNyArMTQzNyw3IEBAIGJvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIoY29uc3QgUmVuZGVy
TGF5ZXIqIGxheWVyKSBjCiAgICAgLy8gVGhlIGNvbXBvc2l0aW5nIHN0YXRlIG9mIGEgcmVmbGVj
dGlvbiBzaG91bGQgbWF0Y2ggdGhhdCBvZiBpdHMgcmVmbGVjdGVkIGxheWVyLgogICAgIGlmIChs
YXllci0+aXNSZWZsZWN0aW9uKCkpIHsKICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFy
ZW50KCk7IC8vIFRoZSBSZW5kZXJSZXBsaWNhJ3MgcGFyZW50IGlzIHRoZSBvYmplY3QgYmVpbmcg
cmVmbGVjdGVkLgotICAgICAgICBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVy
ZXIpLT5sYXllcigpOworICAgICAgICBsYXllciA9IHRvUmVuZGVyQmFzZU9iamVjdChyZW5kZXJl
ciktPmxheWVyKCk7CiAgICAgfQogICAgIC8vIFRoZSByb290IGxheWVyIGFsd2F5cyBoYXMgYSBj
b21wb3NpdGluZyBsYXllciwgYnV0IGl0IG1heSBub3QgaGF2ZSBiYWNraW5nLgogICAgIHJldHVy
biByZXF1aXJlc0NvbXBvc2l0aW5nRm9yVHJhbnNmb3JtKHJlbmRlcmVyKQpAQCAtMTUwMSw3ICsx
NTAxLDcgQEAgY29uc3QgY2hhciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWFzb25Gb3JDb21w
b3NpdGluZyhjb25zdCBSZW5kZXJMYXllciogbGF5ZXIKICAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7CiAgICAgaWYgKGxheWVyLT5pc1JlZmxlY3Rpb24oKSkg
ewogICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKLSAgICAgICAgbGF5ZXIg
PSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlcmVyKS0+bGF5ZXIoKTsKKyAgICAgICAgbGF5
ZXIgPSB0b1JlbmRlckJhc2VPYmplY3QocmVuZGVyZXIpLT5sYXllcigpOwogICAgIH0KIAogICAg
IGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yVHJhbnNmb3JtKHJlbmRlcmVyKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCAwZDJmNDhkZDUx
MDFlN2Y0YzdjMzRlZmEwNjIzYThiMGI4OTA0ODc0Li4zNGYzZTQzOTJmODdlYzEzMTE5MjM3M2E0
MjMzOGU0YjJiMDhiNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RNYXJrZXIuY3BwCkBAIC0xNzAyLDcgKzE3MDIsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6
OnNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlIHN0YXRlKQogICAgICAgICAgICAgcm9v
dC0+c2V0SGFzU2VsZWN0ZWRDaGlsZHJlbihzdGF0ZSAhPSBTZWxlY3Rpb25Ob25lKTsKIH0KIAot
TGF5b3V0UmVjdCBSZW5kZXJMaXN0TWFya2VyOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29u
dGVudCkKK0xheW91dFJlY3QgUmVuZGVyTGlzdE1hcmtlcjo6c2VsZWN0aW9uUmVjdEZvclJlcGFp
bnQoUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxl
Q29udGVudCkKIHsKICAgICBBU1NFUlQoIW5lZWRzTGF5b3V0KCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAppbmRleCBkODhkOTIyYjBlNDI4M2NjYTQ1
NjAzNWY0ZWViMTE3ZDgyYzhmNTJkLi4zN2VjY2ZmNTNiYmRjM2M4NjhiNGExNDQyNWQyNGFlOGNj
Mjk2ZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgK
QEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0
dXJuICFpc0ltYWdlKCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShT
ZWxlY3Rpb25TdGF0ZSk7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBU
b1Zpc2libGVDb250ZW50ID0gdHJ1ZSk7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlv
blJlY3RGb3JSZXBhaW50KFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wg
Y2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxl
Y3Rpb25MZWFmKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCB1cGRhdGVNYXJn
aW5zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGRl
YjY2MDc5YzdmOWU5OTA5MGIwZWZkZDYwNTI0NGNhMjcyYzQwNWMuLjI0MDE1YWNkZDk1OGZjNTY2
ZWU2Nzc1Mzk2YzExOGU0ZmJlMTY4NDkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFkZENo
aWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiAg
ICAgLy8gVG8gYXZvaWQgdGhlIHByb2JsZW0gYWxsdG9nZXRoZXIsIGRldGVjdCBlYXJseSBpZiB3
ZSdyZSBpbnNpZGUgYSBoaWRkZW4gU1ZHIHN1YnRyZWUKICAgICAvLyBhbmQgc3RvcCBjcmVhdGlu
ZyBsYXllcnMgYXQgYWxsIGZvciB0aGVzZSBjYXNlcyAtIHRoZXkncmUgbm90IHVzZWQgYW55d2F5
cy4KICAgICBpZiAobmV3Q2hpbGQtPmhhc0xheWVyKCkgJiYgIWxheWVyQ3JlYXRpb25BbGxvd2Vk
Rm9yU3VidHJlZSgpKQotICAgICAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG5ld0NoaWxkKS0+
bGF5ZXIoKS0+cmVtb3ZlT25seVRoaXNMYXllcigpOworICAgICAgICB0b1JlbmRlckJhc2VPYmpl
Y3QobmV3Q2hpbGQpLT5sYXllcigpLT5yZW1vdmVPbmx5VGhpc0xheWVyKCk7CiB9CiAKIHZvaWQg
UmVuZGVyT2JqZWN0OjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3QqIG9sZENoaWxkKQpAQCAtNDQx
LDcgKzQ0MSw3IEBAIHN0YXRpYyB2b2lkIGFkZExheWVycyhSZW5kZXJPYmplY3QqIG9iaiwgUmVu
ZGVyTGF5ZXIqIHBhcmVudExheWVyLCBSZW5kZXJPYmplY3QqCiAgICAgICAgICAgICBiZWZvcmVD
aGlsZCA9IG5ld09iamVjdC0+cGFyZW50KCktPmZpbmROZXh0TGF5ZXIocGFyZW50TGF5ZXIsIG5l
d09iamVjdCk7CiAgICAgICAgICAgICBuZXdPYmplY3QgPSAwOwogICAgICAgICB9Ci0gICAgICAg
IHBhcmVudExheWVyLT5hZGRDaGlsZCh0b1JlbmRlckJveE1vZGVsT2JqZWN0KG9iaiktPmxheWVy
KCksIGJlZm9yZUNoaWxkKTsKKyAgICAgICAgcGFyZW50TGF5ZXItPmFkZENoaWxkKHRvUmVuZGVy
QmFzZU9iamVjdChvYmopLT5sYXllcigpLCBiZWZvcmVDaGlsZCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlTGF5
ZXJzKFJlbmRlckxheWVyKiBwYXJlbnRMYXllcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGhhc0xheWVyKCkpIHsKLSAgICAgICAgcGFyZW50TGF5ZXItPnJlbW92ZUNoaWxkKHRvUmVuZGVy
Qm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCkpOworICAgICAgICBwYXJlbnRMYXllci0+cmVt
b3ZlQ2hpbGQodG9SZW5kZXJCYXNlT2JqZWN0KHRoaXMpLT5sYXllcigpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojptb3Zl
TGF5ZXJzKFJlbmRlckxheWVyKiBvbGRQYXJlbnQsIFJlbmRlckxheWVyKiBuZXdQYXJlbnQpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChoYXNMYXllcigpKSB7Ci0gICAgICAgIFJlbmRlckxh
eWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCk7CisgICAg
ICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyQmFzZU9iamVjdCh0aGlzKS0+bGF5ZXIo
KTsKICAgICAgICAgQVNTRVJUKG9sZFBhcmVudCA9PSBsYXllci0+cGFyZW50KCkpOwogICAgICAg
ICBpZiAob2xkUGFyZW50KQogICAgICAgICAgICAgb2xkUGFyZW50LT5yZW1vdmVDaGlsZChsYXll
cik7CkBAIC00OTksNyArNDk5LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlck9iamVjdDo6ZmluZE5l
eHRMYXllcihSZW5kZXJMYXllciogcGFyZW50TGF5ZXIsIFJlbmRlck9iamVjdCoKICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICAvLyBTdGVwIDE6IElmIG91ciBsYXllciBpcyBhIGNoaWxkIG9mIHRo
ZSBkZXNpcmVkIHBhcmVudCwgdGhlbiByZXR1cm4gb3VyIGxheWVyLgotICAgIFJlbmRlckxheWVy
KiBvdXJMYXllciA9IGhhc0xheWVyKCkgPyB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5s
YXllcigpIDogMDsKKyAgICBSZW5kZXJMYXllciogb3VyTGF5ZXIgPSBoYXNMYXllcigpID8gdG9S
ZW5kZXJCYXNlT2JqZWN0KHRoaXMpLT5sYXllcigpIDogMDsKICAgICBpZiAob3VyTGF5ZXIgJiYg
b3VyTGF5ZXItPnBhcmVudCgpID09IHBhcmVudExheWVyKQogICAgICAgICByZXR1cm4gb3VyTGF5
ZXI7CiAKQEAgLTUzMSw3ICs1MzEsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyT2JqZWN0OjplbmNs
b3NpbmdMYXllcigpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBjdXJyID0gdGhp
czsKICAgICB3aGlsZSAoY3VycikgewotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBjdXJy
LT5oYXNMYXllcigpID8gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChjdXJyKS0+bGF5ZXIoKSA6IDA7
CisgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IGN1cnItPmhhc0xheWVyKCkgPyB0b1JlbmRl
ckJhc2VPYmplY3QoY3VyciktPmxheWVyKCkgOiAwOwogICAgICAgICBpZiAobGF5ZXIpCiAgICAg
ICAgICAgICByZXR1cm4gbGF5ZXI7CiAgICAgICAgIGN1cnIgPSBjdXJyLT5wYXJlbnQoKTsKQEAg
LTcxOCwxMyArNzE4LDEzIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjppbnZhbGlkYXRlQ29udGFpbmVy
UHJlZmVycmVkTG9naWNhbFdpZHRocygpCiB2b2lkIFJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVk
c0Z1bGxSZXBhaW50KCkKIHsKICAgICBBU1NFUlQoaGFzTGF5ZXIoKSk7Ci0gICAgdG9SZW5kZXJC
b3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxS
ZXBhaW50KTsKKyAgICB0b1JlbmRlckJhc2VPYmplY3QodGhpcyktPmxheWVyKCktPnNldFJlcGFp
bnRTdGF0dXMoTmVlZHNGdWxsUmVwYWludCk7CiB9CiAKIHZvaWQgUmVuZGVyT2JqZWN0OjpzZXRM
YXllck5lZWRzRnVsbFJlcGFpbnRGb3JQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQoKQogewogICAg
IEFTU0VSVChoYXNMYXllcigpKTsKLSAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5s
YXllcigpLT5zZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnRGb3JQb3NpdGlvbmVkTW92
ZW1lbnRMYXlvdXQpOworICAgIHRvUmVuZGVyQmFzZU9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+c2V0
UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0
KTsKIH0KIAogUmVuZGVyQmxvY2sqIFJlbmRlck9iamVjdDo6Y29udGFpbmluZ0Jsb2NrKCkgY29u
c3QKQEAgLTEyMTEsMTMgKzEyMTEsMTMgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50KFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikKIHsKIH0KIAotUmVuZGVyQm94TW9kZWxPYmplY3Qq
IFJlbmRlck9iamVjdDo6Y29udGFpbmVyRm9yUmVwYWludCgpIGNvbnN0CitSZW5kZXJCYXNlT2Jq
ZWN0KiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5lckZvclJlcGFpbnQoKSBjb25zdAogewogICAgIFJl
bmRlclZpZXcqIHYgPSB2aWV3KCk7CiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm4gMDsKICAg
ICAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IDA7CisgICAg
UmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciA9IDA7CiAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKHYtPnVzZXNDb21wb3NpdGluZygpKSB7CkBAIC0x
MjQ3LDcgKzEyNDcsNyBAQCBSZW5kZXJCb3hNb2RlbE9iamVjdCogUmVuZGVyT2JqZWN0Ojpjb250
YWluZXJGb3JSZXBhaW50KCkgY29uc3QKICAgICByZXR1cm4gcmVwYWludENvbnRhaW5lcjsKIH0K
IAotdm9pZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRVc2luZ0NvbnRhaW5lcihSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYgciwgYm9vbCBpbW1l
ZGlhdGUpCit2b2lkIFJlbmRlck9iamVjdDo6cmVwYWludFVzaW5nQ29udGFpbmVyKFJlbmRlckJh
c2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFJlY3QmIHIsIGJvb2wgaW1t
ZWRpYXRlKQogewogICAgIGlmICghcmVwYWludENvbnRhaW5lcikgewogICAgICAgICB2aWV3KCkt
PnJlcGFpbnRWaWV3UmVjdGFuZ2xlKHIsIGltbWVkaWF0ZSk7CkBAIC0xMzAwLDcgKzEzMDAsNyBA
QCB2b2lkIFJlbmRlck9iamVjdDo6cmVwYWludChib29sIGltbWVkaWF0ZSkKICAgICBpZiAodmll
dy0+cHJpbnRpbmcoKSkKICAgICAgICAgcmV0dXJuOyAvLyBEb24ndCByZXBhaW50IGlmIHdlJ3Jl
IHByaW50aW5nLgogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIg
PSBjb250YWluZXJGb3JSZXBhaW50KCk7CisgICAgUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENv
bnRhaW5lciA9IGNvbnRhaW5lckZvclJlcGFpbnQoKTsKICAgICByZXBhaW50VXNpbmdDb250YWlu
ZXIocmVwYWludENvbnRhaW5lciA/IHJlcGFpbnRDb250YWluZXIgOiB2aWV3LCBjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKSwgaW1tZWRpYXRlKTsKIH0KIApA
QCAtMTMyMCw3ICsxMzIwLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRSZWN0YW5nbGUo
Y29uc3QgTGF5b3V0UmVjdCYgciwgYm9vbCBpbW1lZGlhdGUpCiAgICAgLy8gcmVwYWludCBjb250
YWluZXJzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDgKICAg
ICBkaXJ0eVJlY3QubW92ZSh2aWV3LT5sYXlvdXREZWx0YSgpKTsKIAotICAgIFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gY29udGFpbmVyRm9yUmVwYWludCgpOworICAg
IFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBjb250YWluZXJGb3JSZXBhaW50
KCk7CiAgICAgY29tcHV0ZVJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIGRpcnR5UmVj
dCk7CiAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIgPyByZXBhaW50
Q29udGFpbmVyIDogdmlldywgZGlydHlSZWN0LCBpbW1lZGlhdGUpOwogfQpAQCAtMTMzMCw3ICsx
MzMwLDcgQEAgSW50UmVjdCBSZW5kZXJPYmplY3Q6OnBpeGVsU25hcHBlZEFic29sdXRlQ2xpcHBl
ZE92ZXJmbG93UmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QoYWJz
b2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkpOwogfQogCi1ib29sIFJlbmRlck9iamVjdDo6cmVw
YWludEFmdGVyTGF5b3V0SWZOZWVkZWQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIGNvbnN0IExheW91dFJlY3QmIG9sZEJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgb2xk
T3V0bGluZUJveCwgY29uc3QgTGF5b3V0UmVjdCogbmV3Qm91bmRzUHRyLCBjb25zdCBMYXlvdXRS
ZWN0KiBuZXdPdXRsaW5lQm94UmVjdFB0cikKK2Jvb2wgUmVuZGVyT2JqZWN0OjpyZXBhaW50QWZ0
ZXJMYXlvdXRJZk5lZWRlZChSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25z
dCBMYXlvdXRSZWN0JiBvbGRCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIG9sZE91dGxpbmVCb3gs
IGNvbnN0IExheW91dFJlY3QqIG5ld0JvdW5kc1B0ciwgY29uc3QgTGF5b3V0UmVjdCogbmV3T3V0
bGluZUJveFJlY3RQdHIpCiB7CiAgICAgUmVuZGVyVmlldyogdiA9IHZpZXcoKTsKICAgICBpZiAo
di0+cHJpbnRpbmcoKSkKQEAgLTE0NTQsMjAgKzE0NTQsMjAgQEAgYm9vbCBSZW5kZXJPYmplY3Q6
OmNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpIGNvbnN0CiAgICAgcmV0dXJuICFkb2N1bWVu
dCgpLT52aWV3KCktPm5lZWRzRnVsbFJlcGFpbnQoKSAmJiAhaGFzTGF5ZXIoKTsKIH0KIAotTGF5
b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBj
b25zdAorTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQo
UmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lk
dGgpIGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCByKGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KHJlcGFpbnRDb250YWluZXIpKTsKICAgICByLmluZmxhdGUob3V0bGluZVdpZHRoKTsKICAg
ICByZXR1cm4gcjsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OmNsaXBwZWRPdmVyZmxv
d1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KikgY29uc3QKK0xheW91dFJlY3Qg
UmVuZGVyT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCYXNlT2Jq
ZWN0KikgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gTGF5
b3V0UmVjdCgpOwogfQogCi12b2lkIFJlbmRlck9iamVjdDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0
LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJPYmplY3Q6OmNvbXB1dGVSZWN0Rm9yUmVw
YWludChSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0
LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09IHRoaXMp
CiAgICAgICAgIHJldHVybjsKQEAgLTE0OTgsNyArMTQ5OCw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0
Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsCiAgICAgfQogfQogCi12b2lkIFJlbmRlck9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqLCBGbG9hdFJlY3QmLCBib29sKSBjb25zdAor
dm9pZCBSZW5kZXJPYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJhc2VP
YmplY3QqLCBGbG9hdFJlY3QmLCBib29sKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQpAQCAtMTY1OSw3ICsxNjU5LDcgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlck9iamVj
dDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCB1bnNpZ24KICAg
ICAgICAgLy8gVGV4dCBub2RlcyBzaGFyZSBzdHlsZSB3aXRoIHRoZWlyIHBhcmVudHMgYnV0IHRy
YW5zZm9ybXMgZG9uJ3QgYXBwbHkgdG8gdGhlbSwKICAgICAgICAgLy8gaGVuY2UgdGhlICFpc1Rl
eHQoKSBjaGVjay4KICAgICAgICAgLy8gRklYTUU6IHdoZW4gdHJhbnNmb3JtcyBhcmUgdGFrZW4g
aW50byBhY2NvdW50IGZvciBvdmVyZmxvdywgd2Ugd2lsbCBuZWVkIHRvIGRvIGEgbGF5b3V0Lgot
ICAgICAgICBpZiAoIWlzVGV4dCgpICYmICghaGFzTGF5ZXIoKSB8fCAhdG9SZW5kZXJCb3hNb2Rl
bE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkpKSB7CisgICAgICAgIGlmICgh
aXNUZXh0KCkgJiYgKCFoYXNMYXllcigpIHx8ICF0b1JlbmRlckJhc2VPYmplY3QodGhpcyktPmxh
eWVyKCktPmlzQ29tcG9zaXRlZCgpKSkgewogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBzZXQg
YXQgbGVhc3QgU2ltcGxpZmllZExheW91dCwgYnV0IGlmIFBvc2l0aW9uZWRNb3ZlbWVudE9ubHkg
aXMgYWxyZWFkeSBzZXQKICAgICAgICAgICAgIC8vIHRoZW4gd2UgYWN0dWFsbHkgbmVlZCBTaW1w
bGlmaWVkTGF5b3V0QW5kUG9zaXRpb25lZE1vdmVtZW50LgogICAgICAgICAgICAgaWYgKCFoYXNM
YXllcigpKQpAQCAtMTY3NSw3ICsxNjc1LDcgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlck9iamVj
dDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCB1bnNpZ24KICAg
ICAvLyBJZiBvcGFjaXR5IGNoYW5nZWQsIGFuZCB3ZSBhcmUgbm90IGNvbXBvc2l0ZWQsIG5lZWQg
dG8gcmVwYWludCAoYWxzbwogICAgIC8vIGlnbm9yaW5nIHRleHQgbm9kZXMpCiAgICAgaWYgKGNv
bnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzICYgQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5T3BhY2l0
eSkgewotICAgICAgICBpZiAoIWlzVGV4dCgpICYmICghaGFzTGF5ZXIoKSB8fCAhdG9SZW5kZXJC
b3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkpKQorICAgICAgICBp
ZiAoIWlzVGV4dCgpICYmICghaGFzTGF5ZXIoKSB8fCAhdG9SZW5kZXJCYXNlT2JqZWN0KHRoaXMp
LT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkpCiAgICAgICAgICAgICBkaWZmID0gU3R5bGVEaWZm
ZXJlbmNlUmVwYWludExheWVyOwogICAgICAgICBlbHNlIGlmIChkaWZmIDwgU3R5bGVEaWZmZXJl
bmNlUmVjb21wb3NpdGVMYXllcikKICAgICAgICAgICAgIGRpZmYgPSBTdHlsZURpZmZlcmVuY2VS
ZWNvbXBvc2l0ZUxheWVyOwpAQCAtMTY4Myw3ICsxNjgzLDcgQEAgU3R5bGVEaWZmZXJlbmNlIFJl
bmRlck9iamVjdDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCB1
bnNpZ24KICAgICAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgaWYgKChjb250ZXh0U2Vu
c2l0aXZlUHJvcGVydGllcyAmIENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eUZpbHRlcikgJiYgaGFz
TGF5ZXIoKSkgewotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVs
T2JqZWN0KHRoaXMpLT5sYXllcigpOworICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1Jl
bmRlckJhc2VPYmplY3QodGhpcyktPmxheWVyKCk7CiAgICAgICAgIGlmICghbGF5ZXItPmlzQ29t
cG9zaXRlZCgpIHx8IGxheWVyLT5wYWludHNXaXRoRmlsdGVycygpKQogICAgICAgICAgICAgZGlm
ZiA9IFN0eWxlRGlmZmVyZW5jZVJlcGFpbnRMYXllcjsKICAgICAgICAgZWxzZSBpZiAoZGlmZiA8
IFN0eWxlRGlmZmVyZW5jZVJlY29tcG9zaXRlTGF5ZXIpCkBAIC0xNjk0LDggKzE2OTQsOCBAQCBT
dHlsZURpZmZlcmVuY2UgUmVuZGVyT2JqZWN0OjphZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVE
aWZmZXJlbmNlIGRpZmYsIHVuc2lnbgogICAgIC8vIFRoZSBhbnN3ZXIgdG8gcmVxdWlyZXNMYXll
cigpIGZvciBwbHVnaW5zIGFuZCBpZnJhbWVzIGNhbiBjaGFuZ2Ugb3V0c2lkZSBvZiB0aGUgc3R5
bGUgc3lzdGVtLAogICAgIC8vIHNpbmNlIGl0IGRlcGVuZHMgb24gd2hldGhlciB3ZSBkZWNpZGUg
dG8gY29tcG9zaXRlIHRoZXNlIGVsZW1lbnRzLiBXaGVuIHRoZSBsYXllciBzdGF0dXMgb2YKICAg
ICAvLyBvbmUgb2YgdGhlc2UgZWxlbWVudHMgY2hhbmdlcywgd2UgbmVlZCB0byBmb3JjZSBhIGxh
eW91dC4KLSAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VFcXVhbCAmJiBzdHlsZSgpICYm
IGlzQm94TW9kZWxPYmplY3QoKSkgewotICAgICAgICBpZiAoaGFzTGF5ZXIoKSAhPSB0b1JlbmRl
ckJveE1vZGVsT2JqZWN0KHRoaXMpLT5yZXF1aXJlc0xheWVyKCkpCisgICAgaWYgKGRpZmYgPT0g
U3R5bGVEaWZmZXJlbmNlRXF1YWwgJiYgc3R5bGUoKSAmJiBpc0xheWVyQmFzZSgpKSB7CisgICAg
ICAgIGlmIChoYXNMYXllcigpICE9IHRvUmVuZGVyQmFzZU9iamVjdCh0aGlzKS0+cmVxdWlyZXNM
YXllcigpKQogICAgICAgICAgICAgZGlmZiA9IFN0eWxlRGlmZmVyZW5jZUxheW91dDsKICAgICB9
CiAjZWxzZQpAQCAtMTk5Nyw3ICsxOTk3LDcgQEAgRmxvYXRQb2ludCBSZW5kZXJPYmplY3Q6OmFi
c29sdXRlVG9Mb2NhbChjb25zdCBGbG9hdFBvaW50JiBjb250YWluZXJQb2ludCwgYm9vbAogICAg
IHJldHVybiB0cmFuc2Zvcm1TdGF0ZS5sYXN0UGxhbmFyUG9pbnQoKTsKIH0KIAotdm9pZCBSZW5k
ZXJPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3Rh
dGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4
ZWQpIGNvbnN0Cit2b2lkIFJlbmRlck9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJC
YXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9y
bXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JO
b3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09
IHRoaXMpCiAgICAgICAgIHJldHVybjsKQEAgLTIwMjIsNyArMjAyMiw3IEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBiCiAgICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVy
LCBmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUsIERvTm90QXBwbHlDb250YWlu
ZXJGbGlwLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0
OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNl
c3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25z
dCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25z
dCBSZW5kZXJCYXNlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYg
Z2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgQVNTRVJUX1VOVVNFRChhbmNlc3RvclRvU3RvcEF0
LCBhbmNlc3RvclRvU3RvcEF0ICE9IHRoaXMpOwogCkBAIC0yMDU1LDcgKzIwNTUsNyBAQCBib29s
IFJlbmRlck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5k
ZXJPYmplY3QqIGNvbnRhaW5lcgogI2lmIEVOQUJMRSgzRF9SRU5ERVJJTkcpCiAgICAgLy8gaGFz
VHJhbnNmb3JtKCkgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIG9iamVjdCBoYXMgdHJhbnNmb3JtLCB0
cmFuc2Zvcm0tc3R5bGUgb3IgcGVyc3BlY3RpdmUuIFdlIGp1c3QgY2FyZSBhYm91dCB0cmFuc2Zv
cm0sCiAgICAgLy8gc28gY2hlY2sgdGhlIGxheWVyJ3MgdHJhbnNmb3JtIGRpcmVjdGx5LgotICAg
IHJldHVybiAoaGFzTGF5ZXIoKSAmJiB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXll
cigpLT50cmFuc2Zvcm0oKSkgfHwgKGNvbnRhaW5lck9iamVjdCAmJiBjb250YWluZXJPYmplY3Qt
PnN0eWxlKCktPmhhc1BlcnNwZWN0aXZlKCkpOworICAgIHJldHVybiAoaGFzTGF5ZXIoKSAmJiB0
b1JlbmRlckJhc2VPYmplY3QodGhpcyktPmxheWVyKCktPnRyYW5zZm9ybSgpKSB8fCAoY29udGFp
bmVyT2JqZWN0ICYmIGNvbnRhaW5lck9iamVjdC0+c3R5bGUoKS0+aGFzUGVyc3BlY3RpdmUoKSk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250YWluZXJPYmplY3QpOwogICAgIHJldHVybiBo
YXNUcmFuc2Zvcm0oKTsKQEAgLTIwNjcsMTQgKzIwNjcsMTQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6
OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXJP
YmplY3QKICAgICB0cmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7CiAgICAgdHJhbnNmb3JtLnRyYW5z
bGF0ZShvZmZzZXRJbkNvbnRhaW5lci53aWR0aCgpLCBvZmZzZXRJbkNvbnRhaW5lci5oZWlnaHQo
KSk7CiAgICAgUmVuZGVyTGF5ZXIqIGxheWVyOwotICAgIGlmIChoYXNMYXllcigpICYmIChsYXll
ciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCkpICYmIGxheWVyLT50cmFu
c2Zvcm0oKSkKKyAgICBpZiAoaGFzTGF5ZXIoKSAmJiAobGF5ZXIgPSB0b1JlbmRlckJhc2VPYmpl
Y3QodGhpcyktPmxheWVyKCkpICYmIGxheWVyLT50cmFuc2Zvcm0oKSkKICAgICAgICAgdHJhbnNm
b3JtLm11bHRpcGx5KGxheWVyLT5jdXJyZW50VHJhbnNmb3JtKCkpOwogICAgIAogI2lmIEVOQUJM
RSgzRF9SRU5ERVJJTkcpCiAgICAgaWYgKGNvbnRhaW5lck9iamVjdCAmJiBjb250YWluZXJPYmpl
Y3QtPmhhc0xheWVyKCkgJiYgY29udGFpbmVyT2JqZWN0LT5zdHlsZSgpLT5oYXNQZXJzcGVjdGl2
ZSgpKSB7CiAgICAgICAgIC8vIFBlcnBzZWN0aXZlIG9uIHRoZSBjb250YWluZXIgYWZmZWN0cyB1
cywgc28gd2UgaGF2ZSB0byBmYWN0b3IgaXQgaW4gaGVyZS4KICAgICAgICAgQVNTRVJUKGNvbnRh
aW5lck9iamVjdC0+aGFzTGF5ZXIoKSk7Ci0gICAgICAgIEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVP
cmlnaW4gPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGNvbnRhaW5lck9iamVjdCktPmxheWVyKCkt
PnBlcnNwZWN0aXZlT3JpZ2luKCk7CisgICAgICAgIEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVPcmln
aW4gPSB0b1JlbmRlckJhc2VPYmplY3QoY29udGFpbmVyT2JqZWN0KS0+bGF5ZXIoKS0+cGVyc3Bl
Y3RpdmVPcmlnaW4oKTsKIAogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwZXJzcGVjdGl2
ZU1hdHJpeDsKICAgICAgICAgcGVyc3BlY3RpdmVNYXRyaXguYXBwbHlQZXJzcGVjdGl2ZShjb250
YWluZXJPYmplY3QtPnN0eWxlKCktPnBlcnNwZWN0aXZlKCkpOwpAQCAtMjA4OCw3ICsyMDg4LDcg
QEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVu
ZGVyT2JqZWN0KiBjb250YWluZXJPYmplY3QKICNlbmRpZgogfQogCi1GbG9hdFF1YWQgUmVuZGVy
T2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmIGxvY2FsUXVhZCwg
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wq
IHdhc0ZpeGVkKSBjb25zdAorRmxvYXRRdWFkIFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5l
clF1YWQoY29uc3QgRmxvYXRRdWFkJiBsb2NhbFF1YWQsIFJlbmRlckJhc2VPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIC8v
IFRyYWNrIHRoZSBwb2ludCBhdCB0aGUgY2VudGVyIG9mIHRoZSBxdWFkJ3MgYm91bmRpbmcgYm94
LiBBcyBtYXBMb2NhbFRvQ29udGFpbmVyKCkgY2FsbHMgb2Zmc2V0RnJvbUNvbnRhaW5lcigpLAog
ICAgIC8vIGl0IHdpbGwgdXNlIHRoYXQgcG9pbnQgYXMgdGhlIHJlZmVyZW5jZSBwb2ludCB0byBk
ZWNpZGUgd2hpY2ggY29sdW1uJ3MgdHJhbnNmb3JtIHRvIGFwcGx5IGluIG11bHRpcGxlLWNvbHVt
biBibG9ja3MuCkBAIC0yMDk5LDcgKzIwOTksNyBAQCBGbG9hdFF1YWQgUmVuZGVyT2JqZWN0Ojps
b2NhbFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmIGxvY2FsUXVhZCwgUmVuZGVyQgog
ICAgIHJldHVybiB0cmFuc2Zvcm1TdGF0ZS5sYXN0UGxhbmFyUXVhZCgpOwogfQogCi1GbG9hdFBv
aW50IFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclBvaW50KGNvbnN0IEZsb2F0UG9pbnQm
IGxvY2FsUG9pbnQsIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29s
IGZpeGVkLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK0Zsb2F0UG9pbnQgUmVuZGVyT2JqZWN0Ojps
b2NhbFRvQ29udGFpbmVyUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgbG9jYWxQb2ludCwgUmVuZGVy
QmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0CiB7CiAgICAgVHJhbnNmb3JtU3RhdGUgdHJhbnNmb3JtU3RhdGUoVHJhbnNmb3JtU3Rh
dGU6OkFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uLCBsb2NhbFBvaW50KTsKICAgICBtYXBMb2NhbFRv
Q29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZpeGVkLCB0cnVlLCB0cmFuc2Zvcm1TdGF0ZSwg
QXBwbHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CkBAIC0yMTk3LDcgKzIxOTcsNyBAQCBib29s
IFJlbmRlck9iamVjdDo6aGFzT3V0bGluZUFubm90YXRpb24oKSBjb25zdAogICAgIHJldHVybiBu
b2RlKCkgJiYgbm9kZSgpLT5pc0xpbmsoKSAmJiBkb2N1bWVudCgpLT5wcmludGluZygpOwogfQog
Ci1SZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sKiByZXBhaW50Q29udGFpbmVyU2tpcHBl
ZCkgY29uc3QKK1JlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojpjb250YWluZXIoY29uc3QgUmVu
ZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCogcmVwYWludENvbnRhaW5lclNr
aXBwZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXJTa2lwcGVkKQogICAgICAg
ICAqcmVwYWludENvbnRhaW5lclNraXBwZWQgPSBmYWxzZTsKQEAgLTIzMzAsNyArMjMzMCw3IEBA
IHZvaWQgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAgIC8vIGJlIG1vdmVkIGlu
dG8gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlc3Ryb3kuCiAgICAgaWYgKGhhc0xheWVyKCkpIHsK
ICAgICAgICAgc2V0SGFzTGF5ZXIoZmFsc2UpOwotICAgICAgICB0b1JlbmRlckJveE1vZGVsT2Jq
ZWN0KHRoaXMpLT5kZXN0cm95TGF5ZXIoKTsKKyAgICAgICAgdG9SZW5kZXJCYXNlT2JqZWN0KHRo
aXMpLT5kZXN0cm95TGF5ZXIoKTsKICAgICB9CiAKICAgICBzZXRBbmNlc3RvckxpbmVCb3hEaXJ0
eShmYWxzZSk7CkBAIC0yNDIxLDcgKzI0MjEsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6dXBkYXRl
RHJhZ1N0YXRlKGJvb2wgZHJhZ09uKQogCiBib29sIFJlbmRlck9iamVjdDo6aXNDb21wb3NpdGVk
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzTGF5ZXIoKSAmJiB0b1JlbmRlckJveE1vZGVsT2Jq
ZWN0KHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKKyAgICByZXR1cm4gaGFzTGF5ZXIo
KSAmJiB0b1JlbmRlckJhc2VPYmplY3QodGhpcyktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOwog
fQogCiBib29sIFJlbmRlck9iamVjdDo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVx
dWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0UG9pbnQmIHBvaW50SW5D
b250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEZp
bHRlciBoaXRUZXN0RmlsdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CmluZGV4IDYwYzU2OTA5Y2NiNWNlMGRlNjY3Y2Q5NzY3ZWIzMWYwN2I0YjFlMmUuLjc3MjdiNzdh
ZTdhYzJlZmNjOWNlN2I5YzJhM2Y1Mzg4ZDNhYzY4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgUmVuZGVyQmxvY2s7CiBj
bGFzcyBSZW5kZXJGbG93VGhyZWFkOwogY2xhc3MgUmVuZGVyR2VvbWV0cnlNYXA7CiBjbGFzcyBS
ZW5kZXJMYXllcjsKK2NsYXNzIFJlbmRlckJhc2VPYmplY3Q7CiBjbGFzcyBSZW5kZXJUYWJsZTsK
IGNsYXNzIFJlbmRlclRoZW1lOwogY2xhc3MgVHJhbnNmb3JtU3RhdGU7CkBAIC0zMTMsNiArMzE0
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lU2V0KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNMYXllckJhc2UoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RCb3goKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RJdGVtKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0TWFya2VyKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KQEAgLTU4NSw3ICs1ODcsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJu
cyB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhpcyBvbmUuIENhbiBiZSBkaWZmZXJlbnQgZnJvbSBw
YXJlbnQgZm9yIHBvc2l0aW9uZWQgZWxlbWVudHMuCiAgICAgLy8gSWYgcmVwYWludENvbnRhaW5l
ciBhbmQgcmVwYWludENvbnRhaW5lclNraXBwZWQgYXJlIG5vdCBudWxsLCBvbiByZXR1cm4gKnJl
cGFpbnRDb250YWluZXJTa2lwcGVkCiAgICAgLy8gaXMgdHJ1ZSBpZiB0aGUgcmVuZGVyZXIgcmV0
dXJuZWQgaXMgYW4gYW5jZXN0b3Igb2YgcmVwYWludENvbnRhaW5lci4KLSAgICBSZW5kZXJPYmpl
Y3QqIGNvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciA9IDAsIGJvb2wqIHJlcGFpbnRDb250YWluZXJTa2lwcGVkID0gMCkgY29uc3Q7CisgICAgUmVu
ZGVyT2JqZWN0KiBjb250YWluZXIoY29uc3QgUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRh
aW5lciA9IDAsIGJvb2wqIHJlcGFpbnRDb250YWluZXJTa2lwcGVkID0gMCkgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogaG92ZXJBbmNlc3RvcigpIGNvbnN0IHsgcmV0dXJuIHBh
cmVudCgpOyB9CiAKQEAgLTY4MSw4ICs2ODMsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8g
Q29udmVydCBhIGxvY2FsIHF1YWQgaW50byB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2YgY29udGFp
bmVyLCB0YWtpbmcgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQuCi0gICAgRmxvYXRRdWFkIGxvY2Fs
VG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0UXVhZCYsIFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCkg
Y29uc3Q7Ci0gICAgRmxvYXRQb2ludCBsb2NhbFRvQ29udGFpbmVyUG9pbnQoY29uc3QgRmxvYXRQ
b2ludCYsIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVk
ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgRmxvYXRRdWFkIGxvY2Fs
VG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0UXVhZCYsIFJlbmRlckJhc2VPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGJvb2wgZml4ZWQgPSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25z
dDsKKyAgICBGbG9hdFBvaW50IGxvY2FsVG9Db250YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50
JiwgUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCA9IGZhbHNl
LCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQg
ZnJvbSB0aGUgY29udGFpbmVyKCkgcmVuZGVyZXIgKGV4Y2x1ZGluZyB0cmFuc2Zvcm1zKS4gSW4g
bXVsdGktY29sdW1uIGxheW91dCwKICAgICAvLyBkaWZmZXJlbnQgb2Zmc2V0cyBhcHBseSBhdCBk
aWZmZXJlbnQgcG9pbnRzLCBzbyByZXR1cm4gdGhlIG9mZnNldCB0aGF0IGFwcGxpZXMgdG8gdGhl
IGdpdmVuIHBvaW50LgpAQCAtNzIzLDEzICs3MjUsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBn
ZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyhpbnQgZGVjb3JhdGlvbnMsIENvbG9yJiB1bmRlcmxpbmUs
IENvbG9yJiBvdmVybGluZSwgQ29sb3ImIGxpbmV0aHJvdWdoLCBib29sIHF1aXJrc01vZGUgPSBm
YWxzZSwgYm9vbCBmaXJzdGxpbmVTdHlsZSA9IGZhbHNlKTsKIAotICAgIC8vIFJldHVybiB0aGUg
UmVuZGVyQm94IGluIHRoZSBjb250YWluZXIgY2hhaW4gd2hpY2ggaXMgcmVzcG9uc2libGUgZm9y
IHBhaW50aW5nIHRoaXMgb2JqZWN0LCBvciAwCisgICAgLy8gUmV0dXJuIHRoZSBSZW5kZXJCYXNl
T2JqZWN0IGluIHRoZSBjb250YWluZXIgY2hhaW4gd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHBh
aW50aW5nIHRoaXMgb2JqZWN0LCBvciAwCiAgICAgLy8gaWYgcGFpbnRpbmcgaXMgcm9vdC1yZWxh
dGl2ZS4gVGhpcyBpcyB0aGUgY29udGFpbmVyIHRoYXQgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUg
J2ZvclJlcGFpbnQnCiAgICAgLy8gbWV0aG9kcy4KLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCog
Y29udGFpbmVyRm9yUmVwYWludCgpIGNvbnN0OworICAgIFJlbmRlckJhc2VPYmplY3QqIGNvbnRh
aW5lckZvclJlcGFpbnQoKSBjb25zdDsKICAgICAvLyBBY3R1YWxseSBkbyB0aGUgcmVwYWludCBv
ZiByZWN0IHIgZm9yIHRoaXMgb2JqZWN0IHdoaWNoIGhhcyBiZWVuIGNvbXB1dGVkIGluIHRoZSBj
b29yZGluYXRlIHNwYWNlCiAgICAgLy8gb2YgcmVwYWludENvbnRhaW5lci4gSWYgcmVwYWludENv
bnRhaW5lciBpcyAwLCByZXBhaW50IHZpYSB0aGUgdmlldy4KLSAgICB2b2lkIHJlcGFpbnRVc2lu
Z0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3Qg
TGF5b3V0UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOworICAgIHZvaWQgcmVwYWludFVz
aW5nQ29udGFpbmVyKFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExh
eW91dFJlY3QmLCBib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsKICAgICAKICAgICAvLyBSZXBhaW50
IHRoZSBlbnRpcmUgb2JqZWN0LiAgQ2FsbGVkIHdoZW4sIGUuZy4sIHRoZSBjb2xvciBvZiBhIGJv
cmRlciBjaGFuZ2VzLCBvciB3aGVuIGEgYm9yZGVyCiAgICAgLy8gc3R5bGUgY2hhbmdlcy4KQEAg
LTczOSw3ICs3NDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBhaW50UmVjdGFuZ2xlKGNvbnN0
IExheW91dFJlY3QmLCBib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsKIAogICAgIC8vIFJlcGFpbnQg
b25seSBpZiBvdXIgb2xkIGJvdW5kcyBhbmQgbmV3IGJvdW5kcyBhcmUgZGlmZmVyZW50LiBUaGUg
Y2FsbGVyIG1heSBwYXNzIGluIG5ld0JvdW5kcyBhbmQgbmV3T3V0bGluZUJveCBpZiB0aGV5IGFy
ZSBrbm93bi4KLSAgICBib29sIHJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRCb3VuZHMs
IGNvbnN0IExheW91dFJlY3QmIG9sZE91dGxpbmVCb3gsIGNvbnN0IExheW91dFJlY3QqIG5ld0Jv
dW5kc1B0ciA9IDAsIGNvbnN0IExheW91dFJlY3QqIG5ld091dGxpbmVCb3hQdHIgPSAwKTsKKyAg
ICBib29sIHJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKFJlbmRlckJhc2VPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGNvbnN0IExheW91dFJlY3QmIG9sZEJvdW5kcywgY29uc3QgTGF5b3V0UmVj
dCYgb2xkT3V0bGluZUJveCwgY29uc3QgTGF5b3V0UmVjdCogbmV3Qm91bmRzUHRyID0gMCwgY29u
c3QgTGF5b3V0UmVjdCogbmV3T3V0bGluZUJveFB0ciA9IDApOwogCiAgICAgLy8gUmVwYWludCBv
bmx5IGlmIHRoZSBvYmplY3QgbW92ZWQuCiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnREdXJpbmdM
YXlvdXRJZk1vdmVkKGNvbnN0IExheW91dFJlY3QmKTsKQEAgLTc1Niw4ICs3NTgsOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCgwKTsKICAg
ICB9CiAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRBYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3Qo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJl
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwotICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29u
c3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCByZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJhc2VPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdDsKIAogICAgIC8v
IEdpdmVuIGEgcmVjdCBpbiB0aGUgb2JqZWN0J3MgY29vcmRpbmF0ZSBzcGFjZSwgY29tcHV0ZSBh
IHJlY3Qgc3VpdGFibGUgZm9yIHJlcGFpbnRpbmcKICAgICAvLyB0aGF0IHJlY3QgaW4gdmlldyBj
b29yZGluYXRlcy4KQEAgLTc2Nyw4ICs3NjksOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIC8vIEdp
dmVuIGEgcmVjdCBpbiB0aGUgb2JqZWN0J3MgY29vcmRpbmF0ZSBzcGFjZSwgY29tcHV0ZSBhIHJl
Y3Qgc3VpdGFibGUgZm9yIHJlcGFpbnRpbmcKICAgICAvLyB0aGF0IHJlY3QgaW4gdGhlIGNvb3Jk
aW5hdGUgc3BhY2Ugb2YgcmVwYWludENvbnRhaW5lci4KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0
ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBM
YXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCYXNlT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVy
QmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9v
bCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKIAogICAgIC8vIElmIG11bHRpcGxlLWNvbHVtbiBsYXlv
dXQgcmVzdWx0cyBpbiBhcHBseWluZyBhbiBvZmZzZXQgdG8gdGhlIGdpdmVuIHBvaW50LCBhZGQg
dGhlIHNhbWUKICAgICAvLyBvZmZzZXQgdG8gdGhlIGdpdmVuIHNpemUuCkBAIC04MTAsNyArODEy
LDcgQEAgcHVibGljOgogICAgIC8vIEEgc2luZ2xlIHJlY3RhbmdsZSB0aGF0IGVuY29tcGFzc2Vz
IGFsbCBvZiB0aGUgc2VsZWN0ZWQgb2JqZWN0cyB3aXRoaW4gdGhpcyBvYmplY3QuICBVc2VkIHRv
IGRldGVybWluZSB0aGUgdGlnaHRlc3QKICAgICAvLyBwb3NzaWJsZSBib3VuZGluZyBib3ggZm9y
IHRoZSBzZWxlY3Rpb24uCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0KGJvb2wgY2xpcFRv
VmlzaWJsZUNvbnRlbnQgPSB0cnVlKSB7IHJldHVybiBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCgw
LCBjbGlwVG9WaXNpYmxlQ29udGVudCk7IH0KLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0
aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5l
ciovLCBib29sIC8qY2xpcFRvVmlzaWJsZUNvbnRlbnQqLyA9IHRydWUpIHsgcmV0dXJuIExheW91
dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWlu
dChSZW5kZXJCYXNlT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgYm9vbCAvKmNsaXBUb1Zp
c2libGVDb250ZW50Ki8gPSB0cnVlKSB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KIAogICAgIHZp
cnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wgaGFzU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIHNlbGVjdGlvblN0
YXRlKCkgIT0gU2VsZWN0aW9uTm9uZTsgfQpAQCAtODgwLDEyICs4ODIsMTIgQEAgcHVibGljOgog
ICAgIC8vIE1hcCBwb2ludHMgYW5kIHF1YWRzIHRocm91Z2ggZWxlbWVudHMsIHBvdGVudGlhbGx5
IHZpYSAzZCB0cmFuc2Zvcm1zLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gY2FsbCB0aGVzZSBk
aXJlY3RseTsgdXNlCiAgICAgLy8gbG9jYWxUb0Fic29sdXRlL2Fic29sdXRlVG9Mb2NhbCBtZXRo
b2RzIGluc3RlYWQuCiAgICAgZW51bSBBcHBseUNvbnRhaW5lckZsaXBPck5vdCB7IERvTm90QXBw
bHlDb250YWluZXJGbGlwLCBBcHBseUNvbnRhaW5lckZsaXAgfTsKLSAgICB2aXJ0dWFsIHZvaWQg
bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5
Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9
IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJh
c2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhl
ZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFp
bmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbWFw
QWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFu
c2Zvcm1TdGF0ZSYpIGNvbnN0OwogCiAgICAgLy8gUHVzaGVzIHN0YXRlIG9udG8gUmVuZGVyR2Vv
bWV0cnlNYXAgYWJvdXQgaG93IHRvIG1hcCBjb29yZGluYXRlcyBmcm9tIHRoaXMgcmVuZGVyZXIg
dG8gaXRzIGNvbnRhaW5lciwgb3IgYW5jZXN0b3JUb1N0b3BBdCAod2hpY2hldmVyIGlzIGVuY291
bnRlcmVkIGZpcnN0KS4KICAgICAvLyBSZXR1cm5zIHRoZSByZW5kZXJlciB3aGljaCB3YXMgbWFw
cGVkIHRvIChjb250YWluZXIgb3IgYW5jZXN0b3JUb1N0b3BBdCkuCi0gICAgdmlydHVhbCBjb25z
dCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7Cisg
ICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29u
c3QgUmVuZGVyQmFzZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAm
KSBjb25zdDsKICAgICAKICAgICBib29sIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIo
Y29uc3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXIpIGNvbnN0OwogICAgIHZvaWQgZ2V0VHJhbnNm
b3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIGNvbnRhaW5lciwgY29uc3QgTGF5
b3V0U2l6ZSYgb2Zmc2V0SW5Db250YWluZXIsIFRyYW5zZm9ybWF0aW9uTWF0cml4JikgY29uc3Q7
CkBAIC05MjYsNyArOTI4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVE
ZXN0cm95ZWQoKTsKICAgICB2b2lkIGFyZW5hRGVsZXRlKFJlbmRlckFyZW5hKiwgdm9pZCogb2Jq
ZWN0QmFzZSk7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBMYXlvdXRQb2lu
dCogLypjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIqLyA9IDApIGNvbnN0IHsgcmV0dXJu
IExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9y
UmVwYWludChSZW5kZXJCYXNlT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgTGF5b3V0UG9p
bnQqIC8qY2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVyKi8gPSAwKSBjb25zdCB7IHJldHVy
biBMYXlvdXRSZWN0KCk7IH0KIAogcHJpdmF0ZToKICAgICBSZW5kZXJTdHlsZSogZmlyc3RMaW5l
U3R5bGVTbG93Q2FzZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5jcHAKaW5kZXggNzk0YWNkODIwMzk0MThjNzQ0MTRlZmY5ODQzYzIzZTgwZTNiNTEw
My4uZWNmNGE5M2QwN2FjNjk3NTE1YWY2YTQyYTk4OGRkZGY4NjcwNzhkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC00NjEsNyArNDYxLDcgQEAg
VmlzaWJsZVBvc2l0aW9uIFJlbmRlclJlcGxhY2VkOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50JiBwb2ludCkKICAgICByZXR1cm4gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50
KHBvaW50KTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6c2VsZWN0aW9uUmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xp
cFRvVmlzaWJsZUNvbnRlbnQpCitMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpzZWxlY3Rpb25S
ZWN0Rm9yUmVwYWludChSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNs
aXBUb1Zpc2libGVDb250ZW50KQogewogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7CiAKQEAg
LTUyNiw3ICs1MjYsNyBAQCBib29sIFJlbmRlclJlcGxhY2VkOjppc1NlbGVjdGVkKCkgY29uc3QK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyUmVwbGFjZWQ6OmNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6Y2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQoUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QK
IHsKICAgICBpZiAoc3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIWVuY2xvc2lu
Z0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4IDllYmM2
MzRiMDMyMzkxNDhlNTJjMWZjNmI2NWRhYjNkNmQ1YmQ4YmQuLmI0NWU4YjhiNDg4MTU3MDA3NGJj
YjIzYjAxMDg3YmQ1YWUzN2NmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5oCkBAIC03MCwxMyArNzAsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRS
ZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIHsgfQogCi0gICAgdmlydHVh
bCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qg
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZv
clBvaW50KGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGNhbkJl
U2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpOworICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCYXNlT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSk7CiAg
ICAgdm9pZCBjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChSZW5k
ZXJCb3gqLCBGbG9hdFNpemUmIGludHJpbnNpY1NpemUsIGRvdWJsZSYgaW50cmluc2ljUmF0aW8s
IGJvb2wmIGlzUGVyY2VudGFnZUludHJpbnNpY1NpemUpIGNvbnN0OwogCiAgICAgSW50U2l6ZSBt
X2ludHJpbnNpY1NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2VsZWN0aW9uSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlbGVj
dGlvbkluZm8uaAppbmRleCA4OTM2YTM3N2U2NjU0MzAxY2E1YTRjZjQ2NmQzYjc5NWI5OGQzOWQ3
Li5lNmQ5NjU5NTA1NWRiNWZjZjBmMDg2MjE2NjdkZjM0ZjcxNjU4MmRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VsZWN0aW9uSW5mby5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmgKQEAgLTQ4LDEyICs0OCwx
MiBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIFJlbmRlck9iamVjdCogb2JqZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9vYmplY3Q7IH0KLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWludENvbnRhaW5lcjsgfQorICAgIFJl
bmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcGFp
bnRDb250YWluZXI7IH0KICAgICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyT2JqZWN0
KiBtX29iamVjdDsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbV9yZXBhaW50Q29udGFpbmVy
OworICAgIFJlbmRlckJhc2VPYmplY3QqIG1fcmVwYWludENvbnRhaW5lcjsKICAgICBSZW5kZXJP
YmplY3Q6OlNlbGVjdGlvblN0YXRlIG1fc3RhdGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4IDE1OWI1NGIzYjM4ZWI4YzllODdhMGI5
ZWU4MGI2MWEwYzFiM2RiYjcuLmJjOTExM2Q2M2ZkNzM1ZWU2NDk2MjhmZmVlODBkOWYxNTE5Njcy
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBA
IC0yNTAsNyArMjUwLDcgQEAgTGF5b3V0U2l6ZSBSZW5kZXJUYWJsZUNlbGw6Om9mZnNldEZyb21D
b250YWluZXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBMYXlvdXRQb2kKICAgICByZXR1cm4gb2Zm
c2V0OwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclRhYmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0
CitMYXlvdXRSZWN0IFJlbmRlclRhYmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICAvLyBJ
ZiB0aGUgdGFibGUgZ3JpZCBpcyBkaXJ0eSwgd2UgY2Fubm90IGdldCByZWxpYWJsZSBpbmZvcm1h
dGlvbiBhYm91dCBhZGpvaW5pbmcgY2VsbHMsCiAgICAgLy8gc28gd2UgaWdub3JlIG91dHNpZGUg
Ym9yZGVycy4gVGhpcyBzaG91bGQgbm90IGJlIGEgcHJvYmxlbSBiZWNhdXNlIGl0IG1lYW5zIHRo
YXQKQEAgLTMwMSw3ICszMDEsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclRhYmxlQ2VsbDo6Y2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqCiAgICAgcmV0dXJu
IHI7CiB9CiAKLXZvaWQgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHIsIGJvb2wg
Zml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50
KFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHIsIGJvb2wg
Zml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXIgPT0gdGhpcykKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCmlu
ZGV4IDQzODE1NTVjZGQwZDMwNWIwZDcxMTU1ZDFiYmU4Y2M2YjBhMDEwNTAuLjE4YzMyNTEyYzVl
YTJlMGRkZDVjMjE2M2M3ZmU4MWEzNmU4N2U3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTE4Nyw4ICsxODcsOCBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgYm9vbCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoQmFja2dyb3Vu
ZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KikgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25z
dCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gMCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0
dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQmFzZU9i
amVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVS
ZWN0Rm9yUmVwYWludChSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRS
ZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKIAogICAgIGludCBib3JkZXJIYWxmTGVm
dChib29sIG91dGVyKSBjb25zdDsKICAgICBpbnQgYm9yZGVySGFsZlJpZ2h0KGJvb2wgb3V0ZXIp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q29sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKaW5k
ZXggOTdjZDhjYzNlZDA5NTY4ZjY4OTE2MGE1MGRlODY5NDM3MDBjZGUyOS4uMGMwYTA3ZTI4YmNk
N2IxOTNlNGEzNDcwYTA5ODVmOGVkYmJkMTllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDb2wuY3BwCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgUmVuZGVyVGFibGVD
b2w6OmNhbkhhdmVDaGlsZHJlbigpIGNvbnN0CiAgICAgcmV0dXJuIGlzVGFibGVDb2x1bW5Hcm91
cCgpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclRhYmxlQ29sOjpjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QK
K0xheW91dFJlY3QgUmVuZGVyVGFibGVDb2w6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgLy8gRm9y
IG5vdywganVzdCByZXBhaW50IHRoZSB3aG9sZSB0YWJsZS4KICAgICAvLyBGSVhNRTogRmluZCBh
IGJldHRlciB3YXkgdG8gZG8gdGhpcywgZS5nLiwgbmVlZCB0byByZXBhaW50IGFsbCB0aGUgY2Vs
bHMgdGhhdCB3ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ29sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAppbmRl
eCA2MmYzMjg4ZThkNjYzODc0MGY2OWVmNjFkZjY4N2FiYmViYzI0MjFjLi5iNmE5MDg5NjU0NTI1
NzA1NTE2NjYyMmU4NTg4ZmJjMDg5Y2FhOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDb2wuaApAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNM
YXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qg
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3Qg
SW50UmVjdCogPSAwKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAppbmRleCAwZTQyNGJjMTEyYjJmMDBhZGI0NDk5
NTEyYmU5ZWUzNGUzZGQ2OTk0Li5iYWJmYWJiMGJlYjRlZTU4OTIyZmJmMmIyNGRkMDc4ZjRlMWFj
MGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKQEAg
LTE3Niw3ICsxNzYsNyBAQCB2b2lkIFJlbmRlclRhYmxlUm93OjpsYXlvdXQoKQogICAgIHNldE5l
ZWRzTGF5b3V0KGZhbHNlKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJUYWJsZVJvdzo6Y2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclRhYmxlUm93OjpjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAog
ewogICAgIEFTU0VSVChwYXJlbnQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93LmgKaW5kZXggYWZhODM4YzEyNTQ2MWJlNWZjMzU1ZDAyNjVkY2QzMWNlZjZhMmMz
MS4uZmZlMzFhNDFmNGVlMThhOTQ0MmFkOTM3ODY5YzA4MzFiMWQ5ZjQ1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5k
ZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwot
ICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCBM
YXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJhc2VPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0UG9pbnQm
IHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwg
SGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXll
cigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGlzVHJhbnNwYXJlbnQoKSB8fCBoYXNPdmVyZmxv
d0NsaXAoKSB8fCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNIaWRkZW5CYWNrZmFjZSgpIHx8IGhhc01h
c2soKSB8fCBoYXNGaWx0ZXIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwCmluZGV4IGJhZjk1NDc1Y2Q0MGM0MTAwOTM3MDk0ZjRjMzJjOTVhMGI3NGRlMWEuLmM1NWU0
YmFjNjY3ZTA2MWEzNGJlNmQwMmM0NmQ2MGQ5YmY5NjNlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTE2MTgsNyArMTYxOCw3IEBAIExheW91dFJlY3QgUmVu
ZGVyVGV4dDo6bGluZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29uc3QKICAgICByZXR1
cm4gcmVjdDsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QK
K0xheW91dFJlY3QgUmVuZGVyVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyVG9SZXBhaW50ID0gY29udGFpbmluZ0Jsb2NrKCk7CiAKQEAgLTE2MzQsNyAr
MTYzNCw3IEBAIExheW91dFJlY3QgUmVuZGVyVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJl
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpCiAgICAgcmV0dXJuIHJlbmRlcmVyVG9S
ZXBhaW50LT5jbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsK
IH0KIAotTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29u
dGVudCkKK0xheW91dFJlY3QgUmVuZGVyVGV4dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVu
ZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVu
dCkKIHsKICAgICBBU1NFUlQoIW5lZWRzTGF5b3V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuaAppbmRleCBiOTZlY2E3M2YzNmMxNWZmNjIyNWU5OThhMzkxMTA1NTY3MTdm
NDRhLi42MjAxMTZlODA4ODI4NTYyY2YwYmU2MWNmNjIyYzQ0NTIyZGU4M2JhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTk3LDEzICs5NywxMyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25TdGF0ZSBz
KTsKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRl
bnQgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFp
bnQoUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxl
Q29udGVudCA9IHRydWUpOwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJ
bmxpbmVCb3gqLCBpbnQgY2FyZXRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9m
TGluZSA9IDApOwogCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkxlZnQoKSBjb25zdCB7
IHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luTGVmdCgpLCAwLCB2
aWV3KCkpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpblJpZ2h0KCksIDAsIHZp
ZXcoKSk7IH0KIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7Cisg
ICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRl
ckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogCiAgICAgSW5saW5lVGV4dEJv
eCogZmlyc3RUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFRleHRCb3g7IH0KICAgICBJ
bmxpbmVUZXh0Qm94KiBsYXN0VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFRleHRCb3g7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCBkNDk3YTMzYWIx
NGVkMzk4NDcxYTVhMWQ1ZjVmMjVjNGFjYjc1MjQ3Li5kZDZiMmI5MDUxMWU5ZThjNzI1ZDk1YWY0
OWFkOTI0OGMxODFkNTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpsYXlvdXQoKQogICAgIHNldE5l
ZWRzTGF5b3V0KGZhbHNlKTsKIH0KIAotdm9pZCBSZW5kZXJWaWV3OjptYXBMb2NhbFRvQ29udGFp
bmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBi
b29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlD
b250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJWaWV3
OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9y
bVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7
CiAgICAgLy8gSWYgYSBjb250YWluZXIgd2FzIHNwZWNpZmllZCwgYW5kIHdhcyBub3QgMCBvciB0
aGUgUmVuZGVyVmlldywKICAgICAvLyB0aGVuIHdlIHNob3VsZCBoYXZlIGZvdW5kIGl0IGJ5IG5v
dy4KQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFJlbmRlclZpZXc6Om1hcExvY2FsVG9Db250YWlu
ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvbwogICAgICAgICB0
cmFuc2Zvcm1TdGF0ZS5tb3ZlKG1fZnJhbWVWaWV3LT5zY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0
aW9uKCkpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclZpZXc6OnB1c2hNYXBwaW5n
VG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQs
IFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9iamVj
dCogUmVuZGVyVmlldzo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCYXNlT2Jq
ZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNv
bnN0CiB7CiAgICAgLy8gSWYgYSBjb250YWluZXIgd2FzIHNwZWNpZmllZCwgYW5kIHdhcyBub3Qg
MCBvciB0aGUgUmVuZGVyVmlldywKICAgICAvLyB0aGVuIHdlIHNob3VsZCBoYXZlIGZvdW5kIGl0
IGJ5IG5vdy4KQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc0NvbXBvc2l0ZWQoUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAg
cmV0dXJuIG9iamVjdC0+aGFzTGF5ZXIoKSAmJiB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG9iamVj
dCktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOworICAgIHJldHVybiBvYmplY3QtPmhhc0xheWVy
KCkgJiYgdG9SZW5kZXJCYXNlT2JqZWN0KG9iamVjdCktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgp
OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgcmVuZGVyZXJPYnNjdXJlc0JhY2tncm91bmQoUmVu
ZGVyT2JqZWN0KiBvYmplY3QpCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBSZW5kZXJWaWV3Ojpy
ZXBhaW50UmVjdGFuZ2xlSW5WaWV3QW5kQ29tcG9zaXRlZExheWVycyhjb25zdCBMYXlvdXRSZWN0
JiB1ciwKICNlbmRpZgogfQogCi12b2lkIFJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVj
dCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBh
aW50KFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3Qs
IGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gSWYgYSBjb250YWluZXIgd2FzIHNwZWNpZmll
ZCwgYW5kIHdhcyBub3QgMCBvciB0aGUgUmVuZGVyVmlldywKICAgICAvLyB0aGVuIHdlIHNob3Vs
ZCBoYXZlIGZvdW5kIGl0IGJ5IG5vdy4KQEAgLTM5NywyMCArMzk3LDIwIEBAIHZvaWQgUmVuZGVy
Vmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBMCiAgICAgICAgIHJlY3QubW92ZShtX2ZyYW1lVmlldy0+c2Nyb2xsT2Zmc2V0
Rm9yRml4ZWRQb3NpdGlvbigpKTsKICAgICAgICAgCiAgICAgLy8gQXBwbHkgb3VyIHRyYW5zZm9y
bSBpZiB3ZSBoYXZlIG9uZSAoYmVjYXVzZSBvZiBmdWxsIHBhZ2Ugem9vbWluZykuCi0gICAgaWYg
KCFyZXBhaW50Q29udGFpbmVyICYmIG1fbGF5ZXIgJiYgbV9sYXllci0+dHJhbnNmb3JtKCkpCi0g
ICAgICAgIHJlY3QgPSBtX2xheWVyLT50cmFuc2Zvcm0oKS0+bWFwUmVjdChyZWN0KTsKKyAgICBp
ZiAoIXJlcGFpbnRDb250YWluZXIgJiYgbGF5ZXIoKSAmJiBsYXllcigpLT50cmFuc2Zvcm0oKSkK
KyAgICAgICAgcmVjdCA9IGxheWVyKCktPnRyYW5zZm9ybSgpLT5tYXBSZWN0KHJlY3QpOwogfQog
CiB2b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewotICAgIHJlY3Rz
LmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBtX2xheWVyLT5z
aXplKCkpKTsKKyAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50UmVjdChhY2N1bXVsYXRl
ZE9mZnNldCwgbGF5ZXIoKS0+c2l6ZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6YWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAog
ewogICAgIGlmICh3YXNGaXhlZCkKICAgICAgICAgKndhc0ZpeGVkID0gZmFsc2U7Ci0gICAgcXVh
ZHMuYXBwZW5kKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fbGF5ZXItPnNpemUoKSkpOworICAg
IHF1YWRzLmFwcGVuZChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllcigpLT5zaXplKCkpKTsK
IH0KIAogc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJBZnRlclBvc2l0aW9uKFJlbmRlck9i
amVjdCogb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQpCkBAIC00NTUsNyArNDU1LDcgQEAgSW50UmVj
dCBSZW5kZXJWaWV3OjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkg
Y29uc3QKICAgICAgICAgUmVuZGVyU2VsZWN0aW9uSW5mbyogaW5mbyA9IGktPnNlY29uZC5nZXQo
KTsKICAgICAgICAgLy8gUmVuZGVyU2VsZWN0aW9uSW5mbzo6cmVjdCgpIGlzIGluIHRoZSBjb29y
ZGluYXRlcyBvZiB0aGUgcmVwYWludENvbnRhaW5lciwgc28gbWFwIHRvIHBhZ2UgY29vcmRpbmF0
ZXMuCiAgICAgICAgIExheW91dFJlY3QgY3VyclJlY3QgPSBpbmZvLT5yZWN0KCk7Ci0gICAgICAg
IGlmIChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IGluZm8tPnJlcGFp
bnRDb250YWluZXIoKSkgeworICAgICAgICBpZiAoUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENv
bnRhaW5lciA9IGluZm8tPnJlcGFpbnRDb250YWluZXIoKSkgewogICAgICAgICAgICAgRmxvYXRR
dWFkIGFic1F1YWQgPSByZXBhaW50Q29udGFpbmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0
UmVjdChjdXJyUmVjdCkpOwogICAgICAgICAgICAgY3VyclJlY3QgPSBhYnNRdWFkLmVuY2xvc2lu
Z0JvdW5kaW5nQm94KCk7IAogICAgICAgICB9CkBAIC01NjAsNyArNTYwLDcgQEAgdm9pZCBSZW5k
ZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBS
ZW5kZXJPYmplY3QqIGUKICAgICB9CiAKICAgICBpZiAoYmxvY2tSZXBhaW50TW9kZSAhPSBSZXBh
aW50Tm90aGluZykKLSAgICAgICAgbV9sYXllci0+Y2xlYXJCbG9ja1NlbGVjdGlvbkdhcHNCb3Vu
ZHMoKTsKKyAgICAgICAgbGF5ZXIoKS0+Y2xlYXJCbG9ja1NlbGVjdGlvbkdhcHNCb3VuZHMoKTsK
IAogICAgIC8vIE5vdyB0aGF0IHRoZSBzZWxlY3Rpb24gc3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBm
b3IgdGhlIG5ldyBvYmplY3RzLCB3YWxrIHRoZW0gYWdhaW4gYW5kCiAgICAgLy8gcHV0IHRoZW0g
aW4gdGhlIG5ldyBvYmplY3RzIGxpc3QuCkBAIC02NDAsNyArNjQwLDcgQEAgdm9pZCBSZW5kZXJW
aWV3OjpnZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiYgc3RhcnRSZW5kZXJlciwgaW50JiBzdGFy
dE9mZnNldCwgUmUKIAogdm9pZCBSZW5kZXJWaWV3OjpjbGVhclNlbGVjdGlvbigpCiB7Ci0gICAg
bV9sYXllci0+cmVwYWludEJsb2NrU2VsZWN0aW9uR2FwcygpOworICAgIGxheWVyKCktPnJlcGFp
bnRCbG9ja1NlbGVjdGlvbkdhcHMoKTsKICAgICBzZXRTZWxlY3Rpb24oMCwgLTEsIDAsIC0xLCBS
ZXBhaW50TmV3TWludXNPbGQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
aAppbmRleCA4ZTViYzNjNWExZDFjZjMxODcyNmVjY2RmZDNlNmMxYjkzYzY0MzEzLi5kNGQxMzFm
YTM3NzRhMjg0OWFmMjY1MzIyYWMzNTEwYWZkM2ViMTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogCiAgICAgRnJhbWVWaWV3
KiBmcmFtZVZpZXcoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lVmlldzsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCYXNlT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVwYWludFZpZXdSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYsIGJv
b2wgaW1tZWRpYXRlID0gZmFsc2UpOwogICAgIC8vIFJlcGFpbnQgdGhlIHZpZXcsIGFuZCBhbGwg
Y29tcG9zaXRlZCBsYXllcnMgdGhhdCBpbnRlcnNlY3QgdGhlIGdpdmVuIGFic29sdXRlIHJlY3Rh
bmdsZS4KICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSdkIG5ldmVyIGhhdmUgdG8gZG8gdGhpcywg
aWYgYWxsIHJlcGFpbnRzIGFyZSBjb250YWluZXItcmVsYXRpdmUuCkBAIC0xOTMsOCArMTkzLDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0Rml4ZWRQb3NpdGlvbmVkT2JqZWN0c05lZWRMYXlvdXQo
KTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMs
IGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBB
cHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQmFzZU9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFu
c2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlw
LCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2Jq
ZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJhc2VPYmplY3QqIGFuY2Vz
dG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3Jtcywg
VHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNDb2x1bW5z
KGludCBkZXNpcmVkQ29sdW1uQ291bnQpIGNvbnN0IE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcApp
bmRleCBkNjYwNTY2MTUwNzlhZWNmNzY3Y2NjYjk3NDllMTVjNjFhODViZmNmLi5hNTY4Y2JmYjA2
Njg1N2ExMjgyMWQ5ODcxYTFkZDNhY2I2ZDE5NmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKQEAgLTg4LDEy
ICs4OCwxMiBAQCB2b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgfQogfQogCi1MYXlvdXRSZWN0IFJl
bmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5k
ZXJTVkdGb3JlaWduT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJC
YXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5k
ZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29u
dGFpbmVyKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpjb21wdXRlRmxvYXRS
ZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxv
YXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQmFzZU9iamVjdCog
cmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29u
c3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCh0
aGlzLCByZXBhaW50Q29udGFpbmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwogfQpAQCAtMTkwLDEy
ICsxOTAsMTIgQEAgYm9vbCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2RlQXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qIGZpeGVkICovLCBib29s
IC8qIHVzZVRyYW5zZm9ybXMgKi8sIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBw
bHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJT
VkdGb3JlaWduT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJhc2VPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIGJvb2wgLyogZml4ZWQgKi8sIGJvb2wgLyogdXNlVHJhbnNmb3JtcyAq
LywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5v
dCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9j
YWxUb0NvbnRhaW5lcih0aGlzLCByZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgd2Fz
Rml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6
OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2Vz
dG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0
IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRh
aW5lcihjb25zdCBSZW5kZXJCYXNlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9t
ZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBv
cnQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIodGhpcywgYW5jZXN0b3JUb1N0b3BBdCwgZ2VvbWV0
cnlNYXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdGb3JlaWduT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ZvcmVpZ25PYmplY3QuaAppbmRleCA4MGRkZmQ2MzA4ZGQ4ZjYzOWExNDVkMmQwNTMzZjAy
NGI2ZjJiY2NjLi5hNzRkMDFmOGMzMWMyZDIyMzgxZjg2OTY5ODAxOGViYzAzMWVkZTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25P
YmplY3QuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAotICAgIHZpcnR1YWwgTGF5b3V0
UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJl
Y3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9h
dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJl
cGFpbnQoUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9v
bCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVy
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CkBA
IC01NCw4ICs1NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29u
c3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdFBvaW50JiBw
b2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhp
dFRlc3RBY3Rpb24pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ZvcmVpZ25PYmpl
Y3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxU
b0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBm
aXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVy
RmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0
OwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVy
KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9t
ZXRyeU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJh
bnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5
Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNv
bnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCYXNl
T2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9uZWVkc1RyYW5zZm9y
bVVwZGF0ZSA9IHRydWU7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oCmluZGV4IGI5MGFiNTA4MTA0MTEz
ODQxNDFjMzIzODk0NzZlM2M4NDQzNDA2NWIuLjY5NTE5M2NmNjA5MjA1ZTc3MDZjMTVhYTk3Y2Nk
ODY1OTRiMzcwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHR3JhZGllbnRTdG9wLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdHcmFkaWVudFN0b3AuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VGhpcyBvdmVycmlkZXMgYXJlIG5lZWRlZCB0byBwcmV2ZW50IEFTU0VSVHMgb24gPHN2Zz48c3Rv
cCAvPjwvc3ZnPgogICAgIC8vIFJlbmRlck9iamVjdCdzIGRlZmF1bHQgaW1wbGVtZW50YXRpb25z
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNDAwCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxv
d1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KikgY29uc3QgeyByZXR1cm4gTGF5
b3V0UmVjdCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KFJlbmRlckJhc2VPYmplY3QqKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7
IH0KICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0
dXJuIEZsb2F0UmVjdCgpOyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdC
b3goKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQogICAgIHZpcnR1YWwgRmxvYXRSZWN0
IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SGlkZGVuQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0hpZGRlbkNvbnRhaW5lci5oCmluZGV4IGYyNmM1ZmM2MWEzN2Y4MjA3ZDRkNjQ5YmU2ODA5ZDUy
YTJmODgyNWYuLmY4OTZlNzJkMTVkYzlkZGZiNmVmMzFhNGNkYmI2OGQ3YTcwZTk3MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFp
bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5D
b250YWluZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lk
IHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgCi0gICAgdmlydHVh
bCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KikgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgdmlydHVhbCBMYXlv
dXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJhc2VPYmplY3QqKSBj
b25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVz
dFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3Bw
CmluZGV4IDA1N2JmZGEwMDdlMmM2ODQzNDllM2M3M2ZlYjg2YjAxY2YzNWQzMGEuLjIyYzgxMzAx
MmQzZTQ3ZTJmNzg0YjBiZDAxNmU3ZjYwMTg1Mzg4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKQEAgLTY5LDIyICs2OSwyMiBAQCBG
bG9hdFJlY3QgUmVuZGVyU1ZHSW5saW5lOjpyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygp
IGNvbnN0CiAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNW
R0lubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclNWR0lubGluZTo6
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lcik7CiB9CiAKLXZvaWQg
UmVuZGVyU1ZHSW5saW5lOjpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBm
aXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHSW5saW5lOjpjb21wdXRlRmxvYXRSZWN0Rm9yUmVw
YWludChSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFp
bnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1
dGVGbG9hdFJlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRSZWN0
LCBmaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHSW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVy
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qIHVzZVRyYW5z
Zm9ybXMgKi8sIGJvb2wgLyogZml4ZWQgKi8sIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0
ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBS
ZW5kZXJTVkdJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQmFzZU9iamVjdCogcmVw
YWludENvbnRhaW5lciwgYm9vbCAvKiB1c2VUcmFuc2Zvcm1zICovLCBib29sIC8qIGZpeGVkICov
LCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90
LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2Nh
bFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCB3YXNG
aXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHSW5saW5lOjpwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3Rv
cEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5kZXJP
YmplY3QqIFJlbmRlclNWR0lubGluZTo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJCYXNlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0
cnlNYXApIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5n
VG9Db250YWluZXIodGhpcywgYW5jZXN0b3JUb1N0b3BBdCwgZ2VvbWV0cnlNYXApOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKaW5kZXggNTMz
YTk5YWE2YjAxNzdlODdiYThjNzA0ZmExMTFiMTFiNzM2YzQyOC4uMzNhMjRhZmFlOTRlMTk1Y2Ri
NGYzNjBkNTkyODBmNDI4NGU1NTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZS5oCkBAIC00NSwxMCArNDUsMTAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3Q7CiAgICAgdmlydHVhbCBG
bG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRl
JiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdh
c0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hN
YXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9T
dG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0
IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRD
b250YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVw
YWludChSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29s
IGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFp
bmVyKFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3Jt
cywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9
IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJCYXNlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9v
bCogd2FzRml4ZWQpIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAppbmRleCAxOGU3ZWNhY2U3
YTNhM2M2OGQ4ZjVmNDA0ODhmMmY2ZDkyYjU0ZTE1Li42YmY2MWI2YzEzZTBhYmRlMTY1ZmUzNWMz
NzBhODQ5YjI2OWE2ZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lmIEVOQUJM
RShTVkcpCiAjaW5jbHVkZSAiUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCIKIAorI2luY2x1ZGUgIlJl
bmRlckJhc2VPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1
ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VzQ2FjaGUuaCIKQEAgLTQ1LDIy
ICs0NiwyMiBAQCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6UmVuZGVyU1ZHTW9kZWxPYmplY3QoU1ZH
U3R5bGVkRWxlbWVudCogbm9kZSkKIHsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9i
amVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyKTsKIH0KIAotdm9p
ZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3Qs
IGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0Ojpjb21wdXRlRmxv
YXRSZWN0Rm9yUmVwYWludChSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9h
dFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIFNWR1JlbmRlclN1
cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIs
IHJlcGFpbnRSZWN0LCBmaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om1h
cExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IGJvb2wgLyogZml4ZWQgKi8sIGJvb2wgLyogdXNlVHJhbnNmb3JtcyAqLywgVHJhbnNmb3JtU3Rh
dGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4
ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVy
KFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgLyogZml4ZWQgKi8sIGJv
b2wgLyogdXNlVHJhbnNmb3JtcyAqLywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBB
cHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZH
UmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0aGlzLCByZXBhaW50Q29udGFpbmVy
LCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJl
bmRlclNWR01vZGVsT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0
cnlNYXApIGNvbnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR01vZGVsT2JqZWN0Ojpw
dXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJhc2VPYmplY3QqIGFuY2VzdG9yVG9T
dG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKIHsKICAgICByZXR1
cm4gU1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcih0aGlzLCBhbmNlc3Rv
clRvU3RvcEF0LCBnZW9tZXRyeU1hcCk7CiB9CkBAIC02OCw3ICs2OSw3IEBAIGNvbnN0IFJlbmRl
ck9iamVjdCogUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29u
c3QgUmVuZGVyQm94CiAvLyBDb3BpZWQgZnJvbSBSZW5kZXJCb3gsIHRoaXMgbWV0aG9kIGxpa2Vs
eSByZXF1aXJlcyBmdXJ0aGVyIHJlZmFjdG9yaW5nIHRvIHdvcmsgZWFzaWx5IGZvciBib3RoIFNW
RyBhbmQgQ1NTIEJveCBNb2RlbCBjb250ZW50LgogLy8gRklYTUU6IFRoaXMgbWF5IGFsc28gbmVl
ZCB0byBtb3ZlIGludG8gU1ZHUmVuZGVyU3VwcG9ydCBhcyB0aGUgUmVuZGVyQm94IHZlcnNpb24g
ZGVwZW5kcwogLy8gb24gYm9yZGVyQm91bmRpbmdCb3goKSB3aGljaCBTVkcgUmVuZGVyQm94IHN1
YmNsYXNlcyAobGlrZSBTVkdSZW5kZXJCbG9jaykgZG8gbm90IGltcGxlbWVudC4KLUxheW91dFJl
Y3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRQb2ludCopIGNvbnN0CitMYXlv
dXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5k
ZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRQb2ludCopIGNvbnN0CiB7CiAg
ICAgTGF5b3V0UmVjdCBib3ggPSBlbmNsb3NpbmdMYXlvdXRSZWN0KHJlcGFpbnRSZWN0SW5Mb2Nh
bENvb3JkaW5hdGVzKCkpOwogICAgIGFkanVzdFJlY3RGb3JPdXRsaW5lQW5kU2hhZG93KGJveCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVs
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmgKaW5kZXggMGQ4MTkyNjA5M2Y2YmY3NGVkYzA4YzQ4YzI4Nzk3NzRhNDRiMmQ2MC4uZWVh
NDk5MWQxNGE1Y2JmYjFiZDkwYzk3MWUxZWFhNzYzYzcwODI0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaApAQCAtNTEsMTUg
KzUxLDE1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZp
eGVkID0gZmFsc2UpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRz
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0
UG9pbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQoUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJhc2VPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29u
c3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRl
ckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFBvaW50KikgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCi0g
ICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNm
b3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwg
Ym9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVj
dCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5j
ZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlD
b250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0g
MCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9D
b250YWluZXIoY29uc3QgUmVuZGVyQmFzZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVy
R2VvbWV0cnlNYXAmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmNwcAppbmRleCBjMDk0NTdlNjFiMWI3NTkxNDczNDdkZmMwMDU4NTljNzIxMzA1ODRkLi5m
OGFjYWExN2JlODljZDY5OTEzYzBhZDAzZWE0ZmExMGExNmIzOWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTM2OSwxMiArMzY5LDEy
IEBAIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgUmVuZGVyU1ZHUm9vdDo6bG9jYWxUb1BhcmVudFRy
YW5zZm9ybSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbG9jYWxUb1BhcmVudFRyYW5zZm9ybTsKIH0K
IAotTGF5b3V0UmVjdCBSZW5kZXJTVkdSb290OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJl
Y3QgUmVuZGVyU1ZHUm9vdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQmFz
ZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVy
U3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRh
aW5lcik7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVw
YWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVG
bG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZs
b2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gQXBwbHkg
b3VyIGxvY2FsIHRyYW5zZm9ybXMgKGV4Y2VwdCBmb3IgeC95IHRyYW5zbGF0aW9uKSwgdGhlbiBv
dXIgc2hhZG93LCAKICAgICAvLyBhbmQgdGhlbiBjYWxsIFJlbmRlckJveCdzIG1ldGhvZCB0byBo
YW5kbGUgYWxsIHRoZSBub3JtYWwgQ1NTIEJveCBtb2RlbCBiaXRzCkBAIC0zOTUsNyArMzk1LDcg
QEAgdm9pZCBSZW5kZXJTVkdSb290Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnQKIC8vIFRoaXMgbWV0aG9kIGV4cGVjdHMgbG9jYWwg
Q1NTIGJveCBjb29yZGluYXRlcy4KIC8vIENhbGxlcnMgd2l0aCBsb2NhbCBTVkcgdmlld3BvcnQg
Y29vcmRpbmF0ZXMgc2hvdWxkIGZpcnN0IGFwcGx5IHRoZSBsb2NhbFRvQm9yZGVyQm94VHJhbnNm
b3JtCiAvLyB0byBjb252ZXJ0IGZyb20gU1ZHIHZpZXdwb3J0IGNvb3JkaW5hdGVzIHRvIGxvY2Fs
IENTUyBib3ggY29vcmRpbmF0ZXMuCi12b2lkIFJlbmRlclNWR1Jvb3Q6Om1hcExvY2FsVG9Db250
YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQs
IGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBs
eUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNW
R1Jvb3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYgdHJh
bnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29u
c3QKIHsKICAgICBBU1NFUlQoIWZpeGVkKTsgLy8gV2Ugc2hvdWxkIGhhdmUgbm8gZml4ZWQgY29u
dGVudCBpbiB0aGUgU1ZHIHJlbmRlcmluZyB0cmVlLgogICAgIEFTU0VSVCh1c2VUcmFuc2Zvcm1z
KTsgLy8gbWFwcGluZyBhIHBvaW50IHRocm91Z2ggU1ZHIHcvbyByZXNwZWN0aW5nIHRyYXNuZm9y
bXMgaXMgdXNlbGVzcy4KQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6Om1h
cExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
CiAgICAgUmVuZGVyUmVwbGFjZWQ6Om1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5l
ciwgZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZs
aXAsIHdhc0ZpeGVkKTsKIH0KIAotY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdSb290Ojpw
dXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3Rv
clRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBS
ZW5kZXJPYmplY3QqIFJlbmRlclNWR1Jvb3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3Qg
UmVuZGVyQmFzZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdl
b21ldHJ5TWFwKSBjb25zdAogewogICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHVzaE1hcHBp
bmdUb0NvbnRhaW5lcihhbmNlc3RvclRvU3RvcEF0LCBnZW9tZXRyeU1hcCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4IDlhYTdlN2MxODZh
ZTQ4NzY5MGM0MGFhYzkwNWZmNWNjMGQwMjM3NDQuLjk5OTRmNzM5NjI2OTdlYTkzYWMwZWYxNWU1
YWNjMzg2MzI1NGRmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5oCkBAIC05MiwxMSArOTIsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9v
bCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25z
dCBIaXRUZXN0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIExh
eW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxv
YXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
RmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3Q7CisgICAgdmlydHVhbCBM
YXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJhc2VPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRS
ZWN0Rm9yUmVwYWludChSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJl
Y3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBt
YXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlD
b250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0g
MCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9D
b250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJl
bmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250
YWluZXIoUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zv
cm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90
ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZp
cnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJl
bmRlckJhc2VPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VGV4dC5jcHAKaW5kZXggZjUxNGUyMTU3YzQ1YzY5YWY1MzZhZDA2MTM3YjM3NzgzNDk0OGE5NC4u
OTU5MmRmOTRhYTA0ZWU1NGY5Nzc1NjM1NmY0N2Q2OWY4YmY0NmU5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC05NCwyOSArOTQsMjkg
QEAgY29uc3QgUmVuZGVyU1ZHVGV4dCogUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4
dEFuY2VzdG9yKGNvbnN0IFJlbmRlck9iamUKICAgICByZXR1cm4gdG9SZW5kZXJTVkdUZXh0KHN0
YXJ0KTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJTVkdUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QK
K0xheW91dFJlY3QgUmVuZGVyU1ZHVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
UmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICByZXR1cm4g
U1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQodGhpcywgcmVw
YWludENvbnRhaW5lcik7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZVJlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0
JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdUZXh0Ojpjb21wdXRlUmVj
dEZvclJlcGFpbnQoUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVj
dCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3Qg
PSByZWN0OwogICAgIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIs
IHJlcGFpbnRSZWN0LCBmaXhlZCk7CiAgICAgcmVjdCA9IGVuY2xvc2luZ0xheW91dFJlY3QocmVw
YWludFJlY3QpOwogfQogCi12b2lkIFJlbmRlclNWR1RleHQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3Qm
IHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdUZXh0Ojpjb21w
dXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIFNWR1Jl
bmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250
YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHVGV4dDo6bWFw
TG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
Ym9vbCAvKiBmaXhlZCAqLywgYm9vbCAvKiB1c2VUcmFuc2Zvcm1zICovLCBUcmFuc2Zvcm1TdGF0
ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29sKiB3YXNGaXhl
ZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJC
YXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qIGZpeGVkICovLCBib29sIC8qIHVz
ZVRyYW5zZm9ybXMgKi8sIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250
YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIFNWR1JlbmRlclN1
cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIodGhpcywgcmVwYWludENvbnRhaW5lciwgdHJhbnNm
b3JtU3RhdGUsIHdhc0ZpeGVkKTsKIH0KIAotY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdU
ZXh0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBh
bmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citj
b25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR1RleHQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIo
Y29uc3QgUmVuZGVyQmFzZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlN
YXAmIGdlb21ldHJ5TWFwKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0Ojpw
dXNoTWFwcGluZ1RvQ29udGFpbmVyKHRoaXMsIGFuY2VzdG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFw
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5k
ZXggOTNjYjY0ZjhmYjJlNzRlZWIyODZhZWJiNDYyZDc5ZjJmMWJjZDZkZC4uYTUyYTA0MmE4OTQ1
YjdlY2RhNjc5ZWJkNzFiYzAwYmNhNThlMWQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKQEAgLTcxLDEyICs3MSwxMiBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3
YXNGaXhlZCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFs
c2UpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBm
aXhlZCA9IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCYXNlT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVy
QmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZh
bHNlKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJv
b2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBs
eUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBj
b25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94
TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQmFzZU9iamVjdCog
cmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zv
cm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBi
b29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0
KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJhc2VPYmplY3QqIGFuY2VzdG9y
VG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFk
ZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAw
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0KikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKaW5kZXggMGJm
YjBhNTI3OWM4ODg0OTQ2NWVkZjJmOTUxYmY4YWUwMzQ0ZGFjMS4uZDJjNTQ3NDJjNmFmMzBjMzVk
NTc2OWRjM2Q3N2MyYTk3ZGYxMWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC00Niw3ICs0Niw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotTGF5b3V0UmVjdCBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCitMYXlvdXRSZWN0IFNWR1JlbmRlclN1cHBvcnQ6
OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0
LCBSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKQogewogICAgIC8vIFJldHVybiBl
YXJseSBmb3IgYW55IGNhc2VzIHdoZXJlIHdlIGRvbid0IGFjdHVhbGx5IHBhaW50CiAgICAgaWYg
KG9iamVjdC0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIW9iamVjdC0+ZW5j
bG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKQEAgLTU5LDcgKzU5LDcgQEAgTGF5
b3V0UmVjdCBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChj
b25zdCBSZW5kZXJPYmplY3QqIG8KICAgICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdChyZXBh
aW50UmVjdCk7CiB9CiAKLXZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZv
clJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKQor
dm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChjb25zdCBS
ZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyQmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwg
RmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkKIHsKICAgICBjb25zdCBTVkdSZW5k
ZXJTdHlsZSogc3ZnU3R5bGUgPSBvYmplY3QtPnN0eWxlKCktPnN2Z1N0eWxlKCk7CiAgICAgaWYg
KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdyA9IHN2Z1N0eWxlLT5zaGFkb3coKSkKQEAgLTcxLDcg
KzcxLDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWlu
dChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmUKICAgICBvYmplY3QtPnBhcmVudCgpLT5j
b21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCByZXBhaW50UmVjdCwg
Zml4ZWQpOwogfQogCi12b2lkIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIo
Y29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIGJvb2wqIHdhc0ZpeGVk
KQordm9pZCBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRl
ck9iamVjdCogb2JqZWN0LCBSZW5kZXJCYXNlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFu
c2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIGJvb2wqIHdhc0ZpeGVkKQogewogICAgIHRyYW5z
Zm9ybVN0YXRlLmFwcGx5VHJhbnNmb3JtKG9iamVjdC0+bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
KTsKIApAQCAtODYsNyArODYsNyBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9D
b250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlckJveAogICAgIHBhcmVu
dC0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBmYWxzZSwgdHJ1ZSwgdHJh
bnNmb3JtU3RhdGUsIFJlbmRlck9iamVjdDo6RG9Ob3RBcHBseUNvbnRhaW5lckZsaXAsIHdhc0Zp
eGVkKTsKIH0KIAotY29uc3QgUmVuZGVyT2JqZWN0KiBTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBSZW5kZXJC
b3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21l
dHJ5TWFwKQorY29uc3QgUmVuZGVyT2JqZWN0KiBTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGlu
Z1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBSZW5kZXJCYXNl
T2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXAp
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChhbmNlc3RvclRvU3RvcEF0LCBhbmNlc3RvclRvU3RvcEF0
ICE9IG9iamVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyU3VwcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJTdXBwb3J0LmgKaW5kZXggZmE5NjBmMDVlNjllMDJhMWE1ZWJiMTgyMjA2NjJmYjdhNzU3OTA4
My4uZjk3ZTY2YzgwNjM3YWRkMDA2ZDMzODMyNmFkZWFhZTg4ZmFhODFhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmgKQEAgLTM1LDYgKzM1
LDcgQEAgY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBSZW5kZXJC
b3hNb2RlbE9iamVjdDsKIGNsYXNzIFJlbmRlckdlb21ldHJ5TWFwOworY2xhc3MgUmVuZGVyQmFz
ZU9iamVjdDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3Mg
UmVuZGVyU1ZHUm9vdDsKQEAgLTYyLDEwICs2MywxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgcGFpbnRJbmZvSW50ZXJzZWN0c1JlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbG9jYWxS
ZXBhaW50UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRyYW5zZm9ybSwgY29uc3Qg
UGFpbnRJbmZvJik7CiAKICAgICAvLyBJbXBvcnRhbnQgZnVuY3Rpb25zIHVzZWQgYnkgbmVhcmx5
IGFsbCBTVkcgcmVuZGVyZXJzIGNlbnRyYWxpemluZyBjb29yZGluYXRlIHRyYW5zZm9ybWF0aW9u
cyAvIHJlcGFpbnQgcmVjdCBjYWxjdWxhdGlvbnMKLSAgICBzdGF0aWMgTGF5b3V0UmVjdCBjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqLCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7Ci0gICAgc3RhdGljIHZvaWQgY29tcHV0ZUZs
b2F0UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiwgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQpOwotICAgIHN0YXRp
YyB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgYm9vbCogd2Fz
Rml4ZWQgPSAwKTsKLSAgICBzdGF0aWMgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0
KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpOworICAgIHN0YXRpYyBMYXlv
dXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCos
IFJlbmRlckJhc2VPYmplY3QqIHJlcGFpbnRDb250YWluZXIpOworICAgIHN0YXRpYyB2b2lkIGNv
bXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCosIFJlbmRlckJhc2VP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQpOworICAgIHN0
YXRpYyB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgUmVuZGVy
QmFzZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBib29sKiB3YXNG
aXhlZCA9IDApOworICAgIHN0YXRpYyBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9D
b250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyQmFzZU9iamVjdCogYW5j
ZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKTsKIAogICAgIC8vIFNoYXJlZCBiZXR3
ZWVuIFNWRyByZW5kZXJlcnMgYW5kIHJlc291cmNlcy4KICAgICBzdGF0aWMgdm9pZCBhcHBseVN0
cm9rZVN0eWxlVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlKiwg
Y29uc3QgUmVuZGVyT2JqZWN0Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152337</attachid>
            <date>2012-07-13 14:41:50 -0700</date>
            <delta_ts>2012-07-14 17:29:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86022-20120713174149.patch</filename>
            <type>text/plain</type>
            <size>142325</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhYTg4ODQ0NzBlMmE4ZWJiZjQ3Mzg3ZWVmZmIwMWU0ZGUzZDAyMzc5Li43
NzBhNTBkMTQxMjZkODJiMjFkYjcxYTgwOTY3MTE0YTgyYjMzMGQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjI3IEBACisyMDEyLTA3LTEzICBGbG9yaW4gTWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmVmYWN0b3IgbGF5ZXItcmVsYXRlZCBsb2dpYyBvdXQgb2YgUmVu
ZGVyQm94TW9kZWxPYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg2MDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBleHRyYWN0cyBsYXllci1yZWxhdGVkIGxvZ2ljIGludG8gYSBk
ZWRpY2F0ZWQgY2xhc3MKKyAgICAgICAgKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QpIGFuZCBy
ZWZhY3RvcnMgZGVwZW5kZW50IGNvZGUgdG8gbWFrZSB1c2UKKyAgICAgICAgb2YgdGhlIG5ldyB0
eXBlIGluc3RlYWQgb2YgUmVuZGVyQm94TW9kZWxPYmplY3QuIFRoaXMgaXMgaW4gcHJlcGFyYXRp
b24KKyAgICAgICAgb2YgYWRkaW5nIG5vbi1SZW5kZXJCb3hNb2RlbE9iamVjdCBsYXllciBzdXBw
cnQuCisKKyAgICAgICAgQWxsIG1ldGhvZHMgdGhhdCB3ZXJlIHVzaW5nIFJlbmRlckJveE1vZGVs
T2JqZWN0IGZvciBsYXllci1yZWxhdGVkCisgICAgICAgIGZ1bmN0aW9uYWxpdHkgYXJlIHVwZGF0
ZWQgdG8gd29yayB3aXRoIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QKKyAgICAgICAgaW5zdGVh
ZCAoYSBSZW5kZXJMYXllcidzIHJlbmRlcmVyKCkgY2FuIG5vIGxvbmdlciBiZSBhc3N1bWVkIHRv
IGJlCisgICAgICAgIGEgUmVuZGVyQm94TW9kZWxPYmplY3QpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0czogcmVmYWN0b3Jpbmcgd2l0aCBubyBiZWhhdmlvciBjaGFuZ2VzLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVuZGVy
aW5nL0xheW91dFJlcGFpbnRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXlv
dXRSZXBhaW50ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCUi5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6c2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFJlbmRlckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6b3V0bGluZUJv
dW5kc0ZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjptYXBMb2NhbFRv
Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlY3RG
b3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6ZW5jbG9zaW5nRmxvYXRQ
YWludGluZ0xheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAg
IChSZW5kZXJCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVs
T2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3hNb2RlbE9iamVjdDo6flJlbmRlckJveE1vZGVsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rv
cik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmg6CisgICAgICAgIChS
ZW5kZXJHZW9tZXRyeU1hcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6cmVjdFdpdGhPdXRsaW5l
Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNvbXB1dGVSZWN0
Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9D
b250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAg
IChSZW5kZXJJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpjb21wdXRlUmVwYWludFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6
OmNoZWNrQ29udGFpbmluZ0Jsb2NrQ2hhaW5Gb3JQYWdpbmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzUG9zaXRpb25lZENvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
aGFzQW5jZXN0b3JXaXRoRmlsdGVyT3V0c2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6c2Nyb2xsVG8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlcGFpbnRJ
bmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJlbmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpyZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZW5kZXJl
cik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXBhaW50T25Db21wb3NpdGlu
Z0NoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVp
cmVzQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnJlYXNvbkZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdE1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpzZWxl
Y3Rpb25SZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJr
ZXIuaDoKKyAgICAgICAgKFJlbmRlckxpc3RNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphZGRDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjphZGRMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0OjpyZW1vdmVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
Ojptb3ZlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6ZmluZE5leHRM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmVuY2xvc2luZ0xheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBh
aW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6Y29udGFpbmVyRm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OnJlcGFpbnRVc2luZ0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OnJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZXBhaW50
UmVjdGFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cmVwYWludEFmdGVy
TGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZWN0V2l0
aE91dGxpbmVGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmFkanVzdFN0eWxlRGlmZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVyUXVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2FsVG9Db250YWluZXJQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OmlzQ29tcG9zaXRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzVHJh
bnNmb3JtYWJsZU9iamVjdCk6CisgICAgICAgIChSZW5kZXJPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UmVwbGFjZWQ6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclJlcGxhY2VkOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAgIChSZW5kZXJSZXBsYWNlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNlbGVjdGlvbkluZm9CYXNlOjpyZXBhaW50Q29udGFpbmVyKToKKyAgICAgICAg
KFJlbmRlclNlbGVjdGlvbkluZm9CYXNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxs
Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZUNlbGwuaDoKKyAgICAgICAgKFJlbmRlclRhYmxlQ2VsbCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29sOjpj
bGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ29sLmg6CisgICAgICAgIChSZW5kZXJUYWJsZUNvbCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlUm93
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlUm93Lmg6CisgICAgICAgIChSZW5kZXJUYWJsZVJvdyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0Lmg6CisgICAgICAgIChSZW5kZXJUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6
On5SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3Q6OmRlc3Ryb3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjplbnN1cmVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpoYXNTZWxmUGFpbnRpbmdMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6c3R5bGVXaWxsQ2hh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OnN0eWxl
RGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
OjpsYXllcik6CisgICAgICAgIChXZWJDb3JlOjp0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclZpZXc6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVmlldzo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjppc0Nv
bXBvc2l0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JS
ZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJWaWV3OjpzZWxlY3Rpb25Cb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6
OmNsZWFyU2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorICAg
ICAgICAoUmVuZGVyVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6
OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6cHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0
Lmg6CisgICAgICAgIChSZW5kZXJTVkdGb3JlaWduT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJ
bmxpbmU6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0lubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWluZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmg6CisgICAgICAgIChSZW5kZXJTVkdJbmxpbmUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0Ojpjb21wdXRl
RmxvYXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9i
amVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdN
b2RlbE9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaDoKKyAgICAgICAgKFJlbmRlclNW
R01vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZsb2F0
UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6bWFwTG9j
YWxUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290OjpwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3Qu
aDoKKyAgICAgICAgKFJlbmRlclNWR1Jvb3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0
Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4
dDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdUZXh0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKFJlbmRlclNWR1RleHQpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5nVG9Db250YWlu
ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdSZW5kZXJTdXBwb3J0KToKKwogMjAxMi0wNy0xMyAg
Sm9zaHVhIE5ldHRlcmZpZWxkICA8am5ldHRlcmZpZWxkQHJpbS5jb20+CiAKICAgICAgICAgW0Js
YWNrQmVycnldIFVwZGF0ZSBhYm91dDoqIHBhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGNj
ZjMyNDJiNTU0ZDgwZTFhMmFjMGNhYTBmNjYwZDczYTJjMWUwODMuLjQ5YWZiMDlkNTE1OTMzMzIx
NDI4ZDlhYzYyYjQ4ZmE2OTMxZTdkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNDIwLDYg
KzE0MjAsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZS5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNw
cAogICAgIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKyAgICByZW5kZXJpbmcvUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdC5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAK
ICAgICByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggODI3ODI4ZDViZDg0MGEyOWM2
NDA3NjFhYWFhYjQzMjkxN2VkODNhMS4uZDk4MDNiMDk3M2U5MWYxZjc0NTI2MjQ0YTRkZmJjYTY1
MDM1OTQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zOTg3LDYgKzM5ODcs
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmggXAogCVNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZGVvLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBmZjY4MWVhNTkwNTg3OWY3ZGEyNjExNDUx
ODFlOWRmYmIwZGU5MjFkLi5jY2RiZjliZmIwYzdmOGY5MTVlY2EyNGVjNmFlMTFiYzFlNzdjZTlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKQEAgLTEzMzQsNiArMTMzNCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIFwKICAgICByZW5kZXJpbmcv
UmVuZGVyVGV4dEZyYWdtZW50LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBc
CisgICAgcmVuZGVyaW5nL1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuY3BwIFwKICAgICByZW5k
ZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgXApAQCAtMjU2NCw2ICsyNTY1LDcg
QEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oIFwKICAg
ICByZW5kZXJpbmcvUmVuZGVyVGV4dC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBc
CisgICAgcmVuZGVyaW5nL1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuaCBcCiAgICAgcmVuZGVy
aW5nL1JlbmRlclRyZWVBc1RleHQuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclZpZGVvLmggXAog
ICAgIHJlbmRlcmluZy9SZW5kZXJWaWV3LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBlYTVj
NmM1Y2FmMzM2ZTVkMzRlOTZjNDQ0NDY1ZjViN2I5ZmY5ZWVkLi5jYWI3YzA0MzVjZWY2MzE3ZmUw
NzBkZGE1NDJiOTg0NWUyMWNhMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTA5NSw3ICsx
MDk1LDcgQEAgX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGUyMXZpc2l0ZWREZXBlbmRlbnRDb2xv
ckVpCiBfX1pOSzdXZWJDb3JlMTFTY3JpcHRWYWx1ZTlnZXRTdHJpbmdFUE4zSlNDOUV4ZWNTdGF0
ZUVSTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTRlbmNsb3NpbmdM
YXllckV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNWxvY2FsVG9BYnNvbHV0ZUVSS05T
XzEwRmxvYXRQb2ludEViYgotX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MjBsb2NhbFRvQ29u
dGFpbmVyUXVhZEVSS05TXzlGbG9hdFF1YWRFUE5TXzIwUmVuZGVyQm94TW9kZWxPYmplY3RFYlBi
CitfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyMGxvY2FsVG9Db250YWluZXJRdWFkRVJLTlNf
OUZsb2F0UXVhZEVQTlNfMjVSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0RWJQYgogX19aTks3V2Vi
Q29yZTEyUmVuZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEViCiBfX1pOSzdXZWJD
b3JlMTJSZW5kZXJPYmplY3QzOXBpeGVsU25hcHBlZEFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVj
dEV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3Q3Y2hpbGRBdEVqCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggOTAzMDQzMThjNDgyZTJhODhiYTc5M2U1NDAyNGI4ZGNmOWU0NTMyNi4uYjY4YjA2OWY1
MzY5OTcxMTBiOTFjMjBlN2IyZWZiM2RmZTA4ZTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTY0
LDYgKzU2NCw3IEBACiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclBhcnQuaCcsCiAgICAg
ICAgICAgICAncmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgnLAogICAgICAgICAgICAgJ3JlbmRl
cmluZy9SZW5kZXJUZXh0LmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJWaWV3LmgnLAogICAgICAgICAgICAg
J3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaCcsCkBAIC00ODA2LDYgKzQ4MDcsNyBAQAogICAgICAg
ICAgICAgJ3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oJywKICAgICAgICAgICAgICdyZW5kZXJp
bmcvUmVuZGVyVGhlbWVXaW5DRS5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJU
aGVtZVdpbkNFLmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3Bw
JywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwJywKICAgICAgICAgICAg
ICdyZW5kZXJpbmcvUmVuZGVyVmlkZW8uaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGJjZjdlYTYyMGYzNzE5ODgzMmFiYzVkOGI0YTFjNjQ2
ZTgxOTVlNDIuLmU4OTAwOGUwYTU2ZmEzNTY2MDRiNDIyNzBkZTI3YTJiZGViNTNiZjcgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00MzY0NSw2
ICs0MzY0NSw2MiBAQAogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQk8L0ZpbGU+CiAJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVi
dWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVs
ZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIgorCQkJ
CT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdc
UmVuZGVyVHJlZUFzVGV4dC5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDc5MmM1MGIwZjU0ZWNmN2M1NzJjY2FmNWY5YTNkYzM1NWM2NTJlYTIuLmFjOGVhYmY0ODgwNTZk
MDIzN2NjYzM2MTcxMjc4M2M0NjE3MDkwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMTMsNiArMTAxMyw4IEBACiAJCTNB
QjAyRDJCMTJENEY5MTYwMEZCQjY5NCAvKiBTdG9yYWdlVHJhY2tlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQUIwMkQyOTEyRDRGOTE2MDBGQkI2
OTQgLyogU3RvcmFnZVRyYWNrZXIuY3BwICovOyB9OwogCQkzQUMzNjgwMDEyRUY3QTA5MDA2QTNE
NkYgLyogU3RvcmFnZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDNBQzM2N0ZFMTJFRjdBMDkwMDZBM0Q2RiAvKiBTdG9yYWdlVHJh
Y2tlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTNBQzY0OEIyMTI5RTE0NjUwMEMzRUIyNSAvKiBFZGl0aW5nQm91bmRhcnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNBQzY0OEIxMTI5RTE0
NjUwMEMzRUIyNSAvKiBFZGl0aW5nQm91bmRhcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzQzI0NEZFQUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gM0MyNDRGRTRBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkzQzI0NEZFQkEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
QzI0NEZFNUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAg
Ki87IH07CiAJCTQxMDAyQ0NEMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NC
MEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLzsgfTsKIAkJNDEwMDJD
Q0UwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkNDQzBGNjZFREVGMDA5RTY2
MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLzsgfTsKIAkJNDEwQjdFNzIxMDQ1RkFCMDAw
RDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01l
c3NhZ2VFdmVudEN1c3RvbS5jcHAgKi87IH07CkBAIC04MDQ4LDYgKzgwNTAsOCBAQAogCQkzQUIw
MkQyOTEyRDRGOTE2MDBGQkI2OTQgLyogU3RvcmFnZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzQUMzNjdGRTEyRUY3QTA5MDA2QTNENkYgLyogU3RvcmFnZVRyYWNr
ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZVRyYWNr
ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0FDNjQ4QjExMjlFMTQ2
NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFZGl0aW5nQm91bmRhcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
M0MyNDRGRTRBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzQzI0NEZFNUEzNzVBQzYzM0Y4OEJF
NkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwMDJDQ0IwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1
bmN0aW9uQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRGdW5j
dGlvbkNhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwMDJDQ0MwRjY2RURF
RjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdl
RXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEyNjIsNiAr
MjEyNjYsOCBAQAogCQkJCUJDRUE0ODRCMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5o
ICovLAogCQkJCUJDRUE0ODQ4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5oICov
LAogCQkJCUJDRUE0ODQ5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5tbSAqLywK
KwkJCQkzQzI0NEZFNUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dC5jcHAgKi8sCisJCQkJM0MyNDRGRTRBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QuaCAqLywKIAkJCQk5Mzk1NUE0MjAzRDcyOTMyMDA4NjM1Q0UgLyogUmVuZGVy
VHJlZUFzVGV4dC5jcHAgKi8sCiAJCQkJOTM5NTVBNDEwM0Q3MjkzMjAwODYzNUNFIC8qIFJlbmRl
clRyZWVBc1RleHQuaCAqLywKIAkJCQlFNEI0MUUzMzBDQkZCNjA5MDBBRjJFQ0UgLyogUmVuZGVy
VmlkZW8uY3BwICovLApAQCAtMjQ0NjIsNiArMjQ0NjgsNyBAQAogCQkJCUJDRUE0ODhFMDk3RDkz
MDIwMDk0QzlFNCAvKiBSZW5kZXJUZXh0RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RUE0ODhBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNFQTQ4ODcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFjLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkzQzI0NEZFQUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5OEMwODI0NUU1OTAwMUU5QUJDIC8q
IFJlbmRlclRyZWVBc1RleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxNDUyMENENjhBMzUw
MEZBREE3NSAvKiBSZW5kZXJWaWRlby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4NjgwOTdE
OTMwMjAwOTRDOUU0IC8qIFJlbmRlclZpZXcuaCBpbiBIZWFkZXJzICovLApAQCAtMjc2NDMsNiAr
Mjc2NTAsNyBAQAogCQkJCUJDRUE0ODg5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg4ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVy
VGhlbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUFENTA4MjQ1RTU5MDAxRTlBQkMg
LyogUmVuZGVyVHJlZUFzVGV4dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzQzI0NEZFQkEzNzVB
QzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFNDQ2MTQ1MTBDRDY4QTM1MDBGQURBNzUgLyogUmVuZGVyVmlkZW8uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNFQTQ4NjcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclZpZXcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MURGRTUwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlcldp
ZGdldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9MYXlvdXRSZXBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRS
ZXBhaW50ZXIuaAppbmRleCA1NzQwMGZhZWJmN2IyMGExNjU0Yzg5YTgxZGRiY2IzZjE5MzVmZmIw
Li41Zjk2ZmRjMGY0NmM0NGFhNDg0MzU5MzZiZDM4NzZkMzlmYzIxYmQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5oCkBAIC0zMCw4ICszMCw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDsKIGNs
YXNzIFJlbmRlck9iamVjdDsKLWNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OwogCiBjbGFzcyBM
YXlvdXRSZXBhaW50ZXIgewogcHVibGljOgpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgUmVuZGVyT2JqZWN0JiBtX29iamVjdDsKLSAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdCogbV9yZXBhaW50Q29udGFpbmVyOworICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
IG1fcmVwYWludENvbnRhaW5lcjsKICAgICAvLyBXZSBzdG9yZSB0aGVzZSB2YWx1ZXMgYXMgTGF5
b3V0UmVjdHMsIGJ1dCB0aGUgZmluYWwgaW52YWxpZGF0aW9ucyB3aWxsIGJlIHBpeGVsIHNuYXBw
ZWQKICAgICBMYXlvdXRSZWN0IG1fb2xkQm91bmRzOwogICAgIExheW91dFJlY3QgbV9vbGRPdXRs
aW5lQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaAppbmRleCA0OWY5YjVlNmNjMjBl
OTQ5ZjY2MDYxY2JkYWUzYTFiMzYwZWMzODUwLi43MDliMTU2ZmQ2YTc3NjQ2OGQ1Y2VmODNmMzI5
ZTkwZmQzOTZlOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QlIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaApAQCAtMzgsNyAr
MzgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCB7IHJldHVybiAiUmVuZGVyQlIiOyB9CiAgCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNl
bGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250
YWluZXIqLywgYm9vbCAvKmNsaXBUb1Zpc2libGVDb250ZW50Ki8pIHsgcmV0dXJuIExheW91dFJl
Y3QoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgYm9vbCAvKmNs
aXBUb1Zpc2libGVDb250ZW50Ki8pIE9WRVJSSURFIHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQog
CiAgICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1bnNpZ25lZCAvKmZyb20qLywgdW5zaWduZWQgLyps
ZW4qLywgY29uc3QgRm9udCYsIGZsb2F0IC8qeFBvcyovLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZv
bnREYXRhKj4qID0gMCAvKmZhbGxiYWNrRm9udHMqLyAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29u
c3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgZmxvYXQgd2lkdGgodW5zaWduZWQgLypmcm9t
Ki8sIHVuc2lnbmVkIC8qbGVuKi8sIGZsb2F0IC8qeHBvcyovLCBib29sID0gZmFsc2UgLypmaXJz
dExpbmUqLywgSGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0YSo+KiA9IDAgLypmYWxsYmFja0Zv
bnRzKi8sIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZTNjNzZlMjg3MTVmMTBiMmM4YjAx
MjZkNDRkNDA4MmI2ODIxYmM4Ni4uNmZkNjg0MTdkY2MwYjkxZGQ2M2ExOTVhNjM3MDU2ZTYyMWYz
MTFmNyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zMTk2
LDcgKzMxOTYsNyBAQCBib29sIFJlbmRlckJsb2NrOjppc1NlbGVjdGlvblJvb3QoKSBjb25zdAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotR2FwUmVjdHMgUmVuZGVyQmxvY2s6OnNlbGVjdGlvbkdh
cFJlY3RzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikK
K0dhcFJlY3RzIFJlbmRlckJsb2NrOjpzZWxlY3Rpb25HYXBSZWN0c0ZvclJlcGFpbnQoUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikKIHsKICAgICBBU1NFUlQoIW5l
ZWRzTGF5b3V0KCkpOwogCkBAIC02NTc5LDcgKzY1NzksNyBAQCB2b2lkIFJlbmRlckJsb2NrOjph
YnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNv
bnN0CiAgICAgICAgIHF1YWRzLmFwcGVuZChSZW5kZXJCb3g6OmxvY2FsVG9BYnNvbHV0ZVF1YWQo
RmxvYXRSZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKSwgZmFsc2UsIHdhc0ZpeGVkKSk7CiB9
CiAKLUxheW91dFJlY3QgUmVuZGVyQmxvY2s6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdp
ZHRoKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJCbG9jazo6cmVjdFdpdGhPdXRsaW5lRm9yUmVw
YWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRV
bml0IG91dGxpbmVXaWR0aCkgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IHIoUmVuZGVyQm94Ojpy
ZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIG91dGxpbmVXaWR0aCkp
OwogICAgIGlmIChpc0Fub255bW91c0Jsb2NrQ29udGludWF0aW9uKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDEyMzYxNzEwNDg3YWVhMWQyODkyODExOGI1MThk
YzU1NjkyZmQyMjEuLmQ2ODY0ZTUxODNlYzZjYTM1MmU5ODk0ZjE0ZTYzZjBjM2Q0MTY4ZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0yMDUsNyArMjA1LDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBjb250YWluc05vblplcm9CaWRpTGV2ZWwoKSBjb25zdDsKIAot
ICAgIEdhcFJlY3RzIHNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lcik7CisgICAgR2FwUmVjdHMgc2VsZWN0aW9uR2FwUmVjdHNG
b3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpOwog
ICAgIExheW91dFJlY3QgbG9naWNhbExlZnRTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2sqIHJvb3RC
bG9jaywgY29uc3QgTGF5b3V0UG9pbnQmIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGNvbnN0
IExheW91dFNpemUmIG9mZnNldEZyb21Sb290QmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHNlbE9iaiwgTGF5b3V0VW5pdCBsb2dpY2Fs
TGVmdCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIGNv
bnN0IFBhaW50SW5mbyopOwogICAgIExheW91dFJlY3QgbG9naWNhbFJpZ2h0U2VsZWN0aW9uR2Fw
KFJlbmRlckJsb2NrKiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaW50JiByb290QmxvY2tQaHlz
aWNhbFBvc2l0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdEJsb2NrLApAQCAt
NzcyLDE0ICs3NzIsMTQgQEAgcHJpdmF0ZToKICAgICAvLyBjaGlsZHJlbi4KICAgICB2aXJ0dWFs
IFJlbmRlckJsb2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBMYXlv
dXRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIExheW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBSZW5kZXJTdHlsZSogb3V0bGluZVN0eWxlRm9yUmVw
YWludCgpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBob3ZlckFuY2Vz
dG9yKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURyYWdTdGF0ZShib29sIGRyYWdP
bik7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkQmVjYW1lTm9uSW5saW5lKFJlbmRlck9iamVjdCog
Y2hpbGQpOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qY2xpcFRvVmlz
aWJsZUNvbnRlbnQqLykKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJl
cGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCAv
KmNsaXBUb1Zpc2libGVDb250ZW50Ki8pIE9WRVJSSURFCiAgICAgewogICAgICAgICByZXR1cm4g
c2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggN2MzYmUzZTU0ZWMxNzVlNzAw
NTFhMGU0ZDM2YzIyNmQ3NjQxMDNjMS4uNjE3ZjBiYjRjYzQ1YzQ0YzA0MGU4MDk1MmEwMjYwYjE0
YWMyYTAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTQ1Miw3
ICs0NTIsNyBAQCBGbG9hdFF1YWQgUmVuZGVyQm94OjphYnNvbHV0ZUNvbnRlbnRRdWFkKCkgY29u
c3QKICAgICByZXR1cm4gbG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QocmVjdCkpOwogfQog
Ci1MYXlvdXRSZWN0IFJlbmRlckJveDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFBvaW50KiBjYWNoZWRPZmZzZXRU
b1JlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlckJveDo6b3V0bGluZUJv
dW5kc0ZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldFRvUmVwYWludENvbnRhaW5lcikgY29uc3QKIHsK
ICAgICBMYXlvdXRSZWN0IGJveCA9IGJvcmRlckJvdW5kaW5nQm94KCk7CiAgICAgYWRqdXN0UmVj
dEZvck91dGxpbmVBbmRTaGFkb3coYm94KTsKQEAgLTEyNjIsNyArMTI2Miw3IEBAIExheW91dFVu
aXQgUmVuZGVyQm94OjpwZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodCgp
IGNvbnN0CiAgICAgcmV0dXJuIGNiLT5jb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQobG9n
aWNhbEhlaWdodExlbmd0aC52YWx1ZSgpKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6Om1hcExvY2Fs
VG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wg
Zml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRl
LCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJl
bmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9y
bVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09IHRoaXMpCiAgICAg
ICAgIHJldHVybjsKQEAgLTEzMjQsNyArMTMyNCw3IEBAIHZvaWQgUmVuZGVyQm94OjptYXBMb2Nh
bFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29s
CiAgICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBmaXhlZCwgdXNl
VHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUsIERvTm90QXBwbHlDb250YWluZXJGbGlwLCB3YXNG
aXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyQm94OjpwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBS
ZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5kZXJPYmplY3Qq
IFJlbmRlckJveDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlN
YXApIGNvbnN0CiB7CiAgICAgQVNTRVJUKGFuY2VzdG9yVG9TdG9wQXQgIT0gdGhpcyk7CiAKQEAg
LTE0NzcsNyArMTQ3Nyw3IEBAIHZvaWQgUmVuZGVyQm94OjpkZWxldGVMaW5lQm94V3JhcHBlcigp
CiAgICAgfQogfQogCi1MYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitM
YXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICBpZiAo
c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIWVuY2xvc2luZ0xheWVyKCktPmhh
c1Zpc2libGVDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CkBAIC0xNTA0
LDcgKzE1MDQsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbgogICAgIHJldHVybiByOwogfQog
Ci12b2lkIFJlbmRlckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25z
dAordm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVk
KSBjb25zdAogewogICAgIC8vIFRoZSByZWN0IHdlIGNvbXB1dGUgYXQgZWFjaCBzdGVwIGlzIHNo
aWZ0ZWQgYnkgb3VyIHgveSBvZmZzZXQgaW4gdGhlIHBhcmVudCBjb250YWluZXIncyBjb29yZGlu
YXRlIHNwYWNlLgogICAgIC8vIE9ubHkgd2hlbiB3ZSBjcm9zcyBhIHdyaXRpbmcgbW9kZSBib3Vu
ZGFyeSB3aWxsIHdlIGhhdmUgdG8gcG9zc2libHkgZmxpcEZvcldyaXRpbmdNb2RlICh0byBjb252
ZXJ0IGludG8gYSBtb3JlIGFwcHJvcHJpYXRlCkBAIC0zNzc4LDcgKzM3NzgsNyBAQCBSZW5kZXJM
YXllciogUmVuZGVyQm94OjplbmNsb3NpbmdGbG9hdFBhaW50aW5nTGF5ZXIoKSBjb25zdAogewog
ICAgIGNvbnN0IFJlbmRlck9iamVjdCogY3VyciA9IHRoaXM7CiAgICAgd2hpbGUgKGN1cnIpIHsK
LSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gY3Vyci0+aGFzTGF5ZXIoKSAmJiBjdXJyLT5p
c0JveCgpID8gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChjdXJyKS0+bGF5ZXIoKSA6IDA7CisgICAg
ICAgIFJlbmRlckxheWVyKiBsYXllciA9IGN1cnItPmhhc0xheWVyKCkgJiYgY3Vyci0+aXNCb3go
KSA/IHRvUmVuZGVyQm94KGN1cnIpLT5sYXllcigpIDogMDsKICAgICAgICAgaWYgKGxheWVyICYm
IGxheWVyLT5pc1NlbGZQYWludGluZ0xheWVyKCkpCiAgICAgICAgICAgICByZXR1cm4gbGF5ZXI7
CiAgICAgICAgIGN1cnIgPSBjdXJyLT5wYXJlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaAppbmRleCAwMzE0NTgyNjZkNjU3MTI3NzBmZWIyOGM4MTM1YzY2YzM3M2QxNmJkLi5m
NDZlZDViZGIzNjdhMWRjMjczZDA2MDM5NTZmZjk0OWMyYjc1ZWMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogICAgIExheW91
dFJlY3QgY29tcHV0ZWRDU1NDb250ZW50Qm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFJl
Y3QoYm9yZGVyTGVmdCgpICsgY29tcHV0ZWRDU1NQYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSAr
IGNvbXB1dGVkQ1NTUGFkZGluZ1RvcCgpLCBjbGllbnRXaWR0aCgpIC0gY29tcHV0ZWRDU1NQYWRk
aW5nTGVmdCgpIC0gY29tcHV0ZWRDU1NQYWRkaW5nUmlnaHQoKSwgY2xpZW50SGVpZ2h0KCkgLSBj
b21wdXRlZENTU1BhZGRpbmdUb3AoKSAtIGNvbXB1dGVkQ1NTUGFkZGluZ0JvdHRvbSgpKTsgfQog
CiAgICAgLy8gQm91bmRzIG9mIHRoZSBvdXRsaW5lIGJveCBpbiBhYnNvbHV0ZSBjb29yZHMuIFJl
c3BlY3RzIHRyYW5zZm9ybXMKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0Zv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBMYXlv
dXRQb2ludCogY2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0
dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogLypyZXBhaW50Q29udGFpbmVyKi8sIExheW91dFBvaW50KiBjYWNoZWRPZmZzZXRU
b1JlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhZGRG
b2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCiAg
ICAgLy8gVXNlIHRoaXMgd2l0aCBjYXV0aW9uISBObyB0eXBlIGNoZWNraW5nIGlzIGRvbmUhCkBA
IC0zMDgsOCArMzA4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5saW5lQm94V3JhcHBlcihJ
bmxpbmVCb3gqIGJveFdyYXBwZXIpIHsgbV9pbmxpbmVCb3hXcmFwcGVyID0gYm94V3JhcHBlcjsg
fQogICAgIHZvaWQgZGVsZXRlTGluZUJveFdyYXBwZXIoKTsKIAotICAgIHZpcnR1YWwgTGF5b3V0
UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVj
dCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcmVwYWludER1cmluZ0xheW91dElmTW92ZWQoY29uc3QgTGF5b3V0UmVj
dCYpOwogCkBAIC01MTgsOCArNTE4LDggQEAgcHJvdGVjdGVkOgogICAgIAogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWQoKSBjb25zdCB7IHJldHVybiBpc1JlcGxh
Y2VkKCkgJiYgIWlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCk7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiwg
QXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0Zp
eGVkID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBSZW5kZXJHZW9tZXRy
eU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wg
dXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9
IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihj
b25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9v
bCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogCiAg
ICAgdm9pZCBwYWludFJvb3RCb3hGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXgg
YTM1YTIwNmUyY2ZhYjBhMDgzMjEzOTAwOGNmMTNmNzE1ZGFiYTBiMy4uZDUyMTBjMTUzYjAyOTBj
ODI4YTRlNjNjNmY0OWQzNTg2ZWU5MTVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC01MiwxMSArNTIsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWJvb2wgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnNfd2FzRmxvYXRpbmcgPSBmYWxzZTsKLWJvb2wgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnNfaGFkTGF5ZXIgPSBmYWxzZTsKLWJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnNfaGFkVHJhbnNmb3JtID0gZmFsc2U7Ci1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzX2xh
eWVyV2FzU2VsZlBhaW50aW5nID0gZmFsc2U7Ci0KIHN0YXRpYyBjb25zdCBkb3VibGUgY0ludGVy
cG9sYXRpb25DdXRvZmYgPSA4MDAuICogODAwLjsKIHN0YXRpYyBjb25zdCBkb3VibGUgY0xvd1F1
YWxpdHlUaW1lVGhyZXNob2xkID0gMC41MDA7IC8vIDUwMCBtcwogCkBAIC0zMTYsMTYgKzMxMSwx
MiBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRQYWludEF0TG93UXVhbGl0eShH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEltYQogfQogCiBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
UmVuZGVyQm94TW9kZWxPYmplY3QoTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlck9iamVjdChub2Rl
KQotICAgICwgbV9sYXllcigwKQorICAgIDogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdChub2Rl
KQogewogfQogCiBSZW5kZXJCb3hNb2RlbE9iamVjdDo6flJlbmRlckJveE1vZGVsT2JqZWN0KCkK
IHsKLSAgICAvLyBPdXIgbGF5ZXIgc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95ZWQgYW5kIGNsZWFy
ZWQgYnkgbm93Ci0gICAgQVNTRVJUKCFoYXNMYXllcigpKTsKLSAgICBBU1NFUlQoIW1fbGF5ZXIp
OwogICAgIGlmIChnSW1hZ2VRdWFsaXR5Q29udHJvbGxlcikgewogICAgICAgICBnSW1hZ2VRdWFs
aXR5Q29udHJvbGxlci0+b2JqZWN0RGVzdHJveWVkKHRoaXMpOwogICAgICAgICBpZiAoZ0ltYWdl
UXVhbGl0eUNvbnRyb2xsZXItPmlzRW1wdHkoKSkgewpAQCAtMzM1LDE0ICszMjYsNiBAQCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6flJlbmRlckJveE1vZGVsT2JqZWN0KCkKICAgICB9CiB9CiAKLXZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcigpCi17Ci0gICAgQVNTRVJUKCFo
YXNMYXllcigpKTsgLy8gQ2FsbGVycyBzaG91bGQgaGF2ZSBhbHJlYWR5IGNhbGxlZCBzZXRIYXNM
YXllcihmYWxzZSkKLSAgICBBU1NFUlQobV9sYXllcik7Ci0gICAgbV9sYXllci0+ZGVzdHJveShy
ZW5kZXJBcmVuYSgpKTsKLSAgICBtX2xheWVyID0gMDsKLX0KLQogdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkKIHsKICAgICAvLyBBIGNvbnRpbnVhdGlvbiBvZiB0
aGlzIFJlbmRlck9iamVjdCBzaG91bGQgYmUgZGVzdHJveWVkIGF0IHN1YmNsYXNzZXMuCkBAIC0z
NTMsOTkgKzMzNiwxMyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojp3aWxsQmVEZXN0cm95
ZWQoKQogICAgIGlmIChmaXJzdExldHRlclJlbWFpbmluZ1RleHQoKSkKICAgICAgICAgc2V0Rmly
c3RMZXR0ZXJSZW1haW5pbmdUZXh0KDApOwogCi0gICAgLy8gUmVuZGVyT2JqZWN0Ojp3aWxsQmVE
ZXN0cm95ZWQgY2FsbHMgYmFjayB0byBkZXN0cm95TGF5ZXIoKSBmb3IgbGF5ZXIgZGVzdHJ1Y3Rp
b24KLSAgICBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpOwotfQotCi1ib29sIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fbGF5ZXIgJiYgbV9sYXllci0+aXNTZWxmUGFpbnRpbmdMYXllcigpOwotfQotCi12b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSkKLXsKLSAgICBzX3dhc0Zsb2F0aW5nID0g
aXNGbG9hdGluZygpOwotICAgIHNfaGFkTGF5ZXIgPSBoYXNMYXllcigpOwotICAgIHNfaGFkVHJh
bnNmb3JtID0gaGFzVHJhbnNmb3JtKCk7Ci0gICAgaWYgKHNfaGFkTGF5ZXIpCi0gICAgICAgIHNf
bGF5ZXJXYXNTZWxmUGFpbnRpbmcgPSBsYXllcigpLT5pc1NlbGZQYWludGluZ0xheWVyKCk7Ci0K
LSAgICAvLyBJZiBvdXIgei1pbmRleCBjaGFuZ2VzIHZhbHVlIG9yIG91ciB2aXNpYmlsaXR5IGNo
YW5nZXMsCi0gICAgLy8gd2UgbmVlZCB0byBkaXJ0eSBvdXIgc3RhY2tpbmcgY29udGV4dCdzIHot
b3JkZXIgbGlzdC4KLSAgICBSZW5kZXJTdHlsZSogb2xkU3R5bGUgPSBzdHlsZSgpOwotICAgIGlm
IChvbGRTdHlsZSAmJiBuZXdTdHlsZSkgewotICAgICAgICBpZiAocGFyZW50KCkpIHsKLSAgICAg
ICAgICAgIC8vIERvIGEgcmVwYWludCB3aXRoIHRoZSBvbGQgc3R5bGUgZmlyc3QsIGUuZy4sIGZv
ciBleGFtcGxlIGlmIHdlIGdvIGZyb20KLSAgICAgICAgICAgIC8vIGhhdmluZyBhbiBvdXRsaW5l
IHRvIG5vdCBoYXZpbmcgYW4gb3V0bGluZS4KLSAgICAgICAgICAgIGlmIChkaWZmID09IFN0eWxl
RGlmZmVyZW5jZVJlcGFpbnRMYXllcikgewotICAgICAgICAgICAgICAgIGxheWVyKCktPnJlcGFp
bnRJbmNsdWRpbmdEZXNjZW5kYW50cygpOwotICAgICAgICAgICAgICAgIGlmICghKG9sZFN0eWxl
LT5jbGlwKCkgPT0gbmV3U3R5bGUtPmNsaXAoKSkpCi0gICAgICAgICAgICAgICAgICAgIGxheWVy
KCktPmNsZWFyQ2xpcFJlY3RzSW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VSZXBhaW50IHx8IG5ld1N0eWxlLT5vdXRs
aW5lU2l6ZSgpIDwgb2xkU3R5bGUtPm91dGxpbmVTaXplKCkpCi0gICAgICAgICAgICAgICAgcmVw
YWludCgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoZGlmZiA9PSBTdHlsZURp
ZmZlcmVuY2VMYXlvdXQgfHwgZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VTaW1wbGlmaWVkTGF5b3V0
KSB7Ci0gICAgICAgICAgICAvLyBXaGVuIGEgbGF5b3V0IGhpbnQgaGFwcGVucywgd2UgZ28gYWhl
YWQgYW5kIGRvIGEgcmVwYWludCBvZiB0aGUgbGF5ZXIsIHNpbmNlIHRoZSBsYXllciBjb3VsZAot
ICAgICAgICAgICAgLy8gZW5kIHVwIGJlaW5nIGRlc3Ryb3llZC4KLSAgICAgICAgICAgIGlmICho
YXNMYXllcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9sZFN0eWxlLT5wb3NpdGlvbigpICE9
IG5ld1N0eWxlLT5wb3NpdGlvbigpCi0gICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT56
SW5kZXgoKSAhPSBuZXdTdHlsZS0+ekluZGV4KCkKLSAgICAgICAgICAgICAgICAgICAgfHwgb2xk
U3R5bGUtPmhhc0F1dG9aSW5kZXgoKSAhPSBuZXdTdHlsZS0+aGFzQXV0b1pJbmRleCgpCi0gICAg
ICAgICAgICAgICAgICAgIHx8ICEob2xkU3R5bGUtPmNsaXAoKSA9PSBuZXdTdHlsZS0+Y2xpcCgp
KQotICAgICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+aGFzQ2xpcCgpICE9IG5ld1N0eWxl
LT5oYXNDbGlwKCkKLSAgICAgICAgICAgICAgICAgICAgfHwgb2xkU3R5bGUtPm9wYWNpdHkoKSAh
PSBuZXdTdHlsZS0+b3BhY2l0eSgpCi0gICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT50
cmFuc2Zvcm0oKSAhPSBuZXdTdHlsZS0+dHJhbnNmb3JtKCkKLSNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCi0gICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT5maWx0ZXIoKSAhPSBuZXdTdHls
ZS0+ZmlsdGVyKCkKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAg
ICAgbGF5ZXIoKS0+cmVwYWludEluY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKG5ld1N0eWxlLT5oYXNUcmFuc2Zvcm0oKSB8fCBuZXdTdHlsZS0+b3BhY2l0eSgp
IDwgMSB8fCBuZXdTdHlsZS0+aGFzRmlsdGVyKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiB3
ZSBkb24ndCBoYXZlIGEgbGF5ZXIgeWV0LCBidXQgd2UgYXJlIGdvaW5nIHRvIGdldCBvbmUgYmVj
YXVzZSBvZiB0cmFuc2Zvcm0gb3Igb3BhY2l0eSwKLSAgICAgICAgICAgICAgICAvLyAgdGhlbiB3
ZSBuZWVkIHRvIHJlcGFpbnQgdGhlIG9sZCBwb3NpdGlvbiBvZiB0aGUgb2JqZWN0LgotICAgICAg
ICAgICAgICAgIHJlcGFpbnQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQot
ICAgIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIG5ld1N0eWxlKTsKKyAgICBS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKTsKIH0KIAogdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYs
IGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKLSAgICBSZW5kZXJPYmplY3Q6OnN0eWxl
RGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKICAgICB1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5
bGUoKTsKLSAgICAKLSAgICBpZiAocmVxdWlyZXNMYXllcigpKSB7Ci0gICAgICAgIGlmICghbGF5
ZXIoKSAmJiBsYXllckNyZWF0aW9uQWxsb3dlZEZvclN1YnRyZWUoKSkgewotICAgICAgICAgICAg
aWYgKHNfd2FzRmxvYXRpbmcgJiYgaXNGbG9hdGluZygpKQotICAgICAgICAgICAgICAgIHNldENo
aWxkTmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAgICAgICAgICBtX2xheWVyID0gbmV3IChyZW5kZXJB
cmVuYSgpKSBSZW5kZXJMYXllcih0aGlzKTsKLSAgICAgICAgICAgIHNldEhhc0xheWVyKHRydWUp
OwotICAgICAgICAgICAgbV9sYXllci0+aW5zZXJ0T25seVRoaXNMYXllcigpOwotICAgICAgICAg
ICAgaWYgKHBhcmVudCgpICYmICFuZWVkc0xheW91dCgpICYmIGNvbnRhaW5pbmdCbG9jaygpKSB7
Ci0gICAgICAgICAgICAgICAgbV9sYXllci0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxSZXBh
aW50KTsKLSAgICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBvbmx5IG9uZSBsYXllciB0byB1cGRh
dGUsIGl0IGlzIG5vdCB3b3J0aCB1c2luZyB8Y2FjaGVkT2Zmc2V0fCBzaW5jZQotICAgICAgICAg
ICAgICAgIC8vIHdlIGFyZSBub3Qgc3VyZSB0aGUgdmFsdWUgd2lsbCBiZSB1c2VkLgotICAgICAg
ICAgICAgICAgIG1fbGF5ZXItPnVwZGF0ZUxheWVyUG9zaXRpb25zKDApOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChsYXllcigpICYmIGxheWVyKCktPnBhcmVudCgp
KSB7Ci0gICAgICAgIHNldEhhc1RyYW5zZm9ybShmYWxzZSk7IC8vIEVpdGhlciBhIHRyYW5zZm9y
bSB3YXNuJ3Qgc3BlY2lmaWVkIG9yIHRoZSBvYmplY3QgZG9lc24ndCBzdXBwb3J0IHRyYW5zZm9y
bXMsIHNvIGp1c3QgbnVsbCBvdXQgdGhlIGJpdC4KLSAgICAgICAgc2V0SGFzUmVmbGVjdGlvbihm
YWxzZSk7Ci0gICAgICAgIG1fbGF5ZXItPnJlbW92ZU9ubHlUaGlzTGF5ZXIoKTsgLy8gY2FsbHMg
ZGVzdHJveUxheWVyKCkgd2hpY2ggY2xlYXJzIG1fbGF5ZXIKLSAgICAgICAgaWYgKHNfd2FzRmxv
YXRpbmcgJiYgaXNGbG9hdGluZygpKQotICAgICAgICAgICAgc2V0Q2hpbGROZWVkc0xheW91dCh0
cnVlKTsKLSAgICAgICAgaWYgKHNfaGFkVHJhbnNmb3JtKQotICAgICAgICAgICAgc2V0TmVlZHNM
YXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7Ci0gICAgfQotCi0gICAgaWYgKGxheWVyKCkpIHsK
LSAgICAgICAgbGF5ZXIoKS0+c3R5bGVDaGFuZ2VkKGRpZmYsIG9sZFN0eWxlKTsKLSAgICAgICAg
aWYgKHNfaGFkTGF5ZXIgJiYgbGF5ZXIoKS0+aXNTZWxmUGFpbnRpbmdMYXllcigpICE9IHNfbGF5
ZXJXYXNTZWxmUGFpbnRpbmcpCi0gICAgICAgICAgICBzZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUp
OwotICAgIH0KKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpzdHlsZURpZENoYW5nZShk
aWZmLCBvbGRTdHlsZSk7CiB9CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnVwZGF0ZUJv
eE1vZGVsSW5mb0Zyb21TdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDA2N2Y2MDQ2ZDA5MDhhOTRjOTdlOGE0MjJlNjAyY2Jj
Y2FmYzFkOTMuLjE3NjUzYTAwNjllN2I3MTE2MzYxZDVmYzEyYTUwOTU4M2YwNmM4NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0y
NCw3ICsyNCw3IEBACiAjaWZuZGVmIFJlbmRlckJveE1vZGVsT2JqZWN0X2gKICNkZWZpbmUgUmVu
ZGVyQm94TW9kZWxPYmplY3RfaAogCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVk
ZSAiUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIlNoYWRvd0RhdGEuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBLZXlmcmFtZUxp
c3Q7CiAvLyBUaGlzIGNsYXNzIGlzIHRoZSBiYXNlIGZvciBhbGwgb2JqZWN0cyB0aGF0IGFkaGVy
ZSB0byB0aGUgQ1NTIGJveCBtb2RlbCBhcyBkZXNjcmliZWQKIC8vIGF0IGh0dHA6Ly93d3cudzMu
b3JnL1RSL0NTUzIxL2JveC5odG1sCiAKLWNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0IDogcHVi
bGljIFJlbmRlck9iamVjdCB7CitjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdCA6IHB1YmxpYyBS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0IHsKIHB1YmxpYzoKICAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdChOb2RlKik7CiAgICAgdmlydHVhbCB+UmVuZGVyQm94TW9kZWxPYmplY3QoKTsKQEAgLTc0
LDEzICs3NCwxMCBAQCBwdWJsaWM6CiAgICAgaW50IHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCkg
Y29uc3Q7CiAgICAgaW50IHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpIGNvbnN0OwogCi0gICAg
dmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRl
clN0eWxlKiBuZXdTdHlsZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CiAKLSAgICBib29sIGhhc1NlbGZQYWlu
dGluZ0xheWVyKCkgY29uc3Q7Ci0gICAgUmVuZGVyTGF5ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1
cm4gbV9sYXllcjsgfQotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyBy
ZXR1cm4gaXNSb290KCkgfHwgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgaXNSZWxQb3NpdGlv
bmVkKCkgfHwgaXNUcmFuc3BhcmVudCgpIHx8IGhhc1RyYW5zZm9ybSgpIHx8IGhhc0hpZGRlbkJh
Y2tmYWNlKCkgfHwgaGFzTWFzaygpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBoYXNGaWx0ZXIoKSB8
fCBzdHlsZSgpLT5zcGVjaWZpZXNDb2x1bW5zKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWly
ZXNMYXllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGlzUm9vdCgpIHx8IGlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpIHx8IGlzUmVsUG9zaXRpb25lZCgpIHx8IGlzVHJhbnNwYXJlbnQoKSB8fCBo
YXNUcmFuc2Zvcm0oKSB8fCBoYXNIaWRkZW5CYWNrZmFjZSgpIHx8IGhhc01hc2soKSB8fCBoYXNS
ZWZsZWN0aW9uKCkgfHwgaGFzRmlsdGVyKCkgfHwgc3R5bGUoKS0+c3BlY2lmaWVzQ29sdW1ucygp
OyB9CiAKICAgICAvLyBUaGlzIHdpbGwgd29yayBvbiBpbmxpbmVzIHRvIHJldHVybiB0aGUgYm91
bmRpbmcgYm94IG9mIGFsbCBvZiB0aGUgbGluZXMnIGJvcmRlciBib3hlcy4KICAgICB2aXJ0dWFs
IEludFJlY3QgYm9yZGVyQm91bmRpbmdCb3goKSBjb25zdCA9IDA7CkBAIC0xNTYsOSArMTUzLDYg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJv
b2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdCBPVkVS
UklERTsKIAotICAgIC8vIENhbGxlZCBieSBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgp
IGFuZCBpcyB0aGUgb25seSB3YXkgbGF5ZXJzIHNob3VsZCBldmVyIGJlIGRlc3Ryb3llZAotICAg
IHZvaWQgZGVzdHJveUxheWVyKCk7Ci0KICAgICB2b2lkIGhpZ2hRdWFsaXR5UmVwYWludFRpbWVy
RmlyZWQoVGltZXI8UmVuZGVyQm94TW9kZWxPYmplY3Q+Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgcyk7CkBAIC0yOTYsMTYgKzI5MCw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBQYXRoJiwgY29uc3QgY2xhc3MgQm9yZGVyRWRnZVtd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRoaWNrbmVzcywgZmxvYXQgZHJh
d1RoaWNrbmVzcywgQm94U2lkZSwgY29uc3QgUmVuZGVyU3R5bGUqLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDb2xvciwgRUJvcmRlclN0eWxlLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSk7Ci0KLSAgICBmcmllbmQgY2xhc3MgUmVuZGVyVmlldzsKLQotICAgIFJlbmRlckxheWVy
KiBtX2xheWVyOwotICAgIAotICAgIC8vIFVzZWQgdG8gc3RvcmUgc3RhdGUgYmV0d2VlbiBzdHls
ZVdpbGxDaGFuZ2UgYW5kIHN0eWxlRGlkQ2hhbmdlCi0gICAgc3RhdGljIGJvb2wgc193YXNGbG9h
dGluZzsKLSAgICBzdGF0aWMgYm9vbCBzX2hhZExheWVyOwotICAgIHN0YXRpYyBib29sIHNfaGFk
VHJhbnNmb3JtOwotICAgIHN0YXRpYyBib29sIHNfbGF5ZXJXYXNTZWxmUGFpbnRpbmc7CiB9Owog
CiBpbmxpbmUgUmVuZGVyQm94TW9kZWxPYmplY3QqIHRvUmVuZGVyQm94TW9kZWxPYmplY3QoUmVu
ZGVyT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR2VvbWV0cnlNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdl
b21ldHJ5TWFwLmNwcAppbmRleCA4YzZmYTBiZmM5Mjk4NzMwZmVlZmJlYTU2MjQyMTk3NWI0Yjkw
YmEwLi45MmFlMTNkNzNhNDQ0NGRhMGE3ZTU3NWVjNmU2YzBjYjQ1ZjZjZTljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKQEAgLTEyOSw3ICsx
MjksNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjptYXBUb0Fic29sdXRlKFRyYW5zZm9ybVN0
YXRlJiB0cmFuc2Zvcm1TdGF0ZSkgY29uc3QKICAgICB0cmFuc2Zvcm1TdGF0ZS5mbGF0dGVuKCk7
ICAgIAogfQogCi12b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoTWFwcGluZ3NUb0FuY2VzdG9y
KGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0
KiBhbmNlc3RvclJlbmRlcmVyKQordm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaE1hcHBpbmdz
VG9BbmNlc3Rvcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyKQogewogICAgIC8vIFdlIG5lZWQgdG8g
cHVzaCBtYXBwaW5ncyBpbiByZXZlcnNlIG9yZGVyIGhlcmUsIHNvIGRvIGluc2VydGlvbnMgcmF0
aGVyIHRoYW4gYXBwZW5kcy4KICAgICBUZW1wb3JhcnlDaGFuZ2U8c2l6ZV90PiBwb3NpdGlvbkNo
YW5nZShtX2luc2VydGlvblBvc2l0aW9uLCBtX21hcHBpbmcuc2l6ZSgpKTsKQEAgLTE3MSw3ICsx
NzEsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKGNv
bnN0IFJlbmRlckxheWVyKiBsYXllciwgY29uc3QgUgogICAgICAgICBwdXNoKHJlbmRlcmVyLCB0
b0xheW91dFNpemUobGF5ZXJPZmZzZXQpLCAvKmFjY3VtdWxhdGluZ1RyYW5zZm9ybSovIHRydWUs
IC8qaXNOb25Vbmlmb3JtKi8gZmFsc2UsIC8qaXNGaXhlZFBvc2l0aW9uKi8gZmFsc2UsIC8qaGFz
VHJhbnNmb3JtKi8gZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyID0gYW5jZXN0b3JMYXllciA/IGFu
Y2VzdG9yTGF5ZXItPnJlbmRlcmVyKCkgOiAwOworICAgIGNvbnN0IFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIgPSBhbmNlc3RvckxheWVyID8gYW5jZXN0b3JMYXll
ci0+cmVuZGVyZXIoKSA6IDA7CiAgICAgcHVzaE1hcHBpbmdzVG9BbmNlc3RvcihyZW5kZXJlciwg
YW5jZXN0b3JSZW5kZXJlcik7CiB9CiAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIFJlbmRlckdl
b21ldHJ5TWFwOjpwdXNoVmlldyhjb25zdCBSZW5kZXJWaWV3KiB2aWV3LCBjb25zdCBMYXlvdXRT
aXplJiBzY3JvbAogICAgIHN0ZXBJbnNlcnRlZChzdGVwKTsKIH0KIAotdm9pZCBSZW5kZXJHZW9t
ZXRyeU1hcDo6cG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0
KiBhbmNlc3RvclJlbmRlcmVyKQordm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cG9wTWFwcGluZ3NU
b0FuY2VzdG9yKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yUmVuZGVy
ZXIpCiB7CiAgICAgQVNTRVJUKG1fbWFwcGluZy5zaXplKCkpOwogCkBAIC0yMjksNyArMjI5LDcg
QEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3QKIAogdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cG9w
TWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyKQogewot
ICAgIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyID0gYW5jZXN0
b3JMYXllciA/IGFuY2VzdG9yTGF5ZXItPnJlbmRlcmVyKCkgOiAwOworICAgIGNvbnN0IFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIgPSBhbmNlc3RvckxheWVyID8g
YW5jZXN0b3JMYXllci0+cmVuZGVyZXIoKSA6IDA7CiAgICAgcG9wTWFwcGluZ3NUb0FuY2VzdG9y
KGFuY2VzdG9yUmVuZGVyZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHZW9tZXRyeU1hcC5oCmluZGV4IDhlNjNjNTA4NDgxNmQzNDgyOGJlZmY4MGFhNzk0MmZmMGNl
MDAxM2EuLjYzYWZkY2VhYWEwYTNjNmQzMDY3YjEzNWQ4NDk3YTU3NThlZjkwNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5oCkBAIC03Nyw4ICs3Nyw4
IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgYnkgY29kZSB3YWxraW5nIHRoZSByZW5kZXJlciBv
ciBsYXllciB0cmVlcy4KICAgICB2b2lkIHB1c2hNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVu
ZGVyTGF5ZXIqLCBjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllcik7CiAgICAgdm9pZCBw
b3BNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5ZXIqKTsKLSAgICB2b2lkIHB1c2hN
YXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIpOwotICAgIHZvaWQgcG9wTWFwcGluZ3NUb0FuY2Vz
dG9yKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0Kik7CisgICAgdm9pZCBwdXNoTWFwcGluZ3NU
b0FuY2VzdG9yKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIGFuY2VzdG9yUmVuZGVyZXIpOworICAgIHZvaWQgcG9wTWFwcGluZ3NUb0FuY2VzdG9y
KGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqKTsKICAgICAKICAgICAvLyBUaGUgZm9s
bG93aW5nIG1ldGhvZHMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHJlbmRlcmVycyBpbnNpZGUg
YSBjYWxsIHRvIHB1c2hNYXBwaW5nc1RvQW5jZXN0b3IoKS4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCAzMDMyNDgwYzZkNGQxOWNlOGUzN2E5Zjc2MTEx
ZDgxZTliZGNjNDVhLi5hZTc0MDkzMTczMTdmOGQzNzEzMzRlMTgyMThlOTZjYTcyZWI2NzM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtOTU5LDcgKzk1
OSw3IEBAIExheW91dFJlY3QgUmVuZGVySW5saW5lOjpsaW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRp
bmdCb3goKSBjb25zdAogICAgIHJldHVybiByZWN0OwogfQogCi1MYXlvdXRSZWN0IFJlbmRlcklu
bGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlcklubGluZTo6Y2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWlu
dENvbnRhaW5lcikgY29uc3QKIHsKICAgICAvLyBPbmx5IHJ1bi1pbnMgYXJlIGFsbG93ZWQgaW4g
aGVyZSBkdXJpbmcgbGF5b3V0LgogICAgIEFTU0VSVCghdmlldygpIHx8ICF2aWV3KCktPmxheW91
dFN0YXRlRW5hYmxlZCgpIHx8IGlzUnVuSW4oKSk7CkBAIC0xMDE3LDcgKzEwMTcsNyBAQCBMYXlv
dXRSZWN0IFJlbmRlcklubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcAogICAgIHJldHVybiByZXBhaW50UmVjdDsKIH0KIAotTGF5b3V0
UmVjdCBSZW5kZXJJbmxpbmU6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25z
dAorTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRs
aW5lV2lkdGgpIGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCByKFJlbmRlckJveE1vZGVsT2JqZWN0
OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIG91dGxpbmVXaWR0
aCkpOwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBj
dXJyID0gY3Vyci0+bmV4dFNpYmxpbmcoKSkgewpAQCAtMTAyNyw3ICsxMDI3LDcgQEAgTGF5b3V0
UmVjdCBSZW5kZXJJbmxpbmU6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnQKICAgICByZXR1cm4gcjsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6
OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVySW5s
aW5lOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVw
YWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAg
ICBpZiAoUmVuZGVyVmlldyogdiA9IHZpZXcoKSkgewogICAgICAgICAvLyBMYXlvdXRTdGF0ZSBp
cyBvbmx5IHZhbGlkIGZvciByb290LXJlbGF0aXZlIHJlcGFpbnRpbmcKQEAgLTExMTcsNyArMTEx
Nyw3IEBAIExheW91dFNpemUgUmVuZGVySW5saW5lOjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRl
ck9iamVjdCogY29udGFpbmVyLCBjb25zdCBMYXlvCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAot
dm9pZCBSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJh
bnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCBhcHBs
eUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJJbmxpbmU6
Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYg
dHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90IGFwcGx5Q29udGFpbmVyRmxp
cCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXIgPT0g
dGhpcykKICAgICAgICAgcmV0dXJuOwpAQCAtMTE2NSw3ICsxMTY1LDcgQEAgdm9pZCBSZW5kZXJJ
bmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIGIKICAgICBvLT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIs
IGZpeGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSwgYXBwbHlDb250YWluZXJGbGlw
LCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVySW5saW5lOjpwdXNo
TWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRv
U3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5k
ZXJPYmplY3QqIFJlbmRlcklubGluZTo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1h
cCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgQVNTRVJUKGFuY2VzdG9yVG9TdG9wQXQgIT0g
dGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxp
bmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCA3MjIz
MDBhYjgyOTg0ZGFhOWRmYTI3Y2YyNzg4ZTgyNzQ3YjZmNDM5Li41MzI5NTY2ZjBlNWU0NTBlNDVj
ZjhhMWNkYzhjYzgyZTczNmQxZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5oCkBAIC0xMzEsMTIgKzEzMSwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBvZmZzZXRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGxpbmVzQm91bmRpbmdCb3goKS53aWR0
aCgpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldEhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIGxpbmVzQm91bmRpbmdCb3goKS5oZWlnaHQoKTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRS
ZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgcmVjdFdpdGhP
dXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
TGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExh
eW91dFJlY3QmLCBib29sIGZpeGVkKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVw
YWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHJl
Y3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQpIGNvbnN0IE9W
RVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNm
b3JtcywgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29u
dGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0
IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRy
YW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZs
aXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25z
dCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25z
dCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9p
bnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKaW5kZXggMzFiZTJlOGEzMzAyMTM4Njc5MGUwYzQzNmVjODkxMzk4MDY1MmIwZC4u
ZGYxOTFmMTMzNTBlYzlhNmFkNzUyODA5ZjM4ZmUxNmNjOTBmNTYyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBDbGlw
UmVjdDo6aW50ZXJzZWN0cyhjb25zdCBIaXRUZXN0UG9pbnQmIGhpdFRlc3RQb2ludCkKICAgICBy
ZXR1cm4gaGl0VGVzdFBvaW50LmludGVyc2VjdHMobV9yZWN0KTsKIH0KIAotUmVuZGVyTGF5ZXI6
OlJlbmRlckxheWVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlcikKK1JlbmRlckxheWVy
OjpSZW5kZXJMYXllcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZW5kZXJlcikKICAgICA6
IG1faW5SZXNpemVNb2RlKGZhbHNlKQogICAgICwgbV9zY3JvbGxEaW1lbnNpb25zRGlydHkodHJ1
ZSkKICAgICAsIG1fbm9ybWFsRmxvd0xpc3REaXJ0eSh0cnVlKQpAQCAtMzg1LDcgKzM4NSw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKExheW91dFBvaW50KiBvZmZz
ZXRGcm9tUm9vdCwgVXBkYXRlTGF5ZXJQCiAgICAgICAgIC8vIExheW91dFN0YXRlIG91dHNpZGUg
dGhlIGxheW91dCgpIHBoYXNlIGFuZCB1c2UgaXQgaGVyZS4KICAgICAgICAgQVNTRVJUKCF2aWV3
LT5sYXlvdXRTdGF0ZUVuYWJsZWQoKSk7CiAKLSAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIgPSByZW5kZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50KCk7Cisg
ICAgICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSByZW5k
ZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50KCk7CiAgICAgICAgIExheW91dFJlY3Qgb2xkUmVw
YWludFJlY3QgPSBtX3JlcGFpbnRSZWN0OwogICAgICAgICBMYXlvdXRSZWN0IG9sZE91dGxpbmVC
b3ggPSBtX291dGxpbmVCb3g7CiAgICAgICAgIGNvbXB1dGVSZXBhaW50UmVjdHMob2Zmc2V0RnJv
bVJvb3QpOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbXB1dGVSZXBh
aW50UmVjdHMoTGF5b3V0UG9pbnQqIG9mZnNldEZyb21Sb290KQogewogICAgIEFTU0VSVCghbV92
aXNpYmxlQ29udGVudFN0YXR1c0RpcnR5KTsKIAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOworICAg
IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSByZW5kZXJlcigp
LT5jb250YWluZXJGb3JSZXBhaW50KCk7CiAgICAgbV9yZXBhaW50UmVjdCA9IHJlbmRlcmVyKCkt
PmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpOwogICAgIG1f
b3V0bGluZUJveCA9IHJlbmRlcmVyKCktPm91dGxpbmVCb3VuZHNGb3JSZXBhaW50KHJlcGFpbnRD
b250YWluZXIsIG9mZnNldEZyb21Sb290KTsKIH0KQEAgLTU5MSwxMCArNTkxLDEwIEBAIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IFJlbmRlckxheWVyOjpyZW5kZXJhYmxlVHJhbnNmb3JtKFBhaW50QmVo
YXZpb3IgcGFpbnRCZWhhdmlvCiAgICAgcmV0dXJuICptX3RyYW5zZm9ybTsKIH0KIAotc3RhdGlj
IGJvb2wgY2hlY2tDb250YWluaW5nQmxvY2tDaGFpbkZvclBhZ2luYXRpb24oUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJCb3gqIGFuY2VzdG9yQ29sdW1uc1JlbmRlcmVyKQor
c3RhdGljIGJvb2wgY2hlY2tDb250YWluaW5nQmxvY2tDaGFpbkZvclBhZ2luYXRpb24oUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVuZGVyZXIsIFJlbmRlckJveCogYW5jZXN0b3JDb2x1bW5z
UmVuZGVyZXIpCiB7CiAgICAgUmVuZGVyVmlldyogdmlldyA9IHJlbmRlcmVyLT52aWV3KCk7Ci0g
ICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHByZXZCbG9jayA9IHJlbmRlcmVyOworICAgIFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqIHByZXZCbG9jayA9IHJlbmRlcmVyOwogICAgIFJlbmRlckJs
b2NrKiBjb250YWluaW5nQmxvY2s7CiAgICAgZm9yIChjb250YWluaW5nQmxvY2sgPSByZW5kZXJl
ci0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICBjb250YWluaW5nQmxvY2sgJiYgY29udGFp
bmluZ0Jsb2NrICE9IHZpZXcgJiYgY29udGFpbmluZ0Jsb2NrICE9IGFuY2VzdG9yQ29sdW1uc1Jl
bmRlcmVyOwpAQCAtODUxLDcgKzg1MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVy
UG9zaXRpb24oKQogICAgIH0KICAgICAgICAgCiAgICAgaWYgKHJlbmRlcmVyKCktPmlzUmVsUG9z
aXRpb25lZCgpKSB7Ci0gICAgICAgIG1fcmVsYXRpdmVPZmZzZXQgPSByZW5kZXJlcigpLT5yZWxh
dGl2ZVBvc2l0aW9uT2Zmc2V0KCk7CisgICAgICAgIG1fcmVsYXRpdmVPZmZzZXQgPSB0b1JlbmRl
ckJveE1vZGVsT2JqZWN0KHJlbmRlcmVyKCkpLT5yZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KCk7CiAg
ICAgICAgIGxvY2FsUG9pbnQubW92ZShtX3JlbGF0aXZlT2Zmc2V0KTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBtX3JlbGF0aXZlT2Zmc2V0ID0gTGF5b3V0U2l6ZSgpOwpAQCAtOTE0LDcgKzkxNCw3
IEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6c3RhY2tpbmdDb250ZXh0KCkgY29uc3QKIAog
c3RhdGljIGlubGluZSBib29sIGlzUG9zaXRpb25lZENvbnRhaW5lcihSZW5kZXJMYXllciogbGF5
ZXIpCiB7Ci0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGxheWVyUmVuZGVyZXIgPSBsYXllci0+
cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBsYXllclJlbmRlcmVy
ID0gbGF5ZXItPnJlbmRlcmVyKCk7CiAgICAgcmV0dXJuIGxheWVyLT5pc1Jvb3RMYXllcigpIHx8
IGxheWVyUmVuZGVyZXItPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGxheWVyUmVuZGVyZXIt
PmlzUmVsUG9zaXRpb25lZCgpIHx8IGxheWVyLT5oYXNUcmFuc2Zvcm0oKTsKIH0KIApAQCAtMTA5
Miw3ICsxMDkyLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0RmlsdGVyQmFja2VuZE5lZWRzUmVw
YWludGluZ0luUmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0LAogYm9vbCBSZW5kZXJMYXllcjo6
aGFzQW5jZXN0b3JXaXRoRmlsdGVyT3V0c2V0cygpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBS
ZW5kZXJMYXllciogY3VyciA9IHRoaXM7IGN1cnI7IGN1cnIgPSBjdXJyLT5wYXJlbnQoKSkgewot
ICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIgPSBjdXJyLT5yZW5kZXJlcigp
OworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY3Vyci0+cmVuZGVyZXIoKTsKICAg
ICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT5oYXNGaWx0ZXJPdXRzZXRzKCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjcyLDcgKzE2NzIsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpCiAKICAgICB1cGRhdGVDb21wb3NpdGluZ0xh
eWVyc0FmdGVyU2Nyb2xsKCk7CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICBSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29udGFp
bmVyRm9yUmVwYWludCgpOwogICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCk7
CiAgICAgaWYgKGZyYW1lKSB7CiAgICAgICAgIC8vIFRoZSBjYXJldCByZWN0IG5lZWRzIHRvIGJl
IGludmFsaWRhdGVkIGFmdGVyIHNjcm9sbGluZwpAQCAtNDcwOCw3ICs0NzA4LDcgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6c2V0QmFja2luZ05lZWRzUmVwYWludEluUmVjdChjb25zdCBMYXlvdXRSZWN0
JiByKQogfQogCiAvLyBTaW5jZSB3ZSdyZSBvbmx5IHBhaW50aW5nIG5vbi1jb21wb3NpdGVkIGxh
eWVycywgd2Uga25vdyB0aGF0IHRoZXkgYWxsIHNoYXJlIHRoZSBzYW1lIHJlcGFpbnRDb250YWlu
ZXIuCi12b2lkIFJlbmRlckxheWVyOjpyZXBhaW50SW5jbHVkaW5nTm9uQ29tcG9zaXRpbmdEZXNj
ZW5kYW50cyhSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikKK3ZvaWQgUmVu
ZGVyTGF5ZXI6OnJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRzKFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCiB7CiAgICAgcmVuZGVyZXIo
KS0+cmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHJlbmRlcmVyKCktPmNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCBiOWRjNWQ3YzdjYzZkMzIwYWZlNTdj
NDcxNzBmMzk1NTgxMmVlMGJiLi5jZTU3YmRlMDc2ZGQ3NGMyNWZkOGEwMTQ3NDc5NzEwODBmODFi
ZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMjQ1LDEwICsy
NDUsMTAgQEAgY2xhc3MgUmVuZGVyTGF5ZXIgOiBwdWJsaWMgU2Nyb2xsYWJsZUFyZWEgewogcHVi
bGljOgogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJSZXBsaWNhOwogCi0gICAgUmVuZGVyTGF5ZXIo
UmVuZGVyQm94TW9kZWxPYmplY3QqKTsKKyAgICBSZW5kZXJMYXllcihSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0Kik7CiAgICAgflJlbmRlckxheWVyKCk7CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyOyB9CisgICAgUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVy
OyB9CiAgICAgUmVuZGVyQm94KiByZW5kZXJCb3goKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVy
ICYmIG1fcmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChtX3JlbmRlcmVyKSA6IDA7IH0K
ICAgICBSZW5kZXJMYXllciogcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAg
ICBSZW5kZXJMYXllciogcHJldmlvdXNTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91
czsgfQpAQCAtMjY5LDcgKzI2OSw3IEBAIHB1YmxpYzoKICAgICAvLyBpZiBsYXllciBjb21wb3Np
dGluZyBpcyBiZWluZyB1c2VkLAogICAgIHZvaWQgc2V0QmFja2luZ05lZWRzUmVwYWludCgpOwog
ICAgIHZvaWQgc2V0QmFja2luZ05lZWRzUmVwYWludEluUmVjdChjb25zdCBMYXlvdXRSZWN0Jik7
IC8vIHIgaXMgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2Ugb2YgdGhlIGxheWVyJ3MgcmVuZGVyIG9i
amVjdAotICAgIHZvaWQgcmVwYWludEluY2x1ZGluZ05vbkNvbXBvc2l0aW5nRGVzY2VuZGFudHMo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpOworICAgIHZvaWQgcmVwYWlu
dEluY2x1ZGluZ05vbkNvbXBvc2l0aW5nRGVzY2VuZGFudHMoUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lcik7CiAjZW5kaWYKIAogICAgIHZvaWQgc3R5bGVDaGFuZ2Vk
KFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKQEAgLTg1OSw3
ICs4NTksNyBAQCBwcml2YXRlOgogCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlckxheWVyQmFja2lu
ZzsKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOwotICAgIGZyaWVuZCBj
bGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdDsKKyAgICBmcmllbmQgY2xhc3MgUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdDsKIAogICAgIC8vIE9ubHkgc2FmZSB0byBjYWxsIGZyb20gUmVuZGVyQm94
TW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcihSZW5kZXJBcmVuYSopCiAgICAgdm9pZCBkZXN0cm95
KFJlbmRlckFyZW5hKik7CkBAIC05MjcsNyArOTI3LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
bV9oYXNGaWx0ZXJJbmZvIDogMTsKICNlbmRpZgogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IG1fcmVuZGVyZXI7CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogbV9yZW5kZXJlcjsK
IAogICAgIFJlbmRlckxheWVyKiBtX3BhcmVudDsKICAgICBSZW5kZXJMYXllciogbV9wcmV2aW91
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAppbmRl
eCAwZjQyZDNmYjkxYjE3OTM1OTc5ZmRiMThkYmQwNmZjYTY4ZmJjODRjLi4yMGNjOWI5ZDY3MzI2
N2IyYzYyYmE1NzI1NWRkNDRhNWI2MjM5NmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5oCkBAIC0xNzEsNyArMTcxLDcgQEAgcHJpdmF0ZToKICAg
ICAKICAgICBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoY29u
c3QgU3RyaW5nJik7CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIoKSBjb25z
dCB7IHJldHVybiBtX293bmluZ0xheWVyLT5yZW5kZXJlcigpOyB9CisgICAgUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX293bmluZ0xheWVyLT5y
ZW5kZXJlcigpOyB9CiAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBjb21wb3NpdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9vd25pbmdMYXllci0+Y29tcG9zaXRvcigpOyB9CiAKICAgICB2b2lkIHVw
ZGF0ZUludGVybmFsSGllcmFyY2h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDkwZmQ4NTRmNTVlN2JlYTlhMjNhZWI5
YTExZGY4YTQ3MDEyNGM3ZjUuLjVkNjRiZDU4MDQ5MzFkM2Q1NGQ5YTIzZmY2MjAyNjJiNGJhZThj
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCkBAIC01MDgsNyArNTA4LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnVwZGF0ZUJhY2tpbmcoUmVuZGVyTGF5ZXIqIGxheWVyLCBDb21wb3NpdGluZ0NoYW5nZVIKICAg
ICAgICAgICAgIC8vIGl0cyByZXBsaWNhIEdyYXBoaWNzTGF5ZXIuIEluIHByYWN0aWNlIHRoaXMg
c2hvdWxkIG5ldmVyIGhhcHBlbiBiZWNhdXNlIHJlZmxlY3RlZSBhbmQgcmVmbGVjdGlvbiAKICAg
ICAgICAgICAgIC8vIGFyZSBib3RoIGVpdGhlciBjb21wb3NpdGVkLCBvciBub3QgY29tcG9zaXRl
ZC4KICAgICAgICAgICAgIGlmIChsYXllci0+aXNSZWZsZWN0aW9uKCkpIHsKLSAgICAgICAgICAg
ICAgICBSZW5kZXJMYXllciogc291cmNlTGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGxh
eWVyLT5yZW5kZXJlcigpLT5wYXJlbnQoKSktPmxheWVyKCk7CisgICAgICAgICAgICAgICAgUmVu
ZGVyTGF5ZXIqIHNvdXJjZUxheWVyID0gdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KGxheWVy
LT5yZW5kZXJlcigpLT5wYXJlbnQoKSktPmxheWVyKCk7CiAgICAgICAgICAgICAgICAgaWYgKFJl
bmRlckxheWVyQmFja2luZyogYmFja2luZyA9IHNvdXJjZUxheWVyLT5iYWNraW5nKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+cmVwbGlj
YUxheWVyKCkgPT0gbGF5ZXItPmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpKTsKICAgICAgICAg
ICAgICAgICAgICAgYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5zZXRSZXBsaWNhdGVkQnlMYXll
cigwKTsKQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVw
YWludE9uQ29tcG9zaXRpbmdDaGFuZ2UoUmVuZGVyTGF5ZXIqIGxheWVyKQogICAgIGlmIChsYXll
ci0+cmVuZGVyZXIoKSAhPSBtX3JlbmRlclZpZXcgJiYgIWxheWVyLT5yZW5kZXJlcigpLT5wYXJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIgPSBsYXllci0+cmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOwor
ICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBsYXllci0+
cmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOwogICAgIGlmICghcmVwYWludENvbnRh
aW5lcikKICAgICAgICAgcmVwYWludENvbnRhaW5lciA9IG1fcmVuZGVyVmlldzsKIApAQCAtMTQz
Nyw3ICsxNDM3LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9z
aXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciogbGF5ZXIpIGMKICAgICAvLyBUaGUgY29tcG9z
aXRpbmcgc3RhdGUgb2YgYSByZWZsZWN0aW9uIHNob3VsZCBtYXRjaCB0aGF0IG9mIGl0cyByZWZs
ZWN0ZWQgbGF5ZXIuCiAgICAgaWYgKGxheWVyLT5pc1JlZmxlY3Rpb24oKSkgewogICAgICAgICBy
ZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsgLy8gVGhlIFJlbmRlclJlcGxpY2EncyBwYXJl
bnQgaXMgdGhlIG9iamVjdCBiZWluZyByZWZsZWN0ZWQuCi0gICAgICAgIGxheWVyID0gdG9SZW5k
ZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlciktPmxheWVyKCk7CisgICAgICAgIGxheWVyID0gdG9S
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KHJlbmRlcmVyKS0+bGF5ZXIoKTsKICAgICB9CiAgICAg
Ly8gVGhlIHJvb3QgbGF5ZXIgYWx3YXlzIGhhcyBhIGNvbXBvc2l0aW5nIGxheWVyLCBidXQgaXQg
bWF5IG5vdCBoYXZlIGJhY2tpbmcuCiAgICAgcmV0dXJuIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JU
cmFuc2Zvcm0ocmVuZGVyZXIpCkBAIC0xNTAxLDcgKzE1MDEsNyBAQCBjb25zdCBjaGFyKiBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbkZvckNvbXBvc2l0aW5nKGNvbnN0IFJlbmRlckxheWVy
KiBsYXllcgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBsYXllci0+cmVuZGVyZXIoKTsK
ICAgICBpZiAobGF5ZXItPmlzUmVmbGVjdGlvbigpKSB7CiAgICAgICAgIHJlbmRlcmVyID0gcmVu
ZGVyZXItPnBhcmVudCgpOwotICAgICAgICBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qo
cmVuZGVyZXIpLT5sYXllcigpOworICAgICAgICBsYXllciA9IHRvUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdChyZW5kZXJlciktPmxheWVyKCk7CiAgICAgfQogCiAgICAgaWYgKHJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JUcmFuc2Zvcm0ocmVuZGVyZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDBkMmY0OGRkNTEwMWU3ZjRjN2MzNGVmYTA2
MjNhOGIwYjg5MDQ4NzQuLjk1YjU5NTQ4NTMxZmU5Y2NhZThjYzc1MzZmNjdmZDZkZjRlYWFhOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAg
LTE3MDIsNyArMTcwMiw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6c2V0U2VsZWN0aW9uU3Rh
dGUoU2VsZWN0aW9uU3RhdGUgc3RhdGUpCiAgICAgICAgICAgICByb290LT5zZXRIYXNTZWxlY3Rl
ZENoaWxkcmVuKHN0YXRlICE9IFNlbGVjdGlvbk5vbmUpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRl
ckxpc3RNYXJrZXI6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KQorTGF5b3V0UmVj
dCBSZW5kZXJMaXN0TWFya2VyOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50
KQogewogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCmluZGV4IGQ4OGQ5MjJiMGU0MjgzY2NhNDU2MDM1ZjRl
ZWIxMTdkODJjOGY1MmQuLmIyZjUyNWFmZDdkN2JmZGJkZTNhNjUxY2I5YmMzMWYyMDQ2MjJjZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaApAQCAtNjUs
NyArNjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gIWlz
SW1hZ2UoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlv
blN0YXRlKTsKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJs
ZUNvbnRlbnQgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZv
clJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9v
bCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lk
IHVwZGF0ZU1hcmdpbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKaW5kZXggZGViNjYwNzljN2Y5ZTk5MDkwYjBlZmRkNjA1MjQ0Y2EyNzJjNDA1Yy4uMzllYjMw
NGFjMGI3ZDA3OTQyYTM5NjhkYTMwZGJiZDJhNzFkMmM2YSAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFJlbmRlck9i
amVjdDo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZv
cmVDaGlsZCkKICAgICAvLyBUbyBhdm9pZCB0aGUgcHJvYmxlbSBhbGx0b2dldGhlciwgZGV0ZWN0
IGVhcmx5IGlmIHdlJ3JlIGluc2lkZSBhIGhpZGRlbiBTVkcgc3VidHJlZQogICAgIC8vIGFuZCBz
dG9wIGNyZWF0aW5nIGxheWVycyBhdCBhbGwgZm9yIHRoZXNlIGNhc2VzIC0gdGhleSdyZSBub3Qg
dXNlZCBhbnl3YXlzLgogICAgIGlmIChuZXdDaGlsZC0+aGFzTGF5ZXIoKSAmJiAhbGF5ZXJDcmVh
dGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkpCi0gICAgICAgIHRvUmVuZGVyQm94TW9kZWxPYmplY3Qo
bmV3Q2hpbGQpLT5sYXllcigpLT5yZW1vdmVPbmx5VGhpc0xheWVyKCk7CisgICAgICAgIHRvUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdChuZXdDaGlsZCktPmxheWVyKCktPnJlbW92ZU9ubHlUaGlz
TGF5ZXIoKTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZUNoaWxkKFJlbmRlck9iamVj
dCogb2xkQ2hpbGQpCkBAIC00NDEsNyArNDQxLDcgQEAgc3RhdGljIHZvaWQgYWRkTGF5ZXJzKFJl
bmRlck9iamVjdCogb2JqLCBSZW5kZXJMYXllciogcGFyZW50TGF5ZXIsIFJlbmRlck9iamVjdCoK
ICAgICAgICAgICAgIGJlZm9yZUNoaWxkID0gbmV3T2JqZWN0LT5wYXJlbnQoKS0+ZmluZE5leHRM
YXllcihwYXJlbnRMYXllciwgbmV3T2JqZWN0KTsKICAgICAgICAgICAgIG5ld09iamVjdCA9IDA7
CiAgICAgICAgIH0KLSAgICAgICAgcGFyZW50TGF5ZXItPmFkZENoaWxkKHRvUmVuZGVyQm94TW9k
ZWxPYmplY3Qob2JqKS0+bGF5ZXIoKSwgYmVmb3JlQ2hpbGQpOworICAgICAgICBwYXJlbnRMYXll
ci0+YWRkQ2hpbGQodG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KG9iaiktPmxheWVyKCksIGJl
Zm9yZUNoaWxkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDY1LDcgKzQ2NSw3IEBA
IHZvaWQgUmVuZGVyT2JqZWN0OjpyZW1vdmVMYXllcnMoUmVuZGVyTGF5ZXIqIHBhcmVudExheWVy
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaGFzTGF5ZXIoKSkgewotICAgICAgICBwYXJl
bnRMYXllci0+cmVtb3ZlQ2hpbGQodG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIo
KSk7CisgICAgICAgIHBhcmVudExheWVyLT5yZW1vdmVDaGlsZCh0b1JlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QodGhpcyktPmxheWVyKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00
NzksNyArNDc5LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6Om1vdmVMYXllcnMoUmVuZGVyTGF5ZXIq
IG9sZFBhcmVudCwgUmVuZGVyTGF5ZXIqIG5ld1BhcmVudCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKGhhc0xheWVyKCkpIHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gdG9SZW5k
ZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKTsKKyAgICAgICAgUmVuZGVyTGF5ZXIqIGxh
eWVyID0gdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KHRoaXMpLT5sYXllcigpOwogICAgICAg
ICBBU1NFUlQob2xkUGFyZW50ID09IGxheWVyLT5wYXJlbnQoKSk7CiAgICAgICAgIGlmIChvbGRQ
YXJlbnQpCiAgICAgICAgICAgICBvbGRQYXJlbnQtPnJlbW92ZUNoaWxkKGxheWVyKTsKQEAgLTQ5
OSw3ICs0OTksNyBAQCBSZW5kZXJMYXllciogUmVuZGVyT2JqZWN0OjpmaW5kTmV4dExheWVyKFJl
bmRlckxheWVyKiBwYXJlbnRMYXllciwgUmVuZGVyT2JqZWN0KgogICAgICAgICByZXR1cm4gMDsK
IAogICAgIC8vIFN0ZXAgMTogSWYgb3VyIGxheWVyIGlzIGEgY2hpbGQgb2YgdGhlIGRlc2lyZWQg
cGFyZW50LCB0aGVuIHJldHVybiBvdXIgbGF5ZXIuCi0gICAgUmVuZGVyTGF5ZXIqIG91ckxheWVy
ID0gaGFzTGF5ZXIoKSA/IHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCkgOiAw
OworICAgIFJlbmRlckxheWVyKiBvdXJMYXllciA9IGhhc0xheWVyKCkgPyB0b1JlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCkgOiAwOwogICAgIGlmIChvdXJMYXllciAmJiBv
dXJMYXllci0+cGFyZW50KCkgPT0gcGFyZW50TGF5ZXIpCiAgICAgICAgIHJldHVybiBvdXJMYXll
cjsKIApAQCAtNTMxLDcgKzUzMSw3IEBAIFJlbmRlckxheWVyKiBSZW5kZXJPYmplY3Q6OmVuY2xv
c2luZ0xheWVyKCkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIGN1cnIgPSB0aGlz
OwogICAgIHdoaWxlIChjdXJyKSB7Ci0gICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IGN1cnIt
Pmhhc0xheWVyKCkgPyB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGN1cnIpLT5sYXllcigpIDogMDsK
KyAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gY3Vyci0+aGFzTGF5ZXIoKSA/IHRvUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdChjdXJyKS0+bGF5ZXIoKSA6IDA7CiAgICAgICAgIGlmIChsYXll
cikKICAgICAgICAgICAgIHJldHVybiBsYXllcjsKICAgICAgICAgY3VyciA9IGN1cnItPnBhcmVu
dCgpOwpAQCAtNzE4LDEzICs3MTgsMTMgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmludmFsaWRhdGVD
b250YWluZXJQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKIHZvaWQgUmVuZGVyT2JqZWN0OjpzZXRM
YXllck5lZWRzRnVsbFJlcGFpbnQoKQogewogICAgIEFTU0VSVChoYXNMYXllcigpKTsKLSAgICB0
b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5zZXRSZXBhaW50U3RhdHVzKE5l
ZWRzRnVsbFJlcGFpbnQpOworICAgIHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCh0aGlzKS0+
bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50KTsKIH0KIAogdm9pZCBS
ZW5kZXJPYmplY3Q6OnNldExheWVyTmVlZHNGdWxsUmVwYWludEZvclBvc2l0aW9uZWRNb3ZlbWVu
dExheW91dCgpCiB7CiAgICAgQVNTRVJUKGhhc0xheWVyKCkpOwotICAgIHRvUmVuZGVyQm94TW9k
ZWxPYmplY3QodGhpcyktPmxheWVyKCktPnNldFJlcGFpbnRTdGF0dXMoTmVlZHNGdWxsUmVwYWlu
dEZvclBvc2l0aW9uZWRNb3ZlbWVudExheW91dCk7CisgICAgdG9SZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0KHRoaXMpLT5sYXllcigpLT5zZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnRG
b3JQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQpOwogfQogCiBSZW5kZXJCbG9jayogUmVuZGVyT2Jq
ZWN0Ojpjb250YWluaW5nQmxvY2soKSBjb25zdApAQCAtMTIxMSwxMyArMTIxMSwxMyBAQCB2b2lk
IFJlbmRlck9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKQogewog
fQogCi1SZW5kZXJCb3hNb2RlbE9iamVjdCogUmVuZGVyT2JqZWN0Ojpjb250YWluZXJGb3JSZXBh
aW50KCkgY29uc3QKK1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIFJlbmRlck9iamVjdDo6Y29u
dGFpbmVyRm9yUmVwYWludCgpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyogdiA9IHZpZXcoKTsK
ICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gMDsKKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyID0gMDsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKICAgICBpZiAodi0+dXNlc0NvbXBvc2l0aW5nKCkpIHsKQEAgLTEyNDcsNyArMTI0Nyw3
IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5lckZvclJlcGFp
bnQoKSBjb25zdAogICAgIHJldHVybiByZXBhaW50Q29udGFpbmVyOwogfQogCi12b2lkIFJlbmRl
ck9iamVjdDo6cmVwYWludFVzaW5nQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiByLCBib29sIGltbWVkaWF0ZSkKK3ZvaWQg
UmVuZGVyT2JqZWN0OjpyZXBhaW50VXNpbmdDb250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYgciwgYm9vbCBpbW1lZGlh
dGUpCiB7CiAgICAgaWYgKCFyZXBhaW50Q29udGFpbmVyKSB7CiAgICAgICAgIHZpZXcoKS0+cmVw
YWludFZpZXdSZWN0YW5nbGUociwgaW1tZWRpYXRlKTsKQEAgLTEzMDAsNyArMTMwMCw3IEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjpyZXBhaW50KGJvb2wgaW1tZWRpYXRlKQogICAgIGlmICh2aWV3LT5w
cmludGluZygpKQogICAgICAgICByZXR1cm47IC8vIERvbid0IHJlcGFpbnQgaWYgd2UncmUgcHJp
bnRpbmcuCiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IGNv
bnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyID0gY29udGFpbmVyRm9yUmVwYWludCgpOwogICAgIHJlcGFpbnRVc2luZ0Nv
bnRhaW5lcihyZXBhaW50Q29udGFpbmVyID8gcmVwYWludENvbnRhaW5lciA6IHZpZXcsIGNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpLCBpbW1lZGlhdGUpOwog
fQogCkBAIC0xMzIwLDcgKzEzMjAsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6cmVwYWludFJlY3Rh
bmdsZShjb25zdCBMYXlvdXRSZWN0JiByLCBib29sIGltbWVkaWF0ZSkKICAgICAvLyByZXBhaW50
IGNvbnRhaW5lcnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMw
OAogICAgIGRpcnR5UmVjdC5tb3ZlKHZpZXctPmxheW91dERlbHRhKCkpOwogCi0gICAgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBjb250YWluZXJGb3JSZXBhaW50KCk7
CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciA9IGNvbnRh
aW5lckZvclJlcGFpbnQoKTsKICAgICBjb21wdXRlUmVjdEZvclJlcGFpbnQocmVwYWludENvbnRh
aW5lciwgZGlydHlSZWN0KTsKICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRh
aW5lciA/IHJlcGFpbnRDb250YWluZXIgOiB2aWV3LCBkaXJ0eVJlY3QsIGltbWVkaWF0ZSk7CiB9
CkBAIC0xMzMwLDcgKzEzMzAsNyBAQCBJbnRSZWN0IFJlbmRlck9iamVjdDo6cGl4ZWxTbmFwcGVk
QWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkgY29uc3QKICAgICByZXR1cm4gcGl4ZWxTbmFw
cGVkSW50UmVjdChhYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSk7CiB9CiAKLWJvb2wgUmVu
ZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYgb2xkQm91bmRzLCBjb25zdCBM
YXlvdXRSZWN0JiBvbGRPdXRsaW5lQm94LCBjb25zdCBMYXlvdXRSZWN0KiBuZXdCb3VuZHNQdHIs
IGNvbnN0IExheW91dFJlY3QqIG5ld091dGxpbmVCb3hSZWN0UHRyKQorYm9vbCBSZW5kZXJPYmpl
Y3Q6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFJlY3QmIG9sZEJvdW5kcywgY29uc3QgTGF5
b3V0UmVjdCYgb2xkT3V0bGluZUJveCwgY29uc3QgTGF5b3V0UmVjdCogbmV3Qm91bmRzUHRyLCBj
b25zdCBMYXlvdXRSZWN0KiBuZXdPdXRsaW5lQm94UmVjdFB0cikKIHsKICAgICBSZW5kZXJWaWV3
KiB2ID0gdmlldygpOwogICAgIGlmICh2LT5wcmludGluZygpKQpAQCAtMTQ1NCwyMCArMTQ1NCwy
MCBAQCBib29sIFJlbmRlck9iamVjdDo6Y2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkgY29u
c3QKICAgICByZXR1cm4gIWRvY3VtZW50KCktPnZpZXcoKS0+bmVlZHNGdWxsUmVwYWludCgpICYm
ICFoYXNMYXllcigpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6cmVjdFdpdGhPdXRs
aW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5
b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6cmVj
dFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QKIHsKICAgICBMYXlvdXRS
ZWN0IHIoY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcikpOwog
ICAgIHIuaW5mbGF0ZShvdXRsaW5lV2lkdGgpOwogICAgIHJldHVybiByOwogfQogCi1MYXlvdXRS
ZWN0IFJlbmRlck9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OmNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqKSBjb25zdAogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiB9CiAK
LXZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNv
bnN0Cit2b2lkIFJlbmRlck9iamVjdDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wg
Zml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXIgPT0gdGhpcykKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTQ5OCw3ICsxNDk4LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmNvbXB1
dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwK
ICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCosIEZsb2F0UmVjdCYsIGJvb2wpIGNvbnN0Cit2b2lkIFJl
bmRlck9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCosIEZsb2F0UmVjdCYsIGJvb2wpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CkBAIC0xNjU5LDcgKzE2NTksNyBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyT2Jq
ZWN0OjphZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIHVuc2lnbgog
ICAgICAgICAvLyBUZXh0IG5vZGVzIHNoYXJlIHN0eWxlIHdpdGggdGhlaXIgcGFyZW50cyBidXQg
dHJhbnNmb3JtcyBkb24ndCBhcHBseSB0byB0aGVtLAogICAgICAgICAvLyBoZW5jZSB0aGUgIWlz
VGV4dCgpIGNoZWNrLgogICAgICAgICAvLyBGSVhNRTogd2hlbiB0cmFuc2Zvcm1zIGFyZSB0YWtl
biBpbnRvIGFjY291bnQgZm9yIG92ZXJmbG93LCB3ZSB3aWxsIG5lZWQgdG8gZG8gYSBsYXlvdXQu
Ci0gICAgICAgIGlmICghaXNUZXh0KCkgJiYgKCFoYXNMYXllcigpIHx8ICF0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkpIHsKKyAgICAgICAgaWYg
KCFpc1RleHQoKSAmJiAoIWhhc0xheWVyKCkgfHwgIXRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCh0aGlzKS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkpKSB7CiAgICAgICAgICAgICAvLyBXZSBu
ZWVkIHRvIHNldCBhdCBsZWFzdCBTaW1wbGlmaWVkTGF5b3V0LCBidXQgaWYgUG9zaXRpb25lZE1v
dmVtZW50T25seSBpcyBhbHJlYWR5IHNldAogICAgICAgICAgICAgLy8gdGhlbiB3ZSBhY3R1YWxs
eSBuZWVkIFNpbXBsaWZpZWRMYXlvdXRBbmRQb3NpdGlvbmVkTW92ZW1lbnQuCiAgICAgICAgICAg
ICBpZiAoIWhhc0xheWVyKCkpCkBAIC0xNjc1LDcgKzE2NzUsNyBAQCBTdHlsZURpZmZlcmVuY2Ug
UmVuZGVyT2JqZWN0OjphZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYs
IHVuc2lnbgogICAgIC8vIElmIG9wYWNpdHkgY2hhbmdlZCwgYW5kIHdlIGFyZSBub3QgY29tcG9z
aXRlZCwgbmVlZCB0byByZXBhaW50IChhbHNvCiAgICAgLy8gaWdub3JpbmcgdGV4dCBub2RlcykK
ICAgICBpZiAoY29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgJiBDb250ZXh0U2Vuc2l0aXZlUHJv
cGVydHlPcGFjaXR5KSB7Ci0gICAgICAgIGlmICghaXNUZXh0KCkgJiYgKCFoYXNMYXllcigpIHx8
ICF0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkp
CisgICAgICAgIGlmICghaXNUZXh0KCkgJiYgKCFoYXNMYXllcigpIHx8ICF0b1JlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpKSkKICAgICAgICAg
ICAgIGRpZmYgPSBTdHlsZURpZmZlcmVuY2VSZXBhaW50TGF5ZXI7CiAgICAgICAgIGVsc2UgaWYg
KGRpZmYgPCBTdHlsZURpZmZlcmVuY2VSZWNvbXBvc2l0ZUxheWVyKQogICAgICAgICAgICAgZGlm
ZiA9IFN0eWxlRGlmZmVyZW5jZVJlY29tcG9zaXRlTGF5ZXI7CkBAIC0xNjgzLDcgKzE2ODMsNyBA
QCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyT2JqZWN0OjphZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5
bGVEaWZmZXJlbmNlIGRpZmYsIHVuc2lnbgogICAgIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykK
ICAgICBpZiAoKGNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzICYgQ29udGV4dFNlbnNpdGl2ZVBy
b3BlcnR5RmlsdGVyKSAmJiBoYXNMYXllcigpKSB7Ci0gICAgICAgIFJlbmRlckxheWVyKiBsYXll
ciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCk7CisgICAgICAgIFJlbmRl
ckxheWVyKiBsYXllciA9IHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCh0aGlzKS0+bGF5ZXIo
KTsKICAgICAgICAgaWYgKCFsYXllci0+aXNDb21wb3NpdGVkKCkgfHwgbGF5ZXItPnBhaW50c1dp
dGhGaWx0ZXJzKCkpCiAgICAgICAgICAgICBkaWZmID0gU3R5bGVEaWZmZXJlbmNlUmVwYWludExh
eWVyOwogICAgICAgICBlbHNlIGlmIChkaWZmIDwgU3R5bGVEaWZmZXJlbmNlUmVjb21wb3NpdGVM
YXllcikKQEAgLTE2OTQsOCArMTY5NCw4IEBAIFN0eWxlRGlmZmVyZW5jZSBSZW5kZXJPYmplY3Q6
OmFkanVzdFN0eWxlRGlmZmVyZW5jZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgdW5zaWduCiAgICAg
Ly8gVGhlIGFuc3dlciB0byByZXF1aXJlc0xheWVyKCkgZm9yIHBsdWdpbnMgYW5kIGlmcmFtZXMg
Y2FuIGNoYW5nZSBvdXRzaWRlIG9mIHRoZSBzdHlsZSBzeXN0ZW0sCiAgICAgLy8gc2luY2UgaXQg
ZGVwZW5kcyBvbiB3aGV0aGVyIHdlIGRlY2lkZSB0byBjb21wb3NpdGUgdGhlc2UgZWxlbWVudHMu
IFdoZW4gdGhlIGxheWVyIHN0YXR1cyBvZgogICAgIC8vIG9uZSBvZiB0aGVzZSBlbGVtZW50cyBj
aGFuZ2VzLCB3ZSBuZWVkIHRvIGZvcmNlIGEgbGF5b3V0LgotICAgIGlmIChkaWZmID09IFN0eWxl
RGlmZmVyZW5jZUVxdWFsICYmIHN0eWxlKCkgJiYgaXNCb3hNb2RlbE9iamVjdCgpKSB7Ci0gICAg
ICAgIGlmIChoYXNMYXllcigpICE9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPnJlcXVp
cmVzTGF5ZXIoKSkKKyAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VFcXVhbCAmJiBzdHls
ZSgpICYmIGlzVHJhbnNmb3JtYWJsZU9iamVjdCgpKSB7CisgICAgICAgIGlmIChoYXNMYXllcigp
ICE9IHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCh0aGlzKS0+cmVxdWlyZXNMYXllcigpKQog
ICAgICAgICAgICAgZGlmZiA9IFN0eWxlRGlmZmVyZW5jZUxheW91dDsKICAgICB9CiAjZWxzZQpA
QCAtMTk5Nyw3ICsxOTk3LDcgQEAgRmxvYXRQb2ludCBSZW5kZXJPYmplY3Q6OmFic29sdXRlVG9M
b2NhbChjb25zdCBGbG9hdFBvaW50JiBjb250YWluZXJQb2ludCwgYm9vbAogICAgIHJldHVybiB0
cmFuc2Zvcm1TdGF0ZS5sYXN0UGxhbmFyUG9pbnQoKTsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6
Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5z
Zm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0
Cit2b2lkIFJlbmRlck9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9y
bXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JO
b3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09
IHRoaXMpCiAgICAgICAgIHJldHVybjsKQEAgLTIwMjIsNyArMjAyMiw3IEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBiCiAgICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVy
LCBmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUsIERvTm90QXBwbHlDb250YWlu
ZXJGbGlwLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0
OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNl
c3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25z
dCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25z
dCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9t
ZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgQVNTRVJUX1VOVVNFRChhbmNlc3Rv
clRvU3RvcEF0LCBhbmNlc3RvclRvU3RvcEF0ICE9IHRoaXMpOwogCkBAIC0yMDU1LDcgKzIwNTUs
NyBAQCBib29sIFJlbmRlck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihj
b25zdCBSZW5kZXJPYmplY3QqIGNvbnRhaW5lcgogI2lmIEVOQUJMRSgzRF9SRU5ERVJJTkcpCiAg
ICAgLy8gaGFzVHJhbnNmb3JtKCkgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIG9iamVjdCBoYXMgdHJh
bnNmb3JtLCB0cmFuc2Zvcm0tc3R5bGUgb3IgcGVyc3BlY3RpdmUuIFdlIGp1c3QgY2FyZSBhYm91
dCB0cmFuc2Zvcm0sCiAgICAgLy8gc28gY2hlY2sgdGhlIGxheWVyJ3MgdHJhbnNmb3JtIGRpcmVj
dGx5LgotICAgIHJldHVybiAoaGFzTGF5ZXIoKSAmJiB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRo
aXMpLT5sYXllcigpLT50cmFuc2Zvcm0oKSkgfHwgKGNvbnRhaW5lck9iamVjdCAmJiBjb250YWlu
ZXJPYmplY3QtPnN0eWxlKCktPmhhc1BlcnNwZWN0aXZlKCkpOworICAgIHJldHVybiAoaGFzTGF5
ZXIoKSAmJiB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCktPnRyYW5z
Zm9ybSgpKSB8fCAoY29udGFpbmVyT2JqZWN0ICYmIGNvbnRhaW5lck9iamVjdC0+c3R5bGUoKS0+
aGFzUGVyc3BlY3RpdmUoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250YWluZXJPYmpl
Y3QpOwogICAgIHJldHVybiBoYXNUcmFuc2Zvcm0oKTsKQEAgLTIwNjcsMTQgKzIwNjcsMTQgQEAg
dm9pZCBSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVuZGVy
T2JqZWN0KiBjb250YWluZXJPYmplY3QKICAgICB0cmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7CiAg
ICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvZmZzZXRJbkNvbnRhaW5lci53aWR0aCgpLCBvZmZzZXRJ
bkNvbnRhaW5lci5oZWlnaHQoKSk7CiAgICAgUmVuZGVyTGF5ZXIqIGxheWVyOwotICAgIGlmICho
YXNMYXllcigpICYmIChsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVy
KCkpICYmIGxheWVyLT50cmFuc2Zvcm0oKSkKKyAgICBpZiAoaGFzTGF5ZXIoKSAmJiAobGF5ZXIg
PSB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCkpICYmIGxheWVyLT50
cmFuc2Zvcm0oKSkKICAgICAgICAgdHJhbnNmb3JtLm11bHRpcGx5KGxheWVyLT5jdXJyZW50VHJh
bnNmb3JtKCkpOwogICAgIAogI2lmIEVOQUJMRSgzRF9SRU5ERVJJTkcpCiAgICAgaWYgKGNvbnRh
aW5lck9iamVjdCAmJiBjb250YWluZXJPYmplY3QtPmhhc0xheWVyKCkgJiYgY29udGFpbmVyT2Jq
ZWN0LT5zdHlsZSgpLT5oYXNQZXJzcGVjdGl2ZSgpKSB7CiAgICAgICAgIC8vIFBlcnBzZWN0aXZl
IG9uIHRoZSBjb250YWluZXIgYWZmZWN0cyB1cywgc28gd2UgaGF2ZSB0byBmYWN0b3IgaXQgaW4g
aGVyZS4KICAgICAgICAgQVNTRVJUKGNvbnRhaW5lck9iamVjdC0+aGFzTGF5ZXIoKSk7Ci0gICAg
ICAgIEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4gPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0
KGNvbnRhaW5lck9iamVjdCktPmxheWVyKCktPnBlcnNwZWN0aXZlT3JpZ2luKCk7CisgICAgICAg
IEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4gPSB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3QoY29udGFpbmVyT2JqZWN0KS0+bGF5ZXIoKS0+cGVyc3BlY3RpdmVPcmlnaW4oKTsKIAogICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwZXJzcGVjdGl2ZU1hdHJpeDsKICAgICAgICAgcGVy
c3BlY3RpdmVNYXRyaXguYXBwbHlQZXJzcGVjdGl2ZShjb250YWluZXJPYmplY3QtPnN0eWxlKCkt
PnBlcnNwZWN0aXZlKCkpOwpAQCAtMjA4OCw3ICsyMDg4LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6
OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXJP
YmplY3QKICNlbmRpZgogfQogCi1GbG9hdFF1YWQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFp
bmVyUXVhZChjb25zdCBGbG9hdFF1YWQmIGxvY2FsUXVhZCwgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAorRmxv
YXRRdWFkIFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFk
JiBsb2NhbFF1YWQsIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IGJvb2wgZml4ZWQsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIC8vIFRyYWNrIHRoZSBw
b2ludCBhdCB0aGUgY2VudGVyIG9mIHRoZSBxdWFkJ3MgYm91bmRpbmcgYm94LiBBcyBtYXBMb2Nh
bFRvQ29udGFpbmVyKCkgY2FsbHMgb2Zmc2V0RnJvbUNvbnRhaW5lcigpLAogICAgIC8vIGl0IHdp
bGwgdXNlIHRoYXQgcG9pbnQgYXMgdGhlIHJlZmVyZW5jZSBwb2ludCB0byBkZWNpZGUgd2hpY2gg
Y29sdW1uJ3MgdHJhbnNmb3JtIHRvIGFwcGx5IGluIG11bHRpcGxlLWNvbHVtbiBibG9ja3MuCkBA
IC0yMDk5LDcgKzIwOTksNyBAQCBGbG9hdFF1YWQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFp
bmVyUXVhZChjb25zdCBGbG9hdFF1YWQmIGxvY2FsUXVhZCwgUmVuZGVyQgogICAgIHJldHVybiB0
cmFuc2Zvcm1TdGF0ZS5sYXN0UGxhbmFyUXVhZCgpOwogfQogCi1GbG9hdFBvaW50IFJlbmRlck9i
amVjdDo6bG9jYWxUb0NvbnRhaW5lclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsUG9pbnQs
IFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29s
KiB3YXNGaXhlZCkgY29uc3QKK0Zsb2F0UG9pbnQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFp
bmVyUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgbG9jYWxQb2ludCwgUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCogd2FzRml4ZWQpIGNv
bnN0CiB7CiAgICAgVHJhbnNmb3JtU3RhdGUgdHJhbnNmb3JtU3RhdGUoVHJhbnNmb3JtU3RhdGU6
OkFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uLCBsb2NhbFBvaW50KTsKICAgICBtYXBMb2NhbFRvQ29u
dGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZpeGVkLCB0cnVlLCB0cmFuc2Zvcm1TdGF0ZSwgQXBw
bHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CkBAIC0yMTk3LDcgKzIxOTcsNyBAQCBib29sIFJl
bmRlck9iamVjdDo6aGFzT3V0bGluZUFubm90YXRpb24oKSBjb25zdAogICAgIHJldHVybiBub2Rl
KCkgJiYgbm9kZSgpLT5pc0xpbmsoKSAmJiBkb2N1bWVudCgpLT5wcmludGluZygpOwogfQogCi1S
ZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sKiByZXBhaW50Q29udGFpbmVyU2tpcHBlZCkg
Y29uc3QKK1JlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojpjb250YWluZXIoY29uc3QgUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCogcmVwYWludENvbnRh
aW5lclNraXBwZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXJTa2lwcGVkKQog
ICAgICAgICAqcmVwYWludENvbnRhaW5lclNraXBwZWQgPSBmYWxzZTsKQEAgLTIzMzAsNyArMjMz
MCw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAgIC8vIGJlIG1v
dmVkIGludG8gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlc3Ryb3kuCiAgICAgaWYgKGhhc0xheWVy
KCkpIHsKICAgICAgICAgc2V0SGFzTGF5ZXIoZmFsc2UpOwotICAgICAgICB0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KHRoaXMpLT5kZXN0cm95TGF5ZXIoKTsKKyAgICAgICAgdG9SZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KHRoaXMpLT5kZXN0cm95TGF5ZXIoKTsKICAgICB9CiAKICAgICBzZXRBbmNl
c3RvckxpbmVCb3hEaXJ0eShmYWxzZSk7CkBAIC0yNDIxLDcgKzI0MjEsNyBAQCB2b2lkIFJlbmRl
ck9iamVjdDo6dXBkYXRlRHJhZ1N0YXRlKGJvb2wgZHJhZ09uKQogCiBib29sIFJlbmRlck9iamVj
dDo6aXNDb21wb3NpdGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzTGF5ZXIoKSAmJiB0b1Jl
bmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKKyAgICBy
ZXR1cm4gaGFzTGF5ZXIoKSAmJiB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxh
eWVyKCktPmlzQ29tcG9zaXRlZCgpOwogfQogCiBib29sIFJlbmRlck9iamVjdDo6aGl0VGVzdChj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25z
dCBIaXRUZXN0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCwgSGl0VGVzdEZpbHRlciBoaXRUZXN0RmlsdGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDYwYzU2OTA5Y2NiNWNlMGRlNjY3Y2Q5NzY3
ZWIzMWYwN2I0YjFlMmUuLmNjZWFmNzBiZjQzN2QwODAxMTllNmUyMmE2NWQwOWY0NDVmZGQ4NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTU5LDYgKzU5LDcg
QEAgY2xhc3MgUmVuZGVyQmxvY2s7CiBjbGFzcyBSZW5kZXJGbG93VGhyZWFkOwogY2xhc3MgUmVu
ZGVyR2VvbWV0cnlNYXA7CiBjbGFzcyBSZW5kZXJMYXllcjsKK2NsYXNzIFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3Q7CiBjbGFzcyBSZW5kZXJUYWJsZTsKIGNsYXNzIFJlbmRlclRoZW1lOwogY2xh
c3MgVHJhbnNmb3JtU3RhdGU7CkBAIC0zNTAsNiArMzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNUZXh0QXJlYSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzVGV4dEZpZWxkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNUcmFuc2Zvcm1hYmxlT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGlzV2lkZ2V0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNDYW52YXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNTg1LDcgKzU4Nyw3
IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBvYmplY3QgY29udGFpbmluZyB0aGlzIG9u
ZS4gQ2FuIGJlIGRpZmZlcmVudCBmcm9tIHBhcmVudCBmb3IgcG9zaXRpb25lZCBlbGVtZW50cy4K
ICAgICAvLyBJZiByZXBhaW50Q29udGFpbmVyIGFuZCByZXBhaW50Q29udGFpbmVyU2tpcHBlZCBh
cmUgbm90IG51bGwsIG9uIHJldHVybiAqcmVwYWludENvbnRhaW5lclNraXBwZWQKICAgICAvLyBp
cyB0cnVlIGlmIHRoZSByZW5kZXJlciByZXR1cm5lZCBpcyBhbiBhbmNlc3RvciBvZiByZXBhaW50
Q29udGFpbmVyLgotICAgIFJlbmRlck9iamVjdCogY29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gMCwgYm9vbCogcmVwYWludENvbnRhaW5lclNr
aXBwZWQgPSAwKSBjb25zdDsKKyAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5lcihjb25zdCBSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gMCwgYm9vbCogcmVwYWlu
dENvbnRhaW5lclNraXBwZWQgPSAwKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBob3ZlckFuY2VzdG9yKCkgY29uc3QgeyByZXR1cm4gcGFyZW50KCk7IH0KIApAQCAtNjgxLDgg
KzY4Myw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBDb252ZXJ0IGEgbG9jYWwgcXVhZCBp
bnRvIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiBjb250YWluZXIsIHRha2luZyB0cmFuc2Zvcm1z
IGludG8gYWNjb3VudC4KLSAgICBGbG9hdFF1YWQgbG9jYWxUb0NvbnRhaW5lclF1YWQoY29uc3Qg
RmxvYXRRdWFkJiwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wg
Zml4ZWQgPSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKLSAgICBGbG9hdFBvaW50
IGxvY2FsVG9Db250YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiwgUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQgPSBmYWxzZSwgYm9vbCogd2FzRml4
ZWQgPSAwKSBjb25zdDsKKyAgICBGbG9hdFF1YWQgbG9jYWxUb0NvbnRhaW5lclF1YWQoY29uc3Qg
RmxvYXRRdWFkJiwgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwg
Ym9vbCBmaXhlZCA9IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIEZsb2F0
UG9pbnQgbG9jYWxUb0NvbnRhaW5lclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmLCBSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkID0gZmFsc2UsIGJv
b2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm4gdGhlIG9mZnNldCBmcm9t
IHRoZSBjb250YWluZXIoKSByZW5kZXJlciAoZXhjbHVkaW5nIHRyYW5zZm9ybXMpLiBJbiBtdWx0
aS1jb2x1bW4gbGF5b3V0LAogICAgIC8vIGRpZmZlcmVudCBvZmZzZXRzIGFwcGx5IGF0IGRpZmZl
cmVudCBwb2ludHMsIHNvIHJldHVybiB0aGUgb2Zmc2V0IHRoYXQgYXBwbGllcyB0byB0aGUgZ2l2
ZW4gcG9pbnQuCkBAIC03MjMsMTMgKzcyNSwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldFRl
eHREZWNvcmF0aW9uQ29sb3JzKGludCBkZWNvcmF0aW9ucywgQ29sb3ImIHVuZGVybGluZSwgQ29s
b3ImIG92ZXJsaW5lLCBDb2xvciYgbGluZXRocm91Z2gsIGJvb2wgcXVpcmtzTW9kZSA9IGZhbHNl
LCBib29sIGZpcnN0bGluZVN0eWxlID0gZmFsc2UpOwogCi0gICAgLy8gUmV0dXJuIHRoZSBSZW5k
ZXJCb3ggaW4gdGhlIGNvbnRhaW5lciBjaGFpbiB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgcGFp
bnRpbmcgdGhpcyBvYmplY3QsIG9yIDAKKyAgICAvLyBSZXR1cm4gdGhlIFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QgaW4gdGhlIGNvbnRhaW5lciBjaGFpbiB3aGljaCBpcyByZXNwb25zaWJsZSBm
b3IgcGFpbnRpbmcgdGhpcyBvYmplY3QsIG9yIDAKICAgICAvLyBpZiBwYWludGluZyBpcyByb290
LXJlbGF0aXZlLiBUaGlzIGlzIHRoZSBjb250YWluZXIgdGhhdCBzaG91bGQgYmUgcGFzc2VkIHRv
IHRoZSAnZm9yUmVwYWludCcKICAgICAvLyBtZXRob2RzLgotICAgIFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBjb250YWluZXJGb3JSZXBhaW50KCkgY29uc3Q7CisgICAgUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogY29udGFpbmVyRm9yUmVwYWludCgpIGNvbnN0OwogICAgIC8vIEFjdHVhbGx5IGRv
IHRoZSByZXBhaW50IG9mIHJlY3QgciBmb3IgdGhpcyBvYmplY3Qgd2hpY2ggaGFzIGJlZW4gY29t
cHV0ZWQgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2UKICAgICAvLyBvZiByZXBhaW50Q29udGFpbmVy
LiBJZiByZXBhaW50Q29udGFpbmVyIGlzIDAsIHJlcGFpbnQgdmlhIHRoZSB2aWV3LgotICAgIHZv
aWQgcmVwYWludFVzaW5nQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSk7CisgICAg
dm9pZCByZXBhaW50VXNpbmdDb250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVw
YWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2Up
OwogICAgIAogICAgIC8vIFJlcGFpbnQgdGhlIGVudGlyZSBvYmplY3QuICBDYWxsZWQgd2hlbiwg
ZS5nLiwgdGhlIGNvbG9yIG9mIGEgYm9yZGVyIGNoYW5nZXMsIG9yIHdoZW4gYSBib3JkZXIKICAg
ICAvLyBzdHlsZSBjaGFuZ2VzLgpAQCAtNzM5LDcgKzc0MSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlcGFpbnRSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFs
c2UpOwogCiAgICAgLy8gUmVwYWludCBvbmx5IGlmIG91ciBvbGQgYm91bmRzIGFuZCBuZXcgYm91
bmRzIGFyZSBkaWZmZXJlbnQuIFRoZSBjYWxsZXIgbWF5IHBhc3MgaW4gbmV3Qm91bmRzIGFuZCBu
ZXdPdXRsaW5lQm94IGlmIHRoZXkgYXJlIGtub3duLgotICAgIGJvb2wgcmVwYWludEFmdGVyTGF5
b3V0SWZOZWVkZWQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0
IExheW91dFJlY3QmIG9sZEJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgb2xkT3V0bGluZUJveCwg
Y29uc3QgTGF5b3V0UmVjdCogbmV3Qm91bmRzUHRyID0gMCwgY29uc3QgTGF5b3V0UmVjdCogbmV3
T3V0bGluZUJveFB0ciA9IDApOworICAgIGJvb2wgcmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQo
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0
UmVjdCYgb2xkQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRPdXRsaW5lQm94LCBjb25zdCBM
YXlvdXRSZWN0KiBuZXdCb3VuZHNQdHIgPSAwLCBjb25zdCBMYXlvdXRSZWN0KiBuZXdPdXRsaW5l
Qm94UHRyID0gMCk7CiAKICAgICAvLyBSZXBhaW50IG9ubHkgaWYgdGhlIG9iamVjdCBtb3ZlZC4K
ICAgICB2aXJ0dWFsIHZvaWQgcmVwYWludER1cmluZ0xheW91dElmTW92ZWQoY29uc3QgTGF5b3V0
UmVjdCYpOwpAQCAtNzU2LDggKzc1OCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KDApOwogICAgIH0KICAgICBJbnRSZWN0IHBpeGVsU25h
cHBlZEFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHJlY3RX
aXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJl
Y3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHJlY3RX
aXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0OwogCiAgICAgLy8gR2l2ZW4g
YSByZWN0IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNlLCBjb21wdXRlIGEgcmVjdCBz
dWl0YWJsZSBmb3IgcmVwYWludGluZwogICAgIC8vIHRoYXQgcmVjdCBpbiB2aWV3IGNvb3JkaW5h
dGVzLgpAQCAtNzY3LDggKzc2OSw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgLy8gR2l2ZW4gYSBy
ZWN0IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNlLCBjb21wdXRlIGEgcmVjdCBzdWl0
YWJsZSBmb3IgcmVwYWludGluZwogICAgIC8vIHRoYXQgcmVjdCBpbiB0aGUgY29vcmRpbmF0ZSBz
cGFjZSBvZiByZXBhaW50Q29udGFpbmVyLgotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJl
Y3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
RmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2Up
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFp
bnRSZWN0LCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwogCiAgICAgLy8gSWYgbXVsdGlwbGUt
Y29sdW1uIGxheW91dCByZXN1bHRzIGluIGFwcGx5aW5nIGFuIG9mZnNldCB0byB0aGUgZ2l2ZW4g
cG9pbnQsIGFkZCB0aGUgc2FtZQogICAgIC8vIG9mZnNldCB0byB0aGUgZ2l2ZW4gc2l6ZS4KQEAg
LTgxMCw3ICs4MTIsNyBAQCBwdWJsaWM6CiAgICAgLy8gQSBzaW5nbGUgcmVjdGFuZ2xlIHRoYXQg
ZW5jb21wYXNzZXMgYWxsIG9mIHRoZSBzZWxlY3RlZCBvYmplY3RzIHdpdGhpbiB0aGlzIG9iamVj
dC4gIFVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB0aWdodGVzdAogICAgIC8vIHBvc3NpYmxlIGJvdW5k
aW5nIGJveCBmb3IgdGhlIHNlbGVjdGlvbi4KICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3Qo
Ym9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIHsgcmV0dXJuIHNlbGVjdGlvblJlY3RG
b3JSZXBhaW50KDAsIGNsaXBUb1Zpc2libGVDb250ZW50KTsgfQotICAgIHZpcnR1YWwgTGF5b3V0
UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogLypyZXBh
aW50Q29udGFpbmVyKi8sIGJvb2wgLypjbGlwVG9WaXNpYmxlQ29udGVudCovID0gdHJ1ZSkgeyBy
ZXR1cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJl
Y3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIC8qcmVwYWludENvbnRhaW5l
ciovLCBib29sIC8qY2xpcFRvVmlzaWJsZUNvbnRlbnQqLyA9IHRydWUpIHsgcmV0dXJuIExheW91
dFJlY3QoKTsgfQogCiAgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYXNTZWxlY3RlZENoaWxkcmVuKCkgY29uc3Qg
eyByZXR1cm4gc2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lOyB9CkBAIC04ODAsMTIg
Kzg4MiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gTWFwIHBvaW50cyBhbmQgcXVhZHMgdGhyb3VnaCBl
bGVtZW50cywgcG90ZW50aWFsbHkgdmlhIDNkIHRyYW5zZm9ybXMuIFlvdSBzaG91bGQgbmV2ZXIg
bmVlZCB0byBjYWxsIHRoZXNlIGRpcmVjdGx5OyB1c2UKICAgICAvLyBsb2NhbFRvQWJzb2x1dGUv
YWJzb2x1dGVUb0xvY2FsIG1ldGhvZHMgaW5zdGVhZC4KICAgICBlbnVtIEFwcGx5Q29udGFpbmVy
RmxpcE9yTm90IHsgRG9Ob3RBcHBseUNvbnRhaW5lckZsaXAsIEFwcGx5Q29udGFpbmVyRmxpcCB9
OwotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRy
YW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZs
aXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2Fs
VG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwg
Ym9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29u
dGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDAp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZp
eGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CiAKICAgICAv
LyBQdXNoZXMgc3RhdGUgb250byBSZW5kZXJHZW9tZXRyeU1hcCBhYm91dCBob3cgdG8gbWFwIGNv
b3JkaW5hdGVzIGZyb20gdGhpcyByZW5kZXJlciB0byBpdHMgY29udGFpbmVyLCBvciBhbmNlc3Rv
clRvU3RvcEF0ICh3aGljaGV2ZXIgaXMgZW5jb3VudGVyZWQgZmlyc3QpLgogICAgIC8vIFJldHVy
bnMgdGhlIHJlbmRlcmVyIHdoaWNoIHdhcyBtYXBwZWQgdG8gKGNvbnRhaW5lciBvciBhbmNlc3Rv
clRvU3RvcEF0KS4KLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwg
UmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVj
dCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OwogICAgIAogICAg
IGJvb2wgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3Qq
IGNvbnRhaW5lcikgY29uc3Q7CiAgICAgdm9pZCBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNv
bnN0IFJlbmRlck9iamVjdCogY29udGFpbmVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRJbkNv
bnRhaW5lciwgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBjb25zdDsKQEAgLTkyNiw3ICs5MjgsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogICAgIHZv
aWQgYXJlbmFEZWxldGUoUmVuZGVyQXJlbmEqLCB2b2lkKiBvYmplY3RCYXNlKTsKIAotICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9i
amVjdCogLypyZXBhaW50Q29udGFpbmVyKi8sIExheW91dFBvaW50KiAvKmNhY2hlZE9mZnNldFRv
UmVwYWludENvbnRhaW5lciovID0gMCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9Cisg
ICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBMYXlvdXRQb2ludCogLypjYWNo
ZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIqLyA9IDApIGNvbnN0IHsgcmV0dXJuIExheW91dFJl
Y3QoKTsgfQogCiBwcml2YXRlOgogICAgIFJlbmRlclN0eWxlKiBmaXJzdExpbmVTdHlsZVNsb3dD
YXNlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cAppbmRleCAyZTBkNzQ3M2JiNTJjNjdjYjg1YTg4ZTZiOWUxMGYzYWQ4NjgxYmU4Li4wZWNiOTUw
ZTUzNzRmYTBiYzA0MTBlZTljNTE4MTYxOTliNjNmNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTQ2MSw3ICs0NjEsNyBAQCBWaXNpYmxlUG9z
aXRpb24gUmVuZGVyUmVwbGFjZWQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
IHBvaW50KQogICAgIHJldHVybiBSZW5kZXJCb3g6OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQpOwog
fQogCi1MYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxl
Q29udGVudCkKK0xheW91dFJlY3QgUmVuZGVyUmVwbGFjZWQ6OnNlbGVjdGlvblJlY3RGb3JSZXBh
aW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xp
cFRvVmlzaWJsZUNvbnRlbnQpCiB7CiAgICAgQVNTRVJUKCFuZWVkc0xheW91dCgpKTsKIApAQCAt
NTI2LDcgKzUyNiw3IEBAIGJvb2wgUmVuZGVyUmVwbGFjZWQ6OmlzU2VsZWN0ZWQoKSBjb25zdAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6Y2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KSBjb25zdAogewogICAgIGlmIChzdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAh
ZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIExh
eW91dFJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKaW5k
ZXggOWViYzYzNGIwMzIzOTE0OGU1MmMxZmM2YjY1ZGFiM2Q2ZDViZDhiZC4uNzI1ZGYxMzlmZjkx
Y2YyOGY0ZmQzOTE2OWZhYTE1OTg3ZmI3YzBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmgKQEAgLTcwLDEzICs3MCwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpOwogICAgIHZpcnR1YWwgdm9p
ZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgeyB9CiAKLSAg
ICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwg
VmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKICAg
ICAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2li
bGVDb250ZW50ID0gdHJ1ZSk7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RG
b3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJv
b2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBPVkVSUklERTsKICAgICB2b2lkIGNvbXB1
dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uRm9yUmVuZGVyQm94KFJlbmRlckJveCosIEZsb2F0
U2l6ZSYgaW50cmluc2ljU2l6ZSwgZG91YmxlJiBpbnRyaW5zaWNSYXRpbywgYm9vbCYgaXNQZXJj
ZW50YWdlSW50cmluc2ljU2l6ZSkgY29uc3Q7CiAKICAgICBJbnRTaXplIG1faW50cmluc2ljU2l6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25J
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VsZWN0aW9uSW5mby5oCmlu
ZGV4IDg5MzZhMzc3ZTY2NTQzMDFjYTVhNGNmNDY2ZDNiNzk1Yjk4ZDM5ZDcuLjAzYzcxNTExMTY5
OWU1OTEyNGViMzhmYzZlNzAzYTdkZGVlMzA3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uaApAQCAtNDgsMTIgKzQ4LDEyIEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgCiAgICAgUmVuZGVyT2JqZWN0KiBvYmplY3QoKSBjb25zdCB7IHJldHVybiBt
X29iamVjdDsgfQotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXBhaW50Q29udGFpbmVyOyB9CisgICAgUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWludENv
bnRhaW5lcjsgfQogICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlOyB9CiAKIHByb3RlY3RlZDoKICAgICBSZW5kZXJPYmplY3QqIG1f
b2JqZWN0OwotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBtX3JlcGFpbnRDb250YWluZXI7Cisg
ICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogbV9yZXBhaW50Q29udGFpbmVyOwogICAgIFJl
bmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgbV9zdGF0ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggMTU5YjU0YjNiMzhlYjhjOWU4
N2EwYjllZTgwYjYxYTBjMWIzZGJiNy4uODMwZTUzMTNkZGU2ZDk3YjE5YTg0ZjRmOTE2MGZlZmVh
YjZjZWNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5j
cHAKQEAgLTI1MCw3ICsyNTAsNyBAQCBMYXlvdXRTaXplIFJlbmRlclRhYmxlQ2VsbDo6b2Zmc2V0
RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IExheW91dFBvaQogICAgIHJldHVy
biBvZmZzZXQ7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyVGFibGVDZWxsOjpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikg
Y29uc3QKK0xheW91dFJlY3QgUmVuZGVyVGFibGVDZWxsOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25z
dAogewogICAgIC8vIElmIHRoZSB0YWJsZSBncmlkIGlzIGRpcnR5LCB3ZSBjYW5ub3QgZ2V0IHJl
bGlhYmxlIGluZm9ybWF0aW9uIGFib3V0IGFkam9pbmluZyBjZWxscywKICAgICAvLyBzbyB3ZSBp
Z25vcmUgb3V0c2lkZSBib3JkZXJzLiBUaGlzIHNob3VsZCBub3QgYmUgYSBwcm9ibGVtIGJlY2F1
c2UgaXQgbWVhbnMgdGhhdApAQCAtMzAxLDcgKzMwMSw3IEBAIExheW91dFJlY3QgUmVuZGVyVGFi
bGVDZWxsOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCoKICAgICByZXR1cm4gcjsKIH0KIAotdm9pZCBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0
UmVjdCYgciwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRl
UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0UmVjdCYgciwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBpZiAocmVwYWludENv
bnRhaW5lciA9PSB0aGlzKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmgKaW5kZXggNDM4MTU1NWNkZDBkMzA1YjBkNzExNTVkMWJiZThj
YzZiMGEwMTA1MC4uOWRkOTE2OTc0ZDM2NjlhNjIxOTY4NmM2ZWQzNDBmMTkwYzYyOTljMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMTg3LDggKzE4
Nyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGJveFNoYWRvd1Nob3VsZEJlQXBwbGll
ZFRvQmFja2dyb3VuZChCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqKSBj
b25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFp
bmVyKFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5k
c09uUG9pbnQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0g
ZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBi
b29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgaW50IGJvcmRlckhhbGZM
ZWZ0KGJvb2wgb3V0ZXIpIGNvbnN0OwogICAgIGludCBib3JkZXJIYWxmUmlnaHQoYm9vbCBvdXRl
cikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcApp
bmRleCA5N2NkOGNjM2VkMDk1NjhmNjg5MTYwYTUwZGU4Njk0MzcwMGNkZTI5Li4xNTRjOWYyMTE5
ZmNlY2I3Njg5NGQ3OTkxOWFlMDlkYjIzYWI3ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBSZW5kZXJUYWJs
ZUNvbDo6Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QKICAgICByZXR1cm4gaXNUYWJsZUNvbHVtbkdy
b3VwKCk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyVGFibGVDb2w6OmNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25z
dAorTGF5b3V0UmVjdCBSZW5kZXJUYWJsZUNvbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsK
ICAgICAvLyBGb3Igbm93LCBqdXN0IHJlcGFpbnQgdGhlIHdob2xlIHRhYmxlLgogICAgIC8vIEZJ
WE1FOiBGaW5kIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLCBlLmcuLCBuZWVkIHRvIHJlcGFpbnQg
YWxsIHRoZSBjZWxscyB0aGF0IHdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNvbC5oCmluZGV4IDYyZjMyODhlOGQ2NjM4NzQwZjY5ZWY2MWRmNjg3YWJiZWJjMjQyMWMuLjQw
ZWMxM2U1YmYyMzk1ZWYyOTAyYmE5NzkyMDNjNTE3ZDNlZTNlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNo
YW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApOwogCiAgICAgdmlydHVh
bCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUq
IG9sZFN0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3Bw
CmluZGV4IDBlNDI0YmMxMTJiMmYwMGFkYjQ0OTk1MTJiZTllZTM0ZTNkZDY5OTQuLjEzM2E0MDE1
YzI2NzMzNjIzOTY4ZTZkOGE1NWQ0MDRkN2I1YmFjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgUmVuZGVy
VGFibGVSb3c6OmxheW91dCgpCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCi1MYXlv
dXRSZWN0IFJlbmRlclRhYmxlUm93OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVu
ZGVyVGFibGVSb3c6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHBhcmVu
dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Um93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAppbmRleCBh
ZmE4MzhjMTI1NDYxYmU1ZmMzNTVkMDI2NWRjZDMxY2VmNmEyYzMxLi5mM2ZhM2IxZjJmNGFhNjlk
MjNmZWI1Y2FmOGZkZTY2MDQ5Y2Q0NmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVSb3cuaApAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2
b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hp
bGQgPSAwKTsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci0gICAgdmlydHVhbCBMYXlvdXRS
ZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RQb2ludCYg
cG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBI
aXRUZXN0QWN0aW9uKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVy
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gaXNUcmFuc3BhcmVudCgpIHx8IGhhc092ZXJmbG93
Q2xpcCgpIHx8IGhhc1RyYW5zZm9ybSgpIHx8IGhhc0hpZGRlbkJhY2tmYWNlKCkgfHwgaGFzTWFz
aygpIHx8IGhhc0ZpbHRlcigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAKaW5kZXggYmFmOTU0NzVjZDQwYzQxMDA5MzcwOTRmNGMzMmM5NWEwYjc0ZGUxYS4uZmNiYjIx
Y2IwNzBhNDE0YzBhZTYxYTdmNGYyN2Q5MmU2ZjM1MjBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTYxOCw3ICsxNjE4LDcgQEAgTGF5b3V0UmVjdCBSZW5k
ZXJUZXh0OjpsaW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBjb25zdAogICAgIHJldHVy
biByZWN0OwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclRleHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAor
TGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXJUb1JlcGFpbnQgPSBjb250YWluaW5nQmxvY2soKTsKIApAQCAt
MTYzNCw3ICsxNjM0LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWkKICAgICByZXR1cm4gcmVu
ZGVyZXJUb1JlcGFpbnQtPmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250
YWluZXIpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclRleHQ6OnNlbGVjdGlvblJlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zp
c2libGVDb250ZW50KQorTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpzZWxlY3Rpb25SZWN0Rm9yUmVw
YWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNs
aXBUb1Zpc2libGVDb250ZW50KQogewogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IGI5NmVjYTczZjM2YzE1ZmY2MjI1
ZTk5OGEzOTExMDU1NjcxN2Y0NGEuLjU5NGE2ODkwZmM0MjdlNjZkMTBhNjBhZmFhN2ExY2I2OTQ0
NTI1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtOTcsMTMgKzk3
LDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGlvblN0YXRl
KFNlbGVjdGlvblN0YXRlIHMpOwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBj
bGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxl
Y3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KElubGluZUJveCosIGludCBjYXJldE9m
ZnNldCwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gMCk7CiAKICAgICB2aXJ0
dWFsIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChzdHlsZSgpLT5tYXJnaW5MZWZ0KCksIDAsIHZpZXcoKSk7IH0KICAgICB2aXJ0dWFs
IExheW91dFVuaXQgbWFyZ2luUmlnaHQoKSBjb25zdCB7IHJldHVybiBtaW5pbXVtVmFsdWVGb3JM
ZW5ndGgoc3R5bGUoKS0+bWFyZ2luUmlnaHQoKSwgMCwgdmlldygpKTsgfQogCi0gICAgdmlydHVh
bCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qg
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CiAKICAgICBJbmxpbmVUZXh0Qm94KiBm
aXJzdFRleHRCb3goKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0VGV4dEJveDsgfQogICAgIElubGlu
ZVRleHRCb3gqIGxhc3RUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VGV4dEJveDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1ZGU4MGJmZmU1MjBiOWRhMTJlMzA3ODA2YjFiNTEzMzBl
NDdkMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdC5jcHAKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykg
MTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqICAgICAgICAgICAoQykg
MjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5jb20pCisgKiAgICAgICAg
ICAgKEMpIDIwMDUsIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmgiCisKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgor
Cit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6c193YXNGbG9hdGluZyA9IGZhbHNlOworYm9vbCBSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpzX2hhZExheWVyID0gZmFsc2U7Citib29sIFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3Q6OnNfaGFkVHJhbnNmb3JtID0gZmFsc2U7Citib29sIFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3Q6OnNfbGF5ZXJXYXNTZWxmUGFpbnRpbmcgPSBmYWxzZTsKKworUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdChOb2RlKiBu
b2RlKQorICAgIDogUmVuZGVyT2JqZWN0KG5vZGUpCisgICAgLCBtX2xheWVyKDApCit7Cit9CisK
K1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6On5SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KCkK
K3sKKyAgICAvLyBPdXIgbGF5ZXIgc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95ZWQgYW5kIGNsZWFy
ZWQgYnkgbm93CisgICAgQVNTRVJUKCFoYXNMYXllcigpKTsKKyAgICBBU1NFUlQoIW1fbGF5ZXIp
OworfQorCit2b2lkIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OmRlc3Ryb3lMYXllcigpCit7
CisgICAgQVNTRVJUKCFoYXNMYXllcigpKTsgLy8gQ2FsbGVycyBzaG91bGQgaGF2ZSBhbHJlYWR5
IGNhbGxlZCBzZXRIYXNMYXllcihmYWxzZSkKKyAgICBBU1NFUlQobV9sYXllcik7CisgICAgbV9s
YXllci0+ZGVzdHJveShyZW5kZXJBcmVuYSgpKTsKKyAgICBtX2xheWVyID0gMDsKK30KKwordm9p
ZCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjplbnN1cmVMYXllcigpCit7CisgICAgaWYgKG1f
bGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGF5ZXIgPSBuZXcgKHJlbmRlckFyZW5h
KCkpIFJlbmRlckxheWVyKHRoaXMpOworICAgIHNldEhhc0xheWVyKHRydWUpOworICAgIG1fbGF5
ZXItPmluc2VydE9ubHlUaGlzTGF5ZXIoKTsKK30KKworYm9vbCBSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0OjpoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5
ZXIgJiYgbV9sYXllci0+aXNTZWxmUGFpbnRpbmdMYXllcigpOworfQorCit2b2lkIFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpCit7CisgICAgLy8gUmVuZGVyT2Jq
ZWN0Ojp3aWxsQmVEZXN0cm95ZWQgY2FsbHMgYmFjayB0byBkZXN0cm95TGF5ZXIoKSBmb3IgbGF5
ZXIgZGVzdHJ1Y3Rpb24KKyAgICBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpOworfQor
Cit2b2lkIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURp
ZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKQoreworICAgIHNfd2Fz
RmxvYXRpbmcgPSBpc0Zsb2F0aW5nKCk7CisgICAgc19oYWRMYXllciA9IGhhc0xheWVyKCk7Cisg
ICAgc19oYWRUcmFuc2Zvcm0gPSBoYXNUcmFuc2Zvcm0oKTsKKyAgICBpZiAoc19oYWRMYXllcikK
KyAgICAgICAgc19sYXllcldhc1NlbGZQYWludGluZyA9IGxheWVyKCktPmlzU2VsZlBhaW50aW5n
TGF5ZXIoKTsKKworICAgIC8vIElmIG91ciB6LWluZGV4IGNoYW5nZXMgdmFsdWUgb3Igb3VyIHZp
c2liaWxpdHkgY2hhbmdlcywKKyAgICAvLyB3ZSBuZWVkIHRvIGRpcnR5IG91ciBzdGFja2luZyBj
b250ZXh0J3Mgei1vcmRlciBsaXN0LgorICAgIFJlbmRlclN0eWxlKiBvbGRTdHlsZSA9IHN0eWxl
KCk7CisgICAgaWYgKG9sZFN0eWxlICYmIG5ld1N0eWxlKSB7CisgICAgICAgIGlmIChwYXJlbnQo
KSkgeworICAgICAgICAgICAgLy8gRG8gYSByZXBhaW50IHdpdGggdGhlIG9sZCBzdHlsZSBmaXJz
dCwgZS5nLiwgZm9yIGV4YW1wbGUgaWYgd2UgZ28gZnJvbQorICAgICAgICAgICAgLy8gaGF2aW5n
IGFuIG91dGxpbmUgdG8gbm90IGhhdmluZyBhbiBvdXRsaW5lLgorICAgICAgICAgICAgaWYgKGRp
ZmYgPT0gU3R5bGVEaWZmZXJlbmNlUmVwYWludExheWVyKSB7CisgICAgICAgICAgICAgICAgbGF5
ZXIoKS0+cmVwYWludEluY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7CisgICAgICAgICAgICAgICAgaWYg
KCEob2xkU3R5bGUtPmNsaXAoKSA9PSBuZXdTdHlsZS0+Y2xpcCgpKSkKKyAgICAgICAgICAgICAg
ICAgICAgbGF5ZXIoKS0+Y2xlYXJDbGlwUmVjdHNJbmNsdWRpbmdEZXNjZW5kYW50cygpOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQgfHwgbmV3
U3R5bGUtPm91dGxpbmVTaXplKCkgPCBvbGRTdHlsZS0+b3V0bGluZVNpemUoKSkKKyAgICAgICAg
ICAgICAgICByZXBhaW50KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGlmZiA9PSBTdHls
ZURpZmZlcmVuY2VMYXlvdXQgfHwgZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VTaW1wbGlmaWVkTGF5
b3V0KSB7CisgICAgICAgICAgICAvLyBXaGVuIGEgbGF5b3V0IGhpbnQgaGFwcGVucywgd2UgZ28g
YWhlYWQgYW5kIGRvIGEgcmVwYWludCBvZiB0aGUgbGF5ZXIsIHNpbmNlIHRoZSBsYXllciBjb3Vs
ZAorICAgICAgICAgICAgLy8gZW5kIHVwIGJlaW5nIGRlc3Ryb3llZC4KKyAgICAgICAgICAgIGlm
IChoYXNMYXllcigpKSB7CisgICAgICAgICAgICAgICAgaWYgKG9sZFN0eWxlLT5wb3NpdGlvbigp
ICE9IG5ld1N0eWxlLT5wb3NpdGlvbigpCisgICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxl
LT56SW5kZXgoKSAhPSBuZXdTdHlsZS0+ekluZGV4KCkKKyAgICAgICAgICAgICAgICAgICAgfHwg
b2xkU3R5bGUtPmhhc0F1dG9aSW5kZXgoKSAhPSBuZXdTdHlsZS0+aGFzQXV0b1pJbmRleCgpCisg
ICAgICAgICAgICAgICAgICAgIHx8ICEob2xkU3R5bGUtPmNsaXAoKSA9PSBuZXdTdHlsZS0+Y2xp
cCgpKQorICAgICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+aGFzQ2xpcCgpICE9IG5ld1N0
eWxlLT5oYXNDbGlwKCkKKyAgICAgICAgICAgICAgICAgICAgfHwgb2xkU3R5bGUtPm9wYWNpdHko
KSAhPSBuZXdTdHlsZS0+b3BhY2l0eSgpCisgICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxl
LT50cmFuc2Zvcm0oKSAhPSBuZXdTdHlsZS0+dHJhbnNmb3JtKCkKKyNpZiBFTkFCTEUoQ1NTX0ZJ
TFRFUlMpCisgICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT5maWx0ZXIoKSAhPSBuZXdT
dHlsZS0+ZmlsdGVyKCkKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICAgICAgbGF5ZXIoKS0+cmVwYWludEluY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKG5ld1N0eWxlLT5oYXNUcmFuc2Zvcm0oKSB8fCBuZXdTdHlsZS0+b3BhY2l0
eSgpIDwgMSB8fCBuZXdTdHlsZS0+aGFzRmlsdGVyKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBJ
ZiB3ZSBkb24ndCBoYXZlIGEgbGF5ZXIgeWV0LCBidXQgd2UgYXJlIGdvaW5nIHRvIGdldCBvbmUg
YmVjYXVzZSBvZiB0cmFuc2Zvcm0gb3Igb3BhY2l0eSwKKyAgICAgICAgICAgICAgICAvLyAgdGhl
biB3ZSBuZWVkIHRvIHJlcGFpbnQgdGhlIG9sZCBwb3NpdGlvbiBvZiB0aGUgb2JqZWN0LgorICAg
ICAgICAgICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIG5ld1N0eWxlKTsKK30K
Kwordm9pZCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQoreworICAgIFJlbmRl
ck9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOworCisgICAgaWYgKHJlcXVp
cmVzTGF5ZXIoKSkgeworICAgICAgICBpZiAoIWxheWVyKCkgJiYgbGF5ZXJDcmVhdGlvbkFsbG93
ZWRGb3JTdWJ0cmVlKCkpIHsKKyAgICAgICAgICAgIGlmIChzX3dhc0Zsb2F0aW5nICYmIGlzRmxv
YXRpbmcoKSkKKyAgICAgICAgICAgICAgICBzZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUpOworICAg
ICAgICAgICAgZW5zdXJlTGF5ZXIoKTsKKyAgICAgICAgICAgIGlmIChwYXJlbnQoKSAmJiAhbmVl
ZHNMYXlvdXQoKSAmJiBjb250YWluaW5nQmxvY2soKSkgeworICAgICAgICAgICAgICAgIGxheWVy
KCktPnNldFJlcGFpbnRTdGF0dXMoTmVlZHNGdWxsUmVwYWludCk7CisgICAgICAgICAgICAgICAg
Ly8gVGhlcmUgaXMgb25seSBvbmUgbGF5ZXIgdG8gdXBkYXRlLCBpdCBpcyBub3Qgd29ydGggdXNp
bmcgfGNhY2hlZE9mZnNldHwgc2luY2UKKyAgICAgICAgICAgICAgICAvLyB3ZSBhcmUgbm90IHN1
cmUgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZC4KKyAgICAgICAgICAgICAgICBsYXllcigpLT51cGRh
dGVMYXllclBvc2l0aW9ucygwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxz
ZSBpZiAobGF5ZXIoKSAmJiBsYXllcigpLT5wYXJlbnQoKSkgeworICAgICAgICBzZXRIYXNUcmFu
c2Zvcm0oZmFsc2UpOyAvLyBFaXRoZXIgYSB0cmFuc2Zvcm0gd2Fzbid0IHNwZWNpZmllZCBvciB0
aGUgb2JqZWN0IGRvZXNuJ3Qgc3VwcG9ydCB0cmFuc2Zvcm1zLCBzbyBqdXN0IG51bGwgb3V0IHRo
ZSBiaXQuCisgICAgICAgIHNldEhhc1JlZmxlY3Rpb24oZmFsc2UpOworICAgICAgICBsYXllcigp
LT5yZW1vdmVPbmx5VGhpc0xheWVyKCk7IC8vIGNhbGxzIGRlc3Ryb3lMYXllcigpIHdoaWNoIGNs
ZWFycyBtX2xheWVyCisgICAgICAgIGlmIChzX3dhc0Zsb2F0aW5nICYmIGlzRmxvYXRpbmcoKSkK
KyAgICAgICAgICAgIHNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgICAgIGlmIChzX2hh
ZFRyYW5zZm9ybSkKKyAgICAgICAgICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2Fs
YygpOworICAgIH0KKworICAgIGlmIChsYXllcigpKSB7CisgICAgICAgIGxheWVyKCktPnN0eWxl
Q2hhbmdlZChkaWZmLCBvbGRTdHlsZSk7CisgICAgICAgIGlmIChzX2hhZExheWVyICYmIGxheWVy
KCktPmlzU2VsZlBhaW50aW5nTGF5ZXIoKSAhPSBzX2xheWVyV2FzU2VsZlBhaW50aW5nKQorICAg
ICAgICAgICAgc2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKKyAgICB9Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWViYTlmYzI3NGYyMzg3ZjY3ZDhh
Y2RhMWQ2ZWQyMjlkZDFjYzAxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmgKQEAgLTAsMCArMSw4MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAg
ICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQorICogQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaWZuZGVmIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3RfaAorI2RlZmlu
ZSBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0X2gKKworI2luY2x1ZGUgIlJlbmRlck9iamVjdC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlckxheWVyOworCitjbGFzcyBS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0IDogcHVibGljIFJlbmRlck9iamVjdCB7CitwdWJsaWM6
CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdChOb2RlKik7CisgICAgdmlydHVhbCB+UmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCgpOworCisgICAgLy8gQ2FsbGVkIGJ5IFJlbmRlck9iamVj
dDo6d2lsbEJlRGVzdHJveWVkKCkgYW5kIGlzIHRoZSBvbmx5IHdheSBsYXllcnMgc2hvdWxkIGV2
ZXIgYmUgZGVzdHJveWVkCisgICAgdm9pZCBkZXN0cm95TGF5ZXIoKTsKKworICAgIGJvb2wgaGFz
U2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdDsKKyAgICBSZW5kZXJMYXllciogbGF5ZXIoKSBjb25z
dCB7IHJldHVybiBtX2xheWVyOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigp
IGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSkgT1ZFUlJJREU7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGVuc3VyZUxheWVy
KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgT1ZFUlJJREU7CisKK3By
aXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzVHJhbnNmb3JtYWJsZU9iamVjdCgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFJlbmRlckxheWVyKiBtX2xheWVyOworCisg
ICAgLy8gVXNlZCB0byBzdG9yZSBzdGF0ZSBiZXR3ZWVuIHN0eWxlV2lsbENoYW5nZSBhbmQgc3R5
bGVEaWRDaGFuZ2UKKyAgICBzdGF0aWMgYm9vbCBzX3dhc0Zsb2F0aW5nOworICAgIHN0YXRpYyBi
b29sIHNfaGFkTGF5ZXI7CisgICAgc3RhdGljIGJvb2wgc19oYWRUcmFuc2Zvcm07CisgICAgc3Rh
dGljIGJvb2wgc19sYXllcldhc1NlbGZQYWludGluZzsKK307CisKK2lubGluZSBSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KiB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QoUmVuZGVyT2JqZWN0
KiBvYmplY3QpCit7CisgICAgQVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0LT5pc1RyYW5zZm9ybWFi
bGVPYmplY3QoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqPihvYmplY3QpOworfQorCitpbmxpbmUgY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KGNvbnN0IFJlbmRlck9iamVjdCogb2Jq
ZWN0KQoreworICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+aXNUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0Kj4ob2JqZWN0KTsKK30KKworLy8gVGhpcyB3aWxsIGNhdGNoIGFueW9uZSBkb2luZyBh
biB1bm5lY2Vzc2FyeSBjYXN0Lgordm9pZCB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QoY29u
c3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCopOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCBhODk1YmM5OWVmMTU0YjA1ZTNkMzg1MzE5NGNk
MzkzZWY3NmZkMjFiLi5kMjk2YTgyYTUxOGZiZWNmZGU4MDFlOWUyMThmYzIyMjVmODdiY2Q2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0xNTcsNyArMTU3LDcg
QEAgdm9pZCBSZW5kZXJWaWV3OjpsYXlvdXQoKQogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsK
IH0KIAotdm9pZCBSZW5kZXJWaWV3OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMs
IFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3Qs
IGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJWaWV3OjptYXBMb2NhbFRvQ29udGFp
bmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4
ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBB
cHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgLy8g
SWYgYSBjb250YWluZXIgd2FzIHNwZWNpZmllZCwgYW5kIHdhcyBub3QgMCBvciB0aGUgUmVuZGVy
VmlldywKICAgICAvLyB0aGVuIHdlIHNob3VsZCBoYXZlIGZvdW5kIGl0IGJ5IG5vdy4KQEAgLTE3
NCw3ICsxNzQsNyBAQCB2b2lkIFJlbmRlclZpZXc6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvbwogICAgICAgICB0cmFuc2Zvcm1T
dGF0ZS5tb3ZlKG1fZnJhbWVWaWV3LT5zY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCkpOwog
fQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclZpZXc6OnB1c2hNYXBwaW5nVG9Db250YWlu
ZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdl
b21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9iamVjdCogUmVuZGVy
Vmlldzo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNv
bnN0CiB7CiAgICAgLy8gSWYgYSBjb250YWluZXIgd2FzIHNwZWNpZmllZCwgYW5kIHdhcyBub3Qg
MCBvciB0aGUgUmVuZGVyVmlldywKICAgICAvLyB0aGVuIHdlIHNob3VsZCBoYXZlIGZvdW5kIGl0
IGJ5IG5vdy4KQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc0NvbXBvc2l0ZWQoUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAg
cmV0dXJuIG9iamVjdC0+aGFzTGF5ZXIoKSAmJiB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG9iamVj
dCktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOworICAgIHJldHVybiBvYmplY3QtPmhhc0xheWVy
KCkgJiYgdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KG9iamVjdCktPmxheWVyKCktPmlzQ29t
cG9zaXRlZCgpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgcmVuZGVyZXJPYnNjdXJlc0JhY2tn
cm91bmQoUmVuZGVyT2JqZWN0KiBvYmplY3QpCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBSZW5k
ZXJWaWV3OjpyZXBhaW50UmVjdGFuZ2xlSW5WaWV3QW5kQ29tcG9zaXRlZExheWVycyhjb25zdCBM
YXlvdXRSZWN0JiB1ciwKICNlbmRpZgogfQogCi12b2lkIFJlbmRlclZpZXc6OmNvbXB1dGVSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0
UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJl
Y3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gSWYgYSBjb250
YWluZXIgd2FzIHNwZWNpZmllZCwgYW5kIHdhcyBub3QgMCBvciB0aGUgUmVuZGVyVmlldywKICAg
ICAvLyB0aGVuIHdlIHNob3VsZCBoYXZlIGZvdW5kIGl0IGJ5IG5vdy4KQEAgLTM5OSwyMCArMzk5
LDIwIEBAIHZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMCiAgICAgICAgIHJlY3QubW92ZShtX2ZyYW1l
Vmlldy0+c2Nyb2xsT2Zmc2V0Rm9yRml4ZWRQb3NpdGlvbigpKTsKICAgICAgICAgCiAgICAgLy8g
QXBwbHkgb3VyIHRyYW5zZm9ybSBpZiB3ZSBoYXZlIG9uZSAoYmVjYXVzZSBvZiBmdWxsIHBhZ2Ug
em9vbWluZykuCi0gICAgaWYgKCFyZXBhaW50Q29udGFpbmVyICYmIG1fbGF5ZXIgJiYgbV9sYXll
ci0+dHJhbnNmb3JtKCkpCi0gICAgICAgIHJlY3QgPSBtX2xheWVyLT50cmFuc2Zvcm0oKS0+bWFw
UmVjdChyZWN0KTsKKyAgICBpZiAoIXJlcGFpbnRDb250YWluZXIgJiYgbGF5ZXIoKSAmJiBsYXll
cigpLT50cmFuc2Zvcm0oKSkKKyAgICAgICAgcmVjdCA9IGxheWVyKCktPnRyYW5zZm9ybSgpLT5t
YXBSZWN0KHJlY3QpOwogfQogCiB2b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMoVmVjdG9y
PEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBj
b25zdAogewotICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KGFjY3VtdWxhdGVk
T2Zmc2V0LCBtX2xheWVyLT5zaXplKCkpKTsKKyAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVk
SW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgbGF5ZXIoKS0+c2l6ZSgpKSk7CiB9CiAKIHZvaWQg
UmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wq
IHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmICh3YXNGaXhlZCkKICAgICAgICAgKndhc0ZpeGVk
ID0gZmFsc2U7Ci0gICAgcXVhZHMuYXBwZW5kKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fbGF5
ZXItPnNpemUoKSkpOworICAgIHF1YWRzLmFwcGVuZChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBs
YXllcigpLT5zaXplKCkpKTsKIH0KIAogc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJBZnRl
clBvc2l0aW9uKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQpCkBAIC00NTcs
NyArNDU3LDcgQEAgSW50UmVjdCBSZW5kZXJWaWV3OjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlw
VG9WaXNpYmxlQ29udGVudCkgY29uc3QKICAgICAgICAgUmVuZGVyU2VsZWN0aW9uSW5mbyogaW5m
byA9IGktPnNlY29uZC5nZXQoKTsKICAgICAgICAgLy8gUmVuZGVyU2VsZWN0aW9uSW5mbzo6cmVj
dCgpIGlzIGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgcmVwYWludENvbnRhaW5lciwgc28gbWFw
IHRvIHBhZ2UgY29vcmRpbmF0ZXMuCiAgICAgICAgIExheW91dFJlY3QgY3VyclJlY3QgPSBpbmZv
LT5yZWN0KCk7Ci0gICAgICAgIGlmIChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciA9IGluZm8tPnJlcGFpbnRDb250YWluZXIoKSkgeworICAgICAgICBpZiAoUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciA9IGluZm8tPnJlcGFpbnRDb250YWlu
ZXIoKSkgewogICAgICAgICAgICAgRmxvYXRRdWFkIGFic1F1YWQgPSByZXBhaW50Q29udGFpbmVy
LT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChjdXJyUmVjdCkpOwogICAgICAgICAgICAg
Y3VyclJlY3QgPSBhYnNRdWFkLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7IAogICAgICAgICB9CkBA
IC01NjIsNyArNTYyLDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVuZGVyT2Jq
ZWN0KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGUKICAgICB9CiAKICAgICBp
ZiAoYmxvY2tSZXBhaW50TW9kZSAhPSBSZXBhaW50Tm90aGluZykKLSAgICAgICAgbV9sYXllci0+
Y2xlYXJCbG9ja1NlbGVjdGlvbkdhcHNCb3VuZHMoKTsKKyAgICAgICAgbGF5ZXIoKS0+Y2xlYXJC
bG9ja1NlbGVjdGlvbkdhcHNCb3VuZHMoKTsKIAogICAgIC8vIE5vdyB0aGF0IHRoZSBzZWxlY3Rp
b24gc3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBmb3IgdGhlIG5ldyBvYmplY3RzLCB3YWxrIHRoZW0g
YWdhaW4gYW5kCiAgICAgLy8gcHV0IHRoZW0gaW4gdGhlIG5ldyBvYmplY3RzIGxpc3QuCkBAIC02
NDIsNyArNjQyLDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpnZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0
KiYgc3RhcnRSZW5kZXJlciwgaW50JiBzdGFydE9mZnNldCwgUmUKIAogdm9pZCBSZW5kZXJWaWV3
OjpjbGVhclNlbGVjdGlvbigpCiB7Ci0gICAgbV9sYXllci0+cmVwYWludEJsb2NrU2VsZWN0aW9u
R2FwcygpOworICAgIGxheWVyKCktPnJlcGFpbnRCbG9ja1NlbGVjdGlvbkdhcHMoKTsKICAgICBz
ZXRTZWxlY3Rpb24oMCwgLTEsIDAsIC0xLCBSZXBhaW50TmV3TWludXNPbGQpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCBhNzY4Zjc5ZDY1ZjY1MjU0ZDA2MWQz
MTZkYTA3MWU3ODdiMGE2MDUwLi40ZmZhMjI4ZjFmMjhiYWJhMjZjMWEzZDMyYjdhYWU1ZWMzYTAx
NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTczLDcgKzczLDcg
QEAgcHVibGljOgogCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcoKSBjb25zdCB7IHJldHVybiBt
X2ZyYW1lVmlldzsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wg
Zml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVw
YWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRS
ZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVwYWludFZpZXdSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYsIGJvb2wgaW1tZWRpYXRl
ID0gZmFsc2UpOwogICAgIC8vIFJlcGFpbnQgdGhlIHZpZXcsIGFuZCBhbGwgY29tcG9zaXRlZCBs
YXllcnMgdGhhdCBpbnRlcnNlY3QgdGhlIGdpdmVuIGFic29sdXRlIHJlY3RhbmdsZS4KICAgICAv
LyBGSVhNRTogaWRlYWxseSB3ZSdkIG5ldmVyIGhhdmUgdG8gZG8gdGhpcywgaWYgYWxsIHJlcGFp
bnRzIGFyZSBjb250YWluZXItcmVsYXRpdmUuCkBAIC0yMDQsOCArMjA0LDggQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzUmVuZGVyQ291bnRlcnMoKSB7IHJldHVybiBtX3JlbmRlckNvdW50ZXJDb3Vu
dDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3Jt
cywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9
IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wg
Zml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNv
bnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlN
YXAmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2Fs
UG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0NvbHVtbnMoaW50IGRlc2lyZWRDb2x1bW5D
b3VudCkgY29uc3QgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCmluZGV4IGQ2NjA1NjYxNTA3OWFl
Y2Y3NjdjY2NiOTc0OWUxNWM2MWE4NWJmY2YuLmMxNjk1M2U0M2MxMWYyZWJjZTEyNzZiZjQ3MGVm
ODMzODg3OTMzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcApAQCAtODgsMTIgKzg4LDEyIEBAIHZvaWQgUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JikKICAgICB9CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6
OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6
OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIpOwog
fQogCi12b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJl
cGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0
Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25z
dAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHRo
aXMsIHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7CiB9CkBAIC0xOTAsMTIg
KzE5MCwxMiBAQCBib29sIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om5vZGVBdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgLyogZml4ZWQgKi8sIGJvb2wg
LyogdXNlVHJhbnNmb3JtcyAqLywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBs
eUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNW
R0ZvcmVpZ25PYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCAvKiBmaXhlZCAqLywgYm9vbCAvKiB1c2VUcmFu
c2Zvcm1zICovLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVy
RmxpcE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0
OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0
YXRlLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHRm9yZWln
bk9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVj
dCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25z
dAorY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpwdXNoTWFwcGlu
Z1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9T
dG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKIHsKICAgICByZXR1
cm4gU1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcih0aGlzLCBhbmNlc3Rv
clRvU3RvcEF0LCBnZW9tZXRyeU1hcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCmluZGV4IDgwZGRmZDYzMDhkZDhm
NjM5YTE0NWQyZDA1MzNmMDI0YjZmMmJjY2MuLjYwMjQ4MmRlZGRhMmE5MGU0Mzk3YzlhOWZkMDM2
MjA0YWU1YTA3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCi0g
ICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAg
dmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0gZmFs
c2UpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKQEAgLTU0
LDggKzU0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBI
aXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0UG9pbnQmIHBvaW50
SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVz
dEFjdGlvbikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzU1ZHRm9yZWlnbk9iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29u
dGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVk
LCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlw
T3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29u
c3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5
TWFwJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1
c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0g
QXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNv
bnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdl
b21ldHJ5TWFwJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJh
bnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdH
cmFkaWVudFN0b3AuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3Jh
ZGllbnRTdG9wLmgKaW5kZXggYjkwYWI1MDgxMDQxMTM4NDE0MWMzMjM4OTQ3NmUzYzg0NDM0MDY1
Yi4uOTViYzM0ZTJiZGJkNjAwNTkwM2ZhN2MxNjA2N2Q4MTkyMzEyN2U4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIG92ZXJyaWRlcyBhcmUgbmVlZGVk
IHRvIHByZXZlbnQgQVNTRVJUcyBvbiA8c3ZnPjxzdG9wIC8+PC9zdmc+CiAgICAgLy8gUmVuZGVy
T2JqZWN0J3MgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgQVNTRVJUX05PVF9SRUFDSEVEKCkKICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MDAKLSAgICB2
aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICB2aXJ0dWFs
IExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCopIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQogICAg
IHZpcnR1YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gRmxv
YXRSZWN0KCk7IH0KICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNv
bnN0IHsgcmV0dXJuIEZsb2F0UmVjdCgpOyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWlu
dFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5D
b250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyLmgKaW5kZXggZjI2YzVmYzYxYTM3ZjgyMDdkNGQ2NDliZTY4MDlkNTJhMmY4ODI1
Zi4uYjRiYzIzNDVhNjU4MTJiM2JmMmVhOWNhZGQzNzY4NjQ3OWQ1ZmRlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5l
ci5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICAKLSAgICB2aXJ0dWFsIExheW91
dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3Qq
KSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3Qg
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCop
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0
OwogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0
VGVzdEFjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZS5jcHAKaW5kZXggMDU3YmZkYTAwN2UyYzY4NDM0OWUzYzczZmViODZiMDFjZjM1ZDMw
YS4uMTc2ZmE2MDdhNjRiNzJkMzZmMTdlYmE2NWQ2NzdhZmQ1NjFhYzZkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcApAQCAtNjksMjIg
KzY5LDIyIEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdJbmxpbmU6OnJlcGFpbnRSZWN0SW5Mb2NhbENv
b3JkaW5hdGVzKCkgY29uc3QKICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiB9CiAKLUxheW91dFJl
Y3QgUmVuZGVyU1ZHSW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVy
U1ZHSW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5k
ZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29u
dGFpbmVyKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdJbmxpbmU6OmNvbXB1dGVGbG9hdFJlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3Qm
IHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdJbmxpbmU6OmNv
bXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7
CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQodGhpcywg
cmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJT
VkdJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGJvb2wgLyogdXNlVHJhbnNmb3JtcyAqLywgYm9vbCAvKiBmaXhlZCAqLywg
VHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwg
Ym9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR0lubGluZTo6bWFwTG9jYWxUb0Nv
bnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29s
IC8qIHVzZVRyYW5zZm9ybXMgKi8sIGJvb2wgLyogZml4ZWQgKi8sIFRyYW5zZm9ybVN0YXRlJiB0
cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBj
b25zdAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIodGhpcywg
cmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIHdhc0ZpeGVkKTsKIH0KIAotY29uc3Qg
UmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29u
c3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5
TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHSW5s
aW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29u
c3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5l
cih0aGlzLCBhbmNlc3RvclRvU3RvcEF0LCBnZW9tZXRyeU1hcCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAppbmRleCA1MzNhOTlhYTZiMDE3
N2U4N2JhOGM3MDRmYTExMWIxMWI3MzZjNDI4Li42NDE5ZmU3ZDRkNTcyZjBlN2Q4ZTg0ZmMzMmJh
ZmQ1YzM4ZTk3YmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lLmgKQEAgLTQ1LDEwICs0NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGbG9h
dFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBy
ZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBMYXlv
dXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0
UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZs
b2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIG1h
cExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNv
bnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAw
KSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVu
ZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJl
Y3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zv
cm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBi
b29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgUmVu
ZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4m
LCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCmluZGV4IDE4ZTdl
Y2FjZTdhM2EzYzY4ZDhmNWY0MDQ4OGYyZjZkOTJiNTRlMTUuLmY0YjEyOTUwYmE3Y2Q3Mzc4Mzg0
NjEyNzY5ZWUzMDFmNGY0NDFlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCIKIAogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291
cmNlLmgiCisjaW5jbHVkZSAiUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIgogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VzQ2FjaGUuaCIKICNpbmNsdWRlICJT
VkdTdHlsZWRFbGVtZW50LmgiCkBAIC00NSwyMiArNDYsMjIgQEAgUmVuZGVyU1ZHTW9kZWxPYmpl
Y3Q6OlJlbmRlclNWR01vZGVsT2JqZWN0KFNWR1N0eWxlZEVsZW1lbnQqIG5vZGUpCiB7CiB9CiAK
LUxheW91dFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5
b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsK
ICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQodGhpcywgcmVwYWludENvbnRhaW5lcik7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHTW9kZWxPYmpl
Y3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAor
dm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBh
aW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0Ojpjb21w
dXRlRmxvYXRSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyLCByZXBhaW50UmVj
dCwgZml4ZWQpOwogfQogCi12b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjptYXBMb2NhbFRvQ29u
dGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qIGZp
eGVkICovLCBib29sIC8qIHVzZVRyYW5zZm9ybXMgKi8sIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zv
cm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAor
dm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qIGZpeGVkICovLCBib29s
IC8qIHVzZVRyYW5zZm9ybXMgKi8sIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBw
bHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIFNWR1Jl
bmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIodGhpcywgcmVwYWludENvbnRhaW5lciwg
dHJhbnNmb3JtU3RhdGUsIHdhc0ZpeGVkKTsKIH0KIAotY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5k
ZXJTVkdNb2RlbE9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5
TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdNb2RlbE9iamVjdDo6cHVz
aE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNl
c3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIodGhpcywg
YW5jZXN0b3JUb1N0b3BBdCwgZ2VvbWV0cnlNYXApOwogfQpAQCAtNjgsNyArNjksNyBAQCBjb25z
dCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR01vZGVsT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFp
bmVyKGNvbnN0IFJlbmRlckJveAogLy8gQ29waWVkIGZyb20gUmVuZGVyQm94LCB0aGlzIG1ldGhv
ZCBsaWtlbHkgcmVxdWlyZXMgZnVydGhlciByZWZhY3RvcmluZyB0byB3b3JrIGVhc2lseSBmb3Ig
Ym90aCBTVkcgYW5kIENTUyBCb3ggTW9kZWwgY29udGVudC4KIC8vIEZJWE1FOiBUaGlzIG1heSBh
bHNvIG5lZWQgdG8gbW92ZSBpbnRvIFNWR1JlbmRlclN1cHBvcnQgYXMgdGhlIFJlbmRlckJveCB2
ZXJzaW9uIGRlcGVuZHMKIC8vIG9uIGJvcmRlckJvdW5kaW5nQm94KCkgd2hpY2ggU1ZHIFJlbmRl
ckJveCBzdWJjbGFzZXMgKGxpa2UgU1ZHUmVuZGVyQmxvY2spIGRvIG5vdCBpbXBsZW1lbnQuCi1M
YXlvdXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9pbnQqKSBjb25z
dAorTGF5b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGluZUJvdW5kc0ZvclJlcGFp
bnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9p
bnQqKSBjb25zdAogewogICAgIExheW91dFJlY3QgYm94ID0gZW5jbG9zaW5nTGF5b3V0UmVjdChy
ZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKTsKICAgICBhZGp1c3RSZWN0Rm9yT3V0bGlu
ZUFuZFNoYWRvdyhib3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdNb2RlbE9iamVjdC5oCmluZGV4IDBkODE5MjYwOTNmNmJmNzRlZGMwOGM0OGMyODc5
Nzc0YTQ0YjJkNjAuLjE1ZmI0OWFmNjBjYWZhOWYyMzZhZjgzZThiNmQyNzlhOTFjOWI4ZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmgKQEAgLTUxLDE1ICs1MSwxNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIExheW91
dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRS
ZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxv
YXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFJl
Y3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIExheW91dFBvaW50KikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
RmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRQb2ludCopIGNvbnN0IE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+
JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVk
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wg
Zml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNv
bnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25z
dCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBU
cmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJG
bGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29u
c3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZl
cmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAK
aW5kZXggNzA3ZGE4ODZlMmNhOThhMWI2OTZlZWM0YjI2MDI4ZjY2NjZmZmQ1ZS4uNmExZWUwZjdh
YmRmNzg1MTk2NmQzMDc3ZjI1YjhlYzk3N2YwOGU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC0zNjksMTIgKzM2OSwxMiBAQCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIFJlbmRlclNWR1Jvb3Q6OmxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0o
KSBjb25zdAogICAgIHJldHVybiBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07CiB9CiAKLUxheW91
dFJlY3QgUmVuZGVyU1ZHUm9vdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRl
clNWR1Jvb3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRl
clN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250
YWluZXIpOwogfQogCi12b2lkIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJl
cGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdSb290Ojpjb21wdXRl
RmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAg
IC8vIEFwcGx5IG91ciBsb2NhbCB0cmFuc2Zvcm1zIChleGNlcHQgZm9yIHgveSB0cmFuc2xhdGlv
biksIHRoZW4gb3VyIHNoYWRvdywgCiAgICAgLy8gYW5kIHRoZW4gY2FsbCBSZW5kZXJCb3gncyBt
ZXRob2QgdG8gaGFuZGxlIGFsbCB0aGUgbm9ybWFsIENTUyBCb3ggbW9kZWwgYml0cwpAQCAtMzk1
LDcgKzM5NSw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250CiAvLyBUaGlzIG1ldGhvZCBleHBl
Y3RzIGxvY2FsIENTUyBib3ggY29vcmRpbmF0ZXMuCiAvLyBDYWxsZXJzIHdpdGggbG9jYWwgU1ZH
IHZpZXdwb3J0IGNvb3JkaW5hdGVzIHNob3VsZCBmaXJzdCBhcHBseSB0aGUgbG9jYWxUb0JvcmRl
ckJveFRyYW5zZm9ybQogLy8gdG8gY29udmVydCBmcm9tIFNWRyB2aWV3cG9ydCBjb29yZGluYXRl
cyB0byBsb2NhbCBDU1MgYm94IGNvb3JkaW5hdGVzLgotdm9pZCBSZW5kZXJTVkdSb290OjptYXBM
b2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBi
b29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1T
dGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9p
ZCBSZW5kZXJTVkdSb290OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3Jtcywg
VHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwg
Ym9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFmaXhlZCk7IC8vIFdlIHNob3Vs
ZCBoYXZlIG5vIGZpeGVkIGNvbnRlbnQgaW4gdGhlIFNWRyByZW5kZXJpbmcgdHJlZS4KICAgICBB
U1NFUlQodXNlVHJhbnNmb3Jtcyk7IC8vIG1hcHBpbmcgYSBwb2ludCB0aHJvdWdoIFNWRyB3L28g
cmVzcGVjdGluZyB0cmFzbmZvcm1zIGlzIHVzZWxlc3MuCkBAIC00MDMsNyArNDAzLDcgQEAgdm9p
ZCBSZW5kZXJTVkdSb290OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLAogICAgIFJlbmRlclJlcGxhY2VkOjptYXBMb2NhbFRvQ29udGFp
bmVyKHJlcGFpbnRDb250YWluZXIsIGZpeGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0
ZSwgQXBwbHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVj
dCogUmVuZGVyU1ZHUm9vdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5
TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdSb290OjpwdXNoTWFwcGlu
Z1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9T
dG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKIHsKICAgICByZXR1
cm4gUmVuZGVyUmVwbGFjZWQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoYW5jZXN0b3JUb1N0b3BB
dCwgZ2VvbWV0cnlNYXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuaAppbmRleCA5YWE3ZTdjMTg2YWU0ODc2OTBjNDBhYWM5MDVmZjVjYzBkMDIzNzQ0
Li5mMTM4ZjY0OTFmY2VhNGMxNTljMzc3NWU3NWY0MTAxNmU5MjRjNjczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApAQCAtOTIsMTEgKzkyLDExIEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdFBvaW50JiBwb2ludEluQ29udGFp
bmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24p
IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsK
LSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wg
Zml4ZWQpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFp
bnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0
JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYs
IEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNG
aXhlZCA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3Rv
cEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2Nh
bFRvQ29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNv
bnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAw
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1h
cHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3Rv
clRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmly
dHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCmluZGV4
IGY1MTRlMjE1N2M0NWM2OWFmNTM2YWQwNjEzN2IzNzc4MzQ5NDhhOTQuLjcwZDhjMzVmODE4OWM5
NTBjZGIzOWYwZmZkZDE1NGJmZjhlODkzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtOTQsMjkgKzk0LDI5IEBAIGNvbnN0IFJlbmRl
clNWR1RleHQqIFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcihjb25z
dCBSZW5kZXJPYmplCiAgICAgcmV0dXJuIHRvUmVuZGVyU1ZHVGV4dChzdGFydCk7CiB9CiAKLUxh
eW91dFJlY3QgUmVuZGVyU1ZHVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJl
bmRlclNWR1RleHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1Jl
bmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRD
b250YWluZXIpOwogfQogCi12b2lkIFJlbmRlclNWR1RleHQ6OmNvbXB1dGVSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVj
dCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZVJlY3RGb3JS
ZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91
dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRS
ZWN0ID0gcmVjdDsKICAgICBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFp
bmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwogICAgIHJlY3QgPSBlbmNsb3NpbmdMYXlvdXRSZWN0
KHJlcGFpbnRSZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJTVkdUZXh0Ojpjb21wdXRlRmxvYXRSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRS
ZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHVGV4dDo6
Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVw
YWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QK
IHsKICAgICBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCh0aGlz
LCByZXBhaW50Q29udGFpbmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwogfQogCi12b2lkIFJlbmRl
clNWR1RleHQ6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGJvb2wgLyogZml4ZWQgKi8sIGJvb2wgLyogdXNlVHJhbnNmb3JtcyAqLywg
VHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwg
Ym9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1RleHQ6Om1hcExvY2FsVG9Db250
YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCAv
KiBmaXhlZCAqLywgYm9vbCAvKiB1c2VUcmFuc2Zvcm1zICovLCBUcmFuc2Zvcm1TdGF0ZSYgdHJh
bnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29u
c3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJl
cGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJl
bmRlck9iamVjdCogUmVuZGVyU1ZHVGV4dDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAm
IGdlb21ldHJ5TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdUZXh0Ojpw
dXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFu
Y2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKIHsK
ICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcih0aGlz
LCBhbmNlc3RvclRvU3RvcEF0LCBnZW9tZXRyeU1hcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCmluZGV4IDkzY2I2NGY4ZmIyZTc0ZWViMjg2YWVi
YjQ2MmQ3OWYyZjFiY2Q2ZGQuLjAyYzNjNDg4ZGE1NDViZTc5MzZlOGYwMWJhMzdmNTJhMzk0ODJi
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCkBA
IC03MSwxMiArNzEsMTIgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCi0gICAgdmly
dHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29t
cHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAg
dmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBh
aW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVj
dCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIEFw
cGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhl
ZCA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGlu
Z1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0
LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJv
b2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRh
aW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBp
bmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRv
U3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNo
aWxkID0gMCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCopIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBPVkVSUklERTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCmlu
ZGV4IDBiZmIwYTUyNzljODg4NDk0NjVlZGYyZjk1MWJmOGFlMDM0NGRhYzEuLjViYzU1ZDdiNjNl
MGRmNjVmM2ZiYzQ5OGYxZDI3ZTZkY2YyOTlkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtNDYsNyArNDYsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUxheW91dFJlY3QgU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKQorTGF5b3V0UmVjdCBTVkdSZW5kZXJT
dXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3Qq
IG9iamVjdCwgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikKIHsK
ICAgICAvLyBSZXR1cm4gZWFybHkgZm9yIGFueSBjYXNlcyB3aGVyZSB3ZSBkb24ndCBhY3R1YWxs
eSBwYWludAogICAgIGlmIChvYmplY3QtPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxF
ICYmICFvYmplY3QtPmVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpCkBAIC01
OSw3ICs1OSw3IEBAIExheW91dFJlY3QgU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiBvCiAgICAgcmV0dXJuIGVuY2xvc2lu
Z0xheW91dFJlY3QocmVwYWludFJlY3QpOwogfQogCi12b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmNv
bXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVj
dCwgYm9vbCBmaXhlZCkKK3ZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZv
clJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4
ZWQpCiB7CiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUqIHN2Z1N0eWxlID0gb2JqZWN0LT5zdHls
ZSgpLT5zdmdTdHlsZSgpOwogICAgIGlmIChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3cgPSBzdmdT
dHlsZS0+c2hhZG93KCkpCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6
Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJl
CiAgICAgb2JqZWN0LT5wYXJlbnQoKS0+Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQocmVwYWlu
dENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKIH0KIAotdm9pZCBTVkdSZW5kZXJTdXBw
b3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5z
Zm9ybVN0YXRlLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9j
YWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0
YXRlLCBib29sKiB3YXNGaXhlZCkKIHsKICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9y
bShvYmplY3QtPmxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSk7CiAKQEAgLTg2LDcgKzg2LDcgQEAg
dm9pZCBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9i
amVjdCogb2JqZWN0LCBSZW5kZXJCb3gKICAgICBwYXJlbnQtPm1hcExvY2FsVG9Db250YWluZXIo
cmVwYWludENvbnRhaW5lciwgZmFsc2UsIHRydWUsIHRyYW5zZm9ybVN0YXRlLCBSZW5kZXJPYmpl
Y3Q6OkRvTm90QXBwbHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRl
ck9iamVjdCogU1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9y
VG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkKK2NvbnN0IFJlbmRlck9i
amVjdCogU1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0
b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKQogewogICAgIEFTU0VS
VF9VTlVTRUQoYW5jZXN0b3JUb1N0b3BBdCwgYW5jZXN0b3JUb1N0b3BBdCAhPSBvYmplY3QpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBv
cnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oCmlu
ZGV4IGZhOTYwZjA1ZTY5ZTAyYTFhNWViYjE4MjIwNjYyZmI3YTc1NzkwODMuLjhjYmZkMzZiMWE2
NzY2MTk2ZDVkMTFmMDIzZDc4NzM5OTdhMGZlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIEZs
b2F0UmVjdDsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgUmVuZGVyQm94TW9kZWxPYmplY3Q7
CiBjbGFzcyBSZW5kZXJHZW9tZXRyeU1hcDsKK2NsYXNzIFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3Q7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRl
clNWR1Jvb3Q7CkBAIC02MiwxMCArNjMsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHBh
aW50SW5mb0ludGVyc2VjdHNSZXBhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmIGxvY2FsUmVwYWlu
dFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUcmFuc2Zvcm0sIGNvbnN0IFBhaW50
SW5mbyYpOwogCiAgICAgLy8gSW1wb3J0YW50IGZ1bmN0aW9ucyB1c2VkIGJ5IG5lYXJseSBhbGwg
U1ZHIHJlbmRlcmVycyBjZW50cmFsaXppbmcgY29vcmRpbmF0ZSB0cmFuc2Zvcm1hdGlvbnMgLyBy
ZXBhaW50IHJlY3QgY2FsY3VsYXRpb25zCi0gICAgc3RhdGljIExheW91dFJlY3QgY2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiwgUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpOwotICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVGbG9hdFJl
Y3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCosIFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkKTsKLSAgICBzdGF0aWMgdm9p
ZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCosIFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIGJvb2wqIHdhc0ZpeGVk
ID0gMCk7Ci0gICAgc3RhdGljIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRh
aW5lcihjb25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5j
ZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKTsKKyAgICBzdGF0aWMgTGF5b3V0UmVj
dCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqLCBSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKTsKKyAgICBzdGF0aWMgdm9p
ZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqLCBSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZp
eGVkKTsKKyAgICBzdGF0aWMgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9i
amVjdCosIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5z
Zm9ybVN0YXRlJiwgYm9vbCogd2FzRml4ZWQgPSAwKTsKKyAgICBzdGF0aWMgY29uc3QgUmVuZGVy
T2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0
IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21l
dHJ5TWFwJik7CiAKICAgICAvLyBTaGFyZWQgYmV0d2VlbiBTVkcgcmVuZGVyZXJzIGFuZCByZXNv
dXJjZXMuCiAgICAgc3RhdGljIHZvaWQgYXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFJlbmRlck9iamVjdCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152439</attachid>
            <date>2012-07-14 17:29:20 -0700</date>
            <delta_ts>2012-07-18 15:48:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86022-20120714202920.patch</filename>
            <type>text/plain</type>
            <size>142926</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmMzVjMjQ4MmQzNzM4MmQ1YTJmYTJmMmYxYmUyNmZmMTVmNmNhMDM1Li43
MTQzZTk3NzJmYzE4ODk4NjUxZTcyZjUxYWNmZWJlYTg0MGE4NTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjI4IEBACisyMDEyLTA3LTE0ICBGbG9yaW4gTWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmVmYWN0b3IgbGF5ZXItcmVsYXRlZCBsb2dpYyBvdXQgb2YgUmVu
ZGVyQm94TW9kZWxPYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg2MDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBleHRyYWN0cyBsYXllci1yZWxhdGVkIGxvZ2ljIGludG8gYSBk
ZWRpY2F0ZWQgY2xhc3MKKyAgICAgICAgKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QpIGFuZCBy
ZWZhY3RvcnMgZGVwZW5kZW50IGNvZGUgdG8gbWFrZSB1c2UKKyAgICAgICAgb2YgdGhlIG5ldyB0
eXBlIGluc3RlYWQgb2YgUmVuZGVyQm94TW9kZWxPYmplY3QuIFRoaXMgaXMgaW4gcHJlcGFyYXRp
b24KKyAgICAgICAgb2YgYWRkaW5nIG5vbi1SZW5kZXJCb3hNb2RlbE9iamVjdCBsYXllciBzdXBw
cnQuCisKKyAgICAgICAgQWxsIG1ldGhvZHMgdGhhdCB3ZXJlIHVzaW5nIFJlbmRlckJveE1vZGVs
T2JqZWN0IGZvciBsYXllci1yZWxhdGVkCisgICAgICAgIGZ1bmN0aW9uYWxpdHkgYXJlIHVwZGF0
ZWQgdG8gd29yayB3aXRoIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QKKyAgICAgICAgaW5zdGVh
ZCAoYSBSZW5kZXJMYXllcidzIHJlbmRlcmVyKCkgY2FuIG5vIGxvbmdlciBiZSBhc3N1bWVkIHRv
IGJlCisgICAgICAgIGEgUmVuZGVyQm94TW9kZWxPYmplY3QpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0czogcmVmYWN0b3Jpbmcgd2l0aCBubyBiZWhhdmlvciBjaGFuZ2VzLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVuZGVy
aW5nL0xheW91dFJlcGFpbnRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXlv
dXRSZXBhaW50ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCUi5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6c2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFJlbmRlckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6b3V0bGluZUJv
dW5kc0ZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjptYXBMb2NhbFRv
Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlY3RG
b3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6ZW5jbG9zaW5nRmxvYXRQ
YWludGluZ0xheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAg
IChSZW5kZXJCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVs
T2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3hNb2RlbE9iamVjdDo6flJlbmRlckJveE1vZGVsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rv
cik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmg6CisgICAgICAgIChS
ZW5kZXJHZW9tZXRyeU1hcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6cmVjdFdpdGhPdXRsaW5l
Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNvbXB1dGVSZWN0
Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9D
b250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAg
IChSZW5kZXJJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpjb21wdXRlUmVwYWludFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6
OmNoZWNrQ29udGFpbmluZ0Jsb2NrQ2hhaW5Gb3JQYWdpbmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzUG9zaXRpb25lZENvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
aGFzQW5jZXN0b3JXaXRoRmlsdGVyT3V0c2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6c2Nyb2xsVG8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlcGFpbnRJ
bmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJlbmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpyZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZW5kZXJl
cik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXBhaW50T25Db21wb3NpdGlu
Z0NoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVp
cmVzQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnJlYXNvbkZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdE1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpzZWxl
Y3Rpb25SZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJr
ZXIuaDoKKyAgICAgICAgKFJlbmRlckxpc3RNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphZGRDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjphZGRMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0OjpyZW1vdmVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
Ojptb3ZlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6ZmluZE5leHRM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmVuY2xvc2luZ0xheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBh
aW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6Y29udGFpbmVyRm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OnJlcGFpbnRVc2luZ0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OnJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZXBhaW50
UmVjdGFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cmVwYWludEFmdGVy
TGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZWN0V2l0
aE91dGxpbmVGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmFkanVzdFN0eWxlRGlmZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVyUXVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2FsVG9Db250YWluZXJQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OmlzQ29tcG9zaXRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzVHJh
bnNmb3JtYWJsZU9iamVjdCk6CisgICAgICAgIChSZW5kZXJPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UmVwbGFjZWQ6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclJlcGxhY2VkOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAgIChSZW5kZXJSZXBsYWNlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNlbGVjdGlvbkluZm9CYXNlOjpyZXBhaW50Q29udGFpbmVyKToKKyAgICAgICAg
KFJlbmRlclNlbGVjdGlvbkluZm9CYXNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxs
Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZUNlbGwuaDoKKyAgICAgICAgKFJlbmRlclRhYmxlQ2VsbCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29sOjpj
bGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ29sLmg6CisgICAgICAgIChSZW5kZXJUYWJsZUNvbCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlUm93
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlUm93Lmg6CisgICAgICAgIChSZW5kZXJUYWJsZVJvdyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0Lmg6CisgICAgICAgIChSZW5kZXJUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6
On5SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3Q6OmRlc3Ryb3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjplbnN1cmVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpoYXNTZWxmUGFpbnRpbmdMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6c3R5bGVXaWxsQ2hh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OnN0eWxl
RGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
OjpsYXllcik6CisgICAgICAgIChXZWJDb3JlOjp0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclZpZXc6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVmlldzo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjppc0Nv
bXBvc2l0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JS
ZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJWaWV3OjpzZWxlY3Rpb25Cb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6
OmNsZWFyU2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorICAg
ICAgICAoUmVuZGVyVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25l
LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9i
amVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaDoKKyAgICAgICAg
KFJlbmRlclNWR0ZvcmVpZ25PYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHR3JhZGllbnRTdG9wLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRk
ZW5Db250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6Y29tcHV0
ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5l
OjptYXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGlu
ZTo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmUuaDoKKyAgICAgICAgKFJlbmRlclNWR0lubGluZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JS
ZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjptYXBMb2Nh
bFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0Ojpw
dXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVs
T2JqZWN0OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oOgorICAgICAgICAoUmVuZGVyU1ZHTW9kZWxPYmplY3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSb290OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290OjptYXBMb2NhbFRvQ29udGFpbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnB1c2hNYXBwaW5nVG9Db250YWlu
ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oOgorICAgICAgICAo
UmVuZGVyU1ZHUm9vdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmNvbXB1dGVSZWN0
Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpjb21wdXRlRmxv
YXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjptYXBM
b2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnB1c2hN
YXBwaW5nVG9Db250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4
dC5oOgorICAgICAgICAoUmVuZGVyU1ZHVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6
OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jl
bmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0Lmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFNWR1JlbmRlclN1cHBvcnQpOgorCiAyMDEyLTA3LTE0ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBDaHJvbWl1bSBNYWMgYnVpbGQgZmFp
bHVyZSBhZnRlciByMTIyNjcwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2MDNjZTIxOTZjMTgy
Mjg0MzQ1YmRjN2ZiZTNkYTk2ZTEyMGIwNDRmLi5hNzhmNzZjMDMwMjMxNzc0ZDUzY2RhZmM4ZjQy
OGU3ZDIyMGFlZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQyMiw2ICsxNDIyLDcgQEAg
U0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKICAgICByZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisgICAgcmVuZGVyaW5nL1JlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCiAgICAgcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGM3OWY4ZGI4MmZkNWZiMzU5YjU4YWUyZGRkNDQz
NGYzODRmMTBkNDAuLmNhZTNiOWM0MzFkZTc1NGExYmE2ZDlmMjM5MDY4YzY5ZjE0ZDUxNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzk5MCw2ICszOTkwLDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKaW5kZXggNWRhYzJiMDVkMDdjZDZhNjY3OGYyN2M0ZGM5NmYxNTJkY2Ji
OTI0Ni4uZjJlZTRiNmYyM2JkMjJiOGJlNDU3ZjY3MGZjNDY1YTk1NjVlNTIyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCkBAIC0xMzM1LDYgKzEzMzUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICByZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRleHRG
cmFnbWVudC5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgXAorICAgIHJlbmRl
cmluZy9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgXAogICAgIHJl
bmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIFwKQEAgLTI1NjcsNiArMjU2OCw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIHJlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaCBcCiAgICAgcmVuZGVyaW5n
L1JlbmRlclRleHQuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggXAorICAgIHJlbmRl
cmluZy9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJWaWRlby5oIFwKICAgICByZW5kZXJp
bmcvUmVuZGVyVmlldy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMWIyNjE4ZTdmYTE4NTdj
YmM5NmMyMTJiNjIwZGYxODgwNzhlMzA0Ni4uODc0ODAxMzVlMmFjZjE3OWFmMjYwOTE4MmM1YTY0
MDQ1NzE0OTA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTEwOTUsNyArMTA5NSw3IEBAIF9f
Wk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMjF2aXNpdGVkRGVwZW5kZW50Q29sb3JFaQogX19aTks3
V2ViQ29yZTExU2NyaXB0VmFsdWU5Z2V0U3RyaW5nRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGNlN0
cmluZ0UKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE0ZW5jbG9zaW5nTGF5ZXJFdgogX19a
Tks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTVsb2NhbFRvQWJzb2x1dGVFUktOU18xMEZsb2F0UG9p
bnRFYmIKLV9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDIwbG9jYWxUb0NvbnRhaW5lclF1YWRF
UktOU185RmxvYXRRdWFkRVBOU18yMFJlbmRlckJveE1vZGVsT2JqZWN0RWJQYgorX19aTks3V2Vi
Q29yZTEyUmVuZGVyT2JqZWN0MjBsb2NhbFRvQ29udGFpbmVyUXVhZEVSS05TXzlGbG9hdFF1YWRF
UE5TXzI1UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdEViUGIKIF9fWk5LN1dlYkNvcmUxMlJlbmRl
ck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYgogX19aTks3V2ViQ29yZTEyUmVuZGVy
T2JqZWN0MzlwaXhlbFNuYXBwZWRBYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3RFdgogX19aTks3
V2ViQ29yZTEyUmVuZGVyT2JqZWN0N2NoaWxkQXRFagpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGYzZjc3
ZWE0M2FkYWM1YjE5ZjA5YjNlMGNhZDQzYmFlNWE0NzkxNTQuLjk1NDhjZTQyMGI1NGFhNGZmNWM5
MWNmMGYxNzQ4ZDM2ODdiODdjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTU2Myw2ICs1NjMsNyBA
QAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJQYXJ0LmgnLAogICAgICAgICAgICAgJ3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVy
VGV4dC5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dC5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5oJywKICAgICAg
ICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVmlldy5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmgnLApAQCAtNDgwNSw2ICs0ODA2LDcgQEAKICAgICAgICAgICAgICdyZW5k
ZXJpbmcvUmVuZGVyVGhlbWVXaW4uaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclRo
ZW1lV2luQ0UuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5o
JywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAn
LAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCcsCiAgICAgICAg
ICAgICAncmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5n
L1JlbmRlclZpZGVvLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCA1M2IyMjRjM2I0OThhNzA0Y2VhMzI4NzgyMzk4YTZjNjg1YzU4YjRkLi4x
YzM5ZmZmM2MxNTIwYmZmZTNkMjA1MmMyZjMwYjAzODE3NzBkMzE1IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDM2MzcsNiArNDM2MzcsNjIg
QEAKIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmNwcCIK
KwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9f
Q0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJ
CQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1
Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1
Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccmVuZGVyaW5nXFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuaCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlclRyZWVB
c1RleHQuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYTQ3MzA5MTk4
ZWJiYzY3ZjczODM2ZGE1YTQ5YWEzOWEzNWNkMTY4Li5lMGU4YjNjN2Y1YTE3MmYzMTIwN2VlZTli
ODg0MmU5OTA1MTU5M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDEzLDYgKzEwMTMsOCBAQAogCQkzQUIwMkQyQjEyRDRG
OTE2MDBGQkI2OTQgLyogU3RvcmFnZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0FCMDJEMjkxMkQ0RjkxNjAwRkJCNjk0IC8qIFN0b3Jh
Z2VUcmFja2VyLmNwcCAqLzsgfTsKIAkJM0FDMzY4MDAxMkVGN0EwOTAwNkEzRDZGIC8qIFN0b3Jh
Z2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzQUMzNjdGRTEyRUY3QTA5MDA2QTNENkYgLyogU3RvcmFnZVRyYWNrZXJDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzQUM2
NDhCMjEyOUUxNDY1MDBDM0VCMjUgLyogRWRpdGluZ0JvdW5kYXJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQUM2NDhCMTEyOUUxNDY1MDBDM0VCMjUg
LyogRWRpdGluZ0JvdW5kYXJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJM0MyNDRGRUFBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDNDMjQ0RkU0QTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJM0My
NDRGRUJBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0MyNDRGRTVBMzc1
QUM2MzNGODhCRTZGIC8qIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuY3BwICovOyB9OwogCQk0
MTAwMkNDRDBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkNDQjBGNjZFREVGMDA5
RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi87IH07CiAJCTQxMDAyQ0NFMEY2NkVERUYw
MDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlw
dEZ1bmN0aW9uQ2FsbC5jcHAgKi87IH07CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBK
U01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRD
dXN0b20uY3BwICovOyB9OwpAQCAtODA1MCw2ICs4MDUyLDggQEAKIAkJM0FCMDJEMjkxMkQ0Rjkx
NjAwRkJCNjk0IC8qIFN0b3JhZ2VUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0b3JhZ2VUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJM0FDMzY3RkUxMkVGN0EwOTAwNkEzRDZGIC8qIFN0b3JhZ2VUcmFja2VyQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VUcmFja2VyQ2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNBQzY0OEIxMTI5RTE0NjUwMEMzRUIyNSAv
KiBFZGl0aW5nQm91bmRhcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRp
dGluZ0JvdW5kYXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNDMjQ0RkU0QTM3
NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0MyNDRGRTVBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMDAyQ0NDMEY2NkVERUYwMDlFNjYwRCAv
KiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVzc2FnZUV2ZW50Q3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMjY2LDYgKzIxMjcwLDggQEAK
IAkJCQlCQ0VBNDg0QjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWUuaCAqLywKIAkJCQlC
Q0VBNDg0ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCAqLywKIAkJCQlCQ0VB
NDg0OTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMubW0gKi8sCisJCQkJM0MyNDRG
RTVBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuY3BwICovLAor
CQkJCTNDMjQ0RkU0QTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
LmggKi8sCiAJCQkJOTM5NTVBNDIwM0Q3MjkzMjAwODYzNUNFIC8qIFJlbmRlclRyZWVBc1RleHQu
Y3BwICovLAogCQkJCTkzOTU1QTQxMDNENzI5MzIwMDg2MzVDRSAvKiBSZW5kZXJUcmVlQXNUZXh0
LmggKi8sCiAJCQkJRTRCNDFFMzMwQ0JGQjYwOTAwQUYyRUNFIC8qIFJlbmRlclZpZGVvLmNwcCAq
LywKQEAgLTI0NDY5LDYgKzI0NDc1LDcgQEAKIAkJCQlCQ0VBNDg4RTA5N0Q5MzAyMDA5NEM5RTQg
LyogUmVuZGVyVGV4dEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg4QTA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODg3
MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
M0MyNDRGRUFBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRjE5OThDMDgyNDVFNTkwMDFFOUFCQyAvKiBSZW5kZXJUcmVl
QXNUZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTQ1MjBDRDY4QTM1MDBGQURBNzUgLyog
UmVuZGVyVmlkZW8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODY4MDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJWaWV3LmggaW4gSGVhZGVycyAqLywKQEAgLTI3NjUxLDYgKzI3NjU4LDcgQEAK
IAkJCQlCQ0VBNDg4OTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkNFQTQ4ODgwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBRDUwODI0NUU1OTAwMUU5QUJDIC8qIFJlbmRlclRy
ZWVBc1RleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJM0MyNDRGRUJBMzc1QUM2MzNGODhCRTZG
IC8qIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0
NjE0NTEwQ0Q2OEEzNTAwRkFEQTc1IC8qIFJlbmRlclZpZGVvLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDRUE0ODY3MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJWaWV3LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4NzFERkU1MEExNTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJXaWRnZXQuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0
UmVwYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmgK
aW5kZXggNTc0MDBmYWViZjdiMjBhMTY1NGM4OWE4MWRkYmNiM2YxOTM1ZmZiMC4uNWY5NmZkYzBm
NDZjNDRhYTQ4NDM1OTM2YmQzODc2ZDM5ZmMyMWJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9MYXlvdXRSZXBhaW50ZXIuaApAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q7CiBjbGFzcyBSZW5kZXJP
YmplY3Q7Ci1jbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdDsKIAogY2xhc3MgTGF5b3V0UmVwYWlu
dGVyIHsKIHB1YmxpYzoKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IFJlbmRlck9iamVjdCYgbV9vYmplY3Q7Ci0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG1fcmVw
YWludENvbnRhaW5lcjsKKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBtX3JlcGFpbnRD
b250YWluZXI7CiAgICAgLy8gV2Ugc3RvcmUgdGhlc2UgdmFsdWVzIGFzIExheW91dFJlY3RzLCBi
dXQgdGhlIGZpbmFsIGludmFsaWRhdGlvbnMgd2lsbCBiZSBwaXhlbCBzbmFwcGVkCiAgICAgTGF5
b3V0UmVjdCBtX29sZEJvdW5kczsKICAgICBMYXlvdXRSZWN0IG1fb2xkT3V0bGluZUJveDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCUi5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmgKaW5kZXggNDlmOWI1ZTZjYzIwZTk0OWY2NjA2MWNi
ZGFlM2ExYjM2MGVjMzg1MC4uNzA5YjE1NmZkNmE3NzY0NjhkNWNlZjgzZjMyOWU5MGZkMzk2ZTk5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1
cm4gIlJlbmRlckJSIjsgfQogIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogLypyZXBhaW50Q29udGFpbmVyKi8sIGJv
b2wgLypjbGlwVG9WaXNpYmxlQ29udGVudCovKSB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KKyAg
ICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogLypyZXBhaW50Q29udGFpbmVyKi8sIGJvb2wgLypjbGlwVG9WaXNpYmxl
Q29udGVudCovKSBPVkVSUklERSB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KIAogICAgIHZpcnR1
YWwgZmxvYXQgd2lkdGgodW5zaWduZWQgLypmcm9tKi8sIHVuc2lnbmVkIC8qbGVuKi8sIGNvbnN0
IEZvbnQmLCBmbG9hdCAvKnhQb3MqLywgSGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0YSo+KiA9
IDAgLypmYWxsYmFja0ZvbnRzKi8gLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0IHsgcmV0dXJu
IDA7IH0KICAgICB2aXJ0dWFsIGZsb2F0IHdpZHRoKHVuc2lnbmVkIC8qZnJvbSovLCB1bnNpZ25l
ZCAvKmxlbiovLCBmbG9hdCAvKnhwb3MqLywgYm9vbCA9IGZhbHNlIC8qZmlyc3RMaW5lKi8sIEhh
c2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiogPSAwIC8qZmFsbGJhY2tGb250cyovLCBHbHlw
aE92ZXJmbG93KiA9IDApIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDk0Y2Q3NDljMTk2NWNlNDBhYWU1Yzc1YThhMTRjNWI0
MjAxNWRlMGMuLmQ5ZDk0MGQ5MzRlYmEwODcwNDYxYmEyMWRiZDhmOGU5ZTEwNWJjMmEgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzIwNiw3ICszMjA2LDcg
QEAgYm9vbCBSZW5kZXJCbG9jazo6aXNTZWxlY3Rpb25Sb290KCkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLUdhcFJlY3RzIFJlbmRlckJsb2NrOjpzZWxlY3Rpb25HYXBSZWN0c0ZvclJl
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCitHYXBSZWN0cyBS
ZW5kZXJCbG9jazo6c2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCiB7CiAgICAgQVNTRVJUKCFuZWVkc0xheW91dCgp
KTsKIApAQCAtNjU4OSw3ICs2NTg5LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogICAgICAg
ICBxdWFkcy5hcHBlbmQoUmVuZGVyQm94Ojpsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdCgw
LCAwLCB3aWR0aCgpLCBoZWlnaHQoKSksIGZhbHNlLCB3YXNGaXhlZCkpOwogfQogCi1MYXlvdXRS
ZWN0IFJlbmRlckJsb2NrOjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QK
K0xheW91dFJlY3QgUmVuZGVyQmxvY2s6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5l
V2lkdGgpIGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCByKFJlbmRlckJveDo6cmVjdFdpdGhPdXRs
aW5lRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCBvdXRsaW5lV2lkdGgpKTsKICAgICBpZiAo
aXNBbm9ueW1vdXNCbG9ja0NvbnRpbnVhdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaAppbmRleCA3MTQxNmExMDM2YTIxNTk5MjM3ZWFjOGEzYmZiYjdkOTJhMzNiN2Qw
Li43ZWQ5MjQwMTY2OWE5NzhkZWIyNjExMzI4OGZlMzhmMGM0Mzg5ODQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMjA1LDcgKzIwNSw3IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgY29udGFpbnNOb25aZXJvQmlkaUxldmVsKCkgY29uc3Q7CiAKLSAgICBHYXBSZWN0
cyBzZWxlY3Rpb25HYXBSZWN0c0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIpOworICAgIEdhcFJlY3RzIHNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludChS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKTsKICAgICBMYXlvdXRS
ZWN0IGxvZ2ljYWxMZWZ0U2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrKiByb290QmxvY2ssIGNvbnN0
IExheW91dFBvaW50JiByb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBjb25zdCBMYXlvdXRTaXpl
JiBvZmZzZXRGcm9tUm9vdEJsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyT2JqZWN0KiBzZWxPYmosIExheW91dFVuaXQgbG9naWNhbExlZnQsIExheW91
dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBjb25zdCBQYWludElu
Zm8qKTsKICAgICBMYXlvdXRSZWN0IGxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcChSZW5kZXJCbG9j
ayogcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQb2ludCYgcm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlv
biwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3RCbG9jaywKQEAgLTc3MiwxNCArNzcy
LDE0IEBAIHByaXZhdGU6CiAgICAgLy8gY2hpbGRyZW4uCiAgICAgdmlydHVhbCBSZW5kZXJCbG9j
ayogZmlyc3RMaW5lQmxvY2soKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0
V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRS
ZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIG91dGxpbmVTdHlsZUZvclJlcGFpbnQoKSBjb25z
dDsKICAgICAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogaG92ZXJBbmNlc3RvcigpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEcmFnU3RhdGUoYm9vbCBkcmFnT24pOwogICAgIHZp
cnR1YWwgdm9pZCBjaGlsZEJlY2FtZU5vbklubGluZShSZW5kZXJPYmplY3QqIGNoaWxkKTsKIAot
ICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCAvKmNsaXBUb1Zpc2libGVDb250ZW50
Ki8pCisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgLypjbGlwVG9WaXNp
YmxlQ29udGVudCovKSBPVkVSUklERQogICAgIHsKICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbkdh
cFJlY3RzRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDJmMmFiMjQyMTQ4ZjlmNDU5NDcwZWI4ODM2MDNm
MTg4NjNmNmVmY2EuLjcxMWE2NjBkOTNiNGIwZDMzOGI1ZmZlNTVkNDE2YjcwNWNmMjFkMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC00NTIsNyArNDUyLDcgQEAg
RmxvYXRRdWFkIFJlbmRlckJveDo6YWJzb2x1dGVDb250ZW50UXVhZCgpIGNvbnN0CiAgICAgcmV0
dXJuIGxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KHJlY3QpKTsKIH0KIAotTGF5b3V0UmVj
dCBSZW5kZXJCb3g6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRQb2ludCogY2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29u
dGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om91dGxpbmVCb3VuZHNGb3JSZXBh
aW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFBv
aW50KiBjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgTGF5b3V0
UmVjdCBib3ggPSBib3JkZXJCb3VuZGluZ0JveCgpOwogICAgIGFkanVzdFJlY3RGb3JPdXRsaW5l
QW5kU2hhZG93KGJveCk7CkBAIC0xMjUyLDcgKzEyNTIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJv
eDo6cGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSBjb25zdAogICAg
IHJldHVybiBjYi0+Y29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHRM
ZW5ndGgudmFsdWUoKSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVy
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29s
IHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250
YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJCb3g6Om1h
cExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYgdHJh
bnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29u
c3QKIHsKICAgICBpZiAocmVwYWludENvbnRhaW5lciA9PSB0aGlzKQogICAgICAgICByZXR1cm47
CkBAIC0xMzE0LDcgKzEzMTQsNyBAQCB2b2lkIFJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5l
cihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbAogICAgIG8tPm1h
cExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgZml4ZWQsIHVzZVRyYW5zZm9ybXMs
IHRyYW5zZm9ybVN0YXRlLCBEb05vdEFwcGx5Q29udGFpbmVyRmxpcCwgd2FzRml4ZWQpOwogfQog
Ci1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlckJveDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihj
b25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0
cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJCb3g6
OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
YW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAog
ewogICAgIEFTU0VSVChhbmNlc3RvclRvU3RvcEF0ICE9IHRoaXMpOwogCkBAIC0xNDY3LDcgKzE0
NjcsNyBAQCB2b2lkIFJlbmRlckJveDo6ZGVsZXRlTGluZUJveFdyYXBwZXIoKQogICAgIH0KIH0K
IAotTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBS
ZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgaWYgKHN0eWxlKCktPnZp
c2liaWxpdHkoKSAhPSBWSVNJQkxFICYmICFlbmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxlQ29u
dGVudCgpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwpAQCAtMTQ5NCw3ICsxNDk0LDcg
QEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW4KICAgICByZXR1cm4gcjsKIH0KIAotdm9pZCBSZW5k
ZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVu
ZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsK
ICAgICAvLyBUaGUgcmVjdCB3ZSBjb21wdXRlIGF0IGVhY2ggc3RlcCBpcyBzaGlmdGVkIGJ5IG91
ciB4L3kgb2Zmc2V0IGluIHRoZSBwYXJlbnQgY29udGFpbmVyJ3MgY29vcmRpbmF0ZSBzcGFjZS4K
ICAgICAvLyBPbmx5IHdoZW4gd2UgY3Jvc3MgYSB3cml0aW5nIG1vZGUgYm91bmRhcnkgd2lsbCB3
ZSBoYXZlIHRvIHBvc3NpYmx5IGZsaXBGb3JXcml0aW5nTW9kZSAodG8gY29udmVydCBpbnRvIGEg
bW9yZSBhcHByb3ByaWF0ZQpAQCAtMzc2NCw3ICszNzY0LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRl
ckJveDo6ZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVyKCkgY29uc3QKIHsKICAgICBjb25zdCBS
ZW5kZXJPYmplY3QqIGN1cnIgPSB0aGlzOwogICAgIHdoaWxlIChjdXJyKSB7Ci0gICAgICAgIFJl
bmRlckxheWVyKiBsYXllciA9IGN1cnItPmhhc0xheWVyKCkgJiYgY3Vyci0+aXNCb3goKSA/IHRv
UmVuZGVyQm94TW9kZWxPYmplY3QoY3VyciktPmxheWVyKCkgOiAwOworICAgICAgICBSZW5kZXJM
YXllciogbGF5ZXIgPSBjdXJyLT5oYXNMYXllcigpICYmIGN1cnItPmlzQm94KCkgPyB0b1JlbmRl
ckJveChjdXJyKS0+bGF5ZXIoKSA6IDA7CiAgICAgICAgIGlmIChsYXllciAmJiBsYXllci0+aXNT
ZWxmUGFpbnRpbmdMYXllcigpKQogICAgICAgICAgICAgcmV0dXJuIGxheWVyOwogICAgICAgICBj
dXJyID0gY3Vyci0+cGFyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5k
ZXggMDY0ZWQ5MTkxYTAyYjE2YWNlZjU4MmI0NGYxMzEzZGUwYjc4NmZmNi4uMDY0OTc3MDBmZTM4
ZDRhZjQwZjA3NjUwNDY4NTQyMzEzNDFiNTU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaApAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRSZWN0IGNvbXB1
dGVkQ1NTQ29udGVudEJveFJlY3QoKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KGJvcmRlckxl
ZnQoKSArIGNvbXB1dGVkQ1NTUGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBjb21wdXRlZENT
U1BhZGRpbmdUb3AoKSwgY2xpZW50V2lkdGgoKSAtIGNvbXB1dGVkQ1NTUGFkZGluZ0xlZnQoKSAt
IGNvbXB1dGVkQ1NTUGFkZGluZ1JpZ2h0KCksIGNsaWVudEhlaWdodCgpIC0gY29tcHV0ZWRDU1NQ
YWRkaW5nVG9wKCkgLSBjb21wdXRlZENTU1BhZGRpbmdCb3R0b20oKSk7IH0KIAogICAgIC8vIEJv
dW5kcyBvZiB0aGUgb3V0bGluZSBib3ggaW4gYWJzb2x1dGUgY29vcmRzLiBSZXNwZWN0cyB0cmFu
c2Zvcm1zCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgTGF5b3V0UG9pbnQqIGNh
Y2hlZE9mZnNldFRvUmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRS
ZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIC8q
cmVwYWludENvbnRhaW5lciovLCBMYXlvdXRQb2ludCogY2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29u
dGFpbmVyKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVj
dHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIC8vIFVzZSB0
aGlzIHdpdGggY2F1dGlvbiEgTm8gdHlwZSBjaGVja2luZyBpcyBkb25lIQpAQCAtMzA4LDggKzMw
OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElubGluZUJveFdyYXBwZXIoSW5saW5lQm94KiBi
b3hXcmFwcGVyKSB7IG1faW5saW5lQm94V3JhcHBlciA9IGJveFdyYXBwZXI7IH0KICAgICB2b2lk
IGRlbGV0ZUxpbmVCb3hXcmFwcGVyKCk7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZp
eGVkID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBh
aW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJl
Y3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2
b2lkIHJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKGNvbnN0IExheW91dFJlY3QmKTsKIApAQCAt
NTE4LDggKzUxOCw4IEBAIHByb3RlY3RlZDoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q29tcHV0ZVNpemVBc1JlcGxhY2VkKCkgY29uc3QgeyByZXR1cm4gaXNSZXBsYWNlZCgpICYmICFp
c0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9j
YWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9v
bCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFp
bmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNv
bnN0OwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFp
bmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9y
bXMsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRh
aW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCosIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJv
b2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKIAogICAgIHZvaWQgcGFp
bnRSb290Qm94RmlsbExheWVycyhjb25zdCBQYWludEluZm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDhmOWI5YTYyMjQw
YmE3YTFhOGM3NTUyYTNhNWEyNTRkN2ZjMzc1OTguLjI2OGQ3NjZjNGZhYjFjMTIwMGI3OTJiMTBi
MjY0NGMzZGM1MjJkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcApAQCAtNTIsMTEgKzUyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1ib29sIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpzX3dhc0Zsb2F0aW5nID0gZmFsc2U7Ci1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpz
X2hhZExheWVyID0gZmFsc2U7Ci1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzX2hhZFRyYW5z
Zm9ybSA9IGZhbHNlOwotYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c19sYXllcldhc1NlbGZQ
YWludGluZyA9IGZhbHNlOwotCiBzdGF0aWMgY29uc3QgZG91YmxlIGNJbnRlcnBvbGF0aW9uQ3V0
b2ZmID0gODAwLiAqIDgwMC47CiBzdGF0aWMgY29uc3QgZG91YmxlIGNMb3dRdWFsaXR5VGltZVRo
cmVzaG9sZCA9IDAuNTAwOyAvLyA1MDAgbXMKIApAQCAtMzE2LDE2ICszMTEsMTIgQEAgYm9vbCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBJbWEKIH0KIAogUmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1v
ZGVsT2JqZWN0KE5vZGUqIG5vZGUpCi0gICAgOiBSZW5kZXJPYmplY3Qobm9kZSkKLSAgICAsIG1f
bGF5ZXIoMCkKKyAgICA6IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qobm9kZSkKIHsKIH0KIAog
UmVuZGVyQm94TW9kZWxPYmplY3Q6On5SZW5kZXJCb3hNb2RlbE9iamVjdCgpCiB7Ci0gICAgLy8g
T3VyIGxheWVyIHNob3VsZCBoYXZlIGJlZW4gZGVzdHJveWVkIGFuZCBjbGVhcmVkIGJ5IG5vdwot
ICAgIEFTU0VSVCghaGFzTGF5ZXIoKSk7Ci0gICAgQVNTRVJUKCFtX2xheWVyKTsKICAgICBpZiAo
Z0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIpIHsKICAgICAgICAgZ0ltYWdlUXVhbGl0eUNvbnRyb2xs
ZXItPm9iamVjdERlc3Ryb3llZCh0aGlzKTsKICAgICAgICAgaWYgKGdJbWFnZVF1YWxpdHlDb250
cm9sbGVyLT5pc0VtcHR5KCkpIHsKQEAgLTMzNSwxNCArMzI2LDYgQEAgUmVuZGVyQm94TW9kZWxP
YmplY3Q6On5SZW5kZXJCb3hNb2RlbE9iamVjdCgpCiAgICAgfQogfQogCi12b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpkZXN0cm95TGF5ZXIoKQotewotICAgIEFTU0VSVCghaGFzTGF5ZXIoKSk7
IC8vIENhbGxlcnMgc2hvdWxkIGhhdmUgYWxyZWFkeSBjYWxsZWQgc2V0SGFzTGF5ZXIoZmFsc2Up
Ci0gICAgQVNTRVJUKG1fbGF5ZXIpOwotICAgIG1fbGF5ZXItPmRlc3Ryb3kocmVuZGVyQXJlbmEo
KSk7Ci0gICAgbV9sYXllciA9IDA7Ci19Ci0KIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6Ondp
bGxCZURlc3Ryb3llZCgpCiB7CiAgICAgLy8gQSBjb250aW51YXRpb24gb2YgdGhpcyBSZW5kZXJP
YmplY3Qgc2hvdWxkIGJlIGRlc3Ryb3llZCBhdCBzdWJjbGFzc2VzLgpAQCAtMzUzLDk5ICszMzYs
MTMgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkKICAgICBp
ZiAoZmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KCkpCiAgICAgICAgIHNldEZpcnN0TGV0dGVyUmVt
YWluaW5nVGV4dCgwKTsKIAotICAgIC8vIFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkIGNh
bGxzIGJhY2sgdG8gZGVzdHJveUxheWVyKCkgZm9yIGxheWVyIGRlc3RydWN0aW9uCi0gICAgUmVu
ZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKTsKLX0KLQotYm9vbCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2xheWVy
ICYmIG1fbGF5ZXItPmlzU2VsZlBhaW50aW5nTGF5ZXIoKTsKLX0KLQotdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBS
ZW5kZXJTdHlsZSogbmV3U3R5bGUpCi17Ci0gICAgc193YXNGbG9hdGluZyA9IGlzRmxvYXRpbmco
KTsKLSAgICBzX2hhZExheWVyID0gaGFzTGF5ZXIoKTsKLSAgICBzX2hhZFRyYW5zZm9ybSA9IGhh
c1RyYW5zZm9ybSgpOwotICAgIGlmIChzX2hhZExheWVyKQotICAgICAgICBzX2xheWVyV2FzU2Vs
ZlBhaW50aW5nID0gbGF5ZXIoKS0+aXNTZWxmUGFpbnRpbmdMYXllcigpOwotCi0gICAgLy8gSWYg
b3VyIHotaW5kZXggY2hhbmdlcyB2YWx1ZSBvciBvdXIgdmlzaWJpbGl0eSBjaGFuZ2VzLAotICAg
IC8vIHdlIG5lZWQgdG8gZGlydHkgb3VyIHN0YWNraW5nIGNvbnRleHQncyB6LW9yZGVyIGxpc3Qu
Ci0gICAgUmVuZGVyU3R5bGUqIG9sZFN0eWxlID0gc3R5bGUoKTsKLSAgICBpZiAob2xkU3R5bGUg
JiYgbmV3U3R5bGUpIHsKLSAgICAgICAgaWYgKHBhcmVudCgpKSB7Ci0gICAgICAgICAgICAvLyBE
byBhIHJlcGFpbnQgd2l0aCB0aGUgb2xkIHN0eWxlIGZpcnN0LCBlLmcuLCBmb3IgZXhhbXBsZSBp
ZiB3ZSBnbyBmcm9tCi0gICAgICAgICAgICAvLyBoYXZpbmcgYW4gb3V0bGluZSB0byBub3QgaGF2
aW5nIGFuIG91dGxpbmUuCi0gICAgICAgICAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VS
ZXBhaW50TGF5ZXIpIHsKLSAgICAgICAgICAgICAgICBsYXllcigpLT5yZXBhaW50SW5jbHVkaW5n
RGVzY2VuZGFudHMoKTsKLSAgICAgICAgICAgICAgICBpZiAoIShvbGRTdHlsZS0+Y2xpcCgpID09
IG5ld1N0eWxlLT5jbGlwKCkpKQotICAgICAgICAgICAgICAgICAgICBsYXllcigpLT5jbGVhckNs
aXBSZWN0c0luY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGRp
ZmYgPT0gU3R5bGVEaWZmZXJlbmNlUmVwYWludCB8fCBuZXdTdHlsZS0+b3V0bGluZVNpemUoKSA8
IG9sZFN0eWxlLT5vdXRsaW5lU2l6ZSgpKQotICAgICAgICAgICAgICAgIHJlcGFpbnQoKTsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5
b3V0IHx8IGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlU2ltcGxpZmllZExheW91dCkgewotICAgICAg
ICAgICAgLy8gV2hlbiBhIGxheW91dCBoaW50IGhhcHBlbnMsIHdlIGdvIGFoZWFkIGFuZCBkbyBh
IHJlcGFpbnQgb2YgdGhlIGxheWVyLCBzaW5jZSB0aGUgbGF5ZXIgY291bGQKLSAgICAgICAgICAg
IC8vIGVuZCB1cCBiZWluZyBkZXN0cm95ZWQuCi0gICAgICAgICAgICBpZiAoaGFzTGF5ZXIoKSkg
ewotICAgICAgICAgICAgICAgIGlmIChvbGRTdHlsZS0+cG9zaXRpb24oKSAhPSBuZXdTdHlsZS0+
cG9zaXRpb24oKQotICAgICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+ekluZGV4KCkgIT0g
bmV3U3R5bGUtPnpJbmRleCgpCi0gICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT5oYXNB
dXRvWkluZGV4KCkgIT0gbmV3U3R5bGUtPmhhc0F1dG9aSW5kZXgoKQotICAgICAgICAgICAgICAg
ICAgICB8fCAhKG9sZFN0eWxlLT5jbGlwKCkgPT0gbmV3U3R5bGUtPmNsaXAoKSkKLSAgICAgICAg
ICAgICAgICAgICAgfHwgb2xkU3R5bGUtPmhhc0NsaXAoKSAhPSBuZXdTdHlsZS0+aGFzQ2xpcCgp
Ci0gICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT5vcGFjaXR5KCkgIT0gbmV3U3R5bGUt
Pm9wYWNpdHkoKQotICAgICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+dHJhbnNmb3JtKCkg
IT0gbmV3U3R5bGUtPnRyYW5zZm9ybSgpCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgICAg
ICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+ZmlsdGVyKCkgIT0gbmV3U3R5bGUtPmZpbHRlcigp
Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIGxheWVyKCkt
PnJlcGFpbnRJbmNsdWRpbmdEZXNjZW5kYW50cygpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChu
ZXdTdHlsZS0+aGFzVHJhbnNmb3JtKCkgfHwgbmV3U3R5bGUtPm9wYWNpdHkoKSA8IDEgfHwgbmV3
U3R5bGUtPmhhc0ZpbHRlcigpKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2
ZSBhIGxheWVyIHlldCwgYnV0IHdlIGFyZSBnb2luZyB0byBnZXQgb25lIGJlY2F1c2Ugb2YgdHJh
bnNmb3JtIG9yIG9wYWNpdHksCi0gICAgICAgICAgICAgICAgLy8gIHRoZW4gd2UgbmVlZCB0byBy
ZXBhaW50IHRoZSBvbGQgcG9zaXRpb24gb2YgdGhlIG9iamVjdC4KLSAgICAgICAgICAgICAgICBy
ZXBhaW50KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBSZW5kZXJP
YmplY3Q6OnN0eWxlV2lsbENoYW5nZShkaWZmLCBuZXdTdHlsZSk7CisgICAgUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCk7CiB9CiAKIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUpCiB7Ci0gICAgUmVuZGVyT2JqZWN0OjpzdHlsZURpZENoYW5nZShk
aWZmLCBvbGRTdHlsZSk7CiAgICAgdXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7Ci0gICAg
Ci0gICAgaWYgKHJlcXVpcmVzTGF5ZXIoKSkgewotICAgICAgICBpZiAoIWxheWVyKCkgJiYgbGF5
ZXJDcmVhdGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkpIHsKLSAgICAgICAgICAgIGlmIChzX3dhc0Zs
b2F0aW5nICYmIGlzRmxvYXRpbmcoKSkKLSAgICAgICAgICAgICAgICBzZXRDaGlsZE5lZWRzTGF5
b3V0KHRydWUpOwotICAgICAgICAgICAgbV9sYXllciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVu
ZGVyTGF5ZXIodGhpcyk7Ci0gICAgICAgICAgICBzZXRIYXNMYXllcih0cnVlKTsKLSAgICAgICAg
ICAgIG1fbGF5ZXItPmluc2VydE9ubHlUaGlzTGF5ZXIoKTsKLSAgICAgICAgICAgIGlmIChwYXJl
bnQoKSAmJiAhbmVlZHNMYXlvdXQoKSAmJiBjb250YWluaW5nQmxvY2soKSkgewotICAgICAgICAg
ICAgICAgIG1fbGF5ZXItPnNldFJlcGFpbnRTdGF0dXMoTmVlZHNGdWxsUmVwYWludCk7Ci0gICAg
ICAgICAgICAgICAgLy8gVGhlcmUgaXMgb25seSBvbmUgbGF5ZXIgdG8gdXBkYXRlLCBpdCBpcyBu
b3Qgd29ydGggdXNpbmcgfGNhY2hlZE9mZnNldHwgc2luY2UKLSAgICAgICAgICAgICAgICAvLyB3
ZSBhcmUgbm90IHN1cmUgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZC4KLSAgICAgICAgICAgICAgICBt
X2xheWVyLT51cGRhdGVMYXllclBvc2l0aW9ucygwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0gZWxzZSBpZiAobGF5ZXIoKSAmJiBsYXllcigpLT5wYXJlbnQoKSkgewotICAgICAg
ICBzZXRIYXNUcmFuc2Zvcm0oZmFsc2UpOyAvLyBFaXRoZXIgYSB0cmFuc2Zvcm0gd2Fzbid0IHNw
ZWNpZmllZCBvciB0aGUgb2JqZWN0IGRvZXNuJ3Qgc3VwcG9ydCB0cmFuc2Zvcm1zLCBzbyBqdXN0
IG51bGwgb3V0IHRoZSBiaXQuCi0gICAgICAgIHNldEhhc1JlZmxlY3Rpb24oZmFsc2UpOwotICAg
ICAgICBtX2xheWVyLT5yZW1vdmVPbmx5VGhpc0xheWVyKCk7IC8vIGNhbGxzIGRlc3Ryb3lMYXll
cigpIHdoaWNoIGNsZWFycyBtX2xheWVyCi0gICAgICAgIGlmIChzX3dhc0Zsb2F0aW5nICYmIGlz
RmxvYXRpbmcoKSkKLSAgICAgICAgICAgIHNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAg
ICAgIGlmIChzX2hhZFRyYW5zZm9ybSkKLSAgICAgICAgICAgIHNldE5lZWRzTGF5b3V0QW5kUHJl
ZldpZHRoc1JlY2FsYygpOwotICAgIH0KLQotICAgIGlmIChsYXllcigpKSB7Ci0gICAgICAgIGxh
eWVyKCktPnN0eWxlQ2hhbmdlZChkaWZmLCBvbGRTdHlsZSk7Ci0gICAgICAgIGlmIChzX2hhZExh
eWVyICYmIGxheWVyKCktPmlzU2VsZlBhaW50aW5nTGF5ZXIoKSAhPSBzX2xheWVyV2FzU2VsZlBh
aW50aW5nKQotICAgICAgICAgICAgc2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKLSAgICB9Cisg
ICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5
bGUpOwogfQogCiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojp1cGRhdGVCb3hNb2RlbEluZm9G
cm9tU3R5bGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuaAppbmRleCAwNjdmNjA0NmQwOTA4YTk0Yzk3ZThhNDIyZTYwMmNiY2NhZmMxZDkzLi4x
NzY1M2EwMDY5ZTdiNzExNjM2MWQ1ZmMxMmE1MDk1ODNmMDZjODVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMjQsNyArMjQsNyBA
QAogI2lmbmRlZiBSZW5kZXJCb3hNb2RlbE9iamVjdF9oCiAjZGVmaW5lIFJlbmRlckJveE1vZGVs
T2JqZWN0X2gKIAotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QuaCIKICNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgS2V5ZnJhbWVMaXN0OwogLy8gVGhp
cyBjbGFzcyBpcyB0aGUgYmFzZSBmb3IgYWxsIG9iamVjdHMgdGhhdCBhZGhlcmUgdG8gdGhlIENT
UyBib3ggbW9kZWwgYXMgZGVzY3JpYmVkCiAvLyBhdCBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1My
MS9ib3guaHRtbAogCi1jbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdCA6IHB1YmxpYyBSZW5kZXJP
YmplY3QgeworY2xhc3MgUmVuZGVyQm94TW9kZWxPYmplY3QgOiBwdWJsaWMgUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QoTm9kZSop
OwogICAgIHZpcnR1YWwgflJlbmRlckJveE1vZGVsT2JqZWN0KCk7CkBAIC03NCwxMyArNzQsMTAg
QEAgcHVibGljOgogICAgIGludCBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpIGNvbnN0OwogICAg
IGludCBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3
U3R5bGUpOwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2Us
IGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJv
eE1vZGVsSW5mb0Zyb21TdHlsZSgpOwogCi0gICAgYm9vbCBoYXNTZWxmUGFpbnRpbmdMYXllcigp
IGNvbnN0OwotICAgIFJlbmRlckxheWVyKiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXI7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGlzUm9v
dCgpIHx8IGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGlzUmVsUG9zaXRpb25lZCgpIHx8IGlz
VHJhbnNwYXJlbnQoKSB8fCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNIaWRkZW5CYWNrZmFjZSgpIHx8
IGhhc01hc2soKSB8fCBoYXNSZWZsZWN0aW9uKCkgfHwgaGFzRmlsdGVyKCkgfHwgc3R5bGUoKS0+
c3BlY2lmaWVzQ29sdW1ucygpOyB9CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBpc1Jvb3QoKSB8fCBpc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSB8fCBpc1JlbFBvc2l0aW9uZWQoKSB8fCBpc1RyYW5zcGFyZW50KCkgfHwgaGFzVHJhbnNmb3Jt
KCkgfHwgaGFzSGlkZGVuQmFja2ZhY2UoKSB8fCBoYXNNYXNrKCkgfHwgaGFzUmVmbGVjdGlvbigp
IHx8IGhhc0ZpbHRlcigpIHx8IHN0eWxlKCktPnNwZWNpZmllc0NvbHVtbnMoKTsgfQogCiAgICAg
Ly8gVGhpcyB3aWxsIHdvcmsgb24gaW5saW5lcyB0byByZXR1cm4gdGhlIGJvdW5kaW5nIGJveCBv
ZiBhbGwgb2YgdGhlIGxpbmVzJyBib3JkZXIgYm94ZXMuCiAgICAgdmlydHVhbCBJbnRSZWN0IGJv
cmRlckJvdW5kaW5nQm94KCkgY29uc3QgPSAwOwpAQCAtMTU2LDkgKzE1Myw2IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBi
b29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3QgT1ZFUlJJREU7CiAKLSAg
ICAvLyBDYWxsZWQgYnkgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKSBhbmQgaXMgdGhl
IG9ubHkgd2F5IGxheWVycyBzaG91bGQgZXZlciBiZSBkZXN0cm95ZWQKLSAgICB2b2lkIGRlc3Ry
b3lMYXllcigpOwotCiAgICAgdm9pZCBoaWdoUXVhbGl0eVJlcGFpbnRUaW1lckZpcmVkKFRpbWVy
PFJlbmRlckJveE1vZGVsT2JqZWN0PiopOwogCiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGlv
blN0YXRlKFNlbGVjdGlvblN0YXRlIHMpOwpAQCAtMjk2LDE2ICsyOTAsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlv
dXRSZWN0JiwgY29uc3QgUGF0aCYsIGNvbnN0IGNsYXNzIEJvcmRlckVkZ2VbXSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCB0aGlja25lc3MsIGZsb2F0IGRyYXdUaGlja25lc3Ms
IEJveFNpZGUsIGNvbnN0IFJlbmRlclN0eWxlKiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29sb3IsIEVCb3JkZXJTdHlsZSwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwotCi0g
ICAgZnJpZW5kIGNsYXNzIFJlbmRlclZpZXc7Ci0KLSAgICBSZW5kZXJMYXllciogbV9sYXllcjsK
LSAgICAKLSAgICAvLyBVc2VkIHRvIHN0b3JlIHN0YXRlIGJldHdlZW4gc3R5bGVXaWxsQ2hhbmdl
IGFuZCBzdHlsZURpZENoYW5nZQotICAgIHN0YXRpYyBib29sIHNfd2FzRmxvYXRpbmc7Ci0gICAg
c3RhdGljIGJvb2wgc19oYWRMYXllcjsKLSAgICBzdGF0aWMgYm9vbCBzX2hhZFRyYW5zZm9ybTsK
LSAgICBzdGF0aWMgYm9vbCBzX2xheWVyV2FzU2VsZlBhaW50aW5nOwogfTsKIAogaW5saW5lIFJl
bmRlckJveE1vZGVsT2JqZWN0KiB0b1JlbmRlckJveE1vZGVsT2JqZWN0KFJlbmRlck9iamVjdCog
b2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21l
dHJ5TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5j
cHAKaW5kZXggMGE2YzllMDRmYTcyMWM1Mjk0OWQ5MWFjMTY0NzliN2FmZTI0NThjYi4uNzBkZWUw
MjJhZGU0MjY3MTRhYmFhNmRiZGZhNzJmOTg5ODUwMjNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9p
ZCBSZW5kZXJHZW9tZXRyeU1hcDo6bWFwVG9BYnNvbHV0ZShUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNm
b3JtU3RhdGUpIGNvbnN0CiAgICAgdHJhbnNmb3JtU3RhdGUuZmxhdHRlbigpOyAgICAKIH0KIAot
dm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JS
ZW5kZXJlcikKK3ZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3Io
Y29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogYW5jZXN0b3JSZW5kZXJlcikKIHsKICAgICAvLyBXZSBuZWVkIHRvIHB1c2ggbWFwcGlu
Z3MgaW4gcmV2ZXJzZSBvcmRlciBoZXJlLCBzbyBkbyBpbnNlcnRpb25zIHJhdGhlciB0aGFuIGFw
cGVuZHMuCiAgICAgVGVtcG9yYXJ5Q2hhbmdlPHNpemVfdD4gcG9zaXRpb25DaGFuZ2UobV9pbnNl
cnRpb25Qb3NpdGlvbiwgbV9tYXBwaW5nLnNpemUoKSk7CkBAIC0xNzMsNyArMTczLDcgQEAgdm9p
ZCBSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJM
YXllciogbGF5ZXIsIGNvbnN0IFIKICAgICAgICAgcHVzaChyZW5kZXJlciwgdG9MYXlvdXRTaXpl
KGxheWVyT2Zmc2V0KSwgLyphY2N1bXVsYXRpbmdUcmFuc2Zvcm0qLyB0cnVlLCAvKmlzTm9uVW5p
Zm9ybSovIGZhbHNlLCAvKmlzRml4ZWRQb3NpdGlvbiovIGZhbHNlLCAvKmhhc1RyYW5zZm9ybSov
IGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogYW5jZXN0b3JSZW5kZXJlciA9IGFuY2VzdG9yTGF5ZXIgPyBhbmNlc3RvckxheWVy
LT5yZW5kZXJlcigpIDogMDsKKyAgICBjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBh
bmNlc3RvclJlbmRlcmVyID0gYW5jZXN0b3JMYXllciA/IGFuY2VzdG9yTGF5ZXItPnJlbmRlcmVy
KCkgOiAwOwogICAgIHB1c2hNYXBwaW5nc1RvQW5jZXN0b3IocmVuZGVyZXIsIGFuY2VzdG9yUmVu
ZGVyZXIpOwogfQogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6
cHVzaFZpZXcoY29uc3QgUmVuZGVyVmlldyogdmlldywgY29uc3QgTGF5b3V0U2l6ZSYgc2Nyb2wK
ICAgICBzdGVwSW5zZXJ0ZWQoc3RlcCk7CiB9CiAKLXZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnBv
cE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JS
ZW5kZXJlcikKK3ZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rvcihj
b25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyKQogewogICAg
IEFTU0VSVChtX21hcHBpbmcuc2l6ZSgpKTsKIApAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgUmVu
ZGVyR2VvbWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogYW5jZXN0CiAKIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9B
bmNlc3Rvcihjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllcikKIHsKLSAgICBjb25zdCBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JSZW5kZXJlciA9IGFuY2VzdG9yTGF5ZXIgPyBh
bmNlc3RvckxheWVyLT5yZW5kZXJlcigpIDogMDsKKyAgICBjb25zdCBSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyID0gYW5jZXN0b3JMYXllciA/IGFuY2VzdG9yTGF5
ZXItPnJlbmRlcmVyKCkgOiAwOwogICAgIHBvcE1hcHBpbmdzVG9BbmNlc3RvcihhbmNlc3RvclJl
bmRlcmVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdlb21ldHJ5TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlN
YXAuaAppbmRleCA4ZTYzYzUwODQ4MTZkMzQ4MjhiZWZmODBhYTc5NDJmZjBjZTAwMTNhLi42M2Fm
ZGNlYWFhMGEzYzZkMzA2N2IxMzVkODQ5N2E1NzU4ZWY5MDY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaApAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6
CiAgICAgLy8gQ2FsbGVkIGJ5IGNvZGUgd2Fsa2luZyB0aGUgcmVuZGVyZXIgb3IgbGF5ZXIgdHJl
ZXMuCiAgICAgdm9pZCBwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVyKiwg
Y29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIpOwogICAgIHZvaWQgcG9wTWFwcGluZ3NU
b0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVyKik7Ci0gICAgdm9pZCBwdXNoTWFwcGluZ3NUb0Fu
Y2VzdG9yKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBh
bmNlc3RvclJlbmRlcmVyKTsKLSAgICB2b2lkIHBvcE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBS
ZW5kZXJCb3hNb2RlbE9iamVjdCopOworICAgIHZvaWQgcHVzaE1hcHBpbmdzVG9BbmNlc3Rvcihj
b25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNl
c3RvclJlbmRlcmVyKTsKKyAgICB2b2lkIHBvcE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Kik7CiAgICAgCiAgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRo
b2RzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSByZW5kZXJlcnMgaW5zaWRlIGEgY2FsbCB0byBw
dXNoTWFwcGluZ3NUb0FuY2VzdG9yKCkuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAKaW5kZXggYzRlMTQyMzkyZTI1ZWY1MGM2YTkyODZlNDQ4NTliNDlhYTdlZjQz
OC4uODU3ZGJkZmVhZmEwZjZlZWNmZGE1YzMyYTIxMTVhMTFiYzUyYTkzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTk1NCw3ICs5NTQsNyBAQCBMYXlv
dXRSZWN0IFJlbmRlcklubGluZTo6bGluZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29u
c3QKICAgICByZXR1cm4gcmVjdDsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIp
IGNvbnN0CiB7CiAgICAgLy8gT25seSBydW4taW5zIGFyZSBhbGxvd2VkIGluIGhlcmUgZHVyaW5n
IGxheW91dC4KICAgICBBU1NFUlQoIXZpZXcoKSB8fCAhdmlldygpLT5sYXlvdXRTdGF0ZUVuYWJs
ZWQoKSB8fCBpc1J1bkluKCkpOwpAQCAtMTAxMiw3ICsxMDEyLDcgQEAgTGF5b3V0UmVjdCBSZW5k
ZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXAKICAgICByZXR1cm4gcmVwYWludFJlY3Q7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVy
SW5saW5lOjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QKK0xheW91dFJl
Y3QgUmVuZGVySW5saW5lOjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBj
b25zdAogewogICAgIExheW91dFJlY3QgcihSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVjdFdpdGhP
dXRsaW5lRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCBvdXRsaW5lV2lkdGgpKTsKICAgICBm
b3IgKFJlbmRlck9iamVjdCogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnIt
Pm5leHRTaWJsaW5nKCkpIHsKQEAgLTEwMjIsNyArMTAyMiw3IEBAIExheW91dFJlY3QgUmVuZGVy
SW5saW5lOjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50CiAgICAgcmV0dXJuIHI7CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjpjb21wdXRlUmVj
dEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91
dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlcklubGluZTo6Y29tcHV0
ZVJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKFJlbmRl
clZpZXcqIHYgPSB2aWV3KCkpIHsKICAgICAgICAgLy8gTGF5b3V0U3RhdGUgaXMgb25seSB2YWxp
ZCBmb3Igcm9vdC1yZWxhdGl2ZSByZXBhaW50aW5nCkBAIC0xMTEyLDcgKzExMTIsNyBAQCBMYXlv
dXRTaXplIFJlbmRlcklubGluZTo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIGNv
bnRhaW5lciwgY29uc3QgTGF5bwogICAgIHJldHVybiBvZmZzZXQ7CiB9CiAKLXZvaWQgUmVuZGVy
SW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRl
JiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgYXBwbHlDb250YWluZXJG
bGlwLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVySW5saW5lOjptYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJv
b2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0
YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCBhcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09IHRoaXMpCiAgICAg
ICAgIHJldHVybjsKQEAgLTExNjAsNyArMTE2MCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjptYXBM
b2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBi
CiAgICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBmaXhlZCwgdXNl
VHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUsIGFwcGx5Q29udGFpbmVyRmxpcCwgd2FzRml4ZWQp
OwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlcklubGluZTo6cHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVu
ZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0KiBS
ZW5kZXJJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5
TWFwKSBjb25zdAogewogICAgIEFTU0VSVChhbmNlc3RvclRvU3RvcEF0ICE9IHRoaXMpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKaW5kZXggNzIyMzAwYWI4Mjk4NGRh
YTlkZmEyN2NmMjc4OGU4Mjc0N2I2ZjQzOS4uNTMyOTU2NmYwZTVlNDUwZTQ1Y2Y4YTFjZGM4Y2M4
MmU3MzZkMWZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAt
MTMxLDEyICsxMzEsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0
V2lkdGgoKSBjb25zdCB7IHJldHVybiBsaW5lc0JvdW5kaW5nQm94KCkud2lkdGgoKTsgfQogICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBsaW5lc0Jv
dW5kaW5nQm94KCkuaGVpZ2h0KCk7IH0KIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJl
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQg
b3V0bGluZVdpZHRoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0Jiwg
Ym9vbCBmaXhlZCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxv
d1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91dGxp
bmVGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkKSBjb25zdCBPVkVSUklERTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5z
Zm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAs
IGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmpl
Y3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFu
Y2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0
ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3
YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2Jq
ZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3QgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmlu
ZGV4IDMxYmUyZThhMzMwMjEzODY3OTBlMGM0MzZlYzg5MTM5ODA2NTJiMGQuLmRmMTkxZjEzMzUw
ZWM5YTZhZDc1MjgwOWYzOGZlMTZjYzkwZjU2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wgQ2xpcFJlY3Q6OmludGVy
c2VjdHMoY29uc3QgSGl0VGVzdFBvaW50JiBoaXRUZXN0UG9pbnQpCiAgICAgcmV0dXJuIGhpdFRl
c3RQb2ludC5pbnRlcnNlY3RzKG1fcmVjdCk7CiB9CiAKLVJlbmRlckxheWVyOjpSZW5kZXJMYXll
cihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIpCitSZW5kZXJMYXllcjo6UmVuZGVyTGF5
ZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBtX2luUmVzaXpl
TW9kZShmYWxzZSkKICAgICAsIG1fc2Nyb2xsRGltZW5zaW9uc0RpcnR5KHRydWUpCiAgICAgLCBt
X25vcm1hbEZsb3dMaXN0RGlydHkodHJ1ZSkKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhMYXlvdXRQb2ludCogb2Zmc2V0RnJvbVJvb3Qs
IFVwZGF0ZUxheWVyUAogICAgICAgICAvLyBMYXlvdXRTdGF0ZSBvdXRzaWRlIHRoZSBsYXlvdXQo
KSBwaGFzZSBhbmQgdXNlIGl0IGhlcmUuCiAgICAgICAgIEFTU0VSVCghdmlldy0+bGF5b3V0U3Rh
dGVFbmFibGVkKCkpOwogCi0gICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyID0gcmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOworICAgICAgICBSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29u
dGFpbmVyRm9yUmVwYWludCgpOwogICAgICAgICBMYXlvdXRSZWN0IG9sZFJlcGFpbnRSZWN0ID0g
bV9yZXBhaW50UmVjdDsKICAgICAgICAgTGF5b3V0UmVjdCBvbGRPdXRsaW5lQm94ID0gbV9vdXRs
aW5lQm94OwogICAgICAgICBjb21wdXRlUmVwYWludFJlY3RzKG9mZnNldEZyb21Sb290KTsKQEAg
LTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjb21wdXRlUmVwYWludFJlY3RzKExh
eW91dFBvaW50KiBvZmZzZXRGcm9tUm9vdCkKIHsKICAgICBBU1NFUlQoIW1fdmlzaWJsZUNvbnRl
bnRTdGF0dXNEaXJ0eSk7CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICBSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29udGFpbmVy
Rm9yUmVwYWludCgpOwogICAgIG1fcmVwYWludFJlY3QgPSByZW5kZXJlcigpLT5jbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsKICAgICBtX291dGxpbmVCb3gg
PSByZW5kZXJlcigpLT5vdXRsaW5lQm91bmRzRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCBv
ZmZzZXRGcm9tUm9vdCk7CiB9CkBAIC01OTEsMTAgKzU5MSwxMCBAQCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBSZW5kZXJMYXllcjo6cmVuZGVyYWJsZVRyYW5zZm9ybShQYWludEJlaGF2aW9yIHBhaW50
QmVoYXZpbwogICAgIHJldHVybiAqbV90cmFuc2Zvcm07CiB9CiAKLXN0YXRpYyBib29sIGNoZWNr
Q29udGFpbmluZ0Jsb2NrQ2hhaW5Gb3JQYWdpbmF0aW9uKFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZW5kZXJlciwgUmVuZGVyQm94KiBhbmNlc3RvckNvbHVtbnNSZW5kZXJlcikKK3N0YXRpYyBib29s
IGNoZWNrQ29udGFpbmluZ0Jsb2NrQ2hhaW5Gb3JQYWdpbmF0aW9uKFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJCb3gqIGFuY2VzdG9yQ29sdW1uc1JlbmRlcmVyKQog
ewogICAgIFJlbmRlclZpZXcqIHZpZXcgPSByZW5kZXJlci0+dmlldygpOwotICAgIFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBwcmV2QmxvY2sgPSByZW5kZXJlcjsKKyAgICBSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiBwcmV2QmxvY2sgPSByZW5kZXJlcjsKICAgICBSZW5kZXJCbG9jayogY29udGFp
bmluZ0Jsb2NrOwogICAgIGZvciAoY29udGFpbmluZ0Jsb2NrID0gcmVuZGVyZXItPmNvbnRhaW5p
bmdCbG9jaygpOwogICAgICAgICAgY29udGFpbmluZ0Jsb2NrICYmIGNvbnRhaW5pbmdCbG9jayAh
PSB2aWV3ICYmIGNvbnRhaW5pbmdCbG9jayAhPSBhbmNlc3RvckNvbHVtbnNSZW5kZXJlcjsKQEAg
LTg1MSw3ICs4NTEsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKCkK
ICAgICB9CiAgICAgICAgIAogICAgIGlmIChyZW5kZXJlcigpLT5pc1JlbFBvc2l0aW9uZWQoKSkg
ewotICAgICAgICBtX3JlbGF0aXZlT2Zmc2V0ID0gcmVuZGVyZXIoKS0+cmVsYXRpdmVQb3NpdGlv
bk9mZnNldCgpOworICAgICAgICBtX3JlbGF0aXZlT2Zmc2V0ID0gdG9SZW5kZXJCb3hNb2RlbE9i
amVjdChyZW5kZXJlcigpKS0+cmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpOwogICAgICAgICBsb2Nh
bFBvaW50Lm1vdmUobV9yZWxhdGl2ZU9mZnNldCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9y
ZWxhdGl2ZU9mZnNldCA9IExheW91dFNpemUoKTsKQEAgLTkxNCw3ICs5MTQsNyBAQCBSZW5kZXJM
YXllciogUmVuZGVyTGF5ZXI6OnN0YWNraW5nQ29udGV4dCgpIGNvbnN0CiAKIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc1Bvc2l0aW9uZWRDb250YWluZXIoUmVuZGVyTGF5ZXIqIGxheWVyKQogewotICAg
IFJlbmRlckJveE1vZGVsT2JqZWN0KiBsYXllclJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7
CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogbGF5ZXJSZW5kZXJlciA9IGxheWVyLT5y
ZW5kZXJlcigpOwogICAgIHJldHVybiBsYXllci0+aXNSb290TGF5ZXIoKSB8fCBsYXllclJlbmRl
cmVyLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBsYXllclJlbmRlcmVyLT5pc1JlbFBvc2l0
aW9uZWQoKSB8fCBsYXllci0+aGFzVHJhbnNmb3JtKCk7CiB9CiAKQEAgLTEwOTIsNyArMTA5Miw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNldEZpbHRlckJhY2tlbmROZWVkc1JlcGFpbnRpbmdJblJl
Y3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKIGJvb2wgUmVuZGVyTGF5ZXI6Omhhc0FuY2VzdG9y
V2l0aEZpbHRlck91dHNldHMoKSBjb25zdAogewogICAgIGZvciAoY29uc3QgUmVuZGVyTGF5ZXIq
IGN1cnIgPSB0aGlzOyBjdXJyOyBjdXJyID0gY3Vyci0+cGFyZW50KCkpIHsKLSAgICAgICAgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyID0gY3Vyci0+cmVuZGVyZXIoKTsKKyAgICAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGN1cnItPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmIChy
ZW5kZXJlci0+c3R5bGUoKS0+aGFzRmlsdGVyT3V0c2V0cygpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMTY3Miw3ICsxNjcyLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Ny
b2xsVG8oaW50IHgsIGludCB5KQogCiAgICAgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNj
cm9sbCgpOwogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBy
ZW5kZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50KCk7CisgICAgUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogcmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFp
bnQoKTsKICAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlcigpLT5mcmFtZSgpOwogICAgIGlmIChm
cmFtZSkgewogICAgICAgICAvLyBUaGUgY2FyZXQgcmVjdCBuZWVkcyB0byBiZSBpbnZhbGlkYXRl
ZCBhZnRlciBzY3JvbGxpbmcKQEAgLTQ3MDgsNyArNDcwOCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnNldEJhY2tpbmdOZWVkc1JlcGFpbnRJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcikKIH0KIAog
Ly8gU2luY2Ugd2UncmUgb25seSBwYWludGluZyBub24tY29tcG9zaXRlZCBsYXllcnMsIHdlIGtu
b3cgdGhhdCB0aGV5IGFsbCBzaGFyZSB0aGUgc2FtZSByZXBhaW50Q29udGFpbmVyLgotdm9pZCBS
ZW5kZXJMYXllcjo6cmVwYWludEluY2x1ZGluZ05vbkNvbXBvc2l0aW5nRGVzY2VuZGFudHMoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCit2b2lkIFJlbmRlckxheWVyOjpy
ZXBhaW50SW5jbHVkaW5nTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKQogewogICAgIHJlbmRlcmVyKCktPnJlcGFpbnRV
c2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCByZW5kZXJlcigpLT5jbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmgKaW5kZXggYjlkYzVkN2M3Y2M2ZDMyMGFmZTU3YzQ3MTcwZjM5NTU4
MTJlZTBiYi4uY2U1N2JkZTA3NmRkNzRjMjVmZDhhMDE0NzQ3OTcxMDgwZjgxYmUzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTI0NSwxMCArMjQ1LDEwIEBAIGNs
YXNzIFJlbmRlckxheWVyIDogcHVibGljIFNjcm9sbGFibGVBcmVhIHsKIHB1YmxpYzoKICAgICBm
cmllbmQgY2xhc3MgUmVuZGVyUmVwbGljYTsKIAotICAgIFJlbmRlckxheWVyKFJlbmRlckJveE1v
ZGVsT2JqZWN0Kik7CisgICAgUmVuZGVyTGF5ZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCop
OwogICAgIH5SZW5kZXJMYXllcigpOwogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRl
cmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlcjsgfQorICAgIFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlcjsgfQogICAgIFJl
bmRlckJveCogcmVuZGVyQm94KCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlciAmJiBtX3JlbmRl
cmVyLT5pc0JveCgpID8gdG9SZW5kZXJCb3gobV9yZW5kZXJlcikgOiAwOyB9CiAgICAgUmVuZGVy
TGF5ZXIqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CiAgICAgUmVuZGVyTGF5
ZXIqIHByZXZpb3VzU2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXM7IH0KQEAgLTI2
OSw3ICsyNjksNyBAQCBwdWJsaWM6CiAgICAgLy8gaWYgbGF5ZXIgY29tcG9zaXRpbmcgaXMgYmVp
bmcgdXNlZCwKICAgICB2b2lkIHNldEJhY2tpbmdOZWVkc1JlcGFpbnQoKTsKICAgICB2b2lkIHNl
dEJhY2tpbmdOZWVkc1JlcGFpbnRJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYpOyAvLyByIGlzIGlu
IHRoZSBjb29yZGluYXRlIHNwYWNlIG9mIHRoZSBsYXllcidzIHJlbmRlciBvYmplY3QKLSAgICB2
b2lkIHJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRzKFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKTsKKyAgICB2b2lkIHJlcGFpbnRJbmNsdWRpbmdO
b25Db21wb3NpdGluZ0Rlc2NlbmRhbnRzKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFp
bnRDb250YWluZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIHN0eWxlQ2hhbmdlZChTdHlsZURpZmZl
cmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CkBAIC04NTksNyArODU5LDcgQEAg
cHJpdmF0ZToKIAogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllckJhY2tpbmc7CiAgICAgZnJp
ZW5kIGNsYXNzIFJlbmRlckxheWVyQ29tcG9zaXRvcjsKLSAgICBmcmllbmQgY2xhc3MgUmVuZGVy
Qm94TW9kZWxPYmplY3Q7CisgICAgZnJpZW5kIGNsYXNzIFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3Q7CiAKICAgICAvLyBPbmx5IHNhZmUgdG8gY2FsbCBmcm9tIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpkZXN0cm95TGF5ZXIoUmVuZGVyQXJlbmEqKQogICAgIHZvaWQgZGVzdHJveShSZW5kZXJBcmVu
YSopOwpAQCAtOTI3LDcgKzkyNyw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faGFzRmlsdGVy
SW5mbyA6IDE7CiAjZW5kaWYKIAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBtX3JlbmRlcmVy
OworICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIG1fcmVuZGVyZXI7CiAKICAgICBSZW5k
ZXJMYXllciogbV9wYXJlbnQ7CiAgICAgUmVuZGVyTGF5ZXIqIG1fcHJldmlvdXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggMGY0MmQzZmI5
MWIxNzkzNTk3OWZkYjE4ZGJkMDZmY2E2OGZiYzg0Yy4uMjBjYzliOWQ2NzMyNjdiMmM2MmJhNTcy
NTVkZDQ0YTViNjIzOTZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuaApAQCAtMTcxLDcgKzE3MSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgUGFz
c093blB0cjxHcmFwaGljc0xheWVyPiBjcmVhdGVHcmFwaGljc0xheWVyKGNvbnN0IFN0cmluZyYp
OwogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4g
bV9vd25pbmdMYXllci0+cmVuZGVyZXIoKTsgfQorICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9vd25pbmdMYXllci0+cmVuZGVyZXIoKTsg
fQogICAgIFJlbmRlckxheWVyQ29tcG9zaXRvciogY29tcG9zaXRvcigpIGNvbnN0IHsgcmV0dXJu
IG1fb3duaW5nTGF5ZXItPmNvbXBvc2l0b3IoKTsgfQogCiAgICAgdm9pZCB1cGRhdGVJbnRlcm5h
bEhpZXJhcmNoeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAppbmRleCA0NzQ1MDE5MWFjN2ViYTg4ZWNmODdlYzk1ZWI2ZWQ0Y2Q4
NmZlOWQwLi5mNTUxYTg1ZGNhZTIyOGUyMjU1MWM5NTJlN2QzNWFkNzQ2MTMxZGIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApA
QCAtNTA4LDcgKzUwOCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVCYWNr
aW5nKFJlbmRlckxheWVyKiBsYXllciwgQ29tcG9zaXRpbmdDaGFuZ2VSCiAgICAgICAgICAgICAv
LyBpdHMgcmVwbGljYSBHcmFwaGljc0xheWVyLiBJbiBwcmFjdGljZSB0aGlzIHNob3VsZCBuZXZl
ciBoYXBwZW4gYmVjYXVzZSByZWZsZWN0ZWUgYW5kIHJlZmxlY3Rpb24gCiAgICAgICAgICAgICAv
LyBhcmUgYm90aCBlaXRoZXIgY29tcG9zaXRlZCwgb3Igbm90IGNvbXBvc2l0ZWQuCiAgICAgICAg
ICAgICBpZiAobGF5ZXItPmlzUmVmbGVjdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgUmVuZGVy
TGF5ZXIqIHNvdXJjZUxheWVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChsYXllci0+cmVuZGVy
ZXIoKS0+cGFyZW50KCkpLT5sYXllcigpOworICAgICAgICAgICAgICAgIFJlbmRlckxheWVyKiBz
b3VyY2VMYXllciA9IHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdChsYXllci0+cmVuZGVyZXIo
KS0+cGFyZW50KCkpLT5sYXllcigpOwogICAgICAgICAgICAgICAgIGlmIChSZW5kZXJMYXllckJh
Y2tpbmcqIGJhY2tpbmcgPSBzb3VyY2VMYXllci0+YmFja2luZygpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnJlcGxpY2FMYXllcigpID09
IGxheWVyLT5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+c2V0UmVwbGljYXRlZEJ5TGF5ZXIoMCk7CkBAIC01
NzEsNyArNTcxLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcGFpbnRPbkNvbXBv
c2l0aW5nQ2hhbmdlKFJlbmRlckxheWVyKiBsYXllcikKICAgICBpZiAobGF5ZXItPnJlbmRlcmVy
KCkgIT0gbV9yZW5kZXJWaWV3ICYmICFsYXllci0+cmVuZGVyZXIoKS0+cGFyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
ID0gbGF5ZXItPnJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICBSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gbGF5ZXItPnJlbmRlcmVyKCkt
PmNvbnRhaW5lckZvclJlcGFpbnQoKTsKICAgICBpZiAoIXJlcGFpbnRDb250YWluZXIpCiAgICAg
ICAgIHJlcGFpbnRDb250YWluZXIgPSBtX3JlbmRlclZpZXc7CiAKQEAgLTE0MzcsNyArMTQzNyw3
IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIo
Y29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjCiAgICAgLy8gVGhlIGNvbXBvc2l0aW5nIHN0YXRl
IG9mIGEgcmVmbGVjdGlvbiBzaG91bGQgbWF0Y2ggdGhhdCBvZiBpdHMgcmVmbGVjdGVkIGxheWVy
LgogICAgIGlmIChsYXllci0+aXNSZWZsZWN0aW9uKCkpIHsKICAgICAgICAgcmVuZGVyZXIgPSBy
ZW5kZXJlci0+cGFyZW50KCk7IC8vIFRoZSBSZW5kZXJSZXBsaWNhJ3MgcGFyZW50IGlzIHRoZSBv
YmplY3QgYmVpbmcgcmVmbGVjdGVkLgotICAgICAgICBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxP
YmplY3QocmVuZGVyZXIpLT5sYXllcigpOworICAgICAgICBsYXllciA9IHRvUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdChyZW5kZXJlciktPmxheWVyKCk7CiAgICAgfQogICAgIC8vIFRoZSByb290
IGxheWVyIGFsd2F5cyBoYXMgYSBjb21wb3NpdGluZyBsYXllciwgYnV0IGl0IG1heSBub3QgaGF2
ZSBiYWNraW5nLgogICAgIHJldHVybiByZXF1aXJlc0NvbXBvc2l0aW5nRm9yVHJhbnNmb3JtKHJl
bmRlcmVyKQpAQCAtMTUwMSw3ICsxNTAxLDcgQEAgY29uc3QgY2hhciogUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZWFzb25Gb3JDb21wb3NpdGluZyhjb25zdCBSZW5kZXJMYXllciogbGF5ZXIKICAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7CiAgICAgaWYgKGxh
eWVyLT5pc1JlZmxlY3Rpb24oKSkgewogICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJl
bnQoKTsKLSAgICAgICAgbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlcmVyKS0+
bGF5ZXIoKTsKKyAgICAgICAgbGF5ZXIgPSB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QocmVu
ZGVyZXIpLT5sYXllcigpOwogICAgIH0KIAogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9y
VHJhbnNmb3JtKHJlbmRlcmVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcAppbmRleCAwZDJmNDhkZDUxMDFlN2Y0YzdjMzRlZmEwNjIzYThiMGI4OTA0
ODc0Li45NWI1OTU0ODUzMWZlOWNjYWU4Y2M3NTM2ZjY3ZmQ2ZGY0ZWFhYTliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xNzAyLDcgKzE3
MDIsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlv
blN0YXRlIHN0YXRlKQogICAgICAgICAgICAgcm9vdC0+c2V0SGFzU2VsZWN0ZWRDaGlsZHJlbihz
dGF0ZSAhPSBTZWxlY3Rpb25Ob25lKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJMaXN0TWFya2Vy
OjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkKK0xheW91dFJlY3QgUmVuZGVyTGlz
dE1hcmtlcjo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkKIHsKICAgICBB
U1NFUlQoIW5lZWRzTGF5b3V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RNYXJrZXIuaAppbmRleCBkODhkOTIyYjBlNDI4M2NjYTQ1NjAzNWY0ZWViMTE3ZDgyYzhm
NTJkLi5iMmY1MjVhZmQ3ZDdiZmRiZGUzYTY1MWNiOWJjMzFmMjA0NjIyY2RlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKQEAgLTY1LDcgKzY1LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuICFpc0ltYWdlKCk7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25TdGF0ZSk7Ci0g
ICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0g
dHJ1ZSk7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlz
aWJsZUNvbnRlbnQgPSB0cnVlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxl
Y3Rpb25MZWFmKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCB1cGRhdGVNYXJn
aW5zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDA0
ZjI3ZTY1MmJmM2E3Y2EzMDVkYmNhZjE1MWY0YjdjNjEyMWFlYjguLjg1NGE4NGI3NTM4NDM2YWMx
ZGZlZjRmNzI4MWU0ZmRiMjRjNGM2ZDEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFkZENo
aWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiAg
ICAgLy8gVG8gYXZvaWQgdGhlIHByb2JsZW0gYWxsdG9nZXRoZXIsIGRldGVjdCBlYXJseSBpZiB3
ZSdyZSBpbnNpZGUgYSBoaWRkZW4gU1ZHIHN1YnRyZWUKICAgICAvLyBhbmQgc3RvcCBjcmVhdGlu
ZyBsYXllcnMgYXQgYWxsIGZvciB0aGVzZSBjYXNlcyAtIHRoZXkncmUgbm90IHVzZWQgYW55d2F5
cy4KICAgICBpZiAobmV3Q2hpbGQtPmhhc0xheWVyKCkgJiYgIWxheWVyQ3JlYXRpb25BbGxvd2Vk
Rm9yU3VidHJlZSgpKQotICAgICAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG5ld0NoaWxkKS0+
bGF5ZXIoKS0+cmVtb3ZlT25seVRoaXNMYXllcigpOworICAgICAgICB0b1JlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QobmV3Q2hpbGQpLT5sYXllcigpLT5yZW1vdmVPbmx5VGhpc0xheWVyKCk7CiB9
CiAKIHZvaWQgUmVuZGVyT2JqZWN0OjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3QqIG9sZENoaWxk
KQpAQCAtNDMyLDcgKzQzMiw3IEBAIHN0YXRpYyB2b2lkIGFkZExheWVycyhSZW5kZXJPYmplY3Qq
IG9iaiwgUmVuZGVyTGF5ZXIqIHBhcmVudExheWVyLCBSZW5kZXJPYmplY3QqCiAgICAgICAgICAg
ICBiZWZvcmVDaGlsZCA9IG5ld09iamVjdC0+cGFyZW50KCktPmZpbmROZXh0TGF5ZXIocGFyZW50
TGF5ZXIsIG5ld09iamVjdCk7CiAgICAgICAgICAgICBuZXdPYmplY3QgPSAwOwogICAgICAgICB9
Ci0gICAgICAgIHBhcmVudExheWVyLT5hZGRDaGlsZCh0b1JlbmRlckJveE1vZGVsT2JqZWN0KG9i
aiktPmxheWVyKCksIGJlZm9yZUNoaWxkKTsKKyAgICAgICAgcGFyZW50TGF5ZXItPmFkZENoaWxk
KHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdChvYmopLT5sYXllcigpLCBiZWZvcmVDaGlsZCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1Niw3ICs0NTYsNyBAQCB2b2lkIFJlbmRl
ck9iamVjdDo6cmVtb3ZlTGF5ZXJzKFJlbmRlckxheWVyKiBwYXJlbnRMYXllcikKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKGhhc0xheWVyKCkpIHsKLSAgICAgICAgcGFyZW50TGF5ZXItPnJl
bW92ZUNoaWxkKHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCkpOworICAgICAg
ICBwYXJlbnRMYXllci0+cmVtb3ZlQ2hpbGQodG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KHRo
aXMpLT5sYXllcigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDcwLDcgKzQ3MCw3
IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojptb3ZlTGF5ZXJzKFJlbmRlckxheWVyKiBvbGRQYXJlbnQs
IFJlbmRlckxheWVyKiBuZXdQYXJlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChoYXNM
YXllcigpKSB7Ci0gICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxP
YmplY3QodGhpcyktPmxheWVyKCk7CisgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCh0aGlzKS0+bGF5ZXIoKTsKICAgICAgICAgQVNTRVJUKG9s
ZFBhcmVudCA9PSBsYXllci0+cGFyZW50KCkpOwogICAgICAgICBpZiAob2xkUGFyZW50KQogICAg
ICAgICAgICAgb2xkUGFyZW50LT5yZW1vdmVDaGlsZChsYXllcik7CkBAIC00OTAsNyArNDkwLDcg
QEAgUmVuZGVyTGF5ZXIqIFJlbmRlck9iamVjdDo6ZmluZE5leHRMYXllcihSZW5kZXJMYXllciog
cGFyZW50TGF5ZXIsIFJlbmRlck9iamVjdCoKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBT
dGVwIDE6IElmIG91ciBsYXllciBpcyBhIGNoaWxkIG9mIHRoZSBkZXNpcmVkIHBhcmVudCwgdGhl
biByZXR1cm4gb3VyIGxheWVyLgotICAgIFJlbmRlckxheWVyKiBvdXJMYXllciA9IGhhc0xheWVy
KCkgPyB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpIDogMDsKKyAgICBSZW5k
ZXJMYXllciogb3VyTGF5ZXIgPSBoYXNMYXllcigpID8gdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KHRoaXMpLT5sYXllcigpIDogMDsKICAgICBpZiAob3VyTGF5ZXIgJiYgb3VyTGF5ZXItPnBh
cmVudCgpID09IHBhcmVudExheWVyKQogICAgICAgICByZXR1cm4gb3VyTGF5ZXI7CiAKQEAgLTUy
Miw3ICs1MjIsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyT2JqZWN0OjplbmNsb3NpbmdMYXllcigp
IGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBjdXJyID0gdGhpczsKICAgICB3aGls
ZSAoY3VycikgewotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBjdXJyLT5oYXNMYXllcigp
ID8gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChjdXJyKS0+bGF5ZXIoKSA6IDA7CisgICAgICAgIFJl
bmRlckxheWVyKiBsYXllciA9IGN1cnItPmhhc0xheWVyKCkgPyB0b1JlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QoY3VyciktPmxheWVyKCkgOiAwOwogICAgICAgICBpZiAobGF5ZXIpCiAgICAgICAg
ICAgICByZXR1cm4gbGF5ZXI7CiAgICAgICAgIGN1cnIgPSBjdXJyLT5wYXJlbnQoKTsKQEAgLTcw
OSwxMyArNzA5LDEzIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjppbnZhbGlkYXRlQ29udGFpbmVyUHJl
ZmVycmVkTG9naWNhbFdpZHRocygpCiB2b2lkIFJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1
bGxSZXBhaW50KCkKIHsKICAgICBBU1NFUlQoaGFzTGF5ZXIoKSk7Ci0gICAgdG9SZW5kZXJCb3hN
b2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxSZXBh
aW50KTsKKyAgICB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCktPnNl
dFJlcGFpbnRTdGF0dXMoTmVlZHNGdWxsUmVwYWludCk7CiB9CiAKIHZvaWQgUmVuZGVyT2JqZWN0
OjpzZXRMYXllck5lZWRzRnVsbFJlcGFpbnRGb3JQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQoKQog
ewogICAgIEFTU0VSVChoYXNMYXllcigpKTsKLSAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRo
aXMpLT5sYXllcigpLT5zZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnRGb3JQb3NpdGlv
bmVkTW92ZW1lbnRMYXlvdXQpOworICAgIHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCh0aGlz
KS0+bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25l
ZE1vdmVtZW50TGF5b3V0KTsKIH0KIAogUmVuZGVyQmxvY2sqIFJlbmRlck9iamVjdDo6Y29udGFp
bmluZ0Jsb2NrKCkgY29uc3QKQEAgLTEyMDIsMTMgKzEyMDIsMTMgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OnBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikKIHsKIH0KIAotUmVuZGVy
Qm94TW9kZWxPYmplY3QqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyRm9yUmVwYWludCgpIGNvbnN0
CitSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5lckZvclJl
cGFpbnQoKSBjb25zdAogewogICAgIFJlbmRlclZpZXcqIHYgPSB2aWV3KCk7CiAgICAgaWYgKCF2
KQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciA9IDA7CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWlu
dENvbnRhaW5lciA9IDA7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAg
aWYgKHYtPnVzZXNDb21wb3NpdGluZygpKSB7CkBAIC0xMjM4LDcgKzEyMzgsNyBAQCBSZW5kZXJC
b3hNb2RlbE9iamVjdCogUmVuZGVyT2JqZWN0Ojpjb250YWluZXJGb3JSZXBhaW50KCkgY29uc3QK
ICAgICByZXR1cm4gcmVwYWludENvbnRhaW5lcjsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OnJl
cGFpbnRVc2luZ0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgY29uc3QgTGF5b3V0UmVjdCYgciwgYm9vbCBpbW1lZGlhdGUpCit2b2lkIFJlbmRlck9iamVj
dDo6cmVwYWludFVzaW5nQ29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGNvbnN0IExheW91dFJlY3QmIHIsIGJvb2wgaW1tZWRpYXRlKQogewogICAg
IGlmICghcmVwYWludENvbnRhaW5lcikgewogICAgICAgICB2aWV3KCktPnJlcGFpbnRWaWV3UmVj
dGFuZ2xlKHIsIGltbWVkaWF0ZSk7CkBAIC0xMjkxLDcgKzEyOTEsNyBAQCB2b2lkIFJlbmRlck9i
amVjdDo6cmVwYWludChib29sIGltbWVkaWF0ZSkKICAgICBpZiAodmlldy0+cHJpbnRpbmcoKSkK
ICAgICAgICAgcmV0dXJuOyAvLyBEb24ndCByZXBhaW50IGlmIHdlJ3JlIHByaW50aW5nLgogCi0g
ICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBjb250YWluZXJGb3JS
ZXBhaW50KCk7CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
ciA9IGNvbnRhaW5lckZvclJlcGFpbnQoKTsKICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVw
YWludENvbnRhaW5lciA/IHJlcGFpbnRDb250YWluZXIgOiB2aWV3LCBjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKSwgaW1tZWRpYXRlKTsKIH0KIApAQCAtMTMx
MSw3ICsxMzExLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRSZWN0YW5nbGUoY29uc3Qg
TGF5b3V0UmVjdCYgciwgYm9vbCBpbW1lZGlhdGUpCiAgICAgLy8gcmVwYWludCBjb250YWluZXJz
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDgKICAgICBkaXJ0
eVJlY3QubW92ZSh2aWV3LT5sYXlvdXREZWx0YSgpKTsKIAotICAgIFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyID0gY29udGFpbmVyRm9yUmVwYWludCgpOworICAgIFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBjb250YWluZXJGb3JSZXBh
aW50KCk7CiAgICAgY29tcHV0ZVJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIGRpcnR5
UmVjdCk7CiAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIgPyByZXBh
aW50Q29udGFpbmVyIDogdmlldywgZGlydHlSZWN0LCBpbW1lZGlhdGUpOwogfQpAQCAtMTMyMSw3
ICsxMzIxLDcgQEAgSW50UmVjdCBSZW5kZXJPYmplY3Q6OnBpeGVsU25hcHBlZEFic29sdXRlQ2xp
cHBlZE92ZXJmbG93UmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3Qo
YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkpOwogfQogCi1ib29sIFJlbmRlck9iamVjdDo6
cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIGNvbnN0IExheW91dFJlY3QmIG9sZEJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYg
b2xkT3V0bGluZUJveCwgY29uc3QgTGF5b3V0UmVjdCogbmV3Qm91bmRzUHRyLCBjb25zdCBMYXlv
dXRSZWN0KiBuZXdPdXRsaW5lQm94UmVjdFB0cikKK2Jvb2wgUmVuZGVyT2JqZWN0OjpyZXBhaW50
QWZ0ZXJMYXlvdXRJZk5lZWRlZChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIG9s
ZE91dGxpbmVCb3gsIGNvbnN0IExheW91dFJlY3QqIG5ld0JvdW5kc1B0ciwgY29uc3QgTGF5b3V0
UmVjdCogbmV3T3V0bGluZUJveFJlY3RQdHIpCiB7CiAgICAgUmVuZGVyVmlldyogdiA9IHZpZXco
KTsKICAgICBpZiAodi0+cHJpbnRpbmcoKSkKQEAgLTE0NDUsMjAgKzE0NDUsMjAgQEAgYm9vbCBS
ZW5kZXJPYmplY3Q6OmNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpIGNvbnN0CiAgICAgcmV0
dXJuICFkb2N1bWVudCgpLT52aWV3KCktPm5lZWRzRnVsbFJlcGFpbnQoKSAmJiAhaGFzTGF5ZXIo
KTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0
bGluZVdpZHRoKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnJlY3RXaXRoT3V0bGlu
ZUZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwg
TGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCByKGNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpKTsKICAgICByLmluZmxh
dGUob3V0bGluZVdpZHRoKTsKICAgICByZXR1cm4gcjsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJP
YmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KikgY29uc3QKIHsKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwogfQogCi12b2lkIFJlbmRl
ck9iamVjdDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBS
ZW5kZXJPYmplY3Q6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25z
dAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09IHRoaXMpCiAgICAgICAgIHJldHVybjsK
QEAgLTE0ODksNyArMTQ4OSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJl
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsCiAgICAgfQogfQog
Ci12b2lkIFJlbmRlck9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqLCBGbG9hdFJlY3QmLCBib29sKSBjb25zdAordm9pZCBSZW5kZXJPYmplY3Q6
OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqLCBG
bG9hdFJlY3QmLCBib29sKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpA
QCAtMTY1MCw3ICsxNjUwLDcgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlck9iamVjdDo6YWRqdXN0
U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCB1bnNpZ24KICAgICAgICAgLy8g
VGV4dCBub2RlcyBzaGFyZSBzdHlsZSB3aXRoIHRoZWlyIHBhcmVudHMgYnV0IHRyYW5zZm9ybXMg
ZG9uJ3QgYXBwbHkgdG8gdGhlbSwKICAgICAgICAgLy8gaGVuY2UgdGhlICFpc1RleHQoKSBjaGVj
ay4KICAgICAgICAgLy8gRklYTUU6IHdoZW4gdHJhbnNmb3JtcyBhcmUgdGFrZW4gaW50byBhY2Nv
dW50IGZvciBvdmVyZmxvdywgd2Ugd2lsbCBuZWVkIHRvIGRvIGEgbGF5b3V0LgotICAgICAgICBp
ZiAoIWlzVGV4dCgpICYmICghaGFzTGF5ZXIoKSB8fCAhdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0
aGlzKS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkpKSB7CisgICAgICAgIGlmICghaXNUZXh0KCkg
JiYgKCFoYXNMYXllcigpIHx8ICF0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxh
eWVyKCktPmlzQ29tcG9zaXRlZCgpKSkgewogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBzZXQg
YXQgbGVhc3QgU2ltcGxpZmllZExheW91dCwgYnV0IGlmIFBvc2l0aW9uZWRNb3ZlbWVudE9ubHkg
aXMgYWxyZWFkeSBzZXQKICAgICAgICAgICAgIC8vIHRoZW4gd2UgYWN0dWFsbHkgbmVlZCBTaW1w
bGlmaWVkTGF5b3V0QW5kUG9zaXRpb25lZE1vdmVtZW50LgogICAgICAgICAgICAgaWYgKCFoYXNM
YXllcigpKQpAQCAtMTY2Niw3ICsxNjY2LDcgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlck9iamVj
dDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCB1bnNpZ24KICAg
ICAvLyBJZiBvcGFjaXR5IGNoYW5nZWQsIGFuZCB3ZSBhcmUgbm90IGNvbXBvc2l0ZWQsIG5lZWQg
dG8gcmVwYWludCAoYWxzbwogICAgIC8vIGlnbm9yaW5nIHRleHQgbm9kZXMpCiAgICAgaWYgKGNv
bnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzICYgQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5T3BhY2l0
eSkgewotICAgICAgICBpZiAoIWlzVGV4dCgpICYmICghaGFzTGF5ZXIoKSB8fCAhdG9SZW5kZXJC
b3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkpKQorICAgICAgICBp
ZiAoIWlzVGV4dCgpICYmICghaGFzTGF5ZXIoKSB8fCAhdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkpCiAgICAgICAgICAgICBkaWZmID0g
U3R5bGVEaWZmZXJlbmNlUmVwYWludExheWVyOwogICAgICAgICBlbHNlIGlmIChkaWZmIDwgU3R5
bGVEaWZmZXJlbmNlUmVjb21wb3NpdGVMYXllcikKICAgICAgICAgICAgIGRpZmYgPSBTdHlsZURp
ZmZlcmVuY2VSZWNvbXBvc2l0ZUxheWVyOwpAQCAtMTY3NCw3ICsxNjc0LDcgQEAgU3R5bGVEaWZm
ZXJlbmNlIFJlbmRlck9iamVjdDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5j
ZSBkaWZmLCB1bnNpZ24KICAgICAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgaWYgKChj
b250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyAmIENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eUZpbHRl
cikgJiYgaGFzTGF5ZXIoKSkgewotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRl
ckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpOworICAgICAgICBSZW5kZXJMYXllciogbGF5
ZXIgPSB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCk7CiAgICAgICAg
IGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpIHx8IGxheWVyLT5wYWludHNXaXRoRmlsdGVycygp
KQogICAgICAgICAgICAgZGlmZiA9IFN0eWxlRGlmZmVyZW5jZVJlcGFpbnRMYXllcjsKICAgICAg
ICAgZWxzZSBpZiAoZGlmZiA8IFN0eWxlRGlmZmVyZW5jZVJlY29tcG9zaXRlTGF5ZXIpCkBAIC0x
Njg1LDggKzE2ODUsOCBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyT2JqZWN0OjphZGp1c3RTdHls
ZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIHVuc2lnbgogICAgIC8vIFRoZSBhbnN3
ZXIgdG8gcmVxdWlyZXNMYXllcigpIGZvciBwbHVnaW5zIGFuZCBpZnJhbWVzIGNhbiBjaGFuZ2Ug
b3V0c2lkZSBvZiB0aGUgc3R5bGUgc3lzdGVtLAogICAgIC8vIHNpbmNlIGl0IGRlcGVuZHMgb24g
d2hldGhlciB3ZSBkZWNpZGUgdG8gY29tcG9zaXRlIHRoZXNlIGVsZW1lbnRzLiBXaGVuIHRoZSBs
YXllciBzdGF0dXMgb2YKICAgICAvLyBvbmUgb2YgdGhlc2UgZWxlbWVudHMgY2hhbmdlcywgd2Ug
bmVlZCB0byBmb3JjZSBhIGxheW91dC4KLSAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VF
cXVhbCAmJiBzdHlsZSgpICYmIGlzQm94TW9kZWxPYmplY3QoKSkgewotICAgICAgICBpZiAoaGFz
TGF5ZXIoKSAhPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5yZXF1aXJlc0xheWVyKCkp
CisgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlRXF1YWwgJiYgc3R5bGUoKSAmJiBpc1Ry
YW5zZm9ybWFibGVPYmplY3QoKSkgeworICAgICAgICBpZiAoaGFzTGF5ZXIoKSAhPSB0b1JlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPnJlcXVpcmVzTGF5ZXIoKSkKICAgICAgICAgICAg
IGRpZmYgPSBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAgICAgfQogI2Vsc2UKQEAgLTE5ODgsNyAr
MTk4OCw3IEBAIEZsb2F0UG9pbnQgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRvTG9jYWwoY29uc3Qg
RmxvYXRQb2ludCYgY29udGFpbmVyUG9pbnQsIGJvb2wKICAgICByZXR1cm4gdHJhbnNmb3JtU3Rh
dGUubGFzdFBsYW5hclBvaW50KCk7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0OjptYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZp
eGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwg
QXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5k
ZXJPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zv
cm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29sKiB3
YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAocmVwYWludENvbnRhaW5lciA9PSB0aGlzKQogICAg
ICAgICByZXR1cm47CkBAIC0yMDEzLDcgKzIwMTMsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6bWFw
TG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
YgogICAgIG8tPm1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgZml4ZWQsIHVz
ZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlLCBEb05vdEFwcGx5Q29udGFpbmVyRmxpcCwgd2Fz
Rml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6cHVzaE1hcHBp
bmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BB
dCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2Jq
ZWN0KiBSZW5kZXJPYmplY3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdl
b21ldHJ5TWFwKSBjb25zdAogewogICAgIEFTU0VSVF9VTlVTRUQoYW5jZXN0b3JUb1N0b3BBdCwg
YW5jZXN0b3JUb1N0b3BBdCAhPSB0aGlzKTsKIApAQCAtMjA0Niw3ICsyMDQ2LDcgQEAgYm9vbCBS
ZW5kZXJPYmplY3Q6OnNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVuZGVy
T2JqZWN0KiBjb250YWluZXIKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5HKQogICAgIC8vIGhhc1Ry
YW5zZm9ybSgpIGluZGljYXRlcyB3aGV0aGVyIHRoZSBvYmplY3QgaGFzIHRyYW5zZm9ybSwgdHJh
bnNmb3JtLXN0eWxlIG9yIHBlcnNwZWN0aXZlLiBXZSBqdXN0IGNhcmUgYWJvdXQgdHJhbnNmb3Jt
LAogICAgIC8vIHNvIGNoZWNrIHRoZSBsYXllcidzIHRyYW5zZm9ybSBkaXJlY3RseS4KLSAgICBy
ZXR1cm4gKGhhc0xheWVyKCkgJiYgdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIo
KS0+dHJhbnNmb3JtKCkpIHx8IChjb250YWluZXJPYmplY3QgJiYgY29udGFpbmVyT2JqZWN0LT5z
dHlsZSgpLT5oYXNQZXJzcGVjdGl2ZSgpKTsKKyAgICByZXR1cm4gKGhhc0xheWVyKCkgJiYgdG9S
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KHRoaXMpLT5sYXllcigpLT50cmFuc2Zvcm0oKSkgfHwg
KGNvbnRhaW5lck9iamVjdCAmJiBjb250YWluZXJPYmplY3QtPnN0eWxlKCktPmhhc1BlcnNwZWN0
aXZlKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGFpbmVyT2JqZWN0KTsKICAgICBy
ZXR1cm4gaGFzVHJhbnNmb3JtKCk7CkBAIC0yMDU4LDE0ICsyMDU4LDE0IEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogY29u
dGFpbmVyT2JqZWN0CiAgICAgdHJhbnNmb3JtLm1ha2VJZGVudGl0eSgpOwogICAgIHRyYW5zZm9y
bS50cmFuc2xhdGUob2Zmc2V0SW5Db250YWluZXIud2lkdGgoKSwgb2Zmc2V0SW5Db250YWluZXIu
aGVpZ2h0KCkpOwogICAgIFJlbmRlckxheWVyKiBsYXllcjsKLSAgICBpZiAoaGFzTGF5ZXIoKSAm
JiAobGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpKSAmJiBsYXll
ci0+dHJhbnNmb3JtKCkpCisgICAgaWYgKGhhc0xheWVyKCkgJiYgKGxheWVyID0gdG9SZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KHRoaXMpLT5sYXllcigpKSAmJiBsYXllci0+dHJhbnNmb3JtKCkp
CiAgICAgICAgIHRyYW5zZm9ybS5tdWx0aXBseShsYXllci0+Y3VycmVudFRyYW5zZm9ybSgpKTsK
ICAgICAKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5HKQogICAgIGlmIChjb250YWluZXJPYmplY3Qg
JiYgY29udGFpbmVyT2JqZWN0LT5oYXNMYXllcigpICYmIGNvbnRhaW5lck9iamVjdC0+c3R5bGUo
KS0+aGFzUGVyc3BlY3RpdmUoKSkgewogICAgICAgICAvLyBQZXJwc2VjdGl2ZSBvbiB0aGUgY29u
dGFpbmVyIGFmZmVjdHMgdXMsIHNvIHdlIGhhdmUgdG8gZmFjdG9yIGl0IGluIGhlcmUuCiAgICAg
ICAgIEFTU0VSVChjb250YWluZXJPYmplY3QtPmhhc0xheWVyKCkpOwotICAgICAgICBGbG9hdFBv
aW50IHBlcnNwZWN0aXZlT3JpZ2luID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChjb250YWluZXJP
YmplY3QpLT5sYXllcigpLT5wZXJzcGVjdGl2ZU9yaWdpbigpOworICAgICAgICBGbG9hdFBvaW50
IHBlcnNwZWN0aXZlT3JpZ2luID0gdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KGNvbnRhaW5l
ck9iamVjdCktPmxheWVyKCktPnBlcnNwZWN0aXZlT3JpZ2luKCk7CiAKICAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVNYXRyaXg7CiAgICAgICAgIHBlcnNwZWN0aXZlTWF0
cml4LmFwcGx5UGVyc3BlY3RpdmUoY29udGFpbmVyT2JqZWN0LT5zdHlsZSgpLT5wZXJzcGVjdGl2
ZSgpKTsKQEAgLTIwNzksNyArMjA3OSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpnZXRUcmFuc2Zv
cm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogY29udGFpbmVyT2JqZWN0CiAjZW5k
aWYKIH0KIAotRmxvYXRRdWFkIFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclF1YWQoY29u
c3QgRmxvYXRRdWFkJiBsb2NhbFF1YWQsIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBib29sIGZpeGVkLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK0Zsb2F0UXVhZCBSZW5k
ZXJPYmplY3Q6OmxvY2FsVG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0UXVhZCYgbG9jYWxRdWFk
LCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVk
LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICAvLyBUcmFjayB0aGUgcG9pbnQgYXQgdGhl
IGNlbnRlciBvZiB0aGUgcXVhZCdzIGJvdW5kaW5nIGJveC4gQXMgbWFwTG9jYWxUb0NvbnRhaW5l
cigpIGNhbGxzIG9mZnNldEZyb21Db250YWluZXIoKSwKICAgICAvLyBpdCB3aWxsIHVzZSB0aGF0
IHBvaW50IGFzIHRoZSByZWZlcmVuY2UgcG9pbnQgdG8gZGVjaWRlIHdoaWNoIGNvbHVtbidzIHRy
YW5zZm9ybSB0byBhcHBseSBpbiBtdWx0aXBsZS1jb2x1bW4gYmxvY2tzLgpAQCAtMjA5MCw3ICsy
MDkwLDcgQEAgRmxvYXRRdWFkIFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclF1YWQoY29u
c3QgRmxvYXRRdWFkJiBsb2NhbFF1YWQsIFJlbmRlckIKICAgICByZXR1cm4gdHJhbnNmb3JtU3Rh
dGUubGFzdFBsYW5hclF1YWQoKTsKIH0KIAotRmxvYXRQb2ludCBSZW5kZXJPYmplY3Q6OmxvY2Fs
VG9Db250YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiBsb2NhbFBvaW50LCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0CitGbG9hdFBvaW50IFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclBvaW50KGNv
bnN0IEZsb2F0UG9pbnQmIGxvY2FsUG9pbnQsIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAg
IFRyYW5zZm9ybVN0YXRlIHRyYW5zZm9ybVN0YXRlKFRyYW5zZm9ybVN0YXRlOjpBcHBseVRyYW5z
Zm9ybURpcmVjdGlvbiwgbG9jYWxQb2ludCk7CiAgICAgbWFwTG9jYWxUb0NvbnRhaW5lcihyZXBh
aW50Q29udGFpbmVyLCBmaXhlZCwgdHJ1ZSwgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVy
RmxpcCwgd2FzRml4ZWQpOwpAQCAtMjE4OCw3ICsyMTg4LDcgQEAgYm9vbCBSZW5kZXJPYmplY3Q6
Omhhc091dGxpbmVBbm5vdGF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbm9kZSgpICYmIG5vZGUo
KS0+aXNMaW5rKCkgJiYgZG9jdW1lbnQoKS0+cHJpbnRpbmcoKTsKIH0KIAotUmVuZGVyT2JqZWN0
KiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgYm9vbCogcmVwYWludENvbnRhaW5lclNraXBwZWQpIGNvbnN0CitSZW5k
ZXJPYmplY3QqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wqIHJlcGFpbnRDb250YWluZXJTa2lwcGVk
KSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyU2tpcHBlZCkKICAgICAgICAgKnJl
cGFpbnRDb250YWluZXJTa2lwcGVkID0gZmFsc2U7CkBAIC0yMzIxLDcgKzIzMjEsNyBAQCB2b2lk
IFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkKICAgICAvLyBiZSBtb3ZlZCBpbnRvIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpkZXN0cm95LgogICAgIGlmIChoYXNMYXllcigpKSB7CiAgICAg
ICAgIHNldEhhc0xheWVyKGZhbHNlKTsKLSAgICAgICAgdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0
aGlzKS0+ZGVzdHJveUxheWVyKCk7CisgICAgICAgIHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCh0aGlzKS0+ZGVzdHJveUxheWVyKCk7CiAgICAgfQogCiAgICAgc2V0QW5jZXN0b3JMaW5lQm94
RGlydHkoZmFsc2UpOwpAQCAtMjQxMiw3ICsyNDEyLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnVw
ZGF0ZURyYWdTdGF0ZShib29sIGRyYWdPbikKIAogYm9vbCBSZW5kZXJPYmplY3Q6OmlzQ29tcG9z
aXRlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc0xheWVyKCkgJiYgdG9SZW5kZXJCb3hNb2Rl
bE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCk7CisgICAgcmV0dXJuIGhhc0xh
eWVyKCkgJiYgdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KHRoaXMpLT5sYXllcigpLT5pc0Nv
bXBvc2l0ZWQoKTsKIH0KIAogYm9vbCBSZW5kZXJPYmplY3Q6OmhpdFRlc3QoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdFBv
aW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQsIEhpdFRlc3RGaWx0ZXIgaGl0VGVzdEZpbHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaAppbmRleCA2MGM1NjkwOWNjYjVjZTBkZTY2N2NkOTc2N2ViMzFmMDdiNGIx
ZTJlLi5jY2VhZjcwYmY0MzdkMDgwMTE5ZTZlMjJhNjVkMDlmNDQ1ZmRkODVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIFJl
bmRlckJsb2NrOwogY2xhc3MgUmVuZGVyRmxvd1RocmVhZDsKIGNsYXNzIFJlbmRlckdlb21ldHJ5
TWFwOwogY2xhc3MgUmVuZGVyTGF5ZXI7CitjbGFzcyBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
OwogY2xhc3MgUmVuZGVyVGFibGU7CiBjbGFzcyBSZW5kZXJUaGVtZTsKIGNsYXNzIFRyYW5zZm9y
bVN0YXRlOwpAQCAtMzUwLDYgKzM1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNU
ZXh0Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlz
VGV4dEFyZWEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1Rl
eHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVHJh
bnNmb3JtYWJsZU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzVmlkZW8oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c1dpZGdldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQ2Fu
dmFzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTU4NSw3ICs1ODcsNyBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJucyB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhpcyBvbmUuIENhbiBiZSBk
aWZmZXJlbnQgZnJvbSBwYXJlbnQgZm9yIHBvc2l0aW9uZWQgZWxlbWVudHMuCiAgICAgLy8gSWYg
cmVwYWludENvbnRhaW5lciBhbmQgcmVwYWludENvbnRhaW5lclNraXBwZWQgYXJlIG5vdCBudWxs
LCBvbiByZXR1cm4gKnJlcGFpbnRDb250YWluZXJTa2lwcGVkCiAgICAgLy8gaXMgdHJ1ZSBpZiB0
aGUgcmVuZGVyZXIgcmV0dXJuZWQgaXMgYW4gYW5jZXN0b3Igb2YgcmVwYWludENvbnRhaW5lci4K
LSAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciA9IDAsIGJvb2wqIHJlcGFpbnRDb250YWluZXJTa2lwcGVkID0gMCkg
Y29uc3Q7CisgICAgUmVuZGVyT2JqZWN0KiBjb250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciA9IDAsIGJvb2wqIHJlcGFpbnRDb250YWluZXJT
a2lwcGVkID0gMCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogaG92ZXJBbmNl
c3RvcigpIGNvbnN0IHsgcmV0dXJuIHBhcmVudCgpOyB9CiAKQEAgLTY4MSw4ICs2ODMsOCBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgLy8gQ29udmVydCBhIGxvY2FsIHF1YWQgaW50byB0aGUgY29v
cmRpbmF0ZSBzeXN0ZW0gb2YgY29udGFpbmVyLCB0YWtpbmcgdHJhbnNmb3JtcyBpbnRvIGFjY291
bnQuCi0gICAgRmxvYXRRdWFkIGxvY2FsVG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0UXVhZCYs
IFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkID0gZmFs
c2UsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgRmxvYXRQb2ludCBsb2NhbFRvQ29u
dGFpbmVyUG9pbnQoY29uc3QgRmxvYXRQb2ludCYsIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBib29sIGZpeGVkID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29u
c3Q7CisgICAgRmxvYXRRdWFkIGxvY2FsVG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0UXVhZCYs
IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQg
PSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICBGbG9hdFBvaW50IGxvY2Fs
VG9Db250YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiwgUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCA9IGZhbHNlLCBib29sKiB3YXNGaXhl
ZCA9IDApIGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSB0aGUgY29udGFp
bmVyKCkgcmVuZGVyZXIgKGV4Y2x1ZGluZyB0cmFuc2Zvcm1zKS4gSW4gbXVsdGktY29sdW1uIGxh
eW91dCwKICAgICAvLyBkaWZmZXJlbnQgb2Zmc2V0cyBhcHBseSBhdCBkaWZmZXJlbnQgcG9pbnRz
LCBzbyByZXR1cm4gdGhlIG9mZnNldCB0aGF0IGFwcGxpZXMgdG8gdGhlIGdpdmVuIHBvaW50LgpA
QCAtNzIzLDEzICs3MjUsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRUZXh0RGVjb3JhdGlv
bkNvbG9ycyhpbnQgZGVjb3JhdGlvbnMsIENvbG9yJiB1bmRlcmxpbmUsIENvbG9yJiBvdmVybGlu
ZSwgQ29sb3ImIGxpbmV0aHJvdWdoLCBib29sIHF1aXJrc01vZGUgPSBmYWxzZSwgYm9vbCBmaXJz
dGxpbmVTdHlsZSA9IGZhbHNlKTsKIAotICAgIC8vIFJldHVybiB0aGUgUmVuZGVyQm94IGluIHRo
ZSBjb250YWluZXIgY2hhaW4gd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHBhaW50aW5nIHRoaXMg
b2JqZWN0LCBvciAwCisgICAgLy8gUmV0dXJuIHRoZSBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
IGluIHRoZSBjb250YWluZXIgY2hhaW4gd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHBhaW50aW5n
IHRoaXMgb2JqZWN0LCBvciAwCiAgICAgLy8gaWYgcGFpbnRpbmcgaXMgcm9vdC1yZWxhdGl2ZS4g
VGhpcyBpcyB0aGUgY29udGFpbmVyIHRoYXQgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUgJ2ZvclJl
cGFpbnQnCiAgICAgLy8gbWV0aG9kcy4KLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFp
bmVyRm9yUmVwYWludCgpIGNvbnN0OworICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGNv
bnRhaW5lckZvclJlcGFpbnQoKSBjb25zdDsKICAgICAvLyBBY3R1YWxseSBkbyB0aGUgcmVwYWlu
dCBvZiByZWN0IHIgZm9yIHRoaXMgb2JqZWN0IHdoaWNoIGhhcyBiZWVuIGNvbXB1dGVkIGluIHRo
ZSBjb29yZGluYXRlIHNwYWNlCiAgICAgLy8gb2YgcmVwYWludENvbnRhaW5lci4gSWYgcmVwYWlu
dENvbnRhaW5lciBpcyAwLCByZXBhaW50IHZpYSB0aGUgdmlldy4KLSAgICB2b2lkIHJlcGFpbnRV
c2luZ0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29u
c3QgTGF5b3V0UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOworICAgIHZvaWQgcmVwYWlu
dFVzaW5nQ29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIGNvbnN0IExheW91dFJlY3QmLCBib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsKICAgICAKICAg
ICAvLyBSZXBhaW50IHRoZSBlbnRpcmUgb2JqZWN0LiAgQ2FsbGVkIHdoZW4sIGUuZy4sIHRoZSBj
b2xvciBvZiBhIGJvcmRlciBjaGFuZ2VzLCBvciB3aGVuIGEgYm9yZGVyCiAgICAgLy8gc3R5bGUg
Y2hhbmdlcy4KQEAgLTczOSw3ICs3NDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBhaW50UmVj
dGFuZ2xlKGNvbnN0IExheW91dFJlY3QmLCBib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsKIAogICAg
IC8vIFJlcGFpbnQgb25seSBpZiBvdXIgb2xkIGJvdW5kcyBhbmQgbmV3IGJvdW5kcyBhcmUgZGlm
ZmVyZW50LiBUaGUgY2FsbGVyIG1heSBwYXNzIGluIG5ld0JvdW5kcyBhbmQgbmV3T3V0bGluZUJv
eCBpZiB0aGV5IGFyZSBrbm93bi4KLSAgICBib29sIHJlcGFpbnRBZnRlckxheW91dElmTmVlZGVk
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0
JiBvbGRCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIG9sZE91dGxpbmVCb3gsIGNvbnN0IExheW91
dFJlY3QqIG5ld0JvdW5kc1B0ciA9IDAsIGNvbnN0IExheW91dFJlY3QqIG5ld091dGxpbmVCb3hQ
dHIgPSAwKTsKKyAgICBib29sIHJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKFJlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFJlY3QmIG9sZEJv
dW5kcywgY29uc3QgTGF5b3V0UmVjdCYgb2xkT3V0bGluZUJveCwgY29uc3QgTGF5b3V0UmVjdCog
bmV3Qm91bmRzUHRyID0gMCwgY29uc3QgTGF5b3V0UmVjdCogbmV3T3V0bGluZUJveFB0ciA9IDAp
OwogCiAgICAgLy8gUmVwYWludCBvbmx5IGlmIHRoZSBvYmplY3QgbW92ZWQuCiAgICAgdmlydHVh
bCB2b2lkIHJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKGNvbnN0IExheW91dFJlY3QmKTsKQEAg
LTc1Niw4ICs3NTgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludCgwKTsKICAgICB9CiAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRBYnNvbHV0
ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91dGxpbmVG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRV
bml0IG91dGxpbmVXaWR0aCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRD
b250YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91dGxpbmVG
b3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExh
eW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdDsKIAogICAgIC8vIEdpdmVuIGEgcmVjdCBpbiB0
aGUgb2JqZWN0J3MgY29vcmRpbmF0ZSBzcGFjZSwgY29tcHV0ZSBhIHJlY3Qgc3VpdGFibGUgZm9y
IHJlcGFpbnRpbmcKICAgICAvLyB0aGF0IHJlY3QgaW4gdmlldyBjb29yZGluYXRlcy4KQEAgLTc2
Nyw4ICs3NjksOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIC8vIEdpdmVuIGEgcmVjdCBpbiB0aGUg
b2JqZWN0J3MgY29vcmRpbmF0ZSBzcGFjZSwgY29tcHV0ZSBhIHJlY3Qgc3VpdGFibGUgZm9yIHJl
cGFpbnRpbmcKICAgICAvLyB0aGF0IHJlY3QgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2Ugb2YgcmVw
YWludENvbnRhaW5lci4KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBm
aXhlZCA9IGZhbHNlKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVj
dCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9v
bCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKIAogICAgIC8vIElmIG11bHRpcGxlLWNvbHVtbiBsYXlv
dXQgcmVzdWx0cyBpbiBhcHBseWluZyBhbiBvZmZzZXQgdG8gdGhlIGdpdmVuIHBvaW50LCBhZGQg
dGhlIHNhbWUKICAgICAvLyBvZmZzZXQgdG8gdGhlIGdpdmVuIHNpemUuCkBAIC04MTAsNyArODEy
LDcgQEAgcHVibGljOgogICAgIC8vIEEgc2luZ2xlIHJlY3RhbmdsZSB0aGF0IGVuY29tcGFzc2Vz
IGFsbCBvZiB0aGUgc2VsZWN0ZWQgb2JqZWN0cyB3aXRoaW4gdGhpcyBvYmplY3QuICBVc2VkIHRv
IGRldGVybWluZSB0aGUgdGlnaHRlc3QKICAgICAvLyBwb3NzaWJsZSBib3VuZGluZyBib3ggZm9y
IHRoZSBzZWxlY3Rpb24uCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0KGJvb2wgY2xpcFRv
VmlzaWJsZUNvbnRlbnQgPSB0cnVlKSB7IHJldHVybiBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCgw
LCBjbGlwVG9WaXNpYmxlQ29udGVudCk7IH0KLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0
aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5l
ciovLCBib29sIC8qY2xpcFRvVmlzaWJsZUNvbnRlbnQqLyA9IHRydWUpIHsgcmV0dXJuIExheW91
dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWlu
dChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgYm9vbCAv
KmNsaXBUb1Zpc2libGVDb250ZW50Ki8gPSB0cnVlKSB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0K
IAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIGJvb2wgaGFzU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIHNl
bGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZTsgfQpAQCAtODgwLDEyICs4ODIsMTIgQEAg
cHVibGljOgogICAgIC8vIE1hcCBwb2ludHMgYW5kIHF1YWRzIHRocm91Z2ggZWxlbWVudHMsIHBv
dGVudGlhbGx5IHZpYSAzZCB0cmFuc2Zvcm1zLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gY2Fs
bCB0aGVzZSBkaXJlY3RseTsgdXNlCiAgICAgLy8gbG9jYWxUb0Fic29sdXRlL2Fic29sdXRlVG9M
b2NhbCBtZXRob2RzIGluc3RlYWQuCiAgICAgZW51bSBBcHBseUNvbnRhaW5lckZsaXBPck5vdCB7
IERvTm90QXBwbHlDb250YWluZXJGbGlwLCBBcHBseUNvbnRhaW5lckZsaXAgfTsKLSAgICB2aXJ0
dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0
ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3
YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVy
KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJh
bnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBP
ck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKICAg
ICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1
c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogCiAgICAgLy8gUHVzaGVzIHN0
YXRlIG9udG8gUmVuZGVyR2VvbWV0cnlNYXAgYWJvdXQgaG93IHRvIG1hcCBjb29yZGluYXRlcyBm
cm9tIHRoaXMgcmVuZGVyZXIgdG8gaXRzIGNvbnRhaW5lciwgb3IgYW5jZXN0b3JUb1N0b3BBdCAo
d2hpY2hldmVyIGlzIGVuY291bnRlcmVkIGZpcnN0KS4KICAgICAvLyBSZXR1cm5zIHRoZSByZW5k
ZXJlciB3aGljaCB3YXMgbWFwcGVkIHRvIChjb250YWluZXIgb3IgYW5jZXN0b3JUb1N0b3BBdCku
Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIo
Y29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21l
dHJ5TWFwJikgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JU
b1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKICAgICAKICAgICBib29sIHNob3Vs
ZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXIp
IGNvbnN0OwogICAgIHZvaWQgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJP
YmplY3QqIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0SW5Db250YWluZXIsIFRy
YW5zZm9ybWF0aW9uTWF0cml4JikgY29uc3Q7CkBAIC05MjYsNyArOTI4LDcgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKICAgICB2b2lkIGFyZW5hRGVs
ZXRlKFJlbmRlckFyZW5hKiwgdm9pZCogb2JqZWN0QmFzZSk7CiAKLSAgICB2aXJ0dWFsIExheW91
dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVw
YWludENvbnRhaW5lciovLCBMYXlvdXRQb2ludCogLypjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250
YWluZXIqLyA9IDApIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgTGF5b3V0UG9pbnQqIC8qY2FjaGVkT2Zmc2V0VG9S
ZXBhaW50Q29udGFpbmVyKi8gPSAwKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KIAog
cHJpdmF0ZToKICAgICBSZW5kZXJTdHlsZSogZmlyc3RMaW5lU3R5bGVTbG93Q2FzZSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggMmUw
ZDc0NzNiYjUyYzY3Y2I4NWE4OGU2YjllMTBmM2FkODY4MWJlOC4uMGVjYjk1MGU1Mzc0ZmEwYmMw
NDEwZWU5YzUxODE2MTk5YjYzZjVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwCkBAIC00NjEsNyArNDYxLDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRl
clJlcGxhY2VkOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAg
ICByZXR1cm4gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KHBvaW50KTsKIH0KIAotTGF5b3V0
UmVjdCBSZW5kZXJSZXBsYWNlZDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpCitM
YXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVD
b250ZW50KQogewogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7CiAKQEAgLTUyNiw3ICs1MjYs
NyBAQCBib29sIFJlbmRlclJlcGxhY2VkOjppc1NlbGVjdGVkKCkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyUmVwbGFjZWQ6OmNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25z
dAorTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsK
ICAgICBpZiAoc3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIWVuY2xvc2luZ0xh
eWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4IDllYmM2MzRi
MDMyMzkxNDhlNTJjMWZjNmI2NWRhYjNkNmQ1YmQ4YmQuLjcyNWRmMTM5ZmY5MWNmMjhmNGZkMzkx
NjlmYWExNTk4N2ZiN2MwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5oCkBAIC03MCwxMyArNzAsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZXBs
YWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIHsgfQogCi0gICAgdmlydHVhbCBM
YXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVw
YWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3Np
dGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgCiAgICAgdmly
dHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAot
ICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9
IHRydWUpOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zp
c2libGVDb250ZW50ID0gdHJ1ZSkgT1ZFUlJJREU7CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2lj
UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChSZW5kZXJCb3gqLCBGbG9hdFNpemUmIGludHJp
bnNpY1NpemUsIGRvdWJsZSYgaW50cmluc2ljUmF0aW8sIGJvb2wmIGlzUGVyY2VudGFnZUludHJp
bnNpY1NpemUpIGNvbnN0OwogCiAgICAgSW50U2l6ZSBtX2ludHJpbnNpY1NpemU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VsZWN0aW9uSW5mby5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uaAppbmRleCA4OTM2YTM3
N2U2NjU0MzAxY2E1YTRjZjQ2NmQzYjc5NWI5OGQzOWQ3Li4wM2M3MTUxMTE2OTllNTkxMjRlYjM4
ZmM2ZTcwM2E3ZGRlZTMwN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2VsZWN0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTZWxlY3Rpb25JbmZvLmgKQEAgLTQ4LDEyICs0OCwxMiBAQCBwdWJsaWM6CiAgICAgfQogICAg
IAogICAgIFJlbmRlck9iamVjdCogb2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Q7IH0K
LSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVwYWludENvbnRhaW5lcjsgfQorICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcGFpbnRDb250YWluZXI7IH0K
ICAgICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyT2JqZWN0KiBtX29iamVjdDsKLSAg
ICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbV9yZXBhaW50Q29udGFpbmVyOworICAgIFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QqIG1fcmVwYWludENvbnRhaW5lcjsKICAgICBSZW5kZXJPYmplY3Q6
OlNlbGVjdGlvblN0YXRlIG1fc3RhdGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4IDE1OWI1NGIzYjM4ZWI4YzllODdhMGI5ZWU4MGI2
MWEwYzFiM2RiYjcuLjgzMGU1MzEzZGRlNmQ5N2IxOWE4NGY0ZjkxNjBmZWZlYWI2Y2VjYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0yNTAs
NyArMjUwLDcgQEAgTGF5b3V0U2l6ZSBSZW5kZXJUYWJsZUNlbGw6Om9mZnNldEZyb21Db250YWlu
ZXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBMYXlvdXRQb2kKICAgICByZXR1cm4gb2Zmc2V0Owog
fQogCi1MYXlvdXRSZWN0IFJlbmRlclRhYmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJl
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlv
dXRSZWN0IFJlbmRlclRhYmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICAv
LyBJZiB0aGUgdGFibGUgZ3JpZCBpcyBkaXJ0eSwgd2UgY2Fubm90IGdldCByZWxpYWJsZSBpbmZv
cm1hdGlvbiBhYm91dCBhZGpvaW5pbmcgY2VsbHMsCiAgICAgLy8gc28gd2UgaWdub3JlIG91dHNp
ZGUgYm9yZGVycy4gVGhpcyBzaG91bGQgbm90IGJlIGEgcHJvYmxlbSBiZWNhdXNlIGl0IG1lYW5z
IHRoYXQKQEAgLTMwMSw3ICszMDEsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclRhYmxlQ2VsbDo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqCiAgICAgcmV0
dXJuIHI7CiB9CiAKLXZvaWQgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlUmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHIsIGJv
b2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZVJlY3RGb3JSZXBh
aW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJl
Y3QmIHIsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXIgPT0g
dGhpcykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5oCmluZGV4IDQzODE1NTVjZGQwZDMwNWIwZDcxMTU1ZDFiYmU4Y2M2YjBhMDEwNTAu
LjlkZDkxNjk3NGQzNjY5YTYyMTk2ODZjNmVkMzQwZjE5MGM2Mjk5YzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTE4Nyw4ICsxODcsOCBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91
bmQoQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KikgY29uc3QgT1ZFUlJJ
REU7CiAKICAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJP
YmplY3QqLCBjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0g
MCkgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25z
dDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9
IGZhbHNlKSBjb25zdCBPVkVSUklERTsKIAogICAgIGludCBib3JkZXJIYWxmTGVmdChib29sIG91
dGVyKSBjb25zdDsKICAgICBpbnQgYm9yZGVySGFsZlJpZ2h0KGJvb2wgb3V0ZXIpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKaW5kZXggOTdjZDhj
YzNlZDA5NTY4ZjY4OTE2MGE1MGRlODY5NDM3MDBjZGUyOS4uMTU0YzlmMjExOWZjZWNiNzY4OTRk
Nzk5MTlhZTA5ZGIyM2FiN2QyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDb2wuY3BwCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgUmVuZGVyVGFibGVDb2w6OmNhbkhh
dmVDaGlsZHJlbigpIGNvbnN0CiAgICAgcmV0dXJuIGlzVGFibGVDb2x1bW5Hcm91cCgpOwogfQog
Ci1MYXlvdXRSZWN0IFJlbmRlclRhYmxlQ29sOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJl
Y3QgUmVuZGVyVGFibGVDb2w6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgLy8gRm9y
IG5vdywganVzdCByZXBhaW50IHRoZSB3aG9sZSB0YWJsZS4KICAgICAvLyBGSVhNRTogRmluZCBh
IGJldHRlciB3YXkgdG8gZG8gdGhpcywgZS5nLiwgbmVlZCB0byByZXBhaW50IGFsbCB0aGUgY2Vs
bHMgdGhhdCB3ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ29sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAppbmRl
eCA2MmYzMjg4ZThkNjYzODc0MGY2OWVmNjFkZjY4N2FiYmViYzI0MjFjLi40MGVjMTNlNWJmMjM5
NWVmMjkwMmJhOTc5MjAzYzUxN2QzZWUzZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDb2wuaApAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNM
YXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qg
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBw
ZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAppbmRleCAwZTQy
NGJjMTEyYjJmMDBhZGI0NDk5NTEyYmU5ZWUzNGUzZGQ2OTk0Li4xMzNhNDAxNWMyNjczMzYyMzk2
OGU2ZDhhNTVkNDA0ZDdiNWJhY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZVJvdy5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFJlbmRlclRhYmxlUm93Ojps
YXlvdXQoKQogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5k
ZXJUYWJsZVJvdzo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclRhYmxlUm93
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIEFTU0VSVChwYXJlbnQoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKaW5kZXggYWZhODM4YzEyNTQ2
MWJlNWZjMzU1ZDAyNjVkY2QzMWNlZjZhMmMzMS4uZjNmYTNiMWYyZjRhYTY5ZDIzZmViNWNhZjhm
ZGU2NjA0OWNkNDZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93
LmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGls
ZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CiAg
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lcikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0UG9pbnQmIHBvaW50SW5Db250
YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlv
bikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIGlzVHJhbnNwYXJlbnQoKSB8fCBoYXNPdmVyZmxvd0NsaXAoKSB8fCBo
YXNUcmFuc2Zvcm0oKSB8fCBoYXNIaWRkZW5CYWNrZmFjZSgpIHx8IGhhc01hc2soKSB8fCBoYXNG
aWx0ZXIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGJh
Zjk1NDc1Y2Q0MGM0MTAwOTM3MDk0ZjRjMzJjOTVhMGI3NGRlMWEuLmZjYmIyMWNiMDcwYTQxNGMw
YWU2MWE3ZjRmMjdkOTJlNmYzNTIwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAKQEAgLTE2MTgsNyArMTYxOCw3IEBAIExheW91dFJlY3QgUmVuZGVyVGV4dDo6bGlu
ZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29uc3QKICAgICByZXR1cm4gcmVjdDsKIH0K
IAotTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3Qg
UmVuZGVyVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyVG9SZXBhaW50ID0gY29udGFpbmluZ0Jsb2NrKCk7CiAKQEAgLTE2MzQsNyArMTYz
NCw3IEBAIExheW91dFJlY3QgUmVuZGVyVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpCiAgICAgcmV0dXJuIHJlbmRlcmVyVG9SZXBh
aW50LT5jbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsKIH0K
IAotTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVu
dCkKK0xheW91dFJlY3QgUmVuZGVyVGV4dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxl
Q29udGVudCkKIHsKICAgICBBU1NFUlQoIW5lZWRzTGF5b3V0KCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCBiOTZlY2E3M2YzNmMxNWZmNjIyNWU5OThhMzkxMTA1
NTY3MTdmNDRhLi41OTRhNjg5MGZjNDI3ZTY2ZDEwYTYwYWZhYTdhMWNiNjk0NDUyNTk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTk3LDEzICs5NywxMyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25T
dGF0ZSBzKTsKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJs
ZUNvbnRlbnQgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZv
clJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9v
bCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqLCBpbnQgY2FyZXRPZmZzZXQsIExheW91
dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDApOwogCiAgICAgdmlydHVhbCBMYXlvdXRV
bml0IG1hcmdpbkxlZnQoKSBjb25zdCB7IHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5
bGUoKS0+bWFyZ2luTGVmdCgpLCAwLCB2aWV3KCkpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0
IG1hcmdpblJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxl
KCktPm1hcmdpblJpZ2h0KCksIDAsIHZpZXcoKSk7IH0KIAotICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgSW5saW5lVGV4dEJveCogZmlyc3RUZXh0Qm94
KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFRleHRCb3g7IH0KICAgICBJbmxpbmVUZXh0Qm94KiBs
YXN0VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFRleHRCb3g7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNWRlODBiZmZlNTIwYjlkYTEyZTMwNzgwNmIxYjUxMzMwZTQ3ZDFjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QuY3BwCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkg
S29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDUgQWxsYW4g
U2FuZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdvbGYuY29tKQorICogICAgICAgICAgIChDKSAyMDA1
LCAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53ZWluaWdAZ21haWwuY29tKQorICogQ29weXJpZ2h0
IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdC5oIgorCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3Q6OnNfd2FzRmxvYXRpbmcgPSBmYWxzZTsKK2Jvb2wgUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdDo6c19oYWRMYXllciA9IGZhbHNlOworYm9vbCBSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0OjpzX2hhZFRyYW5zZm9ybSA9IGZhbHNlOworYm9vbCBSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0OjpzX2xheWVyV2FzU2VsZlBhaW50aW5nID0gZmFsc2U7CisKK1JlbmRlclRyYW5zZm9y
bWFibGVPYmplY3Q6OlJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QoTm9kZSogbm9kZSkKKyAgICA6
IFJlbmRlck9iamVjdChub2RlKQorICAgICwgbV9sYXllcigwKQoreworfQorCitSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0Ojp+UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCgpCit7CisgICAgLy8g
T3VyIGxheWVyIHNob3VsZCBoYXZlIGJlZW4gZGVzdHJveWVkIGFuZCBjbGVhcmVkIGJ5IG5vdwor
ICAgIEFTU0VSVCghaGFzTGF5ZXIoKSk7CisgICAgQVNTRVJUKCFtX2xheWVyKTsKK30KKwordm9p
ZCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpkZXN0cm95TGF5ZXIoKQoreworICAgIEFTU0VS
VCghaGFzTGF5ZXIoKSk7IC8vIENhbGxlcnMgc2hvdWxkIGhhdmUgYWxyZWFkeSBjYWxsZWQgc2V0
SGFzTGF5ZXIoZmFsc2UpCisgICAgQVNTRVJUKG1fbGF5ZXIpOworICAgIG1fbGF5ZXItPmRlc3Ry
b3kocmVuZGVyQXJlbmEoKSk7CisgICAgbV9sYXllciA9IDA7Cit9CisKK3ZvaWQgUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdDo6ZW5zdXJlTGF5ZXIoKQoreworICAgIGlmIChtX2xheWVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2xheWVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJM
YXllcih0aGlzKTsKKyAgICBzZXRIYXNMYXllcih0cnVlKTsKKyAgICBtX2xheWVyLT5pbnNlcnRP
bmx5VGhpc0xheWVyKCk7Cit9CisKK2Jvb2wgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6aGFz
U2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyICYmIG1fbGF5
ZXItPmlzU2VsZlBhaW50aW5nTGF5ZXIoKTsKK30KKwordm9pZCBSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQoreworICAgIC8vIFJlbmRlck9iamVjdDo6d2lsbEJl
RGVzdHJveWVkIGNhbGxzIGJhY2sgdG8gZGVzdHJveUxheWVyKCkgZm9yIGxheWVyIGRlc3RydWN0
aW9uCisgICAgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKTsKK30KKwordm9pZCBSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSkKK3sKKyAgICBzX3dhc0Zsb2F0aW5nID0g
aXNGbG9hdGluZygpOworICAgIHNfaGFkTGF5ZXIgPSBoYXNMYXllcigpOworICAgIHNfaGFkVHJh
bnNmb3JtID0gaGFzVHJhbnNmb3JtKCk7CisgICAgaWYgKHNfaGFkTGF5ZXIpCisgICAgICAgIHNf
bGF5ZXJXYXNTZWxmUGFpbnRpbmcgPSBsYXllcigpLT5pc1NlbGZQYWludGluZ0xheWVyKCk7CisK
KyAgICAvLyBJZiBvdXIgei1pbmRleCBjaGFuZ2VzIHZhbHVlIG9yIG91ciB2aXNpYmlsaXR5IGNo
YW5nZXMsCisgICAgLy8gd2UgbmVlZCB0byBkaXJ0eSBvdXIgc3RhY2tpbmcgY29udGV4dCdzIHot
b3JkZXIgbGlzdC4KKyAgICBSZW5kZXJTdHlsZSogb2xkU3R5bGUgPSBzdHlsZSgpOworICAgIGlm
IChvbGRTdHlsZSAmJiBuZXdTdHlsZSkgeworICAgICAgICBpZiAocGFyZW50KCkpIHsKKyAgICAg
ICAgICAgIC8vIERvIGEgcmVwYWludCB3aXRoIHRoZSBvbGQgc3R5bGUgZmlyc3QsIGUuZy4sIGZv
ciBleGFtcGxlIGlmIHdlIGdvIGZyb20KKyAgICAgICAgICAgIC8vIGhhdmluZyBhbiBvdXRsaW5l
IHRvIG5vdCBoYXZpbmcgYW4gb3V0bGluZS4KKyAgICAgICAgICAgIGlmIChkaWZmID09IFN0eWxl
RGlmZmVyZW5jZVJlcGFpbnRMYXllcikgeworICAgICAgICAgICAgICAgIGxheWVyKCktPnJlcGFp
bnRJbmNsdWRpbmdEZXNjZW5kYW50cygpOworICAgICAgICAgICAgICAgIGlmICghKG9sZFN0eWxl
LT5jbGlwKCkgPT0gbmV3U3R5bGUtPmNsaXAoKSkpCisgICAgICAgICAgICAgICAgICAgIGxheWVy
KCktPmNsZWFyQ2xpcFJlY3RzSW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VSZXBhaW50IHx8IG5ld1N0eWxlLT5vdXRs
aW5lU2l6ZSgpIDwgb2xkU3R5bGUtPm91dGxpbmVTaXplKCkpCisgICAgICAgICAgICAgICAgcmVw
YWludCgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNl
TGF5b3V0IHx8IGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlU2ltcGxpZmllZExheW91dCkgeworICAg
ICAgICAgICAgLy8gV2hlbiBhIGxheW91dCBoaW50IGhhcHBlbnMsIHdlIGdvIGFoZWFkIGFuZCBk
byBhIHJlcGFpbnQgb2YgdGhlIGxheWVyLCBzaW5jZSB0aGUgbGF5ZXIgY291bGQKKyAgICAgICAg
ICAgIC8vIGVuZCB1cCBiZWluZyBkZXN0cm95ZWQuCisgICAgICAgICAgICBpZiAoaGFzTGF5ZXIo
KSkgeworICAgICAgICAgICAgICAgIGlmIChvbGRTdHlsZS0+cG9zaXRpb24oKSAhPSBuZXdTdHls
ZS0+cG9zaXRpb24oKQorICAgICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+ekluZGV4KCkg
IT0gbmV3U3R5bGUtPnpJbmRleCgpCisgICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT5o
YXNBdXRvWkluZGV4KCkgIT0gbmV3U3R5bGUtPmhhc0F1dG9aSW5kZXgoKQorICAgICAgICAgICAg
ICAgICAgICB8fCAhKG9sZFN0eWxlLT5jbGlwKCkgPT0gbmV3U3R5bGUtPmNsaXAoKSkKKyAgICAg
ICAgICAgICAgICAgICAgfHwgb2xkU3R5bGUtPmhhc0NsaXAoKSAhPSBuZXdTdHlsZS0+aGFzQ2xp
cCgpCisgICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT5vcGFjaXR5KCkgIT0gbmV3U3R5
bGUtPm9wYWNpdHkoKQorICAgICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+dHJhbnNmb3Jt
KCkgIT0gbmV3U3R5bGUtPnRyYW5zZm9ybSgpCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAg
ICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+ZmlsdGVyKCkgIT0gbmV3U3R5bGUtPmZpbHRl
cigpCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGxheWVy
KCktPnJlcGFpbnRJbmNsdWRpbmdEZXNjZW5kYW50cygpOworICAgICAgICAgICAgfSBlbHNlIGlm
IChuZXdTdHlsZS0+aGFzVHJhbnNmb3JtKCkgfHwgbmV3U3R5bGUtPm9wYWNpdHkoKSA8IDEgfHwg
bmV3U3R5bGUtPmhhc0ZpbHRlcigpKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3Qg
aGF2ZSBhIGxheWVyIHlldCwgYnV0IHdlIGFyZSBnb2luZyB0byBnZXQgb25lIGJlY2F1c2Ugb2Yg
dHJhbnNmb3JtIG9yIG9wYWNpdHksCisgICAgICAgICAgICAgICAgLy8gIHRoZW4gd2UgbmVlZCB0
byByZXBhaW50IHRoZSBvbGQgcG9zaXRpb24gb2YgdGhlIG9iamVjdC4KKyAgICAgICAgICAgICAg
ICByZXBhaW50KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBSZW5k
ZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShkaWZmLCBuZXdTdHlsZSk7Cit9CisKK3ZvaWQgUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKK3sKKyAgICBSZW5kZXJPYmplY3Q6OnN0
eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKKworICAgIGlmIChyZXF1aXJlc0xheWVyKCkp
IHsKKyAgICAgICAgaWYgKCFsYXllcigpICYmIGxheWVyQ3JlYXRpb25BbGxvd2VkRm9yU3VidHJl
ZSgpKSB7CisgICAgICAgICAgICBpZiAoc193YXNGbG9hdGluZyAmJiBpc0Zsb2F0aW5nKCkpCisg
ICAgICAgICAgICAgICAgc2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKKyAgICAgICAgICAgIGVu
c3VyZUxheWVyKCk7CisgICAgICAgICAgICBpZiAocGFyZW50KCkgJiYgIW5lZWRzTGF5b3V0KCkg
JiYgY29udGFpbmluZ0Jsb2NrKCkpIHsKKyAgICAgICAgICAgICAgICBsYXllcigpLT5zZXRSZXBh
aW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnQpOworICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlz
IG9ubHkgb25lIGxheWVyIHRvIHVwZGF0ZSwgaXQgaXMgbm90IHdvcnRoIHVzaW5nIHxjYWNoZWRP
ZmZzZXR8IHNpbmNlCisgICAgICAgICAgICAgICAgLy8gd2UgYXJlIG5vdCBzdXJlIHRoZSB2YWx1
ZSB3aWxsIGJlIHVzZWQuCisgICAgICAgICAgICAgICAgbGF5ZXIoKS0+dXBkYXRlTGF5ZXJQb3Np
dGlvbnMoMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGxheWVy
KCkgJiYgbGF5ZXIoKS0+cGFyZW50KCkpIHsKKyAgICAgICAgc2V0SGFzVHJhbnNmb3JtKGZhbHNl
KTsgLy8gRWl0aGVyIGEgdHJhbnNmb3JtIHdhc24ndCBzcGVjaWZpZWQgb3IgdGhlIG9iamVjdCBk
b2Vzbid0IHN1cHBvcnQgdHJhbnNmb3Jtcywgc28ganVzdCBudWxsIG91dCB0aGUgYml0LgorICAg
ICAgICBzZXRIYXNSZWZsZWN0aW9uKGZhbHNlKTsKKyAgICAgICAgbGF5ZXIoKS0+cmVtb3ZlT25s
eVRoaXNMYXllcigpOyAvLyBjYWxscyBkZXN0cm95TGF5ZXIoKSB3aGljaCBjbGVhcnMgbV9sYXll
cgorICAgICAgICBpZiAoc193YXNGbG9hdGluZyAmJiBpc0Zsb2F0aW5nKCkpCisgICAgICAgICAg
ICBzZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUpOworICAgICAgICBpZiAoc19oYWRUcmFuc2Zvcm0p
CisgICAgICAgICAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKKyAgICB9
CisKKyAgICBpZiAobGF5ZXIoKSkgeworICAgICAgICBsYXllcigpLT5zdHlsZUNoYW5nZWQoZGlm
Ziwgb2xkU3R5bGUpOworICAgICAgICBpZiAoc19oYWRMYXllciAmJiBsYXllcigpLT5pc1NlbGZQ
YWludGluZ0xheWVyKCkgIT0gc19sYXllcldhc1NlbGZQYWludGluZykKKyAgICAgICAgICAgIHNl
dENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlYmE5ZmMyNzRmMjM4N2Y2N2Q4YWNkYTFkNmVkMjI5
ZGQxY2MwMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykg
MTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2lmbmRlZiBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0X2gKKyNkZWZpbmUgUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdF9oCisKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJMYXllcjsKKworY2xhc3MgUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCA6IHB1YmxpYyBSZW5kZXJPYmplY3QgeworcHVibGljOgorICAgIFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QoTm9kZSopOworICAgIHZpcnR1YWwgflJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QoKTsKKworICAgIC8vIENhbGxlZCBieSBSZW5kZXJPYmplY3Q6OndpbGxCZURl
c3Ryb3llZCgpIGFuZCBpcyB0aGUgb25seSB3YXkgbGF5ZXJzIHNob3VsZCBldmVyIGJlIGRlc3Ry
b3llZAorICAgIHZvaWQgZGVzdHJveUxheWVyKCk7CisKKyAgICBib29sIGhhc1NlbGZQYWludGlu
Z0xheWVyKCkgY29uc3Q7CisgICAgUmVuZGVyTGF5ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9sYXllcjsgfQorCisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29u
c3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUp
IE9WRVJSSURFOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBlbnN1cmVMYXllcigpOworCisgICAg
dmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIE9WRVJSSURFOworCitwcml2YXRlOgorICAg
IHZpcnR1YWwgYm9vbCBpc1RyYW5zZm9ybWFibGVPYmplY3QoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CisKKyAgICBSZW5kZXJMYXllciogbV9sYXllcjsKKworICAgIC8vIFVzZWQg
dG8gc3RvcmUgc3RhdGUgYmV0d2VlbiBzdHlsZVdpbGxDaGFuZ2UgYW5kIHN0eWxlRGlkQ2hhbmdl
CisgICAgc3RhdGljIGJvb2wgc193YXNGbG9hdGluZzsKKyAgICBzdGF0aWMgYm9vbCBzX2hhZExh
eWVyOworICAgIHN0YXRpYyBib29sIHNfaGFkVHJhbnNmb3JtOworICAgIHN0YXRpYyBib29sIHNf
bGF5ZXJXYXNTZWxmUGFpbnRpbmc7Cit9OworCitpbmxpbmUgUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0KQor
eworICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+aXNUcmFuc2Zvcm1hYmxlT2JqZWN0KCkp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Kj4ob2Jq
ZWN0KTsKK30KKworaW5saW5lIGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHRvUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKyAg
ICBBU1NFUlQoIW9iamVjdCB8fCBvYmplY3QtPmlzVHJhbnNmb3JtYWJsZU9iamVjdCgpKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCo+KG9i
amVjdCk7Cit9CisKKy8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4gdW5uZWNlc3Nh
cnkgY2FzdC4KK3ZvaWQgdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KGNvbnN0IFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QqKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAKaW5kZXggYTg5NWJjOTllZjE1NGIwNWUzZDM4NTMxOTRjZDM5M2VmNzZmZDIx
Yi4uZDI5NmE4MmE1MThmYmVjZmRlODAxZTllMjE4ZmMyMjI1Zjg3YmNkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgUmVu
ZGVyVmlldzo6bGF5b3V0KCkKICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAKLXZvaWQg
UmVuZGVyVmlldzo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1T
dGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29sKiB3YXNG
aXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyVmlldzo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVz
ZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWlu
ZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIC8vIElmIGEgY29udGFp
bmVyIHdhcyBzcGVjaWZpZWQsIGFuZCB3YXMgbm90IDAgb3IgdGhlIFJlbmRlclZpZXcsCiAgICAg
Ly8gdGhlbiB3ZSBzaG91bGQgaGF2ZSBmb3VuZCBpdCBieSBub3cuCkBAIC0xNzQsNyArMTc0LDcg
QEAgdm9pZCBSZW5kZXJWaWV3OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBib28KICAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZSht
X2ZyYW1lVmlldy0+c2Nyb2xsT2Zmc2V0Rm9yRml4ZWRQb3NpdGlvbigpKTsKIH0KIAotY29uc3Qg
UmVuZGVyT2JqZWN0KiBSZW5kZXJWaWV3OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYg
Z2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclZpZXc6OnB1c2hN
YXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0
b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAogewogICAg
IC8vIElmIGEgY29udGFpbmVyIHdhcyBzcGVjaWZpZWQsIGFuZCB3YXMgbm90IDAgb3IgdGhlIFJl
bmRlclZpZXcsCiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgaGF2ZSBmb3VuZCBpdCBieSBub3cuCkBA
IC0yNTQsNyArMjU0LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogCiBzdGF0aWMgaW5saW5lIGJv
b2wgaXNDb21wb3NpdGVkKFJlbmRlck9iamVjdCogb2JqZWN0KQogewotICAgIHJldHVybiBvYmpl
Y3QtPmhhc0xheWVyKCkgJiYgdG9SZW5kZXJCb3hNb2RlbE9iamVjdChvYmplY3QpLT5sYXllcigp
LT5pc0NvbXBvc2l0ZWQoKTsKKyAgICByZXR1cm4gb2JqZWN0LT5oYXNMYXllcigpICYmIHRvUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdChvYmplY3QpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsK
IH0KIAogc3RhdGljIGlubGluZSBib29sIHJlbmRlcmVyT2JzY3VyZXNCYWNrZ3JvdW5kKFJlbmRl
ck9iamVjdCogb2JqZWN0KQpAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cmVw
YWludFJlY3RhbmdsZUluVmlld0FuZENvbXBvc2l0ZWRMYXllcnMoY29uc3QgTGF5b3V0UmVjdCYg
dXIsCiAjZW5kaWYKIH0KIAotdm9pZCBSZW5kZXJWaWV3Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3Qs
IGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWlu
dChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0
JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIC8vIElmIGEgY29udGFpbmVyIHdhcyBz
cGVjaWZpZWQsIGFuZCB3YXMgbm90IDAgb3IgdGhlIFJlbmRlclZpZXcsCiAgICAgLy8gdGhlbiB3
ZSBzaG91bGQgaGF2ZSBmb3VuZCBpdCBieSBub3cuCkBAIC0zOTksMjAgKzM5OSwyMCBAQCB2b2lk
IFJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgTAogICAgICAgICByZWN0Lm1vdmUobV9mcmFtZVZpZXctPnNjcm9s
bE9mZnNldEZvckZpeGVkUG9zaXRpb24oKSk7CiAgICAgICAgIAogICAgIC8vIEFwcGx5IG91ciB0
cmFuc2Zvcm0gaWYgd2UgaGF2ZSBvbmUgKGJlY2F1c2Ugb2YgZnVsbCBwYWdlIHpvb21pbmcpLgot
ICAgIGlmICghcmVwYWludENvbnRhaW5lciAmJiBtX2xheWVyICYmIG1fbGF5ZXItPnRyYW5zZm9y
bSgpKQotICAgICAgICByZWN0ID0gbV9sYXllci0+dHJhbnNmb3JtKCktPm1hcFJlY3QocmVjdCk7
CisgICAgaWYgKCFyZXBhaW50Q29udGFpbmVyICYmIGxheWVyKCkgJiYgbGF5ZXIoKS0+dHJhbnNm
b3JtKCkpCisgICAgICAgIHJlY3QgPSBsYXllcigpLT50cmFuc2Zvcm0oKS0+bWFwUmVjdChyZWN0
KTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYg
cmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKLSAg
ICByZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgbV9s
YXllci0+c2l6ZSgpKSk7CisgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWNj
dW11bGF0ZWRPZmZzZXQsIGxheWVyKCktPnNpemUoKSkpOwogfQogCiB2b2lkIFJlbmRlclZpZXc6
OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkg
Y29uc3QKIHsKICAgICBpZiAod2FzRml4ZWQpCiAgICAgICAgICp3YXNGaXhlZCA9IGZhbHNlOwot
ICAgIHF1YWRzLmFwcGVuZChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX2xheWVyLT5zaXplKCkp
KTsKKyAgICBxdWFkcy5hcHBlbmQoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbGF5ZXIoKS0+c2l6
ZSgpKSk7CiB9CiAKIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbihS
ZW5kZXJPYmplY3QqIG9iamVjdCwgdW5zaWduZWQgb2Zmc2V0KQpAQCAtNDU3LDcgKzQ1Nyw3IEBA
IEludFJlY3QgUmVuZGVyVmlldzo6c2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNv
bnRlbnQpIGNvbnN0CiAgICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8qIGluZm8gPSBpLT5zZWNv
bmQuZ2V0KCk7CiAgICAgICAgIC8vIFJlbmRlclNlbGVjdGlvbkluZm86OnJlY3QoKSBpcyBpbiB0
aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHJlcGFpbnRDb250YWluZXIsIHNvIG1hcCB0byBwYWdlIGNv
b3JkaW5hdGVzLgogICAgICAgICBMYXlvdXRSZWN0IGN1cnJSZWN0ID0gaW5mby0+cmVjdCgpOwot
ICAgICAgICBpZiAoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBpbmZv
LT5yZXBhaW50Q29udGFpbmVyKCkpIHsKKyAgICAgICAgaWYgKFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBpbmZvLT5yZXBhaW50Q29udGFpbmVyKCkpIHsKICAg
ICAgICAgICAgIEZsb2F0UXVhZCBhYnNRdWFkID0gcmVwYWludENvbnRhaW5lci0+bG9jYWxUb0Fi
c29sdXRlUXVhZChGbG9hdFJlY3QoY3VyclJlY3QpKTsKICAgICAgICAgICAgIGN1cnJSZWN0ID0g
YWJzUXVhZC5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOyAKICAgICAgICAgfQpAQCAtNTYyLDcgKzU2
Miw3IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQs
IGludCBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBlCiAgICAgfQogCiAgICAgaWYgKGJsb2NrUmVw
YWludE1vZGUgIT0gUmVwYWludE5vdGhpbmcpCi0gICAgICAgIG1fbGF5ZXItPmNsZWFyQmxvY2tT
ZWxlY3Rpb25HYXBzQm91bmRzKCk7CisgICAgICAgIGxheWVyKCktPmNsZWFyQmxvY2tTZWxlY3Rp
b25HYXBzQm91bmRzKCk7CiAKICAgICAvLyBOb3cgdGhhdCB0aGUgc2VsZWN0aW9uIHN0YXRlIGhh
cyBiZWVuIHVwZGF0ZWQgZm9yIHRoZSBuZXcgb2JqZWN0cywgd2FsayB0aGVtIGFnYWluIGFuZAog
ICAgIC8vIHB1dCB0aGVtIGluIHRoZSBuZXcgb2JqZWN0cyBsaXN0LgpAQCAtNjQyLDcgKzY0Miw3
IEBAIHZvaWQgUmVuZGVyVmlldzo6Z2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdComIHN0YXJ0UmVu
ZGVyZXIsIGludCYgc3RhcnRPZmZzZXQsIFJlCiAKIHZvaWQgUmVuZGVyVmlldzo6Y2xlYXJTZWxl
Y3Rpb24oKQogewotICAgIG1fbGF5ZXItPnJlcGFpbnRCbG9ja1NlbGVjdGlvbkdhcHMoKTsKKyAg
ICBsYXllcigpLT5yZXBhaW50QmxvY2tTZWxlY3Rpb25HYXBzKCk7CiAgICAgc2V0U2VsZWN0aW9u
KDAsIC0xLCAwLCAtMSwgUmVwYWludE5ld01pbnVzT2xkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmgKaW5kZXggYTc2OGY3OWQ2NWY2NTI1NGQwNjFkMzE2ZGEwNzFlNzg3
YjBhNjA1MC4uNGZmYTIyOGYxZjI4YmFiYTI2YzFhM2QzMmI3YWFlNWVjM2EwMTc3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoK
IAogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVZpZXc7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFs
c2UpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wg
Zml4ZWQgPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRW
aWV3UmVjdGFuZ2xlKGNvbnN0IExheW91dFJlY3QmLCBib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsK
ICAgICAvLyBSZXBhaW50IHRoZSB2aWV3LCBhbmQgYWxsIGNvbXBvc2l0ZWQgbGF5ZXJzIHRoYXQg
aW50ZXJzZWN0IHRoZSBnaXZlbiBhYnNvbHV0ZSByZWN0YW5nbGUuCiAgICAgLy8gRklYTUU6IGlk
ZWFsbHkgd2UnZCBuZXZlciBoYXZlIHRvIGRvIHRoaXMsIGlmIGFsbCByZXBhaW50cyBhcmUgY29u
dGFpbmVyLXJlbGF0aXZlLgpAQCAtMjA0LDggKzIwNCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhh
c1JlbmRlckNvdW50ZXJzKCkgeyByZXR1cm4gbV9yZW5kZXJDb3VudGVyQ291bnQ7IH0KIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4
ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRh
aW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBS
ZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxP
YmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFu
c2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlw
LCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3Qg
UmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wg
Zml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgcmVxdWlyZXNDb2x1bW5zKGludCBkZXNpcmVkQ29sdW1uQ291bnQpIGNvbnN0
IE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
aW5nQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbElu
T25lLmNwcAppbmRleCAxZjBhNGEzOGU3MmUyMWE3ZGMzZjBhZGNkM2NhZTM2M2M4YTUxZDkyLi5j
ODljZjA1NzliN2I5YzU0NWE5ZGJhMjkyZWQwNzQ3ZDhmNjVlZWQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKQEAgLTEwNiw2ICsxMDYsNyBA
QAogI2luY2x1ZGUgIlJlbmRlclRleHRGcmFnbWVudC5jcHAiCiAjaW5jbHVkZSAiUmVuZGVyVGhl
bWUuY3BwIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lV2luLmNwcCIKKyNpbmNsdWRlICJSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0LmNwcCIKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmNwcCIK
ICNpbmNsdWRlICJSZW5kZXJWaWRlby5jcHAiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5jcHAiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25P
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0LmNwcAppbmRleCBkNjYwNTY2MTUwNzlhZWNmNzY3Y2NjYjk3NDllMTVjNjFhODViZmNm
Li5jMTY5NTNlNDNjMTFmMmViY2UxMjc2YmY0NzBlZjgzMzg4NzkzM2UzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5j
cHAKQEAgLTg4LDEyICs4OCwxMiBAQCB2b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgfQogfQogCi1M
YXlvdXRSZWN0IFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5
b3V0UmVjdCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAog
ewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdGb3JlaWdu
T2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29u
c3QKK3ZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFp
bnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0
JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0
Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyLCByZXBh
aW50UmVjdCwgZml4ZWQpOwogfQpAQCAtMTkwLDEyICsxOTAsMTIgQEAgYm9vbCBSZW5kZXJTVkdG
b3JlaWduT2JqZWN0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBib29sIC8qIGZpeGVkICovLCBib29sIC8qIHVzZVRyYW5zZm9ybXMgKi8sIFRyYW5z
Zm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wq
IHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjptYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJv
b2wgLyogZml4ZWQgKi8sIGJvb2wgLyogdXNlVHJhbnNmb3JtcyAqLywgVHJhbnNmb3JtU3RhdGUm
IHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0aGlz
LCByZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4ZWQpOwogfQogCi1jb25z
dCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OnB1c2hNYXBwaW5nVG9Db250
YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRl
ckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9iamVjdCogUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYg
Z2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OnB1c2hN
YXBwaW5nVG9Db250YWluZXIodGhpcywgYW5jZXN0b3JUb1N0b3BBdCwgZ2VvbWV0cnlNYXApOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuaAppbmRleCA4MGRkZmQ2MzA4ZGQ4ZjYzOWExNDVkMmQwNTMzZjAyNGI2ZjJiY2Nj
Li42MDI0ODJkZWRkYTJhOTBlNDM5N2M5YTlmZDAzNjIwNGFlNWEwN2M3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaApA
QCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBi
b29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0
UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CkBAIC01NCw4ICs1NCw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVz
dWx0JiwgY29uc3QgSGl0VGVzdFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBpc1NWR0ZvcmVpZ25PYmplY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFu
c2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlw
LCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2Jq
ZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBh
bmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3Rh
dGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCog
d2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9i
amVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9uZWVkc1Ry
YW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oCmluZGV4IGI5MGFiNTA4
MTA0MTEzODQxNDFjMzIzODk0NzZlM2M4NDQzNDA2NWIuLjk1YmMzNGUyYmRiZDYwMDU5MDNmYTdj
MTYwNjdkODE5MjMxMjdlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gVGhpcyBvdmVycmlkZXMgYXJlIG5lZWRlZCB0byBwcmV2ZW50IEFTU0VSVHMgb24gPHN2
Zz48c3RvcCAvPjwvc3ZnPgogICAgIC8vIFJlbmRlck9iamVjdCdzIGRlZmF1bHQgaW1wbGVtZW50
YXRpb25zIEFTU0VSVF9OT1RfUkVBQ0hFRCgpCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNDAwCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KikgY29uc3QgeyByZXR1
cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxv
d1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RC
b3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UmVjdCgpOyB9CiAgICAgdmlydHVhbCBG
bG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoKTsg
fQogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkg
Y29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCmluZGV4IGYyNmM1ZmM2
MWEzN2Y4MjA3ZDRkNjQ5YmU2ODA5ZDUyYTJmODgyNWYuLmI0YmMyMzQ1YTY1ODEyYjNiZjJlYTlj
YWRkMzc2ODY0NzlkNWZkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50Jik7CiAgICAgCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KikgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVj
dCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBM
YXlvdXRSZWN0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBub2Rl
QXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCmluZGV4IDA1N2JmZGEw
MDdlMmM2ODQzNDllM2M3M2ZlYjg2YjAxY2YzNWQzMGEuLjE3NmZhNjA3YTY0YjcyZDM2ZjE3ZWJh
NjVkNjc3YWZkNTYxYWM2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZS5jcHAKQEAgLTY5LDIyICs2OSwyMiBAQCBGbG9hdFJlY3QgUmVuZGVy
U1ZHSW5saW5lOjpyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0CiAgICAgcmV0
dXJuIEZsb2F0UmVjdCgpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNWR0lubGluZTo6Y2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclNWR0lubGluZTo6Y2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lcik7CiB9CiAKLXZvaWQgUmVuZGVy
U1ZHSW5saW5lOjpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkg
Y29uc3QKK3ZvaWQgUmVuZGVyU1ZHSW5saW5lOjpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJl
cGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6OmNv
bXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRS
ZWN0LCBmaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHSW5saW5lOjptYXBMb2NhbFRvQ29udGFp
bmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qIHVzZVRy
YW5zZm9ybXMgKi8sIGJvb2wgLyogZml4ZWQgKi8sIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1T
dGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9p
ZCBSZW5kZXJTVkdJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCAvKiB1c2VUcmFuc2Zvcm1zICovLCBib29s
IC8qIGZpeGVkICovLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFp
bmVyRmxpcE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBw
b3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9y
bVN0YXRlLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHSW5s
aW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBh
bmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citj
b25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR0lubGluZTo6cHVzaE1hcHBpbmdUb0NvbnRhaW5l
cihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5k
ZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRl
clN1cHBvcnQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIodGhpcywgYW5jZXN0b3JUb1N0b3BBdCwg
Z2VvbWV0cnlNYXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lLmgKaW5kZXggNTMzYTk5YWE2YjAxNzdlODdiYThjNzA0ZmExMTFiMTFiNzM2YzQy
OC4uNjQxOWZlN2Q0ZDU3MmYwZTdkOGU4NGZjMzJiYWZkNWMzOGU5N2JjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCkBAIC00NSwxMCArNDUs
MTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0
ZXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0gZmFs
c2UpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wg
Zml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNv
bnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25z
dCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7Cisg
ICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0g
ZmFsc2UpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFp
bmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNl
VHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZs
aXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0
LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Owog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmNwcAppbmRleCAxOGU3ZWNhY2U3YTNhM2M2OGQ4ZjVmNDA0ODhmMmY2
ZDkyYjU0ZTE1Li5mNGIxMjk1MGJhN2NkNzM3ODM4NDYxMjc2OWVlMzAxZjRmNDQxZTRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlbmRlclNWR01vZGVsT2JqZWN0
LmgiCiAKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgorI2luY2x1ZGUgIlJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNW
R1Jlc291cmNlc0NhY2hlLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgpAQCAtNDUs
MjIgKzQ2LDIyIEBAIFJlbmRlclNWR01vZGVsT2JqZWN0OjpSZW5kZXJTVkdNb2RlbE9iamVjdChT
VkdTdHlsZWRFbGVtZW50KiBub2RlKQogewogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNWR01vZGVs
T2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmpl
Y3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBv
cnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIp
OwogfQogCi12b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVw
YWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiBy
ZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6
OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0
CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQodGhp
cywgcmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKIH0KIAotdm9pZCBSZW5k
ZXJTVkdNb2RlbE9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCAvKiBmaXhlZCAqLywgYm9vbCAvKiB1c2VUcmFuc2Zv
cm1zICovLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxp
cE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6
Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCAvKiBmaXhlZCAqLywgYm9vbCAvKiB1c2VUcmFuc2Zvcm1zICovLCBUcmFu
c2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29s
KiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29u
dGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7
CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OnB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9w
QXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9i
amVjdCogUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3Qg
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0
cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0
OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKHRoaXMsIGFuY2VzdG9yVG9TdG9wQXQsIGdlb21ldHJ5
TWFwKTsKIH0KQEAgLTY4LDcgKzY5LDcgQEAgY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdN
b2RlbE9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3gKIC8vIENv
cGllZCBmcm9tIFJlbmRlckJveCwgdGhpcyBtZXRob2QgbGlrZWx5IHJlcXVpcmVzIGZ1cnRoZXIg
cmVmYWN0b3JpbmcgdG8gd29yayBlYXNpbHkgZm9yIGJvdGggU1ZHIGFuZCBDU1MgQm94IE1vZGVs
IGNvbnRlbnQuCiAvLyBGSVhNRTogVGhpcyBtYXkgYWxzbyBuZWVkIHRvIG1vdmUgaW50byBTVkdS
ZW5kZXJTdXBwb3J0IGFzIHRoZSBSZW5kZXJCb3ggdmVyc2lvbiBkZXBlbmRzCiAvLyBvbiBib3Jk
ZXJCb3VuZGluZ0JveCgpIHdoaWNoIFNWRyBSZW5kZXJCb3ggc3ViY2xhc2VzIChsaWtlIFNWR1Jl
bmRlckJsb2NrKSBkbyBub3QgaW1wbGVtZW50LgotTGF5b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9i
amVjdDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIExheW91dFBvaW50KikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyU1ZHTW9k
ZWxPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFBvaW50KikgY29uc3QKIHsKICAgICBMYXlvdXRS
ZWN0IGJveCA9IGVuY2xvc2luZ0xheW91dFJlY3QocmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0
ZXMoKSk7CiAgICAgYWRqdXN0UmVjdEZvck91dGxpbmVBbmRTaGFkb3coYm94KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAppbmRl
eCAwZDgxOTI2MDkzZjZiZjc0ZWRjMDhjNDhjMjg3OTc3NGE0NGIyZDYwLi4xNWZiNDlhZjYwY2Fm
YTlmMjM2YWY4M2U4YjZkMjc5YTkxYzliOGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCkBAIC01MSwxNSArNTEsMTUgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsK
LSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxz
ZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRQb2ludCopIGNv
bnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBm
aXhlZCA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0
bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lciwgTGF5b3V0UG9pbnQqKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIEFw
cGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhl
ZCA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGlu
Z1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0
LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJv
b2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRh
aW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBp
bmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRv
U3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSog
bmV3U3R5bGUpOwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVu
Y2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDcwN2RhODg2ZTJjYTk4YTFiNjk2
ZWVjNGIyNjAyOGY2NjY2ZmZkNWUuLjZhMWVlMGY3YWJkZjc4NTE5NjZkMzA3N2YyNWI4ZWM5Nzdm
MDhlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmNwcApAQCAtMzY5LDEyICszNjksMTIgQEAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBSZW5kZXJT
VkdSb290Ojpsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3QKICAgICByZXR1cm4gbV9sb2Nh
bFRvUGFyZW50VHJhbnNmb3JtOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNWR1Jvb3Q6OmNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJTVkdSb290OjpjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyKTsKIH0KIAotdm9pZCBSZW5kZXJT
VkdSb290Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29u
c3QKK3ZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50
UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICAvLyBBcHBseSBvdXIgbG9jYWwgdHJhbnNm
b3JtcyAoZXhjZXB0IGZvciB4L3kgdHJhbnNsYXRpb24pLCB0aGVuIG91ciBzaGFkb3csIAogICAg
IC8vIGFuZCB0aGVuIGNhbGwgUmVuZGVyQm94J3MgbWV0aG9kIHRvIGhhbmRsZSBhbGwgdGhlIG5v
cm1hbCBDU1MgQm94IG1vZGVsIGJpdHMKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIFJlbmRlclNW
R1Jvb3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udAogLy8gVGhpcyBtZXRob2QgZXhwZWN0cyBsb2NhbCBDU1MgYm94IGNvb3JkaW5h
dGVzLgogLy8gQ2FsbGVycyB3aXRoIGxvY2FsIFNWRyB2aWV3cG9ydCBjb29yZGluYXRlcyBzaG91
bGQgZmlyc3QgYXBwbHkgdGhlIGxvY2FsVG9Cb3JkZXJCb3hUcmFuc2Zvcm0KIC8vIHRvIGNvbnZl
cnQgZnJvbSBTVkcgdmlld3BvcnQgY29vcmRpbmF0ZXMgdG8gbG9jYWwgQ1NTIGJveCBjb29yZGlu
YXRlcy4KLXZvaWQgUmVuZGVyU1ZHUm9vdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zv
cm1zLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9y
Tm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHUm9vdDo6bWFwTG9jYWxU
b0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBi
b29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1T
dGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewog
ICAgIEFTU0VSVCghZml4ZWQpOyAvLyBXZSBzaG91bGQgaGF2ZSBubyBmaXhlZCBjb250ZW50IGlu
IHRoZSBTVkcgcmVuZGVyaW5nIHRyZWUuCiAgICAgQVNTRVJUKHVzZVRyYW5zZm9ybXMpOyAvLyBt
YXBwaW5nIGEgcG9pbnQgdGhyb3VnaCBTVkcgdy9vIHJlc3BlY3RpbmcgdHJhc25mb3JtcyBpcyB1
c2VsZXNzLgpAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6bWFwTG9jYWxU
b0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwKICAgICBS
ZW5kZXJSZXBsYWNlZDo6bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBmaXhl
ZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcCwgd2Fz
Rml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR1Jvb3Q6OnB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9w
QXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9i
amVjdCogUmVuZGVyU1ZHUm9vdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYg
Z2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKGFuY2VzdG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFwKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKaW5kZXggOWFhN2U3YzE4
NmFlNDg3NjkwYzQwYWFjOTA1ZmY1Y2MwZDAyMzc0NC4uZjEzOGY2NDkxZmNlYTRjMTU5YzM3NzVl
NzVmNDEwMTZlOTI0YzY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmgKQEAgLTkyLDExICs5MiwxMSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBi
b29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNv
bnN0IEhpdFRlc3RQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVG
bG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdDsKKyAgICB2aXJ0dWFs
IExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQp
IGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3Jt
cywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9
IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wg
Zml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNv
bnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlN
YXAmKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxl
YWYoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hp
bGRyZW4oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCBmNTE0ZTIxNTdjNDVjNjlhZjUzNmFkMDYx
MzdiMzc3ODM0OTQ4YTk0Li43MGQ4YzM1ZjgxODljOTUwY2RiMzlmMGZmZGQxNTRiZmY4ZTg5M2Y5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAK
QEAgLTk0LDI5ICs5NCwyOSBAQCBjb25zdCBSZW5kZXJTVkdUZXh0KiBSZW5kZXJTVkdUZXh0Ojps
b2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IoY29uc3QgUmVuZGVyT2JqZQogICAgIHJldHVybiB0
b1JlbmRlclNWR1RleHQoc3RhcnQpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNWR1RleHQ6OmNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJTVkdUZXh0OjpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyKTsKIH0KIAotdm9pZCBSZW5k
ZXJTVkdUZXh0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lk
IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBj
b25zdAogewogICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IHJlY3Q7CiAgICAgY29tcHV0ZUZs
b2F0UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsK
ICAgICByZWN0ID0gZW5jbG9zaW5nTGF5b3V0UmVjdChyZXBhaW50UmVjdCk7CiB9CiAKLXZvaWQg
UmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4
ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1RleHQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50
KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYg
cmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6
Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lciwgcmVwYWlu
dFJlY3QsIGZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdUZXh0OjptYXBMb2NhbFRvQ29udGFp
bmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qIGZpeGVk
ICovLCBib29sIC8qIHVzZVRyYW5zZm9ybXMgKi8sIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1T
dGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9p
ZCBSZW5kZXJTVkdUZXh0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgLyogZml4ZWQgKi8sIGJvb2wgLyogdXNlVHJh
bnNmb3JtcyAqLywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5l
ckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9y
dDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0aGlzLCByZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1T
dGF0ZSwgd2FzRml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR1RleHQ6
OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2Vz
dG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0
IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHVGV4dDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25z
dCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9t
ZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBv
cnQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIodGhpcywgYW5jZXN0b3JUb1N0b3BBdCwgZ2VvbWV0
cnlNYXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQu
aAppbmRleCA5M2NiNjRmOGZiMmU3NGVlYjI4NmFlYmI0NjJkNzlmMmYxYmNkNmRkLi4wMmMzYzQ4
OGRhNTQ1YmU3OTM2ZThmMDFiYTM3ZjUyYTM5NDgyYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaApAQCAtNzEsMTIgKzcxLDEyIEBAIHByaXZhdGU6
CiAKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJv
b2wqIHdhc0ZpeGVkKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQg
PSBmYWxzZSkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBi
b29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RG
b3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExh
eW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNv
bnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3Jtcywg
Ym9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFw
cGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJC
b3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4
ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRh
aW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAm
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0
KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbEJlRGVzdHJveWVkKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCAwYmZiMGE1Mjc5Yzg4ODQ5NDY1ZWRm
MmY5NTFiZjhhZTAzNDRkYWMxLi41YmM1NWQ3YjYzZTBkZjY1ZjNmYmM0OThmMWQyN2U2ZGNmMjk5
ZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1
cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3Vw
cG9ydC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1MYXlv
dXRSZWN0IFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNv
bnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lcikKK0xheW91dFJlY3QgU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCiB7CiAgICAgLy8gUmV0dXJuIGVhcmx5IGZvciBh
bnkgY2FzZXMgd2hlcmUgd2UgZG9uJ3QgYWN0dWFsbHkgcGFpbnQKICAgICBpZiAob2JqZWN0LT5z
dHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAhb2JqZWN0LT5lbmNsb3NpbmdMYXll
cigpLT5oYXNWaXNpYmxlQ29udGVudCgpKQpAQCAtNTksNyArNTksNyBAQCBMYXlvdXRSZWN0IFNW
R1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRl
ck9iamVjdCogbwogICAgIHJldHVybiBlbmNsb3NpbmdMYXlvdXRSZWN0KHJlcGFpbnRSZWN0KTsK
IH0KIAotdm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChj
b25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpCit2b2lkIFNWR1Jl
bmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVj
dCogb2JqZWN0LCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBG
bG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKQogewogICAgIGNvbnN0IFNWR1JlbmRl
clN0eWxlKiBzdmdTdHlsZSA9IG9iamVjdC0+c3R5bGUoKS0+c3ZnU3R5bGUoKTsKICAgICBpZiAo
Y29uc3QgU2hhZG93RGF0YSogc2hhZG93ID0gc3ZnU3R5bGUtPnNoYWRvdygpKQpAQCAtNzEsNyAr
NzEsNyBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50
KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBSZQogICAgIG9iamVjdC0+cGFyZW50KCktPmNv
bXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBm
aXhlZCk7CiB9CiAKLXZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcihj
b25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgYm9vbCogd2FzRml4ZWQp
Cit2b2lkIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVy
T2JqZWN0KiBvYmplY3QsIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgYm9vbCogd2FzRml4ZWQpCiB7CiAg
ICAgdHJhbnNmb3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0ob2JqZWN0LT5sb2NhbFRvUGFyZW50VHJh
bnNmb3JtKCkpOwogCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6bWFw
TG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyQm94CiAg
ICAgcGFyZW50LT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZhbHNlLCB0
cnVlLCB0cmFuc2Zvcm1TdGF0ZSwgUmVuZGVyT2JqZWN0OjpEb05vdEFwcGx5Q29udGFpbmVyRmxp
cCwgd2FzRml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFNWR1JlbmRlclN1cHBvcnQ6
OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0
IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1h
cCYgZ2VvbWV0cnlNYXApCitjb25zdCBSZW5kZXJPYmplY3QqIFNWR1JlbmRlclN1cHBvcnQ6OnB1
c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5
TWFwJiBnZW9tZXRyeU1hcCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGFuY2VzdG9yVG9TdG9wQXQs
IGFuY2VzdG9yVG9TdG9wQXQgIT0gb2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaAppbmRleCBmYTk2MGYwNWU2OWUwMmExYTVlYmIx
ODIyMDY2MmZiN2E3NTc5MDgzLi44Y2JmZDM2YjFhNjc2NjE5NmQ1ZDExZjAyM2Q3ODczOTk3YTBm
ZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1
cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBv
cnQuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBJbWFnZUJ1ZmZl
cjsKIGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyR2VvbWV0cnlNYXA7
CitjbGFzcyBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OwogY2xhc3MgUmVuZGVyT2JqZWN0Owog
Y2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBSZW5kZXJTVkdSb290OwpAQCAtNjIsMTAgKzYzLDEw
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwYWludEluZm9JbnRlcnNlY3RzUmVwYWludFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiBsb2NhbFJlcGFpbnRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGxvY2FsVHJhbnNmb3JtLCBjb25zdCBQYWludEluZm8mKTsKIAogICAgIC8vIEltcG9ydGFu
dCBmdW5jdGlvbnMgdXNlZCBieSBuZWFybHkgYWxsIFNWRyByZW5kZXJlcnMgY2VudHJhbGl6aW5n
IGNvb3JkaW5hdGUgdHJhbnNmb3JtYXRpb25zIC8gcmVwYWludCByZWN0IGNhbGN1bGF0aW9ucwot
ICAgIHN0YXRpYyBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0
IFJlbmRlck9iamVjdCosIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKTsK
LSAgICBzdGF0aWMgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJP
YmplY3QqLCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0
JiwgYm9vbCBmaXhlZCk7Ci0gICAgc3RhdGljIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25z
dCBSZW5kZXJPYmplY3QqLCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
VHJhbnNmb3JtU3RhdGUmLCBib29sKiB3YXNGaXhlZCA9IDApOwotICAgIHN0YXRpYyBjb25zdCBS
ZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21l
dHJ5TWFwJik7CisgICAgc3RhdGljIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJl
cGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiwgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVw
YWludENvbnRhaW5lcik7CisgICAgc3RhdGljIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFp
bnQoY29uc3QgUmVuZGVyT2JqZWN0KiwgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCk7CisgICAgc3RhdGljIHZvaWQgbWFw
TG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqLCBSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIGJvb2wqIHdhc0ZpeGVk
ID0gMCk7CisgICAgc3RhdGljIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRh
aW5lcihjb25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpOwogCiAgICAgLy8gU2hhcmVk
IGJldHdlZW4gU1ZHIHJlbmRlcmVycyBhbmQgcmVzb3VyY2VzLgogICAgIHN0YXRpYyB2b2lkIGFw
cGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5
bGUqLCBjb25zdCBSZW5kZXJPYmplY3QqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153116</attachid>
            <date>2012-07-18 15:49:03 -0700</date>
            <delta_ts>2012-08-23 08:23:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86022-20120718184902.patch</filename>
            <type>text/plain</type>
            <size>135664</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyOTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTZlYjhmNzQ3M2ZlYmMz
N2E3NzM3YmM2YTUyYzAyNmFmYjY1N2M3MS4uNDQwZDBhZWIyZDA0MmM4MTZjZDZiZjljMjRiOWRk
YzgwMTY1YjU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyNiBAQAorMjAxMi0wNy0xOCAgRmxv
cmluIE1hbGl0YSAgPGZtYWxpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZmFjdG9yIGxh
eWVyLXJlbGF0ZWQgbG9naWMgb3V0IG9mIFJlbmRlckJveE1vZGVsT2JqZWN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjAyMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZXh0cmFjdHMg
dGhlIGxheWVyLXJlbGF0ZWQgbG9naWMgaW50byBhIGRlZGljYXRlZCBjbGFzcworICAgICAgICAo
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCkgYW5kIHJlZmFjdG9ycyBkZXBlbmRlbnQgY29kZSB0
byBtYWtlIHVzZQorICAgICAgICBvZiB0aGUgbmV3IHR5cGUgaW5zdGVhZCBvZiBSZW5kZXJCb3hN
b2RlbE9iamVjdC4gVGhpcyBpcyBpbiBwcmVwYXJhdGlvbgorICAgICAgICBvZiBhZGRpbmcgbm9u
LVJlbmRlckJveE1vZGVsT2JqZWN0IGxheWVyIHN1cHBvcnQuCisKKyAgICAgICAgQWxsIG1ldGhv
ZHMgdGhhdCB3ZXJlIHVzaW5nIFJlbmRlckJveE1vZGVsT2JqZWN0IGZvciBsYXllci1yZWxhdGVk
CisgICAgICAgIGZ1bmN0aW9uYWxpdHkgYXJlIHVwZGF0ZWQgdG8gd29yayB3aXRoIFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QKKyAgICAgICAgaW5zdGVhZCAoYSBSZW5kZXJMYXllcidzIHJlbmRl
cmVyKCkgY2FuIG5vIGxvbmdlciBiZSBhc3N1bWVkIHRvIGJlCisgICAgICAgIGEgUmVuZGVyQm94
TW9kZWxPYmplY3QpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czogcmVmYWN0b3Jpbmcgd2l0aCBu
byBiZWhhdmlvciBjaGFuZ2VzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXlvdXRSZXBhaW50ZXIpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCUi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2VsZWN0aW9uR2FwUmVjdHNGb3JS
ZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpyZWN0V2l0aE91dGxpbmVG
b3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAg
KFJlbmRlckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6ZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChSZW5kZXJCb3gpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6On5SZW5kZXJCb3hNb2RlbE9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6d2lsbEJlRGVzdHJveWVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKFJl
bmRlckJveE1vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlN
YXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6OnB1c2hNYXBwaW5n
c1RvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6OnBvcE1h
cHBpbmdzVG9BbmNlc3Rvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFw
Lmg6CisgICAgICAgIChSZW5kZXJHZW9tZXRyeU1hcCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6
cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxp
bmU6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxp
bmU6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5l
OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmg6CisgICAgICAgIChSZW5kZXJJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb21wdXRlUmVwYWludFJlY3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNoZWNrQ29udGFpbmluZ0Jsb2NrQ2hhaW5Gb3JQYWdpbmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzUG9zaXRpb25lZENvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aGFzQW5jZXN0b3JXaXRoRmlsdGVyT3V0c2V0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsVG8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJlbmRlckxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZW5kZXJlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjpyZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0
ZUJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXBh
aW50T25Db21wb3NpdGluZ0NoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbkZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0TWFya2VyOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKFJlbmRlckxpc3RNYXJrZXIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjphZGRMYXllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZW1vdmVMYXllcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0Ojptb3ZlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6ZmluZE5leHRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmVu
Y2xvc2luZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2V0TGF5ZXJO
ZWVkc0Z1bGxSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2V0TGF5
ZXJOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29udGFpbmVyRm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnRVc2luZ0NvbnRhaW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpyZXBhaW50UmVjdGFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkanVzdFN0eWxlRGlmZmVyZW5jZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWlu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVyUXVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2FsVG9Db250YWluZXJQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbnRhaW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmlzQ29tcG9zaXRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmlzVHJhbnNmb3JtYWJsZU9iamVjdCk6CisgICAgICAgIChSZW5kZXJPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAgIChSZW5k
ZXJSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlbGVjdGlvbkluZm9CYXNlOjpyZXBhaW50Q29udGFp
bmVyKToKKyAgICAgICAgKFJlbmRlclNlbGVjdGlvbkluZm9CYXNlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxl
Q2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGFibGVDZWxsOjpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKFJlbmRlclRhYmxlQ2VsbCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ29sOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmg6CisgICAgICAgIChSZW5kZXJUYWJsZUNvbCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlUm93OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93Lmg6CisgICAgICAgIChSZW5kZXJUYWJsZVJvdyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0Lmg6CisgICAgICAgIChSZW5kZXJUZXh0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3Q6On5SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OmRlc3Ryb3lMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjplbnN1cmVMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpoYXNTZWxmUGFpbnRpbmdM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Ojp3aWxs
QmVEZXN0cm95ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3Q6OmxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVmlldzo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWaWV3OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Omlz
Q29tcG9zaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpjb21wdXRlUmVjdEZv
clJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclZpZXc6OnNlbGVjdGlvbkJvdW5kcyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmll
dzo6Y2xlYXJTZWxlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6Cisg
ICAgICAgIChSZW5kZXJWaWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5P
bmUuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdGb3JlaWdu
T2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdGb3JlaWduT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oOgorICAgICAg
ICAoUmVuZGVyU1ZHRm9yZWlnbk9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdHcmFkaWVudFN0b3AuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hp
ZGRlbkNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6Y2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpjb21w
dXRlRmxvYXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxp
bmU6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5s
aW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZS5oOgorICAgICAgICAoUmVuZGVyU1ZHSW5saW5lKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR01vZGVsT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZv
clJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om1hcExv
Y2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6
OnB1c2hNYXBwaW5nVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9k
ZWxPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAgIChSZW5kZXJTVkdNb2RlbE9iamVj
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBh
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Om1hcExvY2FsVG9Db250YWlu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6cHVzaE1hcHBpbmdUb0NvbnRh
aW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CisgICAgICAg
IChSZW5kZXJTVkdSb290KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZVJl
Y3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmNvbXB1dGVG
bG9hdFJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6Om1h
cExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6cHVz
aE1hcHBpbmdUb0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0Lmg6CisgICAgICAgIChSZW5kZXJTVkdUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3VwcG9y
dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoU1ZHUmVuZGVyU3VwcG9ydCk6CisKIDIwMTItMDctMTggIFN0ZXZlIFZhbkRl
Qm9nYXJ0ICA8dmFuZGVib0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hyb21lL1NraWE6IFBE
RiBwcmludCBvdXRwdXQgZG9lcyBub3QgaGF2ZSBjbGlja2FibGUgbGlua3MuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDcyZjdiMmM3ZmVjYmMzM2M1ZmJmZDdjZGZhYzQ2MjgxZDVhZDUzZWEuLjUy
YTQ5NzMyZmRkZjQxNWIwMGY1YjZiZmM0MGU2ZjRiZDZlNTBhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xNDI0LDYgKzE0MjQsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVy
VGV4dEZyYWdtZW50LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKyAgICByZW5k
ZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVy
VHJlZUFzVGV4dC5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKICAgICByZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggM2Vi
OTQzOTkxZDdlZjM3YzJjMDk0YWEzNzI4MDAwNzczMmY5OTA0OC4uZThlNjViNWFkMzIyNDE3NWI5
ODUyNmZkZjM4OTIyMmFlMDc4NDQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0zOTk5LDYgKzM5OTksOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Lmgg
XAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuaCBcCiAJU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAzMjQ0YmJjMDQw
NDdmNTg1YTE4YjYxYjg4OTFjMTQyMzI0ZmE4ZDIyLi40ZDY4M2JmMzhmYjUzYzZlMTdkYmM0OTE4
ZTJmY2MyOGYwNDczZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTExNzAsNiArMTE3MCw3IEBAIFNPVVJD
RVMgKz0gXAogICAgIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIFwK
ICAgICByZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcCBcCiAgICAgcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcCBcCisgICAgcmVuZGVyaW5nL1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qu
Y3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgXAogICAgIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgXApAQCAt
MjMzNyw2ICsyMzM4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRleHRG
cmFnbWVudC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVyVGV4dC5oIFwKICAgICByZW5kZXJpbmcv
UmVuZGVyVGhlbWUuaCBcCisgICAgcmVuZGVyaW5nL1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qu
aCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuaCBcCiAgICAgcmVuZGVyaW5nL1Jl
bmRlclZpZGVvLmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJWaWV3LmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCA5ZWZiMmM3N2FjM2VlZDcyNTNlZmViODMwYzc4NjYxZjk2NTNkZjU0Li5hZDA2
ZTY5MGYwMjY4NzYwMTIwNTM4NzEyMzcxYzVkNDI2ZmExY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGUyMXZpc2l0
ZWREZXBlbmRlbnRDb2xvckVpCiBfX1pOSzdXZWJDb3JlMTFTY3JpcHRWYWx1ZTlnZXRTdHJpbmdF
UE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTEyUmVuZGVyT2Jq
ZWN0MTRlbmNsb3NpbmdMYXllckV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNWxvY2Fs
VG9BYnNvbHV0ZUVSS05TXzEwRmxvYXRQb2ludEViYgotX19aTks3V2ViQ29yZTEyUmVuZGVyT2Jq
ZWN0MjBsb2NhbFRvQ29udGFpbmVyUXVhZEVSS05TXzlGbG9hdFF1YWRFUE5TXzIwUmVuZGVyQm94
TW9kZWxPYmplY3RFYlBiCitfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyMGxvY2FsVG9Db250
YWluZXJRdWFkRVJLTlNfOUZsb2F0UXVhZEVQTlNfMjVSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
RWJQYgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dEViCiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QzOXBpeGVsU25hcHBlZEFic29sdXRlQ2xp
cHBlZE92ZXJmbG93UmVjdEV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3Q3Y2hpbGRBdEVq
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggMDlkOTcwZjFmOWZkZDQwNjljNjliMGIyMWYxODRkNmY0ZGFl
OWM1Ni4uOTBhNjZiMTUwM2JiYjRlYjM4YTczMzEyZDg4MmE4ZDljNzgyMTU0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtNTY0LDYgKzU2NCw3IEBACiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRl
clBhcnQuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgnLAogICAg
ICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJUZXh0LmgnLAorICAgICAgICAgICAgJ3JlbmRlcmlu
Zy9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9S
ZW5kZXJUcmVlQXNUZXh0LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJWaWV3Lmgn
LAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaCcsCkBAIC00ODA3LDYgKzQ4
MDgsNyBAQAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oJywKICAgICAg
ICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5jcHAnLAogICAgICAgICAgICAgJ3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3Bw
JywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVmlkZW8uaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDE5YmUwNTZkMWQ1NDA5MzU5
OTcyOTkyODE5ZjMzMWE0ZjU4OGE2YWEuLjRlYTk4MTI1MzFjMDRlOTY5ODJlYTEwOWM2NWUyMzMz
MzQ5YWQ3ODIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCkBAIC00MzY0OSw2ICs0MzY0OSw2MiBAQAogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5h
bWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlxyZW5kZXJpbmdcUmVuZGVyVHJlZUFzVGV4dC5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDkzYmUyNzUwNDkxMGI4YjA5NGY4YjkxMzgxYzA3ZTc4NmYyNGEwZjcu
LjJiMDkyNzc3MGIzODgzYmFkMDljM2I4NWJmOTY2NTliNGU3NTIxZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMTMsNiAr
MTAxMyw4IEBACiAJCTNBQjAyRDJCMTJENEY5MTYwMEZCQjY5NCAvKiBTdG9yYWdlVHJhY2tlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQUIwMkQy
OTEyRDRGOTE2MDBGQkI2OTQgLyogU3RvcmFnZVRyYWNrZXIuY3BwICovOyB9OwogCQkzQUMzNjgw
MDEyRUY3QTA5MDA2QTNENkYgLyogU3RvcmFnZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNBQzM2N0ZFMTJFRjdBMDkwMDZBM0Q2
RiAvKiBTdG9yYWdlVHJhY2tlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTNBQzY0OEIyMTI5RTE0NjUwMEMzRUIyNSAvKiBFZGl0aW5n
Qm91bmRhcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDNBQzY0OEIxMTI5RTE0NjUwMEMzRUIyNSAvKiBFZGl0aW5nQm91bmRhcnkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzQzI0NEZFQUEzNzVBQzYz
M0Y4OEJFNkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0MyNDRGRTRBMzc1QUM2MzNGODhCRTZGIC8q
IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkzQzI0NEZFQkEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzQzI0NEZFNUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdC5jcHAgKi87IH07CiAJCTQxMDAyQ0NEMEY2NkVERUYwMDlFNjYwRCAvKiBTY3Jp
cHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAq
LzsgfTsKIAkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkND
QzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLzsgfTsKIAkJNDEw
QjdFNzIxMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMEI3RTcxMTA0NUZBQjAw
MEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi87IH07CkBAIC04MDU2LDYgKzgw
NTgsOCBAQAogCQkzQUIwMkQyOTEyRDRGOTE2MDBGQkI2OTQgLyogU3RvcmFnZVRyYWNrZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZVRyYWNrZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzQUMzNjdGRTEyRUY3QTA5MDA2QTNENkYg
LyogU3RvcmFnZVRyYWNrZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3RvcmFnZVRyYWNrZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
M0FDNjQ4QjExMjlFMTQ2NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0aW5nQm91bmRhcnkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJM0MyNDRGRTRBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzQzI0NEZF
NUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwMDJDQ0IwRjY2RURFRjAwOUU2
NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyog
SlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjEyODQsNiArMjEyODgsOCBAQAogCQkJCUJDRUE0ODRCMDk3RDkzMDIwMDk0QzlFNCAv
KiBSZW5kZXJUaGVtZS5oICovLAogCQkJCUJDRUE0ODQ4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJUaGVtZU1hYy5oICovLAogCQkJCUJDRUE0ODQ5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJU
aGVtZU1hYy5tbSAqLywKKwkJCQkzQzI0NEZFNUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdC5jcHAgKi8sCisJCQkJM0MyNDRGRTRBMzc1QUM2MzNGODhCRTZGIC8q
IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuaCAqLywKIAkJCQk5Mzk1NUE0MjAzRDcyOTMyMDA4
NjM1Q0UgLyogUmVuZGVyVHJlZUFzVGV4dC5jcHAgKi8sCiAJCQkJOTM5NTVBNDEwM0Q3MjkzMjAw
ODYzNUNFIC8qIFJlbmRlclRyZWVBc1RleHQuaCAqLywKIAkJCQlFNEI0MUUzMzBDQkZCNjA5MDBB
RjJFQ0UgLyogUmVuZGVyVmlkZW8uY3BwICovLApAQCAtMjQ0OTEsNiArMjQ0OTcsNyBAQAogCQkJ
CUJDRUE0ODhFMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUZXh0RnJhZ21lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRUE0ODhBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4ODcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1l
TWFjLmggaW4gSGVhZGVycyAqLywKKwkJCQkzQzI0NEZFQUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5OEMwODI0
NUU1OTAwMUU5QUJDIC8qIFJlbmRlclRyZWVBc1RleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0
NDYxNDUyMENENjhBMzUwMEZBREE3NSAvKiBSZW5kZXJWaWRlby5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNFQTQ4NjgwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclZpZXcuaCBpbiBIZWFkZXJzICov
LApAQCAtMjc2NzUsNiArMjc2ODIsNyBAQAogCQkJCUJDRUE0ODg5MDk3RDkzMDIwMDk0QzlFNCAv
KiBSZW5kZXJUaGVtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg4ODA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUFENTA4
MjQ1RTU5MDAxRTlBQkMgLyogUmVuZGVyVHJlZUFzVGV4dC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkzQzI0NEZFQkEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTQ1MTBDRDY4QTM1MDBGQURBNzUgLyogUmVuZGVy
VmlkZW8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NjcwOTdEOTMwMjAwOTRDOUU0IC8q
IFJlbmRlclZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MURGRTUwQTE1Mzc2QjAwQjEy
QTY4IC8qIFJlbmRlcldpZGdldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuaAppbmRleCA1NzQwMGZhZWJmN2IyMGExNjU0Yzg5YTgx
ZGRiY2IzZjE5MzVmZmIwLi41Zjk2ZmRjMGY0NmM0NGFhNDg0MzU5MzZiZDM4NzZkMzlmYzIxYmQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5oCkBAIC0zMCw4
ICszMCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdDsKIGNsYXNzIFJlbmRlck9iamVjdDsKLWNsYXNzIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OwogCiBjbGFzcyBMYXlvdXRSZXBhaW50ZXIgewogcHVibGljOgpAQCAtNDQsNyArNDQsNyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyT2JqZWN0JiBtX29iamVjdDsKLSAgICBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogbV9yZXBhaW50Q29udGFpbmVyOworICAgIFJlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QqIG1fcmVwYWludENvbnRhaW5lcjsKICAgICAvLyBXZSBzdG9yZSB0aGVz
ZSB2YWx1ZXMgYXMgTGF5b3V0UmVjdHMsIGJ1dCB0aGUgZmluYWwgaW52YWxpZGF0aW9ucyB3aWxs
IGJlIHBpeGVsIHNuYXBwZWQKICAgICBMYXlvdXRSZWN0IG1fb2xkQm91bmRzOwogICAgIExheW91
dFJlY3QgbV9vbGRPdXRsaW5lQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJSLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaAppbmRl
eCA0OWY5YjVlNmNjMjBlOTQ5ZjY2MDYxY2JkYWUzYTFiMzYwZWMzODUwLi43MDliMTU2ZmQ2YTc3
NjQ2OGQ1Y2VmODNmMzI5ZTkwZmQzOTZlOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQlIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QlIuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyQlIiOyB9CiAgCi0gICAgdmlydHVh
bCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiAvKnJlcGFpbnRDb250YWluZXIqLywgYm9vbCAvKmNsaXBUb1Zpc2libGVDb250ZW50Ki8pIHsg
cmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25S
ZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiAvKnJlcGFpbnRDb250YWlu
ZXIqLywgYm9vbCAvKmNsaXBUb1Zpc2libGVDb250ZW50Ki8pIE9WRVJSSURFIHsgcmV0dXJuIExh
eW91dFJlY3QoKTsgfQogCiAgICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1bnNpZ25lZCAvKmZyb20q
LywgdW5zaWduZWQgLypsZW4qLywgY29uc3QgRm9udCYsIGZsb2F0IC8qeFBvcyovLCBIYXNoU2V0
PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qID0gMCAvKmZhbGxiYWNrRm9udHMqLyAsIEdseXBoT3Zl
cmZsb3cqID0gMCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgZmxvYXQgd2lkdGgo
dW5zaWduZWQgLypmcm9tKi8sIHVuc2lnbmVkIC8qbGVuKi8sIGZsb2F0IC8qeHBvcyovLCBib29s
ID0gZmFsc2UgLypmaXJzdExpbmUqLywgSGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0YSo+KiA9
IDAgLypmYWxsYmFja0ZvbnRzKi8sIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3QgeyByZXR1cm4g
MDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggOTRjZDc0
OWMxOTY1Y2U0MGFhZTVjNzVhOGExNGM1YjQyMDE1ZGUwYy4uZDlkOTQwZDkzNGViYTA4NzA0NjFi
YTIxZGJkOGY4ZTllMTA1YmMyYSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCkBAIC0zMjA2LDcgKzMyMDYsNyBAQCBib29sIFJlbmRlckJsb2NrOjppc1NlbGVjdGlv
blJvb3QoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotR2FwUmVjdHMgUmVuZGVyQmxv
Y2s6OnNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lcikKK0dhcFJlY3RzIFJlbmRlckJsb2NrOjpzZWxlY3Rpb25HYXBSZWN0c0Zv
clJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikKIHsK
ICAgICBBU1NFUlQoIW5lZWRzTGF5b3V0KCkpOwogCkBAIC02NTg5LDcgKzY1ODksNyBAQCB2b2lk
IFJlbmRlckJsb2NrOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9v
bCogd2FzRml4ZWQpIGNvbnN0CiAgICAgICAgIHF1YWRzLmFwcGVuZChSZW5kZXJCb3g6OmxvY2Fs
VG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKSwgZmFsc2Us
IHdhc0ZpeGVkKSk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyQmxvY2s6OnJlY3RXaXRoT3V0bGlu
ZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91
dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJCbG9jazo6cmVjdFdp
dGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0
IHIoUmVuZGVyQm94OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIs
IG91dGxpbmVXaWR0aCkpOwogICAgIGlmIChpc0Fub255bW91c0Jsb2NrQ29udGludWF0aW9uKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDcxNDE2YTEwMzZhMjE1
OTkyMzdlYWM4YTNiZmJiN2Q5MmEzM2I3ZDAuLjdlZDkyNDAxNjY5YTk3OGRlYjI2MTEzMjg4ZmUz
OGYwYzQzODk4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0y
MDUsNyArMjA1LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb250YWluc05vblplcm9CaWRpTGV2
ZWwoKSBjb25zdDsKIAotICAgIEdhcFJlY3RzIHNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7CisgICAgR2FwUmVjdHMgc2Vs
ZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFp
bnRDb250YWluZXIpOwogICAgIExheW91dFJlY3QgbG9naWNhbExlZnRTZWxlY3Rpb25HYXAoUmVu
ZGVyQmxvY2sqIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9pbnQmIHJvb3RCbG9ja1BoeXNpY2Fs
UG9zaXRpb24sIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290QmxvY2ssCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHNlbE9iaiwgTGF5
b3V0VW5pdCBsb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxv
Z2ljYWxIZWlnaHQsIGNvbnN0IFBhaW50SW5mbyopOwogICAgIExheW91dFJlY3QgbG9naWNhbFJp
Z2h0U2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrKiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaW50
JiByb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9t
Um9vdEJsb2NrLApAQCAtNzcyLDE0ICs3NzIsMTQgQEAgcHJpdmF0ZToKICAgICAvLyBjaGlsZHJl
bi4KICAgICB2aXJ0dWFsIFJlbmRlckJsb2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0OwogCi0g
ICAgdmlydHVhbCBMYXlvdXRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91
dGxpbmVXaWR0aCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBSZW5kZXJTdHlsZSogb3V0
bGluZVN0eWxlRm9yUmVwYWludCgpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBob3ZlckFuY2VzdG9yKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURyYWdT
dGF0ZShib29sIGRyYWdPbik7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkQmVjYW1lTm9uSW5saW5l
KFJlbmRlck9iamVjdCogY2hpbGQpOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlv
blJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBi
b29sIC8qY2xpcFRvVmlzaWJsZUNvbnRlbnQqLykKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2Vs
ZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCAvKmNsaXBUb1Zpc2libGVDb250ZW50Ki8pIE9WRVJSSURFCiAgICAgewog
ICAgICAgICByZXR1cm4gc2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KHJlcGFpbnRDb250YWlu
ZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggMTMx
ZWJjYWY2ODk5ODBlYWVjNjFiYjFkNjIzZDJmMzgwNTViZWI3Zi4uNmI3ZDVkNDQyMTNhM2U2MmM1
ODc3MWIxZTdhY2RmMDAxYWZmOTdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKQEAgLTQ1Miw3ICs0NTIsNyBAQCBGbG9hdFF1YWQgUmVuZGVyQm94OjphYnNvbHV0ZUNv
bnRlbnRRdWFkKCkgY29uc3QKICAgICByZXR1cm4gbG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJl
Y3QocmVjdCkpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlckJveDo6b3V0bGluZUJvdW5kc0ZvclJl
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFBvaW50
KiBjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRl
ckJveDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldFRvUmVwYWludENvbnRh
aW5lcikgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IGJveCA9IGJvcmRlckJvdW5kaW5nQm94KCk7
CiAgICAgYWRqdXN0UmVjdEZvck91dGxpbmVBbmRTaGFkb3coYm94KTsKQEAgLTEyNTIsNyArMTI1
Miw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94OjpwZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2Nr
TG9naWNhbEhlaWdodCgpIGNvbnN0CiAgICAgcmV0dXJuIGNiLT5jb21wdXRlQ29udGVudEJveExv
Z2ljYWxIZWlnaHQobG9naWNhbEhlaWdodExlbmd0aC52YWx1ZSgpKTsKIH0KIAotdm9pZCBSZW5k
ZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUm
IHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0Cit2b2lkIFJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5z
Zm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlw
T3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVy
ID09IHRoaXMpCiAgICAgICAgIHJldHVybjsKQEAgLTEzMTQsNyArMTMxNCw3IEBAIHZvaWQgUmVu
ZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBib29sCiAgICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFp
bmVyLCBmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUsIERvTm90QXBwbHlDb250
YWluZXJGbGlwLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyQm94
OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNl
c3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25z
dCBSZW5kZXJPYmplY3QqIFJlbmRlckJveDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRy
eU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgQVNTRVJUKGFuY2VzdG9yVG9TdG9wQXQg
IT0gdGhpcyk7CiAKQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIHZvaWQgUmVuZGVyQm94OjpkZWxldGVM
aW5lQm94V3JhcHBlcigpCiAgICAgfQogfQogCi1MYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29u
c3QKIHsKICAgICBpZiAoc3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIWVuY2xv
c2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRS
ZWN0KCk7CkBAIC0xNDk0LDcgKzE0OTQsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbgogICAg
IHJldHVybiByOwogfQogCi12b2lkIFJlbmRlckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBi
b29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiBy
ZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIC8vIFRoZSByZWN0IHdlIGNvbXB1dGUgYXQg
ZWFjaCBzdGVwIGlzIHNoaWZ0ZWQgYnkgb3VyIHgveSBvZmZzZXQgaW4gdGhlIHBhcmVudCBjb250
YWluZXIncyBjb29yZGluYXRlIHNwYWNlLgogICAgIC8vIE9ubHkgd2hlbiB3ZSBjcm9zcyBhIHdy
aXRpbmcgbW9kZSBib3VuZGFyeSB3aWxsIHdlIGhhdmUgdG8gcG9zc2libHkgZmxpcEZvcldyaXRp
bmdNb2RlICh0byBjb252ZXJ0IGludG8gYSBtb3JlIGFwcHJvcHJpYXRlCkBAIC0zNzY0LDcgKzM3
NjQsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyQm94OjplbmNsb3NpbmdGbG9hdFBhaW50aW5nTGF5
ZXIoKSBjb25zdAogewogICAgIGNvbnN0IFJlbmRlck9iamVjdCogY3VyciA9IHRoaXM7CiAgICAg
d2hpbGUgKGN1cnIpIHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gY3Vyci0+aGFzTGF5
ZXIoKSAmJiBjdXJyLT5pc0JveCgpID8gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChjdXJyKS0+bGF5
ZXIoKSA6IDA7CisgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IGN1cnItPmhhc0xheWVyKCkg
JiYgY3Vyci0+aXNCb3goKSA/IHRvUmVuZGVyQm94KGN1cnIpLT5sYXllcigpIDogMDsKICAgICAg
ICAgaWYgKGxheWVyICYmIGxheWVyLT5pc1NlbGZQYWludGluZ0xheWVyKCkpCiAgICAgICAgICAg
ICByZXR1cm4gbGF5ZXI7CiAgICAgICAgIGN1cnIgPSBjdXJyLT5wYXJlbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCA0ODhjNTg0MDU3ZDAwYzhiMGU2NjU5ODAyYWU5
Yjg2YWQxOTMwNWZiLi4wNzUzMDEwMWFiYzQzMzY3NWU1YzhkNTA0NTg3M2M5MTk4MjI1NTNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHVi
bGljOgogICAgIExheW91dFJlY3QgY29tcHV0ZWRDU1NDb250ZW50Qm94UmVjdCgpIGNvbnN0IHsg
cmV0dXJuIExheW91dFJlY3QoYm9yZGVyTGVmdCgpICsgY29tcHV0ZWRDU1NQYWRkaW5nTGVmdCgp
LCBib3JkZXJUb3AoKSArIGNvbXB1dGVkQ1NTUGFkZGluZ1RvcCgpLCBjbGllbnRXaWR0aCgpIC0g
Y29tcHV0ZWRDU1NQYWRkaW5nTGVmdCgpIC0gY29tcHV0ZWRDU1NQYWRkaW5nUmlnaHQoKSwgY2xp
ZW50SGVpZ2h0KCkgLSBjb21wdXRlZENTU1BhZGRpbmdUb3AoKSAtIGNvbXB1dGVkQ1NTUGFkZGlu
Z0JvdHRvbSgpKTsgfQogCiAgICAgLy8gQm91bmRzIG9mIHRoZSBvdXRsaW5lIGJveCBpbiBhYnNv
bHV0ZSBjb29yZHMuIFJlc3BlY3RzIHRyYW5zZm9ybXMKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qg
b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVwYWludENv
bnRhaW5lciovLCBMYXlvdXRQb2ludCogY2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVyKSBj
b25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogLypyZXBhaW50Q29udGFpbmVyKi8sIExheW91dFBvaW50
KiBjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYpOwogCiAgICAgLy8gVXNlIHRoaXMgd2l0aCBjYXV0aW9uISBObyB0eXBlIGNoZWNr
aW5nIGlzIGRvbmUhCkBAIC0zMDgsOCArMzA4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5s
aW5lQm94V3JhcHBlcihJbmxpbmVCb3gqIGJveFdyYXBwZXIpIHsgbV9pbmxpbmVCb3hXcmFwcGVy
ID0gYm94V3JhcHBlcjsgfQogICAgIHZvaWQgZGVsZXRlTGluZUJveFdyYXBwZXIoKTsKIAotICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVh
bCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Qg
T1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwYWludER1cmluZ0xheW91dElmTW92ZWQo
Y29uc3QgTGF5b3V0UmVjdCYpOwogCkBAIC01MTgsOCArNTE4LDggQEAgcHJvdGVjdGVkOgogICAg
IAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWQoKSBjb25zdCB7
IHJldHVybiBpc1JlcGxhY2VkKCkgJiYgIWlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCk7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRy
YW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZs
aXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJP
YmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3Qq
LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJv
b2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRh
aW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBp
bmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiwgUmVuZGVyR2Vv
bWV0cnlNYXAmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVU
b0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0
ZSYpIGNvbnN0OwogCiAgICAgdm9pZCBwYWludFJvb3RCb3hGaWxsTGF5ZXJzKGNvbnN0IFBhaW50
SW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAKaW5kZXggOGY5YjlhNjIyNDBiYTdhMWE4Yzc1NTJhM2E1YTI1NGQ3ZmMzNzU5OC4u
NWE5YTMzZGIzMTE1NDMzODc2NmRhYTY2NGNkZTRhODJhYTQ2MWU2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0zMTYsMTYg
KzMxNiwxMiBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRQYWludEF0TG93UXVh
bGl0eShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEltYQogfQogCiBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QoTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlck9iamVj
dChub2RlKQotICAgICwgbV9sYXllcigwKQorICAgIDogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dChub2RlKQogewogfQogCiBSZW5kZXJCb3hNb2RlbE9iamVjdDo6flJlbmRlckJveE1vZGVsT2Jq
ZWN0KCkKIHsKLSAgICAvLyBPdXIgbGF5ZXIgc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95ZWQgYW5k
IGNsZWFyZWQgYnkgbm93Ci0gICAgQVNTRVJUKCFoYXNMYXllcigpKTsKLSAgICBBU1NFUlQoIW1f
bGF5ZXIpOwogICAgIGlmIChnSW1hZ2VRdWFsaXR5Q29udHJvbGxlcikgewogICAgICAgICBnSW1h
Z2VRdWFsaXR5Q29udHJvbGxlci0+b2JqZWN0RGVzdHJveWVkKHRoaXMpOwogICAgICAgICBpZiAo
Z0ltYWdlUXVhbGl0eUNvbnRyb2xsZXItPmlzRW1wdHkoKSkgewpAQCAtMzM1LDE0ICszMzEsNiBA
QCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6flJlbmRlckJveE1vZGVsT2JqZWN0KCkKICAgICB9CiB9
CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcigpCi17Ci0gICAgQVNT
RVJUKCFoYXNMYXllcigpKTsgLy8gQ2FsbGVycyBzaG91bGQgaGF2ZSBhbHJlYWR5IGNhbGxlZCBz
ZXRIYXNMYXllcihmYWxzZSkKLSAgICBBU1NFUlQobV9sYXllcik7Ci0gICAgbV9sYXllci0+ZGVz
dHJveShyZW5kZXJBcmVuYSgpKTsKLSAgICBtX2xheWVyID0gMDsKLX0KLQogdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkKIHsKICAgICAvLyBBIGNvbnRpbnVhdGlv
biBvZiB0aGlzIFJlbmRlck9iamVjdCBzaG91bGQgYmUgZGVzdHJveWVkIGF0IHN1YmNsYXNzZXMu
CkBAIC0zNTMsMTMgKzM0MSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OndpbGxCZURl
c3Ryb3llZCgpCiAgICAgaWYgKGZpcnN0TGV0dGVyUmVtYWluaW5nVGV4dCgpKQogICAgICAgICBz
ZXRGaXJzdExldHRlclJlbWFpbmluZ1RleHQoMCk7CiAKLSAgICAvLyBSZW5kZXJPYmplY3Q6Ondp
bGxCZURlc3Ryb3llZCBjYWxscyBiYWNrIHRvIGRlc3Ryb3lMYXllcigpIGZvciBsYXllciBkZXN0
cnVjdGlvbgotICAgIFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCk7Ci19Ci0KLWJvb2wg
UmVuZGVyQm94TW9kZWxPYmplY3Q6Omhhc1NlbGZQYWludGluZ0xheWVyKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9sYXllciAmJiBtX2xheWVyLT5pc1NlbGZQYWludGluZ0xheWVyKCk7CisgICAg
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCk7CiB9CiAKIHZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKQpAQCAtNDA5LDMyICszOTEsMzIgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBk
aWZmLCBjb25zdCBSZW5kZXJTdHkKICAgICAgICAgfQogICAgIH0KIAotICAgIFJlbmRlck9iamVj
dDo6c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIG5ld1N0eWxlKTsKKyAgICBSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoZGlmZiwgbmV3U3R5bGUpOwogfQogCiB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwg
Y29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogewotICAgIFJlbmRlck9iamVjdDo6c3R5bGVE
aWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOworICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6
OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKICAgICB1cGRhdGVCb3hNb2RlbEluZm9G
cm9tU3R5bGUoKTsKLSAgICAKKworICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBoYW5kbGVk
IGJ5IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKCksIGJ1dCBpdCBh
cHBlYXJzCisgICAgLy8gICAgICAgIHRvIGRlcGVuZCBvbiB1cGRhdGVCb3hNb2RlbEluZm9Gcm9t
U3R5bGUoKSBiZWluZyBjYWxsZWQgZmlyc3QuCiAgICAgaWYgKHJlcXVpcmVzTGF5ZXIoKSkgewog
ICAgICAgICBpZiAoIWxheWVyKCkgJiYgbGF5ZXJDcmVhdGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkp
IHsKICAgICAgICAgICAgIGlmIChzX3dhc0Zsb2F0aW5nICYmIGlzRmxvYXRpbmcoKSkKICAgICAg
ICAgICAgICAgICBzZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUpOwotICAgICAgICAgICAgbV9sYXll
ciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTGF5ZXIodGhpcyk7Ci0gICAgICAgICAgICBz
ZXRIYXNMYXllcih0cnVlKTsKLSAgICAgICAgICAgIG1fbGF5ZXItPmluc2VydE9ubHlUaGlzTGF5
ZXIoKTsKKyAgICAgICAgICAgIGVuc3VyZUxheWVyKCk7CiAgICAgICAgICAgICBpZiAocGFyZW50
KCkgJiYgIW5lZWRzTGF5b3V0KCkgJiYgY29udGFpbmluZ0Jsb2NrKCkpIHsKLSAgICAgICAgICAg
ICAgICBtX2xheWVyLT5zZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnQpOworICAgICAg
ICAgICAgICAgIGxheWVyKCktPnNldFJlcGFpbnRTdGF0dXMoTmVlZHNGdWxsUmVwYWludCk7CiAg
ICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgb25seSBvbmUgbGF5ZXIgdG8gdXBkYXRlLCBpdCBp
cyBub3Qgd29ydGggdXNpbmcgfGNhY2hlZE9mZnNldHwgc2luY2UKICAgICAgICAgICAgICAgICAv
LyB3ZSBhcmUgbm90IHN1cmUgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZC4KLSAgICAgICAgICAgICAg
ICBtX2xheWVyLT51cGRhdGVMYXllclBvc2l0aW9ucygwKTsKKyAgICAgICAgICAgICAgICBsYXll
cigpLT51cGRhdGVMYXllclBvc2l0aW9ucygwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAobGF5ZXIoKSAmJiBsYXllcigpLT5wYXJlbnQoKSkgewogICAgICAgICBz
ZXRIYXNUcmFuc2Zvcm0oZmFsc2UpOyAvLyBFaXRoZXIgYSB0cmFuc2Zvcm0gd2Fzbid0IHNwZWNp
ZmllZCBvciB0aGUgb2JqZWN0IGRvZXNuJ3Qgc3VwcG9ydCB0cmFuc2Zvcm1zLCBzbyBqdXN0IG51
bGwgb3V0IHRoZSBiaXQuCiAgICAgICAgIHNldEhhc1JlZmxlY3Rpb24oZmFsc2UpOwotICAgICAg
ICBtX2xheWVyLT5yZW1vdmVPbmx5VGhpc0xheWVyKCk7IC8vIGNhbGxzIGRlc3Ryb3lMYXllcigp
IHdoaWNoIGNsZWFycyBtX2xheWVyCisgICAgICAgIGxheWVyKCktPnJlbW92ZU9ubHlUaGlzTGF5
ZXIoKTsgLy8gY2FsbHMgZGVzdHJveUxheWVyKCkgd2hpY2ggY2xlYXJzIG1fbGF5ZXIKICAgICAg
ICAgaWYgKHNfd2FzRmxvYXRpbmcgJiYgaXNGbG9hdGluZygpKQogICAgICAgICAgICAgc2V0Q2hp
bGROZWVkc0xheW91dCh0cnVlKTsKICAgICAgICAgaWYgKHNfaGFkVHJhbnNmb3JtKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRleCAwNjdm
NjA0NmQwOTA4YTk0Yzk3ZThhNDIyZTYwMmNiY2NhZmMxZDkzLi5mMGU2NDg2MmE4NGY5NjMwMTBi
MDc3OTkwNzc3MzhlNGNiNTZjNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMjQsNyArMjQsNyBAQAogI2lmbmRlZiBSZW5kZXJC
b3hNb2RlbE9iamVjdF9oCiAjZGVmaW5lIFJlbmRlckJveE1vZGVsT2JqZWN0X2gKIAotI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qu
aCIKICNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU0
LDcgKzU0LDcgQEAgY2xhc3MgS2V5ZnJhbWVMaXN0OwogLy8gVGhpcyBjbGFzcyBpcyB0aGUgYmFz
ZSBmb3IgYWxsIG9iamVjdHMgdGhhdCBhZGhlcmUgdG8gdGhlIENTUyBib3ggbW9kZWwgYXMgZGVz
Y3JpYmVkCiAvLyBhdCBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9ib3guaHRtbAogCi1jbGFz
cyBSZW5kZXJCb3hNb2RlbE9iamVjdCA6IHB1YmxpYyBSZW5kZXJPYmplY3QgeworY2xhc3MgUmVu
ZGVyQm94TW9kZWxPYmplY3QgOiBwdWJsaWMgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCB7CiBw
dWJsaWM6CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QoTm9kZSopOwogICAgIHZpcnR1YWwgflJl
bmRlckJveE1vZGVsT2JqZWN0KCk7CkBAIC03OCw5ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5
bGUoKTsKIAotICAgIGJvb2wgaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdDsKLSAgICBSZW5k
ZXJMYXllciogbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyOyB9Ci0gICAgdmlydHVhbCBi
b29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBpc1Jvb3QoKSB8fCBpc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSB8fCBpc1JlbFBvc2l0aW9uZWQoKSB8fCBpc1RyYW5zcGFyZW50KCkgfHwg
aGFzVHJhbnNmb3JtKCkgfHwgaGFzSGlkZGVuQmFja2ZhY2UoKSB8fCBoYXNNYXNrKCkgfHwgaGFz
UmVmbGVjdGlvbigpIHx8IGhhc0ZpbHRlcigpIHx8IHN0eWxlKCktPnNwZWNpZmllc0NvbHVtbnMo
KTsgfQorICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gaXNSb290KCkgfHwgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgaXNSZWxQb3NpdGlv
bmVkKCkgfHwgaXNUcmFuc3BhcmVudCgpIHx8IGhhc1RyYW5zZm9ybSgpIHx8IGhhc0hpZGRlbkJh
Y2tmYWNlKCkgfHwgaGFzTWFzaygpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBoYXNGaWx0ZXIoKSB8
fCBzdHlsZSgpLT5zcGVjaWZpZXNDb2x1bW5zKCk7IH0KIAogICAgIC8vIFRoaXMgd2lsbCB3b3Jr
IG9uIGlubGluZXMgdG8gcmV0dXJuIHRoZSBib3VuZGluZyBib3ggb2YgYWxsIG9mIHRoZSBsaW5l
cycgYm9yZGVyIGJveGVzLgogICAgIHZpcnR1YWwgSW50UmVjdCBib3JkZXJCb3VuZGluZ0JveCgp
IGNvbnN0ID0gMDsKQEAgLTE1Niw5ICsxNTQsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1z
LCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgLy8gQ2FsbGVkIGJ5IFJl
bmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkgYW5kIGlzIHRoZSBvbmx5IHdheSBsYXllcnMg
c2hvdWxkIGV2ZXIgYmUgZGVzdHJveWVkCi0gICAgdm9pZCBkZXN0cm95TGF5ZXIoKTsKLQogICAg
IHZvaWQgaGlnaFF1YWxpdHlSZXBhaW50VGltZXJGaXJlZChUaW1lcjxSZW5kZXJCb3hNb2RlbE9i
amVjdD4qKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25T
dGF0ZSBzKTsKQEAgLTI5NywxMCArMjkyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCB0aGlja25lc3MsIGZsb2F0IGRyYXdUaGlja25lc3MsIEJveFNpZGUs
IGNvbnN0IFJlbmRlclN0eWxlKiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3Is
IEVCb3JkZXJTdHlsZSwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dp
Y2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCi0gICAgZnJpZW5k
IGNsYXNzIFJlbmRlclZpZXc7Ci0KLSAgICBSZW5kZXJMYXllciogbV9sYXllcjsKLSAgICAKICAg
ICAvLyBVc2VkIHRvIHN0b3JlIHN0YXRlIGJldHdlZW4gc3R5bGVXaWxsQ2hhbmdlIGFuZCBzdHls
ZURpZENoYW5nZQogICAgIHN0YXRpYyBib29sIHNfd2FzRmxvYXRpbmc7CiAgICAgc3RhdGljIGJv
b2wgc19oYWRMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHZW9tZXRyeU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0
cnlNYXAuY3BwCmluZGV4IDBhNmM5ZTA0ZmE3MjFjNTI5NDlkOTFhYzE2NDc5YjdhZmUyNDU4Y2Iu
LjcwZGVlMDIyYWRlNDI2NzE0YWJhYTZkYmRmYTcyZjk4OTg1MDIzZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcApAQCAtMTI5LDcgKzEyOSw3
IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6Om1hcFRvQWJzb2x1dGUoVHJhbnNmb3JtU3RhdGUm
IHRyYW5zZm9ybVN0YXRlKSBjb25zdAogICAgIHRyYW5zZm9ybVN0YXRlLmZsYXR0ZW4oKTsgICAg
CiB9CiAKLXZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IoY29u
c3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFu
Y2VzdG9yUmVuZGVyZXIpCit2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoTWFwcGluZ3NUb0Fu
Y2VzdG9yKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIpCiB7CiAgICAgLy8gV2UgbmVlZCB0byBwdXNo
IG1hcHBpbmdzIGluIHJldmVyc2Ugb3JkZXIgaGVyZSwgc28gZG8gaW5zZXJ0aW9ucyByYXRoZXIg
dGhhbiBhcHBlbmRzLgogICAgIFRlbXBvcmFyeUNoYW5nZTxzaXplX3Q+IHBvc2l0aW9uQ2hhbmdl
KG1faW5zZXJ0aW9uUG9zaXRpb24sIG1fbWFwcGluZy5zaXplKCkpOwpAQCAtMTczLDcgKzE3Myw3
IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3Qg
UmVuZGVyTGF5ZXIqIGxheWVyLCBjb25zdCBSCiAgICAgICAgIHB1c2gocmVuZGVyZXIsIHRvTGF5
b3V0U2l6ZShsYXllck9mZnNldCksIC8qYWNjdW11bGF0aW5nVHJhbnNmb3JtKi8gdHJ1ZSwgLypp
c05vblVuaWZvcm0qLyBmYWxzZSwgLyppc0ZpeGVkUG9zaXRpb24qLyBmYWxzZSwgLypoYXNUcmFu
c2Zvcm0qLyBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY29uc3QgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIgPSBhbmNlc3RvckxheWVyID8gYW5jZXN0
b3JMYXllci0+cmVuZGVyZXIoKSA6IDA7CisgICAgY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogYW5jZXN0b3JSZW5kZXJlciA9IGFuY2VzdG9yTGF5ZXIgPyBhbmNlc3RvckxheWVyLT5y
ZW5kZXJlcigpIDogMDsKICAgICBwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKHJlbmRlcmVyLCBhbmNl
c3RvclJlbmRlcmVyKTsKIH0KIApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0
cnlNYXA6OnB1c2hWaWV3KGNvbnN0IFJlbmRlclZpZXcqIHZpZXcsIGNvbnN0IExheW91dFNpemUm
IHNjcm9sCiAgICAgc3RlcEluc2VydGVkKHN0ZXApOwogfQogCi12b2lkIFJlbmRlckdlb21ldHJ5
TWFwOjpwb3BNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFu
Y2VzdG9yUmVuZGVyZXIpCit2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwb3BNYXBwaW5nc1RvQW5j
ZXN0b3IoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JSZW5kZXJlcikK
IHsKICAgICBBU1NFUlQobV9tYXBwaW5nLnNpemUoKSk7CiAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2
b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwb3BNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIGFuY2VzdAogCiB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwb3BNYXBw
aW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIpCiB7Ci0gICAg
Y29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIgPSBhbmNlc3Rvckxh
eWVyID8gYW5jZXN0b3JMYXllci0+cmVuZGVyZXIoKSA6IDA7CisgICAgY29uc3QgUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JSZW5kZXJlciA9IGFuY2VzdG9yTGF5ZXIgPyBhbmNl
c3RvckxheWVyLT5yZW5kZXJlcigpIDogMDsKICAgICBwb3BNYXBwaW5nc1RvQW5jZXN0b3IoYW5j
ZXN0b3JSZW5kZXJlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHZW9tZXRyeU1hcC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdl
b21ldHJ5TWFwLmgKaW5kZXggOThmNDRjNjMzZGIzZTc5ZGZhN2VjNzJiODU4ODgyMTYwMGM4YmJj
Yy4uOGUwMmFlNzUyNzM4ZmU3YmEwZmJjMDAyN2Q3NjQ0ZDU3MzdiNDZmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmgKQEAgLTc5LDggKzc5LDggQEAg
cHVibGljOgogICAgIC8vIENhbGxlZCBieSBjb2RlIHdhbGtpbmcgdGhlIHJlbmRlcmVyIG9yIGxh
eWVyIHRyZWVzLgogICAgIHZvaWQgcHVzaE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJM
YXllciosIGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyKTsKICAgICB2b2lkIHBvcE1h
cHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJMYXllciopOwotICAgIHZvaWQgcHVzaE1hcHBp
bmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJCb3hNb2RlbE9i
amVjdCogYW5jZXN0b3JSZW5kZXJlcik7Ci0gICAgdm9pZCBwb3BNYXBwaW5nc1RvQW5jZXN0b3Io
Y29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqKTsKKyAgICB2b2lkIHB1c2hNYXBwaW5nc1RvQW5j
ZXN0b3IoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCogYW5jZXN0b3JSZW5kZXJlcik7CisgICAgdm9pZCBwb3BNYXBwaW5nc1RvQW5jZXN0b3IoY29u
c3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCopOwogICAgIAogICAgIC8vIFRoZSBmb2xsb3dp
bmcgbWV0aG9kcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYnkgcmVuZGVyZXJzIGluc2lkZSBhIGNh
bGwgdG8gcHVzaE1hcHBpbmdzVG9BbmNlc3RvcigpLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDEwNGM1NmY1ZGM1ZTRmYjE2YjZlODFhNzQ0YjRjYTFm
ODY4NzA0MTkuLmFkNjk4ZGI1ODRhZjY3YjFkNzFlNjhmZGI3NmYxNzc2YzUxMmYzY2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC05NTYsNyArOTU2LDcg
QEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmxpbmVzVmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0Jv
eCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlY3Q7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVySW5saW5l
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVySW5saW5lOjpjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdAogewogICAgIC8vIE9ubHkgcnVuLWlucyBhcmUgYWxsb3dlZCBpbiBoZXJl
IGR1cmluZyBsYXlvdXQuCiAgICAgQVNTRVJUKCF2aWV3KCkgfHwgIXZpZXcoKS0+bGF5b3V0U3Rh
dGVFbmFibGVkKCkgfHwgaXNSdW5JbigpKTsKQEAgLTEwMTQsNyArMTAxNCw3IEBAIExheW91dFJl
Y3QgUmVuZGVySW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwCiAgICAgcmV0dXJuIHJlcGFpbnRSZWN0OwogfQogCi1MYXlvdXRSZWN0
IFJlbmRlcklubGluZTo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CitM
YXlvdXRSZWN0IFJlbmRlcklubGluZTo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVX
aWR0aCkgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IHIoUmVuZGVyQm94TW9kZWxPYmplY3Q6OnJl
Y3RXaXRoT3V0bGluZUZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgb3V0bGluZVdpZHRoKSk7
CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnIgPSBmaXJzdENoaWxkKCk7IGN1cnI7IGN1cnIg
PSBjdXJyLT5uZXh0U2libGluZygpKSB7CkBAIC0xMDI0LDcgKzEwMjQsNyBAQCBMYXlvdXRSZWN0
IFJlbmRlcklubGluZTo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludAogICAgIHJldHVybiByOwogfQogCi12b2lkIFJlbmRlcklubGluZTo6Y29t
cHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJJbmxpbmU6
OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIGlm
IChSZW5kZXJWaWV3KiB2ID0gdmlldygpKSB7CiAgICAgICAgIC8vIExheW91dFN0YXRlIGlzIG9u
bHkgdmFsaWQgZm9yIHJvb3QtcmVsYXRpdmUgcmVwYWludGluZwpAQCAtMTExNCw3ICsxMTE0LDcg
QEAgTGF5b3V0U2l6ZSBSZW5kZXJJbmxpbmU6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2Jq
ZWN0KiBjb250YWluZXIsIGNvbnN0IExheW8KICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi12b2lk
IFJlbmRlcklubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zv
cm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90IGFwcGx5Q29u
dGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlcklubGluZTo6bWFw
TG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFu
c2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgYXBwbHlDb250YWluZXJGbGlwLCBi
b29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAocmVwYWludENvbnRhaW5lciA9PSB0aGlz
KQogICAgICAgICByZXR1cm47CkBAIC0xMTYyLDcgKzExNjIsNyBAQCB2b2lkIFJlbmRlcklubGlu
ZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYgogICAgIG8tPm1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgZml4
ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlLCBhcHBseUNvbnRhaW5lckZsaXAsIHdh
c0ZpeGVkKTsKIH0KIAotY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJJbmxpbmU6OnB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9w
QXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9i
amVjdCogUmVuZGVySW5saW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBn
ZW9tZXRyeU1hcCkgY29uc3QKIHsKICAgICBBU1NFUlQoYW5jZXN0b3JUb1N0b3BBdCAhPSB0aGlz
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IGE4Y2MyZjFi
ZTUwNTczODAyZWM2OTdlZTMxMzQ0MjNhNmRjMGRkNzEuLjI2NjdlMGZmMzBiZjI1NzkzYWVmMGU0
MjI1ODg5NmIyY2U5MmY1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmgKQEAgLTEzMSwxMiArMTMxLDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0
IG9mZnNldFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbGluZXNCb3VuZGluZ0JveCgpLndpZHRoKCk7
IH0KICAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4g
bGluZXNCb3VuZGluZ0JveCgpLmhlaWdodCgpOyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qg
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91dGxp
bmVGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlv
dXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0
UmVjdCYsIGJvb2wgZml4ZWQpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgcmVjdFdp
dGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCkgY29uc3QgT1ZFUlJJ
REU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1z
LCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWlu
ZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgUmVu
ZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNm
b3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwg
Ym9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJl
bmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChj
b25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAppbmRleCA0NDFjMGJlYWFhMzgyNzZiMjdlODlmMDdlOGRmYmNiOTYxOTU3M2M3Li5mYWYz
YWRmNTU1ZjA3YjQyZDkyOTYyMmY0NGI2ZGFkYzQ3ZWU3Nzg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIENsaXBSZWN0
OjppbnRlcnNlY3RzKGNvbnN0IEhpdFRlc3RQb2ludCYgaGl0VGVzdFBvaW50KQogICAgIHJldHVy
biBoaXRUZXN0UG9pbnQuaW50ZXJzZWN0cyhtX3JlY3QpOwogfQogCi1SZW5kZXJMYXllcjo6UmVu
ZGVyTGF5ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyKQorUmVuZGVyTGF5ZXI6OlJl
bmRlckxheWVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlbmRlcmVyKQogICAgIDogbV9p
blJlc2l6ZU1vZGUoZmFsc2UpCiAgICAgLCBtX3Njcm9sbERpbWVuc2lvbnNEaXJ0eSh0cnVlKQog
ICAgICwgbV9ub3JtYWxGbG93TGlzdERpcnR5KHRydWUpCkBAIC0zODUsNyArMzg1LDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMoTGF5b3V0UG9pbnQqIG9mZnNldEZy
b21Sb290LCBVcGRhdGVMYXllclAKICAgICAgICAgLy8gTGF5b3V0U3RhdGUgb3V0c2lkZSB0aGUg
bGF5b3V0KCkgcGhhc2UgYW5kIHVzZSBpdCBoZXJlLgogICAgICAgICBBU1NFUlQoIXZpZXctPmxh
eW91dFN0YXRlRW5hYmxlZCgpKTsKIAotICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICAg
ICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVy
KCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsKICAgICAgICAgTGF5b3V0UmVjdCBvbGRSZXBhaW50
UmVjdCA9IG1fcmVwYWludFJlY3Q7CiAgICAgICAgIExheW91dFJlY3Qgb2xkT3V0bGluZUJveCA9
IG1fb3V0bGluZUJveDsKICAgICAgICAgY29tcHV0ZVJlcGFpbnRSZWN0cyhvZmZzZXRGcm9tUm9v
dCk7CkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29tcHV0ZVJlcGFpbnRS
ZWN0cyhMYXlvdXRQb2ludCogb2Zmc2V0RnJvbVJvb3QpCiB7CiAgICAgQVNTRVJUKCFtX3Zpc2li
bGVDb250ZW50U3RhdHVzRGlydHkpOwogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIgPSByZW5kZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50KCk7CisgICAgUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNv
bnRhaW5lckZvclJlcGFpbnQoKTsKICAgICBtX3JlcGFpbnRSZWN0ID0gcmVuZGVyZXIoKS0+Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcik7CiAgICAgbV9vdXRs
aW5lQm94ID0gcmVuZGVyZXIoKS0+b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQocmVwYWludENvbnRh
aW5lciwgb2Zmc2V0RnJvbVJvb3QpOwogfQpAQCAtNTkxLDEwICs1OTEsMTAgQEAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggUmVuZGVyTGF5ZXI6OnJlbmRlcmFibGVUcmFuc2Zvcm0oUGFpbnRCZWhhdmlv
ciBwYWludEJlaGF2aW8KICAgICByZXR1cm4gKm1fdHJhbnNmb3JtOwogfQogCi1zdGF0aWMgYm9v
bCBjaGVja0NvbnRhaW5pbmdCbG9ja0NoYWluRm9yUGFnaW5hdGlvbihSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVuZGVyZXIsIFJlbmRlckJveCogYW5jZXN0b3JDb2x1bW5zUmVuZGVyZXIpCitzdGF0
aWMgYm9vbCBjaGVja0NvbnRhaW5pbmdCbG9ja0NoYWluRm9yUGFnaW5hdGlvbihSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyQm94KiBhbmNlc3RvckNvbHVtbnNSZW5k
ZXJlcikKIHsKICAgICBSZW5kZXJWaWV3KiB2aWV3ID0gcmVuZGVyZXItPnZpZXcoKTsKLSAgICBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcHJldkJsb2NrID0gcmVuZGVyZXI7CisgICAgUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdCogcHJldkJsb2NrID0gcmVuZGVyZXI7CiAgICAgUmVuZGVyQmxvY2sq
IGNvbnRhaW5pbmdCbG9jazsKICAgICBmb3IgKGNvbnRhaW5pbmdCbG9jayA9IHJlbmRlcmVyLT5j
b250YWluaW5nQmxvY2soKTsKICAgICAgICAgIGNvbnRhaW5pbmdCbG9jayAmJiBjb250YWluaW5n
QmxvY2sgIT0gdmlldyAmJiBjb250YWluaW5nQmxvY2sgIT0gYW5jZXN0b3JDb2x1bW5zUmVuZGVy
ZXI7CkBAIC04NTUsNyArODU1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3Np
dGlvbigpCiAgICAgfQogICAgICAgICAKICAgICBpZiAocmVuZGVyZXIoKS0+aXNSZWxQb3NpdGlv
bmVkKCkpIHsKLSAgICAgICAgbV9yZWxhdGl2ZU9mZnNldCA9IHJlbmRlcmVyKCktPnJlbGF0aXZl
UG9zaXRpb25PZmZzZXQoKTsKKyAgICAgICAgbV9yZWxhdGl2ZU9mZnNldCA9IHRvUmVuZGVyQm94
TW9kZWxPYmplY3QocmVuZGVyZXIoKSktPnJlbGF0aXZlUG9zaXRpb25PZmZzZXQoKTsKICAgICAg
ICAgbG9jYWxQb2ludC5tb3ZlKG1fcmVsYXRpdmVPZmZzZXQpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIG1fcmVsYXRpdmVPZmZzZXQgPSBMYXlvdXRTaXplKCk7CkBAIC05MTgsNyArOTE4LDcgQEAg
UmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpzdGFja2luZ0NvbnRleHQoKSBjb25zdAogCiBzdGF0
aWMgaW5saW5lIGJvb2wgaXNQb3NpdGlvbmVkQ29udGFpbmVyKFJlbmRlckxheWVyKiBsYXllcikK
IHsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbGF5ZXJSZW5kZXJlciA9IGxheWVyLT5yZW5k
ZXJlcigpOworICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGxheWVyUmVuZGVyZXIgPSBs
YXllci0+cmVuZGVyZXIoKTsKICAgICByZXR1cm4gbGF5ZXItPmlzUm9vdExheWVyKCkgfHwgbGF5
ZXJSZW5kZXJlci0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgbGF5ZXJSZW5kZXJlci0+aXNS
ZWxQb3NpdGlvbmVkKCkgfHwgbGF5ZXItPmhhc1RyYW5zZm9ybSgpOwogfQogCkBAIC0xMDk2LDcg
KzEwOTYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzZXRGaWx0ZXJCYWNrZW5kTmVlZHNSZXBhaW50
aW5nSW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QsCiBib29sIFJlbmRlckxheWVyOjpoYXNB
bmNlc3RvcldpdGhGaWx0ZXJPdXRzZXRzKCkgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0IFJlbmRl
ckxheWVyKiBjdXJyID0gdGhpczsgY3VycjsgY3VyciA9IGN1cnItPnBhcmVudCgpKSB7Ci0gICAg
ICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciA9IGN1cnItPnJlbmRlcmVyKCk7Cisg
ICAgICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlbmRlcmVyID0gY3Vyci0+cmVuZGVy
ZXIoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT5oYXNGaWx0ZXJPdXRzZXRzKCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjc2LDcgKzE2NzYsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpCiAKICAgICB1cGRhdGVDb21w
b3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsKCk7CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAg
ICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIo
KS0+Y29udGFpbmVyRm9yUmVwYWludCgpOwogICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCkt
PmZyYW1lKCk7CiAgICAgaWYgKGZyYW1lKSB7CiAgICAgICAgIC8vIFRoZSBjYXJldCByZWN0IG5l
ZWRzIHRvIGJlIGludmFsaWRhdGVkIGFmdGVyIHNjcm9sbGluZwpAQCAtNDcxMiw3ICs0NzEyLDcg
QEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0QmFja2luZ05lZWRzUmVwYWludEluUmVjdChjb25zdCBM
YXlvdXRSZWN0JiByKQogfQogCiAvLyBTaW5jZSB3ZSdyZSBvbmx5IHBhaW50aW5nIG5vbi1jb21w
b3NpdGVkIGxheWVycywgd2Uga25vdyB0aGF0IHRoZXkgYWxsIHNoYXJlIHRoZSBzYW1lIHJlcGFp
bnRDb250YWluZXIuCi12b2lkIFJlbmRlckxheWVyOjpyZXBhaW50SW5jbHVkaW5nTm9uQ29tcG9z
aXRpbmdEZXNjZW5kYW50cyhSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikK
K3ZvaWQgUmVuZGVyTGF5ZXI6OnJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2NlbmRh
bnRzKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCiB7CiAgICAg
cmVuZGVyZXIoKS0+cmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHJlbmRl
cmVyKCktPmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCBiOWRjNWQ3YzdjYzZk
MzIwYWZlNTdjNDcxNzBmMzk1NTgxMmVlMGJiLi5jZTU3YmRlMDc2ZGQ3NGMyNWZkOGEwMTQ3NDc5
NzEwODBmODFiZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAt
MjQ1LDEwICsyNDUsMTAgQEAgY2xhc3MgUmVuZGVyTGF5ZXIgOiBwdWJsaWMgU2Nyb2xsYWJsZUFy
ZWEgewogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJSZXBsaWNhOwogCi0gICAgUmVu
ZGVyTGF5ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqKTsKKyAgICBSZW5kZXJMYXllcihSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0Kik7CiAgICAgflJlbmRlckxheWVyKCk7CiAKLSAgICBSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyOyB9Cisg
ICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBt
X3JlbmRlcmVyOyB9CiAgICAgUmVuZGVyQm94KiByZW5kZXJCb3goKSBjb25zdCB7IHJldHVybiBt
X3JlbmRlcmVyICYmIG1fcmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChtX3JlbmRlcmVy
KSA6IDA7IH0KICAgICBSZW5kZXJMYXllciogcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJl
bnQ7IH0KICAgICBSZW5kZXJMYXllciogcHJldmlvdXNTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9wcmV2aW91czsgfQpAQCAtMjY5LDcgKzI2OSw3IEBAIHB1YmxpYzoKICAgICAvLyBpZiBsYXll
ciBjb21wb3NpdGluZyBpcyBiZWluZyB1c2VkLAogICAgIHZvaWQgc2V0QmFja2luZ05lZWRzUmVw
YWludCgpOwogICAgIHZvaWQgc2V0QmFja2luZ05lZWRzUmVwYWludEluUmVjdChjb25zdCBMYXlv
dXRSZWN0Jik7IC8vIHIgaXMgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2Ugb2YgdGhlIGxheWVyJ3Mg
cmVuZGVyIG9iamVjdAotICAgIHZvaWQgcmVwYWludEluY2x1ZGluZ05vbkNvbXBvc2l0aW5nRGVz
Y2VuZGFudHMoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpOworICAgIHZv
aWQgcmVwYWludEluY2x1ZGluZ05vbkNvbXBvc2l0aW5nRGVzY2VuZGFudHMoUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcik7CiAjZW5kaWYKIAogICAgIHZvaWQgc3R5
bGVDaGFuZ2VkKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsK
QEAgLTg1OSw3ICs4NTksNyBAQCBwcml2YXRlOgogCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlckxh
eWVyQmFja2luZzsKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOwotICAg
IGZyaWVuZCBjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdDsKKyAgICBmcmllbmQgY2xhc3MgUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdDsKIAogICAgIC8vIE9ubHkgc2FmZSB0byBjYWxsIGZyb20g
UmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcihSZW5kZXJBcmVuYSopCiAgICAgdm9p
ZCBkZXN0cm95KFJlbmRlckFyZW5hKik7CkBAIC05MjcsNyArOTI3LDcgQEAgcHJvdGVjdGVkOgog
ICAgIGJvb2wgbV9oYXNGaWx0ZXJJbmZvIDogMTsKICNlbmRpZgogCi0gICAgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogbV9y
ZW5kZXJlcjsKIAogICAgIFJlbmRlckxheWVyKiBtX3BhcmVudDsKICAgICBSZW5kZXJMYXllciog
bV9wcmV2aW91czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuaAppbmRleCAwZjQyZDNmYjkxYjE3OTM1OTc5ZmRiMThkYmQwNmZjYTY4ZmJjODRjLi4yMGNj
OWI5ZDY3MzI2N2IyYzYyYmE1NzI1NWRkNDRhNWI2MjM5NmNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCkBAIC0xNzEsNyArMTcxLDcgQEAgcHJp
dmF0ZToKICAgICAKICAgICBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IGNyZWF0ZUdyYXBoaWNz
TGF5ZXIoY29uc3QgU3RyaW5nJik7CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVy
ZXIoKSBjb25zdCB7IHJldHVybiBtX293bmluZ0xheWVyLT5yZW5kZXJlcigpOyB9CisgICAgUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX293bmlu
Z0xheWVyLT5yZW5kZXJlcigpOyB9CiAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBjb21wb3Np
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9vd25pbmdMYXllci0+Y29tcG9zaXRvcigpOyB9CiAKICAg
ICB2b2lkIHVwZGF0ZUludGVybmFsSGllcmFyY2h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDQ3NDUwMTkxYWM3ZWJh
ODhlY2Y4N2VjOTVlYjZlZDRjZDg2ZmU5ZDAuLmY1NTFhODVkY2FlMjI4ZTIyNTUxYzk1MmU3ZDM1
YWQ3NDYxMzFkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCkBAIC01MDgsNyArNTA4LDcgQEAgYm9vbCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcoUmVuZGVyTGF5ZXIqIGxheWVyLCBDb21wb3NpdGluZ0No
YW5nZVIKICAgICAgICAgICAgIC8vIGl0cyByZXBsaWNhIEdyYXBoaWNzTGF5ZXIuIEluIHByYWN0
aWNlIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBiZWNhdXNlIHJlZmxlY3RlZSBhbmQgcmVmbGVj
dGlvbiAKICAgICAgICAgICAgIC8vIGFyZSBib3RoIGVpdGhlciBjb21wb3NpdGVkLCBvciBub3Qg
Y29tcG9zaXRlZC4KICAgICAgICAgICAgIGlmIChsYXllci0+aXNSZWZsZWN0aW9uKCkpIHsKLSAg
ICAgICAgICAgICAgICBSZW5kZXJMYXllciogc291cmNlTGF5ZXIgPSB0b1JlbmRlckJveE1vZGVs
T2JqZWN0KGxheWVyLT5yZW5kZXJlcigpLT5wYXJlbnQoKSktPmxheWVyKCk7CisgICAgICAgICAg
ICAgICAgUmVuZGVyTGF5ZXIqIHNvdXJjZUxheWVyID0gdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KGxheWVyLT5yZW5kZXJlcigpLT5wYXJlbnQoKSktPmxheWVyKCk7CiAgICAgICAgICAgICAg
ICAgaWYgKFJlbmRlckxheWVyQmFja2luZyogYmFja2luZyA9IHNvdXJjZUxheWVyLT5iYWNraW5n
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIo
KS0+cmVwbGljYUxheWVyKCkgPT0gbGF5ZXItPmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpKTsK
ICAgICAgICAgICAgICAgICAgICAgYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5zZXRSZXBsaWNh
dGVkQnlMYXllcigwKTsKQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cmVwYWludE9uQ29tcG9zaXRpbmdDaGFuZ2UoUmVuZGVyTGF5ZXIqIGxheWVyKQogICAg
IGlmIChsYXllci0+cmVuZGVyZXIoKSAhPSBtX3JlbmRlclZpZXcgJiYgIWxheWVyLT5yZW5kZXJl
cigpLT5wYXJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIgPSBsYXllci0+cmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVw
YWludCgpOworICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIg
PSBsYXllci0+cmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOwogICAgIGlmICghcmVw
YWludENvbnRhaW5lcikKICAgICAgICAgcmVwYWludENvbnRhaW5lciA9IG1fcmVuZGVyVmlldzsK
IApAQCAtMTQzNyw3ICsxNDM3LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVp
cmVzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciogbGF5ZXIpIGMKICAgICAvLyBU
aGUgY29tcG9zaXRpbmcgc3RhdGUgb2YgYSByZWZsZWN0aW9uIHNob3VsZCBtYXRjaCB0aGF0IG9m
IGl0cyByZWZsZWN0ZWQgbGF5ZXIuCiAgICAgaWYgKGxheWVyLT5pc1JlZmxlY3Rpb24oKSkgewog
ICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsgLy8gVGhlIFJlbmRlclJlcGxp
Y2EncyBwYXJlbnQgaXMgdGhlIG9iamVjdCBiZWluZyByZWZsZWN0ZWQuCi0gICAgICAgIGxheWVy
ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlciktPmxheWVyKCk7CisgICAgICAgIGxh
eWVyID0gdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KHJlbmRlcmVyKS0+bGF5ZXIoKTsKICAg
ICB9CiAgICAgLy8gVGhlIHJvb3QgbGF5ZXIgYWx3YXlzIGhhcyBhIGNvbXBvc2l0aW5nIGxheWVy
LCBidXQgaXQgbWF5IG5vdCBoYXZlIGJhY2tpbmcuCiAgICAgcmV0dXJuIHJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JUcmFuc2Zvcm0ocmVuZGVyZXIpCkBAIC0xNTAxLDcgKzE1MDEsNyBAQCBjb25zdCBj
aGFyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbkZvckNvbXBvc2l0aW5nKGNvbnN0IFJl
bmRlckxheWVyKiBsYXllcgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBsYXllci0+cmVu
ZGVyZXIoKTsKICAgICBpZiAobGF5ZXItPmlzUmVmbGVjdGlvbigpKSB7CiAgICAgICAgIHJlbmRl
cmVyID0gcmVuZGVyZXItPnBhcmVudCgpOwotICAgICAgICBsYXllciA9IHRvUmVuZGVyQm94TW9k
ZWxPYmplY3QocmVuZGVyZXIpLT5sYXllcigpOworICAgICAgICBsYXllciA9IHRvUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdChyZW5kZXJlciktPmxheWVyKCk7CiAgICAgfQogCiAgICAgaWYgKHJl
cXVpcmVzQ29tcG9zaXRpbmdGb3JUcmFuc2Zvcm0ocmVuZGVyZXIpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDBkMmY0OGRkNTEwMWU3ZjRj
N2MzNGVmYTA2MjNhOGIwYjg5MDQ4NzQuLjk1YjU5NTQ4NTMxZmU5Y2NhZThjYzc1MzZmNjdmZDZk
ZjRlYWFhOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtl
ci5jcHAKQEAgLTE3MDIsNyArMTcwMiw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6c2V0U2Vs
ZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgc3RhdGUpCiAgICAgICAgICAgICByb290LT5zZXRI
YXNTZWxlY3RlZENoaWxkcmVuKHN0YXRlICE9IFNlbGVjdGlvbk5vbmUpOwogfQogCi1MYXlvdXRS
ZWN0IFJlbmRlckxpc3RNYXJrZXI6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KQor
TGF5b3V0UmVjdCBSZW5kZXJMaXN0TWFya2VyOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2li
bGVDb250ZW50KQogewogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCmluZGV4IGQ4OGQ5MjJiMGU0MjgzY2Nh
NDU2MDM1ZjRlZWIxMTdkODJjOGY1MmQuLmIyZjUyNWFmZDdkN2JmZGJkZTNhNjUxY2I5YmMzMWYy
MDQ2MjJjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIu
aApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyBy
ZXR1cm4gIWlzSW1hZ2UoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGlvblN0YXRl
KFNlbGVjdGlvblN0YXRlKTsKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xp
cFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0
aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICB2b2lkIHVwZGF0ZU1hcmdpbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKaW5kZXggNmNkYjRiMmY5NDBmOTRkYjE2NzlkMzE5MTM2MTFhYmY2M2NmYzRi
Ny4uZWUwMTdlZmZjN2I2M2U5MzQyOWEyOGNkMWE3ZTMyZjM2ZDUyNzA2ZSAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lk
IFJlbmRlck9iamVjdDo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVDaGlsZCkKICAgICAvLyBUbyBhdm9pZCB0aGUgcHJvYmxlbSBhbGx0b2dldGhl
ciwgZGV0ZWN0IGVhcmx5IGlmIHdlJ3JlIGluc2lkZSBhIGhpZGRlbiBTVkcgc3VidHJlZQogICAg
IC8vIGFuZCBzdG9wIGNyZWF0aW5nIGxheWVycyBhdCBhbGwgZm9yIHRoZXNlIGNhc2VzIC0gdGhl
eSdyZSBub3QgdXNlZCBhbnl3YXlzLgogICAgIGlmIChuZXdDaGlsZC0+aGFzTGF5ZXIoKSAmJiAh
bGF5ZXJDcmVhdGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkpCi0gICAgICAgIHRvUmVuZGVyQm94TW9k
ZWxPYmplY3QobmV3Q2hpbGQpLT5sYXllcigpLT5yZW1vdmVPbmx5VGhpc0xheWVyKCk7CisgICAg
ICAgIHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdChuZXdDaGlsZCktPmxheWVyKCktPnJlbW92
ZU9ubHlUaGlzTGF5ZXIoKTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZUNoaWxkKFJl
bmRlck9iamVjdCogb2xkQ2hpbGQpCkBAIC00MzIsNyArNDMyLDcgQEAgc3RhdGljIHZvaWQgYWRk
TGF5ZXJzKFJlbmRlck9iamVjdCogb2JqLCBSZW5kZXJMYXllciogcGFyZW50TGF5ZXIsIFJlbmRl
ck9iamVjdCoKICAgICAgICAgICAgIGJlZm9yZUNoaWxkID0gbmV3T2JqZWN0LT5wYXJlbnQoKS0+
ZmluZE5leHRMYXllcihwYXJlbnRMYXllciwgbmV3T2JqZWN0KTsKICAgICAgICAgICAgIG5ld09i
amVjdCA9IDA7CiAgICAgICAgIH0KLSAgICAgICAgcGFyZW50TGF5ZXItPmFkZENoaWxkKHRvUmVu
ZGVyQm94TW9kZWxPYmplY3Qob2JqKS0+bGF5ZXIoKSwgYmVmb3JlQ2hpbGQpOworICAgICAgICBw
YXJlbnRMYXllci0+YWRkQ2hpbGQodG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KG9iaiktPmxh
eWVyKCksIGJlZm9yZUNoaWxkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDU2LDcg
KzQ1Niw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpyZW1vdmVMYXllcnMoUmVuZGVyTGF5ZXIqIHBh
cmVudExheWVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaGFzTGF5ZXIoKSkgewotICAg
ICAgICBwYXJlbnRMYXllci0+cmVtb3ZlQ2hpbGQodG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlz
KS0+bGF5ZXIoKSk7CisgICAgICAgIHBhcmVudExheWVyLT5yZW1vdmVDaGlsZCh0b1JlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NzAsNyArNDcwLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6Om1vdmVMYXllcnMoUmVu
ZGVyTGF5ZXIqIG9sZFBhcmVudCwgUmVuZGVyTGF5ZXIqIG5ld1BhcmVudCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKGhhc0xheWVyKCkpIHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVy
ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKTsKKyAgICAgICAgUmVuZGVy
TGF5ZXIqIGxheWVyID0gdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KHRoaXMpLT5sYXllcigp
OwogICAgICAgICBBU1NFUlQob2xkUGFyZW50ID09IGxheWVyLT5wYXJlbnQoKSk7CiAgICAgICAg
IGlmIChvbGRQYXJlbnQpCiAgICAgICAgICAgICBvbGRQYXJlbnQtPnJlbW92ZUNoaWxkKGxheWVy
KTsKQEAgLTQ5MCw3ICs0OTAsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyT2JqZWN0OjpmaW5kTmV4
dExheWVyKFJlbmRlckxheWVyKiBwYXJlbnRMYXllciwgUmVuZGVyT2JqZWN0KgogICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIC8vIFN0ZXAgMTogSWYgb3VyIGxheWVyIGlzIGEgY2hpbGQgb2YgdGhl
IGRlc2lyZWQgcGFyZW50LCB0aGVuIHJldHVybiBvdXIgbGF5ZXIuCi0gICAgUmVuZGVyTGF5ZXIq
IG91ckxheWVyID0gaGFzTGF5ZXIoKSA/IHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxh
eWVyKCkgOiAwOworICAgIFJlbmRlckxheWVyKiBvdXJMYXllciA9IGhhc0xheWVyKCkgPyB0b1Jl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCkgOiAwOwogICAgIGlmIChvdXJM
YXllciAmJiBvdXJMYXllci0+cGFyZW50KCkgPT0gcGFyZW50TGF5ZXIpCiAgICAgICAgIHJldHVy
biBvdXJMYXllcjsKIApAQCAtNTIyLDcgKzUyMiw3IEBAIFJlbmRlckxheWVyKiBSZW5kZXJPYmpl
Y3Q6OmVuY2xvc2luZ0xheWVyKCkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIGN1
cnIgPSB0aGlzOwogICAgIHdoaWxlIChjdXJyKSB7Ci0gICAgICAgIFJlbmRlckxheWVyKiBsYXll
ciA9IGN1cnItPmhhc0xheWVyKCkgPyB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGN1cnIpLT5sYXll
cigpIDogMDsKKyAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gY3Vyci0+aGFzTGF5ZXIoKSA/
IHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdChjdXJyKS0+bGF5ZXIoKSA6IDA7CiAgICAgICAg
IGlmIChsYXllcikKICAgICAgICAgICAgIHJldHVybiBsYXllcjsKICAgICAgICAgY3VyciA9IGN1
cnItPnBhcmVudCgpOwpAQCAtNzA5LDEzICs3MDksMTMgQEAgdm9pZCBSZW5kZXJPYmplY3Q6Omlu
dmFsaWRhdGVDb250YWluZXJQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKIHZvaWQgUmVuZGVyT2Jq
ZWN0OjpzZXRMYXllck5lZWRzRnVsbFJlcGFpbnQoKQogewogICAgIEFTU0VSVChoYXNMYXllcigp
KTsKLSAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5zZXRSZXBhaW50
U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnQpOworICAgIHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCh0aGlzKS0+bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50KTsKIH0K
IAogdm9pZCBSZW5kZXJPYmplY3Q6OnNldExheWVyTmVlZHNGdWxsUmVwYWludEZvclBvc2l0aW9u
ZWRNb3ZlbWVudExheW91dCgpCiB7CiAgICAgQVNTRVJUKGhhc0xheWVyKCkpOwotICAgIHRvUmVu
ZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCktPnNldFJlcGFpbnRTdGF0dXMoTmVlZHNG
dWxsUmVwYWludEZvclBvc2l0aW9uZWRNb3ZlbWVudExheW91dCk7CisgICAgdG9SZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KHRoaXMpLT5sYXllcigpLT5zZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVs
bFJlcGFpbnRGb3JQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQpOwogfQogCiBSZW5kZXJCbG9jayog
UmVuZGVyT2JqZWN0Ojpjb250YWluaW5nQmxvY2soKSBjb25zdApAQCAtMTIwMiwxMyArMTIwMiwx
MyBAQCB2b2lkIFJlbmRlck9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKQogewogfQogCi1SZW5kZXJCb3hNb2RlbE9iamVjdCogUmVuZGVyT2JqZWN0Ojpjb250YWlu
ZXJGb3JSZXBhaW50KCkgY29uc3QKK1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIFJlbmRlck9i
amVjdDo6Y29udGFpbmVyRm9yUmVwYWludCgpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyogdiA9
IHZpZXcoKTsKICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gMDsKKyAgICBSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gMDsKIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKICAgICBpZiAodi0+dXNlc0NvbXBvc2l0aW5nKCkpIHsKQEAgLTEyMzgs
NyArMTIzOCw3IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5l
ckZvclJlcGFpbnQoKSBjb25zdAogICAgIHJldHVybiByZXBhaW50Q29udGFpbmVyOwogfQogCi12
b2lkIFJlbmRlck9iamVjdDo6cmVwYWludFVzaW5nQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiByLCBib29sIGltbWVkaWF0
ZSkKK3ZvaWQgUmVuZGVyT2JqZWN0OjpyZXBhaW50VXNpbmdDb250YWluZXIoUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYgciwgYm9v
bCBpbW1lZGlhdGUpCiB7CiAgICAgaWYgKCFyZXBhaW50Q29udGFpbmVyKSB7CiAgICAgICAgIHZp
ZXcoKS0+cmVwYWludFZpZXdSZWN0YW5nbGUociwgaW1tZWRpYXRlKTsKQEAgLTEyOTEsNyArMTI5
MSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpyZXBhaW50KGJvb2wgaW1tZWRpYXRlKQogICAgIGlm
ICh2aWV3LT5wcmludGluZygpKQogICAgICAgICByZXR1cm47IC8vIERvbid0IHJlcGFpbnQgaWYg
d2UncmUgcHJpbnRpbmcuCiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciA9IGNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyID0gY29udGFpbmVyRm9yUmVwYWludCgpOwogICAgIHJlcGFp
bnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyID8gcmVwYWludENvbnRhaW5lciA6IHZp
ZXcsIGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpLCBpbW1l
ZGlhdGUpOwogfQogCkBAIC0xMzExLDcgKzEzMTEsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6cmVw
YWludFJlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JiByLCBib29sIGltbWVkaWF0ZSkKICAgICAv
LyByZXBhaW50IGNvbnRhaW5lcnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzMwOAogICAgIGRpcnR5UmVjdC5tb3ZlKHZpZXctPmxheW91dERlbHRhKCkpOwogCi0g
ICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBjb250YWluZXJGb3JS
ZXBhaW50KCk7CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
ciA9IGNvbnRhaW5lckZvclJlcGFpbnQoKTsKICAgICBjb21wdXRlUmVjdEZvclJlcGFpbnQocmVw
YWludENvbnRhaW5lciwgZGlydHlSZWN0KTsKICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVw
YWludENvbnRhaW5lciA/IHJlcGFpbnRDb250YWluZXIgOiB2aWV3LCBkaXJ0eVJlY3QsIGltbWVk
aWF0ZSk7CiB9CkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBJbnRSZWN0IFJlbmRlck9iamVjdDo6cGl4
ZWxTbmFwcGVkQWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkgY29uc3QKICAgICByZXR1cm4g
cGl4ZWxTbmFwcGVkSW50UmVjdChhYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSk7CiB9CiAK
LWJvb2wgUmVuZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYgb2xkQm91bmRz
LCBjb25zdCBMYXlvdXRSZWN0JiBvbGRPdXRsaW5lQm94LCBjb25zdCBMYXlvdXRSZWN0KiBuZXdC
b3VuZHNQdHIsIGNvbnN0IExheW91dFJlY3QqIG5ld091dGxpbmVCb3hSZWN0UHRyKQorYm9vbCBS
ZW5kZXJPYmplY3Q6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFJlY3QmIG9sZEJvdW5kcywg
Y29uc3QgTGF5b3V0UmVjdCYgb2xkT3V0bGluZUJveCwgY29uc3QgTGF5b3V0UmVjdCogbmV3Qm91
bmRzUHRyLCBjb25zdCBMYXlvdXRSZWN0KiBuZXdPdXRsaW5lQm94UmVjdFB0cikKIHsKICAgICBS
ZW5kZXJWaWV3KiB2ID0gdmlldygpOwogICAgIGlmICh2LT5wcmludGluZygpKQpAQCAtMTQ0NSwy
MCArMTQ0NSwyMCBAQCBib29sIFJlbmRlck9iamVjdDo6Y2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5
b3V0KCkgY29uc3QKICAgICByZXR1cm4gIWRvY3VtZW50KCktPnZpZXcoKS0+bmVlZHNGdWxsUmVw
YWludCgpICYmICFoYXNMYXllcigpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6cmVj
dFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlck9i
amVjdDo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QKIHsKICAg
ICBMYXlvdXRSZWN0IHIoY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRh
aW5lcikpOwogICAgIHIuaW5mbGF0ZShvdXRsaW5lV2lkdGgpOwogICAgIHJldHVybiByOwogfQog
Ci1MYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OmNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqKSBj
b25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBMYXlvdXRSZWN0
KCk7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wg
Zml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlck9iamVjdDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJl
Y3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXIgPT0gdGhp
cykKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ4OSw3ICsxNDg5LDcgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCosIEZsb2F0UmVjdCYsIGJvb2wpIGNvbnN0
Cit2b2lkIFJlbmRlck9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdCosIEZsb2F0UmVjdCYsIGJvb2wpIGNvbnN0CiB7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xNjUwLDcgKzE2NTAsNyBAQCBTdHlsZURpZmZlcmVuY2Ug
UmVuZGVyT2JqZWN0OjphZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYs
IHVuc2lnbgogICAgICAgICAvLyBUZXh0IG5vZGVzIHNoYXJlIHN0eWxlIHdpdGggdGhlaXIgcGFy
ZW50cyBidXQgdHJhbnNmb3JtcyBkb24ndCBhcHBseSB0byB0aGVtLAogICAgICAgICAvLyBoZW5j
ZSB0aGUgIWlzVGV4dCgpIGNoZWNrLgogICAgICAgICAvLyBGSVhNRTogd2hlbiB0cmFuc2Zvcm1z
IGFyZSB0YWtlbiBpbnRvIGFjY291bnQgZm9yIG92ZXJmbG93LCB3ZSB3aWxsIG5lZWQgdG8gZG8g
YSBsYXlvdXQuCi0gICAgICAgIGlmICghaXNUZXh0KCkgJiYgKCFoYXNMYXllcigpIHx8ICF0b1Jl
bmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkpIHsKKyAg
ICAgICAgaWYgKCFpc1RleHQoKSAmJiAoIWhhc0xheWVyKCkgfHwgIXRvUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkpKSB7CiAgICAgICAgICAg
ICAvLyBXZSBuZWVkIHRvIHNldCBhdCBsZWFzdCBTaW1wbGlmaWVkTGF5b3V0LCBidXQgaWYgUG9z
aXRpb25lZE1vdmVtZW50T25seSBpcyBhbHJlYWR5IHNldAogICAgICAgICAgICAgLy8gdGhlbiB3
ZSBhY3R1YWxseSBuZWVkIFNpbXBsaWZpZWRMYXlvdXRBbmRQb3NpdGlvbmVkTW92ZW1lbnQuCiAg
ICAgICAgICAgICBpZiAoIWhhc0xheWVyKCkpCkBAIC0xNjY2LDcgKzE2NjYsNyBAQCBTdHlsZURp
ZmZlcmVuY2UgUmVuZGVyT2JqZWN0OjphZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJl
bmNlIGRpZmYsIHVuc2lnbgogICAgIC8vIElmIG9wYWNpdHkgY2hhbmdlZCwgYW5kIHdlIGFyZSBu
b3QgY29tcG9zaXRlZCwgbmVlZCB0byByZXBhaW50IChhbHNvCiAgICAgLy8gaWdub3JpbmcgdGV4
dCBub2RlcykKICAgICBpZiAoY29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgJiBDb250ZXh0U2Vu
c2l0aXZlUHJvcGVydHlPcGFjaXR5KSB7Ci0gICAgICAgIGlmICghaXNUZXh0KCkgJiYgKCFoYXNM
YXllcigpIHx8ICF0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5pc0NvbXBv
c2l0ZWQoKSkpCisgICAgICAgIGlmICghaXNUZXh0KCkgJiYgKCFoYXNMYXllcigpIHx8ICF0b1Jl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpKSkK
ICAgICAgICAgICAgIGRpZmYgPSBTdHlsZURpZmZlcmVuY2VSZXBhaW50TGF5ZXI7CiAgICAgICAg
IGVsc2UgaWYgKGRpZmYgPCBTdHlsZURpZmZlcmVuY2VSZWNvbXBvc2l0ZUxheWVyKQogICAgICAg
ICAgICAgZGlmZiA9IFN0eWxlRGlmZmVyZW5jZVJlY29tcG9zaXRlTGF5ZXI7CkBAIC0xNjc0LDcg
KzE2NzQsNyBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyT2JqZWN0OjphZGp1c3RTdHlsZURpZmZl
cmVuY2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIHVuc2lnbgogICAgIAogI2lmIEVOQUJMRShDU1Nf
RklMVEVSUykKICAgICBpZiAoKGNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzICYgQ29udGV4dFNl
bnNpdGl2ZVByb3BlcnR5RmlsdGVyKSAmJiBoYXNMYXllcigpKSB7Ci0gICAgICAgIFJlbmRlckxh
eWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCk7CisgICAg
ICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCh0aGlz
KS0+bGF5ZXIoKTsKICAgICAgICAgaWYgKCFsYXllci0+aXNDb21wb3NpdGVkKCkgfHwgbGF5ZXIt
PnBhaW50c1dpdGhGaWx0ZXJzKCkpCiAgICAgICAgICAgICBkaWZmID0gU3R5bGVEaWZmZXJlbmNl
UmVwYWludExheWVyOwogICAgICAgICBlbHNlIGlmIChkaWZmIDwgU3R5bGVEaWZmZXJlbmNlUmVj
b21wb3NpdGVMYXllcikKQEAgLTE2ODUsOCArMTY4NSw4IEBAIFN0eWxlRGlmZmVyZW5jZSBSZW5k
ZXJPYmplY3Q6OmFkanVzdFN0eWxlRGlmZmVyZW5jZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgdW5z
aWduCiAgICAgLy8gVGhlIGFuc3dlciB0byByZXF1aXJlc0xheWVyKCkgZm9yIHBsdWdpbnMgYW5k
IGlmcmFtZXMgY2FuIGNoYW5nZSBvdXRzaWRlIG9mIHRoZSBzdHlsZSBzeXN0ZW0sCiAgICAgLy8g
c2luY2UgaXQgZGVwZW5kcyBvbiB3aGV0aGVyIHdlIGRlY2lkZSB0byBjb21wb3NpdGUgdGhlc2Ug
ZWxlbWVudHMuIFdoZW4gdGhlIGxheWVyIHN0YXR1cyBvZgogICAgIC8vIG9uZSBvZiB0aGVzZSBl
bGVtZW50cyBjaGFuZ2VzLCB3ZSBuZWVkIHRvIGZvcmNlIGEgbGF5b3V0LgotICAgIGlmIChkaWZm
ID09IFN0eWxlRGlmZmVyZW5jZUVxdWFsICYmIHN0eWxlKCkgJiYgaXNCb3hNb2RlbE9iamVjdCgp
KSB7Ci0gICAgICAgIGlmIChoYXNMYXllcigpICE9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhp
cyktPnJlcXVpcmVzTGF5ZXIoKSkKKyAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VFcXVh
bCAmJiBzdHlsZSgpICYmIGlzVHJhbnNmb3JtYWJsZU9iamVjdCgpKSB7CisgICAgICAgIGlmICho
YXNMYXllcigpICE9IHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCh0aGlzKS0+cmVxdWlyZXNM
YXllcigpKQogICAgICAgICAgICAgZGlmZiA9IFN0eWxlRGlmZmVyZW5jZUxheW91dDsKICAgICB9
CiAjZWxzZQpAQCAtMTk4OCw3ICsxOTg4LDcgQEAgRmxvYXRQb2ludCBSZW5kZXJPYmplY3Q6OmFi
c29sdXRlVG9Mb2NhbChjb25zdCBGbG9hdFBvaW50JiBjb250YWluZXJQb2ludCwgYm9vbAogICAg
IHJldHVybiB0cmFuc2Zvcm1TdGF0ZS5sYXN0UGxhbmFyUG9pbnQoKTsKIH0KIAotdm9pZCBSZW5k
ZXJPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3Rh
dGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4
ZWQpIGNvbnN0Cit2b2lkIFJlbmRlck9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVz
ZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWlu
ZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29u
dGFpbmVyID09IHRoaXMpCiAgICAgICAgIHJldHVybjsKQEAgLTIwMTMsNyArMjAxMyw3IEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBiCiAgICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50
Q29udGFpbmVyLCBmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUsIERvTm90QXBw
bHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVu
ZGVyT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNv
bnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRh
aW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBS
ZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgQVNTRVJUX1VOVVNF
RChhbmNlc3RvclRvU3RvcEF0LCBhbmNlc3RvclRvU3RvcEF0ICE9IHRoaXMpOwogCkBAIC0yMDQ2
LDcgKzIwNDYsNyBAQCBib29sIFJlbmRlck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNv
bnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIGNvbnRhaW5lcgogI2lmIEVOQUJMRSgzRF9SRU5E
RVJJTkcpCiAgICAgLy8gaGFzVHJhbnNmb3JtKCkgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIG9iamVj
dCBoYXMgdHJhbnNmb3JtLCB0cmFuc2Zvcm0tc3R5bGUgb3IgcGVyc3BlY3RpdmUuIFdlIGp1c3Qg
Y2FyZSBhYm91dCB0cmFuc2Zvcm0sCiAgICAgLy8gc28gY2hlY2sgdGhlIGxheWVyJ3MgdHJhbnNm
b3JtIGRpcmVjdGx5LgotICAgIHJldHVybiAoaGFzTGF5ZXIoKSAmJiB0b1JlbmRlckJveE1vZGVs
T2JqZWN0KHRoaXMpLT5sYXllcigpLT50cmFuc2Zvcm0oKSkgfHwgKGNvbnRhaW5lck9iamVjdCAm
JiBjb250YWluZXJPYmplY3QtPnN0eWxlKCktPmhhc1BlcnNwZWN0aXZlKCkpOworICAgIHJldHVy
biAoaGFzTGF5ZXIoKSAmJiB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVy
KCktPnRyYW5zZm9ybSgpKSB8fCAoY29udGFpbmVyT2JqZWN0ICYmIGNvbnRhaW5lck9iamVjdC0+
c3R5bGUoKS0+aGFzUGVyc3BlY3RpdmUoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250
YWluZXJPYmplY3QpOwogICAgIHJldHVybiBoYXNUcmFuc2Zvcm0oKTsKQEAgLTIwNTgsMTQgKzIw
NTgsMTQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIoY29u
c3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXJPYmplY3QKICAgICB0cmFuc2Zvcm0ubWFrZUlkZW50
aXR5KCk7CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvZmZzZXRJbkNvbnRhaW5lci53aWR0aCgp
LCBvZmZzZXRJbkNvbnRhaW5lci5oZWlnaHQoKSk7CiAgICAgUmVuZGVyTGF5ZXIqIGxheWVyOwot
ICAgIGlmIChoYXNMYXllcigpICYmIChsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhp
cyktPmxheWVyKCkpICYmIGxheWVyLT50cmFuc2Zvcm0oKSkKKyAgICBpZiAoaGFzTGF5ZXIoKSAm
JiAobGF5ZXIgPSB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCkpICYm
IGxheWVyLT50cmFuc2Zvcm0oKSkKICAgICAgICAgdHJhbnNmb3JtLm11bHRpcGx5KGxheWVyLT5j
dXJyZW50VHJhbnNmb3JtKCkpOwogICAgIAogI2lmIEVOQUJMRSgzRF9SRU5ERVJJTkcpCiAgICAg
aWYgKGNvbnRhaW5lck9iamVjdCAmJiBjb250YWluZXJPYmplY3QtPmhhc0xheWVyKCkgJiYgY29u
dGFpbmVyT2JqZWN0LT5zdHlsZSgpLT5oYXNQZXJzcGVjdGl2ZSgpKSB7CiAgICAgICAgIC8vIFBl
cnBzZWN0aXZlIG9uIHRoZSBjb250YWluZXIgYWZmZWN0cyB1cywgc28gd2UgaGF2ZSB0byBmYWN0
b3IgaXQgaW4gaGVyZS4KICAgICAgICAgQVNTRVJUKGNvbnRhaW5lck9iamVjdC0+aGFzTGF5ZXIo
KSk7Ci0gICAgICAgIEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4gPSB0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KGNvbnRhaW5lck9iamVjdCktPmxheWVyKCktPnBlcnNwZWN0aXZlT3JpZ2luKCk7
CisgICAgICAgIEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4gPSB0b1JlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QoY29udGFpbmVyT2JqZWN0KS0+bGF5ZXIoKS0+cGVyc3BlY3RpdmVPcmlnaW4o
KTsKIAogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwZXJzcGVjdGl2ZU1hdHJpeDsKICAg
ICAgICAgcGVyc3BlY3RpdmVNYXRyaXguYXBwbHlQZXJzcGVjdGl2ZShjb250YWluZXJPYmplY3Qt
PnN0eWxlKCktPnBlcnNwZWN0aXZlKCkpOwpAQCAtMjA3OSw3ICsyMDc5LDcgQEAgdm9pZCBSZW5k
ZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBj
b250YWluZXJPYmplY3QKICNlbmRpZgogfQogCi1GbG9hdFF1YWQgUmVuZGVyT2JqZWN0Ojpsb2Nh
bFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmIGxvY2FsUXVhZCwgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wqIHdhc0ZpeGVkKSBj
b25zdAorRmxvYXRRdWFkIFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclF1YWQoY29uc3Qg
RmxvYXRRdWFkJiBsb2NhbFF1YWQsIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIC8vIFRy
YWNrIHRoZSBwb2ludCBhdCB0aGUgY2VudGVyIG9mIHRoZSBxdWFkJ3MgYm91bmRpbmcgYm94LiBB
cyBtYXBMb2NhbFRvQ29udGFpbmVyKCkgY2FsbHMgb2Zmc2V0RnJvbUNvbnRhaW5lcigpLAogICAg
IC8vIGl0IHdpbGwgdXNlIHRoYXQgcG9pbnQgYXMgdGhlIHJlZmVyZW5jZSBwb2ludCB0byBkZWNp
ZGUgd2hpY2ggY29sdW1uJ3MgdHJhbnNmb3JtIHRvIGFwcGx5IGluIG11bHRpcGxlLWNvbHVtbiBi
bG9ja3MuCkBAIC0yMDkwLDcgKzIwOTAsNyBAQCBGbG9hdFF1YWQgUmVuZGVyT2JqZWN0Ojpsb2Nh
bFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmIGxvY2FsUXVhZCwgUmVuZGVyQgogICAg
IHJldHVybiB0cmFuc2Zvcm1TdGF0ZS5sYXN0UGxhbmFyUXVhZCgpOwogfQogCi1GbG9hdFBvaW50
IFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGxv
Y2FsUG9pbnQsIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZp
eGVkLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK0Zsb2F0UG9pbnQgUmVuZGVyT2JqZWN0Ojpsb2Nh
bFRvQ29udGFpbmVyUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgbG9jYWxQb2ludCwgUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCogd2Fz
Rml4ZWQpIGNvbnN0CiB7CiAgICAgVHJhbnNmb3JtU3RhdGUgdHJhbnNmb3JtU3RhdGUoVHJhbnNm
b3JtU3RhdGU6OkFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uLCBsb2NhbFBvaW50KTsKICAgICBtYXBM
b2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZpeGVkLCB0cnVlLCB0cmFuc2Zvcm1T
dGF0ZSwgQXBwbHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CkBAIC0yMTg4LDcgKzIxODgsNyBA
QCBib29sIFJlbmRlck9iamVjdDo6aGFzT3V0bGluZUFubm90YXRpb24oKSBjb25zdAogICAgIHJl
dHVybiBub2RlKCkgJiYgbm9kZSgpLT5pc0xpbmsoKSAmJiBkb2N1bWVudCgpLT5wcmludGluZygp
OwogfQogCi1SZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyKGNvbnN0IFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sKiByZXBhaW50Q29udGFpbmVy
U2tpcHBlZCkgY29uc3QKK1JlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojpjb250YWluZXIoY29u
c3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCogcmVw
YWludENvbnRhaW5lclNraXBwZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXJT
a2lwcGVkKQogICAgICAgICAqcmVwYWludENvbnRhaW5lclNraXBwZWQgPSBmYWxzZTsKQEAgLTIz
MjEsNyArMjMyMSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAg
IC8vIGJlIG1vdmVkIGludG8gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlc3Ryb3kuCiAgICAgaWYg
KGhhc0xheWVyKCkpIHsKICAgICAgICAgc2V0SGFzTGF5ZXIoZmFsc2UpOwotICAgICAgICB0b1Jl
bmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5kZXN0cm95TGF5ZXIoKTsKKyAgICAgICAgdG9SZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KHRoaXMpLT5kZXN0cm95TGF5ZXIoKTsKICAgICB9CiAKICAg
ICBzZXRBbmNlc3RvckxpbmVCb3hEaXJ0eShmYWxzZSk7CkBAIC0yNDEyLDcgKzI0MTIsNyBAQCB2
b2lkIFJlbmRlck9iamVjdDo6dXBkYXRlRHJhZ1N0YXRlKGJvb2wgZHJhZ09uKQogCiBib29sIFJl
bmRlck9iamVjdDo6aXNDb21wb3NpdGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzTGF5ZXIo
KSAmJiB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQo
KTsKKyAgICByZXR1cm4gaGFzTGF5ZXIoKSAmJiB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qo
dGhpcyktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOwogfQogCiBib29sIFJlbmRlck9iamVjdDo6
aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVz
dWx0LCBjb25zdCBIaXRUZXN0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEZpbHRlciBoaXRUZXN0RmlsdGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDYwYzU2OTA5Y2NiNWNlMGRl
NjY3Y2Q5NzY3ZWIzMWYwN2I0YjFlMmUuLmNjZWFmNzBiZjQzN2QwODAxMTllNmUyMmE2NWQwOWY0
NDVmZGQ4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTU5
LDYgKzU5LDcgQEAgY2xhc3MgUmVuZGVyQmxvY2s7CiBjbGFzcyBSZW5kZXJGbG93VGhyZWFkOwog
Y2xhc3MgUmVuZGVyR2VvbWV0cnlNYXA7CiBjbGFzcyBSZW5kZXJMYXllcjsKK2NsYXNzIFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3Q7CiBjbGFzcyBSZW5kZXJUYWJsZTsKIGNsYXNzIFJlbmRlclRo
ZW1lOwogY2xhc3MgVHJhbnNmb3JtU3RhdGU7CkBAIC0zNTAsNiArMzUxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0QXJlYSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzVGV4dEZpZWxkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNUcmFuc2Zvcm1hYmxlT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzV2lkZ2V0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNDYW52YXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNTg1
LDcgKzU4Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBvYmplY3QgY29udGFpbmlu
ZyB0aGlzIG9uZS4gQ2FuIGJlIGRpZmZlcmVudCBmcm9tIHBhcmVudCBmb3IgcG9zaXRpb25lZCBl
bGVtZW50cy4KICAgICAvLyBJZiByZXBhaW50Q29udGFpbmVyIGFuZCByZXBhaW50Q29udGFpbmVy
U2tpcHBlZCBhcmUgbm90IG51bGwsIG9uIHJldHVybiAqcmVwYWludENvbnRhaW5lclNraXBwZWQK
ICAgICAvLyBpcyB0cnVlIGlmIHRoZSByZW5kZXJlciByZXR1cm5lZCBpcyBhbiBhbmNlc3RvciBv
ZiByZXBhaW50Q29udGFpbmVyLgotICAgIFJlbmRlck9iamVjdCogY29udGFpbmVyKGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gMCwgYm9vbCogcmVwYWludENv
bnRhaW5lclNraXBwZWQgPSAwKSBjb25zdDsKKyAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5lcihj
b25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gMCwgYm9v
bCogcmVwYWludENvbnRhaW5lclNraXBwZWQgPSAwKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBob3ZlckFuY2VzdG9yKCkgY29uc3QgeyByZXR1cm4gcGFyZW50KCk7IH0KIApA
QCAtNjgxLDggKzY4Myw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBDb252ZXJ0IGEgbG9j
YWwgcXVhZCBpbnRvIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiBjb250YWluZXIsIHRha2luZyB0
cmFuc2Zvcm1zIGludG8gYWNjb3VudC4KLSAgICBGbG9hdFF1YWQgbG9jYWxUb0NvbnRhaW5lclF1
YWQoY29uc3QgRmxvYXRRdWFkJiwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIGJvb2wgZml4ZWQgPSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKLSAgICBG
bG9hdFBvaW50IGxvY2FsVG9Db250YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiwgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQgPSBmYWxzZSwgYm9v
bCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICBGbG9hdFF1YWQgbG9jYWxUb0NvbnRhaW5lclF1
YWQoY29uc3QgRmxvYXRRdWFkJiwgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCBmaXhlZCA9IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0Owor
ICAgIEZsb2F0UG9pbnQgbG9jYWxUb0NvbnRhaW5lclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmLCBS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkID0g
ZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm4gdGhlIG9m
ZnNldCBmcm9tIHRoZSBjb250YWluZXIoKSByZW5kZXJlciAoZXhjbHVkaW5nIHRyYW5zZm9ybXMp
LiBJbiBtdWx0aS1jb2x1bW4gbGF5b3V0LAogICAgIC8vIGRpZmZlcmVudCBvZmZzZXRzIGFwcGx5
IGF0IGRpZmZlcmVudCBwb2ludHMsIHNvIHJldHVybiB0aGUgb2Zmc2V0IHRoYXQgYXBwbGllcyB0
byB0aGUgZ2l2ZW4gcG9pbnQuCkBAIC03MjMsMTMgKzcyNSwxMyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGdldFRleHREZWNvcmF0aW9uQ29sb3JzKGludCBkZWNvcmF0aW9ucywgQ29sb3ImIHVuZGVy
bGluZSwgQ29sb3ImIG92ZXJsaW5lLCBDb2xvciYgbGluZXRocm91Z2gsIGJvb2wgcXVpcmtzTW9k
ZSA9IGZhbHNlLCBib29sIGZpcnN0bGluZVN0eWxlID0gZmFsc2UpOwogCi0gICAgLy8gUmV0dXJu
IHRoZSBSZW5kZXJCb3ggaW4gdGhlIGNvbnRhaW5lciBjaGFpbiB3aGljaCBpcyByZXNwb25zaWJs
ZSBmb3IgcGFpbnRpbmcgdGhpcyBvYmplY3QsIG9yIDAKKyAgICAvLyBSZXR1cm4gdGhlIFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QgaW4gdGhlIGNvbnRhaW5lciBjaGFpbiB3aGljaCBpcyByZXNw
b25zaWJsZSBmb3IgcGFpbnRpbmcgdGhpcyBvYmplY3QsIG9yIDAKICAgICAvLyBpZiBwYWludGlu
ZyBpcyByb290LXJlbGF0aXZlLiBUaGlzIGlzIHRoZSBjb250YWluZXIgdGhhdCBzaG91bGQgYmUg
cGFzc2VkIHRvIHRoZSAnZm9yUmVwYWludCcKICAgICAvLyBtZXRob2RzLgotICAgIFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBjb250YWluZXJGb3JSZXBhaW50KCkgY29uc3Q7CisgICAgUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdCogY29udGFpbmVyRm9yUmVwYWludCgpIGNvbnN0OwogICAgIC8vIEFj
dHVhbGx5IGRvIHRoZSByZXBhaW50IG9mIHJlY3QgciBmb3IgdGhpcyBvYmplY3Qgd2hpY2ggaGFz
IGJlZW4gY29tcHV0ZWQgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2UKICAgICAvLyBvZiByZXBhaW50
Q29udGFpbmVyLiBJZiByZXBhaW50Q29udGFpbmVyIGlzIDAsIHJlcGFpbnQgdmlhIHRoZSB2aWV3
LgotICAgIHZvaWQgcmVwYWludFVzaW5nQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCBpbW1lZGlhdGUgPSBmYWxz
ZSk7CisgICAgdm9pZCByZXBhaW50VXNpbmdDb250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYsIGJvb2wgaW1tZWRpYXRl
ID0gZmFsc2UpOwogICAgIAogICAgIC8vIFJlcGFpbnQgdGhlIGVudGlyZSBvYmplY3QuICBDYWxs
ZWQgd2hlbiwgZS5nLiwgdGhlIGNvbG9yIG9mIGEgYm9yZGVyIGNoYW5nZXMsIG9yIHdoZW4gYSBi
b3JkZXIKICAgICAvLyBzdHlsZSBjaGFuZ2VzLgpAQCAtNzM5LDcgKzc0MSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlcGFpbnRSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYsIGJvb2wgaW1tZWRp
YXRlID0gZmFsc2UpOwogCiAgICAgLy8gUmVwYWludCBvbmx5IGlmIG91ciBvbGQgYm91bmRzIGFu
ZCBuZXcgYm91bmRzIGFyZSBkaWZmZXJlbnQuIFRoZSBjYWxsZXIgbWF5IHBhc3MgaW4gbmV3Qm91
bmRzIGFuZCBuZXdPdXRsaW5lQm94IGlmIHRoZXkgYXJlIGtub3duLgotICAgIGJvb2wgcmVwYWlu
dEFmdGVyTGF5b3V0SWZOZWVkZWQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIGNvbnN0IExheW91dFJlY3QmIG9sZEJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgb2xkT3V0
bGluZUJveCwgY29uc3QgTGF5b3V0UmVjdCogbmV3Qm91bmRzUHRyID0gMCwgY29uc3QgTGF5b3V0
UmVjdCogbmV3T3V0bGluZUJveFB0ciA9IDApOworICAgIGJvb2wgcmVwYWludEFmdGVyTGF5b3V0
SWZOZWVkZWQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29u
c3QgTGF5b3V0UmVjdCYgb2xkQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRPdXRsaW5lQm94
LCBjb25zdCBMYXlvdXRSZWN0KiBuZXdCb3VuZHNQdHIgPSAwLCBjb25zdCBMYXlvdXRSZWN0KiBu
ZXdPdXRsaW5lQm94UHRyID0gMCk7CiAKICAgICAvLyBSZXBhaW50IG9ubHkgaWYgdGhlIG9iamVj
dCBtb3ZlZC4KICAgICB2aXJ0dWFsIHZvaWQgcmVwYWludER1cmluZ0xheW91dElmTW92ZWQoY29u
c3QgTGF5b3V0UmVjdCYpOwpAQCAtNzU2LDggKzc1OCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KDApOwogICAgIH0KICAgICBJbnRSZWN0
IHBpeGVsU25hcHBlZEFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRS
ZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRS
ZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0OwogCiAgICAg
Ly8gR2l2ZW4gYSByZWN0IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNlLCBjb21wdXRl
IGEgcmVjdCBzdWl0YWJsZSBmb3IgcmVwYWludGluZwogICAgIC8vIHRoYXQgcmVjdCBpbiB2aWV3
IGNvb3JkaW5hdGVzLgpAQCAtNzY3LDggKzc2OSw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgLy8g
R2l2ZW4gYSByZWN0IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNlLCBjb21wdXRlIGEg
cmVjdCBzdWl0YWJsZSBmb3IgcmVwYWludGluZwogICAgIC8vIHRoYXQgcmVjdCBpbiB0aGUgY29v
cmRpbmF0ZSBzcGFjZSBvZiByZXBhaW50Q29udGFpbmVyLgotICAgIHZpcnR1YWwgdm9pZCBjb21w
dXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCA9IGZhbHNlKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVk
ID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVw
YWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJl
Y3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwogCiAgICAgLy8gSWYg
bXVsdGlwbGUtY29sdW1uIGxheW91dCByZXN1bHRzIGluIGFwcGx5aW5nIGFuIG9mZnNldCB0byB0
aGUgZ2l2ZW4gcG9pbnQsIGFkZCB0aGUgc2FtZQogICAgIC8vIG9mZnNldCB0byB0aGUgZ2l2ZW4g
c2l6ZS4KQEAgLTgxMCw3ICs4MTIsNyBAQCBwdWJsaWM6CiAgICAgLy8gQSBzaW5nbGUgcmVjdGFu
Z2xlIHRoYXQgZW5jb21wYXNzZXMgYWxsIG9mIHRoZSBzZWxlY3RlZCBvYmplY3RzIHdpdGhpbiB0
aGlzIG9iamVjdC4gIFVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB0aWdodGVzdAogICAgIC8vIHBvc3Np
YmxlIGJvdW5kaW5nIGJveCBmb3IgdGhlIHNlbGVjdGlvbi4KICAgICBMYXlvdXRSZWN0IHNlbGVj
dGlvblJlY3QoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIHsgcmV0dXJuIHNlbGVj
dGlvblJlY3RGb3JSZXBhaW50KDAsIGNsaXBUb1Zpc2libGVDb250ZW50KTsgfQotICAgIHZpcnR1
YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogLypyZXBhaW50Q29udGFpbmVyKi8sIGJvb2wgLypjbGlwVG9WaXNpYmxlQ29udGVudCovID0g
dHJ1ZSkgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNl
bGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIC8qcmVwYWlu
dENvbnRhaW5lciovLCBib29sIC8qY2xpcFRvVmlzaWJsZUNvbnRlbnQqLyA9IHRydWUpIHsgcmV0
dXJuIExheW91dFJlY3QoKTsgfQogCiAgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVh
ZigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYXNTZWxlY3RlZENoaWxkcmVu
KCkgY29uc3QgeyByZXR1cm4gc2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lOyB9CkBA
IC04ODAsMTIgKzg4MiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gTWFwIHBvaW50cyBhbmQgcXVhZHMg
dGhyb3VnaCBlbGVtZW50cywgcG90ZW50aWFsbHkgdmlhIDNkIHRyYW5zZm9ybXMuIFlvdSBzaG91
bGQgbmV2ZXIgbmVlZCB0byBjYWxsIHRoZXNlIGRpcmVjdGx5OyB1c2UKICAgICAvLyBsb2NhbFRv
QWJzb2x1dGUvYWJzb2x1dGVUb0xvY2FsIG1ldGhvZHMgaW5zdGVhZC4KICAgICBlbnVtIEFwcGx5
Q29udGFpbmVyRmxpcE9yTm90IHsgRG9Ob3RBcHBseUNvbnRhaW5lckZsaXAsIEFwcGx5Q29udGFp
bmVyRmxpcCB9OwotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wg
Zml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNv
bnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYs
IEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNG
aXhlZCA9IDApIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2lu
dChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7
CiAKICAgICAvLyBQdXNoZXMgc3RhdGUgb250byBSZW5kZXJHZW9tZXRyeU1hcCBhYm91dCBob3cg
dG8gbWFwIGNvb3JkaW5hdGVzIGZyb20gdGhpcyByZW5kZXJlciB0byBpdHMgY29udGFpbmVyLCBv
ciBhbmNlc3RvclRvU3RvcEF0ICh3aGljaGV2ZXIgaXMgZW5jb3VudGVyZWQgZmlyc3QpLgogICAg
IC8vIFJldHVybnMgdGhlIHJlbmRlcmVyIHdoaWNoIHdhcyBtYXBwZWQgdG8gKGNvbnRhaW5lciBv
ciBhbmNlc3RvclRvU3RvcEF0KS4KLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVz
aE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JU
b1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IFJl
bmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0Owog
ICAgIAogICAgIGJvb2wgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5k
ZXJPYmplY3QqIGNvbnRhaW5lcikgY29uc3Q7CiAgICAgdm9pZCBnZXRUcmFuc2Zvcm1Gcm9tQ29u
dGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogY29udGFpbmVyLCBjb25zdCBMYXlvdXRTaXplJiBv
ZmZzZXRJbkNvbnRhaW5lciwgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBjb25zdDsKQEAgLTkyNiw3
ICs5MjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgp
OwogICAgIHZvaWQgYXJlbmFEZWxldGUoUmVuZGVyQXJlbmEqLCB2b2lkKiBvYmplY3RCYXNlKTsK
IAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogLypyZXBhaW50Q29udGFpbmVyKi8sIExheW91dFBvaW50KiAvKmNhY2hl
ZE9mZnNldFRvUmVwYWludENvbnRhaW5lciovID0gMCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVj
dCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBMYXlvdXRQb2lu
dCogLypjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIqLyA9IDApIGNvbnN0IHsgcmV0dXJu
IExheW91dFJlY3QoKTsgfQogCiBwcml2YXRlOgogICAgIFJlbmRlclN0eWxlKiBmaXJzdExpbmVT
dHlsZVNsb3dDYXNlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmNwcAppbmRleCAyZTBkNzQ3M2JiNTJjNjdjYjg1YTg4ZTZiOWUxMGYzYWQ4NjgxYmU4
Li4wZWNiOTUwZTUzNzRmYTBiYzA0MTBlZTljNTE4MTYxOTliNjNmNWQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTQ2MSw3ICs0NjEsNyBAQCBW
aXNpYmxlUG9zaXRpb24gUmVuZGVyUmVwbGFjZWQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5
b3V0UG9pbnQmIHBvaW50KQogICAgIHJldHVybiBSZW5kZXJCb3g6OnBvc2l0aW9uRm9yUG9pbnQo
cG9pbnQpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpzZWxlY3Rpb25SZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlw
VG9WaXNpYmxlQ29udGVudCkKK0xheW91dFJlY3QgUmVuZGVyUmVwbGFjZWQ6OnNlbGVjdGlvblJl
Y3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpCiB7CiAgICAgQVNTRVJUKCFuZWVkc0xheW91dCgp
KTsKIApAQCAtNTI2LDcgKzUyNiw3IEBAIGJvb2wgUmVuZGVyUmVwbGFjZWQ6OmlzU2VsZWN0ZWQo
KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNl
ZDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyKSBjb25zdAogewogICAgIGlmIChzdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklT
SUJMRSAmJiAhZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKICAgICAgICAg
cmV0dXJuIExheW91dFJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmgKaW5kZXggOWViYzYzNGIwMzIzOTE0OGU1MmMxZmM2YjY1ZGFiM2Q2ZDViZDhiZC4uNzI1
ZGYxMzlmZjkxY2YyOGY0ZmQzOTE2OWZhYTE1OTg3ZmI3YzBiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTcwLDEzICs3MCwxMyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpOwogICAgIHZp
cnR1YWwgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikg
eyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OworICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNs
aXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSk7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVj
dGlvblJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBPVkVSUklERTsKICAgICB2
b2lkIGNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uRm9yUmVuZGVyQm94KFJlbmRlckJv
eCosIEZsb2F0U2l6ZSYgaW50cmluc2ljU2l6ZSwgZG91YmxlJiBpbnRyaW5zaWNSYXRpbywgYm9v
bCYgaXNQZXJjZW50YWdlSW50cmluc2ljU2l6ZSkgY29uc3Q7CiAKICAgICBJbnRTaXplIG1faW50
cmluc2ljU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
ZWxlY3Rpb25JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VsZWN0aW9u
SW5mby5oCmluZGV4IDg5MzZhMzc3ZTY2NTQzMDFjYTVhNGNmNDY2ZDNiNzk1Yjk4ZDM5ZDcuLjAz
YzcxNTExMTY5OWU1OTEyNGViMzhmYzZlNzAzYTdkZGVlMzA3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uaApAQCAtNDgsMTIgKzQ4LDEyIEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgUmVuZGVyT2JqZWN0KiBvYmplY3QoKSBjb25zdCB7
IHJldHVybiBtX29iamVjdDsgfQotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50Q29udGFpbmVyOyB9CisgICAgUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVwYWludENvbnRhaW5lcjsgfQogICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc3Rh
dGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAKIHByb3RlY3RlZDoKICAgICBSZW5kZXJP
YmplY3QqIG1fb2JqZWN0OwotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBtX3JlcGFpbnRDb250
YWluZXI7CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogbV9yZXBhaW50Q29udGFpbmVy
OwogICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgbV9zdGF0ZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggMTU5YjU0YjNi
MzhlYjhjOWU4N2EwYjllZTgwYjYxYTBjMWIzZGJiNy4uODMwZTUzMTNkZGU2ZDk3YjE5YTg0ZjRm
OTE2MGZlZmVhYjZjZWNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5jcHAKQEAgLTI1MCw3ICsyNTAsNyBAQCBMYXlvdXRTaXplIFJlbmRlclRhYmxlQ2Vs
bDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IExheW91dFBvaQog
ICAgIHJldHVybiBvZmZzZXQ7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyVGFibGVDZWxsOjpjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyVGFibGVDZWxsOjpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKSBjb25zdAogewogICAgIC8vIElmIHRoZSB0YWJsZSBncmlkIGlzIGRpcnR5LCB3ZSBjYW5u
b3QgZ2V0IHJlbGlhYmxlIGluZm9ybWF0aW9uIGFib3V0IGFkam9pbmluZyBjZWxscywKICAgICAv
LyBzbyB3ZSBpZ25vcmUgb3V0c2lkZSBib3JkZXJzLiBUaGlzIHNob3VsZCBub3QgYmUgYSBwcm9i
bGVtIGJlY2F1c2UgaXQgbWVhbnMgdGhhdApAQCAtMzAxLDcgKzMwMSw3IEBAIExheW91dFJlY3Qg
UmVuZGVyVGFibGVDZWxsOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCoKICAgICByZXR1cm4gcjsKIH0KIAotdm9pZCBSZW5kZXJUYWJsZUNlbGw6OmNv
bXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0UmVjdCYgciwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyVGFibGVDZWxs
Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgTGF5b3V0UmVjdCYgciwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBpZiAo
cmVwYWludENvbnRhaW5lciA9PSB0aGlzKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKaW5kZXggNDM4MTU1NWNkZDBkMzA1YjBkNzEx
NTVkMWJiZThjYzZiMGEwMTA1MC4uOWRkOTE2OTc0ZDM2NjlhNjIxOTY4NmM2ZWQzNDBmMTkwYzYy
OTljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAt
MTg3LDggKzE4Nyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGJveFNoYWRvd1Nob3Vs
ZEJlQXBwbGllZFRvQmFja2dyb3VuZChCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZs
b3dCb3gqKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRG
cm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zm
c2V0RGVwZW5kc09uUG9pbnQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29s
IGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JS
ZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91
dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgaW50IGJv
cmRlckhhbGZMZWZ0KGJvb2wgb3V0ZXIpIGNvbnN0OwogICAgIGludCBib3JkZXJIYWxmUmlnaHQo
Ym9vbCBvdXRlcikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q29sLmNwcAppbmRleCA5N2NkOGNjM2VkMDk1NjhmNjg5MTYwYTUwZGU4Njk0MzcwMGNkZTI5Li4x
NTRjOWYyMTE5ZmNlY2I3Njg5NGQ3OTkxOWFlMDlkYjIzYWI3ZDJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBS
ZW5kZXJUYWJsZUNvbDo6Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QKICAgICByZXR1cm4gaXNUYWJs
ZUNvbHVtbkdyb3VwKCk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyVGFibGVDb2w6OmNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJUYWJsZUNvbDo6Y2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikg
Y29uc3QKIHsKICAgICAvLyBGb3Igbm93LCBqdXN0IHJlcGFpbnQgdGhlIHdob2xlIHRhYmxlLgog
ICAgIC8vIEZJWE1FOiBGaW5kIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLCBlLmcuLCBuZWVkIHRv
IHJlcGFpbnQgYWxsIHRoZSBjZWxscyB0aGF0IHdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNvbC5oCmluZGV4IDYyZjMyODhlOGQ2NjM4NzQwZjY5ZWY2MWRmNjg3YWJiZWJj
MjQyMWMuLjQwZWMxM2U1YmYyMzk1ZWYyOTAyYmE5NzkyMDNjNTE3ZDNlZTNlNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCkBAIC03OSw3ICs3OSw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlv
dXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApOwogCiAg
ICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVSb3cuY3BwCmluZGV4IDBlNDI0YmMxMTJiMmYwMGFkYjQ0OTk1MTJiZTllZTM0ZTNkZDY5OTQu
LjEzM2E0MDE1YzI2NzMzNjIzOTY4ZTZkOGE1NWQ0MDRkN2I1YmFjYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZv
aWQgUmVuZGVyVGFibGVSb3c6OmxheW91dCgpCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwog
fQogCi1MYXlvdXRSZWN0IFJlbmRlclRhYmxlUm93OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91
dFJlY3QgUmVuZGVyVGFibGVSb3c6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKHBhcmVudCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlUm93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cu
aAppbmRleCBhZmE4MzhjMTI1NDYxYmU1ZmMzNTVkMDI2NWRjZDMxY2VmNmEyYzMxLi5mM2ZhM2Ix
ZjJmNGFhNjlkMjNmZWI1Y2FmOGZkZTY2MDQ5Y2Q0NmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVSb3cuaApAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogCiAgICAg
dmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCog
YmVmb3JlQ2hpbGQgPSAwKTsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci0gICAgdmlydHVh
bCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qg
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIG5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRl
c3RQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1
aXJlc0xheWVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gaXNUcmFuc3BhcmVudCgpIHx8IGhh
c092ZXJmbG93Q2xpcCgpIHx8IGhhc1RyYW5zZm9ybSgpIHx8IGhhc0hpZGRlbkJhY2tmYWNlKCkg
fHwgaGFzTWFzaygpIHx8IGhhc0ZpbHRlcigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKaW5kZXggYmFmOTU0NzVjZDQwYzQxMDA5MzcwOTRmNGMzMmM5NWEwYjc0ZGUx
YS4uZmNiYjIxY2IwNzBhNDE0YzBhZTYxYTdmNGYyN2Q5MmU2ZjM1MjBkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTYxOCw3ICsxNjE4LDcgQEAgTGF5b3V0
UmVjdCBSZW5kZXJUZXh0OjpsaW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBjb25zdAog
ICAgIHJldHVybiByZWN0OwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclRleHQ6OmNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAog
ewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXJUb1JlcGFpbnQgPSBjb250YWluaW5nQmxvY2so
KTsKIApAQCAtMTYzNCw3ICsxNjM0LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWkKICAgICBy
ZXR1cm4gcmVuZGVyZXJUb1JlcGFpbnQtPmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJl
cGFpbnRDb250YWluZXIpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclRleHQ6OnNlbGVjdGlvblJl
Y3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29s
IGNsaXBUb1Zpc2libGVDb250ZW50KQorTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpzZWxlY3Rpb25S
ZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KQogewogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IGI5NmVjYTczZjM2
YzE1ZmY2MjI1ZTk5OGEzOTExMDU1NjcxN2Y0NGEuLjU5NGE2ODkwZmM0MjdlNjZkMTBhNjBhZmFh
N2ExY2I2OTQ0NTI1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAt
OTcsMTMgKzk3LDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlv
bkxlYWYoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVj
dGlvblN0YXRlKFNlbGVjdGlvblN0YXRlIHMpOwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxl
Y3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpOworICAgIHZpcnR1YWwgTGF5b3V0
UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KElubGluZUJveCosIGlu
dCBjYXJldE9mZnNldCwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gMCk7CiAK
ICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5MZWZ0KCksIDAsIHZpZXcoKSk7IH0KICAg
ICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luUmlnaHQoKSBjb25zdCB7IHJldHVybiBtaW5pbXVt
VmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luUmlnaHQoKSwgMCwgdmlldygpKTsgfQogCi0g
ICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIExh
eW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CiAKICAgICBJbmxpbmVU
ZXh0Qm94KiBmaXJzdFRleHRCb3goKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0VGV4dEJveDsgfQog
ICAgIElubGluZVRleHRCb3gqIGxhc3RUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VGV4
dEJveDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5ZDEzMTNlYTJhM2YzMzkyYmEwZTAxOTUw
MzFiMGIwODE3NzcwMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAg
ICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQorICogICAgICAg
ICAgIChDKSAyMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKKyAq
ICAgICAgICAgICAoQykgMjAwNSwgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWls
LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuaCIKKworI2luY2x1ZGUgIlJlbmRlckxh
eWVyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdChOb2Rl
KiBub2RlKQorICAgIDogUmVuZGVyT2JqZWN0KG5vZGUpCisgICAgLCBtX2xheWVyKDApCit7Cit9
CisKK1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6On5SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KCkKK3sKKyAgICAvLyBPdXIgbGF5ZXIgc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95ZWQgYW5kIGNs
ZWFyZWQgYnkgbm93CisgICAgQVNTRVJUKCFoYXNMYXllcigpKTsKKyAgICBBU1NFUlQoIW1fbGF5
ZXIpOworfQorCit2b2lkIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OmRlc3Ryb3lMYXllcigp
Cit7CisgICAgQVNTRVJUKCFoYXNMYXllcigpKTsgLy8gQ2FsbGVycyBzaG91bGQgaGF2ZSBhbHJl
YWR5IGNhbGxlZCBzZXRIYXNMYXllcihmYWxzZSkKKyAgICBBU1NFUlQobV9sYXllcik7CisgICAg
bV9sYXllci0+ZGVzdHJveShyZW5kZXJBcmVuYSgpKTsKKyAgICBtX2xheWVyID0gMDsKK30KKwor
dm9pZCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjplbnN1cmVMYXllcigpCit7CisgICAgaWYg
KG1fbGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGF5ZXIgPSBuZXcgKHJlbmRlckFy
ZW5hKCkpIFJlbmRlckxheWVyKHRoaXMpOworICAgIHNldEhhc0xheWVyKHRydWUpOworICAgIG1f
bGF5ZXItPmluc2VydE9ubHlUaGlzTGF5ZXIoKTsKK30KKworYm9vbCBSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0OjpoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bGF5ZXIgJiYgbV9sYXllci0+aXNTZWxmUGFpbnRpbmdMYXllcigpOworfQorCit2b2lkIFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpCit7CisgICAgLy8gUmVuZGVy
T2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQgY2FsbHMgYmFjayB0byBkZXN0cm95TGF5ZXIoKSBmb3Ig
bGF5ZXIgZGVzdHJ1Y3Rpb24KKyAgICBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiNmQyYWQ2
NjM4ODQyNDYzZmI0Y2I3MzEyMWI5YjE3NGFhYjQ5MDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oCkBAIC0wLDAg
KzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2Rl
Lm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2Rl
Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0X2gKKyNkZWZpbmUgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdF9oCisKKyNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJMYXll
cjsKKworY2xhc3MgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCA6IHB1YmxpYyBSZW5kZXJPYmpl
Y3QgeworcHVibGljOgorICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QoTm9kZSopOworICAg
IHZpcnR1YWwgflJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QoKTsKKworICAgIC8vIENhbGxlZCBi
eSBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpIGFuZCBpcyB0aGUgb25seSB3YXkgbGF5
ZXJzIHNob3VsZCBldmVyIGJlIGRlc3Ryb3llZAorICAgIHZvaWQgZGVzdHJveUxheWVyKCk7CisK
KyAgICBib29sIGhhc1NlbGZQYWludGluZ0xheWVyKCkgY29uc3Q7CisgICAgUmVuZGVyTGF5ZXIq
IGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcjsgfQorCisgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzTGF5ZXIoKSBjb25zdCA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGVuc3VyZUxh
eWVyKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgT1ZFUlJJREU7CisK
K3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzVHJhbnNmb3JtYWJsZU9iamVjdCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFJlbmRlckxheWVyKiBtX2xheWVyOwor
fTsKKworaW5saW5lIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHRvUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NFUlQoIW9iamVjdCB8
fCBvYmplY3QtPmlzVHJhbnNmb3JtYWJsZU9iamVjdCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCo+KG9iamVjdCk7Cit9CisKK2lubGluZSBjb25z
dCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qo
Y29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJUKCFvYmplY3QgfHwgb2Jq
ZWN0LT5pc1RyYW5zZm9ybWFibGVPYmplY3QoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqPihvYmplY3QpOworfQorCisvLyBUaGlzIHdp
bGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdChjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Kik7CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IGEzNDg2
ZjYxYzBkZDhhOGNiZmNhMWNjNTJlMGVmNzc5MWNlODQzMTAuLmY4YzBiYjYzM2Y4NzdlYmJmMWRl
ZmZlMGNkYTQ5MTI2OTI4MDUwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFJlbmRlclZpZXc6OmxheW91dCgpCiAgICAg
c2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCi12b2lkIFJlbmRlclZpZXc6Om1hcExvY2FsVG9D
b250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4
ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBB
cHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRl
clZpZXc6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVw
YWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1T
dGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29sKiB3YXNG
aXhlZCkgY29uc3QKIHsKICAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBhbmQg
d2FzIG5vdCAwIG9yIHRoZSBSZW5kZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIGhhdmUg
Zm91bmQgaXQgYnkgbm93LgpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUmVuZGVyVmlldzo6bWFw
TG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
Ym9vCiAgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUobV9mcmFtZVZpZXctPnNjcm9sbE9mZnNl
dEZvckZpeGVkUG9zaXRpb24oKSk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyVmll
dzo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5j
ZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAorY29u
c3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJWaWV3OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0
IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21l
dHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKIHsKICAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMg
c3BlY2lmaWVkLCBhbmQgd2FzIG5vdCAwIG9yIHRoZSBSZW5kZXJWaWV3LAogICAgIC8vIHRoZW4g
d2Ugc2hvdWxkIGhhdmUgZm91bmQgaXQgYnkgbm93LgpAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQg
UmVuZGVyVmlldzo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKIAogc3RhdGljIGlubGluZSBib29sIGlzQ29tcG9zaXRlZChSZW5kZXJP
YmplY3QqIG9iamVjdCkKIHsKLSAgICByZXR1cm4gb2JqZWN0LT5oYXNMYXllcigpICYmIHRvUmVu
ZGVyQm94TW9kZWxPYmplY3Qob2JqZWN0KS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCk7CisgICAg
cmV0dXJuIG9iamVjdC0+aGFzTGF5ZXIoKSAmJiB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qo
b2JqZWN0KS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCByZW5kZXJlck9ic2N1cmVzQmFja2dyb3VuZChSZW5kZXJPYmplY3QqIG9iamVjdCkKQEAgLTM4
NSw3ICszODUsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnJlcGFpbnRSZWN0YW5nbGVJblZpZXdBbmRD
b21wb3NpdGVkTGF5ZXJzKGNvbnN0IExheW91dFJlY3QmIHVyLAogI2VuZGlmCiB9CiAKLXZvaWQg
UmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9p
ZCBSZW5kZXJWaWV3Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29u
c3QKIHsKICAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBhbmQgd2FzIG5vdCAw
IG9yIHRoZSBSZW5kZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIGhhdmUgZm91bmQgaXQg
Ynkgbm93LgpAQCAtNDA3LDIwICs0MDcsMjAgQEAgdm9pZCBSZW5kZXJWaWV3Ojpjb21wdXRlUmVj
dEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEwKICAg
ICAgICAgcmVjdC5tb3ZlKG1fZnJhbWVWaWV3LT5zY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9u
KCkpOwogICAgICAgICAKICAgICAvLyBBcHBseSBvdXIgdHJhbnNmb3JtIGlmIHdlIGhhdmUgb25l
IChiZWNhdXNlIG9mIGZ1bGwgcGFnZSB6b29taW5nKS4KLSAgICBpZiAoIXJlcGFpbnRDb250YWlu
ZXIgJiYgbV9sYXllciAmJiBtX2xheWVyLT50cmFuc2Zvcm0oKSkKLSAgICAgICAgcmVjdCA9IG1f
bGF5ZXItPnRyYW5zZm9ybSgpLT5tYXBSZWN0KHJlY3QpOworICAgIGlmICghcmVwYWludENvbnRh
aW5lciAmJiBsYXllcigpICYmIGxheWVyKCktPnRyYW5zZm9ybSgpKQorICAgICAgICByZWN0ID0g
bGF5ZXIoKS0+dHJhbnNmb3JtKCktPm1hcFJlY3QocmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyVmll
dzo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2lu
dCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgcmVjdHMuYXBwZW5kKHBpeGVsU25h
cHBlZEludFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIG1fbGF5ZXItPnNpemUoKSkpOworICAgIHJl
Y3RzLmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBsYXllcigp
LT5zaXplKCkpKTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHdhc0Zp
eGVkKQogICAgICAgICAqd2FzRml4ZWQgPSBmYWxzZTsKLSAgICBxdWFkcy5hcHBlbmQoRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgbV9sYXllci0+c2l6ZSgpKSk7CisgICAgcXVhZHMuYXBwZW5kKEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyKCktPnNpemUoKSkpOwogfQogCiBzdGF0aWMgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlckFmdGVyUG9zaXRpb24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIHVu
c2lnbmVkIG9mZnNldCkKQEAgLTQ2NSw3ICs0NjUsNyBAQCBJbnRSZWN0IFJlbmRlclZpZXc6OnNl
bGVjdGlvbkJvdW5kcyhib29sIGNsaXBUb1Zpc2libGVDb250ZW50KSBjb25zdAogICAgICAgICBS
ZW5kZXJTZWxlY3Rpb25JbmZvKiBpbmZvID0gaS0+c2Vjb25kLmdldCgpOwogICAgICAgICAvLyBS
ZW5kZXJTZWxlY3Rpb25JbmZvOjpyZWN0KCkgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBy
ZXBhaW50Q29udGFpbmVyLCBzbyBtYXAgdG8gcGFnZSBjb29yZGluYXRlcy4KICAgICAgICAgTGF5
b3V0UmVjdCBjdXJyUmVjdCA9IGluZm8tPnJlY3QoKTsKLSAgICAgICAgaWYgKFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gaW5mby0+cmVwYWludENvbnRhaW5lcigpKSB7
CisgICAgICAgIGlmIChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
ID0gaW5mby0+cmVwYWludENvbnRhaW5lcigpKSB7CiAgICAgICAgICAgICBGbG9hdFF1YWQgYWJz
UXVhZCA9IHJlcGFpbnRDb250YWluZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGN1
cnJSZWN0KSk7CiAgICAgICAgICAgICBjdXJyUmVjdCA9IGFic1F1YWQuZW5jbG9zaW5nQm91bmRp
bmdCb3goKTsgCiAgICAgICAgIH0KQEAgLTU3MCw3ICs1NzAsNyBAQCB2b2lkIFJlbmRlclZpZXc6
OnNldFNlbGVjdGlvbihSZW5kZXJPYmplY3QqIHN0YXJ0LCBpbnQgc3RhcnRQb3MsIFJlbmRlck9i
amVjdCogZQogICAgIH0KIAogICAgIGlmIChibG9ja1JlcGFpbnRNb2RlICE9IFJlcGFpbnROb3Ro
aW5nKQotICAgICAgICBtX2xheWVyLT5jbGVhckJsb2NrU2VsZWN0aW9uR2Fwc0JvdW5kcygpOwor
ICAgICAgICBsYXllcigpLT5jbGVhckJsb2NrU2VsZWN0aW9uR2Fwc0JvdW5kcygpOwogCiAgICAg
Ly8gTm93IHRoYXQgdGhlIHNlbGVjdGlvbiBzdGF0ZSBoYXMgYmVlbiB1cGRhdGVkIGZvciB0aGUg
bmV3IG9iamVjdHMsIHdhbGsgdGhlbSBhZ2FpbiBhbmQKICAgICAvLyBwdXQgdGhlbSBpbiB0aGUg
bmV3IG9iamVjdHMgbGlzdC4KQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIFJlbmRlclZpZXc6Omdl
dFNlbGVjdGlvbihSZW5kZXJPYmplY3QqJiBzdGFydFJlbmRlcmVyLCBpbnQmIHN0YXJ0T2Zmc2V0
LCBSZQogCiB2b2lkIFJlbmRlclZpZXc6OmNsZWFyU2VsZWN0aW9uKCkKIHsKLSAgICBtX2xheWVy
LT5yZXBhaW50QmxvY2tTZWxlY3Rpb25HYXBzKCk7CisgICAgbGF5ZXIoKS0+cmVwYWludEJsb2Nr
U2VsZWN0aW9uR2FwcygpOwogICAgIHNldFNlbGVjdGlvbigwLCAtMSwgMCwgLTEsIFJlcGFpbnRO
ZXdNaW51c09sZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4
IDA0YTgwNmU5YmNhNTkxZTE1YTY1N2ExMjgxYTJlMDFiZGVkZmJkMDguLjVhNjQ2ZGNlNzU0MTU0
OTY4ODgxYzA4NzlmZmVjNTlhYTM3OWQ1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAKICAgICBGcmFtZVZpZXcqIGZyYW1l
VmlldygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVWaWV3OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXBhaW50Vmlld1JlY3RhbmdsZShjb25zdCBMYXlv
dXRSZWN0JiwgYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSk7CiAgICAgLy8gUmVwYWludCB0aGUgdmll
dywgYW5kIGFsbCBjb21wb3NpdGVkIGxheWVycyB0aGF0IGludGVyc2VjdCB0aGUgZ2l2ZW4gYWJz
b2x1dGUgcmVjdGFuZ2xlLgogICAgIC8vIEZJWE1FOiBpZGVhbGx5IHdlJ2QgbmV2ZXIgaGF2ZSB0
byBkbyB0aGlzLCBpZiBhbGwgcmVwYWludHMgYXJlIGNvbnRhaW5lci1yZWxhdGl2ZS4KQEAgLTIw
Niw4ICsyMDYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNSZW5kZXJDb3VudGVycygpIHsgcmV0
dXJuIG1fcmVuZGVyQ291bnRlckNvdW50OyB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZv
aWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIEFw
cGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhl
ZCA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGlu
Z1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0
LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJv
b2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRh
aW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBp
bmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRv
U3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9y
bXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzQ29s
dW1ucyhpbnQgZGVzaXJlZENvbHVtbkNvdW50KSBjb25zdCBPVkVSUklERTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKaW5kZXggMWYwYTRhMzhl
NzJlMjFhN2RjM2YwYWRjZDNjYWUzNjNjOGE1MWQ5Mi4uYzg5Y2YwNTc5YjdiOWM1NDVhOWRiYTI5
MmVkMDc0N2Q4ZjY1ZWVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcmluZ0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
aW5nQWxsSW5PbmUuY3BwCkBAIC0xMDYsNiArMTA2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0
RnJhZ21lbnQuY3BwIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmNwcCIKICNpbmNsdWRlICJSZW5k
ZXJUaGVtZVdpbi5jcHAiCisjaW5jbHVkZSAiUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAi
CiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5jcHAiCiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8u
Y3BwIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKaW5kZXggZDY2MDU2
NjE1MDc5YWVjZjc2N2NjY2I5NzQ5ZTE1YzYxYTg1YmZjZi4uYzE2OTUzZTQzYzExZjJlYmNlMTI3
NmJmNDcwZWY4MzM4ODc5MzNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCkBAIC04OCwxMiArODgsMTIgQEAg
dm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmKQogICAgIH0KIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJTVkdGb3Jl
aWduT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyU1ZHRm9yZWln
bk9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVy
U3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRh
aW5lcik7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUZsb2F0UmVj
dEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0
UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR0ZvcmVp
Z25PYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4
ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJl
cGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKIH0KQEAg
LTE5MCwxMiArMTkwLDEyIEBAIGJvb2wgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5l
cihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCAvKiBmaXhlZCAq
LywgYm9vbCAvKiB1c2VUcmFuc2Zvcm1zICovLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3Rh
dGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQg
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qIGZpeGVkICovLCBib29sIC8q
IHVzZVRyYW5zZm9ybXMgKi8sIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlD
b250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIFNWR1JlbmRl
clN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIodGhpcywgcmVwYWludENvbnRhaW5lciwgdHJh
bnNmb3JtU3RhdGUsIHdhc0ZpeGVkKTsKIH0KIAotY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJT
VkdGb3JlaWduT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlN
YXApIGNvbnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OnB1
c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5j
ZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAogewog
ICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKHRoaXMs
IGFuY2VzdG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKaW5kZXggODBkZGZk
NjMwOGRkOGY2MzlhMTQ1ZDJkMDUzM2YwMjRiNmYyYmNjYy4uNjAyNDgyZGVkZGEyYTkwZTQzOTdj
OWE5ZmQwMzYyMDRhZTVhMDdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKQEAgLTQwLDggKzQwLDggQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jik7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25z
dDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4
ZWQgPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNM
YXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgp
OwpAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RQb2lu
dCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdGb3JlaWdu
T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIG1hcExv
Y2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJv
b2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRh
aW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRh
aW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVy
R2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5l
cihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVk
LCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlw
T3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250
YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwg
UmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0dyYWRpZW50U3RvcC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdHcmFkaWVudFN0b3AuaAppbmRleCBiOTBhYjUwODEwNDExMzg0MTQxYzMyMzg5NDc2ZTNj
ODQ0MzQwNjViLi45NWJjMzRlMmJkYmQ2MDA1OTAzZmE3YzE2MDY3ZDgxOTIzMTI3ZThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3Rv
cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRT
dG9wLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgb3ZlcnJpZGVzIGFy
ZSBuZWVkZWQgdG8gcHJldmVudCBBU1NFUlRzIG9uIDxzdmc+PHN0b3AgLz48L3N2Zz4KICAgICAv
LyBSZW5kZXJPYmplY3QncyBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBBU1NFUlRfTk9UX1JFQUNI
RUQoKQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQw
MAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCopIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQorICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gTGF5b3V0UmVjdCgp
OyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCB7IHJl
dHVybiBGbG9hdFJlY3QoKTsgfQogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5n
Qm94KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KICAgICB2aXJ0dWFsIEZsb2F0UmVj
dCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UmVj
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0hpZGRlbkNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdIaWRkZW5Db250YWluZXIuaAppbmRleCBmMjZjNWZjNjFhMzdmODIwN2Q0ZDY0OWJlNjgwOWQ1
MmEyZjg4MjVmLi5iNGJjMjM0NWE2NTgxMmIzYmYyZWE5Y2FkZDM3Njg2NDc5ZDVmZGU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRh
aW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9p
ZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIAotICAgIHZpcnR1
YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCopIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0KikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CiAgICAgdmly
dHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhl
ZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFy
ZW50LCBIaXRUZXN0QWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCAwNTdiZmRhMDA3ZTJjNjg0MzQ5ZTNjNzNmZWI4NmIw
MWNmMzVkMzBhLi4xNzZmYTYwN2E2NGI3MmQzNmYxN2ViYTY1ZDY3N2FmZDU2MWFjNmQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCkBA
IC02OSwyMiArNjksMjIgQEAgRmxvYXRSZWN0IFJlbmRlclNWR0lubGluZTo6cmVwYWludFJlY3RJ
bkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdAogICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIH0KIAot
TGF5b3V0UmVjdCBSZW5kZXJTVkdJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVj
dCBSZW5kZXJTVkdJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHRoaXMsIHJl
cGFpbnRDb250YWluZXIpOwogfQogCi12b2lkIFJlbmRlclNWR0lubGluZTo6Y29tcHV0ZUZsb2F0
UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZs
b2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR0lu
bGluZTo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkg
Y29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWlu
dCh0aGlzLCByZXBhaW50Q29udGFpbmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwogfQogCi12b2lk
IFJlbmRlclNWR0lubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCAvKiB1c2VUcmFuc2Zvcm1zICovLCBib29sIC8qIGZp
eGVkICovLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxp
cE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHSW5saW5lOjptYXBM
b2NhbFRvQ29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIGJvb2wgLyogdXNlVHJhbnNmb3JtcyAqLywgYm9vbCAvKiBmaXhlZCAqLywgVHJhbnNmb3Jt
U3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2Fz
Rml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5l
cih0aGlzLCByZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4ZWQpOwogfQog
Ci1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR0lubGluZTo6cHVzaE1hcHBpbmdUb0NvbnRh
aW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVy
R2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5k
ZXJTVkdJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5
TWFwKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKHRoaXMsIGFuY2VzdG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFwKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCmluZGV4IDUzM2E5
OWFhNmIwMTc3ZTg3YmE4YzcwNGZhMTExYjExYjczNmM0MjguLjY0MTlmZTdkNGQ1NzJmMGU3ZDhl
ODRmYzMyYmFmZDVjMzhlOTdiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbmxpbmUuaApAQCAtNDUsMTAgKzQ1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0OwogICAgIHZpcnR1YWwgRmxv
YXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21w
dXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKLSAgICB2aXJ0dWFs
IHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYs
IEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNG
aXhlZCA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3Rv
cEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBj
bGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0
ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQs
IFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5l
ckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBj
b25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5k
ZXggMThlN2VjYWNlN2EzYTNjNjhkOGY1ZjQwNDg4ZjJmNmQ5MmI1NGUxNS4uZjRiMTI5NTBiYTdj
ZDczNzgzODQ2MTI3NjllZTMwMWY0ZjQ0MWU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJSZW5kZXJTVkdNb2RlbE9iamVjdC5oIgogCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmgiCiAj
aW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZXNDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKQEAgLTQ1LDIyICs0NiwyMiBAQCBSZW5kZXJTVkdN
b2RlbE9iamVjdDo6UmVuZGVyU1ZHTW9kZWxPYmplY3QoU1ZHU3R5bGVkRWxlbWVudCogbm9kZSkK
IHsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNv
bnN0CitMYXlvdXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBj
b25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdN
b2RlbE9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQp
IGNvbnN0Cit2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVw
YWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJl
Y3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIFNWR1JlbmRlclN1cHBv
cnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHJl
cGFpbnRSZWN0LCBmaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om1hcExv
Y2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJv
b2wgLyogZml4ZWQgKi8sIGJvb2wgLyogdXNlVHJhbnNmb3JtcyAqLywgVHJhbnNmb3JtU3RhdGUm
IHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0Cit2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgLyogZml4ZWQg
Ki8sIGJvb2wgLyogdXNlVHJhbnNmb3JtcyAqLywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0
YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAg
ICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0aGlzLCByZXBhaW50Q29u
dGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmpl
Y3QqIFJlbmRlclNWR01vZGVsT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYg
Z2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR01vZGVsT2Jq
ZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29u
c3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5l
cih0aGlzLCBhbmNlc3RvclRvU3RvcEF0LCBnZW9tZXRyeU1hcCk7CiB9CkBAIC02OCw3ICs2OSw3
IEBAIGNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OnB1c2hNYXBwaW5n
VG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94CiAvLyBDb3BpZWQgZnJvbSBSZW5kZXJCb3gsIHRo
aXMgbWV0aG9kIGxpa2VseSByZXF1aXJlcyBmdXJ0aGVyIHJlZmFjdG9yaW5nIHRvIHdvcmsgZWFz
aWx5IGZvciBib3RoIFNWRyBhbmQgQ1NTIEJveCBNb2RlbCBjb250ZW50LgogLy8gRklYTUU6IFRo
aXMgbWF5IGFsc28gbmVlZCB0byBtb3ZlIGludG8gU1ZHUmVuZGVyU3VwcG9ydCBhcyB0aGUgUmVu
ZGVyQm94IHZlcnNpb24gZGVwZW5kcwogLy8gb24gYm9yZGVyQm91bmRpbmdCb3goKSB3aGljaCBT
VkcgUmVuZGVyQm94IHN1YmNsYXNlcyAobGlrZSBTVkdSZW5kZXJCbG9jaykgZG8gbm90IGltcGxl
bWVudC4KLUxheW91dFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRQb2lu
dCopIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0OjpvdXRsaW5lQm91bmRz
Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBM
YXlvdXRQb2ludCopIGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCBib3ggPSBlbmNsb3NpbmdMYXlv
dXRSZWN0KHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpOwogICAgIGFkanVzdFJlY3RG
b3JPdXRsaW5lQW5kU2hhZG93KGJveCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKaW5kZXggMGQ4MTkyNjA5M2Y2YmY3NGVkYzA4
YzQ4YzI4Nzk3NzRhNDRiMmQ2MC4uMTVmYjQ5YWY2MGNhZmE5ZjIzNmFmODNlOGI2ZDI3OWE5MWM5
YjhmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdN
b2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
TW9kZWxPYmplY3QuaApAQCAtNTEsMTUgKzUxLDE1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Ym9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1
YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1
dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwotICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9pbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91
dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFBvaW50Kikg
Y29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8
SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCog
d2FzRml4ZWQpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3Jt
cywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9
IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wg
Zml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNv
bnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlN
YXAmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmNwcAppbmRleCA3MDdkYTg4NmUyY2E5OGExYjY5NmVlYzRiMjYwMjhmNjY2NmZmZDVlLi42
YTFlZTBmN2FiZGY3ODUxOTY2ZDMwNzdmMjViOGVjOTc3ZjA4ZThhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTM2OSwxMiArMzY5LDEy
IEBAIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgUmVuZGVyU1ZHUm9vdDo6bG9jYWxUb1BhcmVudFRy
YW5zZm9ybSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbG9jYWxUb1BhcmVudFRyYW5zZm9ybTsKIH0K
IAotTGF5b3V0UmVjdCBSZW5kZXJTVkdSb290OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJl
Y3QgUmVuZGVyU1ZHUm9vdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICByZXR1cm4g
U1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQodGhpcywgcmVw
YWludENvbnRhaW5lcik7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZsb2F0UmVj
dEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0
UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1Jvb3Q6
OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0
CiB7CiAgICAgLy8gQXBwbHkgb3VyIGxvY2FsIHRyYW5zZm9ybXMgKGV4Y2VwdCBmb3IgeC95IHRy
YW5zbGF0aW9uKSwgdGhlbiBvdXIgc2hhZG93LCAKICAgICAvLyBhbmQgdGhlbiBjYWxsIFJlbmRl
ckJveCdzIG1ldGhvZCB0byBoYW5kbGUgYWxsIHRoZSBub3JtYWwgQ1NTIEJveCBtb2RlbCBiaXRz
CkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBSZW5kZXJTVkdSb290Ojpjb21wdXRlRmxvYXRSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnQKIC8vIFRoaXMgbWV0
aG9kIGV4cGVjdHMgbG9jYWwgQ1NTIGJveCBjb29yZGluYXRlcy4KIC8vIENhbGxlcnMgd2l0aCBs
b2NhbCBTVkcgdmlld3BvcnQgY29vcmRpbmF0ZXMgc2hvdWxkIGZpcnN0IGFwcGx5IHRoZSBsb2Nh
bFRvQm9yZGVyQm94VHJhbnNmb3JtCiAvLyB0byBjb252ZXJ0IGZyb20gU1ZHIHZpZXdwb3J0IGNv
b3JkaW5hdGVzIHRvIGxvY2FsIENTUyBib3ggY29vcmRpbmF0ZXMuCi12b2lkIFJlbmRlclNWR1Jv
b3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRy
YW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNv
bnN0Cit2b2lkIFJlbmRlclNWR1Jvb3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFu
c2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxp
cE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWZpeGVkKTsgLy8g
V2Ugc2hvdWxkIGhhdmUgbm8gZml4ZWQgY29udGVudCBpbiB0aGUgU1ZHIHJlbmRlcmluZyB0cmVl
LgogICAgIEFTU0VSVCh1c2VUcmFuc2Zvcm1zKTsgLy8gbWFwcGluZyBhIHBvaW50IHRocm91Z2gg
U1ZHIHcvbyByZXNwZWN0aW5nIHRyYXNuZm9ybXMgaXMgdXNlbGVzcy4KQEAgLTQwMyw3ICs0MDMs
NyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsCiAgICAgUmVuZGVyUmVwbGFjZWQ6Om1hcExvY2Fs
VG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5z
Zm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXAsIHdhc0ZpeGVkKTsKIH0KIAotY29uc3QgUmVu
ZGVyT2JqZWN0KiBSZW5kZXJTVkdSb290OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYg
Z2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR1Jvb3Q6OnB1
c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5j
ZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAogewog
ICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihhbmNlc3Rv
clRvU3RvcEF0LCBnZW9tZXRyeU1hcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4IDlhYTdlN2MxODZhZTQ4NzY5MGM0MGFhYzkwNWZmNWNj
MGQwMjM3NDQuLmYxMzhmNjQ5MWZjZWE0YzE1OWMzNzc1ZTc1ZjQxMDE2ZTkyNGM2NzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCkBAIC05MiwxMSAr
OTIsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBI
aXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0UG9pbnQmIHBvaW50
SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVz
dEFjdGlvbikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVj
dCwgYm9vbCBmaXhlZCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0
Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBG
bG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdCBPVkVSUklERTsKIAotICAg
IHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9y
bVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJv
b2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3Qq
IHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2Vz
dG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYs
IEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNG
aXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0
KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
IGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3QgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5j
cHAKaW5kZXggZjUxNGUyMTU3YzQ1YzY5YWY1MzZhZDA2MTM3YjM3NzgzNDk0OGE5NC4uNzBkOGMz
NWY4MTg5Yzk1MGNkYjM5ZjBmZmRkMTU0YmZmOGU4OTNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC05NCwyOSArOTQsMjkgQEAgY29u
c3QgUmVuZGVyU1ZHVGV4dCogUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2Vz
dG9yKGNvbnN0IFJlbmRlck9iamUKICAgICByZXR1cm4gdG9SZW5kZXJTVkdUZXh0KHN0YXJ0KTsK
IH0KIAotTGF5b3V0UmVjdCBSZW5kZXJTVkdUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91
dFJlY3QgUmVuZGVyU1ZHVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICByZXR1
cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQodGhpcywg
cmVwYWludENvbnRhaW5lcik7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZVJlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRS
ZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdUZXh0Ojpjb21wdXRl
UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBGbG9hdFJlY3Qg
cmVwYWludFJlY3QgPSByZWN0OwogICAgIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHJlcGFp
bnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7CiAgICAgcmVjdCA9IGVuY2xvc2luZ0xh
eW91dFJlY3QocmVwYWludFJlY3QpOwogfQogCi12b2lkIFJlbmRlclNWR1RleHQ6OmNvbXB1dGVG
bG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJT
VkdUZXh0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVk
KSBjb25zdAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBh
aW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7CiB9CiAKLXZv
aWQgUmVuZGVyU1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCAvKiBmaXhlZCAqLywgYm9vbCAvKiB1c2VUcmFuc2Zv
cm1zICovLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxp
cE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHVGV4dDo6bWFwTG9j
YWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBib29sIC8qIGZpeGVkICovLCBib29sIC8qIHVzZVRyYW5zZm9ybXMgKi8sIFRyYW5zZm9ybVN0
YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIo
dGhpcywgcmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIHdhc0ZpeGVkKTsKIH0KIAot
Y29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdUZXh0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVy
KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9t
ZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNW
R1RleHQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBj
b25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGluZ1RvQ29udGFp
bmVyKHRoaXMsIGFuY2VzdG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFwKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5kZXggOTNjYjY0ZjhmYjJlNzRl
ZWIyODZhZWJiNDYyZDc5ZjJmMWJjZDZkZC4uMDJjM2M0ODhkYTU0NWJlNzkzNmU4ZjAxYmEzN2Y1
MmEzOTQ4MmI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0LmgKQEAgLTcxLDEyICs3MSwxMiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25z
dDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9
IGZhbHNlKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVj
dEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwg
RmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZp
cnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0
YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wq
IHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1
c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9y
VG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1h
cExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIEFw
cGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhl
ZCA9IDApIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBw
dXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFu
Y2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCog
YmVmb3JlQ2hpbGQgPSAwKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2Jq
ZWN0KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIE9WRVJS
SURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJT
dXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9y
dC5jcHAKaW5kZXggMGJmYjBhNTI3OWM4ODg0OTQ2NWVkZjJmOTUxYmY4YWUwMzQ0ZGFjMS4uNWJj
NTVkN2I2M2UwZGY2NWYzZmJjNDk4ZjFkMjdlNmRjZjI5OWRkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC00Niw3ICs0Niw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTGF5b3V0UmVjdCBTVkdSZW5kZXJTdXBwb3J0
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVj
dCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCitMYXlvdXRSZWN0IFNW
R1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRl
ck9iamVjdCogb2JqZWN0LCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKQogewogICAgIC8vIFJldHVybiBlYXJseSBmb3IgYW55IGNhc2VzIHdoZXJlIHdlIGRvbid0
IGFjdHVhbGx5IHBhaW50CiAgICAgaWYgKG9iamVjdC0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9
IFZJU0lCTEUgJiYgIW9iamVjdC0+ZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQo
KSkKQEAgLTU5LDcgKzU5LDcgQEAgTGF5b3V0UmVjdCBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqIG8KICAgICByZXR1cm4g
ZW5jbG9zaW5nTGF5b3V0UmVjdChyZXBhaW50UmVjdCk7CiB9CiAKLXZvaWQgU1ZHUmVuZGVyU3Vw
cG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJl
cGFpbnRSZWN0LCBib29sIGZpeGVkKQordm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxv
YXRSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwg
Ym9vbCBmaXhlZCkKIHsKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnU3R5bGUgPSBvYmpl
Y3QtPnN0eWxlKCktPnN2Z1N0eWxlKCk7CiAgICAgaWYgKGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRv
dyA9IHN2Z1N0eWxlLT5zaGFkb3coKSkKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBTVkdSZW5kZXJT
dXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqIG9i
amVjdCwgUmUKICAgICBvYmplY3QtPnBhcmVudCgpLT5jb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWlu
dChyZXBhaW50Q29udGFpbmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwogfQogCi12b2lkIFNWR1Jl
bmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0
ZSYgdHJhbnNmb3JtU3RhdGUsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBTVkdSZW5kZXJTdXBwb3J0
OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJh
bnNmb3JtU3RhdGUsIGJvb2wqIHdhc0ZpeGVkKQogewogICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5
VHJhbnNmb3JtKG9iamVjdC0+bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpKTsKIApAQCAtODYsNyAr
ODYsNyBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3Qg
UmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlckJveAogICAgIHBhcmVudC0+bWFwTG9jYWxUb0Nv
bnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBmYWxzZSwgdHJ1ZSwgdHJhbnNmb3JtU3RhdGUsIFJl
bmRlck9iamVjdDo6RG9Ob3RBcHBseUNvbnRhaW5lckZsaXAsIHdhc0ZpeGVkKTsKIH0KIAotY29u
c3QgUmVuZGVyT2JqZWN0KiBTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVy
KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCog
YW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKQorY29uc3Qg
UmVuZGVyT2JqZWN0KiBTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNv
bnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChhbmNlc3RvclRvU3RvcEF0LCBhbmNlc3RvclRvU3RvcEF0ICE9IG9i
amVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBw
b3J0LmgKaW5kZXggZmE5NjBmMDVlNjllMDJhMWE1ZWJiMTgyMjA2NjJmYjdhNzU3OTA4My4uOGNi
ZmQzNmIxYTY3NjYxOTZkNWQxMWYwMjNkNzg3Mzk5N2EwZmU0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmgKQEAgLTM1LDYgKzM1LDcgQEAg
Y2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBSZW5kZXJCb3hNb2Rl
bE9iamVjdDsKIGNsYXNzIFJlbmRlckdlb21ldHJ5TWFwOworY2xhc3MgUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xh
c3MgUmVuZGVyU1ZHUm9vdDsKQEAgLTYyLDEwICs2MywxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGJvb2wgcGFpbnRJbmZvSW50ZXJzZWN0c1JlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbG9j
YWxSZXBhaW50UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRyYW5zZm9ybSwgY29u
c3QgUGFpbnRJbmZvJik7CiAKICAgICAvLyBJbXBvcnRhbnQgZnVuY3Rpb25zIHVzZWQgYnkgbmVh
cmx5IGFsbCBTVkcgcmVuZGVyZXJzIGNlbnRyYWxpemluZyBjb29yZGluYXRlIHRyYW5zZm9ybWF0
aW9ucyAvIHJlcGFpbnQgcmVjdCBjYWxjdWxhdGlvbnMKLSAgICBzdGF0aWMgTGF5b3V0UmVjdCBj
bGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqLCBSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7Ci0gICAgc3RhdGljIHZvaWQgY29tcHV0
ZUZsb2F0UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiwgUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQpOwotICAgIHN0
YXRpYyB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgYm9vbCog
d2FzRml4ZWQgPSAwKTsKLSAgICBzdGF0aWMgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGlu
Z1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpOworICAgIHN0YXRpYyBM
YXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVj
dCosIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpOworICAgIHN0
YXRpYyB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCos
IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYs
IGJvb2wgZml4ZWQpOworICAgIHN0YXRpYyB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3Qg
UmVuZGVyT2JqZWN0KiwgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgVHJhbnNmb3JtU3RhdGUmLCBib29sKiB3YXNGaXhlZCA9IDApOworICAgIHN0YXRpYyBjb25z
dCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0
KiwgY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVu
ZGVyR2VvbWV0cnlNYXAmKTsKIAogICAgIC8vIFNoYXJlZCBiZXR3ZWVuIFNWRyByZW5kZXJlcnMg
YW5kIHJlc291cmNlcy4KICAgICBzdGF0aWMgdm9pZCBhcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgUmVuZGVyT2JqZWN0
Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160168</attachid>
            <date>2012-08-23 08:23:38 -0700</date>
            <delta_ts>2012-08-23 08:42:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86022-20120823112334.patch</filename>
            <type>text/plain</type>
            <size>148832</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzJjZDg5MmM4YTk5Y2U1
MjFmNGJkYjI0ZDE4YTM2NTE0YWJmNGQ2MC4uOWM3YTE0ODBhY2Y2YmU1NWQ1NmFlYmQ3MjljYjYx
NDczMTc3NmIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNyBAQAorMjAxMi0wOC0yMyAgRmxv
cmluIE1hbGl0YSAgPGZtYWxpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZmFjdG9yIGxh
eWVyLXJlbGF0ZWQgbG9naWMgb3V0IG9mIFJlbmRlckJveE1vZGVsT2JqZWN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjAyMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZXh0cmFjdHMg
bGF5ZXItcmVsYXRlZCBsb2dpYyBpbnRvIGEgZGVkaWNhdGVkIGNsYXNzCisgICAgICAgIChSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KSBhbmQgcmVmYWN0b3JzIGRlcGVuZGVudCBjb2RlIHRvIG1h
a2UgdXNlCisgICAgICAgIG9mIHRoZSBuZXcgdHlwZSBpbnN0ZWFkIG9mIFJlbmRlckJveE1vZGVs
T2JqZWN0LiBUaGlzIGlzIGluIHByZXBhcmF0aW9uCisgICAgICAgIG9mIGFkZGluZyBub24tUmVu
ZGVyQm94TW9kZWxPYmplY3QgbGF5ZXIgc3VwcHJ0LgorCisgICAgICAgIEFsbCBtZXRob2RzIHRo
YXQgd2VyZSB1c2luZyBSZW5kZXJCb3hNb2RlbE9iamVjdCBmb3IgbGF5ZXItcmVsYXRlZAorICAg
ICAgICBmdW5jdGlvbmFsaXR5IGFyZSB1cGRhdGVkIHRvIHdvcmsgd2l0aCBSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0CisgICAgICAgIGluc3RlYWQgKGEgUmVuZGVyTGF5ZXIncyByZW5kZXJlcigp
IGNhbiBubyBsb25nZXIgYmUgYXNzdW1lZCB0byBiZQorICAgICAgICBhIFJlbmRlckJveE1vZGVs
T2JqZWN0KS4KKworICAgICAgICBObyBuZXcgdGVzdHM6IHJlZmFjdG9yaW5nIHdpdGggbm8gYmVo
YXZpb3IgY2hhbmdlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5v
cmRlcjoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVuZGVyaW5n
L0xheW91dFJlcGFpbnRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXlvdXRS
ZXBhaW50ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCUi5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
c2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaDoKKyAgICAgICAgKFJlbmRlckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c3R5bGVEaWRDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojp1cGRhdGVGcm9tU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjplbmNsb3NpbmdGbG9hdFBhaW50aW5nTGF5ZXIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFJlbmRlckJveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVs
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojp+UmVuZGVy
Qm94TW9kZWxPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuaDoKKyAgICAgICAgKFJlbmRlckJveE1vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2Vv
bWV0cnlNYXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyR2VvbWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rvcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckdlb21ldHJ5TWFwLmg6CisgICAgICAgIChSZW5kZXJHZW9tZXRyeU1hcCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbmxpbmU6OnVwZGF0ZUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlcklubGluZTo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbmxpbmU6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW5saW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAgIChSZW5kZXJJbmxpbmUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxh
eWVyUG9zaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb21wdXRlUmVw
YWludFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrQ29udGFpbmluZ0Jsb2NrQ2hhaW5G
b3JQYWdpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXll
clBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUG9zaXRpb25lZENvbnRhaW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGFzQW5jZXN0b3JXaXRoRmlsdGVyT3V0c2V0
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsVG8pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2Nl
bmRhbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJl
bmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZW5kZXJlcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpyZXBhaW50T25Db21wb3NpdGluZ0NoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbkZvckNvbXBvc2l0aW5n
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKFJlbmRlckxpc3RN
YXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjphZGRM
YXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZW1vdmVMYXllcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojptb3ZlTGF5ZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6ZmluZE5leHRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmVuY2xvc2luZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5
b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29udGFpbmVyRm9yUmVwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnRVc2luZ0NvbnRhaW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZXBhaW50UmVjdGFuZ2xlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVw
YWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkanVzdFN0eWxlRGlmZmVy
ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om1hcExvY2FsVG9Db250YWlu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFp
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3Jt
RnJvbUNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdldFRyYW5z
Zm9ybUZyb21Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpsb2Nh
bFRvQ29udGFpbmVyUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2Fs
VG9Db250YWluZXJQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbnRh
aW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzQ29tcG9zaXRlZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzVHJhbnNmb3JtYWJsZU9iamVjdCk6CisgICAgICAg
IChSZW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZWxlY3Rp
b25SZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om91dGxp
bmVCb3VuZHNGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnNlbGVjdGlvblJlY3RGb3JS
ZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6
CisgICAgICAgIChSZW5kZXJSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNl
bGVjdGlvbkluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlbGVjdGlvbkluZm9CYXNl
OjpyZXBhaW50Q29udGFpbmVyKToKKyAgICAgICAgKFJlbmRlclNlbGVjdGlvbkluZm9CYXNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKFJlbmRlclRh
YmxlQ2VsbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29sOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmg6CisgICAgICAgIChSZW5k
ZXJUYWJsZUNvbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlUm93OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93Lmg6CisgICAgICAgIChS
ZW5kZXJUYWJsZVJvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6CisgICAgICAgIChSZW5kZXJUZXh0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0OjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6On5SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OmRlc3Ryb3lM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjplbnN1
cmVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Ojpo
YXNTZWxmUGFpbnRpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpsYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Ojp1cGRhdGVGcm9tU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6dG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjptYXBMb2Nh
bFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnB1c2hNYXBwaW5n
VG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6aXNDb21wb3NpdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZXc6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6
c2VsZWN0aW9uQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNldFNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpjbGVhclNlbGVjdGlvbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKFJlbmRlclZpZXcpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHA6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdCbG9jazo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0Jsb2NrLmg6CisgICAgICAgIChSZW5kZXJTVkdCbG9jayk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RG
b3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om1h
cExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9i
amVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg6CisgICAgICAgIChSZW5kZXJTVkdGb3JlaWduT2JqZWN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHSW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWlu
ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmg6CisgICAgICAg
IChSZW5kZXJTVkdJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9k
ZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R01vZGVsT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGluZUJvdW5kc0Zv
clJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
aDoKKyAgICAgICAgKFJlbmRlclNWR01vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUm9vdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUm9vdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSb290OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuaDoKKyAgICAgICAgKFJlbmRlclNWR1Jvb3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKFJlbmRlclNW
R1RleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxv
YXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpt
YXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6
OnB1c2hNYXBwaW5nVG9Db250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdSZW5kZXJTdXBw
b3J0KToKKwogMjAxMi0wOC0yMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCB0cml2aWFsIGJ1aWxkIGZpeCBmb3IgUXQvTWFj
IG9uIE9TIFggMTAuNjogQXZvaWQgdXNpbmcgYW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTE0
YzViZWE1ZDlhYTgwYzVjOGIzY2RiM2Y1YWNkNjQzMTQwNmEzOC4uYWU2YjZjYmJjYzlhM2I4Y2Yy
OTQ0MWJkZTYwYjQxMDkyMWU3NjVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwOTIsNiAr
MjA5Miw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5kZXJpbmcvUmVuZGVyVGV4dEZy
YWdtZW50LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJUZXh0VHJhY2tDdWUuY3BwCiAgICAgcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorICAgIHJlbmRlcmluZy9SZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAogICAgIHJlbmRl
cmluZy9SZW5kZXJWaWRlby5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGY1NzY0MjA1NmEzMzY0NDMzZTRkYWUzNDBkYWM0
YzZhZGFlZjBlZGEuLmE5NWE2NjExMmViZjRhNDczYTdmMmEyODE1YjI5YzAwYzA2MTY2MzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDI3MCw2ICs0MjcwLDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKaW5kZXggOGIwZGIyMTdkMDZlNzdhYjYzNTcwNzQyMGZjZTU4MzI0YTU5
ZmI0Yi4uNDFmMGRiNDBmOGQ2OTYzNjhjZTAyZmNmNjAxMzFhMmY3MmM2MDg2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCkBAIC0xMTc2LDYgKzExNzYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICByZW5kZXJpbmcvUmVu
ZGVyVGV4dEZyYWdtZW50LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRleHRUcmFja0N1ZS5j
cHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgXAorICAgIHJlbmRlcmluZy9SZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgXAogICAgIHJlbmRlcmluZy9S
ZW5kZXJXaWRnZXQuY3BwIFwKQEAgLTIzNTcsNiArMjM1OCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IHJlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRl
eHQuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggXAorICAgIHJlbmRlcmluZy9SZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJWaWRlby5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVy
Vmlldy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNzcwZGQ4NThjMjY1NDBlMmIwNTYxN2U5
MWY1YjkzOTg2ZmQ4MTNkMi4uMGE2NThkMGExZDI4YTMyNDgwYjhkY2QyN2UxNTE5NDdhNWE1N2Zl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTExMDcsNiArMTEwNyw3IEBAIF9fWk5LN1dlYkNv
cmUxMVNjcmlwdFZhbHVlOWdldFN0cmluZ0VQTjNKU0M5RXhlY1N0YXRlRVJOM1dURjZTdHJpbmdF
CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNGVuY2xvc2luZ0xheWVyRXYKIF9fWk5LN1dl
YkNvcmUxMlJlbmRlck9iamVjdDE1bG9jYWxUb0Fic29sdXRlRVJLTlNfMTBGbG9hdFBvaW50RWJi
CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyMGxvY2FsVG9Db250YWluZXJRdWFkRVJLTlNf
OUZsb2F0UXVhZEVQTlNfMjBSZW5kZXJCb3hNb2RlbE9iamVjdEViYlBiCitfX1pOSzdXZWJDb3Jl
MTJSZW5kZXJPYmplY3QyMGxvY2FsVG9Db250YWluZXJRdWFkRVJLTlNfOUZsb2F0UXVhZEVQTlNf
MjVSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0RWJiUGIKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9i
amVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2Jq
ZWN0MzlwaXhlbFNuYXBwZWRBYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3RFdgogX19aTks3V2Vi
Q29yZTEyUmVuZGVyT2JqZWN0N2NoaWxkQXRFagpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDhmYzU3ODY4
NjllZTczMDg2NzY4MWYyYjViOTA1NjhjZWEzYTUwYTQuLjdjMmE5Nzg3ODc5NWEwMTlkY2I0N2Zm
Y2ZkNWMzODM5NjJhNjY2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTU3Nyw2ICs1NzcsNyBAQAog
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJQYXJ0LmgnLAogICAgICAgICAgICAgJ3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGV4
dC5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5o
JywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5oJywKICAgICAgICAg
ICAgICdyZW5kZXJpbmcvUmVuZGVyVmlldy5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmgnLApAQCAtNDg1OSw2ICs0ODYwLDcgQEAKICAgICAgICAgICAgICdyZW5kZXJp
bmcvUmVuZGVyVGhlbWVXaW4uaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclRoZW1l
V2luQ0UuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5oJywK
KyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAnLAog
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCcsCiAgICAgICAgICAg
ICAncmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1Jl
bmRlclZpZGVvLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggMGIyYjE3NTgzY2I3MDYwNzliNzMy
Mjg3ZDI4ZmYyNDJjYjM1ZDNmYy4uZWM1MjNkN2YwYjIwMDk3MGNkYWNhMTllZmViMzY2YWFhYjlm
ZDcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC04MjMsOCArODIzLDggQEAgX19aTjdXZWJDb3Jl
MTFSZW5kZXJCbG9jazE0c3R5bGVEaWRDaGFuZ2VFTlNfMTVTdHlsZURpZmZlcmVuY2VFUEtOU18x
MVJlbmRlclN0eWwKIF9fWk43V2ViQ29yZTlSZW5kZXJCb3gxNHN0eWxlRGlkQ2hhbmdlRU5TXzE1
U3R5bGVEaWZmZXJlbmNlRVBLTlNfMTFSZW5kZXJTdHlsZUUKIF9fWk43V2ViQ29yZTIwUmVuZGVy
Qm94TW9kZWxPYmplY3QxNHN0eWxlRGlkQ2hhbmdlRU5TXzE1U3R5bGVEaWZmZXJlbmNlRVBLTlNf
MTFSZW5kZXJTdHlsZUUKIF9fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTRzdHlsZURpZENoYW5n
ZUVOU18xNVN0eWxlRGlmZmVyZW5jZUVQS05TXzExUmVuZGVyU3R5bGVFCi1fX1pON1dlYkNvcmU5
UmVuZGVyQm94Mjd1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGVFdgotX19aTjdXZWJDb3JlMjBS
ZW5kZXJCb3hNb2RlbE9iamVjdDI3dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlRXYKK19fWk43
V2ViQ29yZTlSZW5kZXJCb3gxNXVwZGF0ZUZyb21TdHlsZUV2CitfX1pON1dlYkNvcmUyMFJlbmRl
ckJveE1vZGVsT2JqZWN0MTV1cGRhdGVGcm9tU3R5bGVFdgogX19aTks3V2ViQ29yZTExUmVuZGVy
U3R5bGUyMXZpc2l0ZWREZXBlbmRlbnRDb2xvckVpCiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJTdHls
ZTIyY29sb3JJbmNsdWRpbmdGYWxsYmFja0VpTlNfMTJFQm9yZGVyU3R5bGVFCiBfX1pOSzdXZWJD
b3JlMTBSZW5kZXJWaWV3MTJpc1JlbmRlclZpZXdFdgpAQCAtNDE3MCw3ICs0MTcwLDcgQEAgX19a
TjdXZWJDb3JlNE5vZGUxMWFwcGVuZENoaWxkRU4zV1RGMTBQYXNzUmVmUHRySVMwX0VFUmliCiBf
X1pON1dlYkNvcmU0Tm9kZTEwbGF6eUF0dGFjaEVOUzBfMTdTaG91bGRTZXRBdHRhY2hlZEUKIF9f
Wk43V2ViQ29yZTEyUmVuZGVySW5saW5lQzFFUE5TXzROb2RlRQogX19aTjdXZWJDb3JlMTJSZW5k
ZXJJbmxpbmUxNHN0eWxlRGlkQ2hhbmdlRU5TXzE1U3R5bGVEaWZmZXJlbmNlRVBLTlNfMTFSZW5k
ZXJTdHlsZUUKLV9fWk43V2ViQ29yZTEyUmVuZGVySW5saW5lMjd1cGRhdGVCb3hNb2RlbEluZm9G
cm9tU3R5bGVFdgorX19aTjdXZWJDb3JlMTJSZW5kZXJJbmxpbmUxNXVwZGF0ZUZyb21TdHlsZUV2
CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJJbmxpbmUxM3JlcXVpcmVzTGF5ZXJFdgogX19aTks3V2Vi
Q29yZTlMZW5ndGhCb3g3bm9uWmVyb0V2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJJbmxpbmUxNXZp
cnR1YWxDaGlsZHJlbkV2CkBAIC0xMTMyOCw3ICsxMTMyOCw3IEBAIF9fWk43V2ViQ29yZTEzUmVu
ZGVyU1ZHVGV4dEMxRVBOU18xNFNWR1RleHRFbGVtZW50RQogX19aTjdXZWJDb3JlMTRSZW5kZXJT
VkdCbG9jazhzZXRTdHlsZUVOM1dURjEwUGFzc1JlZlB0cklOU18xMVJlbmRlclN0eWxlRUVFCiBf
X1pON1dlYkNvcmUxNFJlbmRlclNWR0Jsb2NrMTVzdHlsZVdpbGxDaGFuZ2VFTlNfMTVTdHlsZURp
ZmZlcmVuY2VFUEtOU18xMVJlbmRlclN0eWxlRQogX19aTjdXZWJDb3JlMTRSZW5kZXJTVkdCbG9j
azE0c3R5bGVEaWRDaGFuZ2VFTlNfMTVTdHlsZURpZmZlcmVuY2VFUEtOU18xMVJlbmRlclN0eWxl
RQotX19aTjdXZWJDb3JlMTRSZW5kZXJTVkdCbG9jazI3dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0
eWxlRXYKK19fWk43V2ViQ29yZTE0UmVuZGVyU1ZHQmxvY2sxNXVwZGF0ZUZyb21TdHlsZUV2CiBf
X1pOSzdXZWJDb3JlMTNSZW5kZXJTVkdUZXh0MTNyZXF1aXJlc0xheWVyRXYKIF9fWk43V2ViQ29y
ZTE0UmVuZGVyU1ZHQmxvY2sxN3VwZGF0ZUZyb21FbGVtZW50RXYKIF9fWk43V2ViQ29yZTI1U1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudDE1Y2hpbGRyZW5DaGFuZ2VkRWJQTlNfNE5vZGVFUzJfaQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA5MDU2
MWE3YWE4NmIzOGQyNTNhMjU4MzkwNjkxMzIwZDI4MzRiMWM0Li5hODU4YmI0MjQ4ODc0MmFjZTIw
ZGUzMTE0ZmE1YzdjZDZiMTRkYWVhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNDQwMjEsNiArNDQwMjEsNjIgQEAKIAkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJl
bmRlcmluZ1xSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmNwcCIKKwkJCQk+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVyVHJlZUFzVGV4dC5jcHAiCiAJCQkJPgog
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ5NWY2NTg0NzMzNjNkYTA4YjkyNWJlYmNjOWVm
NGY1ZTE5MTI4OTQuLjA3NTdhNTJiMzUyMDJkYWNkM2U2ODk3MTRkODU5NWIxOTBlMzczNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEwMjUsNiArMTAyNSw4IEBACiAJCTNBQjAyRDJCMTJENEY5MTYwMEZCQjY5NCAvKiBTdG9y
YWdlVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzQUIwMkQyOTEyRDRGOTE2MDBGQkI2OTQgLyogU3RvcmFnZVRyYWNrZXIuY3BwICovOyB9
OwogCQkzQUMzNjgwMDEyRUY3QTA5MDA2QTNENkYgLyogU3RvcmFnZVRyYWNrZXJDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNBQzM2N0ZFMTJF
RjdBMDkwMDZBM0Q2RiAvKiBTdG9yYWdlVHJhY2tlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTNBQzY0OEIyMTI5RTE0NjUwMEMzRUIy
NSAvKiBFZGl0aW5nQm91bmRhcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDNBQzY0OEIxMTI5RTE0NjUwMEMzRUIyNSAvKiBFZGl0aW5nQm91bmRhcnku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzQzI0
NEZFQUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0MyNDRGRTRBMzc1QUM2
MzNGODhCRTZGIC8qIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzQzI0NEZFQkEzNzVBQzYzM0Y4OEJF
NkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQzI0NEZFNUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAgKi87IH07CiAJCTQxMDAyQ0NEMEY2NkVERUYwMDlF
NjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5j
dGlvbkNhbGwuaCAqLzsgfTsKIAkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1
bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTAwMkNDQzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAq
LzsgfTsKIAkJNDEwQjdFNzIxMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMEI3
RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi87IH07CkBA
IC04MTA5LDYgKzgxMTEsOCBAQAogCQkzQUIwMkQyOTEyRDRGOTE2MDBGQkI2OTQgLyogU3RvcmFn
ZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFn
ZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzQUMzNjdGRTEyRUY3
QTA5MDA2QTNENkYgLyogU3RvcmFnZVRyYWNrZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RvcmFnZVRyYWNrZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJM0FDNjQ4QjExMjlFMTQ2NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0aW5nQm91bmRhcnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0MyNDRGRTRBMzc1QUM2MzNGODhCRTZGIC8qIFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzQzI0NEZFNUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwMDJDQ0Iw
RjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2Fs
bC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRGdW5jdGlv
bkNhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTBCN0U3MTEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjE0NDEsNiArMjE0NDUsOCBAQAogCQkJCUJDRUE0ODRCMDk3RDkz
MDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oICovLAogCQkJCUJDRUE0ODQ4MDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5oICovLAogCQkJCUJDRUE0ODQ5MDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJUaGVtZU1hYy5tbSAqLywKKwkJCQkzQzI0NEZFNUEzNzVBQzYzM0Y4OEJFNkYg
LyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAgKi8sCisJCQkJM0MyNDRGRTRBMzc1QUM2
MzNGODhCRTZGIC8qIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuaCAqLywKIAkJCQk5Mzk1NUE0
MjAzRDcyOTMyMDA4NjM1Q0UgLyogUmVuZGVyVHJlZUFzVGV4dC5jcHAgKi8sCiAJCQkJOTM5NTVB
NDEwM0Q3MjkzMjAwODYzNUNFIC8qIFJlbmRlclRyZWVBc1RleHQuaCAqLywKIAkJCQlFNEI0MUUz
MzBDQkZCNjA5MDBBRjJFQ0UgLyogUmVuZGVyVmlkZW8uY3BwICovLApAQCAtMjQ2ODQsNiArMjQ2
OTAsNyBAQAogCQkJCTg2RkY4ODYyMTVERTNEMDcwMEJENkIyOCAvKiBSZW5kZXJUZXh0VHJhY2tD
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODhBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJUaGVtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4ODcwOTdEOTMwMjAwOTRDOUU0IC8q
IFJlbmRlclRoZW1lTWFjLmggaW4gSGVhZGVycyAqLywKKwkJCQkzQzI0NEZFQUEzNzVBQzYzM0Y4
OEJFNkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTNGMTk5OEMwODI0NUU1OTAwMUU5QUJDIC8qIFJlbmRlclRyZWVBc1RleHQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0NDYxNDUyMENENjhBMzUwMEZBREE3NSAvKiBSZW5kZXJWaWRlby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNFQTQ4NjgwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclZpZXcuaCBp
biBIZWFkZXJzICovLApAQCAtMjc4OTEsNiArMjc4OTgsNyBAQAogCQkJCUJDRUE0ODg5MDk3RDkz
MDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg4
ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk5M0YxOUFENTA4MjQ1RTU5MDAxRTlBQkMgLyogUmVuZGVyVHJlZUFzVGV4dC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkzQzI0NEZFQkEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTQ1MTBDRDY4QTM1MDBGQURB
NzUgLyogUmVuZGVyVmlkZW8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NjcwOTdEOTMw
MjAwOTRDOUU0IC8qIFJlbmRlclZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MURGRTUw
QTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlcldpZGdldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuaAppbmRleCA1NzQwMGZhZWJmN2Iy
MGExNjU0Yzg5YTgxZGRiY2IzZjE5MzVmZmIwLi41Zjk2ZmRjMGY0NmM0NGFhNDg0MzU5MzZiZDM4
NzZkMzlmYzIxYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0
UmVwYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFJlcGFpbnRl
ci5oCkBAIC0zMCw4ICszMCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdDsKIGNsYXNzIFJlbmRlck9iamVjdDsKLWNsYXNzIFJlbmRl
ckJveE1vZGVsT2JqZWN0OwogCiBjbGFzcyBMYXlvdXRSZXBhaW50ZXIgewogcHVibGljOgpAQCAt
NDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyT2JqZWN0JiBtX29i
amVjdDsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbV9yZXBhaW50Q29udGFpbmVyOworICAg
IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIG1fcmVwYWludENvbnRhaW5lcjsKICAgICAvLyBX
ZSBzdG9yZSB0aGVzZSB2YWx1ZXMgYXMgTGF5b3V0UmVjdHMsIGJ1dCB0aGUgZmluYWwgaW52YWxp
ZGF0aW9ucyB3aWxsIGJlIHBpeGVsIHNuYXBwZWQKICAgICBMYXlvdXRSZWN0IG1fb2xkQm91bmRz
OwogICAgIExheW91dFJlY3QgbV9vbGRPdXRsaW5lQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQlIuaAppbmRleCA0OWY5YjVlNmNjMjBlOTQ5ZjY2MDYxY2JkYWUzYTFiMzYwZWMzODUwLi43
MDliMTU2ZmQ2YTc3NjQ2OGQ1Y2VmODNmMzI5ZTkwZmQzOTZlOTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQlIuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyQlIiOyB9CiAg
Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgYm9vbCAvKmNsaXBUb1Zpc2libGVD
b250ZW50Ki8pIHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiAvKnJl
cGFpbnRDb250YWluZXIqLywgYm9vbCAvKmNsaXBUb1Zpc2libGVDb250ZW50Ki8pIE9WRVJSSURF
IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQogCiAgICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1bnNp
Z25lZCAvKmZyb20qLywgdW5zaWduZWQgLypsZW4qLywgY29uc3QgRm9udCYsIGZsb2F0IC8qeFBv
cyovLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qID0gMCAvKmZhbGxiYWNrRm9udHMq
LyAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwg
ZmxvYXQgd2lkdGgodW5zaWduZWQgLypmcm9tKi8sIHVuc2lnbmVkIC8qbGVuKi8sIGZsb2F0IC8q
eHBvcyovLCBib29sID0gZmFsc2UgLypmaXJzdExpbmUqLywgSGFzaFNldDxjb25zdCBTaW1wbGVG
b250RGF0YSo+KiA9IDAgLypmYWxsYmFja0ZvbnRzKi8sIEdseXBoT3ZlcmZsb3cqID0gMCkgY29u
c3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
aW5kZXggYTQxNThmNGUxODc5NDI3YjVhYThhZjVkMmRhMzI0OGZlMDA2NTBiNi4uMGU2NTA1NDcz
YmJiMjQwYzY1MmZkNjIzODgyNmFhNmExOTIyY2VmMCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zMTg4LDcgKzMxODgsNyBAQCBib29sIFJlbmRlckJsb2Nr
Ojppc1NlbGVjdGlvblJvb3QoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotR2FwUmVj
dHMgUmVuZGVyQmxvY2s6OnNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lcikKK0dhcFJlY3RzIFJlbmRlckJsb2NrOjpzZWxlY3Rp
b25HYXBSZWN0c0ZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lcikKIHsKICAgICBBU1NFUlQoIW5lZWRzTGF5b3V0KCkpOwogCkBAIC02Njk5LDcgKzY2
OTksNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiAgICAgICAgIHF1YWRzLmFwcGVuZChSZW5k
ZXJCb3g6OmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdo
dCgpKSwgZmFsc2UsIHdhc0ZpeGVkKSk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyQmxvY2s6OnJl
Y3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJC
bG9jazo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QKIHsKICAg
ICBMYXlvdXRSZWN0IHIoUmVuZGVyQm94OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KHJlcGFp
bnRDb250YWluZXIsIG91dGxpbmVXaWR0aCkpOwogICAgIGlmIChpc0Fub255bW91c0Jsb2NrQ29u
dGludWF0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGEz
MWIyNmVkNmU4ZjQxMDY2YjkxNmUzOTI5YjBiZDczMzYxMzRmN2YuLmI3NDA3MzFjODdiNDdiMmU1
YmEwOTkzZmY2ZWU5OGUzYWRlM2Q2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5oCkBAIC0yMTEsNyArMjExLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb250YWluc05v
blplcm9CaWRpTGV2ZWwoKSBjb25zdDsKIAotICAgIEdhcFJlY3RzIHNlbGVjdGlvbkdhcFJlY3Rz
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7CisgICAg
R2FwUmVjdHMgc2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpOwogICAgIExheW91dFJlY3QgbG9naWNhbExlZnRTZWxl
Y3Rpb25HYXAoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9pbnQmIHJvb3RC
bG9ja1BoeXNpY2FsUG9zaXRpb24sIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290Qmxv
Y2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3Qq
IHNlbE9iaiwgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIGNvbnN0IFBhaW50SW5mbyopOwogICAgIExheW91dFJl
Y3QgbG9naWNhbFJpZ2h0U2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrKiByb290QmxvY2ssIGNvbnN0
IExheW91dFBvaW50JiByb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBjb25zdCBMYXlvdXRTaXpl
JiBvZmZzZXRGcm9tUm9vdEJsb2NrLApAQCAtNzgzLDE0ICs3ODMsMTQgQEAgcHJpdmF0ZToKICAg
ICAvLyBjaGlsZHJlbi4KICAgICB2aXJ0dWFsIFJlbmRlckJsb2NrKiBmaXJzdExpbmVCbG9jaygp
IGNvbnN0OwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0
bGluZVdpZHRoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgcmVjdFdpdGhPdXRsaW5l
Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBM
YXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBSZW5k
ZXJTdHlsZSogb3V0bGluZVN0eWxlRm9yUmVwYWludCgpIGNvbnN0OwogICAgIAogICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBob3ZlckFuY2VzdG9yKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZURyYWdTdGF0ZShib29sIGRyYWdPbik7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkQmVj
YW1lTm9uSW5saW5lKFJlbmRlck9iamVjdCogY2hpbGQpOwogCi0gICAgdmlydHVhbCBMYXlvdXRS
ZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBib29sIC8qY2xpcFRvVmlzaWJsZUNvbnRlbnQqLykKKyAgICB2aXJ0dWFsIExh
eW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCAvKmNsaXBUb1Zpc2libGVDb250ZW50Ki8pIE9WRVJS
SURFCiAgICAgewogICAgICAgICByZXR1cm4gc2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KHJl
cGFpbnRDb250YWluZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKaW5kZXggYTAwNTZlMDNiNzczODBmMTJjOGQ5YzJiN2MxYjI1MzAyMWZiMDM2NS4uOWE0MDk4
M2ZkYzE5ZGU5ZTE4ZjBhODJkZDRlODEwNDEyZmQ3MTE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFJlbmRlckJveDo6c3R5
bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3
U3R5bAogCiB2b2lkIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKLSAgICAvLyBIb3Jpem9udGFsIHdy
aXRpbmcgbW9kZSBkZWZpbml0aW9uIGlzIHVwZGF0ZWQgaW4gUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSwKKyAgICAvLyBIb3Jpem9udGFsIHdyaXRpbmcg
bW9kZSBkZWZpbml0aW9uIGlzIHVwZGF0ZWQgaW4gUmVuZGVyQm94TW9kZWxPYmplY3Q6OnVwZGF0
ZUZyb21TdHlsZSwKICAgICAvLyAoYXMgcGFydCBvZiB0aGUgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnN0eWxlRGlkQ2hhbmdlIGNhbGwgYmVsb3cpLiBTbywgd2UgY2FuIHNhZmVseSBjYWNoZSB0aGUg
aG9yaXpvbnRhbAogICAgIC8vIHdyaXRpbmcgbW9kZSB2YWx1ZSBiZWZvcmUgc3R5bGUgY2hhbmdl
IGhlcmUuCiAgICAgYm9vbCBvbGRIb3Jpem9udGFsV3JpdGluZ01vZGUgPSBpc0hvcml6b250YWxX
cml0aW5nTW9kZSgpOwpAQCAtMjg5LDkgKzI4OSw5IEBAIHZvaWQgUmVuZGVyQm94OjpzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
CiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveDo6dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxl
KCkKK3ZvaWQgUmVuZGVyQm94Ojp1cGRhdGVGcm9tU3R5bGUoKQogewotICAgIFJlbmRlckJveE1v
ZGVsT2JqZWN0Ojp1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsKKyAgICBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6dXBkYXRlRnJvbVN0eWxlKCk7CiAKICAgICBSZW5kZXJTdHlsZSogc3R5bGVU
b1VzZSA9IHN0eWxlKCk7CiAgICAgYm9vbCBpc1Jvb3RPYmplY3QgPSBpc1Jvb3QoKTsKQEAgLTQ2
Myw3ICs0NjMsNyBAQCBGbG9hdFF1YWQgUmVuZGVyQm94OjphYnNvbHV0ZUNvbnRlbnRRdWFkKCkg
Y29uc3QKICAgICByZXR1cm4gbG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QocmVjdCkpOwog
fQogCi1MYXlvdXRSZWN0IFJlbmRlckJveDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFBvaW50KiBjYWNoZWRPZmZz
ZXRUb1JlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlckJveDo6b3V0bGlu
ZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRh
aW5lciwgTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldFRvUmVwYWludENvbnRhaW5lcikgY29uc3QK
IHsKICAgICBMYXlvdXRSZWN0IGJveCA9IGJvcmRlckJvdW5kaW5nQm94KCk7CiAgICAgYWRqdXN0
UmVjdEZvck91dGxpbmVBbmRTaGFkb3coYm94KTsKQEAgLTEyNjMsNyArMTI2Myw3IEBAIExheW91
dFVuaXQgUmVuZGVyQm94OjpwZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdo
dCgpIGNvbnN0CiAgICAgcmV0dXJuIGNiLT5jb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQo
bG9naWNhbEhlaWdodExlbmd0aC52YWx1ZSgpKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6Om1hcExv
Y2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRy
YW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1v
ZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250
YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNm
b3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwg
Ym9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXIgPT0gdGhp
cykKICAgICAgICAgcmV0dXJuOwpAQCAtMTMyOCw3ICsxMzI4LDcgQEAgdm9pZCBSZW5kZXJCb3g6
Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIFRyYW4KICAgICBvLT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHRy
YW5zZm9ybVN0YXRlLCBtb2RlLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCog
UmVuZGVyQm94OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNv
bnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlckJveDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5l
cihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5k
ZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgQVNTRVJUKGFuY2VzdG9y
VG9TdG9wQXQgIT0gdGhpcyk7CiAKQEAgLTE0ODEsNyArMTQ4MSw3IEBAIHZvaWQgUmVuZGVyQm94
OjpkZWxldGVMaW5lQm94V3JhcHBlcigpCiAgICAgfQogfQogCi1MYXlvdXRSZWN0IFJlbmRlckJv
eDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRh
aW5lcikgY29uc3QKIHsKICAgICBpZiAoc3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUg
JiYgIWVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpCiAgICAgICAgIHJldHVy
biBMYXlvdXRSZWN0KCk7CkBAIC0xNTA4LDcgKzE1MDgsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJv
eDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbgogICAgIHJldHVybiByOwogfQogCi12b2lkIFJlbmRlckJveDo6Y29tcHV0ZVJlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0
JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9y
UmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlv
dXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIC8vIFRoZSByZWN0IHdlIGNv
bXB1dGUgYXQgZWFjaCBzdGVwIGlzIHNoaWZ0ZWQgYnkgb3VyIHgveSBvZmZzZXQgaW4gdGhlIHBh
cmVudCBjb250YWluZXIncyBjb29yZGluYXRlIHNwYWNlLgogICAgIC8vIE9ubHkgd2hlbiB3ZSBj
cm9zcyBhIHdyaXRpbmcgbW9kZSBib3VuZGFyeSB3aWxsIHdlIGhhdmUgdG8gcG9zc2libHkgZmxp
cEZvcldyaXRpbmdNb2RlICh0byBjb252ZXJ0IGludG8gYSBtb3JlIGFwcHJvcHJpYXRlCkBAIC0z
Nzg2LDcgKzM3ODYsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyQm94OjplbmNsb3NpbmdGbG9hdFBh
aW50aW5nTGF5ZXIoKSBjb25zdAogewogICAgIGNvbnN0IFJlbmRlck9iamVjdCogY3VyciA9IHRo
aXM7CiAgICAgd2hpbGUgKGN1cnIpIHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gY3Vy
ci0+aGFzTGF5ZXIoKSAmJiBjdXJyLT5pc0JveCgpID8gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChj
dXJyKS0+bGF5ZXIoKSA6IDA7CisgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IGN1cnItPmhh
c0xheWVyKCkgJiYgY3Vyci0+aXNCb3goKSA/IHRvUmVuZGVyQm94KGN1cnIpLT5sYXllcigpIDog
MDsKICAgICAgICAgaWYgKGxheWVyICYmIGxheWVyLT5pc1NlbGZQYWludGluZ0xheWVyKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbGF5ZXI7CiAgICAgICAgIGN1cnIgPSBjdXJyLT5wYXJlbnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCAwMGIwNWY0ZTFhZjAxMjZlMmI4
NDVkZTk2NWFiOTdkOWZlNzdiN2IwLi4yODViYjFhZWVlNjNhNGE4YjJjODUwNjZkZTYwYWQ1ODdj
ZjExMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0xNTMsNyArMTUz
LDcgQEAgcHVibGljOgogICAgIExheW91dFJlY3QgY29tcHV0ZWRDU1NDb250ZW50Qm94UmVjdCgp
IGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoYm9yZGVyTGVmdCgpICsgY29tcHV0ZWRDU1NQYWRk
aW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIGNvbXB1dGVkQ1NTUGFkZGluZ1RvcCgpLCBjbGllbnRX
aWR0aCgpIC0gY29tcHV0ZWRDU1NQYWRkaW5nTGVmdCgpIC0gY29tcHV0ZWRDU1NQYWRkaW5nUmln
aHQoKSwgY2xpZW50SGVpZ2h0KCkgLSBjb21wdXRlZENTU1BhZGRpbmdUb3AoKSAtIGNvbXB1dGVk
Q1NTUGFkZGluZ0JvdHRvbSgpKTsgfQogCiAgICAgLy8gQm91bmRzIG9mIHRoZSBvdXRsaW5lIGJv
eCBpbiBhYnNvbHV0ZSBjb29yZHMuIFJlc3BlY3RzIHRyYW5zZm9ybXMKLSAgICB2aXJ0dWFsIExh
eW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8q
cmVwYWludENvbnRhaW5lciovLCBMYXlvdXRQb2ludCogY2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29u
dGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJl
cGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogLypyZXBhaW50Q29udGFpbmVyKi8sIExh
eW91dFBvaW50KiBjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBj
b25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgLy8gVXNlIHRoaXMgd2l0aCBjYXV0aW9uISBObyB0
eXBlIGNoZWNraW5nIGlzIGRvbmUhCkBAIC0zMTIsOCArMzEyLDggQEAgcHVibGljOgogICAgIHZv
aWQgc2V0SW5saW5lQm94V3JhcHBlcihJbmxpbmVCb3gqIGJveFdyYXBwZXIpIHsgbV9pbmxpbmVC
b3hXcmFwcGVyID0gYm94V3JhcHBlcjsgfQogICAgIHZvaWQgZGVsZXRlTGluZUJveFdyYXBwZXIo
KTsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7Cisg
ICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxz
ZSkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwYWludER1cmluZ0xheW91
dElmTW92ZWQoY29uc3QgTGF5b3V0UmVjdCYpOwogCkBAIC01MDMsNyArNTAzLDcgQEAgcHJvdGVj
dGVkOgogCiAgICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2Us
IGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUZyb21TdHlsZSgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGJh
Y2tncm91bmRJc09ic2N1cmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHBh
aW50QmFja2dyb3VuZChjb25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dy
b3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSk7CkBAIC01MjMsOCArNTIz
LDggQEAgcHJvdGVjdGVkOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDb21wdXRlU2l6
ZUFzUmVwbGFjZWQoKSBjb25zdCB7IHJldHVybiBpc1JlcGxhY2VkKCkgJiYgIWlzSW5saW5lQmxv
Y2tPcklubGluZVRhYmxlKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFp
bmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0
ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwIHwg
U25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWlu
ZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0Nv
bnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJh
bnNmb3JtcywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9v
bCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogCiAgICAgdm9pZCBwYWlu
dFJvb3RCb3hGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggY2FmMzI3YjEzYzg0
MjczYmU3OTM1NjI1NDQzNDBmODkzM2JmNzc1OC4uNTI0ZTQyNmRkODVhNmY0NTQ1ZmY0MTlkNzlk
MTlmMWU3ZjlhYWQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCkBAIC01MiwxMSArNTIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWJvb2wgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnNfd2FzRmxvYXRpbmcgPSBmYWxzZTsKLWJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNf
aGFkTGF5ZXIgPSBmYWxzZTsKLWJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNfaGFkVHJhbnNm
b3JtID0gZmFsc2U7Ci1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzX2xheWVyV2FzU2VsZlBh
aW50aW5nID0gZmFsc2U7Ci0KIHN0YXRpYyBjb25zdCBkb3VibGUgY0ludGVycG9sYXRpb25DdXRv
ZmYgPSA4MDAuICogODAwLjsKIHN0YXRpYyBjb25zdCBkb3VibGUgY0xvd1F1YWxpdHlUaW1lVGhy
ZXNob2xkID0gMC41MDA7IC8vIDUwMCBtcwogCkBAIC0zMTYsMTYgKzMxMSwxMiBAQCBib29sIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIEltYQogfQogCiBSZW5kZXJCb3hNb2RlbE9iamVjdDo6UmVuZGVyQm94TW9k
ZWxPYmplY3QoTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlck9iamVjdChub2RlKQotICAgICwgbV9s
YXllcigwKQorICAgIDogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdChub2RlKQogewogfQogCiBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6flJlbmRlckJveE1vZGVsT2JqZWN0KCkKIHsKLSAgICAvLyBP
dXIgbGF5ZXIgc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95ZWQgYW5kIGNsZWFyZWQgYnkgbm93Ci0g
ICAgQVNTRVJUKCFoYXNMYXllcigpKTsKLSAgICBBU1NFUlQoIW1fbGF5ZXIpOwogICAgIGlmIChn
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcikgewogICAgICAgICBnSW1hZ2VRdWFsaXR5Q29udHJvbGxl
ci0+b2JqZWN0RGVzdHJveWVkKHRoaXMpOwogICAgICAgICBpZiAoZ0ltYWdlUXVhbGl0eUNvbnRy
b2xsZXItPmlzRW1wdHkoKSkgewpAQCAtMzM1LDE0ICszMjYsNiBAQCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6flJlbmRlckJveE1vZGVsT2JqZWN0KCkKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcigpCi17Ci0gICAgQVNTRVJUKCFoYXNMYXllcigpKTsg
Ly8gQ2FsbGVycyBzaG91bGQgaGF2ZSBhbHJlYWR5IGNhbGxlZCBzZXRIYXNMYXllcihmYWxzZSkK
LSAgICBBU1NFUlQobV9sYXllcik7Ci0gICAgbV9sYXllci0+ZGVzdHJveShyZW5kZXJBcmVuYSgp
KTsKLSAgICBtX2xheWVyID0gMDsKLX0KLQogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6d2ls
bEJlRGVzdHJveWVkKCkKIHsKICAgICAvLyBBIGNvbnRpbnVhdGlvbiBvZiB0aGlzIFJlbmRlck9i
amVjdCBzaG91bGQgYmUgZGVzdHJveWVkIGF0IHN1YmNsYXNzZXMuCkBAIC0zNTMsMTAzICszMzYs
MTMgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkKICAgICBp
ZiAoZmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KCkpCiAgICAgICAgIHNldEZpcnN0TGV0dGVyUmVt
YWluaW5nVGV4dCgwKTsKIAotICAgIC8vIFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkIGNh
bGxzIGJhY2sgdG8gZGVzdHJveUxheWVyKCkgZm9yIGxheWVyIGRlc3RydWN0aW9uCi0gICAgUmVu
ZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKTsKLX0KLQotYm9vbCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2xheWVy
ICYmIG1fbGF5ZXItPmlzU2VsZlBhaW50aW5nTGF5ZXIoKTsKLX0KLQotdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBS
ZW5kZXJTdHlsZSogbmV3U3R5bGUpCi17Ci0gICAgc193YXNGbG9hdGluZyA9IGlzRmxvYXRpbmco
KTsKLSAgICBzX2hhZExheWVyID0gaGFzTGF5ZXIoKTsKLSAgICBzX2hhZFRyYW5zZm9ybSA9IGhh
c1RyYW5zZm9ybSgpOwotICAgIGlmIChzX2hhZExheWVyKQotICAgICAgICBzX2xheWVyV2FzU2Vs
ZlBhaW50aW5nID0gbGF5ZXIoKS0+aXNTZWxmUGFpbnRpbmdMYXllcigpOwotCi0gICAgLy8gSWYg
b3VyIHotaW5kZXggY2hhbmdlcyB2YWx1ZSBvciBvdXIgdmlzaWJpbGl0eSBjaGFuZ2VzLAotICAg
IC8vIHdlIG5lZWQgdG8gZGlydHkgb3VyIHN0YWNraW5nIGNvbnRleHQncyB6LW9yZGVyIGxpc3Qu
Ci0gICAgUmVuZGVyU3R5bGUqIG9sZFN0eWxlID0gc3R5bGUoKTsKLSAgICBpZiAob2xkU3R5bGUg
JiYgbmV3U3R5bGUpIHsKLSAgICAgICAgaWYgKHBhcmVudCgpKSB7Ci0gICAgICAgICAgICAvLyBE
byBhIHJlcGFpbnQgd2l0aCB0aGUgb2xkIHN0eWxlIGZpcnN0LCBlLmcuLCBmb3IgZXhhbXBsZSBp
ZiB3ZSBnbyBmcm9tCi0gICAgICAgICAgICAvLyBoYXZpbmcgYW4gb3V0bGluZSB0byBub3QgaGF2
aW5nIGFuIG91dGxpbmUuCi0gICAgICAgICAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VS
ZXBhaW50TGF5ZXIpIHsKLSAgICAgICAgICAgICAgICBsYXllcigpLT5yZXBhaW50SW5jbHVkaW5n
RGVzY2VuZGFudHMoKTsKLSAgICAgICAgICAgICAgICBpZiAoIShvbGRTdHlsZS0+Y2xpcCgpID09
IG5ld1N0eWxlLT5jbGlwKCkpKQotICAgICAgICAgICAgICAgICAgICBsYXllcigpLT5jbGVhckNs
aXBSZWN0c0luY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGRp
ZmYgPT0gU3R5bGVEaWZmZXJlbmNlUmVwYWludCB8fCBuZXdTdHlsZS0+b3V0bGluZVNpemUoKSA8
IG9sZFN0eWxlLT5vdXRsaW5lU2l6ZSgpKQotICAgICAgICAgICAgICAgIHJlcGFpbnQoKTsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5
b3V0IHx8IGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlU2ltcGxpZmllZExheW91dCkgewotICAgICAg
ICAgICAgLy8gV2hlbiBhIGxheW91dCBoaW50IGhhcHBlbnMsIHdlIGdvIGFoZWFkIGFuZCBkbyBh
IHJlcGFpbnQgb2YgdGhlIGxheWVyLCBzaW5jZSB0aGUgbGF5ZXIgY291bGQKLSAgICAgICAgICAg
IC8vIGVuZCB1cCBiZWluZyBkZXN0cm95ZWQuCi0gICAgICAgICAgICBpZiAoaGFzTGF5ZXIoKSkg
ewotICAgICAgICAgICAgICAgIGlmIChvbGRTdHlsZS0+cG9zaXRpb24oKSAhPSBuZXdTdHlsZS0+
cG9zaXRpb24oKQotICAgICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+ekluZGV4KCkgIT0g
bmV3U3R5bGUtPnpJbmRleCgpCi0gICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT5oYXNB
dXRvWkluZGV4KCkgIT0gbmV3U3R5bGUtPmhhc0F1dG9aSW5kZXgoKQotICAgICAgICAgICAgICAg
ICAgICB8fCAhKG9sZFN0eWxlLT5jbGlwKCkgPT0gbmV3U3R5bGUtPmNsaXAoKSkKLSAgICAgICAg
ICAgICAgICAgICAgfHwgb2xkU3R5bGUtPmhhc0NsaXAoKSAhPSBuZXdTdHlsZS0+aGFzQ2xpcCgp
Ci0gICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT5vcGFjaXR5KCkgIT0gbmV3U3R5bGUt
Pm9wYWNpdHkoKQotICAgICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+dHJhbnNmb3JtKCkg
IT0gbmV3U3R5bGUtPnRyYW5zZm9ybSgpCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgICAg
ICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+ZmlsdGVyKCkgIT0gbmV3U3R5bGUtPmZpbHRlcigp
Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIGxheWVyKCkt
PnJlcGFpbnRJbmNsdWRpbmdEZXNjZW5kYW50cygpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChu
ZXdTdHlsZS0+aGFzVHJhbnNmb3JtKCkgfHwgbmV3U3R5bGUtPm9wYWNpdHkoKSA8IDEgfHwgbmV3
U3R5bGUtPmhhc0ZpbHRlcigpKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2
ZSBhIGxheWVyIHlldCwgYnV0IHdlIGFyZSBnb2luZyB0byBnZXQgb25lIGJlY2F1c2Ugb2YgdHJh
bnNmb3JtIG9yIG9wYWNpdHksCi0gICAgICAgICAgICAgICAgLy8gIHRoZW4gd2UgbmVlZCB0byBy
ZXBhaW50IHRoZSBvbGQgcG9zaXRpb24gb2YgdGhlIG9iamVjdC4KLSAgICAgICAgICAgICAgICBy
ZXBhaW50KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBSZW5kZXJP
YmplY3Q6OnN0eWxlV2lsbENoYW5nZShkaWZmLCBuZXdTdHlsZSk7CisgICAgUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUpCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojp1cGRhdGVGcm9t
U3R5bGUoKQogewotICAgIFJlbmRlck9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5
bGUpOwotICAgIHVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOwotICAgIAotICAgIGlmIChy
ZXF1aXJlc0xheWVyKCkpIHsKLSAgICAgICAgaWYgKCFsYXllcigpICYmIGxheWVyQ3JlYXRpb25B
bGxvd2VkRm9yU3VidHJlZSgpKSB7Ci0gICAgICAgICAgICBpZiAoc193YXNGbG9hdGluZyAmJiBp
c0Zsb2F0aW5nKCkpCi0gICAgICAgICAgICAgICAgc2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsK
LSAgICAgICAgICAgIG1fbGF5ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckxheWVyKHRo
aXMpOwotICAgICAgICAgICAgc2V0SGFzTGF5ZXIodHJ1ZSk7Ci0gICAgICAgICAgICBtX2xheWVy
LT5pbnNlcnRPbmx5VGhpc0xheWVyKCk7Ci0gICAgICAgICAgICBpZiAocGFyZW50KCkgJiYgIW5l
ZWRzTGF5b3V0KCkgJiYgY29udGFpbmluZ0Jsb2NrKCkpIHsKLSAgICAgICAgICAgICAgICBtX2xh
eWVyLT5zZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnQpOwotICAgICAgICAgICAgICAg
IC8vIFRoZXJlIGlzIG9ubHkgb25lIGxheWVyIHRvIHVwZGF0ZSwgaXQgaXMgbm90IHdvcnRoIHVz
aW5nIHxjYWNoZWRPZmZzZXR8IHNpbmNlCi0gICAgICAgICAgICAgICAgLy8gd2UgYXJlIG5vdCBz
dXJlIHRoZSB2YWx1ZSB3aWxsIGJlIHVzZWQuCi0gICAgICAgICAgICAgICAgbV9sYXllci0+dXBk
YXRlTGF5ZXJQb3NpdGlvbnMoMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVs
c2UgaWYgKGxheWVyKCkgJiYgbGF5ZXIoKS0+cGFyZW50KCkpIHsKLSAgICAgICAgc2V0SGFzVHJh
bnNmb3JtKGZhbHNlKTsgLy8gRWl0aGVyIGEgdHJhbnNmb3JtIHdhc24ndCBzcGVjaWZpZWQgb3Ig
dGhlIG9iamVjdCBkb2Vzbid0IHN1cHBvcnQgdHJhbnNmb3Jtcywgc28ganVzdCBudWxsIG91dCB0
aGUgYml0LgotICAgICAgICBzZXRIYXNSZWZsZWN0aW9uKGZhbHNlKTsKLSAgICAgICAgbV9sYXll
ci0+cmVtb3ZlT25seVRoaXNMYXllcigpOyAvLyBjYWxscyBkZXN0cm95TGF5ZXIoKSB3aGljaCBj
bGVhcnMgbV9sYXllcgotICAgICAgICBpZiAoc193YXNGbG9hdGluZyAmJiBpc0Zsb2F0aW5nKCkp
Ci0gICAgICAgICAgICBzZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUpOwotICAgICAgICBpZiAoc19o
YWRUcmFuc2Zvcm0pCi0gICAgICAgICAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNh
bGMoKTsKLSAgICB9Ci0KLSAgICBpZiAobGF5ZXIoKSkgewotICAgICAgICBsYXllcigpLT5zdHls
ZUNoYW5nZWQoZGlmZiwgb2xkU3R5bGUpOwotICAgICAgICBpZiAoc19oYWRMYXllciAmJiBsYXll
cigpLT5pc1NlbGZQYWludGluZ0xheWVyKCkgIT0gc19sYXllcldhc1NlbGZQYWludGluZykKLSAg
ICAgICAgICAgIHNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAgfQotfQorICAgIFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3Q6OnVwZGF0ZUZyb21TdHlsZSgpOwogCi12b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0Ojp1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKQotewogICAgIC8vIFNl
dCB0aGUgYXBwcm9wcmlhdGUgYml0cyBmb3IgYSBib3ggbW9kZWwgb2JqZWN0LiAgU2luY2UgYWxs
IGJpdHMgYXJlIGNsZWFyZWQgaW4gc3R5bGVXaWxsQ2hhbmdlLAogICAgIC8vIHdlIG9ubHkgY2hl
Y2sgZm9yIGJpdHMgdGhhdCBjb3VsZCBwb3NzaWJseSBiZSBzZXQgdG8gdHJ1ZS4KICAgICBSZW5k
ZXJTdHlsZSogc3R5bGVUb1VzZSA9IHN0eWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDA2N2Y2MDQ2ZDA5MDhhOTRjOTdlOGE0
MjJlNjAyY2JjY2FmYzFkOTMuLjlmYTU5MDg3MTRiMzU4NDA3NGU0NzE5ODk3YTg3ZWQ5NzIwMDM3
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oCkBAIC0yNCw3ICsyNCw3IEBACiAjaWZuZGVmIFJlbmRlckJveE1vZGVsT2JqZWN0X2gKICNk
ZWZpbmUgUmVuZGVyQm94TW9kZWxPYmplY3RfaAogCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0Lmgi
CisjaW5jbHVkZSAiUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIlNoYWRv
d0RhdGEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBL
ZXlmcmFtZUxpc3Q7CiAvLyBUaGlzIGNsYXNzIGlzIHRoZSBiYXNlIGZvciBhbGwgb2JqZWN0cyB0
aGF0IGFkaGVyZSB0byB0aGUgQ1NTIGJveCBtb2RlbCBhcyBkZXNjcmliZWQKIC8vIGF0IGh0dHA6
Ly93d3cudzMub3JnL1RSL0NTUzIxL2JveC5odG1sCiAKLWNsYXNzIFJlbmRlckJveE1vZGVsT2Jq
ZWN0IDogcHVibGljIFJlbmRlck9iamVjdCB7CitjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdCA6
IHB1YmxpYyBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0IHsKIHB1YmxpYzoKICAgICBSZW5kZXJC
b3hNb2RlbE9iamVjdChOb2RlKik7CiAgICAgdmlydHVhbCB+UmVuZGVyQm94TW9kZWxPYmplY3Qo
KTsKQEAgLTc0LDEzICs3NCw5IEBAIHB1YmxpYzoKICAgICBpbnQgcGl4ZWxTbmFwcGVkT2Zmc2V0
V2lkdGgoKSBjb25zdDsKICAgICBpbnQgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29u
c3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRnJvbVN0eWxlKCkgT1ZFUlJJREU7CiAKLSAgICBib29sIGhhc1NlbGZQYWludGlu
Z0xheWVyKCkgY29uc3Q7Ci0gICAgUmVuZGVyTGF5ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9sYXllcjsgfQotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1
cm4gaXNSb290KCkgfHwgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgaXNSZWxQb3NpdGlvbmVk
KCkgfHwgaXNUcmFuc3BhcmVudCgpIHx8IGhhc1RyYW5zZm9ybSgpIHx8IGhhc0hpZGRlbkJhY2tm
YWNlKCkgfHwgaGFzTWFzaygpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBoYXNGaWx0ZXIoKSB8fCBz
dHlsZSgpLT5zcGVjaWZpZXNDb2x1bW5zKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNM
YXllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGlzUm9vdCgpIHx8IGlzT3V0T2ZGbG93UG9z
aXRpb25lZCgpIHx8IGlzUmVsUG9zaXRpb25lZCgpIHx8IGlzVHJhbnNwYXJlbnQoKSB8fCBoYXNU
cmFuc2Zvcm0oKSB8fCBoYXNIaWRkZW5CYWNrZmFjZSgpIHx8IGhhc01hc2soKSB8fCBoYXNSZWZs
ZWN0aW9uKCkgfHwgaGFzRmlsdGVyKCkgfHwgc3R5bGUoKS0+c3BlY2lmaWVzQ29sdW1ucygpOyB9
CiAKICAgICAvLyBUaGlzIHdpbGwgd29yayBvbiBpbmxpbmVzIHRvIHJldHVybiB0aGUgYm91bmRp
bmcgYm94IG9mIGFsbCBvZiB0aGUgbGluZXMnIGJvcmRlciBib3hlcy4KICAgICB2aXJ0dWFsIElu
dFJlY3QgYm9yZGVyQm91bmRpbmdCb3goKSBjb25zdCA9IDA7CkBAIC0xNTYsOSArMTUyLDYgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wg
Zml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdCBPVkVSUklE
RTsKIAotICAgIC8vIENhbGxlZCBieSBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpIGFu
ZCBpcyB0aGUgb25seSB3YXkgbGF5ZXJzIHNob3VsZCBldmVyIGJlIGRlc3Ryb3llZAotICAgIHZv
aWQgZGVzdHJveUxheWVyKCk7Ci0KICAgICB2b2lkIGhpZ2hRdWFsaXR5UmVwYWludFRpbWVyRmly
ZWQoVGltZXI8UmVuZGVyQm94TW9kZWxPYmplY3Q+Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0
U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgcyk7CkBAIC0yOTcsMTAgKzI5MCw2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdGhpY2tuZXNzLCBmbG9h
dCBkcmF3VGhpY2tuZXNzLCBCb3hTaWRlLCBjb25zdCBSZW5kZXJTdHlsZSosIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENvbG9yLCBFQm9yZGVyU3R5bGUsIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlKTsKIAotICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJWaWV3OwotCi0gICAgUmVuZGVy
TGF5ZXIqIG1fbGF5ZXI7Ci0gICAgCiAgICAgLy8gVXNlZCB0byBzdG9yZSBzdGF0ZSBiZXR3ZWVu
IHN0eWxlV2lsbENoYW5nZSBhbmQgc3R5bGVEaWRDaGFuZ2UKICAgICBzdGF0aWMgYm9vbCBzX3dh
c0Zsb2F0aW5nOwogICAgIHN0YXRpYyBib29sIHNfaGFkTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAppbmRleCBmZTE2YjliOGU3MjM2YzMw
OGE0YjcxYWRhZmZiMjY1MzU2MDJlYWY4Li4wNDc5YWYzNDI0ZDdjMzQyZjFhMTkzYjc0MTU4NDEw
NjlkYWM3ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2Vv
bWV0cnlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRy
eU1hcC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjptYXBU
b0Fic29sdXRlKFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSkgY29uc3QKICAgICB0cmFu
c2Zvcm1TdGF0ZS5mbGF0dGVuKCk7ICAgIAogfQogCi12b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpw
dXNoTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0
IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyKQordm9pZCBSZW5kZXJHZW9t
ZXRyeU1hcDo6cHVzaE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyKQog
ewogICAgIC8vIFdlIG5lZWQgdG8gcHVzaCBtYXBwaW5ncyBpbiByZXZlcnNlIG9yZGVyIGhlcmUs
IHNvIGRvIGluc2VydGlvbnMgcmF0aGVyIHRoYW4gYXBwZW5kcy4KICAgICBUZW1wb3JhcnlDaGFu
Z2U8c2l6ZV90PiBwb3NpdGlvbkNoYW5nZShtX2luc2VydGlvblBvc2l0aW9uLCBtX21hcHBpbmcu
c2l6ZSgpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNo
TWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgY29uc3QgUgogICAg
ICAgICBwdXNoKHJlbmRlcmVyLCB0b0xheW91dFNpemUobGF5ZXJPZmZzZXQpLCAvKmFjY3VtdWxh
dGluZ1RyYW5zZm9ybSovIHRydWUsIC8qaXNOb25Vbmlmb3JtKi8gZmFsc2UsIC8qaXNGaXhlZFBv
c2l0aW9uKi8gZmFsc2UsIC8qaGFzVHJhbnNmb3JtKi8gZmFsc2UpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVy
ID0gYW5jZXN0b3JMYXllciA/IGFuY2VzdG9yTGF5ZXItPnJlbmRlcmVyKCkgOiAwOworICAgIGNv
bnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIgPSBhbmNlc3Rv
ckxheWVyID8gYW5jZXN0b3JMYXllci0+cmVuZGVyZXIoKSA6IDA7CiAgICAgcHVzaE1hcHBpbmdz
VG9BbmNlc3RvcihyZW5kZXJlciwgYW5jZXN0b3JSZW5kZXJlcik7CiB9CiAKQEAgLTIxOCw3ICsy
MTgsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyhjb25zdCBSZW5kZXJWaWV3
KiB2aWV3LCBjb25zdCBMYXlvdXRTaXplJiBzY3JvbAogICAgIHN0ZXBJbnNlcnRlZChzdGVwKTsK
IH0KIAotdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0
IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyKQordm9pZCBSZW5kZXJHZW9t
ZXRyeU1hcDo6cG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIGFuY2VzdG9yUmVuZGVyZXIpCiB7CiAgICAgQVNTRVJUKG1fbWFwcGluZy5zaXplKCkp
OwogCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cG9wTWFwcGlu
Z3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3QKIAogdm9pZCBS
ZW5kZXJHZW9tZXRyeU1hcDo6cG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVy
KiBhbmNlc3RvckxheWVyKQogewotICAgIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNl
c3RvclJlbmRlcmVyID0gYW5jZXN0b3JMYXllciA/IGFuY2VzdG9yTGF5ZXItPnJlbmRlcmVyKCkg
OiAwOworICAgIGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yUmVuZGVy
ZXIgPSBhbmNlc3RvckxheWVyID8gYW5jZXN0b3JMYXllci0+cmVuZGVyZXIoKSA6IDA7CiAgICAg
cG9wTWFwcGluZ3NUb0FuY2VzdG9yKGFuY2VzdG9yUmVuZGVyZXIpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5oCmluZGV4IDk4ZjQ0YzYzM2RiM2U3
OWRmYTdlYzcyYjg1ODg4MjE2MDBjOGJiY2MuLjhlMDJhZTc1MjczOGZlN2JhMGZiYzAwMjdkNzY0
NGQ1NzM3YjQ2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
ZW9tZXRyeU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRy
eU1hcC5oCkBAIC03OSw4ICs3OSw4IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgYnkgY29kZSB3
YWxraW5nIHRoZSByZW5kZXJlciBvciBsYXllciB0cmVlcy4KICAgICB2b2lkIHB1c2hNYXBwaW5n
c1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5ZXIqLCBjb25zdCBSZW5kZXJMYXllciogYW5jZXN0
b3JMYXllcik7CiAgICAgdm9pZCBwb3BNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5
ZXIqKTsKLSAgICB2b2lkIHB1c2hNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyT2JqZWN0
KiwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIpOwotICAgIHZv
aWQgcG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0Kik7Cisg
ICAgdm9pZCBwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0
IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIpOworICAgIHZvaWQg
cG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqKTsK
ICAgICAKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgc2hvdWxkIG9ubHkgYmUgY2FsbGVk
IGJ5IHJlbmRlcmVycyBpbnNpZGUgYSBjYWxsIHRvIHB1c2hNYXBwaW5nc1RvQW5jZXN0b3IoKS4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCBkNThiZmMx
YWJkOTlhMDU2NzEyYjM4NzkyMDA4OWI4NDBkNDZmYjhjLi5iMzRlNzRkMmVmODU1OGY2ZDM3ZTY0
YjAyMzVlZTRiZWVkNzAyZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcApAQCAtMTE4LDkgKzExOCw5IEBAIFJlbmRlcklubGluZSogUmVuZGVySW5saW5lOjpp
bmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdG9SZW5kZXJCbG9j
ayhjb250aW51YXRpb24pLT5pbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCk7CiB9CiAKLXZvaWQg
UmVuZGVySW5saW5lOjp1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKQordm9pZCBSZW5kZXJJ
bmxpbmU6OnVwZGF0ZUZyb21TdHlsZSgpCiB7Ci0gICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnVw
ZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOworICAgIFJlbmRlckJveE1vZGVsT2JqZWN0Ojp1
cGRhdGVGcm9tU3R5bGUoKTsKIAogICAgIHNldElubGluZSh0cnVlKTsgLy8gTmVlZGVkIGZvciBy
dW4taW5zLCBzaW5jZSBydW4taW4gaXMgY29uc2lkZXJlZCBhIGJsb2NrIGRpc3BsYXkgdHlwZS4K
IApAQCAtOTU4LDcgKzk1OCw3IEBAIExheW91dFJlY3QgUmVuZGVySW5saW5lOjpsaW5lc1Zpc3Vh
bE92ZXJmbG93Qm91bmRpbmdCb3goKSBjb25zdAogICAgIHJldHVybiByZWN0OwogfQogCi1MYXlv
dXRSZWN0IFJlbmRlcklubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRl
cklubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICAvLyBPbmx5IHJ1bi1pbnMg
YXJlIGFsbG93ZWQgaW4gaGVyZSBkdXJpbmcgbGF5b3V0LgogICAgIEFTU0VSVCghdmlldygpIHx8
ICF2aWV3KCktPmxheW91dFN0YXRlRW5hYmxlZCgpIHx8IGlzUnVuSW4oKSk7CkBAIC0xMDE2LDcg
KzEwMTYsNyBAQCBMYXlvdXRSZWN0IFJlbmRlcklubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcAogICAgIHJldHVybiByZXBhaW50UmVj
dDsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0
bGluZVdpZHRoKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OnJlY3RXaXRoT3V0bGlu
ZUZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwg
TGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCByKFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KHJlcGFpbnRDb250YWlu
ZXIsIG91dGxpbmVXaWR0aCkpOwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyID0gZmlyc3RD
aGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmcoKSkgewpAQCAtMTAyNiw3ICsx
MDI2LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnQKICAgICByZXR1cm4gcjsKIH0KIAotdm9p
ZCBSZW5kZXJJbmxpbmU6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QK
K3ZvaWQgUmVuZGVySW5saW5lOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhl
ZCkgY29uc3QKIHsKICAgICBpZiAoUmVuZGVyVmlldyogdiA9IHZpZXcoKSkgewogICAgICAgICAv
LyBMYXlvdXRTdGF0ZSBpcyBvbmx5IHZhbGlkIGZvciByb290LXJlbGF0aXZlIHJlcGFpbnRpbmcK
QEAgLTExMTYsNyArMTExNiw3IEBAIExheW91dFNpemUgUmVuZGVySW5saW5lOjpvZmZzZXRGcm9t
Q29udGFpbmVyKFJlbmRlck9iamVjdCogY29udGFpbmVyLCBjb25zdCBMYXlvCiAgICAgcmV0dXJu
IG9mZnNldDsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFu
c2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVk
KSBjb25zdAordm9pZCBSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5z
Zm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXIgPT0gdGhpcykKICAgICAgICAgcmV0
dXJuOwpAQCAtMTE2OCw3ICsxMTY4LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9D
b250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFQKICAgICBv
LT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBt
b2RlLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVySW5saW5lOjpw
dXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3Rv
clRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBS
ZW5kZXJPYmplY3QqIFJlbmRlcklubGluZTo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRy
eU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgQVNTRVJUKGFuY2VzdG9yVG9TdG9wQXQg
IT0gdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCBi
YjQzMjg5YmVjMWI5YzRjMjYyYjFmZTVlNjAxZWZlN2JkY2UxNmIxLi41OTU4MzcxMmE4MGI4ZmQ2
ZjE3YmQ1ZGQ0NGEzMzJhMjk0MDQwNzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5oCkBAIC0xMzEsMTIgKzEzMSwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBvZmZzZXRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGxpbmVzQm91bmRpbmdCb3goKS53
aWR0aCgpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldEhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIGxpbmVzQm91bmRpbmdCb3goKS5oZWlnaHQoKTsgfQogCi0gICAgdmlydHVhbCBMYXlv
dXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgcmVjdFdp
dGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21w
dXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IExheW91dFJlY3QmLCBib29sIGZpeGVkKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qg
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0
IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVw
YWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQpIGNvbnN0
IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9j
YWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0
Rm9yVHJhbnNmb3JtcywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAm
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExv
Y2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNl
dEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3Qg
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0
cnlNYXAmKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBv
c2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKIApAQCAtMTYzLDcgKzE2Myw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFkZERhc2hib2FyZFJlZ2lvbnMoVmVjdG9yPERh
c2hib2FyZFJlZ2lvblZhbHVlPiYpOwogI2VuZGlmCiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9t
U3R5bGUoKSBPVkVSUklERTsKICAgICAKICAgICBSZW5kZXJJbmxpbmUqIGNsb25lKCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDY2MWQwZWIw
ODIwZTM4ZmY5ZGE5NWEzNTkxZWQ0ZjAwZmY3NjQ1ZmIuLjdkMjExZmM2MTUwZjdhZGQ2OTQ1Mzg2
YjFiODhmMWIzNzVjMjVlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIGJvb2wgQ2xpcFJlY3Q6OmludGVyc2VjdHMoY29uc3Qg
SGl0VGVzdFBvaW50JiBoaXRUZXN0UG9pbnQpCiAgICAgcmV0dXJuIGhpdFRlc3RQb2ludC5pbnRl
cnNlY3RzKG1fcmVjdCk7CiB9CiAKLVJlbmRlckxheWVyOjpSZW5kZXJMYXllcihSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVuZGVyZXIpCitSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBtX2luUmVzaXplTW9kZShmYWxzZSkK
ICAgICAsIG1fc2Nyb2xsRGltZW5zaW9uc0RpcnR5KHRydWUpCiAgICAgLCBtX25vcm1hbEZsb3dM
aXN0RGlydHkodHJ1ZSkKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRh
dGVMYXllclBvc2l0aW9ucyhMYXlvdXRQb2ludCogb2Zmc2V0RnJvbVJvb3QsIFVwZGF0ZUxheWVy
UAogICAgICAgICAvLyBMYXlvdXRTdGF0ZSBvdXRzaWRlIHRoZSBsYXlvdXQoKSBwaGFzZSBhbmQg
dXNlIGl0IGhlcmUuCiAgICAgICAgIEFTU0VSVCghdmlldy0+bGF5b3V0U3RhdGVFbmFibGVkKCkp
OwogCi0gICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gcmVu
ZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOworICAgICAgICBSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVw
YWludCgpOwogICAgICAgICBMYXlvdXRSZWN0IG9sZFJlcGFpbnRSZWN0ID0gbV9yZXBhaW50UmVj
dDsKICAgICAgICAgTGF5b3V0UmVjdCBvbGRPdXRsaW5lQm94ID0gbV9vdXRsaW5lQm94OwogICAg
ICAgICBjb21wdXRlUmVwYWludFJlY3RzKG9mZnNldEZyb21Sb290KTsKQEAgLTQ4MCw3ICs0ODAs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpjb21wdXRlUmVwYWludFJlY3RzKExheW91dFBvaW50KiBv
ZmZzZXRGcm9tUm9vdCkKIHsKICAgICBBU1NFUlQoIW1fdmlzaWJsZUNvbnRlbnRTdGF0dXNEaXJ0
eSk7CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IHJlbmRl
cmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgp
OwogICAgIG1fcmVwYWludFJlY3QgPSByZW5kZXJlcigpLT5jbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChyZXBhaW50Q29udGFpbmVyKTsKICAgICBtX291dGxpbmVCb3ggPSByZW5kZXJlcigp
LT5vdXRsaW5lQm91bmRzRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCBvZmZzZXRGcm9tUm9v
dCk7CiB9CkBAIC02MDUsMTAgKzYwNSwxMCBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJM
YXllcjo6cmVuZGVyYWJsZVRyYW5zZm9ybShQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpbwogICAg
IHJldHVybiAqbV90cmFuc2Zvcm07CiB9CiAKLXN0YXRpYyBib29sIGNoZWNrQ29udGFpbmluZ0Js
b2NrQ2hhaW5Gb3JQYWdpbmF0aW9uKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciwgUmVu
ZGVyQm94KiBhbmNlc3RvckNvbHVtbnNSZW5kZXJlcikKK3N0YXRpYyBib29sIGNoZWNrQ29udGFp
bmluZ0Jsb2NrQ2hhaW5Gb3JQYWdpbmF0aW9uKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJl
bmRlcmVyLCBSZW5kZXJCb3gqIGFuY2VzdG9yQ29sdW1uc1JlbmRlcmVyKQogewogICAgIFJlbmRl
clZpZXcqIHZpZXcgPSByZW5kZXJlci0+dmlldygpOwotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0
KiBwcmV2QmxvY2sgPSByZW5kZXJlcjsKKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBw
cmV2QmxvY2sgPSByZW5kZXJlcjsKICAgICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrOwog
ICAgIGZvciAoY29udGFpbmluZ0Jsb2NrID0gcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpOwog
ICAgICAgICAgY29udGFpbmluZ0Jsb2NrICYmIGNvbnRhaW5pbmdCbG9jayAhPSB2aWV3ICYmIGNv
bnRhaW5pbmdCbG9jayAhPSBhbmNlc3RvckNvbHVtbnNSZW5kZXJlcjsKQEAgLTg2OSw3ICs4Njks
NyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKCkKICAgICB9CiAgICAg
ICAgIAogICAgIGlmIChyZW5kZXJlcigpLT5pc1JlbFBvc2l0aW9uZWQoKSkgewotICAgICAgICBt
X3JlbGF0aXZlT2Zmc2V0ID0gcmVuZGVyZXIoKS0+cmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpOwor
ICAgICAgICBtX3JlbGF0aXZlT2Zmc2V0ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJl
cigpKS0+cmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpOwogICAgICAgICBsb2NhbFBvaW50Lm1vdmUo
bV9yZWxhdGl2ZU9mZnNldCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9yZWxhdGl2ZU9mZnNl
dCA9IExheW91dFNpemUoKTsKQEAgLTkzMiw3ICs5MzIsNyBAQCBSZW5kZXJMYXllciogUmVuZGVy
TGF5ZXI6OnN0YWNraW5nQ29udGV4dCgpIGNvbnN0CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Bv
c2l0aW9uZWRDb250YWluZXIoUmVuZGVyTGF5ZXIqIGxheWVyKQogewotICAgIFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBsYXllclJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7CisgICAgUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogbGF5ZXJSZW5kZXJlciA9IGxheWVyLT5yZW5kZXJlcigpOwog
ICAgIHJldHVybiBsYXllci0+aXNSb290TGF5ZXIoKSB8fCBsYXllclJlbmRlcmVyLT5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSB8fCBsYXllclJlbmRlcmVyLT5pc1JlbFBvc2l0aW9uZWQoKSB8fCBs
YXllci0+aGFzVHJhbnNmb3JtKCk7CiB9CiAKQEAgLTExMTAsNyArMTExMCw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnNldEZpbHRlckJhY2tlbmROZWVkc1JlcGFpbnRpbmdJblJlY3QoY29uc3QgTGF5
b3V0UmVjdCYgcmVjdCwKIGJvb2wgUmVuZGVyTGF5ZXI6Omhhc0FuY2VzdG9yV2l0aEZpbHRlck91
dHNldHMoKSBjb25zdAogewogICAgIGZvciAoY29uc3QgUmVuZGVyTGF5ZXIqIGN1cnIgPSB0aGlz
OyBjdXJyOyBjdXJyID0gY3Vyci0+cGFyZW50KCkpIHsKLSAgICAgICAgUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlbmRlcmVyID0gY3Vyci0+cmVuZGVyZXIoKTsKKyAgICAgICAgUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogcmVuZGVyZXIgPSBjdXJyLT5yZW5kZXJlcigpOwogICAgICAgICBpZiAo
cmVuZGVyZXItPnN0eWxlKCktPmhhc0ZpbHRlck91dHNldHMoKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTE2OTAsNyArMTY5MCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNj
cm9sbFRvKGludCB4LCBpbnQgeSkKIAogICAgIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJT
Y3JvbGwoKTsKIAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0g
cmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOworICAgIFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSByZW5kZXJlcigpLT5jb250YWluZXJGb3JSZXBh
aW50KCk7CiAgICAgRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKTsKICAgICBpZiAo
ZnJhbWUpIHsKICAgICAgICAgLy8gVGhlIGNhcmV0IHJlY3QgbmVlZHMgdG8gYmUgaW52YWxpZGF0
ZWQgYWZ0ZXIgc2Nyb2xsaW5nCkBAIC00NzU3LDcgKzQ3NTcsNyBAQCB2b2lkIFJlbmRlckxheWVy
OjpzZXRCYWNraW5nTmVlZHNSZXBhaW50SW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHIpCiB9CiAK
IC8vIFNpbmNlIHdlJ3JlIG9ubHkgcGFpbnRpbmcgbm9uLWNvbXBvc2l0ZWQgbGF5ZXJzLCB3ZSBr
bm93IHRoYXQgdGhleSBhbGwgc2hhcmUgdGhlIHNhbWUgcmVwYWludENvbnRhaW5lci4KLXZvaWQg
UmVuZGVyTGF5ZXI6OnJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRzKFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKQordm9pZCBSZW5kZXJMYXllcjo6
cmVwYWludEluY2x1ZGluZ05vbkNvbXBvc2l0aW5nRGVzY2VuZGFudHMoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikKIHsKICAgICByZW5kZXJlcigpLT5yZXBhaW50
VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcmVuZGVyZXIoKS0+Y2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcikpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oCmluZGV4IDAwYzVjMTlkMjQ0ZGM1MmZlMWFjYmQ3NDEzMzE0ZjBm
M2M1YWJkOGQuLjdiMDRmOTgwNjFmNzk0ZDdmNDU0ODcwZGMwMjVhOTJkODkwZDIwY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0yNDUsMTAgKzI0NSwxMCBAQCBj
bGFzcyBSZW5kZXJMYXllciA6IHB1YmxpYyBTY3JvbGxhYmxlQXJlYSB7CiBwdWJsaWM6CiAgICAg
ZnJpZW5kIGNsYXNzIFJlbmRlclJlcGxpY2E7CiAKLSAgICBSZW5kZXJMYXllcihSZW5kZXJCb3hN
b2RlbE9iamVjdCopOworICAgIFJlbmRlckxheWVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
KTsKICAgICB+UmVuZGVyTGF5ZXIoKTsKIAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5k
ZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KKyAgICBSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KICAgICBS
ZW5kZXJCb3gqIHJlbmRlckJveCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXIgJiYgbV9yZW5k
ZXJlci0+aXNCb3goKSA/IHRvUmVuZGVyQm94KG1fcmVuZGVyZXIpIDogMDsgfQogICAgIFJlbmRl
ckxheWVyKiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIFJlbmRlckxh
eWVyKiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzOyB9CkBAIC0y
NjksNyArMjY5LDcgQEAgcHVibGljOgogICAgIC8vIGlmIGxheWVyIGNvbXBvc2l0aW5nIGlzIGJl
aW5nIHVzZWQsCiAgICAgdm9pZCBzZXRCYWNraW5nTmVlZHNSZXBhaW50KCk7CiAgICAgdm9pZCBz
ZXRCYWNraW5nTmVlZHNSZXBhaW50SW5SZWN0KGNvbnN0IExheW91dFJlY3QmKTsgLy8gciBpcyBp
biB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiB0aGUgbGF5ZXIncyByZW5kZXIgb2JqZWN0Ci0gICAg
dm9pZCByZXBhaW50SW5jbHVkaW5nTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7CisgICAgdm9pZCByZXBhaW50SW5jbHVkaW5n
Tm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKTsKICNlbmRpZgogCiAgICAgdm9pZCBzdHlsZUNoYW5nZWQoU3R5bGVEaWZm
ZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwpAQCAtODY3LDcgKzg2Nyw3IEBA
IHByaXZhdGU6CiAKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyTGF5ZXJCYWNraW5nOwogICAgIGZy
aWVuZCBjbGFzcyBSZW5kZXJMYXllckNvbXBvc2l0b3I7Ci0gICAgZnJpZW5kIGNsYXNzIFJlbmRl
ckJveE1vZGVsT2JqZWN0OworICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0OwogCiAgICAgLy8gT25seSBzYWZlIHRvIGNhbGwgZnJvbSBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6ZGVzdHJveUxheWVyKFJlbmRlckFyZW5hKikKICAgICB2b2lkIGRlc3Ryb3koUmVuZGVyQXJl
bmEqKTsKQEAgLTkzOSw3ICs5MzksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQmxlbmRNb2RlIG1fYmxl
bmRNb2RlOwogI2VuZGlmCiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbV9yZW5kZXJlcjsK
KyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBtX3JlbmRlcmVyOwogCiAgICAgUmVuZGVy
TGF5ZXIqIG1fcGFyZW50OwogICAgIFJlbmRlckxheWVyKiBtX3ByZXZpb3VzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCmluZGV4IGYxMDdkYzI3OTAx
ZmVhMWNlYTU1NmUyZGI0YTQ5MjQzMGM2NTQ1MWMuLjk0N2E2YzA2MGUxZTdmNDQwYjZhYjZiYTkz
NGRmZTRiYzI1NTJiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmgKQEAgLTE3NSw3ICsxNzUsNyBAQCBwcml2YXRlOgogICAgIAogICAgIFBhc3NP
d25QdHI8R3JhcGhpY3NMYXllcj4gY3JlYXRlR3JhcGhpY3NMYXllcihjb25zdCBTdHJpbmcmKTsK
IAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1f
b3duaW5nTGF5ZXItPnJlbmRlcmVyKCk7IH0KKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fb3duaW5nTGF5ZXItPnJlbmRlcmVyKCk7IH0K
ICAgICBSZW5kZXJMYXllckNvbXBvc2l0b3IqIGNvbXBvc2l0b3IoKSBjb25zdCB7IHJldHVybiBt
X293bmluZ0xheWVyLT5jb21wb3NpdG9yKCk7IH0KIAogICAgIHZvaWQgdXBkYXRlSW50ZXJuYWxI
aWVyYXJjaHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKaW5kZXggNzJiYTRjMmY4ZmJhOGYxZTdkNTc3ZDcxMDMxZTA3YzliZjYx
MzUzMC4uZWMzNWY0YTI5MGY3ZGIxY2Y2NTcyYmM1NjIwOGFmNDg0YTc1ZjVmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAg
LTUwNyw3ICs1MDcsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQmFja2lu
ZyhSZW5kZXJMYXllciogbGF5ZXIsIENvbXBvc2l0aW5nQ2hhbmdlUgogICAgICAgICAgICAgLy8g
aXRzIHJlcGxpY2EgR3JhcGhpY3NMYXllci4gSW4gcHJhY3RpY2UgdGhpcyBzaG91bGQgbmV2ZXIg
aGFwcGVuIGJlY2F1c2UgcmVmbGVjdGVlIGFuZCByZWZsZWN0aW9uIAogICAgICAgICAgICAgLy8g
YXJlIGJvdGggZWl0aGVyIGNvbXBvc2l0ZWQsIG9yIG5vdCBjb21wb3NpdGVkLgogICAgICAgICAg
ICAgaWYgKGxheWVyLT5pc1JlZmxlY3Rpb24oKSkgewotICAgICAgICAgICAgICAgIFJlbmRlckxh
eWVyKiBzb3VyY2VMYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QobGF5ZXItPnJlbmRlcmVy
KCktPnBhcmVudCgpKS0+bGF5ZXIoKTsKKyAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogc291
cmNlTGF5ZXIgPSB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QobGF5ZXItPnJlbmRlcmVyKCkt
PnBhcmVudCgpKS0+bGF5ZXIoKTsKICAgICAgICAgICAgICAgICBpZiAoUmVuZGVyTGF5ZXJCYWNr
aW5nKiBiYWNraW5nID0gc291cmNlTGF5ZXItPmJhY2tpbmcoKSkgewogICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5yZXBsaWNhTGF5ZXIoKSA9PSBs
YXllci0+YmFja2luZygpLT5ncmFwaGljc0xheWVyKCkpOwogICAgICAgICAgICAgICAgICAgICBi
YWNraW5nLT5ncmFwaGljc0xheWVyKCktPnNldFJlcGxpY2F0ZWRCeUxheWVyKDApOwpAQCAtNTcw
LDcgKzU3MCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXBhaW50T25Db21wb3Np
dGluZ0NoYW5nZShSZW5kZXJMYXllciogbGF5ZXIpCiAgICAgaWYgKGxheWVyLT5yZW5kZXJlcigp
ICE9IG1fcmVuZGVyVmlldyAmJiAhbGF5ZXItPnJlbmRlcmVyKCktPnBhcmVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9
IGxheWVyLT5yZW5kZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50KCk7CisgICAgUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciA9IGxheWVyLT5yZW5kZXJlcigpLT5j
b250YWluZXJGb3JSZXBhaW50KCk7CiAgICAgaWYgKCFyZXBhaW50Q29udGFpbmVyKQogICAgICAg
ICByZXBhaW50Q29udGFpbmVyID0gbV9yZW5kZXJWaWV3OwogCkBAIC0xNDMyLDcgKzE0MzIsNyBA
QCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0xheWVyKGNv
bnN0IFJlbmRlckxheWVyKiBsYXllcikgYwogICAgIC8vIFRoZSBjb21wb3NpdGluZyBzdGF0ZSBv
ZiBhIHJlZmxlY3Rpb24gc2hvdWxkIG1hdGNoIHRoYXQgb2YgaXRzIHJlZmxlY3RlZCBsYXllci4K
ICAgICBpZiAobGF5ZXItPmlzUmVmbGVjdGlvbigpKSB7CiAgICAgICAgIHJlbmRlcmVyID0gcmVu
ZGVyZXItPnBhcmVudCgpOyAvLyBUaGUgUmVuZGVyUmVwbGljYSdzIHBhcmVudCBpcyB0aGUgb2Jq
ZWN0IGJlaW5nIHJlZmxlY3RlZC4KLSAgICAgICAgbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2Jq
ZWN0KHJlbmRlcmVyKS0+bGF5ZXIoKTsKKyAgICAgICAgbGF5ZXIgPSB0b1JlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QocmVuZGVyZXIpLT5sYXllcigpOwogICAgIH0KICAgICAvLyBUaGUgcm9vdCBs
YXllciBhbHdheXMgaGFzIGEgY29tcG9zaXRpbmcgbGF5ZXIsIGJ1dCBpdCBtYXkgbm90IGhhdmUg
YmFja2luZy4KICAgICByZXR1cm4gcmVxdWlyZXNDb21wb3NpdGluZ0ZvclRyYW5zZm9ybShyZW5k
ZXJlcikKQEAgLTE0OTcsNyArMTQ5Nyw3IEBAIGNvbnN0IGNoYXIqIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cmVhc29uRm9yQ29tcG9zaXRpbmcoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyCiAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGxheWVyLT5yZW5kZXJlcigpOwogICAgIGlmIChsYXll
ci0+aXNSZWZsZWN0aW9uKCkpIHsKICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50
KCk7Ci0gICAgICAgIGxheWVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlciktPmxh
eWVyKCk7CisgICAgICAgIGxheWVyID0gdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KHJlbmRl
cmVyKS0+bGF5ZXIoKTsKICAgICB9CiAKICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclRy
YW5zZm9ybShyZW5kZXJlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHAKaW5kZXggMDRkODYzMmE4MTlmODllZTE5NDk2MDk0Y2IyMWYxN2Y0YTY3NGI0
Yy4uMThmNzM3M2U0OTJlZTNiMDZjMWE0ZWUyNzI0MTE0NTEwNzUzZTMzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMTcwMyw3ICsxNzAz
LDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25T
dGF0ZSBzdGF0ZSkKICAgICAgICAgICAgIHJvb3QtPnNldEhhc1NlbGVjdGVkQ2hpbGRyZW4oc3Rh
dGUgIT0gU2VsZWN0aW9uTm9uZSk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyTGlzdE1hcmtlcjo6
c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpCitMYXlvdXRSZWN0IFJlbmRlckxpc3RN
YXJrZXI6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpCiB7CiAgICAgQVNT
RVJUKCFuZWVkc0xheW91dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmgKaW5kZXggZDg4ZDkyMmIwZTQyODNjY2E0NTYwMzVmNGVlYjExN2Q4MmM4ZjUy
ZC4uYjJmNTI1YWZkN2Q3YmZkYmRlM2E2NTFjYjliYzMxZjIwNDYyMmNkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCkBAIC02NSw3ICs2NSw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiAhaXNJbWFnZSgpOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUpOwotICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRy
dWUpOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2li
bGVDb250ZW50ID0gdHJ1ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0
aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgdXBkYXRlTWFyZ2lu
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAzOTFj
MTE5ODg2YTU2NDMzOGM3ZDFkZjFkN2YzMWUwZjczNzIzYTQ5Li42MDRjZDg0N2U5YWJmYTU0N2Fj
OTU2NDVhMmZhN2ViNjQ0ZWUxZGRhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphZGRDaGls
ZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQogICAg
IC8vIFRvIGF2b2lkIHRoZSBwcm9ibGVtIGFsbHRvZ2V0aGVyLCBkZXRlY3QgZWFybHkgaWYgd2Un
cmUgaW5zaWRlIGEgaGlkZGVuIFNWRyBzdWJ0cmVlCiAgICAgLy8gYW5kIHN0b3AgY3JlYXRpbmcg
bGF5ZXJzIGF0IGFsbCBmb3IgdGhlc2UgY2FzZXMgLSB0aGV5J3JlIG5vdCB1c2VkIGFueXdheXMu
CiAgICAgaWYgKG5ld0NoaWxkLT5oYXNMYXllcigpICYmICFsYXllckNyZWF0aW9uQWxsb3dlZEZv
clN1YnRyZWUoKSkKLSAgICAgICAgdG9SZW5kZXJCb3hNb2RlbE9iamVjdChuZXdDaGlsZCktPmxh
eWVyKCktPnJlbW92ZU9ubHlUaGlzTGF5ZXIoKTsKKyAgICAgICAgdG9SZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KG5ld0NoaWxkKS0+bGF5ZXIoKS0+cmVtb3ZlT25seVRoaXNMYXllcigpOwogfQog
CiB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0KiBvbGRDaGlsZCkK
QEAgLTQzMiw3ICs0MzIsNyBAQCBzdGF0aWMgdm9pZCBhZGRMYXllcnMoUmVuZGVyT2JqZWN0KiBv
YmosIFJlbmRlckxheWVyKiBwYXJlbnRMYXllciwgUmVuZGVyT2JqZWN0KgogICAgICAgICAgICAg
YmVmb3JlQ2hpbGQgPSBuZXdPYmplY3QtPnBhcmVudCgpLT5maW5kTmV4dExheWVyKHBhcmVudExh
eWVyLCBuZXdPYmplY3QpOwogICAgICAgICAgICAgbmV3T2JqZWN0ID0gMDsKICAgICAgICAgfQot
ICAgICAgICBwYXJlbnRMYXllci0+YWRkQ2hpbGQodG9SZW5kZXJCb3hNb2RlbE9iamVjdChvYmop
LT5sYXllcigpLCBiZWZvcmVDaGlsZCk7CisgICAgICAgIHBhcmVudExheWVyLT5hZGRDaGlsZCh0
b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qob2JqKS0+bGF5ZXIoKSwgYmVmb3JlQ2hpbGQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTYsNyArNDU2LDcgQEAgdm9pZCBSZW5kZXJP
YmplY3Q6OnJlbW92ZUxheWVycyhSZW5kZXJMYXllciogcGFyZW50TGF5ZXIpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChoYXNMYXllcigpKSB7Ci0gICAgICAgIHBhcmVudExheWVyLT5yZW1v
dmVDaGlsZCh0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpKTsKKyAgICAgICAg
cGFyZW50TGF5ZXItPnJlbW92ZUNoaWxkKHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCh0aGlz
KS0+bGF5ZXIoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ3MCw3ICs0NzAsNyBA
QCB2b2lkIFJlbmRlck9iamVjdDo6bW92ZUxheWVycyhSZW5kZXJMYXllciogb2xkUGFyZW50LCBS
ZW5kZXJMYXllciogbmV3UGFyZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaGFzTGF5
ZXIoKSkgewotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2Jq
ZWN0KHRoaXMpLT5sYXllcigpOworICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCk7CiAgICAgICAgIEFTU0VSVChvbGRQ
YXJlbnQgPT0gbGF5ZXItPnBhcmVudCgpKTsKICAgICAgICAgaWYgKG9sZFBhcmVudCkKICAgICAg
ICAgICAgIG9sZFBhcmVudC0+cmVtb3ZlQ2hpbGQobGF5ZXIpOwpAQCAtNDkwLDcgKzQ5MCw3IEBA
IFJlbmRlckxheWVyKiBSZW5kZXJPYmplY3Q6OmZpbmROZXh0TGF5ZXIoUmVuZGVyTGF5ZXIqIHBh
cmVudExheWVyLCBSZW5kZXJPYmplY3QqCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gU3Rl
cCAxOiBJZiBvdXIgbGF5ZXIgaXMgYSBjaGlsZCBvZiB0aGUgZGVzaXJlZCBwYXJlbnQsIHRoZW4g
cmV0dXJuIG91ciBsYXllci4KLSAgICBSZW5kZXJMYXllciogb3VyTGF5ZXIgPSBoYXNMYXllcigp
ID8gdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKSA6IDA7CisgICAgUmVuZGVy
TGF5ZXIqIG91ckxheWVyID0gaGFzTGF5ZXIoKSA/IHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCh0aGlzKS0+bGF5ZXIoKSA6IDA7CiAgICAgaWYgKG91ckxheWVyICYmIG91ckxheWVyLT5wYXJl
bnQoKSA9PSBwYXJlbnRMYXllcikKICAgICAgICAgcmV0dXJuIG91ckxheWVyOwogCkBAIC01MjIs
NyArNTIyLDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlck9iamVjdDo6ZW5jbG9zaW5nTGF5ZXIoKSBj
b25zdAogewogICAgIGNvbnN0IFJlbmRlck9iamVjdCogY3VyciA9IHRoaXM7CiAgICAgd2hpbGUg
KGN1cnIpIHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gY3Vyci0+aGFzTGF5ZXIoKSA/
IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY3VyciktPmxheWVyKCkgOiAwOworICAgICAgICBSZW5k
ZXJMYXllciogbGF5ZXIgPSBjdXJyLT5oYXNMYXllcigpID8gdG9SZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0KGN1cnIpLT5sYXllcigpIDogMDsKICAgICAgICAgaWYgKGxheWVyKQogICAgICAgICAg
ICAgcmV0dXJuIGxheWVyOwogICAgICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7CkBAIC03MTgs
MTMgKzcxOCwxMyBAQCB2b2lkIFJlbmRlck9iamVjdDo6aW52YWxpZGF0ZUNvbnRhaW5lclByZWZl
cnJlZExvZ2ljYWxXaWR0aHMoKQogdm9pZCBSZW5kZXJPYmplY3Q6OnNldExheWVyTmVlZHNGdWxs
UmVwYWludCgpCiB7CiAgICAgQVNTRVJUKGhhc0xheWVyKCkpOwotICAgIHRvUmVuZGVyQm94TW9k
ZWxPYmplY3QodGhpcyktPmxheWVyKCktPnNldFJlcGFpbnRTdGF0dXMoTmVlZHNGdWxsUmVwYWlu
dCk7CisgICAgdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KHRoaXMpLT5sYXllcigpLT5zZXRS
ZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnQpOwogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6
c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KCkKIHsK
ICAgICBBU1NFUlQoaGFzTGF5ZXIoKSk7Ci0gICAgdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlz
KS0+bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25l
ZE1vdmVtZW50TGF5b3V0KTsKKyAgICB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcykt
PmxheWVyKCktPnNldFJlcGFpbnRTdGF0dXMoTmVlZHNGdWxsUmVwYWludEZvclBvc2l0aW9uZWRN
b3ZlbWVudExheW91dCk7CiB9CiAKIFJlbmRlckJsb2NrKiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5p
bmdCbG9jaygpIGNvbnN0CkBAIC0xMjQzLDEzICsxMjQzLDEzIEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpCiB7CiB9CiAKLVJlbmRlckJv
eE1vZGVsT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5lckZvclJlcGFpbnQoKSBjb25zdAor
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogUmVuZGVyT2JqZWN0Ojpjb250YWluZXJGb3JSZXBh
aW50KCkgY29uc3QKIHsKICAgICBSZW5kZXJWaWV3KiB2ID0gdmlldygpOwogICAgIGlmICghdikK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIgPSAwOworICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRD
b250YWluZXIgPSAwOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlm
ICh2LT51c2VzQ29tcG9zaXRpbmcoKSkgewpAQCAtMTI3OSw3ICsxMjc5LDcgQEAgUmVuZGVyQm94
TW9kZWxPYmplY3QqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyRm9yUmVwYWludCgpIGNvbnN0CiAg
ICAgcmV0dXJuIHJlcGFpbnRDb250YWluZXI7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0OjpyZXBh
aW50VXNpbmdDb250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IGNvbnN0IExheW91dFJlY3QmIHIsIGJvb2wgaW1tZWRpYXRlKQordm9pZCBSZW5kZXJPYmplY3Q6
OnJlcGFpbnRVc2luZ0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiByLCBib29sIGltbWVkaWF0ZSkKIHsKICAgICBp
ZiAoIXJlcGFpbnRDb250YWluZXIpIHsKICAgICAgICAgdmlldygpLT5yZXBhaW50Vmlld1JlY3Rh
bmdsZShyLCBpbW1lZGlhdGUpOwpAQCAtMTMzMiw3ICsxMzMyLDcgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OnJlcGFpbnQoYm9vbCBpbW1lZGlhdGUpCiAgICAgaWYgKHZpZXctPnByaW50aW5nKCkpCiAg
ICAgICAgIHJldHVybjsgLy8gRG9uJ3QgcmVwYWludCBpZiB3ZSdyZSBwcmludGluZy4KIAotICAg
IFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gY29udGFpbmVyRm9yUmVw
YWludCgpOworICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIg
PSBjb250YWluZXJGb3JSZXBhaW50KCk7CiAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFp
bnRDb250YWluZXIgPyByZXBhaW50Q29udGFpbmVyIDogdmlldywgY2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciksIGltbWVkaWF0ZSk7CiB9CiAKQEAgLTEzNTIs
NyArMTM1Miw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpyZXBhaW50UmVjdGFuZ2xlKGNvbnN0IExh
eW91dFJlY3QmIHIsIGJvb2wgaW1tZWRpYXRlKQogICAgIC8vIHJlcGFpbnQgY29udGFpbmVycy4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzA4CiAgICAgZGlydHlS
ZWN0Lm1vdmUodmlldy0+bGF5b3V0RGVsdGEoKSk7CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciA9IGNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICBSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gY29udGFpbmVyRm9yUmVwYWlu
dCgpOwogICAgIGNvbXB1dGVSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCBkaXJ0eVJl
Y3QpOwogICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyID8gcmVwYWlu
dENvbnRhaW5lciA6IHZpZXcsIGRpcnR5UmVjdCwgaW1tZWRpYXRlKTsKIH0KQEAgLTEzNjIsNyAr
MTM2Miw3IEBAIEludFJlY3QgUmVuZGVyT2JqZWN0OjpwaXhlbFNuYXBwZWRBYnNvbHV0ZUNsaXBw
ZWRPdmVyZmxvd1JlY3QoKSBjb25zdAogICAgIHJldHVybiBwaXhlbFNuYXBwZWRJbnRSZWN0KGFi
c29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpKTsKIH0KIAotYm9vbCBSZW5kZXJPYmplY3Q6OnJl
cGFpbnRBZnRlckxheW91dElmTmVlZGVkKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIG9s
ZE91dGxpbmVCb3gsIGNvbnN0IExheW91dFJlY3QqIG5ld0JvdW5kc1B0ciwgY29uc3QgTGF5b3V0
UmVjdCogbmV3T3V0bGluZUJveFJlY3RQdHIpCitib29sIFJlbmRlck9iamVjdDo6cmVwYWludEFm
dGVyTGF5b3V0SWZOZWVkZWQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRh
aW5lciwgY29uc3QgTGF5b3V0UmVjdCYgb2xkQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRP
dXRsaW5lQm94LCBjb25zdCBMYXlvdXRSZWN0KiBuZXdCb3VuZHNQdHIsIGNvbnN0IExheW91dFJl
Y3QqIG5ld091dGxpbmVCb3hSZWN0UHRyKQogewogICAgIFJlbmRlclZpZXcqIHYgPSB2aWV3KCk7
CiAgICAgaWYgKHYtPnByaW50aW5nKCkpCkBAIC0xNDgzLDIwICsxNDgzLDIwIEBAIGJvb2wgUmVu
ZGVyT2JqZWN0OjpjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSBjb25zdAogICAgIHJldHVy
biAhZG9jdW1lbnQoKS0+dmlldygpLT5uZWVkc0Z1bGxSZXBhaW50KCkgJiYgIWhhc0xheWVyKCkg
JiYgZXZlckhhZExheW91dCgpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6cmVjdFdp
dGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlck9iamVj
dDo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QKIHsKICAgICBM
YXlvdXRSZWN0IHIoY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5l
cikpOwogICAgIHIuaW5mbGF0ZShvdXRsaW5lV2lkdGgpOwogICAgIHJldHVybiByOwogfQogCi1M
YXlvdXRSZWN0IFJlbmRlck9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OmNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqKSBjb25z
dAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBMYXlvdXRSZWN0KCk7
CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4
ZWQpIGNvbnN0Cit2b2lkIFJlbmRlck9iamVjdDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3Qs
IGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXIgPT0gdGhpcykK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTUyNyw3ICsxNTI3LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6
OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCosIEZsb2F0UmVjdCYsIGJvb2wpIGNvbnN0Cit2
b2lkIFJlbmRlck9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCosIEZsb2F0UmVjdCYsIGJvb2wpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CkBAIC0xNjg4LDcgKzE2ODgsNyBAQCBTdHlsZURpZmZlcmVuY2UgUmVu
ZGVyT2JqZWN0OjphZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIHVu
c2lnbgogICAgICAgICAvLyBUZXh0IG5vZGVzIHNoYXJlIHN0eWxlIHdpdGggdGhlaXIgcGFyZW50
cyBidXQgdHJhbnNmb3JtcyBkb24ndCBhcHBseSB0byB0aGVtLAogICAgICAgICAvLyBoZW5jZSB0
aGUgIWlzVGV4dCgpIGNoZWNrLgogICAgICAgICAvLyBGSVhNRTogd2hlbiB0cmFuc2Zvcm1zIGFy
ZSB0YWtlbiBpbnRvIGFjY291bnQgZm9yIG92ZXJmbG93LCB3ZSB3aWxsIG5lZWQgdG8gZG8gYSBs
YXlvdXQuCi0gICAgICAgIGlmICghaXNUZXh0KCkgJiYgKCFoYXNMYXllcigpIHx8ICF0b1JlbmRl
ckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkpIHsKKyAgICAg
ICAgaWYgKCFpc1RleHQoKSAmJiAoIWhhc0xheWVyKCkgfHwgIXRvUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkpKSB7CiAgICAgICAgICAgICAv
LyBXZSBuZWVkIHRvIHNldCBhdCBsZWFzdCBTaW1wbGlmaWVkTGF5b3V0LCBidXQgaWYgUG9zaXRp
b25lZE1vdmVtZW50T25seSBpcyBhbHJlYWR5IHNldAogICAgICAgICAgICAgLy8gdGhlbiB3ZSBh
Y3R1YWxseSBuZWVkIFNpbXBsaWZpZWRMYXlvdXRBbmRQb3NpdGlvbmVkTW92ZW1lbnQuCiAgICAg
ICAgICAgICBpZiAoIWhhc0xheWVyKCkpCkBAIC0xNzA0LDcgKzE3MDQsNyBAQCBTdHlsZURpZmZl
cmVuY2UgUmVuZGVyT2JqZWN0OjphZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNl
IGRpZmYsIHVuc2lnbgogICAgIC8vIElmIG9wYWNpdHkgY2hhbmdlZCwgYW5kIHdlIGFyZSBub3Qg
Y29tcG9zaXRlZCwgbmVlZCB0byByZXBhaW50IChhbHNvCiAgICAgLy8gaWdub3JpbmcgdGV4dCBu
b2RlcykKICAgICBpZiAoY29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgJiBDb250ZXh0U2Vuc2l0
aXZlUHJvcGVydHlPcGFjaXR5KSB7Ci0gICAgICAgIGlmICghaXNUZXh0KCkgJiYgKCFoYXNMYXll
cigpIHx8ICF0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0
ZWQoKSkpCisgICAgICAgIGlmICghaXNUZXh0KCkgJiYgKCFoYXNMYXllcigpIHx8ICF0b1JlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpKSkKICAg
ICAgICAgICAgIGRpZmYgPSBTdHlsZURpZmZlcmVuY2VSZXBhaW50TGF5ZXI7CiAgICAgICAgIGVs
c2UgaWYgKGRpZmYgPCBTdHlsZURpZmZlcmVuY2VSZWNvbXBvc2l0ZUxheWVyKQogICAgICAgICAg
ICAgZGlmZiA9IFN0eWxlRGlmZmVyZW5jZVJlY29tcG9zaXRlTGF5ZXI7CkBAIC0xNzEyLDcgKzE3
MTIsNyBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyT2JqZWN0OjphZGp1c3RTdHlsZURpZmZlcmVu
Y2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIHVuc2lnbgogICAgIAogI2lmIEVOQUJMRShDU1NfRklM
VEVSUykKICAgICBpZiAoKGNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzICYgQ29udGV4dFNlbnNp
dGl2ZVByb3BlcnR5RmlsdGVyKSAmJiBoYXNMYXllcigpKSB7Ci0gICAgICAgIFJlbmRlckxheWVy
KiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCk7CisgICAgICAg
IFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCh0aGlzKS0+
bGF5ZXIoKTsKICAgICAgICAgaWYgKCFsYXllci0+aXNDb21wb3NpdGVkKCkgfHwgbGF5ZXItPnBh
aW50c1dpdGhGaWx0ZXJzKCkpCiAgICAgICAgICAgICBkaWZmID0gU3R5bGVEaWZmZXJlbmNlUmVw
YWludExheWVyOwogICAgICAgICBlbHNlIGlmIChkaWZmIDwgU3R5bGVEaWZmZXJlbmNlUmVjb21w
b3NpdGVMYXllcikKQEAgLTE3MjMsOCArMTcyMyw4IEBAIFN0eWxlRGlmZmVyZW5jZSBSZW5kZXJP
YmplY3Q6OmFkanVzdFN0eWxlRGlmZmVyZW5jZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgdW5zaWdu
CiAgICAgLy8gVGhlIGFuc3dlciB0byByZXF1aXJlc0xheWVyKCkgZm9yIHBsdWdpbnMgYW5kIGlm
cmFtZXMgY2FuIGNoYW5nZSBvdXRzaWRlIG9mIHRoZSBzdHlsZSBzeXN0ZW0sCiAgICAgLy8gc2lu
Y2UgaXQgZGVwZW5kcyBvbiB3aGV0aGVyIHdlIGRlY2lkZSB0byBjb21wb3NpdGUgdGhlc2UgZWxl
bWVudHMuIFdoZW4gdGhlIGxheWVyIHN0YXR1cyBvZgogICAgIC8vIG9uZSBvZiB0aGVzZSBlbGVt
ZW50cyBjaGFuZ2VzLCB3ZSBuZWVkIHRvIGZvcmNlIGEgbGF5b3V0LgotICAgIGlmIChkaWZmID09
IFN0eWxlRGlmZmVyZW5jZUVxdWFsICYmIHN0eWxlKCkgJiYgaXNCb3hNb2RlbE9iamVjdCgpKSB7
Ci0gICAgICAgIGlmIChoYXNMYXllcigpICE9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcykt
PnJlcXVpcmVzTGF5ZXIoKSkKKyAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VFcXVhbCAm
JiBzdHlsZSgpICYmIGlzVHJhbnNmb3JtYWJsZU9iamVjdCgpKSB7CisgICAgICAgIGlmIChoYXNM
YXllcigpICE9IHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCh0aGlzKS0+cmVxdWlyZXNMYXll
cigpKQogICAgICAgICAgICAgZGlmZiA9IFN0eWxlRGlmZmVyZW5jZUxheW91dDsKICAgICB9CiAj
ZWxzZQpAQCAtMjAzMSw3ICsyMDMxLDcgQEAgRmxvYXRQb2ludCBSZW5kZXJPYmplY3Q6OmFic29s
dXRlVG9Mb2NhbChjb25zdCBGbG9hdFBvaW50JiBjb250YWluZXJQb2ludCwgYm9vbAogICAgIHJl
dHVybiB0cmFuc2Zvcm1TdGF0ZS5sYXN0UGxhbmFyUG9pbnQoKTsKIH0KIAotdm9pZCBSZW5kZXJP
YmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRh
aW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJPYmplY3Q6
Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFp
bmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRD
b250YWluZXIgPT0gdGhpcykKICAgICAgICAgcmV0dXJuOwpAQCAtMjA1OSw3ICsyMDU5LDcgQEAg
dm9pZCBSZW5kZXJPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIFQKICAgICBvLT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFp
bnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0
IFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0
IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1h
cCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6
cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBh
bmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7
CiAgICAgQVNTRVJUX1VOVVNFRChhbmNlc3RvclRvU3RvcEF0LCBhbmNlc3RvclRvU3RvcEF0ICE9
IHRoaXMpOwogCkBAIC0yMDkyLDcgKzIwOTIsNyBAQCBib29sIFJlbmRlck9iamVjdDo6c2hvdWxk
VXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIGNvbnRhaW5lcgog
I2lmIEVOQUJMRSgzRF9SRU5ERVJJTkcpCiAgICAgLy8gaGFzVHJhbnNmb3JtKCkgaW5kaWNhdGVz
IHdoZXRoZXIgdGhlIG9iamVjdCBoYXMgdHJhbnNmb3JtLCB0cmFuc2Zvcm0tc3R5bGUgb3IgcGVy
c3BlY3RpdmUuIFdlIGp1c3QgY2FyZSBhYm91dCB0cmFuc2Zvcm0sCiAgICAgLy8gc28gY2hlY2sg
dGhlIGxheWVyJ3MgdHJhbnNmb3JtIGRpcmVjdGx5LgotICAgIHJldHVybiAoaGFzTGF5ZXIoKSAm
JiB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT50cmFuc2Zvcm0oKSkgfHwg
KGNvbnRhaW5lck9iamVjdCAmJiBjb250YWluZXJPYmplY3QtPnN0eWxlKCktPmhhc1BlcnNwZWN0
aXZlKCkpOworICAgIHJldHVybiAoaGFzTGF5ZXIoKSAmJiB0b1JlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QodGhpcyktPmxheWVyKCktPnRyYW5zZm9ybSgpKSB8fCAoY29udGFpbmVyT2JqZWN0ICYm
IGNvbnRhaW5lck9iamVjdC0+c3R5bGUoKS0+aGFzUGVyc3BlY3RpdmUoKSk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShjb250YWluZXJPYmplY3QpOwogICAgIHJldHVybiBoYXNUcmFuc2Zvcm0o
KTsKQEAgLTIxMDQsMTQgKzIxMDQsMTQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9y
bUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXJPYmplY3QKICAgICB0
cmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvZmZzZXRJ
bkNvbnRhaW5lci53aWR0aCgpLCBvZmZzZXRJbkNvbnRhaW5lci5oZWlnaHQoKSk7CiAgICAgUmVu
ZGVyTGF5ZXIqIGxheWVyOwotICAgIGlmIChoYXNMYXllcigpICYmIChsYXllciA9IHRvUmVuZGVy
Qm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCkpICYmIGxheWVyLT50cmFuc2Zvcm0oKSkKKyAg
ICBpZiAoaGFzTGF5ZXIoKSAmJiAobGF5ZXIgPSB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qo
dGhpcyktPmxheWVyKCkpICYmIGxheWVyLT50cmFuc2Zvcm0oKSkKICAgICAgICAgdHJhbnNmb3Jt
Lm11bHRpcGx5KGxheWVyLT5jdXJyZW50VHJhbnNmb3JtKCkpOwogICAgIAogI2lmIEVOQUJMRSgz
RF9SRU5ERVJJTkcpCiAgICAgaWYgKGNvbnRhaW5lck9iamVjdCAmJiBjb250YWluZXJPYmplY3Qt
Pmhhc0xheWVyKCkgJiYgY29udGFpbmVyT2JqZWN0LT5zdHlsZSgpLT5oYXNQZXJzcGVjdGl2ZSgp
KSB7CiAgICAgICAgIC8vIFBlcnBzZWN0aXZlIG9uIHRoZSBjb250YWluZXIgYWZmZWN0cyB1cywg
c28gd2UgaGF2ZSB0byBmYWN0b3IgaXQgaW4gaGVyZS4KICAgICAgICAgQVNTRVJUKGNvbnRhaW5l
ck9iamVjdC0+aGFzTGF5ZXIoKSk7Ci0gICAgICAgIEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVPcmln
aW4gPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGNvbnRhaW5lck9iamVjdCktPmxheWVyKCktPnBl
cnNwZWN0aXZlT3JpZ2luKCk7CisgICAgICAgIEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4g
PSB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QoY29udGFpbmVyT2JqZWN0KS0+bGF5ZXIoKS0+
cGVyc3BlY3RpdmVPcmlnaW4oKTsKIAogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwZXJz
cGVjdGl2ZU1hdHJpeDsKICAgICAgICAgcGVyc3BlY3RpdmVNYXRyaXguYXBwbHlQZXJzcGVjdGl2
ZShjb250YWluZXJPYmplY3QtPnN0eWxlKCktPnBlcnNwZWN0aXZlKCkpOwpAQCAtMjEyNSw3ICsy
MTI1LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIoY29u
c3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXJPYmplY3QKICNlbmRpZgogfQogCi1GbG9hdFF1YWQg
UmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmIGxvY2Fs
UXVhZCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgc25hcE9m
ZnNldEZvclRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAorRmxv
YXRRdWFkIFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFk
JiBsb2NhbFF1YWQsIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IGJvb2wgc25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIGJvb2wqIHdhc0ZpeGVk
KSBjb25zdAogewogICAgIC8vIFRyYWNrIHRoZSBwb2ludCBhdCB0aGUgY2VudGVyIG9mIHRoZSBx
dWFkJ3MgYm91bmRpbmcgYm94LiBBcyBtYXBMb2NhbFRvQ29udGFpbmVyKCkgY2FsbHMgb2Zmc2V0
RnJvbUNvbnRhaW5lcigpLAogICAgIC8vIGl0IHdpbGwgdXNlIHRoYXQgcG9pbnQgYXMgdGhlIHJl
ZmVyZW5jZSBwb2ludCB0byBkZWNpZGUgd2hpY2ggY29sdW1uJ3MgdHJhbnNmb3JtIHRvIGFwcGx5
IGluIG11bHRpcGxlLWNvbHVtbiBibG9ja3MuCkBAIC0yMTQxLDcgKzIxNDEsNyBAQCBGbG9hdFF1
YWQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmIGxv
Y2FsUXVhZCwgUmVuZGVyQgogICAgIHJldHVybiB0cmFuc2Zvcm1TdGF0ZS5sYXN0UGxhbmFyUXVh
ZCgpOwogfQogCi1GbG9hdFBvaW50IFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclBvaW50
KGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsUG9pbnQsIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBib29sIHNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBi
b29sKiB3YXNGaXhlZCkgY29uc3QKK0Zsb2F0UG9pbnQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29u
dGFpbmVyUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgbG9jYWxQb2ludCwgUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBzbmFwT2Zmc2V0Rm9yVHJhbnNmb3Jt
cywgYm9vbCBmaXhlZCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgVHJhbnNmb3JtU3Rh
dGUgdHJhbnNmb3JtU3RhdGUoVHJhbnNmb3JtU3RhdGU6OkFwcGx5VHJhbnNmb3JtRGlyZWN0aW9u
LCBsb2NhbFBvaW50KTsKICAgICBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5
Q29udGFpbmVyRmxpcCB8IFVzZVRyYW5zZm9ybXM7CkBAIC0yMjQ0LDcgKzIyNDQsNyBAQCBib29s
IFJlbmRlck9iamVjdDo6aGFzT3V0bGluZUFubm90YXRpb24oKSBjb25zdAogICAgIHJldHVybiBu
b2RlKCkgJiYgbm9kZSgpLT5pc0xpbmsoKSAmJiBkb2N1bWVudCgpLT5wcmludGluZygpOwogfQog
Ci1SZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sKiByZXBhaW50Q29udGFpbmVyU2tpcHBl
ZCkgY29uc3QKK1JlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojpjb250YWluZXIoY29uc3QgUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCogcmVwYWludENv
bnRhaW5lclNraXBwZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXJTa2lwcGVk
KQogICAgICAgICAqcmVwYWludENvbnRhaW5lclNraXBwZWQgPSBmYWxzZTsKQEAgLTIzNzcsNyAr
MjM3Nyw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAgIC8vIGJl
IG1vdmVkIGludG8gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlc3Ryb3kuCiAgICAgaWYgKGhhc0xh
eWVyKCkpIHsKICAgICAgICAgc2V0SGFzTGF5ZXIoZmFsc2UpOwotICAgICAgICB0b1JlbmRlckJv
eE1vZGVsT2JqZWN0KHRoaXMpLT5kZXN0cm95TGF5ZXIoKTsKKyAgICAgICAgdG9SZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KHRoaXMpLT5kZXN0cm95TGF5ZXIoKTsKICAgICB9CiAKICAgICBzZXRB
bmNlc3RvckxpbmVCb3hEaXJ0eShmYWxzZSk7CkBAIC0yNTMyLDcgKzI1MzIsNyBAQCB2b2lkIFJl
bmRlck9iamVjdDo6dXBkYXRlRHJhZ1N0YXRlKGJvb2wgZHJhZ09uKQogCiBib29sIFJlbmRlck9i
amVjdDo6aXNDb21wb3NpdGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzTGF5ZXIoKSAmJiB0
b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKKyAg
ICByZXR1cm4gaGFzTGF5ZXIoKSAmJiB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcykt
PmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOwogfQogCiBib29sIFJlbmRlck9iamVjdDo6aGl0VGVz
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBj
b25zdCBIaXRUZXN0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEZpbHRlciBoaXRUZXN0RmlsdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDNjYTJhMjI1NTJmZmYzYmZkZDVjYTAx
MDY0NDcxMWE1NGE2MGYwYzYuLjJmNjJjNTUyNDQyYWIyYjAxM2NhZDFlMGFiNmY5MjBmYmQyZmI2
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTYyLDYgKzYy
LDcgQEAgY2xhc3MgUmVuZGVyTGF5ZXI7CiBjbGFzcyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ7CiBj
bGFzcyBSZW5kZXJUYWJsZTsKIGNsYXNzIFJlbmRlclRoZW1lOworY2xhc3MgUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdDsKIGNsYXNzIFRyYW5zZm9ybVN0YXRlOwogY2xhc3MgVmlzaWJsZVBvc2l0
aW9uOwogI2lmIEVOQUJMRShTVkcpCkBAIC0zNjAsNiArMzYxLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNUZXh0QXJlYSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGlzVGV4dEZpZWxkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNUcmFuc2Zvcm1hYmxlT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzV2lkZ2V0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNDYW52YXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNTk2LDcgKzU5
OCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBvYmplY3QgY29udGFpbmluZyB0aGlz
IG9uZS4gQ2FuIGJlIGRpZmZlcmVudCBmcm9tIHBhcmVudCBmb3IgcG9zaXRpb25lZCBlbGVtZW50
cy4KICAgICAvLyBJZiByZXBhaW50Q29udGFpbmVyIGFuZCByZXBhaW50Q29udGFpbmVyU2tpcHBl
ZCBhcmUgbm90IG51bGwsIG9uIHJldHVybiAqcmVwYWludENvbnRhaW5lclNraXBwZWQKICAgICAv
LyBpcyB0cnVlIGlmIHRoZSByZW5kZXJlciByZXR1cm5lZCBpcyBhbiBhbmNlc3RvciBvZiByZXBh
aW50Q29udGFpbmVyLgotICAgIFJlbmRlck9iamVjdCogY29udGFpbmVyKGNvbnN0IFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gMCwgYm9vbCogcmVwYWludENvbnRhaW5l
clNraXBwZWQgPSAwKSBjb25zdDsKKyAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5lcihjb25zdCBS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gMCwgYm9vbCogcmVw
YWludENvbnRhaW5lclNraXBwZWQgPSAwKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBob3ZlckFuY2VzdG9yKCkgY29uc3QgeyByZXR1cm4gcGFyZW50KCk7IH0KIApAQCAtNjky
LDggKzY5NCw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBDb252ZXJ0IGEgbG9jYWwgcXVh
ZCBpbnRvIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiBjb250YWluZXIsIHRha2luZyB0cmFuc2Zv
cm1zIGludG8gYWNjb3VudC4KLSAgICBGbG9hdFF1YWQgbG9jYWxUb0NvbnRhaW5lclF1YWQoY29u
c3QgRmxvYXRRdWFkJiwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJv
b2wgc25hcE9mZnNldEZvclRyYW5zZm9ybXMgPSB0cnVlLCBib29sIGZpeGVkID0gZmFsc2UsIGJv
b2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgRmxvYXRQb2ludCBsb2NhbFRvQ29udGFpbmVy
UG9pbnQoY29uc3QgRmxvYXRQb2ludCYsIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBib29sIHNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zID0gdHJ1ZSwgYm9vbCBmaXhlZCA9
IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIEZsb2F0UXVhZCBsb2NhbFRv
Q29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmLCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBib29sIHNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zID0gdHJ1ZSwg
Ym9vbCBmaXhlZCA9IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIEZsb2F0
UG9pbnQgbG9jYWxUb0NvbnRhaW5lclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmLCBSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHNuYXBPZmZzZXRGb3JUcmFu
c2Zvcm1zID0gdHJ1ZSwgYm9vbCBmaXhlZCA9IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9IDApIGNv
bnN0OwogCiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSB0aGUgY29udGFpbmVyKCkgcmVu
ZGVyZXIgKGV4Y2x1ZGluZyB0cmFuc2Zvcm1zKS4gSW4gbXVsdGktY29sdW1uIGxheW91dCwKICAg
ICAvLyBkaWZmZXJlbnQgb2Zmc2V0cyBhcHBseSBhdCBkaWZmZXJlbnQgcG9pbnRzLCBzbyByZXR1
cm4gdGhlIG9mZnNldCB0aGF0IGFwcGxpZXMgdG8gdGhlIGdpdmVuIHBvaW50LgpAQCAtNzM2LDEz
ICs3MzgsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyhp
bnQgZGVjb3JhdGlvbnMsIENvbG9yJiB1bmRlcmxpbmUsIENvbG9yJiBvdmVybGluZSwgQ29sb3Im
IGxpbmV0aHJvdWdoLCBib29sIHF1aXJrc01vZGUgPSBmYWxzZSwgYm9vbCBmaXJzdGxpbmVTdHls
ZSA9IGZhbHNlKTsKIAotICAgIC8vIFJldHVybiB0aGUgUmVuZGVyQm94IGluIHRoZSBjb250YWlu
ZXIgY2hhaW4gd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHBhaW50aW5nIHRoaXMgb2JqZWN0LCBv
ciAwCisgICAgLy8gUmV0dXJuIHRoZSBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0IGluIHRoZSBj
b250YWluZXIgY2hhaW4gd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHBhaW50aW5nIHRoaXMgb2Jq
ZWN0LCBvciAwCiAgICAgLy8gaWYgcGFpbnRpbmcgaXMgcm9vdC1yZWxhdGl2ZS4gVGhpcyBpcyB0
aGUgY29udGFpbmVyIHRoYXQgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUgJ2ZvclJlcGFpbnQnCiAg
ICAgLy8gbWV0aG9kcy4KLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyRm9yUmVw
YWludCgpIGNvbnN0OworICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGNvbnRhaW5lckZv
clJlcGFpbnQoKSBjb25zdDsKICAgICAvLyBBY3R1YWxseSBkbyB0aGUgcmVwYWludCBvZiByZWN0
IHIgZm9yIHRoaXMgb2JqZWN0IHdoaWNoIGhhcyBiZWVuIGNvbXB1dGVkIGluIHRoZSBjb29yZGlu
YXRlIHNwYWNlCiAgICAgLy8gb2YgcmVwYWludENvbnRhaW5lci4gSWYgcmVwYWludENvbnRhaW5l
ciBpcyAwLCByZXBhaW50IHZpYSB0aGUgdmlldy4KLSAgICB2b2lkIHJlcGFpbnRVc2luZ0NvbnRh
aW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0
UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOworICAgIHZvaWQgcmVwYWludFVzaW5nQ29u
dGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0
IExheW91dFJlY3QmLCBib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsKICAgICAKICAgICAvLyBSZXBh
aW50IHRoZSBlbnRpcmUgb2JqZWN0LiAgQ2FsbGVkIHdoZW4sIGUuZy4sIHRoZSBjb2xvciBvZiBh
IGJvcmRlciBjaGFuZ2VzLCBvciB3aGVuIGEgYm9yZGVyCiAgICAgLy8gc3R5bGUgY2hhbmdlcy4K
QEAgLTc1Miw3ICs3NTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBhaW50UmVjdGFuZ2xlKGNv
bnN0IExheW91dFJlY3QmLCBib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsKIAogICAgIC8vIFJlcGFp
bnQgb25seSBpZiBvdXIgb2xkIGJvdW5kcyBhbmQgbmV3IGJvdW5kcyBhcmUgZGlmZmVyZW50LiBU
aGUgY2FsbGVyIG1heSBwYXNzIGluIG5ld0JvdW5kcyBhbmQgbmV3T3V0bGluZUJveCBpZiB0aGV5
IGFyZSBrbm93bi4KLSAgICBib29sIHJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRCb3Vu
ZHMsIGNvbnN0IExheW91dFJlY3QmIG9sZE91dGxpbmVCb3gsIGNvbnN0IExheW91dFJlY3QqIG5l
d0JvdW5kc1B0ciA9IDAsIGNvbnN0IExheW91dFJlY3QqIG5ld091dGxpbmVCb3hQdHIgPSAwKTsK
KyAgICBib29sIHJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFJlY3QmIG9sZEJvdW5kcywgY29u
c3QgTGF5b3V0UmVjdCYgb2xkT3V0bGluZUJveCwgY29uc3QgTGF5b3V0UmVjdCogbmV3Qm91bmRz
UHRyID0gMCwgY29uc3QgTGF5b3V0UmVjdCogbmV3T3V0bGluZUJveFB0ciA9IDApOwogCiAgICAg
Ly8gUmVwYWludCBvbmx5IGlmIHRoZSBvYmplY3QgbW92ZWQuCiAgICAgdmlydHVhbCB2b2lkIHJl
cGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKGNvbnN0IExheW91dFJlY3QmKTsKQEAgLTc2OSw4ICs3
NzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludCgwKTsKICAgICB9CiAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRBYnNvbHV0ZUNsaXBwZWRP
dmVyZmxvd1JlY3QoKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIp
IGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxp
bmVXaWR0aCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIp
IGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50
KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQg
b3V0bGluZVdpZHRoKSBjb25zdDsKIAogICAgIC8vIEdpdmVuIGEgcmVjdCBpbiB0aGUgb2JqZWN0
J3MgY29vcmRpbmF0ZSBzcGFjZSwgY29tcHV0ZSBhIHJlY3Qgc3VpdGFibGUgZm9yIHJlcGFpbnRp
bmcKICAgICAvLyB0aGF0IHJlY3QgaW4gdmlldyBjb29yZGluYXRlcy4KQEAgLTc4MCw4ICs3ODIs
OCBAQCBwdWJsaWM6CiAgICAgfQogICAgIC8vIEdpdmVuIGEgcmVjdCBpbiB0aGUgb2JqZWN0J3Mg
Y29vcmRpbmF0ZSBzcGFjZSwgY29tcHV0ZSBhIHJlY3Qgc3VpdGFibGUgZm9yIHJlcGFpbnRpbmcK
ICAgICAvLyB0aGF0IHJlY3QgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2Ugb2YgcmVwYWludENvbnRh
aW5lci4KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZh
bHNlKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWlu
dFJlY3QsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1
dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCA9
IGZhbHNlKSBjb25zdDsKIAogICAgIC8vIElmIG11bHRpcGxlLWNvbHVtbiBsYXlvdXQgcmVzdWx0
cyBpbiBhcHBseWluZyBhbiBvZmZzZXQgdG8gdGhlIGdpdmVuIHBvaW50LCBhZGQgdGhlIHNhbWUK
ICAgICAvLyBvZmZzZXQgdG8gdGhlIGdpdmVuIHNpemUuCkBAIC04MjMsNyArODI1LDcgQEAgcHVi
bGljOgogICAgIC8vIEEgc2luZ2xlIHJlY3RhbmdsZSB0aGF0IGVuY29tcGFzc2VzIGFsbCBvZiB0
aGUgc2VsZWN0ZWQgb2JqZWN0cyB3aXRoaW4gdGhpcyBvYmplY3QuICBVc2VkIHRvIGRldGVybWlu
ZSB0aGUgdGlnaHRlc3QKICAgICAvLyBwb3NzaWJsZSBib3VuZGluZyBib3ggZm9yIHRoZSBzZWxl
Y3Rpb24uCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0KGJvb2wgY2xpcFRvVmlzaWJsZUNv
bnRlbnQgPSB0cnVlKSB7IHJldHVybiBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCgwLCBjbGlwVG9W
aXNpYmxlQ29udGVudCk7IH0KLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBib29s
IC8qY2xpcFRvVmlzaWJsZUNvbnRlbnQqLyA9IHRydWUpIHsgcmV0dXJuIExheW91dFJlY3QoKTsg
fQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgYm9vbCAvKmNsaXBUb1Zp
c2libGVDb250ZW50Ki8gPSB0cnVlKSB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KIAogICAgIHZp
cnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wgaGFzU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIHNlbGVjdGlvblN0
YXRlKCkgIT0gU2VsZWN0aW9uTm9uZTsgfQpAQCAtODkxLDEyICs4OTMsMTIgQEAgcHVibGljOgog
CiAgICAgLy8gTWFwIHBvaW50cyBhbmQgcXVhZHMgdGhyb3VnaCBlbGVtZW50cywgcG90ZW50aWFs
bHkgdmlhIDNkIHRyYW5zZm9ybXMuIFlvdSBzaG91bGQgbmV2ZXIgbmVlZCB0byBjYWxsIHRoZXNl
IGRpcmVjdGx5OyB1c2UKICAgICAvLyBsb2NhbFRvQWJzb2x1dGUvYWJzb2x1dGVUb0xvY2FsIG1l
dGhvZHMgaW5zdGVhZC4KLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBM
b2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2Fz
Rml4ZWQgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0
ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwLCBi
b29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRv
TG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRl
JikgY29uc3Q7CiAKICAgICAvLyBQdXNoZXMgc3RhdGUgb250byBSZW5kZXJHZW9tZXRyeU1hcCBh
Ym91dCBob3cgdG8gbWFwIGNvb3JkaW5hdGVzIGZyb20gdGhpcyByZW5kZXJlciB0byBpdHMgY29u
dGFpbmVyLCBvciBhbmNlc3RvclRvU3RvcEF0ICh3aGljaGV2ZXIgaXMgZW5jb3VudGVyZWQgZmly
c3QpLgogICAgIC8vIFJldHVybnMgdGhlIHJlbmRlcmVyIHdoaWNoIHdhcyBtYXBwZWQgdG8gKGNv
bnRhaW5lciBvciBhbmNlc3RvclRvU3RvcEF0KS4KLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9i
amVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCog
YW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYp
IGNvbnN0OwogICAgIAogICAgIGJvb2wgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihj
b25zdCBSZW5kZXJPYmplY3QqIGNvbnRhaW5lcikgY29uc3Q7CiAgICAgdm9pZCBnZXRUcmFuc2Zv
cm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogY29udGFpbmVyLCBjb25zdCBMYXlv
dXRTaXplJiBvZmZzZXRJbkNvbnRhaW5lciwgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBjb25zdDsK
QEAgLTkzNyw3ICs5MzksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURl
c3Ryb3llZCgpOwogICAgIHZvaWQgYXJlbmFEZWxldGUoUmVuZGVyQXJlbmEqLCB2b2lkKiBvYmpl
Y3RCYXNlKTsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogLypyZXBhaW50Q29udGFpbmVyKi8sIExheW91dFBvaW50
KiAvKmNhY2hlZE9mZnNldFRvUmVwYWludENvbnRhaW5lciovID0gMCkgY29uc3QgeyByZXR1cm4g
TGF5b3V0UmVjdCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JS
ZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBM
YXlvdXRQb2ludCogLypjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIqLyA9IDApIGNvbnN0
IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQogCiAgICAgdmlydHVhbCBib29sIGNhbkJlUmVwbGFj
ZWRXaXRoSW5saW5lUnVuSW4oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggYmNkOTY3ZTZhNzUxMDg0Y2YxZDY2MDcxMGMwYmM0N2U4
NWE3NGUwYy4uZDVkOWVhOGVmODE3NWQzODViZGIzY2FjZDcyY2RlNmRhMzM5ZDJhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC00ODIsNyArNDgy
LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlclJlcGxhY2VkOjpwb3NpdGlvbkZvclBvaW50KGNv
bnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICByZXR1cm4gUmVuZGVyQm94Ojpwb3NpdGlvbkZv
clBvaW50KHBvaW50KTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6c2VsZWN0aW9u
UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJv
b2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpCitMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpzZWxl
Y3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KQogewogICAgIEFTU0VSVCghbmVlZHNM
YXlvdXQoKSk7CiAKQEAgLTU0Nyw3ICs1NDcsNyBAQCBib29sIFJlbmRlclJlcGxhY2VkOjppc1Nl
bGVjdGVkKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVy
UmVwbGFjZWQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICBpZiAoc3R5bGUoKS0+dmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUgJiYgIWVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpCiAg
ICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsYWNlZC5oCmluZGV4IDlkNzgxNDM5NDIyNWQ0MGIxMmY5ODZkYjA5Y2RhYmI3Nzg4Zjlh
NTIuLmU3MGZiMGQ1OTcyODAwMjZlZGE2M2Y2MDE3OTAwYjM1YWQ2M2UyZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCkBAIC03MCwxMyArNzAsMTMgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYpIHsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsK
KyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50Jik7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rp
b25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
Ym9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpOworICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgT1ZFUlJJREU7
CiAgICAgdm9pZCBjb21wdXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChSZW5k
ZXJCb3gqLCBGbG9hdFNpemUmIGNvbnN0cmFpbmVkU2l6ZSwgZG91YmxlJiBpbnRyaW5zaWNSYXRp
bywgYm9vbCYgaXNQZXJjZW50YWdlSW50cmluc2ljU2l6ZSkgY29uc3Q7CiAKICAgICBtdXRhYmxl
IEludFNpemUgbV9pbnRyaW5zaWNTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTZWxlY3Rpb25JbmZvLmgKaW5kZXggODkzNmEzNzdlNjY1NDMwMWNhNWE0Y2Y0NjZkM2I3
OTViOThkMzlkNy4uMDNjNzE1MTExNjk5ZTU5MTI0ZWIzOGZjNmU3MDNhN2RkZWUzMDdjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VsZWN0aW9uSW5mby5oCkBAIC00
OCwxMiArNDgsMTIgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBSZW5kZXJPYmplY3QqIG9i
amVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9Ci0gICAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcGFpbnRDb250YWluZXI7
IH0KKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKCkgY29u
c3QgeyByZXR1cm4gbV9yZXBhaW50Q29udGFpbmVyOyB9CiAgICAgUmVuZGVyT2JqZWN0OjpTZWxl
Y3Rpb25TdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogcHJvdGVjdGVk
OgogICAgIFJlbmRlck9iamVjdCogbV9vYmplY3Q7Ci0gICAgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IG1fcmVwYWludENvbnRhaW5lcjsKKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBtX3Jl
cGFpbnRDb250YWluZXI7CiAgICAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBtX3N0YXRl
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApp
bmRleCAwY2VmYzc1YTgyODA0NzU2NTllNTFhZmUwZDNiM2FmYzY3NjEwZjNkLi44ZGNiMGNhYjll
YjRjYjQ0MDU4YTRlNmM0OGQyOWE3YjM3ZWM4MzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtMjUxLDcgKzI1MSw3IEBAIExheW91dFNpemUg
UmVuZGVyVGFibGVDZWxsOjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCogbywgY29u
c3QgTGF5b3V0UG9pCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJU
YWJsZUNlbGw6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJUYWJsZUNlbGw6
OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlIHRhYmxlIGdyaWQgaXMg
ZGlydHksIHdlIGNhbm5vdCBnZXQgcmVsaWFibGUgaW5mb3JtYXRpb24gYWJvdXQgYWRqb2luaW5n
IGNlbGxzLAogICAgIC8vIHNvIHdlIGlnbm9yZSBvdXRzaWRlIGJvcmRlcnMuIFRoaXMgc2hvdWxk
IG5vdCBiZSBhIHByb2JsZW0gYmVjYXVzZSBpdCBtZWFucyB0aGF0CkBAIC0zMDIsNyArMzAyLDcg
QEAgTGF5b3V0UmVjdCBSZW5kZXJUYWJsZUNlbGw6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KgogICAgIHJldHVybiByOwogfQogCi12b2lkIFJlbmRl
clRhYmxlQ2VsbDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByLCBib29sIGZpeGVkKSBjb25zdAordm9pZCBS
ZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByLCBib29sIGZpeGVkKSBjb25z
dAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09IHRoaXMpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAppbmRleCA1ZDViMjc2
NGJiODA0OTVlN2EyMWU4MzAwYTYzZDUwZmM0NzkzZjMwLi4xY2NkZGY2OTIzMjFmZjdjNDM1Y2E4
MzM4M2FjNTY3OGIwNTgzOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5oCkBAIC0xODMsOCArMTgzLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSwgSW5saW5lRmxvd0JveCopIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBMYXlv
dXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UG9p
bnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVS
ZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5
b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRS
ZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7
CiAKICAgICBpbnQgYm9yZGVySGFsZkxlZnQoYm9vbCBvdXRlcikgY29uc3Q7CiAgICAgaW50IGJv
cmRlckhhbGZSaWdodChib29sIG91dGVyKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDb2wuY3BwCmluZGV4IDk3Y2Q4Y2MzZWQwOTU2OGY2ODkxNjBhNTBkZTg2
OTQzNzAwY2RlMjkuLjE1NGM5ZjIxMTlmY2VjYjc2ODk0ZDc5OTE5YWUwOWRiMjNhYjdkMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcApAQCAtODIsNyAr
ODIsNyBAQCBib29sIFJlbmRlclRhYmxlQ29sOjpjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdAogICAg
IHJldHVybiBpc1RhYmxlQ29sdW1uR3JvdXAoKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJUYWJs
ZUNvbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclRhYmxlQ29sOjpjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKSBjb25zdAogewogICAgIC8vIEZvciBub3csIGp1c3QgcmVwYWludCB0aGUg
d2hvbGUgdGFibGUuCiAgICAgLy8gRklYTUU6IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMs
IGUuZy4sIG5lZWQgdG8gcmVwYWludCBhbGwgdGhlIGNlbGxzIHRoYXQgd2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKaW5kZXggNjJmMzI4OGU4ZDY2Mzg3NDBmNjll
ZjYxZGY2ODdhYmJlYmMyNDIxYy4uNDBlYzEzZTViZjIzOTVlZjI5MDJiYTk3OTIwM2M1MTdkM2Vl
M2U2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29s
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKQEAgLTc5
LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJl
Y3QqID0gMCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKaW5kZXggN2RjMDVmYTU2N2RiNzdlZmZiYjA1N2QwMDVi
MDkxNTRkNDZhN2UzMy4uZDVhYzc3NGI1NDBlNDRiOGM1MGQwMGIxNjgyMDViNDFhYjJjMzIyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCkBAIC0xNzcs
NyArMTc3LDcgQEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6bGF5b3V0KCkKICAgICBzZXROZWVkc0xh
eW91dChmYWxzZSk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyVGFibGVSb3c6OmNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJUYWJsZVJvdzo6Y2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29u
c3QKIHsKICAgICBBU1NFUlQocGFyZW50KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZVJvdy5oCmluZGV4IGFmYTgzOGMxMjU0NjFiZTVmYzM1NWQwMjY1ZGNkMzFjZWY2
YTJjMzEuLmYzZmEzYjFmMmY0YWE2OWQyM2ZlYjVjYWY4ZmRlNjYwNDljZDQ2ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCkBAIC05NCw3ICs5NCw3IEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwg
UmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KTsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OworICAgIHZpcnR1
YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0
JiwgY29uc3QgSGl0VGVzdFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2lu
dCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOwogCiAgICAgdmly
dHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBpc1RyYW5z
cGFyZW50KCkgfHwgaGFzT3ZlcmZsb3dDbGlwKCkgfHwgaGFzVHJhbnNmb3JtKCkgfHwgaGFzSGlk
ZGVuQmFja2ZhY2UoKSB8fCBoYXNNYXNrKCkgfHwgaGFzRmlsdGVyKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA3M2U1Nzc1NGFkNzc1ZDFkYmEzY2NiM2Y3
YWNjODkyMTRmZDI2M2Q3Li44YTYxMDFlYmNmMDUwM2MxYWE2ZWI5YTg3MmY2ZWJhNGYxOGY2OTYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0xNjE2LDcgKzE2
MTYsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclRleHQ6OmxpbmVzVmlzdWFsT3ZlcmZsb3dCb3VuZGlu
Z0JveCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlY3Q7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyVGV4
dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclRleHQ6OmNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlclRvUmVwYWludCA9IGNv
bnRhaW5pbmdCbG9jaygpOwogCkBAIC0xNjMyLDcgKzE2MzIsNyBAQCBMYXlvdXRSZWN0IFJlbmRl
clRleHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaQogICAgIHJldHVybiByZW5kZXJlclRvUmVwYWludC0+Y2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcik7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyVGV4
dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpCitMYXlvdXRSZWN0IFJlbmRlclRl
eHQ6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpCiB7CiAgICAgQVNTRVJU
KCFuZWVkc0xheW91dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKaW5k
ZXggYjk2ZWNhNzNmMzZjMTVmZjYyMjVlOTk4YTM5MTEwNTU2NzE3ZjQ0YS4uNTk0YTY4OTBmYzQy
N2U2NmQxMGE2MGFmYWE3YTFjYjY5NDQ1MjU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5oCkBAIC05NywxMyArOTcsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29s
IGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgcyk7Ci0gICAgdmlydHVhbCBM
YXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSk7CisgICAg
dmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQg
PSB0cnVlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3Qo
SW5saW5lQm94KiwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRP
ZkxpbmUgPSAwKTsKIAogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3Qg
eyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkxlZnQoKSwgMCwg
dmlldygpKTsgfQogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5SaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5SaWdodCgpLCAwLCB2
aWV3KCkpOyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0Owor
ICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsK
IAogICAgIElubGluZVRleHRCb3gqIGZpcnN0VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fZmly
c3RUZXh0Qm94OyB9CiAgICAgSW5saW5lVGV4dEJveCogbGFzdFRleHRCb3goKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RUZXh0Qm94OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWRiNjU0YzE3ZjIy
OGQ0ZjZjZGIzMDFmOWI2M2E5OWNmZDU2MWE4ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmNwcApAQCAtMCwwICsx
LDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUu
b3JnKQorICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUu
b3JnKQorICogICAgICAgICAgIChDKSAyMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNh
cmV3b2xmLmNvbSkKKyAqICAgICAgICAgICAoQykgMjAwNSwgMjAwNiBTYW11ZWwgV2VpbmlnIChz
YW0ud2VpbmlnQGdtYWlsLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuaCIKKworI2lu
Y2x1ZGUgIlJlbmRlckxheWVyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworYm9vbCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpzX3dhc0Zsb2F0
aW5nID0gZmFsc2U7Citib29sIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OnNfaGFkTGF5ZXIg
PSBmYWxzZTsKK2Jvb2wgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6c19oYWRUcmFuc2Zvcm0g
PSBmYWxzZTsKK2Jvb2wgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6c19sYXllcldhc1NlbGZQ
YWludGluZyA9IGZhbHNlOworCitSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KE5vZGUqIG5vZGUpCisgICAgOiBSZW5kZXJPYmplY3Qobm9kZSkKKyAg
ICAsIG1fbGF5ZXIoMCkKK3sKK30KKworUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6flJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QoKQoreworICAgIC8vIE91ciBsYXllciBzaG91bGQgaGF2ZSBi
ZWVuIGRlc3Ryb3llZCBhbmQgY2xlYXJlZCBieSBub3cKKyAgICBBU1NFUlQoIWhhc0xheWVyKCkp
OworICAgIEFTU0VSVCghbV9sYXllcik7Cit9CisKK3ZvaWQgUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdDo6ZGVzdHJveUxheWVyKCkKK3sKKyAgICBBU1NFUlQoIWhhc0xheWVyKCkpOyAvLyBDYWxs
ZXJzIHNob3VsZCBoYXZlIGFscmVhZHkgY2FsbGVkIHNldEhhc0xheWVyKGZhbHNlKQorICAgIEFT
U0VSVChtX2xheWVyKTsKKyAgICBtX2xheWVyLT5kZXN0cm95KHJlbmRlckFyZW5hKCkpOworICAg
IG1fbGF5ZXIgPSAwOworfQorCit2b2lkIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OmVuc3Vy
ZUxheWVyKCkKK3sKKyAgICBpZiAobV9sYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9s
YXllciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTGF5ZXIodGhpcyk7CisgICAgc2V0SGFz
TGF5ZXIodHJ1ZSk7CisgICAgbV9sYXllci0+aW5zZXJ0T25seVRoaXNMYXllcigpOworfQorCiti
b29sIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6Omhhc1NlbGZQYWludGluZ0xheWVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9sYXllciAmJiBtX2xheWVyLT5pc1NlbGZQYWludGluZ0xheWVy
KCk7Cit9CisKK3ZvaWQgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6d2lsbEJlRGVzdHJveWVk
KCkKK3sKKyAgICAvLyBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCBjYWxscyBiYWNrIHRv
IGRlc3Ryb3lMYXllcigpIGZvciBsYXllciBkZXN0cnVjdGlvbgorICAgIFJlbmRlck9iamVjdDo6
d2lsbEJlRGVzdHJveWVkKCk7Cit9CisKK3ZvaWQgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6
c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSog
bmV3U3R5bGUpCit7CisgICAgc193YXNGbG9hdGluZyA9IGlzRmxvYXRpbmcoKTsKKyAgICBzX2hh
ZExheWVyID0gaGFzTGF5ZXIoKTsKKyAgICBzX2hhZFRyYW5zZm9ybSA9IGhhc1RyYW5zZm9ybSgp
OworICAgIGlmIChzX2hhZExheWVyKQorICAgICAgICBzX2xheWVyV2FzU2VsZlBhaW50aW5nID0g
bGF5ZXIoKS0+aXNTZWxmUGFpbnRpbmdMYXllcigpOworCisgICAgLy8gSWYgb3VyIHotaW5kZXgg
Y2hhbmdlcyB2YWx1ZSBvciBvdXIgdmlzaWJpbGl0eSBjaGFuZ2VzLAorICAgIC8vIHdlIG5lZWQg
dG8gZGlydHkgb3VyIHN0YWNraW5nIGNvbnRleHQncyB6LW9yZGVyIGxpc3QuCisgICAgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlID0gc3R5bGUoKTsKKyAgICBpZiAob2xkU3R5bGUgJiYgbmV3U3R5bGUp
IHsKKyAgICAgICAgaWYgKHBhcmVudCgpKSB7CisgICAgICAgICAgICAvLyBEbyBhIHJlcGFpbnQg
d2l0aCB0aGUgb2xkIHN0eWxlIGZpcnN0LCBlLmcuLCBmb3IgZXhhbXBsZSBpZiB3ZSBnbyBmcm9t
CisgICAgICAgICAgICAvLyBoYXZpbmcgYW4gb3V0bGluZSB0byBub3QgaGF2aW5nIGFuIG91dGxp
bmUuCisgICAgICAgICAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VSZXBhaW50TGF5ZXIp
IHsKKyAgICAgICAgICAgICAgICBsYXllcigpLT5yZXBhaW50SW5jbHVkaW5nRGVzY2VuZGFudHMo
KTsKKyAgICAgICAgICAgICAgICBpZiAoIShvbGRTdHlsZS0+Y2xpcCgpID09IG5ld1N0eWxlLT5j
bGlwKCkpKQorICAgICAgICAgICAgICAgICAgICBsYXllcigpLT5jbGVhckNsaXBSZWN0c0luY2x1
ZGluZ0Rlc2NlbmRhbnRzKCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGRpZmYgPT0gU3R5bGVE
aWZmZXJlbmNlUmVwYWludCB8fCBuZXdTdHlsZS0+b3V0bGluZVNpemUoKSA8IG9sZFN0eWxlLT5v
dXRsaW5lU2l6ZSgpKQorICAgICAgICAgICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dCB8fCBkaWZmID09IFN0eWxl
RGlmZmVyZW5jZVNpbXBsaWZpZWRMYXlvdXQpIHsKKyAgICAgICAgICAgIC8vIFdoZW4gYSBsYXlv
dXQgaGludCBoYXBwZW5zLCB3ZSBnbyBhaGVhZCBhbmQgZG8gYSByZXBhaW50IG9mIHRoZSBsYXll
ciwgc2luY2UgdGhlIGxheWVyIGNvdWxkCisgICAgICAgICAgICAvLyBlbmQgdXAgYmVpbmcgZGVz
dHJveWVkLgorICAgICAgICAgICAgaWYgKGhhc0xheWVyKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAob2xkU3R5bGUtPnBvc2l0aW9uKCkgIT0gbmV3U3R5bGUtPnBvc2l0aW9uKCkKKyAgICAgICAg
ICAgICAgICAgICAgfHwgb2xkU3R5bGUtPnpJbmRleCgpICE9IG5ld1N0eWxlLT56SW5kZXgoKQor
ICAgICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+aGFzQXV0b1pJbmRleCgpICE9IG5ld1N0
eWxlLT5oYXNBdXRvWkluZGV4KCkKKyAgICAgICAgICAgICAgICAgICAgfHwgIShvbGRTdHlsZS0+
Y2xpcCgpID09IG5ld1N0eWxlLT5jbGlwKCkpCisgICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0
eWxlLT5oYXNDbGlwKCkgIT0gbmV3U3R5bGUtPmhhc0NsaXAoKQorICAgICAgICAgICAgICAgICAg
ICB8fCBvbGRTdHlsZS0+b3BhY2l0eSgpICE9IG5ld1N0eWxlLT5vcGFjaXR5KCkKKyAgICAgICAg
ICAgICAgICAgICAgfHwgb2xkU3R5bGUtPnRyYW5zZm9ybSgpICE9IG5ld1N0eWxlLT50cmFuc2Zv
cm0oKQorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICAgICAgICAgICAgICAgICAgfHwgb2xk
U3R5bGUtPmZpbHRlcigpICE9IG5ld1N0eWxlLT5maWx0ZXIoKQorI2VuZGlmCisgICAgICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBsYXllcigpLT5yZXBhaW50SW5jbHVkaW5nRGVz
Y2VuZGFudHMoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3U3R5bGUtPmhhc1RyYW5zZm9y
bSgpIHx8IG5ld1N0eWxlLT5vcGFjaXR5KCkgPCAxIHx8IG5ld1N0eWxlLT5oYXNGaWx0ZXIoKSkg
eworICAgICAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBsYXllciB5ZXQsIGJ1dCB3
ZSBhcmUgZ29pbmcgdG8gZ2V0IG9uZSBiZWNhdXNlIG9mIHRyYW5zZm9ybSBvciBvcGFjaXR5LAor
ICAgICAgICAgICAgICAgIC8vICB0aGVuIHdlIG5lZWQgdG8gcmVwYWludCB0aGUgb2xkIHBvc2l0
aW9uIG9mIHRoZSBvYmplY3QuCisgICAgICAgICAgICAgICAgcmVwYWludCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgUmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFu
Z2UoZGlmZiwgbmV3U3R5bGUpOworfQorCit2b2lkIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6
OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bGUpCit7CisgICAgUmVuZGVyT2JqZWN0OjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRT
dHlsZSk7CisgICAgdXBkYXRlRnJvbVN0eWxlKCk7CisKKyAgICBpZiAocmVxdWlyZXNMYXllcigp
KSB7CisgICAgICAgIGlmICghbGF5ZXIoKSAmJiBsYXllckNyZWF0aW9uQWxsb3dlZEZvclN1YnRy
ZWUoKSkgeworICAgICAgICAgICAgaWYgKHNfd2FzRmxvYXRpbmcgJiYgaXNGbG9hdGluZygpKQor
ICAgICAgICAgICAgICAgIHNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgICAgICAgICBl
bnN1cmVMYXllcigpOworICAgICAgICAgICAgaWYgKHBhcmVudCgpICYmICFuZWVkc0xheW91dCgp
ICYmIGNvbnRhaW5pbmdCbG9jaygpKSB7CisgICAgICAgICAgICAgICAgbGF5ZXIoKS0+c2V0UmVw
YWludFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50KTsKKyAgICAgICAgICAgICAgICAvLyBUaGVyZSBp
cyBvbmx5IG9uZSBsYXllciB0byB1cGRhdGUsIGl0IGlzIG5vdCB3b3J0aCB1c2luZyB8Y2FjaGVk
T2Zmc2V0fCBzaW5jZQorICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBub3Qgc3VyZSB0aGUgdmFs
dWUgd2lsbCBiZSB1c2VkLgorICAgICAgICAgICAgICAgIGxheWVyKCktPnVwZGF0ZUxheWVyUG9z
aXRpb25zKDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmIChsYXll
cigpICYmIGxheWVyKCktPnBhcmVudCgpKSB7CisgICAgICAgIHNldEhhc1RyYW5zZm9ybShmYWxz
ZSk7IC8vIEVpdGhlciBhIHRyYW5zZm9ybSB3YXNuJ3Qgc3BlY2lmaWVkIG9yIHRoZSBvYmplY3Qg
ZG9lc24ndCBzdXBwb3J0IHRyYW5zZm9ybXMsIHNvIGp1c3QgbnVsbCBvdXQgdGhlIGJpdC4KKyAg
ICAgICAgc2V0SGFzUmVmbGVjdGlvbihmYWxzZSk7CisgICAgICAgIGxheWVyKCktPnJlbW92ZU9u
bHlUaGlzTGF5ZXIoKTsgLy8gY2FsbHMgZGVzdHJveUxheWVyKCkgd2hpY2ggY2xlYXJzIG1fbGF5
ZXIKKyAgICAgICAgaWYgKHNfd2FzRmxvYXRpbmcgJiYgaXNGbG9hdGluZygpKQorICAgICAgICAg
ICAgc2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKKyAgICAgICAgaWYgKHNfaGFkVHJhbnNmb3Jt
KQorICAgICAgICAgICAgc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CisgICAg
fQorCisgICAgaWYgKGxheWVyKCkpIHsKKyAgICAgICAgbGF5ZXIoKS0+c3R5bGVDaGFuZ2VkKGRp
ZmYsIG9sZFN0eWxlKTsKKyAgICAgICAgaWYgKHNfaGFkTGF5ZXIgJiYgbGF5ZXIoKS0+aXNTZWxm
UGFpbnRpbmdMYXllcigpICE9IHNfbGF5ZXJXYXNTZWxmUGFpbnRpbmcpCisgICAgICAgICAgICBz
ZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTVjZDVjMDg5ODEwNGFjNjgwZDNiMmVjM2JkYmU0
MDNjNDM3ZTY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMp
IDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZm5kZWYgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdF9oCisjZGVmaW5lIFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3RfaAorCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyTGF5ZXI7CisKK2NsYXNzIFJlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QgOiBwdWJsaWMgUmVuZGVyT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KE5vZGUqKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KCk7CisKKyAgICAvLyBDYWxsZWQgYnkgUmVuZGVyT2JqZWN0Ojp3aWxsQmVE
ZXN0cm95ZWQoKSBhbmQgaXMgdGhlIG9ubHkgd2F5IGxheWVycyBzaG91bGQgZXZlciBiZSBkZXN0
cm95ZWQKKyAgICB2b2lkIGRlc3Ryb3lMYXllcigpOworCisgICAgYm9vbCBoYXNTZWxmUGFpbnRp
bmdMYXllcigpIGNvbnN0OworICAgIFJlbmRlckxheWVyKiBsYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1fbGF5ZXI7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21TdHlsZSgp
IHsgfQorCisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCA9IDA7CisKK3By
b3RlY3RlZDoKKyAgICB2b2lkIGVuc3VyZUxheWVyKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bEJlRGVzdHJveWVkKCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlz
VHJhbnNmb3JtYWJsZU9iamVjdCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIFJlbmRlckxheWVyKiBtX2xheWVyOworCisgICAgLy8gVXNlZCB0byBzdG9yZSBzdGF0ZSBi
ZXR3ZWVuIHN0eWxlV2lsbENoYW5nZSBhbmQgc3R5bGVEaWRDaGFuZ2UKKyAgICBzdGF0aWMgYm9v
bCBzX3dhc0Zsb2F0aW5nOworICAgIHN0YXRpYyBib29sIHNfaGFkTGF5ZXI7CisgICAgc3RhdGlj
IGJvb2wgc19oYWRUcmFuc2Zvcm07CisgICAgc3RhdGljIGJvb2wgc19sYXllcldhc1NlbGZQYWlu
dGluZzsKK307CisKK2lubGluZSBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiB0b1JlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJUKCFv
YmplY3QgfHwgb2JqZWN0LT5pc1RyYW5zZm9ybWFibGVPYmplY3QoKSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqPihvYmplY3QpOworfQorCitpbmxp
bmUgY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogdG9SZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0KQoreworICAgIEFTU0VSVCghb2JqZWN0
IHx8IG9iamVjdC0+aXNUcmFuc2Zvcm1hYmxlT2JqZWN0KCkpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Kj4ob2JqZWN0KTsKK30KKworLy8g
VGhpcyB3aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1bm5lY2Vzc2FyeSBjYXN0Lgordm9pZCB0
b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCopOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRl
eCAwMmI1NGM2NjBjOWRiMmJiMTAxMGU5MGU3MjM5YjdlZGQ1MDVmMzFkLi5jNTYxYmIwM2NmNjdm
OTYxZjQwMGNjZTM1MGVkZjMwM2Q0NzM3OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpsYXlvdXQo
KQogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0KIAotdm9pZCBSZW5kZXJWaWV3OjptYXBM
b2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBU
cmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBt
b2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyVmlldzo6bWFwTG9jYWxUb0Nv
bnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFu
c2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2Rl
LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3Bl
Y2lmaWVkLCBhbmQgd2FzIG5vdCAwIG9yIHRoZSBSZW5kZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ug
c2hvdWxkIGhhdmUgZm91bmQgaXQgYnkgbm93LgpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgUmVu
ZGVyVmlldzo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgVHJhCiAgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUobV9mcmFtZVZpZXct
PnNjcm9sbE9mZnNldEZvckZpeGVkUG9zaXRpb24oKSk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVj
dCogUmVuZGVyVmlldzo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFw
KSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJWaWV3OjpwdXNoTWFwcGluZ1RvQ29u
dGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQs
IFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKIHsKICAgICAvLyBJZiBhIGNv
bnRhaW5lciB3YXMgc3BlY2lmaWVkLCBhbmQgd2FzIG5vdCAwIG9yIHRoZSBSZW5kZXJWaWV3LAog
ICAgIC8vIHRoZW4gd2Ugc2hvdWxkIGhhdmUgZm91bmQgaXQgYnkgbm93LgpAQCAtMjUzLDcgKzI1
Myw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIAogc3RhdGljIGlubGluZSBib29sIGlzQ29tcG9z
aXRlZChSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKLSAgICByZXR1cm4gb2JqZWN0LT5oYXNMYXll
cigpICYmIHRvUmVuZGVyQm94TW9kZWxPYmplY3Qob2JqZWN0KS0+bGF5ZXIoKS0+aXNDb21wb3Np
dGVkKCk7CisgICAgcmV0dXJuIG9iamVjdC0+aGFzTGF5ZXIoKSAmJiB0b1JlbmRlclRyYW5zZm9y
bWFibGVPYmplY3Qob2JqZWN0KS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCk7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCByZW5kZXJlck9ic2N1cmVzQmFja2dyb3VuZChSZW5kZXJPYmplY3QqIG9i
amVjdCkKQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnJlcGFpbnRSZWN0YW5n
bGVJblZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKGNvbnN0IExheW91dFJlY3QmIHVyLAogI2VuZGlm
CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVk
KSBjb25zdAordm9pZCBSZW5kZXJWaWV3Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9v
bCBmaXhlZCkgY29uc3QKIHsKICAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBh
bmQgd2FzIG5vdCAwIG9yIHRoZSBSZW5kZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIGhh
dmUgZm91bmQgaXQgYnkgbm93LgpAQCAtMzk4LDIwICszOTgsMjAgQEAgdm9pZCBSZW5kZXJWaWV3
Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIEwKICAgICAgICAgcmVjdC5tb3ZlKG1fZnJhbWVWaWV3LT5zY3JvbGxPZmZzZXRGb3JG
aXhlZFBvc2l0aW9uKCkpOwogICAgICAgICAKICAgICAvLyBBcHBseSBvdXIgdHJhbnNmb3JtIGlm
IHdlIGhhdmUgb25lIChiZWNhdXNlIG9mIGZ1bGwgcGFnZSB6b29taW5nKS4KLSAgICBpZiAoIXJl
cGFpbnRDb250YWluZXIgJiYgbV9sYXllciAmJiBtX2xheWVyLT50cmFuc2Zvcm0oKSkKLSAgICAg
ICAgcmVjdCA9IG1fbGF5ZXItPnRyYW5zZm9ybSgpLT5tYXBSZWN0KHJlY3QpOworICAgIGlmICgh
cmVwYWludENvbnRhaW5lciAmJiBsYXllcigpICYmIGxheWVyKCktPnRyYW5zZm9ybSgpKQorICAg
ICAgICByZWN0ID0gbGF5ZXIoKS0+dHJhbnNmb3JtKCktPm1hcFJlY3QocmVjdCk7CiB9CiAKIHZv
aWQgUmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgcmVjdHMuYXBw
ZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIG1fbGF5ZXItPnNpemUo
KSkpOworICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KGFjY3VtdWxhdGVkT2Zm
c2V0LCBsYXllcigpLT5zaXplKCkpKTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAg
ICAgaWYgKHdhc0ZpeGVkKQogICAgICAgICAqd2FzRml4ZWQgPSBmYWxzZTsKLSAgICBxdWFkcy5h
cHBlbmQoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9sYXllci0+c2l6ZSgpKSk7CisgICAgcXVh
ZHMuYXBwZW5kKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyKCktPnNpemUoKSkpOwogfQog
CiBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckFmdGVyUG9zaXRpb24oUmVuZGVyT2JqZWN0
KiBvYmplY3QsIHVuc2lnbmVkIG9mZnNldCkKQEAgLTQ1Niw3ICs0NTYsNyBAQCBJbnRSZWN0IFJl
bmRlclZpZXc6OnNlbGVjdGlvbkJvdW5kcyhib29sIGNsaXBUb1Zpc2libGVDb250ZW50KSBjb25z
dAogICAgICAgICBSZW5kZXJTZWxlY3Rpb25JbmZvKiBpbmZvID0gaS0+c2Vjb25kLmdldCgpOwog
ICAgICAgICAvLyBSZW5kZXJTZWxlY3Rpb25JbmZvOjpyZWN0KCkgaXMgaW4gdGhlIGNvb3JkaW5h
dGVzIG9mIHRoZSByZXBhaW50Q29udGFpbmVyLCBzbyBtYXAgdG8gcGFnZSBjb29yZGluYXRlcy4K
ICAgICAgICAgTGF5b3V0UmVjdCBjdXJyUmVjdCA9IGluZm8tPnJlY3QoKTsKLSAgICAgICAgaWYg
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gaW5mby0+cmVwYWludENv
bnRhaW5lcigpKSB7CisgICAgICAgIGlmIChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyID0gaW5mby0+cmVwYWludENvbnRhaW5lcigpKSB7CiAgICAgICAgICAgICBG
bG9hdFF1YWQgYWJzUXVhZCA9IHJlcGFpbnRDb250YWluZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQo
RmxvYXRSZWN0KGN1cnJSZWN0KSk7CiAgICAgICAgICAgICBjdXJyUmVjdCA9IGFic1F1YWQuZW5j
bG9zaW5nQm91bmRpbmdCb3goKTsgCiAgICAgICAgIH0KQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lk
IFJlbmRlclZpZXc6OnNldFNlbGVjdGlvbihSZW5kZXJPYmplY3QqIHN0YXJ0LCBpbnQgc3RhcnRQ
b3MsIFJlbmRlck9iamVjdCogZQogICAgIH0KIAogICAgIGlmIChibG9ja1JlcGFpbnRNb2RlICE9
IFJlcGFpbnROb3RoaW5nKQotICAgICAgICBtX2xheWVyLT5jbGVhckJsb2NrU2VsZWN0aW9uR2Fw
c0JvdW5kcygpOworICAgICAgICBsYXllcigpLT5jbGVhckJsb2NrU2VsZWN0aW9uR2Fwc0JvdW5k
cygpOwogCiAgICAgLy8gTm93IHRoYXQgdGhlIHNlbGVjdGlvbiBzdGF0ZSBoYXMgYmVlbiB1cGRh
dGVkIGZvciB0aGUgbmV3IG9iamVjdHMsIHdhbGsgdGhlbSBhZ2FpbiBhbmQKICAgICAvLyBwdXQg
dGhlbSBpbiB0aGUgbmV3IG9iamVjdHMgbGlzdC4KQEAgLTY0MSw3ICs2NDEsNyBAQCB2b2lkIFJl
bmRlclZpZXc6OmdldFNlbGVjdGlvbihSZW5kZXJPYmplY3QqJiBzdGFydFJlbmRlcmVyLCBpbnQm
IHN0YXJ0T2Zmc2V0LCBSZQogCiB2b2lkIFJlbmRlclZpZXc6OmNsZWFyU2VsZWN0aW9uKCkKIHsK
LSAgICBtX2xheWVyLT5yZXBhaW50QmxvY2tTZWxlY3Rpb25HYXBzKCk7CisgICAgbGF5ZXIoKS0+
cmVwYWludEJsb2NrU2VsZWN0aW9uR2FwcygpOwogICAgIHNldFNlbGVjdGlvbigwLCAtMSwgMCwg
LTEsIFJlcGFpbnROZXdNaW51c09sZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5oCmluZGV4IDI5NmM2MjllY2E4MTFjNTliNmQ2NDE3MDM1M2VmZGEwOWNiNTNmZWUuLjZi
ZDM0N2NmN2VlODI3OWRlMTExNjcyNWNmMWVmMmNiMDBiMTM1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVWaWV3OyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFs
c2UpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXBhaW50Vmlld1JlY3Rhbmds
ZShjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSk7CiAgICAgLy8gUmVw
YWludCB0aGUgdmlldywgYW5kIGFsbCBjb21wb3NpdGVkIGxheWVycyB0aGF0IGludGVyc2VjdCB0
aGUgZ2l2ZW4gYWJzb2x1dGUgcmVjdGFuZ2xlLgogICAgIC8vIEZJWE1FOiBpZGVhbGx5IHdlJ2Qg
bmV2ZXIgaGF2ZSB0byBkbyB0aGlzLCBpZiBhbGwgcmVwYWludHMgYXJlIGNvbnRhaW5lci1yZWxh
dGl2ZS4KQEAgLTIwNyw4ICsyMDcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNSZW5kZXJDb3Vu
dGVycygpIHsgcmV0dXJuIG1fcmVuZGVyQ291bnRlckNvdW50OyB9CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxh
Z3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCBi
b29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgY29uc3QgUmVu
ZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZs
YWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3Jtcywg
Ym9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJl
bmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZp
eGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIHJlcXVpcmVzQ29sdW1ucyhpbnQgZGVzaXJlZENvbHVtbkNvdW50KSBjb25zdCBP
VkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmlu
Z0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9u
ZS5jcHAKaW5kZXggMWYwYTRhMzhlNzJlMjFhN2RjM2YwYWRjZDNjYWUzNjNjOGE1MWQ5Mi4uYzg5
Y2YwNTc5YjdiOWM1NDVhOWRiYTI5MmVkMDc0N2Q4ZjY1ZWVkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCkBAIC0xMDYsNiArMTA2LDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJUZXh0RnJhZ21lbnQuY3BwIgogI2luY2x1ZGUgIlJlbmRlclRoZW1l
LmNwcCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZVdpbi5jcHAiCisjaW5jbHVkZSAiUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdC5jcHAiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5jcHAiCiAj
aW5jbHVkZSAiUmVuZGVyVmlkZW8uY3BwIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuY3BwIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAppbmRleCAz
NjEyNzk0MTVhYWRlNjI5OGUzZDIyYzA1ZmY2YTRmZTNjZWQ5NDA4Li45ZjM5MzU3YzFiNjRmNDAw
MTViODk5Yzc4MWJhYjEwNGRkNDY5NjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcApAQCAtNjEsOSArNjEsOSBAQCB2b2lkIFJlbmRlclNW
R0Jsb2NrOjpzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICBSZW5k
ZXJCbG9jazo6c2V0U3R5bGUodXNlU3R5bGUucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBSZW5kZXJT
VkdCbG9jazo6dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCkKK3ZvaWQgUmVuZGVyU1ZHQmxv
Y2s6OnVwZGF0ZUZyb21TdHlsZSgpCiB7Ci0gICAgUmVuZGVyQmxvY2s6OnVwZGF0ZUJveE1vZGVs
SW5mb0Zyb21TdHlsZSgpOworICAgIFJlbmRlckJsb2NrOjp1cGRhdGVGcm9tU3R5bGUoKTsKIAog
ICAgIC8vIFJlbmRlclNWR2xvY2ssIHVzZWQgYnkgUmVuZGVyKFNWR1RleHR8Rm9yZWlnbk9iamVj
dCksIGlzIG5vdCBhbGxvd2VkIHRvIGNhbGwgc2V0SGFzT3ZlcmZsb3dDbGlwKHRydWUpLgogICAg
IC8vIFJlbmRlckJsb2NrIGFzc3VtZXMgYSBsYXllciB0byBiZSBwcmVzZW50IHdoZW4gdGhlIG92
ZXJmbG93IGNsaXAgZnVuY3Rpb25hbGl0eSBpcyByZXF1ZXN0ZWQuIEJvdGgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAppbmRleCA3ZjViNzg1MzI4YjA1
NzNlMjlmZjM5OGZmMjA3NzExNTg1MjNhMjZhLi4yMjJkNWVlMjAzNTIwYTUwZmY3YzkyNDM0OWI0
MjFhYTAzNzk5YjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0Jsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdCbG9jay5oCkBAIC0zOSw3ICszOSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgc2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOwotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRnJvbVN0eWxlKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVS
ZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAppbmRleCA4Zjg0MmVlMjE1MTlkYWE0MWQwNjBjY2Ni
NjU1NmUxZDE3MDkxY2NiLi5jMmRhNTVjMjNlM2E5YzVkMGU2NDYwOWI5OGY1Y2JmZDk2NDI1MGRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Rm9yZWlnbk9iamVjdC5jcHAKQEAgLTg4LDEyICs4OCwxMiBAQCB2b2lkIFJlbmRlclNWR0ZvcmVp
Z25PYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYp
CiAgICAgfQogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyKTsKIH0KIAotdm9pZCBS
ZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwg
Ym9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUZs
b2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRh
aW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBT
VkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50
Q29udGFpbmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwogfQpAQCAtMTkwLDEyICsxOTAsMTIgQEAg
Ym9vbCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVx
dWVzdCYsIEhpdFRlc3RSZXN1bHQmLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5k
ZXJTVkdGb3JlaWduT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1h
cExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQg
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3Jt
U3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29u
c3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJl
cGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlICYgU25hcE9mZnNldEZvclRyYW5z
Zm9ybXMsIHdhc0ZpeGVkKTsKIH0KIAotY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdGb3Jl
aWduT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNv
bnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OnB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JU
b1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAogewogICAgIHJl
dHVybiBTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKHRoaXMsIGFuY2Vz
dG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKaW5kZXggN2U1MmUwMGMyMjU2
ZDg1Y2Q4OWU3MjVlMmU4OTFkMDlmZTMyODFjMC4uZDEyNWNhZjVjZDljOTNhZGE5Y2JhYjEzMWQ5
MjA3MTUyM2RmMzljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKQEAgLTQwLDggKzQwLDggQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAK
LSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBm
YWxzZSkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwpAQCAt
NTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RQb2ludCYgcG9p
bnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRU
ZXN0QWN0aW9uKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9D
b250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9y
bVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZs
aXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVu
ZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zv
cm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJG
bGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9D
b250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BB
dCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVl
OyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0dyYWRpZW50U3RvcC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdHcmFkaWVudFN0b3AuaAppbmRleCBiOTBhYjUwODEwNDExMzg0MTQxYzMyMzg5NDc2
ZTNjODQ0MzQwNjViLi45NWJjMzRlMmJkYmQ2MDA1OTAzZmE3YzE2MDY3ZDgxOTIzMTI3ZThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50
U3RvcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGll
bnRTdG9wLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgb3ZlcnJpZGVz
IGFyZSBuZWVkZWQgdG8gcHJldmVudCBBU1NFUlRzIG9uIDxzdmc+PHN0b3AgLz48L3N2Zz4KICAg
ICAvLyBSZW5kZXJPYmplY3QncyBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBBU1NFUlRfTk9UX1JF
QUNIRUQoKQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDQwMAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCopIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQor
ICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gTGF5b3V0UmVj
dCgpOyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCB7
IHJldHVybiBGbG9hdFJlY3QoKTsgfQogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5k
aW5nQm94KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KICAgICB2aXJ0dWFsIEZsb2F0
UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0dXJuIEZsb2F0
UmVjdCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0hpZGRlbkNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdIaWRkZW5Db250YWluZXIuaAppbmRleCBmMjZjNWZjNjFhMzdmODIwN2Q0ZDY0OWJlNjgw
OWQ1MmEyZjg4MjVmLi5iNGJjMjM0NWE2NTgxMmIzYmYyZWE5Y2FkZDM3Njg2NDc5ZDVmZGU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNv
bnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlk
ZGVuQ29udGFpbmVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
dm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIAotICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCopIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CiAgICAg
dmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNG
aXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBI
aXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludElu
UGFyZW50LCBIaXRUZXN0QWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCAyMWJlZDRhMTVlYjcxMjI0NmQ0ZjlhOTMxNGJj
YzJlNzE2NmYxYzEyLi45MDFkNDcwNjcxMmQ1Y2JkZDJkZGUzZTFmNWY4NTUwY2YyZTI5ZmRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3Bw
CkBAIC02OSwyMiArNjksMjIgQEAgRmxvYXRSZWN0IFJlbmRlclNWR0lubGluZTo6cmVwYWludFJl
Y3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdAogICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIH0K
IAotTGF5b3V0UmVjdCBSZW5kZXJTVkdJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0
UmVjdCBSZW5kZXJTVkdJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHRoaXMs
IHJlcGFpbnRDb250YWluZXIpOwogfQogCi12b2lkIFJlbmRlclNWR0lubGluZTo6Y29tcHV0ZUZs
b2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNW
R0lubGluZTo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhl
ZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVw
YWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwogfQogCi12
b2lkIFJlbmRlclNWR0lubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBN
YXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lk
IFJlbmRlclNWR0lubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUs
IE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsK
ICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRD
b250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlICYgU25hcE9mZnNldEZvclRyYW5zZm9ybXMs
IHdhc0ZpeGVkKTsKIH0KIAotY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdJbmxpbmU6OnB1
c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9y
VG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJl
bmRlck9iamVjdCogUmVuZGVyU1ZHSW5saW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0
IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21l
dHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9y
dDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcih0aGlzLCBhbmNlc3RvclRvU3RvcEF0LCBnZW9tZXRy
eU1hcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxp
bmUuaAppbmRleCA4ZWY5Y2VkN2FhMTIwZTMxMGMwY2Q3OWMzZDJjOGJmNWM1NGQxZWNmLi5lZGI3
OTU3MjYyNjNjMjZiNGMwOWZhNGJhMzM2YTA2ZjI3YWY4ZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKQEAgLTQ1LDEwICs0NSwxMCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdDsK
ICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNv
bnN0OwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2
aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRh
aW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNm
b3JtcywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGNv
bnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsK
KyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQg
PSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250
YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNm
b3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVy
RmxpcCB8IFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9w
QXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuY3BwCmluZGV4IDA4MmJmNDg3ZTRkOWIzZWFhYThkNTZkMTE4NGUz
ZDBhODExZGQ3MmQuLmJlYTJkMmJjMGUxMDcyZGE4NDk0Y2EyZDk1MDAyNGUwOTUxNDA4MDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxP
YmplY3QuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU1ZHTW9kZWxPYmpl
Y3QuaCIKIAogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCisjaW5jbHVkZSAiUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAi
U1ZHUmVzb3VyY2VzQ2FjaGUuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCkBAIC00
NSwyMiArNDYsMjIgQEAgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OlJlbmRlclNWR01vZGVsT2JqZWN0
KFNWR1N0eWxlZEVsZW1lbnQqIG5vZGUpCiB7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyU1ZHTW9k
ZWxPYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9i
amVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3Vw
cG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5l
cik7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3Qm
IHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdNb2RlbE9iamVj
dDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29u
c3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCh0
aGlzLCByZXBhaW50Q29udGFpbmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwogfQogCi12b2lkIFJl
bmRlclNWR01vZGVsT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1h
cExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQg
UmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0
YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0
CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0aGlzLCByZXBh
aW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSAmIFNuYXBPZmZzZXRGb3JUcmFuc2Zv
cm1zLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHTW9kZWxP
YmplY3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QK
K2NvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OnB1c2hNYXBwaW5nVG9D
b250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BB
dCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAogewogICAgIHJldHVybiBT
VkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKHRoaXMsIGFuY2VzdG9yVG9T
dG9wQXQsIGdlb21ldHJ5TWFwKTsKIH0KQEAgLTY4LDcgKzY5LDcgQEAgY29uc3QgUmVuZGVyT2Jq
ZWN0KiBSZW5kZXJTVkdNb2RlbE9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJCb3gKIC8vIENvcGllZCBmcm9tIFJlbmRlckJveCwgdGhpcyBtZXRob2QgbGlrZWx5IHJl
cXVpcmVzIGZ1cnRoZXIgcmVmYWN0b3JpbmcgdG8gd29yayBlYXNpbHkgZm9yIGJvdGggU1ZHIGFu
ZCBDU1MgQm94IE1vZGVsIGNvbnRlbnQuCiAvLyBGSVhNRTogVGhpcyBtYXkgYWxzbyBuZWVkIHRv
IG1vdmUgaW50byBTVkdSZW5kZXJTdXBwb3J0IGFzIHRoZSBSZW5kZXJCb3ggdmVyc2lvbiBkZXBl
bmRzCiAvLyBvbiBib3JkZXJCb3VuZGluZ0JveCgpIHdoaWNoIFNWRyBSZW5kZXJCb3ggc3ViY2xh
c2VzIChsaWtlIFNWR1JlbmRlckJsb2NrKSBkbyBub3QgaW1wbGVtZW50LgotTGF5b3V0UmVjdCBS
ZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFBvaW50KikgY29uc3QKK0xheW91dFJl
Y3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFBvaW50KikgY29uc3QK
IHsKICAgICBMYXlvdXRSZWN0IGJveCA9IGVuY2xvc2luZ0xheW91dFJlY3QocmVwYWludFJlY3RJ
bkxvY2FsQ29vcmRpbmF0ZXMoKSk7CiAgICAgYWRqdXN0UmVjdEZvck91dGxpbmVBbmRTaGFkb3co
Ym94KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9k
ZWxPYmplY3QuaAppbmRleCBhMjgzNzY2MjViOTBhNzUwYjgyY2M4ODY1ZjkzYjBmZjNkODkzNDMy
Li5jODlkY2FmMWZmNmVkZjZhMjhjNTY3ZTg5NWRiNzliZjA3ZTMxOTEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCkBAIC01
MSwxNSArNTEsMTUgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJv
b2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVC
b3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBM
YXlvdXRQb2ludCopIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZv
clJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxv
YXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9pbnQqKSBjb25zdCBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVy
RmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1z
LCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgY29uc3Qg
UmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVs
T2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5l
ckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3Jt
cywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0
IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpOwogICAgIHZpcnR1YWwgdm9pZCBzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9v
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmlu
ZGV4IDVkNTZiNWNlNzg5NzU4NTEwMzdkMTFkYjI4YWI0NjI1ZDkzN2Y2OGMuLmI2ZjBlMjNjZjE1
ZDcwZDQ2ZGZlOGY4YjYyMTEwYmViYzFhZWQ0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtMzY5LDEyICszNjksMTIgQEAgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBSZW5kZXJTVkdSb290Ojpsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkg
Y29uc3QKICAgICByZXR1cm4gbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtOwogfQogCi1MYXlvdXRS
ZWN0IFJlbmRlclNWR1Jvb3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJT
VkdSb290OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJT
dXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFp
bmVyKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdSb290Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBh
aW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZs
b2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRh
aW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICAv
LyBBcHBseSBvdXIgbG9jYWwgdHJhbnNmb3JtcyAoZXhjZXB0IGZvciB4L3kgdHJhbnNsYXRpb24p
LCB0aGVuIG91ciBzaGFkb3csIAogICAgIC8vIGFuZCB0aGVuIGNhbGwgUmVuZGVyQm94J3MgbWV0
aG9kIHRvIGhhbmRsZSBhbGwgdGhlIG5vcm1hbCBDU1MgQm94IG1vZGVsIGJpdHMKQEAgLTM5NSw3
ICszOTUsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udAogLy8gVGhpcyBtZXRob2QgZXhwZWN0
cyBsb2NhbCBDU1MgYm94IGNvb3JkaW5hdGVzLgogLy8gQ2FsbGVycyB3aXRoIGxvY2FsIFNWRyB2
aWV3cG9ydCBjb29yZGluYXRlcyBzaG91bGQgZmlyc3QgYXBwbHkgdGhlIGxvY2FsVG9Cb3JkZXJC
b3hUcmFuc2Zvcm0KIC8vIHRvIGNvbnZlcnQgZnJvbSBTVkcgdmlld3BvcnQgY29vcmRpbmF0ZXMg
dG8gbG9jYWwgQ1NTIGJveCBjb29yZGluYXRlcy4KLXZvaWQgUmVuZGVyU1ZHUm9vdDo6bWFwTG9j
YWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJh
bnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9k
ZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1Jvb3Q6Om1hcExvY2FsVG9D
b250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJh
bnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9k
ZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1vZGUgJiB+SXNGaXhlZCk7
IC8vIFdlIHNob3VsZCBoYXZlIG5vIGZpeGVkIGNvbnRlbnQgaW4gdGhlIFNWRyByZW5kZXJpbmcg
dHJlZS4KICAgICBBU1NFUlQobW9kZSAmIFVzZVRyYW5zZm9ybXMpOyAvLyBtYXBwaW5nIGEgcG9p
bnQgdGhyb3VnaCBTVkcgdy9vIHJlc3BlY3RpbmcgdHJhc25mb3JtcyBpcyB1c2VsZXNzLgpAQCAt
NDAzLDcgKzQwMyw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwKICAgICBSZW5kZXJSZXBsYWNl
ZDo6bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwg
bW9kZSB8IEFwcGx5Q29udGFpbmVyRmxpcCwgd2FzRml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJP
YmplY3QqIFJlbmRlclNWR1Jvb3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9t
ZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHUm9vdDo6cHVzaE1h
cHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3Rv
clRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAg
cmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGFuY2VzdG9yVG9T
dG9wQXQsIGdlb21ldHJ5TWFwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmgKaW5kZXggYTA1NjZiMTM0YTM3MjZlNTU4ZTIyMjNlZmFiMmU3Nzk1M2Fm
ODJhYy4uMDVlZTAyNTgxNjFjMDgwMmJjYTZkNGMyYjg5ODE5MWU2NTk2ZDE2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKQEAgLTkyLDExICs5Miwx
MSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RQb2ludCYgcG9pbnRJbkNv
bnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0
aW9uKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBi
b29sIGZpeGVkKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JS
ZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0
UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmly
dHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1v
ZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCog
d2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9i
amVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCog
YW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBt
b2RlID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wq
IHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJP
YmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBPVkVSUklE
RTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0LmNwcAppbmRleCBkZTJmMDE2NWNhNGFiZWFiMWNjYmZiOWMwMzJhZjBlZDA2OTJmNjY2Li41
ZTIyYzI4ZmM4MzQzNDNiY2IyYmEzYjllOTc1ODI0N2JkMTQwNzM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTk0LDI5ICs5NCwyOSBA
QCBjb25zdCBSZW5kZXJTVkdUZXh0KiBSZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0
QW5jZXN0b3IoY29uc3QgUmVuZGVyT2JqZQogICAgIHJldHVybiB0b1JlbmRlclNWR1RleHQoc3Rh
cnQpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNWR1RleHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAor
TGF5b3V0UmVjdCBSZW5kZXJTVkdUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAg
IHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCh0
aGlzLCByZXBhaW50Q29udGFpbmVyKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdUZXh0Ojpjb21wdXRl
UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExh
eW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1RleHQ6OmNv
bXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIEZsb2F0
UmVjdCByZXBhaW50UmVjdCA9IHJlY3Q7CiAgICAgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQo
cmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKICAgICByZWN0ID0gZW5jbG9z
aW5nTGF5b3V0UmVjdChyZXBhaW50UmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHVGV4dDo6Y29t
cHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJl
bmRlclNWR1RleHQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wg
Zml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZv
clJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKIH0K
IAotdm9pZCBSZW5kZXJTVkdUZXh0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUs
IE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3Zv
aWQgUmVuZGVyU1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUs
IE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsK
ICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRD
b250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlICYgU25hcE9mZnNldEZvclRyYW5zZm9ybXMs
IHdhc0ZpeGVkKTsKIH0KIAotY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdUZXh0OjpwdXNo
TWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRv
U3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5k
ZXJPYmplY3QqIFJlbmRlclNWR1RleHQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlN
YXAmIGdlb21ldHJ5TWFwKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0Ojpw
dXNoTWFwcGluZ1RvQ29udGFpbmVyKHRoaXMsIGFuY2VzdG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFw
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5k
ZXggMGEwYzI4NTZiYWJlMDU5Njg4MDlmNDBjMWMxOGUzYWJjY2ZkOGQyZi4uOGI1MThmODVmODQ5
YmFiNzg0OGQ3MTE1NDQ2MmRhY2NjMGFjNmMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKQEAgLTcxLDEyICs3MSwxMiBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3
YXNGaXhlZCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFs
c2UpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBm
aXhlZCA9IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRh
aW5lcikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVw
YWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRS
ZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBP
VkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2Fs
VG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNldEZv
clRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2Nh
bFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRG
b3JUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5
TWFwJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9i
amVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxCZURlc3Ryb3llZCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKaW5kZXggZmM1NzJhZDZmM2IwZWVhNjRi
MTZhNDA1NWM5YzljMGZiNzI4ZmJjMi4uZDEzMDlhYzExMjIwZTkxYzJjZDVjNjhkYmJjN2I1ZGQ4
MTJjNmE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
clN1cHBvcnQuY3BwCkBAIC00Niw3ICs0Niw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
TGF5b3V0UmVjdCBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIpCitMYXlvdXRSZWN0IFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxv
d1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKQogewogICAgIC8vIFJldHVybiBlYXJseSBm
b3IgYW55IGNhc2VzIHdoZXJlIHdlIGRvbid0IGFjdHVhbGx5IHBhaW50CiAgICAgaWYgKG9iamVj
dC0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIW9iamVjdC0+ZW5jbG9zaW5n
TGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKQEAgLTU5LDcgKzU5LDcgQEAgTGF5b3V0UmVj
dCBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBS
ZW5kZXJPYmplY3QqIG8KICAgICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdChyZXBhaW50UmVj
dCk7CiB9CiAKLXZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFp
bnQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKQordm9pZCBT
VkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJP
YmplY3QqIG9iamVjdCwgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkKIHsKICAgICBjb25zdCBTVkdS
ZW5kZXJTdHlsZSogc3ZnU3R5bGUgPSBvYmplY3QtPnN0eWxlKCktPnN2Z1N0eWxlKCk7CiAgICAg
aWYgKGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdyA9IHN2Z1N0eWxlLT5zaGFkb3coKSkKQEAgLTcx
LDcgKzcxLDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVw
YWludChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmUKICAgICBvYmplY3QtPnBhcmVudCgp
LT5jb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCByZXBhaW50UmVj
dCwgZml4ZWQpOwogfQogCi12b2lkIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWlu
ZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIGJvb2wgc25hcE9m
ZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBTVkdSZW5kZXJTdXBwb3J0
OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJh
bnNmb3JtU3RhdGUsIGJvb2wgc25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVk
KQogewogICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJhbnNmb3JtKG9iamVjdC0+bG9jYWxUb1Bh
cmVudFRyYW5zZm9ybSgpKTsKIApAQCAtODksNyArODksNyBAQCB2b2lkIFNWR1JlbmRlclN1cHBv
cnQ6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRl
ckJveAogICAgIHBhcmVudC0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0
cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3Qq
IFNWR1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2Jq
ZWN0KiBvYmplY3QsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0
LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApCitjb25zdCBSZW5kZXJPYmplY3QqIFNW
R1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0
KiBvYmplY3QsIGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9w
QXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkKIHsKICAgICBBU1NFUlRfVU5VU0VE
KGFuY2VzdG9yVG9TdG9wQXQsIGFuY2VzdG9yVG9TdG9wQXQgIT0gb2JqZWN0KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaAppbmRleCBiNjJj
Y2ZiMmYxODVlOWY4ZjBjZWY2ZjU4MWZiYzE4MDM2MTg4ZjEwLi4wZTkxNmNjYzYwMWU4NzExYzk3
NTBlZmJlNDhiYTRmOTNiMmVlZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclN1cHBvcnQuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBGbG9hdFJlY3Q7
CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OwogY2xhc3Mg
UmVuZGVyR2VvbWV0cnlNYXA7CitjbGFzcyBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OwogY2xh
c3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBSZW5kZXJTVkdSb290
OwpAQCAtNjIsMTAgKzYzLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwYWludEluZm9J
bnRlcnNlY3RzUmVwYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiBsb2NhbFJlcGFpbnRSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVHJhbnNmb3JtLCBjb25zdCBQYWludEluZm8mKTsK
IAogICAgIC8vIEltcG9ydGFudCBmdW5jdGlvbnMgdXNlZCBieSBuZWFybHkgYWxsIFNWRyByZW5k
ZXJlcnMgY2VudHJhbGl6aW5nIGNvb3JkaW5hdGUgdHJhbnNmb3JtYXRpb25zIC8gcmVwYWludCBy
ZWN0IGNhbGN1bGF0aW9ucwotICAgIHN0YXRpYyBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCosIFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyKTsKLSAgICBzdGF0aWMgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVw
YWludChjb25zdCBSZW5kZXJPYmplY3QqLCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCk7Ci0gICAgc3RhdGljIHZvaWQgbWFwTG9j
YWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqLCBSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBib29sIHNuYXBPZmZzZXRGb3JUcmFu
c2Zvcm1zID0gdHJ1ZSwgYm9vbCogd2FzRml4ZWQgPSAwKTsKLSAgICBzdGF0aWMgY29uc3QgUmVu
ZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGNv
bnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRy
eU1hcCYpOworICAgIHN0YXRpYyBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KGNvbnN0IFJlbmRlck9iamVjdCosIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFp
bnRDb250YWluZXIpOworICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50
KGNvbnN0IFJlbmRlck9iamVjdCosIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQpOworICAgIHN0YXRpYyB2b2lkIG1hcExv
Y2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBib29sIHNuYXBPZmZzZXRG
b3JUcmFuc2Zvcm1zID0gdHJ1ZSwgYm9vbCogd2FzRml4ZWQgPSAwKTsKKyAgICBzdGF0aWMgY29u
c3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVj
dCosIGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJl
bmRlckdlb21ldHJ5TWFwJik7CiAKICAgICAvLyBTaGFyZWQgYmV0d2VlbiBTVkcgcmVuZGVyZXJz
IGFuZCByZXNvdXJjZXMuCiAgICAgc3RhdGljIHZvaWQgYXBwbHlTdHJva2VTdHlsZVRvQ29udGV4
dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFJlbmRlck9iamVj
dCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160171</attachid>
            <date>2012-08-23 08:43:00 -0700</date>
            <delta_ts>2012-08-23 10:56:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86022-20120823114256.patch</filename>
            <type>text/plain</type>
            <size>149619</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzJjZDg5MmM4YTk5Y2U1
MjFmNGJkYjI0ZDE4YTM2NTE0YWJmNGQ2MC4uOWM3YTE0ODBhY2Y2YmU1NWQ1NmFlYmQ3MjljYjYx
NDczMTc3NmIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNyBAQAorMjAxMi0wOC0yMyAgRmxv
cmluIE1hbGl0YSAgPGZtYWxpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZmFjdG9yIGxh
eWVyLXJlbGF0ZWQgbG9naWMgb3V0IG9mIFJlbmRlckJveE1vZGVsT2JqZWN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjAyMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZXh0cmFjdHMg
bGF5ZXItcmVsYXRlZCBsb2dpYyBpbnRvIGEgZGVkaWNhdGVkIGNsYXNzCisgICAgICAgIChSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KSBhbmQgcmVmYWN0b3JzIGRlcGVuZGVudCBjb2RlIHRvIG1h
a2UgdXNlCisgICAgICAgIG9mIHRoZSBuZXcgdHlwZSBpbnN0ZWFkIG9mIFJlbmRlckJveE1vZGVs
T2JqZWN0LiBUaGlzIGlzIGluIHByZXBhcmF0aW9uCisgICAgICAgIG9mIGFkZGluZyBub24tUmVu
ZGVyQm94TW9kZWxPYmplY3QgbGF5ZXIgc3VwcHJ0LgorCisgICAgICAgIEFsbCBtZXRob2RzIHRo
YXQgd2VyZSB1c2luZyBSZW5kZXJCb3hNb2RlbE9iamVjdCBmb3IgbGF5ZXItcmVsYXRlZAorICAg
ICAgICBmdW5jdGlvbmFsaXR5IGFyZSB1cGRhdGVkIHRvIHdvcmsgd2l0aCBSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0CisgICAgICAgIGluc3RlYWQgKGEgUmVuZGVyTGF5ZXIncyByZW5kZXJlcigp
IGNhbiBubyBsb25nZXIgYmUgYXNzdW1lZCB0byBiZQorICAgICAgICBhIFJlbmRlckJveE1vZGVs
T2JqZWN0KS4KKworICAgICAgICBObyBuZXcgdGVzdHM6IHJlZmFjdG9yaW5nIHdpdGggbm8gYmVo
YXZpb3IgY2hhbmdlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5v
cmRlcjoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVuZGVyaW5n
L0xheW91dFJlcGFpbnRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXlvdXRS
ZXBhaW50ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCUi5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
c2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaDoKKyAgICAgICAgKFJlbmRlckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c3R5bGVEaWRDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojp1cGRhdGVGcm9tU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjplbmNsb3NpbmdGbG9hdFBhaW50aW5nTGF5ZXIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFJlbmRlckJveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVs
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojp+UmVuZGVy
Qm94TW9kZWxPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuaDoKKyAgICAgICAgKFJlbmRlckJveE1vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2Vv
bWV0cnlNYXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyR2VvbWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rvcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckdlb21ldHJ5TWFwLmg6CisgICAgICAgIChSZW5kZXJHZW9tZXRyeU1hcCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbmxpbmU6OnVwZGF0ZUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlcklubGluZTo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbmxpbmU6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW5saW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAgIChSZW5kZXJJbmxpbmUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxh
eWVyUG9zaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb21wdXRlUmVw
YWludFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrQ29udGFpbmluZ0Jsb2NrQ2hhaW5G
b3JQYWdpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXll
clBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUG9zaXRpb25lZENvbnRhaW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGFzQW5jZXN0b3JXaXRoRmlsdGVyT3V0c2V0
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsVG8pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2Nl
bmRhbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJl
bmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZW5kZXJlcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpyZXBhaW50T25Db21wb3NpdGluZ0NoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbkZvckNvbXBvc2l0aW5n
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKFJlbmRlckxpc3RN
YXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjphZGRM
YXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZW1vdmVMYXllcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojptb3ZlTGF5ZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6ZmluZE5leHRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmVuY2xvc2luZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5
b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29udGFpbmVyRm9yUmVwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnRVc2luZ0NvbnRhaW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZXBhaW50UmVjdGFuZ2xlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVw
YWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkanVzdFN0eWxlRGlmZmVy
ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om1hcExvY2FsVG9Db250YWlu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFp
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3Jt
RnJvbUNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdldFRyYW5z
Zm9ybUZyb21Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpsb2Nh
bFRvQ29udGFpbmVyUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2Fs
VG9Db250YWluZXJQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbnRh
aW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzQ29tcG9zaXRlZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzVHJhbnNmb3JtYWJsZU9iamVjdCk6CisgICAgICAg
IChSZW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZWxlY3Rp
b25SZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om91dGxp
bmVCb3VuZHNGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnNlbGVjdGlvblJlY3RGb3JS
ZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6
CisgICAgICAgIChSZW5kZXJSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNl
bGVjdGlvbkluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlbGVjdGlvbkluZm9CYXNl
OjpyZXBhaW50Q29udGFpbmVyKToKKyAgICAgICAgKFJlbmRlclNlbGVjdGlvbkluZm9CYXNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKFJlbmRlclRh
YmxlQ2VsbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29sOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmg6CisgICAgICAgIChSZW5k
ZXJUYWJsZUNvbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlUm93OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93Lmg6CisgICAgICAgIChS
ZW5kZXJUYWJsZVJvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6CisgICAgICAgIChSZW5kZXJUZXh0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0OjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6On5SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OmRlc3Ryb3lM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjplbnN1
cmVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Ojpo
YXNTZWxmUGFpbnRpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpsYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Ojp1cGRhdGVGcm9tU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6dG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjptYXBMb2Nh
bFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnB1c2hNYXBwaW5n
VG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6aXNDb21wb3NpdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZXc6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6
c2VsZWN0aW9uQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNldFNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpjbGVhclNlbGVjdGlvbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKFJlbmRlclZpZXcpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHA6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdCbG9jazo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0Jsb2NrLmg6CisgICAgICAgIChSZW5kZXJTVkdCbG9jayk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RG
b3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om1h
cExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9i
amVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg6CisgICAgICAgIChSZW5kZXJTVkdGb3JlaWduT2JqZWN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHSW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWlu
ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmg6CisgICAgICAg
IChSZW5kZXJTVkdJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9k
ZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R01vZGVsT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGluZUJvdW5kc0Zv
clJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
aDoKKyAgICAgICAgKFJlbmRlclNWR01vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUm9vdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUm9vdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSb290OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuaDoKKyAgICAgICAgKFJlbmRlclNWR1Jvb3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKFJlbmRlclNW
R1RleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxv
YXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpt
YXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6
OnB1c2hNYXBwaW5nVG9Db250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdSZW5kZXJTdXBw
b3J0KToKKwogMjAxMi0wOC0yMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCB0cml2aWFsIGJ1aWxkIGZpeCBmb3IgUXQvTWFj
IG9uIE9TIFggMTAuNjogQXZvaWQgdXNpbmcgYW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTE0
YzViZWE1ZDlhYTgwYzVjOGIzY2RiM2Y1YWNkNjQzMTQwNmEzOC4uYWU2YjZjYmJjYzlhM2I4Y2Yy
OTQ0MWJkZTYwYjQxMDkyMWU3NjVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwOTIsNiAr
MjA5Miw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5kZXJpbmcvUmVuZGVyVGV4dEZy
YWdtZW50LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJUZXh0VHJhY2tDdWUuY3BwCiAgICAgcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorICAgIHJlbmRlcmluZy9SZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAogICAgIHJlbmRl
cmluZy9SZW5kZXJWaWRlby5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGY1NzY0MjA1NmEzMzY0NDMzZTRkYWUzNDBkYWM0
YzZhZGFlZjBlZGEuLmE5NWE2NjExMmViZjRhNDczYTdmMmEyODE1YjI5YzAwYzA2MTY2MzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDI3MCw2ICs0MjcwLDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKaW5kZXggOGIwZGIyMTdkMDZlNzdhYjYzNTcwNzQyMGZjZTU4MzI0YTU5
ZmI0Yi4uNDFmMGRiNDBmOGQ2OTYzNjhjZTAyZmNmNjAxMzFhMmY3MmM2MDg2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCkBAIC0xMTc2LDYgKzExNzYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICByZW5kZXJpbmcvUmVu
ZGVyVGV4dEZyYWdtZW50LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRleHRUcmFja0N1ZS5j
cHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgXAorICAgIHJlbmRlcmluZy9SZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgXAogICAgIHJlbmRlcmluZy9S
ZW5kZXJXaWRnZXQuY3BwIFwKQEAgLTIzNTcsNiArMjM1OCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IHJlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRl
eHQuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggXAorICAgIHJlbmRlcmluZy9SZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJWaWRlby5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVy
Vmlldy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNzcwZGQ4NThjMjY1NDBlMmIwNTYxN2U5
MWY1YjkzOTg2ZmQ4MTNkMi4uMGE2NThkMGExZDI4YTMyNDgwYjhkY2QyN2UxNTE5NDdhNWE1N2Zl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTExMDcsNiArMTEwNyw3IEBAIF9fWk5LN1dlYkNv
cmUxMVNjcmlwdFZhbHVlOWdldFN0cmluZ0VQTjNKU0M5RXhlY1N0YXRlRVJOM1dURjZTdHJpbmdF
CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNGVuY2xvc2luZ0xheWVyRXYKIF9fWk5LN1dl
YkNvcmUxMlJlbmRlck9iamVjdDE1bG9jYWxUb0Fic29sdXRlRVJLTlNfMTBGbG9hdFBvaW50RWJi
CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyMGxvY2FsVG9Db250YWluZXJRdWFkRVJLTlNf
OUZsb2F0UXVhZEVQTlNfMjBSZW5kZXJCb3hNb2RlbE9iamVjdEViYlBiCitfX1pOSzdXZWJDb3Jl
MTJSZW5kZXJPYmplY3QyMGxvY2FsVG9Db250YWluZXJRdWFkRVJLTlNfOUZsb2F0UXVhZEVQTlNf
MjVSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0RWJiUGIKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9i
amVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2Jq
ZWN0MzlwaXhlbFNuYXBwZWRBYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3RFdgogX19aTks3V2Vi
Q29yZTEyUmVuZGVyT2JqZWN0N2NoaWxkQXRFagpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDhmYzU3ODY4
NjllZTczMDg2NzY4MWYyYjViOTA1NjhjZWEzYTUwYTQuLjdjMmE5Nzg3ODc5NWEwMTlkY2I0N2Zm
Y2ZkNWMzODM5NjJhNjY2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTU3Nyw2ICs1NzcsNyBAQAog
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJQYXJ0LmgnLAogICAgICAgICAgICAgJ3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGV4
dC5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5o
JywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5oJywKICAgICAgICAg
ICAgICdyZW5kZXJpbmcvUmVuZGVyVmlldy5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmgnLApAQCAtNDg1OSw2ICs0ODYwLDcgQEAKICAgICAgICAgICAgICdyZW5kZXJp
bmcvUmVuZGVyVGhlbWVXaW4uaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclRoZW1l
V2luQ0UuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5oJywK
KyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAnLAog
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCcsCiAgICAgICAgICAg
ICAncmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1Jl
bmRlclZpZGVvLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggMGIyYjE3NTgzY2I3MDYwNzliNzMy
Mjg3ZDI4ZmYyNDJjYjM1ZDNmYy4uZWM1MjNkN2YwYjIwMDk3MGNkYWNhMTllZmViMzY2YWFhYjlm
ZDcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC04MjMsOCArODIzLDggQEAgX19aTjdXZWJDb3Jl
MTFSZW5kZXJCbG9jazE0c3R5bGVEaWRDaGFuZ2VFTlNfMTVTdHlsZURpZmZlcmVuY2VFUEtOU18x
MVJlbmRlclN0eWwKIF9fWk43V2ViQ29yZTlSZW5kZXJCb3gxNHN0eWxlRGlkQ2hhbmdlRU5TXzE1
U3R5bGVEaWZmZXJlbmNlRVBLTlNfMTFSZW5kZXJTdHlsZUUKIF9fWk43V2ViQ29yZTIwUmVuZGVy
Qm94TW9kZWxPYmplY3QxNHN0eWxlRGlkQ2hhbmdlRU5TXzE1U3R5bGVEaWZmZXJlbmNlRVBLTlNf
MTFSZW5kZXJTdHlsZUUKIF9fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTRzdHlsZURpZENoYW5n
ZUVOU18xNVN0eWxlRGlmZmVyZW5jZUVQS05TXzExUmVuZGVyU3R5bGVFCi1fX1pON1dlYkNvcmU5
UmVuZGVyQm94Mjd1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGVFdgotX19aTjdXZWJDb3JlMjBS
ZW5kZXJCb3hNb2RlbE9iamVjdDI3dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlRXYKK19fWk43
V2ViQ29yZTlSZW5kZXJCb3gxNXVwZGF0ZUZyb21TdHlsZUV2CitfX1pON1dlYkNvcmUyMFJlbmRl
ckJveE1vZGVsT2JqZWN0MTV1cGRhdGVGcm9tU3R5bGVFdgogX19aTks3V2ViQ29yZTExUmVuZGVy
U3R5bGUyMXZpc2l0ZWREZXBlbmRlbnRDb2xvckVpCiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJTdHls
ZTIyY29sb3JJbmNsdWRpbmdGYWxsYmFja0VpTlNfMTJFQm9yZGVyU3R5bGVFCiBfX1pOSzdXZWJD
b3JlMTBSZW5kZXJWaWV3MTJpc1JlbmRlclZpZXdFdgpAQCAtNDE3MCw3ICs0MTcwLDcgQEAgX19a
TjdXZWJDb3JlNE5vZGUxMWFwcGVuZENoaWxkRU4zV1RGMTBQYXNzUmVmUHRySVMwX0VFUmliCiBf
X1pON1dlYkNvcmU0Tm9kZTEwbGF6eUF0dGFjaEVOUzBfMTdTaG91bGRTZXRBdHRhY2hlZEUKIF9f
Wk43V2ViQ29yZTEyUmVuZGVySW5saW5lQzFFUE5TXzROb2RlRQogX19aTjdXZWJDb3JlMTJSZW5k
ZXJJbmxpbmUxNHN0eWxlRGlkQ2hhbmdlRU5TXzE1U3R5bGVEaWZmZXJlbmNlRVBLTlNfMTFSZW5k
ZXJTdHlsZUUKLV9fWk43V2ViQ29yZTEyUmVuZGVySW5saW5lMjd1cGRhdGVCb3hNb2RlbEluZm9G
cm9tU3R5bGVFdgorX19aTjdXZWJDb3JlMTJSZW5kZXJJbmxpbmUxNXVwZGF0ZUZyb21TdHlsZUV2
CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJJbmxpbmUxM3JlcXVpcmVzTGF5ZXJFdgogX19aTks3V2Vi
Q29yZTlMZW5ndGhCb3g3bm9uWmVyb0V2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJJbmxpbmUxNXZp
cnR1YWxDaGlsZHJlbkV2CkBAIC0xMTMyOCw3ICsxMTMyOCw3IEBAIF9fWk43V2ViQ29yZTEzUmVu
ZGVyU1ZHVGV4dEMxRVBOU18xNFNWR1RleHRFbGVtZW50RQogX19aTjdXZWJDb3JlMTRSZW5kZXJT
VkdCbG9jazhzZXRTdHlsZUVOM1dURjEwUGFzc1JlZlB0cklOU18xMVJlbmRlclN0eWxlRUVFCiBf
X1pON1dlYkNvcmUxNFJlbmRlclNWR0Jsb2NrMTVzdHlsZVdpbGxDaGFuZ2VFTlNfMTVTdHlsZURp
ZmZlcmVuY2VFUEtOU18xMVJlbmRlclN0eWxlRQogX19aTjdXZWJDb3JlMTRSZW5kZXJTVkdCbG9j
azE0c3R5bGVEaWRDaGFuZ2VFTlNfMTVTdHlsZURpZmZlcmVuY2VFUEtOU18xMVJlbmRlclN0eWxl
RQotX19aTjdXZWJDb3JlMTRSZW5kZXJTVkdCbG9jazI3dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0
eWxlRXYKK19fWk43V2ViQ29yZTE0UmVuZGVyU1ZHQmxvY2sxNXVwZGF0ZUZyb21TdHlsZUV2CiBf
X1pOSzdXZWJDb3JlMTNSZW5kZXJTVkdUZXh0MTNyZXF1aXJlc0xheWVyRXYKIF9fWk43V2ViQ29y
ZTE0UmVuZGVyU1ZHQmxvY2sxN3VwZGF0ZUZyb21FbGVtZW50RXYKIF9fWk43V2ViQ29yZTI1U1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudDE1Y2hpbGRyZW5DaGFuZ2VkRWJQTlNfNE5vZGVFUzJfaQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA5MDU2
MWE3YWE4NmIzOGQyNTNhMjU4MzkwNjkxMzIwZDI4MzRiMWM0Li5hODU4YmI0MjQ4ODc0MmFjZTIw
ZGUzMTE0ZmE1YzdjZDZiMTRkYWVhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNDQwMjEsNiArNDQwMjEsNjIgQEAKIAkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJl
bmRlcmluZ1xSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmNwcCIKKwkJCQk+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVyVHJlZUFzVGV4dC5jcHAiCiAJCQkJPgog
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ5NWY2NTg0NzMzNjNkYTA4YjkyNWJlYmNjOWVm
NGY1ZTE5MTI4OTQuLjA3NTdhNTJiMzUyMDJkYWNkM2U2ODk3MTRkODU5NWIxOTBlMzczNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEwMjUsNiArMTAyNSw4IEBACiAJCTNBQjAyRDJCMTJENEY5MTYwMEZCQjY5NCAvKiBTdG9y
YWdlVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzQUIwMkQyOTEyRDRGOTE2MDBGQkI2OTQgLyogU3RvcmFnZVRyYWNrZXIuY3BwICovOyB9
OwogCQkzQUMzNjgwMDEyRUY3QTA5MDA2QTNENkYgLyogU3RvcmFnZVRyYWNrZXJDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNBQzM2N0ZFMTJF
RjdBMDkwMDZBM0Q2RiAvKiBTdG9yYWdlVHJhY2tlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTNBQzY0OEIyMTI5RTE0NjUwMEMzRUIy
NSAvKiBFZGl0aW5nQm91bmRhcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDNBQzY0OEIxMTI5RTE0NjUwMEMzRUIyNSAvKiBFZGl0aW5nQm91bmRhcnku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzQzI0
NEZFQUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0MyNDRGRTRBMzc1QUM2
MzNGODhCRTZGIC8qIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzQzI0NEZFQkEzNzVBQzYzM0Y4OEJF
NkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQzI0NEZFNUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAgKi87IH07CiAJCTQxMDAyQ0NEMEY2NkVERUYwMDlF
NjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5j
dGlvbkNhbGwuaCAqLzsgfTsKIAkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1
bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTAwMkNDQzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAq
LzsgfTsKIAkJNDEwQjdFNzIxMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMEI3
RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi87IH07CkBA
IC04MTA5LDYgKzgxMTEsOCBAQAogCQkzQUIwMkQyOTEyRDRGOTE2MDBGQkI2OTQgLyogU3RvcmFn
ZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFn
ZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzQUMzNjdGRTEyRUY3
QTA5MDA2QTNENkYgLyogU3RvcmFnZVRyYWNrZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RvcmFnZVRyYWNrZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJM0FDNjQ4QjExMjlFMTQ2NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0aW5nQm91bmRhcnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0MyNDRGRTRBMzc1QUM2MzNGODhCRTZGIC8qIFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzQzI0NEZFNUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwMDJDQ0Iw
RjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2Fs
bC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRGdW5jdGlv
bkNhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTBCN0U3MTEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjE0NDEsNiArMjE0NDUsOCBAQAogCQkJCUJDRUE0ODRCMDk3RDkz
MDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oICovLAogCQkJCUJDRUE0ODQ4MDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5oICovLAogCQkJCUJDRUE0ODQ5MDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJUaGVtZU1hYy5tbSAqLywKKwkJCQkzQzI0NEZFNUEzNzVBQzYzM0Y4OEJFNkYg
LyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAgKi8sCisJCQkJM0MyNDRGRTRBMzc1QUM2
MzNGODhCRTZGIC8qIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuaCAqLywKIAkJCQk5Mzk1NUE0
MjAzRDcyOTMyMDA4NjM1Q0UgLyogUmVuZGVyVHJlZUFzVGV4dC5jcHAgKi8sCiAJCQkJOTM5NTVB
NDEwM0Q3MjkzMjAwODYzNUNFIC8qIFJlbmRlclRyZWVBc1RleHQuaCAqLywKIAkJCQlFNEI0MUUz
MzBDQkZCNjA5MDBBRjJFQ0UgLyogUmVuZGVyVmlkZW8uY3BwICovLApAQCAtMjQ2ODQsNiArMjQ2
OTAsNyBAQAogCQkJCTg2RkY4ODYyMTVERTNEMDcwMEJENkIyOCAvKiBSZW5kZXJUZXh0VHJhY2tD
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODhBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJUaGVtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4ODcwOTdEOTMwMjAwOTRDOUU0IC8q
IFJlbmRlclRoZW1lTWFjLmggaW4gSGVhZGVycyAqLywKKwkJCQkzQzI0NEZFQUEzNzVBQzYzM0Y4
OEJFNkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTNGMTk5OEMwODI0NUU1OTAwMUU5QUJDIC8qIFJlbmRlclRyZWVBc1RleHQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0NDYxNDUyMENENjhBMzUwMEZBREE3NSAvKiBSZW5kZXJWaWRlby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNFQTQ4NjgwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclZpZXcuaCBp
biBIZWFkZXJzICovLApAQCAtMjc4OTEsNiArMjc4OTgsNyBAQAogCQkJCUJDRUE0ODg5MDk3RDkz
MDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg4
ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk5M0YxOUFENTA4MjQ1RTU5MDAxRTlBQkMgLyogUmVuZGVyVHJlZUFzVGV4dC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkzQzI0NEZFQkEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTQ1MTBDRDY4QTM1MDBGQURB
NzUgLyogUmVuZGVyVmlkZW8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NjcwOTdEOTMw
MjAwOTRDOUU0IC8qIFJlbmRlclZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MURGRTUw
QTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlcldpZGdldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcAppbmRleCBiYjhmNDIz
YmNhMjdiNTQ4Y2VlN2YyMDRhYTYyZjBlM2NmMzgxZDdmLi45ZGQxNWU4NDgxZTk5YzkyNGZmZThm
Y2I1NDQwZTIxMWI3YzhhMDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1
cmVUYXBIaWdobGlnaHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HZXN0dXJlVGFw
SGlnaGxpZ2h0ZXIuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgUGF0aCBhYnNvbHV0ZVBhdGhGb3JS
ZW5kZXJlcihSZW5kZXJPYmplY3QqIGNvbnN0IG8pCiAKICAgICAgICAgLy8gQ2hlY2sgYW5jZXN0
b3IgbGF5ZXJzIGZvciBvdmVyZmxvdyBjbGlwIGFuZCBpbnRlcnNlY3QgdGhlbS4KICAgICAgICAg
Zm9yICg7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQoKSkgewotICAgICAgICAgICAgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIGxheWVyUmVuZGVyZXIgPSBsYXllci0+cmVuZGVyZXIoKTsKKyAg
ICAgICAgICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGxheWVyUmVuZGVyZXIgPSBsYXll
ci0+cmVuZGVyZXIoKTsKIAogICAgICAgICAgICAgaWYgKGxheWVyUmVuZGVyZXItPmhhc092ZXJm
bG93Q2xpcCgpICYmIGxheWVyUmVuZGVyZXIgIT0gY3VycmVudFJlbmRlcmVyKSB7CiAgICAgICAg
ICAgICAgICAgYm9vbCBjb250YWluZXJTa2lwcGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmgKaW5kZXggNTc0MDBmYWViZjdiMjBhMTY1NGM4OWE4
MWRkYmNiM2YxOTM1ZmZiMC4uNWY5NmZkYzBmNDZjNDRhYTQ4NDM1OTM2YmQzODc2ZDM5ZmMyMWJk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuaApAQCAtMzAs
OCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3Q7CiBjbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBSZW5kZXJCb3hNb2RlbE9i
amVjdDsKIAogY2xhc3MgTGF5b3V0UmVwYWludGVyIHsKIHB1YmxpYzoKQEAgLTQ0LDcgKzQ0LDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFJlbmRlck9iamVjdCYgbV9vYmplY3Q7Ci0gICAg
UmVuZGVyQm94TW9kZWxPYmplY3QqIG1fcmVwYWludENvbnRhaW5lcjsKKyAgICBSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KiBtX3JlcGFpbnRDb250YWluZXI7CiAgICAgLy8gV2Ugc3RvcmUgdGhl
c2UgdmFsdWVzIGFzIExheW91dFJlY3RzLCBidXQgdGhlIGZpbmFsIGludmFsaWRhdGlvbnMgd2ls
bCBiZSBwaXhlbCBzbmFwcGVkCiAgICAgTGF5b3V0UmVjdCBtX29sZEJvdW5kczsKICAgICBMYXlv
dXRSZWN0IG1fb2xkT3V0bGluZUJveDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCUi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmgKaW5k
ZXggNDlmOWI1ZTZjYzIwZTk0OWY2NjA2MWNiZGFlM2ExYjM2MGVjMzg1MC4uNzA5YjE1NmZkNmE3
NzY0NjhkNWNlZjgzZjMyOWU5MGZkMzk2ZTk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJSLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckJSIjsgfQogIAotICAgIHZpcnR1
YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogLypyZXBhaW50Q29udGFpbmVyKi8sIGJvb2wgLypjbGlwVG9WaXNpYmxlQ29udGVudCovKSB7
IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9u
UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogLypyZXBhaW50Q29udGFp
bmVyKi8sIGJvb2wgLypjbGlwVG9WaXNpYmxlQ29udGVudCovKSBPVkVSUklERSB7IHJldHVybiBM
YXlvdXRSZWN0KCk7IH0KIAogICAgIHZpcnR1YWwgZmxvYXQgd2lkdGgodW5zaWduZWQgLypmcm9t
Ki8sIHVuc2lnbmVkIC8qbGVuKi8sIGNvbnN0IEZvbnQmLCBmbG9hdCAvKnhQb3MqLywgSGFzaFNl
dDxjb25zdCBTaW1wbGVGb250RGF0YSo+KiA9IDAgLypmYWxsYmFja0ZvbnRzKi8gLCBHbHlwaE92
ZXJmbG93KiA9IDApIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGZsb2F0IHdpZHRo
KHVuc2lnbmVkIC8qZnJvbSovLCB1bnNpZ25lZCAvKmxlbiovLCBmbG9hdCAvKnhwb3MqLywgYm9v
bCA9IGZhbHNlIC8qZmlyc3RMaW5lKi8sIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiog
PSAwIC8qZmFsbGJhY2tGb250cyovLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0IHsgcmV0dXJu
IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGE0MTU4
ZjRlMTg3OTQyN2I1YWE4YWY1ZDJkYTMyNDhmZTAwNjUwYjYuLjBlNjUwNTQ3M2JiYjI0MGM2NTJm
ZDYyMzg4MjZhYTZhMTkyMmNlZjAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcApAQCAtMzE4OCw3ICszMTg4LDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6aXNTZWxlY3Rp
b25Sb290KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUdhcFJlY3RzIFJlbmRlckJs
b2NrOjpzZWxlY3Rpb25HYXBSZWN0c0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpCitHYXBSZWN0cyBSZW5kZXJCbG9jazo6c2VsZWN0aW9uR2FwUmVjdHNG
b3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCiB7
CiAgICAgQVNTRVJUKCFuZWVkc0xheW91dCgpKTsKIApAQCAtNjY5OSw3ICs2Njk5LDcgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJv
b2wqIHdhc0ZpeGVkKSBjb25zdAogICAgICAgICBxdWFkcy5hcHBlbmQoUmVuZGVyQm94Ojpsb2Nh
bFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdCgwLCAwLCB3aWR0aCgpLCBoZWlnaHQoKSksIGZhbHNl
LCB3YXNGaXhlZCkpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpyZWN0V2l0aE91dGxp
bmVGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlv
dXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyQmxvY2s6OnJlY3RX
aXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CiB7CiAgICAgTGF5b3V0UmVj
dCByKFJlbmRlckJveDo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVy
LCBvdXRsaW5lV2lkdGgpKTsKICAgICBpZiAoaXNBbm9ueW1vdXNCbG9ja0NvbnRpbnVhdGlvbigp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBhMzFiMjZlZDZlOGY0
MTA2NmI5MTZlMzkyOWIwYmQ3MzM2MTM0ZjdmLi5iNzQwNzMxYzg3YjQ3YjJlNWJhMDk5M2ZmNmVl
OThlM2FkZTNkNjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAt
MjExLDcgKzIxMSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29udGFpbnNOb25aZXJvQmlkaUxl
dmVsKCkgY29uc3Q7CiAKLSAgICBHYXBSZWN0cyBzZWxlY3Rpb25HYXBSZWN0c0ZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpOworICAgIEdhcFJlY3RzIHNl
bGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKTsKICAgICBMYXlvdXRSZWN0IGxvZ2ljYWxMZWZ0U2VsZWN0aW9uR2FwKFJl
bmRlckJsb2NrKiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaW50JiByb290QmxvY2tQaHlzaWNh
bFBvc2l0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdEJsb2NrLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBzZWxPYmosIExh
eW91dFVuaXQgbG9naWNhbExlZnQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBs
b2dpY2FsSGVpZ2h0LCBjb25zdCBQYWludEluZm8qKTsKICAgICBMYXlvdXRSZWN0IGxvZ2ljYWxS
aWdodFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQb2lu
dCYgcm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJv
bVJvb3RCbG9jaywKQEAgLTc4MywxNCArNzgzLDE0IEBAIHByaXZhdGU6CiAgICAgLy8gY2hpbGRy
ZW4uCiAgICAgdmlydHVhbCBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkg
Y29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQo
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBv
dXRsaW5lV2lkdGgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIG91
dGxpbmVTdHlsZUZvclJlcGFpbnQoKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogaG92ZXJBbmNlc3RvcigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEcmFn
U3RhdGUoYm9vbCBkcmFnT24pOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZEJlY2FtZU5vbklubGlu
ZShSZW5kZXJPYmplY3QqIGNoaWxkKTsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rp
b25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
Ym9vbCAvKmNsaXBUb1Zpc2libGVDb250ZW50Ki8pCisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNl
bGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIGJvb2wgLypjbGlwVG9WaXNpYmxlQ29udGVudCovKSBPVkVSUklERQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludChyZXBhaW50Q29udGFp
bmVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGEw
MDU2ZTAzYjc3MzgwZjEyYzhkOWMyYjdjMWIyNTMwMjFmYjAzNjUuLjlhNDA5ODNmZGMxOWRlOWUx
OGYwYTgyZGQ0ZTgxMDQxMmZkNzExNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBSZW5kZXJCb3g6OnN0eWxlV2lsbENoYW5n
ZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWwKIAogdm9p
ZCBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUpCiB7Ci0gICAgLy8gSG9yaXpvbnRhbCB3cml0aW5nIG1vZGUg
ZGVmaW5pdGlvbiBpcyB1cGRhdGVkIGluIFJlbmRlckJveE1vZGVsT2JqZWN0Ojp1cGRhdGVCb3hN
b2RlbEluZm9Gcm9tU3R5bGUsCisgICAgLy8gSG9yaXpvbnRhbCB3cml0aW5nIG1vZGUgZGVmaW5p
dGlvbiBpcyB1cGRhdGVkIGluIFJlbmRlckJveE1vZGVsT2JqZWN0Ojp1cGRhdGVGcm9tU3R5bGUs
CiAgICAgLy8gKGFzIHBhcnQgb2YgdGhlIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzdHlsZURpZENo
YW5nZSBjYWxsIGJlbG93KS4gU28sIHdlIGNhbiBzYWZlbHkgY2FjaGUgdGhlIGhvcml6b250YWwK
ICAgICAvLyB3cml0aW5nIG1vZGUgdmFsdWUgYmVmb3JlIHN0eWxlIGNoYW5nZSBoZXJlLgogICAg
IGJvb2wgb2xkSG9yaXpvbnRhbFdyaXRpbmdNb2RlID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KTsKQEAgLTI4OSw5ICsyODksOSBAQCB2b2lkIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZQogICAgIH0KIH0K
IAotdm9pZCBSZW5kZXJCb3g6OnVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpCit2b2lkIFJl
bmRlckJveDo6dXBkYXRlRnJvbVN0eWxlKCkKIHsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CisgICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnVwZGF0ZUZyb21TdHlsZSgpOwogCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSBzdHls
ZSgpOwogICAgIGJvb2wgaXNSb290T2JqZWN0ID0gaXNSb290KCk7CkBAIC00NjMsNyArNDYzLDcg
QEAgRmxvYXRRdWFkIFJlbmRlckJveDo6YWJzb2x1dGVDb250ZW50UXVhZCgpIGNvbnN0CiAgICAg
cmV0dXJuIGxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KHJlY3QpKTsKIH0KIAotTGF5b3V0
UmVjdCBSZW5kZXJCb3g6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRQb2ludCogY2FjaGVkT2Zmc2V0VG9SZXBhaW50
Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om91dGxpbmVCb3VuZHNGb3JS
ZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91
dFBvaW50KiBjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgTGF5
b3V0UmVjdCBib3ggPSBib3JkZXJCb3VuZGluZ0JveCgpOwogICAgIGFkanVzdFJlY3RGb3JPdXRs
aW5lQW5kU2hhZG93KGJveCk7CkBAIC0xMjYzLDcgKzEyNjMsNyBAQCBMYXlvdXRVbml0IFJlbmRl
ckJveDo6cGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSBjb25zdAog
ICAgIHJldHVybiBjYi0+Y29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWln
aHRMZW5ndGgudmFsdWUoKSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjptYXBMb2NhbFRvQ29udGFp
bmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0
ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBib29sKiB3
YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0
cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09IHRoaXMpCiAgICAgICAg
IHJldHVybjsKQEAgLTEzMjgsNyArMTMyOCw3IEBAIHZvaWQgUmVuZGVyQm94OjptYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuCiAg
ICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0
ZSwgbW9kZSwgd2FzRml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlckJveDo6
cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0
b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAorY29uc3Qg
UmVuZGVyT2JqZWN0KiBSZW5kZXJCb3g6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlN
YXAmIGdlb21ldHJ5TWFwKSBjb25zdAogewogICAgIEFTU0VSVChhbmNlc3RvclRvU3RvcEF0ICE9
IHRoaXMpOwogCkBAIC0xNDgxLDcgKzE0ODEsNyBAQCB2b2lkIFJlbmRlckJveDo6ZGVsZXRlTGlu
ZUJveFdyYXBwZXIoKQogICAgIH0KIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0
CiB7CiAgICAgaWYgKHN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYmICFlbmNsb3Np
bmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVudCgpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVj
dCgpOwpAQCAtMTUwOCw3ICsxNTA4LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW4KICAgICBy
ZXR1cm4gcjsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9v
bCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVj
dCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICAvLyBUaGUgcmVjdCB3ZSBjb21wdXRlIGF0IGVh
Y2ggc3RlcCBpcyBzaGlmdGVkIGJ5IG91ciB4L3kgb2Zmc2V0IGluIHRoZSBwYXJlbnQgY29udGFp
bmVyJ3MgY29vcmRpbmF0ZSBzcGFjZS4KICAgICAvLyBPbmx5IHdoZW4gd2UgY3Jvc3MgYSB3cml0
aW5nIG1vZGUgYm91bmRhcnkgd2lsbCB3ZSBoYXZlIHRvIHBvc3NpYmx5IGZsaXBGb3JXcml0aW5n
TW9kZSAodG8gY29udmVydCBpbnRvIGEgbW9yZSBhcHByb3ByaWF0ZQpAQCAtMzc4Niw3ICszNzg2
LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckJveDo6ZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVy
KCkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIGN1cnIgPSB0aGlzOwogICAgIHdo
aWxlIChjdXJyKSB7Ci0gICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IGN1cnItPmhhc0xheWVy
KCkgJiYgY3Vyci0+aXNCb3goKSA/IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY3VyciktPmxheWVy
KCkgOiAwOworICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBjdXJyLT5oYXNMYXllcigpICYm
IGN1cnItPmlzQm94KCkgPyB0b1JlbmRlckJveChjdXJyKS0+bGF5ZXIoKSA6IDA7CiAgICAgICAg
IGlmIChsYXllciAmJiBsYXllci0+aXNTZWxmUGFpbnRpbmdMYXllcigpKQogICAgICAgICAgICAg
cmV0dXJuIGxheWVyOwogICAgICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggMDBiMDVmNGUxYWYwMTI2ZTJiODQ1ZGU5NjVhYjk3
ZDlmZTc3YjdiMC4uMjg1YmIxYWVlZTYzYTRhOGIyYzg1MDY2ZGU2MGFkNTg3Y2YxMTFkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMTUzLDcgKzE1Myw3IEBAIHB1Ymxp
YzoKICAgICBMYXlvdXRSZWN0IGNvbXB1dGVkQ1NTQ29udGVudEJveFJlY3QoKSBjb25zdCB7IHJl
dHVybiBMYXlvdXRSZWN0KGJvcmRlckxlZnQoKSArIGNvbXB1dGVkQ1NTUGFkZGluZ0xlZnQoKSwg
Ym9yZGVyVG9wKCkgKyBjb21wdXRlZENTU1BhZGRpbmdUb3AoKSwgY2xpZW50V2lkdGgoKSAtIGNv
bXB1dGVkQ1NTUGFkZGluZ0xlZnQoKSAtIGNvbXB1dGVkQ1NTUGFkZGluZ1JpZ2h0KCksIGNsaWVu
dEhlaWdodCgpIC0gY29tcHV0ZWRDU1NQYWRkaW5nVG9wKCkgLSBjb21wdXRlZENTU1BhZGRpbmdC
b3R0b20oKSk7IH0KIAogICAgIC8vIEJvdW5kcyBvZiB0aGUgb3V0bGluZSBib3ggaW4gYWJzb2x1
dGUgY29vcmRzLiBSZXNwZWN0cyB0cmFuc2Zvcm1zCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IG91
dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250
YWluZXIqLywgTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldFRvUmVwYWludENvbnRhaW5lcikgY29u
c3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBMYXlvdXRQb2ludCog
Y2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0
UG9pbnQmKTsKIAogICAgIC8vIFVzZSB0aGlzIHdpdGggY2F1dGlvbiEgTm8gdHlwZSBjaGVja2lu
ZyBpcyBkb25lIQpAQCAtMzEyLDggKzMxMiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElubGlu
ZUJveFdyYXBwZXIoSW5saW5lQm94KiBib3hXcmFwcGVyKSB7IG1faW5saW5lQm94V3JhcHBlciA9
IGJveFdyYXBwZXI7IH0KICAgICB2b2lkIGRlbGV0ZUxpbmVCb3hXcmFwcGVyKCk7CiAKLSAgICB2
aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKGNv
bnN0IExheW91dFJlY3QmKTsKIApAQCAtNTAzLDcgKzUwMyw3IEBAIHByb3RlY3RlZDoKIAogICAg
IHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5k
ZXJTdHlsZSogbmV3U3R5bGUpOwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVGcm9tU3R5bGUoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBiYWNrZ3JvdW5kSXNP
YnNjdXJlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBwYWludEJhY2tncm91
bmQoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUpOwpAQCAtNTIzLDggKzUyMyw4IEBAIHByb3Rl
Y3RlZDoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2Vk
KCkgY29uc3QgeyByZXR1cm4gaXNSZXBsYWNlZCgpICYmICFpc0lubGluZUJsb2NrT3JJbmxpbmVU
YWJsZSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2Nh
bFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRG
b3JUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwotICAgIHZp
cnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0KiwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFn
cyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJv
b2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBSZW5k
ZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCosIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNm
b3JtcywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKIAogICAgIHZvaWQgcGFpbnRSb290Qm94Rmls
bExheWVycyhjb25zdCBQYWludEluZm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGNhZjMyN2IxM2M4NDI3M2JlNzkzNTYy
NTQ0MzQwZjg5MzNiZjc3NTguLjUyNGU0MjZkZDg1YTZmNDU0NWZmNDE5ZDc5ZDE5ZjFlN2Y5YWFk
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcApAQCAtNTIsMTEgKzUyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCi1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzX3dhc0Zs
b2F0aW5nID0gZmFsc2U7Ci1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzX2hhZExheWVyID0g
ZmFsc2U7Ci1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzX2hhZFRyYW5zZm9ybSA9IGZhbHNl
OwotYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c19sYXllcldhc1NlbGZQYWludGluZyA9IGZh
bHNlOwotCiBzdGF0aWMgY29uc3QgZG91YmxlIGNJbnRlcnBvbGF0aW9uQ3V0b2ZmID0gODAwLiAq
IDgwMC47CiBzdGF0aWMgY29uc3QgZG91YmxlIGNMb3dRdWFsaXR5VGltZVRocmVzaG9sZCA9IDAu
NTAwOyAvLyA1MDAgbXMKIApAQCAtMzE2LDE2ICszMTEsMTIgQEAgYm9vbCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBJbWEKIH0KIAogUmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0KE5v
ZGUqIG5vZGUpCi0gICAgOiBSZW5kZXJPYmplY3Qobm9kZSkKLSAgICAsIG1fbGF5ZXIoMCkKKyAg
ICA6IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qobm9kZSkKIHsKIH0KIAogUmVuZGVyQm94TW9k
ZWxPYmplY3Q6On5SZW5kZXJCb3hNb2RlbE9iamVjdCgpCiB7Ci0gICAgLy8gT3VyIGxheWVyIHNo
b3VsZCBoYXZlIGJlZW4gZGVzdHJveWVkIGFuZCBjbGVhcmVkIGJ5IG5vdwotICAgIEFTU0VSVCgh
aGFzTGF5ZXIoKSk7Ci0gICAgQVNTRVJUKCFtX2xheWVyKTsKICAgICBpZiAoZ0ltYWdlUXVhbGl0
eUNvbnRyb2xsZXIpIHsKICAgICAgICAgZ0ltYWdlUXVhbGl0eUNvbnRyb2xsZXItPm9iamVjdERl
c3Ryb3llZCh0aGlzKTsKICAgICAgICAgaWYgKGdJbWFnZVF1YWxpdHlDb250cm9sbGVyLT5pc0Vt
cHR5KCkpIHsKQEAgLTMzNSwxNCArMzI2LDYgQEAgUmVuZGVyQm94TW9kZWxPYmplY3Q6On5SZW5k
ZXJCb3hNb2RlbE9iamVjdCgpCiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpkZXN0cm95TGF5ZXIoKQotewotICAgIEFTU0VSVCghaGFzTGF5ZXIoKSk7IC8vIENhbGxlcnMg
c2hvdWxkIGhhdmUgYWxyZWFkeSBjYWxsZWQgc2V0SGFzTGF5ZXIoZmFsc2UpCi0gICAgQVNTRVJU
KG1fbGF5ZXIpOwotICAgIG1fbGF5ZXItPmRlc3Ryb3kocmVuZGVyQXJlbmEoKSk7Ci0gICAgbV9s
YXllciA9IDA7Ci19Ci0KIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OndpbGxCZURlc3Ryb3ll
ZCgpCiB7CiAgICAgLy8gQSBjb250aW51YXRpb24gb2YgdGhpcyBSZW5kZXJPYmplY3Qgc2hvdWxk
IGJlIGRlc3Ryb3llZCBhdCBzdWJjbGFzc2VzLgpAQCAtMzUzLDEwMyArMzM2LDEzIEBAIHZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpCiAgICAgaWYgKGZpcnN0TGV0
dGVyUmVtYWluaW5nVGV4dCgpKQogICAgICAgICBzZXRGaXJzdExldHRlclJlbWFpbmluZ1RleHQo
MCk7CiAKLSAgICAvLyBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCBjYWxscyBiYWNrIHRv
IGRlc3Ryb3lMYXllcigpIGZvciBsYXllciBkZXN0cnVjdGlvbgotICAgIFJlbmRlck9iamVjdDo6
d2lsbEJlRGVzdHJveWVkKCk7Ci19Ci0KLWJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6Omhhc1Nl
bGZQYWludGluZ0xheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sYXllciAmJiBtX2xheWVy
LT5pc1NlbGZQYWludGluZ0xheWVyKCk7Ci19Ci0KLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUq
IG5ld1N0eWxlKQotewotICAgIHNfd2FzRmxvYXRpbmcgPSBpc0Zsb2F0aW5nKCk7Ci0gICAgc19o
YWRMYXllciA9IGhhc0xheWVyKCk7Ci0gICAgc19oYWRUcmFuc2Zvcm0gPSBoYXNUcmFuc2Zvcm0o
KTsKLSAgICBpZiAoc19oYWRMYXllcikKLSAgICAgICAgc19sYXllcldhc1NlbGZQYWludGluZyA9
IGxheWVyKCktPmlzU2VsZlBhaW50aW5nTGF5ZXIoKTsKLQotICAgIC8vIElmIG91ciB6LWluZGV4
IGNoYW5nZXMgdmFsdWUgb3Igb3VyIHZpc2liaWxpdHkgY2hhbmdlcywKLSAgICAvLyB3ZSBuZWVk
IHRvIGRpcnR5IG91ciBzdGFja2luZyBjb250ZXh0J3Mgei1vcmRlciBsaXN0LgotICAgIFJlbmRl
clN0eWxlKiBvbGRTdHlsZSA9IHN0eWxlKCk7Ci0gICAgaWYgKG9sZFN0eWxlICYmIG5ld1N0eWxl
KSB7Ci0gICAgICAgIGlmIChwYXJlbnQoKSkgewotICAgICAgICAgICAgLy8gRG8gYSByZXBhaW50
IHdpdGggdGhlIG9sZCBzdHlsZSBmaXJzdCwgZS5nLiwgZm9yIGV4YW1wbGUgaWYgd2UgZ28gZnJv
bQotICAgICAgICAgICAgLy8gaGF2aW5nIGFuIG91dGxpbmUgdG8gbm90IGhhdmluZyBhbiBvdXRs
aW5lLgotICAgICAgICAgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlUmVwYWludExheWVy
KSB7Ci0gICAgICAgICAgICAgICAgbGF5ZXIoKS0+cmVwYWludEluY2x1ZGluZ0Rlc2NlbmRhbnRz
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCEob2xkU3R5bGUtPmNsaXAoKSA9PSBuZXdTdHlsZS0+
Y2xpcCgpKSkKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXIoKS0+Y2xlYXJDbGlwUmVjdHNJbmNs
dWRpbmdEZXNjZW5kYW50cygpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChkaWZmID09IFN0eWxl
RGlmZmVyZW5jZVJlcGFpbnQgfHwgbmV3U3R5bGUtPm91dGxpbmVTaXplKCkgPCBvbGRTdHlsZS0+
b3V0bGluZVNpemUoKSkKLSAgICAgICAgICAgICAgICByZXBhaW50KCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dCB8fCBkaWZm
ID09IFN0eWxlRGlmZmVyZW5jZVNpbXBsaWZpZWRMYXlvdXQpIHsKLSAgICAgICAgICAgIC8vIFdo
ZW4gYSBsYXlvdXQgaGludCBoYXBwZW5zLCB3ZSBnbyBhaGVhZCBhbmQgZG8gYSByZXBhaW50IG9m
IHRoZSBsYXllciwgc2luY2UgdGhlIGxheWVyIGNvdWxkCi0gICAgICAgICAgICAvLyBlbmQgdXAg
YmVpbmcgZGVzdHJveWVkLgotICAgICAgICAgICAgaWYgKGhhc0xheWVyKCkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAob2xkU3R5bGUtPnBvc2l0aW9uKCkgIT0gbmV3U3R5bGUtPnBvc2l0aW9uKCkK
LSAgICAgICAgICAgICAgICAgICAgfHwgb2xkU3R5bGUtPnpJbmRleCgpICE9IG5ld1N0eWxlLT56
SW5kZXgoKQotICAgICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+aGFzQXV0b1pJbmRleCgp
ICE9IG5ld1N0eWxlLT5oYXNBdXRvWkluZGV4KCkKLSAgICAgICAgICAgICAgICAgICAgfHwgIShv
bGRTdHlsZS0+Y2xpcCgpID09IG5ld1N0eWxlLT5jbGlwKCkpCi0gICAgICAgICAgICAgICAgICAg
IHx8IG9sZFN0eWxlLT5oYXNDbGlwKCkgIT0gbmV3U3R5bGUtPmhhc0NsaXAoKQotICAgICAgICAg
ICAgICAgICAgICB8fCBvbGRTdHlsZS0+b3BhY2l0eSgpICE9IG5ld1N0eWxlLT5vcGFjaXR5KCkK
LSAgICAgICAgICAgICAgICAgICAgfHwgb2xkU3R5bGUtPnRyYW5zZm9ybSgpICE9IG5ld1N0eWxl
LT50cmFuc2Zvcm0oKQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICAgICAgICAgICAgICAg
ICAgfHwgb2xkU3R5bGUtPmZpbHRlcigpICE9IG5ld1N0eWxlLT5maWx0ZXIoKQotI2VuZGlmCi0g
ICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBsYXllcigpLT5yZXBhaW50SW5j
bHVkaW5nRGVzY2VuZGFudHMoKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3U3R5bGUtPmhh
c1RyYW5zZm9ybSgpIHx8IG5ld1N0eWxlLT5vcGFjaXR5KCkgPCAxIHx8IG5ld1N0eWxlLT5oYXNG
aWx0ZXIoKSkgewotICAgICAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBsYXllciB5
ZXQsIGJ1dCB3ZSBhcmUgZ29pbmcgdG8gZ2V0IG9uZSBiZWNhdXNlIG9mIHRyYW5zZm9ybSBvciBv
cGFjaXR5LAotICAgICAgICAgICAgICAgIC8vICB0aGVuIHdlIG5lZWQgdG8gcmVwYWludCB0aGUg
b2xkIHBvc2l0aW9uIG9mIHRoZSBvYmplY3QuCi0gICAgICAgICAgICAgICAgcmVwYWludCgpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgUmVuZGVyT2JqZWN0OjpzdHls
ZVdpbGxDaGFuZ2UoZGlmZiwgbmV3U3R5bGUpOworICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3Q6OndpbGxCZURlc3Ryb3llZCgpOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKQordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6dXBkYXRlRnJvbVN0eWxlKCkKIHsK
LSAgICBSZW5kZXJPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKLSAgICB1
cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsKLSAgICAKLSAgICBpZiAocmVxdWlyZXNMYXll
cigpKSB7Ci0gICAgICAgIGlmICghbGF5ZXIoKSAmJiBsYXllckNyZWF0aW9uQWxsb3dlZEZvclN1
YnRyZWUoKSkgewotICAgICAgICAgICAgaWYgKHNfd2FzRmxvYXRpbmcgJiYgaXNGbG9hdGluZygp
KQotICAgICAgICAgICAgICAgIHNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAgICAgICAg
ICBtX2xheWVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJMYXllcih0aGlzKTsKLSAgICAg
ICAgICAgIHNldEhhc0xheWVyKHRydWUpOwotICAgICAgICAgICAgbV9sYXllci0+aW5zZXJ0T25s
eVRoaXNMYXllcigpOwotICAgICAgICAgICAgaWYgKHBhcmVudCgpICYmICFuZWVkc0xheW91dCgp
ICYmIGNvbnRhaW5pbmdCbG9jaygpKSB7Ci0gICAgICAgICAgICAgICAgbV9sYXllci0+c2V0UmVw
YWludFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50KTsKLSAgICAgICAgICAgICAgICAvLyBUaGVyZSBp
cyBvbmx5IG9uZSBsYXllciB0byB1cGRhdGUsIGl0IGlzIG5vdCB3b3J0aCB1c2luZyB8Y2FjaGVk
T2Zmc2V0fCBzaW5jZQotICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBub3Qgc3VyZSB0aGUgdmFs
dWUgd2lsbCBiZSB1c2VkLgotICAgICAgICAgICAgICAgIG1fbGF5ZXItPnVwZGF0ZUxheWVyUG9z
aXRpb25zKDApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChsYXll
cigpICYmIGxheWVyKCktPnBhcmVudCgpKSB7Ci0gICAgICAgIHNldEhhc1RyYW5zZm9ybShmYWxz
ZSk7IC8vIEVpdGhlciBhIHRyYW5zZm9ybSB3YXNuJ3Qgc3BlY2lmaWVkIG9yIHRoZSBvYmplY3Qg
ZG9lc24ndCBzdXBwb3J0IHRyYW5zZm9ybXMsIHNvIGp1c3QgbnVsbCBvdXQgdGhlIGJpdC4KLSAg
ICAgICAgc2V0SGFzUmVmbGVjdGlvbihmYWxzZSk7Ci0gICAgICAgIG1fbGF5ZXItPnJlbW92ZU9u
bHlUaGlzTGF5ZXIoKTsgLy8gY2FsbHMgZGVzdHJveUxheWVyKCkgd2hpY2ggY2xlYXJzIG1fbGF5
ZXIKLSAgICAgICAgaWYgKHNfd2FzRmxvYXRpbmcgJiYgaXNGbG9hdGluZygpKQotICAgICAgICAg
ICAgc2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKLSAgICAgICAgaWYgKHNfaGFkVHJhbnNmb3Jt
KQotICAgICAgICAgICAgc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7Ci0gICAg
fQotCi0gICAgaWYgKGxheWVyKCkpIHsKLSAgICAgICAgbGF5ZXIoKS0+c3R5bGVDaGFuZ2VkKGRp
ZmYsIG9sZFN0eWxlKTsKLSAgICAgICAgaWYgKHNfaGFkTGF5ZXIgJiYgbGF5ZXIoKS0+aXNTZWxm
UGFpbnRpbmdMYXllcigpICE9IHNfbGF5ZXJXYXNTZWxmUGFpbnRpbmcpCi0gICAgICAgICAgICBz
ZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUpOwotICAgIH0KLX0KKyAgICBSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0Ojp1cGRhdGVGcm9tU3R5bGUoKTsKIAotdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCkKLXsKICAgICAvLyBTZXQgdGhlIGFwcHJv
cHJpYXRlIGJpdHMgZm9yIGEgYm94IG1vZGVsIG9iamVjdC4gIFNpbmNlIGFsbCBiaXRzIGFyZSBj
bGVhcmVkIGluIHN0eWxlV2lsbENoYW5nZSwKICAgICAvLyB3ZSBvbmx5IGNoZWNrIGZvciBiaXRz
IHRoYXQgY291bGQgcG9zc2libHkgYmUgc2V0IHRvIHRydWUuCiAgICAgUmVuZGVyU3R5bGUqIHN0
eWxlVG9Vc2UgPSBzdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuaAppbmRleCAwNjdmNjA0NmQwOTA4YTk0Yzk3ZThhNDIyZTYwMmNiY2Nh
ZmMxZDkzLi45ZmE1OTA4NzE0YjM1ODQwNzRlNDcxOTg5N2E4N2VkOTcyMDAzN2ZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMjQs
NyArMjQsNyBAQAogI2lmbmRlZiBSZW5kZXJCb3hNb2RlbE9iamVjdF9oCiAjZGVmaW5lIFJlbmRl
ckJveE1vZGVsT2JqZWN0X2gKIAotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUg
IlJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuaCIKICNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgS2V5ZnJhbWVMaXN0
OwogLy8gVGhpcyBjbGFzcyBpcyB0aGUgYmFzZSBmb3IgYWxsIG9iamVjdHMgdGhhdCBhZGhlcmUg
dG8gdGhlIENTUyBib3ggbW9kZWwgYXMgZGVzY3JpYmVkCiAvLyBhdCBodHRwOi8vd3d3LnczLm9y
Zy9UUi9DU1MyMS9ib3guaHRtbAogCi1jbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdCA6IHB1Ymxp
YyBSZW5kZXJPYmplY3QgeworY2xhc3MgUmVuZGVyQm94TW9kZWxPYmplY3QgOiBwdWJsaWMgUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QoTm9kZSopOwogICAgIHZpcnR1YWwgflJlbmRlckJveE1vZGVsT2JqZWN0KCk7CkBAIC03NCwx
MyArNzQsOSBAQCBwdWJsaWM6CiAgICAgaW50IHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCkgY29u
c3Q7CiAgICAgaW50IHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpIGNvbnN0OwogCi0gICAgdmly
dHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0
eWxlKiBuZXdTdHlsZSk7Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlm
ZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZy
b21TdHlsZSgpIE9WRVJSSURFOwogCi0gICAgYm9vbCBoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNv
bnN0OwotICAgIFJlbmRlckxheWVyKiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXI7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGlzUm9vdCgp
IHx8IGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGlzUmVsUG9zaXRpb25lZCgpIHx8IGlzVHJh
bnNwYXJlbnQoKSB8fCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNIaWRkZW5CYWNrZmFjZSgpIHx8IGhh
c01hc2soKSB8fCBoYXNSZWZsZWN0aW9uKCkgfHwgaGFzRmlsdGVyKCkgfHwgc3R5bGUoKS0+c3Bl
Y2lmaWVzQ29sdW1ucygpOyB9CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBpc1Jvb3QoKSB8fCBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8
fCBpc1JlbFBvc2l0aW9uZWQoKSB8fCBpc1RyYW5zcGFyZW50KCkgfHwgaGFzVHJhbnNmb3JtKCkg
fHwgaGFzSGlkZGVuQmFja2ZhY2UoKSB8fCBoYXNNYXNrKCkgfHwgaGFzUmVmbGVjdGlvbigpIHx8
IGhhc0ZpbHRlcigpIHx8IHN0eWxlKCktPnNwZWNpZmllc0NvbHVtbnMoKTsgfQogCiAgICAgLy8g
VGhpcyB3aWxsIHdvcmsgb24gaW5saW5lcyB0byByZXR1cm4gdGhlIGJvdW5kaW5nIGJveCBvZiBh
bGwgb2YgdGhlIGxpbmVzJyBib3JkZXIgYm94ZXMuCiAgICAgdmlydHVhbCBJbnRSZWN0IGJvcmRl
ckJvdW5kaW5nQm94KCkgY29uc3QgPSAwOwpAQCAtMTU2LDkgKzE1Miw2IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29s
IHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3QgT1ZFUlJJREU7CiAKLSAgICAv
LyBDYWxsZWQgYnkgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKSBhbmQgaXMgdGhlIG9u
bHkgd2F5IGxheWVycyBzaG91bGQgZXZlciBiZSBkZXN0cm95ZWQKLSAgICB2b2lkIGRlc3Ryb3lM
YXllcigpOwotCiAgICAgdm9pZCBoaWdoUXVhbGl0eVJlcGFpbnRUaW1lckZpcmVkKFRpbWVyPFJl
bmRlckJveE1vZGVsT2JqZWN0PiopOwogCiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGlvblN0
YXRlKFNlbGVjdGlvblN0YXRlIHMpOwpAQCAtMjk3LDEwICsyOTAsNiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRoaWNrbmVzcywgZmxvYXQgZHJhd1RoaWNr
bmVzcywgQm94U2lkZSwgY29uc3QgUmVuZGVyU3R5bGUqLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb2xvciwgRUJvcmRlclN0eWxlLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJv
b2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7
CiAKLSAgICBmcmllbmQgY2xhc3MgUmVuZGVyVmlldzsKLQotICAgIFJlbmRlckxheWVyKiBtX2xh
eWVyOwotICAgIAogICAgIC8vIFVzZWQgdG8gc3RvcmUgc3RhdGUgYmV0d2VlbiBzdHlsZVdpbGxD
aGFuZ2UgYW5kIHN0eWxlRGlkQ2hhbmdlCiAgICAgc3RhdGljIGJvb2wgc193YXNGbG9hdGluZzsK
ICAgICBzdGF0aWMgYm9vbCBzX2hhZExheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKaW5kZXggZmUxNmI5YjhlNzIzNmMzMDhhNGI3MWFkYWZm
YjI2NTM1NjAyZWFmOC4uMDQ3OWFmMzQyNGQ3YzM0MmYxYTE5M2I3NDE1ODQxMDY5ZGFjN2UyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCkBA
IC0xMjgsNyArMTI4LDcgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6bWFwVG9BYnNvbHV0ZShU
cmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0CiAgICAgdHJhbnNmb3JtU3RhdGUu
ZmxhdHRlbigpOyAgICAKIH0KIAotdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaE1hcHBpbmdz
VG9BbmNlc3Rvcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogYW5jZXN0b3JSZW5kZXJlcikKK3ZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1
c2hNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3Qg
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JSZW5kZXJlcikKIHsKICAgICAvLyBX
ZSBuZWVkIHRvIHB1c2ggbWFwcGluZ3MgaW4gcmV2ZXJzZSBvcmRlciBoZXJlLCBzbyBkbyBpbnNl
cnRpb25zIHJhdGhlciB0aGFuIGFwcGVuZHMuCiAgICAgVGVtcG9yYXJ5Q2hhbmdlPHNpemVfdD4g
cG9zaXRpb25DaGFuZ2UobV9pbnNlcnRpb25Qb3NpdGlvbiwgbV9tYXBwaW5nLnNpemUoKSk7CkBA
IC0xNzIsNyArMTcyLDcgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaE1hcHBpbmdzVG9B
bmNlc3Rvcihjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIGNvbnN0IFIKICAgICAgICAgcHVzaChy
ZW5kZXJlciwgdG9MYXlvdXRTaXplKGxheWVyT2Zmc2V0KSwgLyphY2N1bXVsYXRpbmdUcmFuc2Zv
cm0qLyB0cnVlLCAvKmlzTm9uVW5pZm9ybSovIGZhbHNlLCAvKmlzRml4ZWRQb3NpdGlvbiovIGZh
bHNlLCAvKmhhc1RyYW5zZm9ybSovIGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JSZW5kZXJlciA9IGFuY2VzdG9y
TGF5ZXIgPyBhbmNlc3RvckxheWVyLT5yZW5kZXJlcigpIDogMDsKKyAgICBjb25zdCBSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyID0gYW5jZXN0b3JMYXllciA/IGFu
Y2VzdG9yTGF5ZXItPnJlbmRlcmVyKCkgOiAwOwogICAgIHB1c2hNYXBwaW5nc1RvQW5jZXN0b3Io
cmVuZGVyZXIsIGFuY2VzdG9yUmVuZGVyZXIpOwogfQogCkBAIC0yMTgsNyArMjE4LDcgQEAgdm9p
ZCBSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaFZpZXcoY29uc3QgUmVuZGVyVmlldyogdmlldywgY29u
c3QgTGF5b3V0U2l6ZSYgc2Nyb2wKICAgICBzdGVwSW5zZXJ0ZWQoc3RlcCk7CiB9CiAKLXZvaWQg
UmVuZGVyR2VvbWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogYW5jZXN0b3JSZW5kZXJlcikKK3ZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnBv
cE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNl
c3RvclJlbmRlcmVyKQogewogICAgIEFTU0VSVChtX21hcHBpbmcuc2l6ZSgpKTsKIApAQCAtMjMw
LDcgKzIzMCw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rv
cihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0CiAKIHZvaWQgUmVuZGVyR2VvbWV0
cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JM
YXllcikKIHsKLSAgICBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JSZW5kZXJl
ciA9IGFuY2VzdG9yTGF5ZXIgPyBhbmNlc3RvckxheWVyLT5yZW5kZXJlcigpIDogMDsKKyAgICBj
b25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyID0gYW5jZXN0
b3JMYXllciA/IGFuY2VzdG9yTGF5ZXItPnJlbmRlcmVyKCkgOiAwOwogICAgIHBvcE1hcHBpbmdz
VG9BbmNlc3RvcihhbmNlc3RvclJlbmRlcmVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaAppbmRleCA5OGY0NGM2MzNkYjNlNzlkZmE3ZWM3MmI4
NTg4ODIxNjAwYzhiYmNjLi44ZTAyYWU3NTI3MzhmZTdiYTBmYmMwMDI3ZDc2NDRkNTczN2I0NmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaApAQCAt
NzksOCArNzksOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGJ5IGNvZGUgd2Fsa2luZyB0aGUg
cmVuZGVyZXIgb3IgbGF5ZXIgdHJlZXMuCiAgICAgdm9pZCBwdXNoTWFwcGluZ3NUb0FuY2VzdG9y
KGNvbnN0IFJlbmRlckxheWVyKiwgY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIpOwog
ICAgIHZvaWQgcG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVyKik7Ci0gICAg
dm9pZCBwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyKTsKLSAgICB2b2lkIHBvcE1hcHBp
bmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCopOworICAgIHZvaWQgcHVz
aE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyKTsKKyAgICB2b2lkIHBvcE1hcHBpbmdz
VG9BbmNlc3Rvcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Kik7CiAgICAgCiAgICAg
Ly8gVGhlIGZvbGxvd2luZyBtZXRob2RzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSByZW5kZXJl
cnMgaW5zaWRlIGEgY2FsbCB0byBwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKCkuCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggZDU4YmZjMWFiZDk5YTA1Njcx
MmIzODc5MjAwODliODQwZDQ2ZmI4Yy4uYjM0ZTc0ZDJlZjg1NThmNmQzN2U2NGIwMjM1ZWU0YmVl
ZDcwMmUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAg
LTExOCw5ICsxMTgsOSBAQCBSZW5kZXJJbmxpbmUqIFJlbmRlcklubGluZTo6aW5saW5lRWxlbWVu
dENvbnRpbnVhdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHRvUmVuZGVyQmxvY2soY29udGludWF0
aW9uKS0+aW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpOwogfQogCi12b2lkIFJlbmRlcklubGlu
ZTo6dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCkKK3ZvaWQgUmVuZGVySW5saW5lOjp1cGRh
dGVGcm9tU3R5bGUoKQogewotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0Ojp1cGRhdGVCb3hNb2Rl
bEluZm9Gcm9tU3R5bGUoKTsKKyAgICBSZW5kZXJCb3hNb2RlbE9iamVjdDo6dXBkYXRlRnJvbVN0
eWxlKCk7CiAKICAgICBzZXRJbmxpbmUodHJ1ZSk7IC8vIE5lZWRlZCBmb3IgcnVuLWlucywgc2lu
Y2UgcnVuLWluIGlzIGNvbnNpZGVyZWQgYSBibG9jayBkaXNwbGF5IHR5cGUuCiAKQEAgLTk1OCw3
ICs5NTgsNyBAQCBMYXlvdXRSZWN0IFJlbmRlcklubGluZTo6bGluZXNWaXN1YWxPdmVyZmxvd0Jv
dW5kaW5nQm94KCkgY29uc3QKICAgICByZXR1cm4gcmVjdDsKIH0KIAotTGF5b3V0UmVjdCBSZW5k
ZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgLy8gT25seSBydW4taW5zIGFyZSBhbGxvd2Vk
IGluIGhlcmUgZHVyaW5nIGxheW91dC4KICAgICBBU1NFUlQoIXZpZXcoKSB8fCAhdmlldygpLT5s
YXlvdXRTdGF0ZUVuYWJsZWQoKSB8fCBpc1J1bkluKCkpOwpAQCAtMTAxNiw3ICsxMDE2LDcgQEAg
TGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXAKICAgICByZXR1cm4gcmVwYWludFJlY3Q7CiB9CiAKLUxh
eW91dFJlY3QgUmVuZGVySW5saW5lOjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkg
Y29uc3QKK0xheW91dFJlY3QgUmVuZGVySW5saW5lOjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50
KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQg
b3V0bGluZVdpZHRoKSBjb25zdAogewogICAgIExheW91dFJlY3QgcihSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCBvdXRsaW5l
V2lkdGgpKTsKICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3Vy
cjsgY3VyciA9IGN1cnItPm5leHRTaWJsaW5nKCkpIHsKQEAgLTEwMjYsNyArMTAyNiw3IEBAIExh
eW91dFJlY3QgUmVuZGVySW5saW5lOjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50CiAgICAgcmV0dXJuIHI7CiB9CiAKLXZvaWQgUmVuZGVySW5s
aW5lOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRl
cklubGluZTo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7
CiAgICAgaWYgKFJlbmRlclZpZXcqIHYgPSB2aWV3KCkpIHsKICAgICAgICAgLy8gTGF5b3V0U3Rh
dGUgaXMgb25seSB2YWxpZCBmb3Igcm9vdC1yZWxhdGl2ZSByZXBhaW50aW5nCkBAIC0xMTE2LDcg
KzExMTYsNyBAQCBMYXlvdXRTaXplIFJlbmRlcklubGluZTo6b2Zmc2V0RnJvbUNvbnRhaW5lcihS
ZW5kZXJPYmplY3QqIGNvbnRhaW5lciwgY29uc3QgTGF5bwogICAgIHJldHVybiBvZmZzZXQ7CiB9
CiAKLXZvaWQgUmVuZGVySW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUs
IE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3Zv
aWQgUmVuZGVySW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwg
TWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewog
ICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09IHRoaXMpCiAgICAgICAgIHJldHVybjsKQEAgLTEx
NjgsNyArMTE2OCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUCiAgICAgby0+bWFwTG9jYWxU
b0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4
ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlcklubGluZTo6cHVzaE1hcHBpbmdU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwg
UmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0
KiBSZW5kZXJJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21l
dHJ5TWFwKSBjb25zdAogewogICAgIEFTU0VSVChhbmNlc3RvclRvU3RvcEF0ICE9IHRoaXMpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKaW5kZXggYmI0MzI4OWJlYzFi
OWM0YzI2MmIxZmU1ZTYwMWVmZTdiZGNlMTZiMS4uNTk1ODM3MTJhODBiOGZkNmYxN2JkNWRkNDRh
MzMyYTI5NDA0MDc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApA
QCAtMTMxLDEyICsxMzEsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zm
c2V0V2lkdGgoKSBjb25zdCB7IHJldHVybiBsaW5lc0JvdW5kaW5nQm94KCkud2lkdGgoKTsgfQog
ICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBsaW5l
c0JvdW5kaW5nQm94KCkuaGVpZ2h0KCk7IH0KIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHJlY3RXaXRoT3V0bGluZUZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVu
aXQgb3V0bGluZVdpZHRoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0
JiwgYm9vbCBmaXhlZCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91
dGxpbmVGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkKSBjb25zdCBPVkVSUklERTsK
IAotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWlu
ZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9y
bXMsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBjb25z
dCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFp
bmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRGb3JUcmFuc2Zv
cm1zLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29u
c3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29u
c3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBv
aW50KGNvbnN0IExheW91dFBvaW50Jik7CiAKQEAgLTE2Myw3ICsxNjMsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBhZGREYXNoYm9hcmRSZWdpb25zKFZlY3RvcjxEYXNoYm9hcmRSZWdp
b25WYWx1ZT4mKTsKICNlbmRpZgogICAgIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCb3hNb2Rl
bEluZm9Gcm9tU3R5bGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbVN0eWxlKCkgT1ZF
UlJJREU7CiAgICAgCiAgICAgUmVuZGVySW5saW5lKiBjbG9uZSgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA2NjFkMGViMDgyMGUzOGZmOWRh
OTVhMzU5MWVkNGYwMGZmNzY0NWZiLi43ZDIxMWZjNjE1MGY3YWRkNjk0NTM4NmIxYjg4ZjFiMzc1
YzI1ZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTEz
MSw3ICsxMzEsNyBAQCBib29sIENsaXBSZWN0OjppbnRlcnNlY3RzKGNvbnN0IEhpdFRlc3RQb2lu
dCYgaGl0VGVzdFBvaW50KQogICAgIHJldHVybiBoaXRUZXN0UG9pbnQuaW50ZXJzZWN0cyhtX3Jl
Y3QpOwogfQogCi1SZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlbmRlcmVyKQorUmVuZGVyTGF5ZXI6OlJlbmRlckxheWVyKFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIHJlbmRlcmVyKQogICAgIDogbV9pblJlc2l6ZU1vZGUoZmFsc2UpCiAgICAgLCBtX3Nj
cm9sbERpbWVuc2lvbnNEaXJ0eSh0cnVlKQogICAgICwgbV9ub3JtYWxGbG93TGlzdERpcnR5KHRy
dWUpCkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3Np
dGlvbnMoTGF5b3V0UG9pbnQqIG9mZnNldEZyb21Sb290LCBVcGRhdGVMYXllclAKICAgICAgICAg
Ly8gTGF5b3V0U3RhdGUgb3V0c2lkZSB0aGUgbGF5b3V0KCkgcGhhc2UgYW5kIHVzZSBpdCBoZXJl
LgogICAgICAgICBBU1NFUlQoIXZpZXctPmxheW91dFN0YXRlRW5hYmxlZCgpKTsKIAotICAgICAg
ICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNv
bnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICAgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsKICAg
ICAgICAgTGF5b3V0UmVjdCBvbGRSZXBhaW50UmVjdCA9IG1fcmVwYWludFJlY3Q7CiAgICAgICAg
IExheW91dFJlY3Qgb2xkT3V0bGluZUJveCA9IG1fb3V0bGluZUJveDsKICAgICAgICAgY29tcHV0
ZVJlcGFpbnRSZWN0cyhvZmZzZXRGcm9tUm9vdCk7CkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6Y29tcHV0ZVJlcGFpbnRSZWN0cyhMYXlvdXRQb2ludCogb2Zmc2V0RnJvbVJv
b3QpCiB7CiAgICAgQVNTRVJUKCFtX3Zpc2libGVDb250ZW50U3RhdHVzRGlydHkpOwogCi0gICAg
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSByZW5kZXJlcigpLT5jb250
YWluZXJGb3JSZXBhaW50KCk7CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWlu
dENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsKICAgICBtX3Jl
cGFpbnRSZWN0ID0gcmVuZGVyZXIoKS0+Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVw
YWludENvbnRhaW5lcik7CiAgICAgbV9vdXRsaW5lQm94ID0gcmVuZGVyZXIoKS0+b3V0bGluZUJv
dW5kc0ZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgb2Zmc2V0RnJvbVJvb3QpOwogfQpAQCAt
NjA1LDEwICs2MDUsMTAgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUmVuZGVyTGF5ZXI6OnJlbmRl
cmFibGVUcmFuc2Zvcm0oUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW8KICAgICByZXR1cm4gKm1f
dHJhbnNmb3JtOwogfQogCi1zdGF0aWMgYm9vbCBjaGVja0NvbnRhaW5pbmdCbG9ja0NoYWluRm9y
UGFnaW5hdGlvbihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIsIFJlbmRlckJveCogYW5j
ZXN0b3JDb2x1bW5zUmVuZGVyZXIpCitzdGF0aWMgYm9vbCBjaGVja0NvbnRhaW5pbmdCbG9ja0No
YWluRm9yUGFnaW5hdGlvbihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZW5kZXJlciwgUmVu
ZGVyQm94KiBhbmNlc3RvckNvbHVtbnNSZW5kZXJlcikKIHsKICAgICBSZW5kZXJWaWV3KiB2aWV3
ID0gcmVuZGVyZXItPnZpZXcoKTsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcHJldkJsb2Nr
ID0gcmVuZGVyZXI7CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcHJldkJsb2NrID0g
cmVuZGVyZXI7CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jazsKICAgICBmb3IgKGNv
bnRhaW5pbmdCbG9jayA9IHJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgIGNv
bnRhaW5pbmdCbG9jayAmJiBjb250YWluaW5nQmxvY2sgIT0gdmlldyAmJiBjb250YWluaW5nQmxv
Y2sgIT0gYW5jZXN0b3JDb2x1bW5zUmVuZGVyZXI7CkBAIC04NjksNyArODY5LDcgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbigpCiAgICAgfQogICAgICAgICAKICAgICBp
ZiAocmVuZGVyZXIoKS0+aXNSZWxQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgbV9yZWxhdGl2ZU9m
ZnNldCA9IHJlbmRlcmVyKCktPnJlbGF0aXZlUG9zaXRpb25PZmZzZXQoKTsKKyAgICAgICAgbV9y
ZWxhdGl2ZU9mZnNldCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIoKSktPnJlbGF0
aXZlUG9zaXRpb25PZmZzZXQoKTsKICAgICAgICAgbG9jYWxQb2ludC5tb3ZlKG1fcmVsYXRpdmVP
ZmZzZXQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fcmVsYXRpdmVPZmZzZXQgPSBMYXlvdXRT
aXplKCk7CkBAIC05MzIsNyArOTMyLDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpzdGFj
a2luZ0NvbnRleHQoKSBjb25zdAogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNQb3NpdGlvbmVkQ29u
dGFpbmVyKFJlbmRlckxheWVyKiBsYXllcikKIHsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCog
bGF5ZXJSZW5kZXJlciA9IGxheWVyLT5yZW5kZXJlcigpOworICAgIFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIGxheWVyUmVuZGVyZXIgPSBsYXllci0+cmVuZGVyZXIoKTsKICAgICByZXR1cm4g
bGF5ZXItPmlzUm9vdExheWVyKCkgfHwgbGF5ZXJSZW5kZXJlci0+aXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkgfHwgbGF5ZXJSZW5kZXJlci0+aXNSZWxQb3NpdGlvbmVkKCkgfHwgbGF5ZXItPmhhc1Ry
YW5zZm9ybSgpOwogfQogCkBAIC0xMTEwLDcgKzExMTAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpz
ZXRGaWx0ZXJCYWNrZW5kTmVlZHNSZXBhaW50aW5nSW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHJl
Y3QsCiBib29sIFJlbmRlckxheWVyOjpoYXNBbmNlc3RvcldpdGhGaWx0ZXJPdXRzZXRzKCkgY29u
c3QKIHsKICAgICBmb3IgKGNvbnN0IFJlbmRlckxheWVyKiBjdXJyID0gdGhpczsgY3VycjsgY3Vy
ciA9IGN1cnItPnBhcmVudCgpKSB7Ci0gICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5k
ZXJlciA9IGN1cnItPnJlbmRlcmVyKCk7CisgICAgICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3QqIHJlbmRlcmVyID0gY3Vyci0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyLT5z
dHlsZSgpLT5oYXNGaWx0ZXJPdXRzZXRzKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CkBAIC0xNjkwLDcgKzE2OTAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUbyhpbnQg
eCwgaW50IHkpCiAKICAgICB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsKCk7CiAK
LSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCkt
PmNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOwogICAg
IEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCk7CiAgICAgaWYgKGZyYW1lKSB7CiAg
ICAgICAgIC8vIFRoZSBjYXJldCByZWN0IG5lZWRzIHRvIGJlIGludmFsaWRhdGVkIGFmdGVyIHNj
cm9sbGluZwpAQCAtNDc1Nyw3ICs0NzU3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0QmFja2lu
Z05lZWRzUmVwYWludEluUmVjdChjb25zdCBMYXlvdXRSZWN0JiByKQogfQogCiAvLyBTaW5jZSB3
ZSdyZSBvbmx5IHBhaW50aW5nIG5vbi1jb21wb3NpdGVkIGxheWVycywgd2Uga25vdyB0aGF0IHRo
ZXkgYWxsIHNoYXJlIHRoZSBzYW1lIHJlcGFpbnRDb250YWluZXIuCi12b2lkIFJlbmRlckxheWVy
OjpyZXBhaW50SW5jbHVkaW5nTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lcikKK3ZvaWQgUmVuZGVyTGF5ZXI6OnJlcGFpbnRJbmNs
dWRpbmdOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRzKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpCiB7CiAgICAgcmVuZGVyZXIoKS0+cmVwYWludFVzaW5nQ29udGFp
bmVyKHJlcGFpbnRDb250YWluZXIsIHJlbmRlcmVyKCktPmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KHJlcGFpbnRDb250YWluZXIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaAppbmRleCAwMGM1YzE5ZDI0NGRjNTJmZTFhY2JkNzQxMzMxNGYwZjNjNWFiZDhkLi43
YjA0Zjk4MDYxZjc5NGQ3ZjQ1NDg3MGRjMDI1YTkyZDg5MGQyMGNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMjQ1LDEwICsyNDUsMTAgQEAgY2xhc3MgUmVuZGVy
TGF5ZXIgOiBwdWJsaWMgU2Nyb2xsYWJsZUFyZWEgewogcHVibGljOgogICAgIGZyaWVuZCBjbGFz
cyBSZW5kZXJSZXBsaWNhOwogCi0gICAgUmVuZGVyTGF5ZXIoUmVuZGVyQm94TW9kZWxPYmplY3Qq
KTsKKyAgICBSZW5kZXJMYXllcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Kik7CiAgICAgflJl
bmRlckxheWVyKCk7CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIoKSBjb25z
dCB7IHJldHVybiBtX3JlbmRlcmVyOyB9CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyOyB9CiAgICAgUmVuZGVyQm94KiBy
ZW5kZXJCb3goKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyICYmIG1fcmVuZGVyZXItPmlzQm94
KCkgPyB0b1JlbmRlckJveChtX3JlbmRlcmVyKSA6IDA7IH0KICAgICBSZW5kZXJMYXllciogcGFy
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAgICBSZW5kZXJMYXllciogcHJldmlv
dXNTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91czsgfQpAQCAtMjY5LDcgKzI2OSw3
IEBAIHB1YmxpYzoKICAgICAvLyBpZiBsYXllciBjb21wb3NpdGluZyBpcyBiZWluZyB1c2VkLAog
ICAgIHZvaWQgc2V0QmFja2luZ05lZWRzUmVwYWludCgpOwogICAgIHZvaWQgc2V0QmFja2luZ05l
ZWRzUmVwYWludEluUmVjdChjb25zdCBMYXlvdXRSZWN0Jik7IC8vIHIgaXMgaW4gdGhlIGNvb3Jk
aW5hdGUgc3BhY2Ugb2YgdGhlIGxheWVyJ3MgcmVuZGVyIG9iamVjdAotICAgIHZvaWQgcmVwYWlu
dEluY2x1ZGluZ05vbkNvbXBvc2l0aW5nRGVzY2VuZGFudHMoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpOworICAgIHZvaWQgcmVwYWludEluY2x1ZGluZ05vbkNvbXBvc2l0
aW5nRGVzY2VuZGFudHMoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
cik7CiAjZW5kaWYKIAogICAgIHZvaWQgc3R5bGVDaGFuZ2VkKFN0eWxlRGlmZmVyZW5jZSwgY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKQEAgLTg2Nyw3ICs4NjcsNyBAQCBwcml2YXRlOgog
CiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlckxheWVyQmFja2luZzsKICAgICBmcmllbmQgY2xhc3Mg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOwotICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJCb3hNb2RlbE9i
amVjdDsKKyAgICBmcmllbmQgY2xhc3MgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDsKIAogICAg
IC8vIE9ubHkgc2FmZSB0byBjYWxsIGZyb20gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlc3Ryb3lM
YXllcihSZW5kZXJBcmVuYSopCiAgICAgdm9pZCBkZXN0cm95KFJlbmRlckFyZW5hKik7CkBAIC05
MzksNyArOTM5LDcgQEAgcHJvdGVjdGVkOgogICAgIEJsZW5kTW9kZSBtX2JsZW5kTW9kZTsKICNl
bmRpZgogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogbV9yZW5kZXJlcjsKIAogICAgIFJlbmRlckxheWVyKiBtX3Bh
cmVudDsKICAgICBSZW5kZXJMYXllciogbV9wcmV2aW91czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAppbmRleCBmMTA3ZGMyNzkwMWZlYTFjZWE1NTZl
MmRiNGE0OTI0MzBjNjU0NTFjLi45NDdhNmMwNjBlMWU3ZjQ0MGI2YWI2YmE5MzRkZmU0YmMyNTUy
Yjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5o
CkBAIC0xNzUsNyArMTc1LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBQYXNzT3duUHRyPEdyYXBo
aWNzTGF5ZXI+IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoY29uc3QgU3RyaW5nJik7CiAKLSAgICBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX293bmluZ0xheWVy
LT5yZW5kZXJlcigpOyB9CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVuZGVyZXIo
KSBjb25zdCB7IHJldHVybiBtX293bmluZ0xheWVyLT5yZW5kZXJlcigpOyB9CiAgICAgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yKiBjb21wb3NpdG9yKCkgY29uc3QgeyByZXR1cm4gbV9vd25pbmdMYXll
ci0+Y29tcG9zaXRvcigpOyB9CiAKICAgICB2b2lkIHVwZGF0ZUludGVybmFsSGllcmFyY2h5KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCmluZGV4IDcyYmE0YzJmOGZiYThmMWU3ZDU3N2Q3MTAzMWUwN2M5YmY2MTM1MzAuLmVjMzVm
NGEyOTBmN2RiMWNmNjU3MmJjNTYyMDhhZjQ4NGE3NWY1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC01MDcsNyArNTA3
LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcoUmVuZGVyTGF5
ZXIqIGxheWVyLCBDb21wb3NpdGluZ0NoYW5nZVIKICAgICAgICAgICAgIC8vIGl0cyByZXBsaWNh
IEdyYXBoaWNzTGF5ZXIuIEluIHByYWN0aWNlIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBiZWNh
dXNlIHJlZmxlY3RlZSBhbmQgcmVmbGVjdGlvbiAKICAgICAgICAgICAgIC8vIGFyZSBib3RoIGVp
dGhlciBjb21wb3NpdGVkLCBvciBub3QgY29tcG9zaXRlZC4KICAgICAgICAgICAgIGlmIChsYXll
ci0+aXNSZWZsZWN0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogc291cmNl
TGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGxheWVyLT5yZW5kZXJlcigpLT5wYXJlbnQo
KSktPmxheWVyKCk7CisgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIHNvdXJjZUxheWVyID0g
dG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KGxheWVyLT5yZW5kZXJlcigpLT5wYXJlbnQoKSkt
PmxheWVyKCk7CiAgICAgICAgICAgICAgICAgaWYgKFJlbmRlckxheWVyQmFja2luZyogYmFja2lu
ZyA9IHNvdXJjZUxheWVyLT5iYWNraW5nKCkpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+cmVwbGljYUxheWVyKCkgPT0gbGF5ZXItPmJhY2tp
bmcoKS0+Z3JhcGhpY3NMYXllcigpKTsKICAgICAgICAgICAgICAgICAgICAgYmFja2luZy0+Z3Jh
cGhpY3NMYXllcigpLT5zZXRSZXBsaWNhdGVkQnlMYXllcigwKTsKQEAgLTU3MCw3ICs1NzAsNyBA
QCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVwYWludE9uQ29tcG9zaXRpbmdDaGFuZ2Uo
UmVuZGVyTGF5ZXIqIGxheWVyKQogICAgIGlmIChsYXllci0+cmVuZGVyZXIoKSAhPSBtX3JlbmRl
clZpZXcgJiYgIWxheWVyLT5yZW5kZXJlcigpLT5wYXJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBsYXllci0+cmVu
ZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOworICAgIFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBsYXllci0+cmVuZGVyZXIoKS0+Y29udGFpbmVyRm9y
UmVwYWludCgpOwogICAgIGlmICghcmVwYWludENvbnRhaW5lcikKICAgICAgICAgcmVwYWludENv
bnRhaW5lciA9IG1fcmVuZGVyVmlldzsKIApAQCAtMTQzMiw3ICsxNDMyLDcgQEAgYm9vbCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJM
YXllciogbGF5ZXIpIGMKICAgICAvLyBUaGUgY29tcG9zaXRpbmcgc3RhdGUgb2YgYSByZWZsZWN0
aW9uIHNob3VsZCBtYXRjaCB0aGF0IG9mIGl0cyByZWZsZWN0ZWQgbGF5ZXIuCiAgICAgaWYgKGxh
eWVyLT5pc1JlZmxlY3Rpb24oKSkgewogICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJl
bnQoKTsgLy8gVGhlIFJlbmRlclJlcGxpY2EncyBwYXJlbnQgaXMgdGhlIG9iamVjdCBiZWluZyBy
ZWZsZWN0ZWQuCi0gICAgICAgIGxheWVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJl
ciktPmxheWVyKCk7CisgICAgICAgIGxheWVyID0gdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KHJlbmRlcmVyKS0+bGF5ZXIoKTsKICAgICB9CiAgICAgLy8gVGhlIHJvb3QgbGF5ZXIgYWx3YXlz
IGhhcyBhIGNvbXBvc2l0aW5nIGxheWVyLCBidXQgaXQgbWF5IG5vdCBoYXZlIGJhY2tpbmcuCiAg
ICAgcmV0dXJuIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JUcmFuc2Zvcm0ocmVuZGVyZXIpCkBAIC0x
NDk3LDcgKzE0OTcsNyBAQCBjb25zdCBjaGFyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNv
bkZvckNvbXBvc2l0aW5nKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcgogICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBsYXllci0+cmVuZGVyZXIoKTsKICAgICBpZiAobGF5ZXItPmlzUmVmbGVj
dGlvbigpKSB7CiAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOwotICAgICAg
ICBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpLT5sYXllcigpOworICAg
ICAgICBsYXllciA9IHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdChyZW5kZXJlciktPmxheWVy
KCk7CiAgICAgfQogCiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JUcmFuc2Zvcm0ocmVu
ZGVyZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RN
YXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3Bw
CmluZGV4IDA0ZDg2MzJhODE5Zjg5ZWUxOTQ5NjA5NGNiMjFmMTdmNGE2NzRiNGMuLjE4ZjczNzNl
NDkyZWUzYjA2YzFhNGVlMjcyNDExNDUxMDc1M2UzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAgLTE3MDMsNyArMTcwMyw3IEBAIHZvaWQg
UmVuZGVyTGlzdE1hcmtlcjo6c2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgc3RhdGUp
CiAgICAgICAgICAgICByb290LT5zZXRIYXNTZWxlY3RlZENoaWxkcmVuKHN0YXRlICE9IFNlbGVj
dGlvbk5vbmUpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlckxpc3RNYXJrZXI6OnNlbGVjdGlvblJl
Y3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29s
IGNsaXBUb1Zpc2libGVDb250ZW50KQorTGF5b3V0UmVjdCBSZW5kZXJMaXN0TWFya2VyOjpzZWxl
Y3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KQogewogICAgIEFTU0VSVCghbmVlZHNM
YXlvdXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5o
CmluZGV4IGQ4OGQ5MjJiMGU0MjgzY2NhNDU2MDM1ZjRlZWIxMTdkODJjOGY1MmQuLmIyZjUyNWFm
ZDdkN2JmZGJkZTNhNjUxY2I5YmMzMWYyMDQ2MjJjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gIWlzSW1hZ2UoKTsgfQogCiAgICAgdmlydHVh
bCB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlKTsKLSAgICB2aXJ0dWFsIExh
eW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKTsKKyAgICB2
aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9
IHRydWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHVwZGF0ZU1hcmdpbnMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMzkxYzExOTg4NmE1NjQz
MzhjN2QxZGYxZDdmMzFlMGY3MzcyM2E0OS4uNjA0Y2Q4NDdlOWFiZmE1NDdhYzk1NjQ1YTJmYTdl
YjY0NGVlMWRkYSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
QEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6YWRkQ2hpbGQoUmVuZGVyT2Jq
ZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKICAgICAvLyBUbyBhdm9p
ZCB0aGUgcHJvYmxlbSBhbGx0b2dldGhlciwgZGV0ZWN0IGVhcmx5IGlmIHdlJ3JlIGluc2lkZSBh
IGhpZGRlbiBTVkcgc3VidHJlZQogICAgIC8vIGFuZCBzdG9wIGNyZWF0aW5nIGxheWVycyBhdCBh
bGwgZm9yIHRoZXNlIGNhc2VzIC0gdGhleSdyZSBub3QgdXNlZCBhbnl3YXlzLgogICAgIGlmIChu
ZXdDaGlsZC0+aGFzTGF5ZXIoKSAmJiAhbGF5ZXJDcmVhdGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkp
Ci0gICAgICAgIHRvUmVuZGVyQm94TW9kZWxPYmplY3QobmV3Q2hpbGQpLT5sYXllcigpLT5yZW1v
dmVPbmx5VGhpc0xheWVyKCk7CisgICAgICAgIHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdChu
ZXdDaGlsZCktPmxheWVyKCktPnJlbW92ZU9ubHlUaGlzTGF5ZXIoKTsKIH0KIAogdm9pZCBSZW5k
ZXJPYmplY3Q6OnJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCogb2xkQ2hpbGQpCkBAIC00MzIsNyAr
NDMyLDcgQEAgc3RhdGljIHZvaWQgYWRkTGF5ZXJzKFJlbmRlck9iamVjdCogb2JqLCBSZW5kZXJM
YXllciogcGFyZW50TGF5ZXIsIFJlbmRlck9iamVjdCoKICAgICAgICAgICAgIGJlZm9yZUNoaWxk
ID0gbmV3T2JqZWN0LT5wYXJlbnQoKS0+ZmluZE5leHRMYXllcihwYXJlbnRMYXllciwgbmV3T2Jq
ZWN0KTsKICAgICAgICAgICAgIG5ld09iamVjdCA9IDA7CiAgICAgICAgIH0KLSAgICAgICAgcGFy
ZW50TGF5ZXItPmFkZENoaWxkKHRvUmVuZGVyQm94TW9kZWxPYmplY3Qob2JqKS0+bGF5ZXIoKSwg
YmVmb3JlQ2hpbGQpOworICAgICAgICBwYXJlbnRMYXllci0+YWRkQ2hpbGQodG9SZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KG9iaiktPmxheWVyKCksIGJlZm9yZUNoaWxkKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpyZW1v
dmVMYXllcnMoUmVuZGVyTGF5ZXIqIHBhcmVudExheWVyKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoaGFzTGF5ZXIoKSkgewotICAgICAgICBwYXJlbnRMYXllci0+cmVtb3ZlQ2hpbGQodG9S
ZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKSk7CisgICAgICAgIHBhcmVudExheWVy
LT5yZW1vdmVDaGlsZCh0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NzAsNyArNDcwLDcgQEAgdm9pZCBSZW5k
ZXJPYmplY3Q6Om1vdmVMYXllcnMoUmVuZGVyTGF5ZXIqIG9sZFBhcmVudCwgUmVuZGVyTGF5ZXIq
IG5ld1BhcmVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc0xheWVyKCkpIHsKLSAg
ICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+
bGF5ZXIoKTsKKyAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gdG9SZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KHRoaXMpLT5sYXllcigpOwogICAgICAgICBBU1NFUlQob2xkUGFyZW50ID09IGxh
eWVyLT5wYXJlbnQoKSk7CiAgICAgICAgIGlmIChvbGRQYXJlbnQpCiAgICAgICAgICAgICBvbGRQ
YXJlbnQtPnJlbW92ZUNoaWxkKGxheWVyKTsKQEAgLTQ5MCw3ICs0OTAsNyBAQCBSZW5kZXJMYXll
ciogUmVuZGVyT2JqZWN0OjpmaW5kTmV4dExheWVyKFJlbmRlckxheWVyKiBwYXJlbnRMYXllciwg
UmVuZGVyT2JqZWN0KgogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIFN0ZXAgMTogSWYgb3Vy
IGxheWVyIGlzIGEgY2hpbGQgb2YgdGhlIGRlc2lyZWQgcGFyZW50LCB0aGVuIHJldHVybiBvdXIg
bGF5ZXIuCi0gICAgUmVuZGVyTGF5ZXIqIG91ckxheWVyID0gaGFzTGF5ZXIoKSA/IHRvUmVuZGVy
Qm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCkgOiAwOworICAgIFJlbmRlckxheWVyKiBvdXJM
YXllciA9IGhhc0xheWVyKCkgPyB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxh
eWVyKCkgOiAwOwogICAgIGlmIChvdXJMYXllciAmJiBvdXJMYXllci0+cGFyZW50KCkgPT0gcGFy
ZW50TGF5ZXIpCiAgICAgICAgIHJldHVybiBvdXJMYXllcjsKIApAQCAtNTIyLDcgKzUyMiw3IEBA
IFJlbmRlckxheWVyKiBSZW5kZXJPYmplY3Q6OmVuY2xvc2luZ0xheWVyKCkgY29uc3QKIHsKICAg
ICBjb25zdCBSZW5kZXJPYmplY3QqIGN1cnIgPSB0aGlzOwogICAgIHdoaWxlIChjdXJyKSB7Ci0g
ICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IGN1cnItPmhhc0xheWVyKCkgPyB0b1JlbmRlckJv
eE1vZGVsT2JqZWN0KGN1cnIpLT5sYXllcigpIDogMDsKKyAgICAgICAgUmVuZGVyTGF5ZXIqIGxh
eWVyID0gY3Vyci0+aGFzTGF5ZXIoKSA/IHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdChjdXJy
KS0+bGF5ZXIoKSA6IDA7CiAgICAgICAgIGlmIChsYXllcikKICAgICAgICAgICAgIHJldHVybiBs
YXllcjsKICAgICAgICAgY3VyciA9IGN1cnItPnBhcmVudCgpOwpAQCAtNzE4LDEzICs3MTgsMTMg
QEAgdm9pZCBSZW5kZXJPYmplY3Q6OmludmFsaWRhdGVDb250YWluZXJQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzKCkKIHZvaWQgUmVuZGVyT2JqZWN0OjpzZXRMYXllck5lZWRzRnVsbFJlcGFpbnQoKQog
ewogICAgIEFTU0VSVChoYXNMYXllcigpKTsKLSAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRo
aXMpLT5sYXllcigpLT5zZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnQpOworICAgIHRv
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1
cyhOZWVkc0Z1bGxSZXBhaW50KTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OnNldExheWVyTmVl
ZHNGdWxsUmVwYWludEZvclBvc2l0aW9uZWRNb3ZlbWVudExheW91dCgpCiB7CiAgICAgQVNTRVJU
KGhhc0xheWVyKCkpOwotICAgIHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCkt
PnNldFJlcGFpbnRTdGF0dXMoTmVlZHNGdWxsUmVwYWludEZvclBvc2l0aW9uZWRNb3ZlbWVudExh
eW91dCk7CisgICAgdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KHRoaXMpLT5sYXllcigpLT5z
ZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnRGb3JQb3NpdGlvbmVkTW92ZW1lbnRMYXlv
dXQpOwogfQogCiBSZW5kZXJCbG9jayogUmVuZGVyT2JqZWN0Ojpjb250YWluaW5nQmxvY2soKSBj
b25zdApAQCAtMTI0MywxMyArMTI0MywxMyBAQCB2b2lkIFJlbmRlck9iamVjdDo6cGFpbnQoUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKQogewogfQogCi1SZW5kZXJCb3hNb2RlbE9iamVj
dCogUmVuZGVyT2JqZWN0Ojpjb250YWluZXJGb3JSZXBhaW50KCkgY29uc3QKK1JlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyRm9yUmVwYWludCgpIGNvbnN0
CiB7CiAgICAgUmVuZGVyVmlldyogdiA9IHZpZXcoKTsKICAgICBpZiAoIXYpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
ID0gMDsKKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0g
MDsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAodi0+dXNlc0Nv
bXBvc2l0aW5nKCkpIHsKQEAgLTEyNzksNyArMTI3OSw3IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0
KiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5lckZvclJlcGFpbnQoKSBjb25zdAogICAgIHJldHVybiBy
ZXBhaW50Q29udGFpbmVyOwogfQogCi12b2lkIFJlbmRlck9iamVjdDo6cmVwYWludFVzaW5nQ29u
dGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlv
dXRSZWN0JiByLCBib29sIGltbWVkaWF0ZSkKK3ZvaWQgUmVuZGVyT2JqZWN0OjpyZXBhaW50VXNp
bmdDb250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UmVjdCYgciwgYm9vbCBpbW1lZGlhdGUpCiB7CiAgICAgaWYgKCFyZXBhaW50
Q29udGFpbmVyKSB7CiAgICAgICAgIHZpZXcoKS0+cmVwYWludFZpZXdSZWN0YW5nbGUociwgaW1t
ZWRpYXRlKTsKQEAgLTEzMzIsNyArMTMzMiw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpyZXBhaW50
KGJvb2wgaW1tZWRpYXRlKQogICAgIGlmICh2aWV3LT5wcmludGluZygpKQogICAgICAgICByZXR1
cm47IC8vIERvbid0IHJlcGFpbnQgaWYgd2UncmUgcHJpbnRpbmcuCiAKLSAgICBSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IGNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAg
ICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gY29udGFpbmVy
Rm9yUmVwYWludCgpOwogICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVy
ID8gcmVwYWludENvbnRhaW5lciA6IHZpZXcsIGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KHJlcGFpbnRDb250YWluZXIpLCBpbW1lZGlhdGUpOwogfQogCkBAIC0xMzUyLDcgKzEzNTIsNyBA
QCB2b2lkIFJlbmRlck9iamVjdDo6cmVwYWludFJlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JiBy
LCBib29sIGltbWVkaWF0ZSkKICAgICAvLyByZXBhaW50IGNvbnRhaW5lcnMuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwOAogICAgIGRpcnR5UmVjdC5tb3ZlKHZp
ZXctPmxheW91dERlbHRhKCkpOwogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIgPSBjb250YWluZXJGb3JSZXBhaW50KCk7CisgICAgUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogcmVwYWludENvbnRhaW5lciA9IGNvbnRhaW5lckZvclJlcGFpbnQoKTsKICAgICBj
b21wdXRlUmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgZGlydHlSZWN0KTsKICAgICBy
ZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciA/IHJlcGFpbnRDb250YWluZXIg
OiB2aWV3LCBkaXJ0eVJlY3QsIGltbWVkaWF0ZSk7CiB9CkBAIC0xMzYyLDcgKzEzNjIsNyBAQCBJ
bnRSZWN0IFJlbmRlck9iamVjdDo6cGl4ZWxTbmFwcGVkQWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dS
ZWN0KCkgY29uc3QKICAgICByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChhYnNvbHV0ZUNsaXBw
ZWRPdmVyZmxvd1JlY3QoKSk7CiB9CiAKLWJvb2wgUmVuZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJM
YXlvdXRJZk5lZWRlZChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29u
c3QgTGF5b3V0UmVjdCYgb2xkQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRPdXRsaW5lQm94
LCBjb25zdCBMYXlvdXRSZWN0KiBuZXdCb3VuZHNQdHIsIGNvbnN0IExheW91dFJlY3QqIG5ld091
dGxpbmVCb3hSZWN0UHRyKQorYm9vbCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRBZnRlckxheW91dElm
TmVlZGVkKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0
IExheW91dFJlY3QmIG9sZEJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgb2xkT3V0bGluZUJveCwg
Y29uc3QgTGF5b3V0UmVjdCogbmV3Qm91bmRzUHRyLCBjb25zdCBMYXlvdXRSZWN0KiBuZXdPdXRs
aW5lQm94UmVjdFB0cikKIHsKICAgICBSZW5kZXJWaWV3KiB2ID0gdmlldygpOwogICAgIGlmICh2
LT5wcmludGluZygpKQpAQCAtMTQ4MywyMCArMTQ4MywyMCBAQCBib29sIFJlbmRlck9iamVjdDo6
Y2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkgY29uc3QKICAgICByZXR1cm4gIWRvY3VtZW50
KCktPnZpZXcoKS0+bmVlZHNGdWxsUmVwYWludCgpICYmICFoYXNMYXllcigpICYmIGV2ZXJIYWRM
YXlvdXQoKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnJlY3RXaXRoT3V0bGluZUZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVu
aXQgb3V0bGluZVdpZHRoKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnJlY3RXaXRo
T3V0bGluZUZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRh
aW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCBy
KGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpKTsKICAgICBy
LmluZmxhdGUob3V0bGluZVdpZHRoKTsKICAgICByZXR1cm4gcjsKIH0KIAotTGF5b3V0UmVjdCBS
ZW5kZXJPYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KikgY29uc3QKIHsKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwogfQogCi12b2lk
IFJlbmRlck9iamVjdDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAor
dm9pZCBSZW5kZXJPYmplY3Q6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVk
KSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09IHRoaXMpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE1MjcsNyArMTUyNyw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVj
dEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsCiAgICAg
fQogfQogCi12b2lkIFJlbmRlck9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqLCBGbG9hdFJlY3QmLCBib29sKSBjb25zdAordm9pZCBSZW5kZXJP
YmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3QqLCBGbG9hdFJlY3QmLCBib29sKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQpAQCAtMTY4OCw3ICsxNjg4LDcgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlck9iamVjdDo6
YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCB1bnNpZ24KICAgICAg
ICAgLy8gVGV4dCBub2RlcyBzaGFyZSBzdHlsZSB3aXRoIHRoZWlyIHBhcmVudHMgYnV0IHRyYW5z
Zm9ybXMgZG9uJ3QgYXBwbHkgdG8gdGhlbSwKICAgICAgICAgLy8gaGVuY2UgdGhlICFpc1RleHQo
KSBjaGVjay4KICAgICAgICAgLy8gRklYTUU6IHdoZW4gdHJhbnNmb3JtcyBhcmUgdGFrZW4gaW50
byBhY2NvdW50IGZvciBvdmVyZmxvdywgd2Ugd2lsbCBuZWVkIHRvIGRvIGEgbGF5b3V0LgotICAg
ICAgICBpZiAoIWlzVGV4dCgpICYmICghaGFzTGF5ZXIoKSB8fCAhdG9SZW5kZXJCb3hNb2RlbE9i
amVjdCh0aGlzKS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkpKSB7CisgICAgICAgIGlmICghaXNU
ZXh0KCkgJiYgKCFoYXNMYXllcigpIHx8ICF0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhp
cyktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpKSkgewogICAgICAgICAgICAgLy8gV2UgbmVlZCB0
byBzZXQgYXQgbGVhc3QgU2ltcGxpZmllZExheW91dCwgYnV0IGlmIFBvc2l0aW9uZWRNb3ZlbWVu
dE9ubHkgaXMgYWxyZWFkeSBzZXQKICAgICAgICAgICAgIC8vIHRoZW4gd2UgYWN0dWFsbHkgbmVl
ZCBTaW1wbGlmaWVkTGF5b3V0QW5kUG9zaXRpb25lZE1vdmVtZW50LgogICAgICAgICAgICAgaWYg
KCFoYXNMYXllcigpKQpAQCAtMTcwNCw3ICsxNzA0LDcgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRl
ck9iamVjdDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCB1bnNp
Z24KICAgICAvLyBJZiBvcGFjaXR5IGNoYW5nZWQsIGFuZCB3ZSBhcmUgbm90IGNvbXBvc2l0ZWQs
IG5lZWQgdG8gcmVwYWludCAoYWxzbwogICAgIC8vIGlnbm9yaW5nIHRleHQgbm9kZXMpCiAgICAg
aWYgKGNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzICYgQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5
T3BhY2l0eSkgewotICAgICAgICBpZiAoIWlzVGV4dCgpICYmICghaGFzTGF5ZXIoKSB8fCAhdG9S
ZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkpKQorICAg
ICAgICBpZiAoIWlzVGV4dCgpICYmICghaGFzTGF5ZXIoKSB8fCAhdG9SZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkpCiAgICAgICAgICAgICBk
aWZmID0gU3R5bGVEaWZmZXJlbmNlUmVwYWludExheWVyOwogICAgICAgICBlbHNlIGlmIChkaWZm
IDwgU3R5bGVEaWZmZXJlbmNlUmVjb21wb3NpdGVMYXllcikKICAgICAgICAgICAgIGRpZmYgPSBT
dHlsZURpZmZlcmVuY2VSZWNvbXBvc2l0ZUxheWVyOwpAQCAtMTcxMiw3ICsxNzEyLDcgQEAgU3R5
bGVEaWZmZXJlbmNlIFJlbmRlck9iamVjdDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlm
ZmVyZW5jZSBkaWZmLCB1bnNpZ24KICAgICAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAg
aWYgKChjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyAmIENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0
eUZpbHRlcikgJiYgaGFzTGF5ZXIoKSkgewotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0
b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpOworICAgICAgICBSZW5kZXJMYXll
ciogbGF5ZXIgPSB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCk7CiAg
ICAgICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpIHx8IGxheWVyLT5wYWludHNXaXRoRmls
dGVycygpKQogICAgICAgICAgICAgZGlmZiA9IFN0eWxlRGlmZmVyZW5jZVJlcGFpbnRMYXllcjsK
ICAgICAgICAgZWxzZSBpZiAoZGlmZiA8IFN0eWxlRGlmZmVyZW5jZVJlY29tcG9zaXRlTGF5ZXIp
CkBAIC0xNzIzLDggKzE3MjMsOCBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyT2JqZWN0OjphZGp1
c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIHVuc2lnbgogICAgIC8vIFRo
ZSBhbnN3ZXIgdG8gcmVxdWlyZXNMYXllcigpIGZvciBwbHVnaW5zIGFuZCBpZnJhbWVzIGNhbiBj
aGFuZ2Ugb3V0c2lkZSBvZiB0aGUgc3R5bGUgc3lzdGVtLAogICAgIC8vIHNpbmNlIGl0IGRlcGVu
ZHMgb24gd2hldGhlciB3ZSBkZWNpZGUgdG8gY29tcG9zaXRlIHRoZXNlIGVsZW1lbnRzLiBXaGVu
IHRoZSBsYXllciBzdGF0dXMgb2YKICAgICAvLyBvbmUgb2YgdGhlc2UgZWxlbWVudHMgY2hhbmdl
cywgd2UgbmVlZCB0byBmb3JjZSBhIGxheW91dC4KLSAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZl
cmVuY2VFcXVhbCAmJiBzdHlsZSgpICYmIGlzQm94TW9kZWxPYmplY3QoKSkgewotICAgICAgICBp
ZiAoaGFzTGF5ZXIoKSAhPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5yZXF1aXJlc0xh
eWVyKCkpCisgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlRXF1YWwgJiYgc3R5bGUoKSAm
JiBpc1RyYW5zZm9ybWFibGVPYmplY3QoKSkgeworICAgICAgICBpZiAoaGFzTGF5ZXIoKSAhPSB0
b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPnJlcXVpcmVzTGF5ZXIoKSkKICAgICAg
ICAgICAgIGRpZmYgPSBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAgICAgfQogI2Vsc2UKQEAgLTIw
MzEsNyArMjAzMSw3IEBAIEZsb2F0UG9pbnQgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRvTG9jYWwo
Y29uc3QgRmxvYXRQb2ludCYgY29udGFpbmVyUG9pbnQsIGJvb2wKICAgICByZXR1cm4gdHJhbnNm
b3JtU3RhdGUubGFzdFBsYW5hclBvaW50KCk7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0OjptYXBM
b2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBU
cmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBt
b2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyT2JqZWN0OjptYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRy
YW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1v
ZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09
IHRoaXMpCiAgICAgICAgIHJldHVybjsKQEAgLTIwNTksNyArMjA1OSw3IEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBUCiAgICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVy
LCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmpl
Y3QqIFJlbmRlck9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5
TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OnB1c2hNYXBwaW5n
VG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0
b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAogewogICAgIEFTU0VS
VF9VTlVTRUQoYW5jZXN0b3JUb1N0b3BBdCwgYW5jZXN0b3JUb1N0b3BBdCAhPSB0aGlzKTsKIApA
QCAtMjA5Miw3ICsyMDkyLDcgQEAgYm9vbCBSZW5kZXJPYmplY3Q6OnNob3VsZFVzZVRyYW5zZm9y
bUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXIKICNpZiBFTkFCTEUo
M0RfUkVOREVSSU5HKQogICAgIC8vIGhhc1RyYW5zZm9ybSgpIGluZGljYXRlcyB3aGV0aGVyIHRo
ZSBvYmplY3QgaGFzIHRyYW5zZm9ybSwgdHJhbnNmb3JtLXN0eWxlIG9yIHBlcnNwZWN0aXZlLiBX
ZSBqdXN0IGNhcmUgYWJvdXQgdHJhbnNmb3JtLAogICAgIC8vIHNvIGNoZWNrIHRoZSBsYXllcidz
IHRyYW5zZm9ybSBkaXJlY3RseS4KLSAgICByZXR1cm4gKGhhc0xheWVyKCkgJiYgdG9SZW5kZXJC
b3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+dHJhbnNmb3JtKCkpIHx8IChjb250YWluZXJP
YmplY3QgJiYgY29udGFpbmVyT2JqZWN0LT5zdHlsZSgpLT5oYXNQZXJzcGVjdGl2ZSgpKTsKKyAg
ICByZXR1cm4gKGhhc0xheWVyKCkgJiYgdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KHRoaXMp
LT5sYXllcigpLT50cmFuc2Zvcm0oKSkgfHwgKGNvbnRhaW5lck9iamVjdCAmJiBjb250YWluZXJP
YmplY3QtPnN0eWxlKCktPmhhc1BlcnNwZWN0aXZlKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oY29udGFpbmVyT2JqZWN0KTsKICAgICByZXR1cm4gaGFzVHJhbnNmb3JtKCk7CkBAIC0yMTA0
LDE0ICsyMTA0LDE0IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFp
bmVyKGNvbnN0IFJlbmRlck9iamVjdCogY29udGFpbmVyT2JqZWN0CiAgICAgdHJhbnNmb3JtLm1h
a2VJZGVudGl0eSgpOwogICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob2Zmc2V0SW5Db250YWluZXIu
d2lkdGgoKSwgb2Zmc2V0SW5Db250YWluZXIuaGVpZ2h0KCkpOwogICAgIFJlbmRlckxheWVyKiBs
YXllcjsKLSAgICBpZiAoaGFzTGF5ZXIoKSAmJiAobGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2Jq
ZWN0KHRoaXMpLT5sYXllcigpKSAmJiBsYXllci0+dHJhbnNmb3JtKCkpCisgICAgaWYgKGhhc0xh
eWVyKCkgJiYgKGxheWVyID0gdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KHRoaXMpLT5sYXll
cigpKSAmJiBsYXllci0+dHJhbnNmb3JtKCkpCiAgICAgICAgIHRyYW5zZm9ybS5tdWx0aXBseShs
YXllci0+Y3VycmVudFRyYW5zZm9ybSgpKTsKICAgICAKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5H
KQogICAgIGlmIChjb250YWluZXJPYmplY3QgJiYgY29udGFpbmVyT2JqZWN0LT5oYXNMYXllcigp
ICYmIGNvbnRhaW5lck9iamVjdC0+c3R5bGUoKS0+aGFzUGVyc3BlY3RpdmUoKSkgewogICAgICAg
ICAvLyBQZXJwc2VjdGl2ZSBvbiB0aGUgY29udGFpbmVyIGFmZmVjdHMgdXMsIHNvIHdlIGhhdmUg
dG8gZmFjdG9yIGl0IGluIGhlcmUuCiAgICAgICAgIEFTU0VSVChjb250YWluZXJPYmplY3QtPmhh
c0xheWVyKCkpOwotICAgICAgICBGbG9hdFBvaW50IHBlcnNwZWN0aXZlT3JpZ2luID0gdG9SZW5k
ZXJCb3hNb2RlbE9iamVjdChjb250YWluZXJPYmplY3QpLT5sYXllcigpLT5wZXJzcGVjdGl2ZU9y
aWdpbigpOworICAgICAgICBGbG9hdFBvaW50IHBlcnNwZWN0aXZlT3JpZ2luID0gdG9SZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KGNvbnRhaW5lck9iamVjdCktPmxheWVyKCktPnBlcnNwZWN0aXZl
T3JpZ2luKCk7CiAKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVNYXRy
aXg7CiAgICAgICAgIHBlcnNwZWN0aXZlTWF0cml4LmFwcGx5UGVyc3BlY3RpdmUoY29udGFpbmVy
T2JqZWN0LT5zdHlsZSgpLT5wZXJzcGVjdGl2ZSgpKTsKQEAgLTIxMjUsNyArMjEyNSw3IEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlck9i
amVjdCogY29udGFpbmVyT2JqZWN0CiAjZW5kaWYKIH0KIAotRmxvYXRRdWFkIFJlbmRlck9iamVj
dDo6bG9jYWxUb0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiBsb2NhbFF1YWQsIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHNuYXBPZmZzZXRGb3JUcmFu
c2Zvcm1zLCBib29sIGZpeGVkLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK0Zsb2F0UXVhZCBSZW5k
ZXJPYmplY3Q6OmxvY2FsVG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0UXVhZCYgbG9jYWxRdWFk
LCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHNuYXBP
ZmZzZXRGb3JUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsK
ICAgICAvLyBUcmFjayB0aGUgcG9pbnQgYXQgdGhlIGNlbnRlciBvZiB0aGUgcXVhZCdzIGJvdW5k
aW5nIGJveC4gQXMgbWFwTG9jYWxUb0NvbnRhaW5lcigpIGNhbGxzIG9mZnNldEZyb21Db250YWlu
ZXIoKSwKICAgICAvLyBpdCB3aWxsIHVzZSB0aGF0IHBvaW50IGFzIHRoZSByZWZlcmVuY2UgcG9p
bnQgdG8gZGVjaWRlIHdoaWNoIGNvbHVtbidzIHRyYW5zZm9ybSB0byBhcHBseSBpbiBtdWx0aXBs
ZS1jb2x1bW4gYmxvY2tzLgpAQCAtMjE0MSw3ICsyMTQxLDcgQEAgRmxvYXRRdWFkIFJlbmRlck9i
amVjdDo6bG9jYWxUb0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiBsb2NhbFF1YWQsIFJl
bmRlckIKICAgICByZXR1cm4gdHJhbnNmb3JtU3RhdGUubGFzdFBsYW5hclF1YWQoKTsKIH0KIAot
RmxvYXRQb2ludCBSZW5kZXJPYmplY3Q6OmxvY2FsVG9Db250YWluZXJQb2ludChjb25zdCBGbG9h
dFBvaW50JiBsb2NhbFBvaW50LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgYm9vbCBzbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgYm9vbCogd2FzRml4
ZWQpIGNvbnN0CitGbG9hdFBvaW50IFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclBvaW50
KGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsUG9pbnQsIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGJvb2wgc25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wgZml4
ZWQsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIFRyYW5zZm9ybVN0YXRlIHRyYW5zZm9y
bVN0YXRlKFRyYW5zZm9ybVN0YXRlOjpBcHBseVRyYW5zZm9ybURpcmVjdGlvbiwgbG9jYWxQb2lu
dCk7CiAgICAgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZs
aXAgfCBVc2VUcmFuc2Zvcm1zOwpAQCAtMjI0NCw3ICsyMjQ0LDcgQEAgYm9vbCBSZW5kZXJPYmpl
Y3Q6Omhhc091dGxpbmVBbm5vdGF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbm9kZSgpICYmIG5v
ZGUoKS0+aXNMaW5rKCkgJiYgZG9jdW1lbnQoKS0+cHJpbnRpbmcoKTsKIH0KIAotUmVuZGVyT2Jq
ZWN0KiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgYm9vbCogcmVwYWludENvbnRhaW5lclNraXBwZWQpIGNvbnN0CitS
ZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wqIHJlcGFpbnRDb250YWluZXJTa2lw
cGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyU2tpcHBlZCkKICAgICAgICAg
KnJlcGFpbnRDb250YWluZXJTa2lwcGVkID0gZmFsc2U7CkBAIC0yMzc3LDcgKzIzNzcsNyBAQCB2
b2lkIFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkKICAgICAvLyBiZSBtb3ZlZCBpbnRv
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpkZXN0cm95LgogICAgIGlmIChoYXNMYXllcigpKSB7CiAg
ICAgICAgIHNldEhhc0xheWVyKGZhbHNlKTsKLSAgICAgICAgdG9SZW5kZXJCb3hNb2RlbE9iamVj
dCh0aGlzKS0+ZGVzdHJveUxheWVyKCk7CisgICAgICAgIHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCh0aGlzKS0+ZGVzdHJveUxheWVyKCk7CiAgICAgfQogCiAgICAgc2V0QW5jZXN0b3JMaW5l
Qm94RGlydHkoZmFsc2UpOwpAQCAtMjUzMiw3ICsyNTMyLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6
OnVwZGF0ZURyYWdTdGF0ZShib29sIGRyYWdPbikKIAogYm9vbCBSZW5kZXJPYmplY3Q6OmlzQ29t
cG9zaXRlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc0xheWVyKCkgJiYgdG9SZW5kZXJCb3hN
b2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCk7CisgICAgcmV0dXJuIGhh
c0xheWVyKCkgJiYgdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KHRoaXMpLT5sYXllcigpLT5p
c0NvbXBvc2l0ZWQoKTsKIH0KIAogYm9vbCBSZW5kZXJPYmplY3Q6OmhpdFRlc3QoY29uc3QgSGl0
VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVz
dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQsIEhpdFRlc3RGaWx0ZXIgaGl0VGVzdEZpbHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaAppbmRleCAzY2EyYTIyNTUyZmZmM2JmZGQ1Y2EwMTA2NDQ3MTFhNTRh
NjBmMGM2Li4yZjYyYzU1MjQ0MmFiMmIwMTNjYWQxZTBhYjZmOTIwZmJkMmZiNjlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC02Miw2ICs2Miw3IEBAIGNsYXNz
IFJlbmRlckxheWVyOwogY2xhc3MgUmVuZGVyTmFtZWRGbG93VGhyZWFkOwogY2xhc3MgUmVuZGVy
VGFibGU7CiBjbGFzcyBSZW5kZXJUaGVtZTsKK2NsYXNzIFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3Q7CiBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKICNpZiBF
TkFCTEUoU1ZHKQpAQCAtMzYwLDYgKzM2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aXNUZXh0Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzVGV4dEFyZWEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlz
VHJhbnNmb3JtYWJsZU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzVmlkZW8oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc1dpZGdldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlz
Q2FudmFzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTU5Niw3ICs1OTgsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUmV0dXJucyB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhpcyBvbmUuIENhbiBi
ZSBkaWZmZXJlbnQgZnJvbSBwYXJlbnQgZm9yIHBvc2l0aW9uZWQgZWxlbWVudHMuCiAgICAgLy8g
SWYgcmVwYWludENvbnRhaW5lciBhbmQgcmVwYWludENvbnRhaW5lclNraXBwZWQgYXJlIG5vdCBu
dWxsLCBvbiByZXR1cm4gKnJlcGFpbnRDb250YWluZXJTa2lwcGVkCiAgICAgLy8gaXMgdHJ1ZSBp
ZiB0aGUgcmVuZGVyZXIgcmV0dXJuZWQgaXMgYW4gYW5jZXN0b3Igb2YgcmVwYWludENvbnRhaW5l
ci4KLSAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciA9IDAsIGJvb2wqIHJlcGFpbnRDb250YWluZXJTa2lwcGVkID0g
MCkgY29uc3Q7CisgICAgUmVuZGVyT2JqZWN0KiBjb250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciA9IDAsIGJvb2wqIHJlcGFpbnRDb250YWlu
ZXJTa2lwcGVkID0gMCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogaG92ZXJB
bmNlc3RvcigpIGNvbnN0IHsgcmV0dXJuIHBhcmVudCgpOyB9CiAKQEAgLTY5Miw4ICs2OTQsOCBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gQ29udmVydCBhIGxvY2FsIHF1YWQgaW50byB0aGUg
Y29vcmRpbmF0ZSBzeXN0ZW0gb2YgY29udGFpbmVyLCB0YWtpbmcgdHJhbnNmb3JtcyBpbnRvIGFj
Y291bnQuCi0gICAgRmxvYXRRdWFkIGxvY2FsVG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0UXVh
ZCYsIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHNuYXBPZmZz
ZXRGb3JUcmFuc2Zvcm1zID0gdHJ1ZSwgYm9vbCBmaXhlZCA9IGZhbHNlLCBib29sKiB3YXNGaXhl
ZCA9IDApIGNvbnN0OwotICAgIEZsb2F0UG9pbnQgbG9jYWxUb0NvbnRhaW5lclBvaW50KGNvbnN0
IEZsb2F0UG9pbnQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9v
bCBzbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcyA9IHRydWUsIGJvb2wgZml4ZWQgPSBmYWxzZSwgYm9v
bCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICBGbG9hdFF1YWQgbG9jYWxUb0NvbnRhaW5lclF1
YWQoY29uc3QgRmxvYXRRdWFkJiwgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCBzbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcyA9IHRydWUsIGJvb2wgZml4ZWQg
PSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICBGbG9hdFBvaW50IGxvY2Fs
VG9Db250YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiwgUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBzbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcyA9IHRy
dWUsIGJvb2wgZml4ZWQgPSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKIAogICAg
IC8vIFJldHVybiB0aGUgb2Zmc2V0IGZyb20gdGhlIGNvbnRhaW5lcigpIHJlbmRlcmVyIChleGNs
dWRpbmcgdHJhbnNmb3JtcykuIEluIG11bHRpLWNvbHVtbiBsYXlvdXQsCiAgICAgLy8gZGlmZmVy
ZW50IG9mZnNldHMgYXBwbHkgYXQgZGlmZmVyZW50IHBvaW50cywgc28gcmV0dXJuIHRoZSBvZmZz
ZXQgdGhhdCBhcHBsaWVzIHRvIHRoZSBnaXZlbiBwb2ludC4KQEAgLTczNiwxMyArNzM4LDEzIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0VGV4dERlY29yYXRpb25Db2xvcnMoaW50IGRlY29yYXRp
b25zLCBDb2xvciYgdW5kZXJsaW5lLCBDb2xvciYgb3ZlcmxpbmUsIENvbG9yJiBsaW5ldGhyb3Vn
aCwgYm9vbCBxdWlya3NNb2RlID0gZmFsc2UsIGJvb2wgZmlyc3RsaW5lU3R5bGUgPSBmYWxzZSk7
CiAKLSAgICAvLyBSZXR1cm4gdGhlIFJlbmRlckJveCBpbiB0aGUgY29udGFpbmVyIGNoYWluIHdo
aWNoIGlzIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyB0aGlzIG9iamVjdCwgb3IgMAorICAgIC8v
IFJldHVybiB0aGUgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCBpbiB0aGUgY29udGFpbmVyIGNo
YWluIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyB0aGlzIG9iamVjdCwgb3IgMAog
ICAgIC8vIGlmIHBhaW50aW5nIGlzIHJvb3QtcmVsYXRpdmUuIFRoaXMgaXMgdGhlIGNvbnRhaW5l
ciB0aGF0IHNob3VsZCBiZSBwYXNzZWQgdG8gdGhlICdmb3JSZXBhaW50JwogICAgIC8vIG1ldGhv
ZHMuCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5lckZvclJlcGFpbnQoKSBjb25z
dDsKKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBjb250YWluZXJGb3JSZXBhaW50KCkg
Y29uc3Q7CiAgICAgLy8gQWN0dWFsbHkgZG8gdGhlIHJlcGFpbnQgb2YgcmVjdCByIGZvciB0aGlz
IG9iamVjdCB3aGljaCBoYXMgYmVlbiBjb21wdXRlZCBpbiB0aGUgY29vcmRpbmF0ZSBzcGFjZQog
ICAgIC8vIG9mIHJlcGFpbnRDb250YWluZXIuIElmIHJlcGFpbnRDb250YWluZXIgaXMgMCwgcmVw
YWludCB2aWEgdGhlIHZpZXcuCi0gICAgdm9pZCByZXBhaW50VXNpbmdDb250YWluZXIoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFJlY3QmLCBib29s
IGltbWVkaWF0ZSA9IGZhbHNlKTsKKyAgICB2b2lkIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0
JiwgYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSk7CiAgICAgCiAgICAgLy8gUmVwYWludCB0aGUgZW50
aXJlIG9iamVjdC4gIENhbGxlZCB3aGVuLCBlLmcuLCB0aGUgY29sb3Igb2YgYSBib3JkZXIgY2hh
bmdlcywgb3Igd2hlbiBhIGJvcmRlcgogICAgIC8vIHN0eWxlIGNoYW5nZXMuCkBAIC03NTIsNyAr
NzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVwYWludFJlY3RhbmdsZShjb25zdCBMYXlvdXRS
ZWN0JiwgYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSk7CiAKICAgICAvLyBSZXBhaW50IG9ubHkgaWYg
b3VyIG9sZCBib3VuZHMgYW5kIG5ldyBib3VuZHMgYXJlIGRpZmZlcmVudC4gVGhlIGNhbGxlciBt
YXkgcGFzcyBpbiBuZXdCb3VuZHMgYW5kIG5ld091dGxpbmVCb3ggaWYgdGhleSBhcmUga25vd24u
Ci0gICAgYm9vbCByZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYgb2xkQm91bmRzLCBjb25zdCBM
YXlvdXRSZWN0JiBvbGRPdXRsaW5lQm94LCBjb25zdCBMYXlvdXRSZWN0KiBuZXdCb3VuZHNQdHIg
PSAwLCBjb25zdCBMYXlvdXRSZWN0KiBuZXdPdXRsaW5lQm94UHRyID0gMCk7CisgICAgYm9vbCBy
ZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRCb3VuZHMsIGNvbnN0IExheW91dFJl
Y3QmIG9sZE91dGxpbmVCb3gsIGNvbnN0IExheW91dFJlY3QqIG5ld0JvdW5kc1B0ciA9IDAsIGNv
bnN0IExheW91dFJlY3QqIG5ld091dGxpbmVCb3hQdHIgPSAwKTsKIAogICAgIC8vIFJlcGFpbnQg
b25seSBpZiB0aGUgb2JqZWN0IG1vdmVkLgogICAgIHZpcnR1YWwgdm9pZCByZXBhaW50RHVyaW5n
TGF5b3V0SWZNb3ZlZChjb25zdCBMYXlvdXRSZWN0Jik7CkBAIC03NjksOCArNzcxLDggQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoMCk7CiAg
ICAgfQogICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkQWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIExheW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNv
bnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIExheW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0
aCkgY29uc3Q7CiAKICAgICAvLyBHaXZlbiBhIHJlY3QgaW4gdGhlIG9iamVjdCdzIGNvb3JkaW5h
dGUgc3BhY2UsIGNvbXB1dGUgYSByZWN0IHN1aXRhYmxlIGZvciByZXBhaW50aW5nCiAgICAgLy8g
dGhhdCByZWN0IGluIHZpZXcgY29vcmRpbmF0ZXMuCkBAIC03ODAsOCArNzgyLDggQEAgcHVibGlj
OgogICAgIH0KICAgICAvLyBHaXZlbiBhIHJlY3QgaW4gdGhlIG9iamVjdCdzIGNvb3JkaW5hdGUg
c3BhY2UsIGNvbXB1dGUgYSByZWN0IHN1aXRhYmxlIGZvciByZXBhaW50aW5nCiAgICAgLy8gdGhh
dCByZWN0IGluIHRoZSBjb29yZGluYXRlIHNwYWNlIG9mIHJlcGFpbnRDb250YWluZXIuCi0gICAg
dmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29s
IGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJl
cGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0
UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1
dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29u
c3Q7CiAKICAgICAvLyBJZiBtdWx0aXBsZS1jb2x1bW4gbGF5b3V0IHJlc3VsdHMgaW4gYXBwbHlp
bmcgYW4gb2Zmc2V0IHRvIHRoZSBnaXZlbiBwb2ludCwgYWRkIHRoZSBzYW1lCiAgICAgLy8gb2Zm
c2V0IHRvIHRoZSBnaXZlbiBzaXplLgpAQCAtODIzLDcgKzgyNSw3IEBAIHB1YmxpYzoKICAgICAv
LyBBIHNpbmdsZSByZWN0YW5nbGUgdGhhdCBlbmNvbXBhc3NlcyBhbGwgb2YgdGhlIHNlbGVjdGVk
IG9iamVjdHMgd2l0aGluIHRoaXMgb2JqZWN0LiAgVXNlZCB0byBkZXRlcm1pbmUgdGhlIHRpZ2h0
ZXN0CiAgICAgLy8gcG9zc2libGUgYm91bmRpbmcgYm94IGZvciB0aGUgc2VsZWN0aW9uLgogICAg
IExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdChib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1
ZSkgeyByZXR1cm4gc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoMCwgY2xpcFRvVmlzaWJsZUNvbnRl
bnQpOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgYm9vbCAvKmNsaXBUb1Zp
c2libGVDb250ZW50Ki8gPSB0cnVlKSB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICB2aXJ0
dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogLypyZXBhaW50Q29udGFpbmVyKi8sIGJvb2wgLypjbGlwVG9WaXNpYmxlQ29udGVu
dCovID0gdHJ1ZSkgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wg
Y2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGhh
c1NlbGVjdGVkQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBzZWxlY3Rpb25TdGF0ZSgpICE9IFNl
bGVjdGlvbk5vbmU7IH0KQEAgLTg5MSwxMiArODkzLDEyIEBAIHB1YmxpYzoKIAogICAgIC8vIE1h
cCBwb2ludHMgYW5kIHF1YWRzIHRocm91Z2ggZWxlbWVudHMsIHBvdGVudGlhbGx5IHZpYSAzZCB0
cmFuc2Zvcm1zLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gY2FsbCB0aGVzZSBkaXJlY3RseTsg
dXNlCiAgICAgLy8gbG9jYWxUb0Fic29sdXRlL2Fic29sdXRlVG9Mb2NhbCBtZXRob2RzIGluc3Rl
YWQuCi0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRh
aW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2Nh
bFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4
ZWQgPSAwKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQo
Ym9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0Owog
CiAgICAgLy8gUHVzaGVzIHN0YXRlIG9udG8gUmVuZGVyR2VvbWV0cnlNYXAgYWJvdXQgaG93IHRv
IG1hcCBjb29yZGluYXRlcyBmcm9tIHRoaXMgcmVuZGVyZXIgdG8gaXRzIGNvbnRhaW5lciwgb3Ig
YW5jZXN0b3JUb1N0b3BBdCAod2hpY2hldmVyIGlzIGVuY291bnRlcmVkIGZpcnN0KS4KICAgICAv
LyBSZXR1cm5zIHRoZSByZW5kZXJlciB3aGljaCB3YXMgbWFwcGVkIHRvIChjb250YWluZXIgb3Ig
YW5jZXN0b3JUb1N0b3BBdCkuCi0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hN
YXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9T
dG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBSZW5k
ZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKICAg
ICAKICAgICBib29sIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVuZGVy
T2JqZWN0KiBjb250YWluZXIpIGNvbnN0OwogICAgIHZvaWQgZ2V0VHJhbnNmb3JtRnJvbUNvbnRh
aW5lcihjb25zdCBSZW5kZXJPYmplY3QqIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zm
c2V0SW5Db250YWluZXIsIFRyYW5zZm9ybWF0aW9uTWF0cml4JikgY29uc3Q7CkBAIC05MzcsNyAr
OTM5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsK
ICAgICB2b2lkIGFyZW5hRGVsZXRlKFJlbmRlckFyZW5hKiwgdm9pZCogb2JqZWN0QmFzZSk7CiAK
LSAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBMYXlvdXRQb2ludCogLypjYWNoZWRP
ZmZzZXRUb1JlcGFpbnRDb250YWluZXIqLyA9IDApIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3Qo
KTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgTGF5b3V0UG9pbnQq
IC8qY2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVyKi8gPSAwKSBjb25zdCB7IHJldHVybiBM
YXlvdXRSZWN0KCk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVJlcGxhY2VkV2l0aElubGlu
ZVJ1bkluKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwCmluZGV4IGJjZDk2N2U2YTc1MTA4NGNmMWQ2NjA3MTBjMGJjNDdlODVhNzRlMGMuLmQ1
ZDllYThlZjgxNzVkMzg1YmRiM2NhY2Q3MmNkZTZkYTMzOWQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtNDgyLDcgKzQ4Miw3IEBAIFZpc2li
bGVQb3NpdGlvbiBSZW5kZXJSZXBsYWNlZDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYgcG9pbnQpCiAgICAgcmV0dXJuIFJlbmRlckJveDo6cG9zaXRpb25Gb3JQb2ludChwb2lu
dCk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyUmVwbGFjZWQ6OnNlbGVjdGlvblJlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zp
c2libGVDb250ZW50KQorTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6c2VsZWN0aW9uUmVjdEZv
clJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9v
bCBjbGlwVG9WaXNpYmxlQ29udGVudCkKIHsKICAgICBBU1NFUlQoIW5lZWRzTGF5b3V0KCkpOwog
CkBAIC01NDcsNyArNTQ3LDcgQEAgYm9vbCBSZW5kZXJSZXBsYWNlZDo6aXNTZWxlY3RlZCgpIGNv
bnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpj
bGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyUmVwbGFjZWQ6OmNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0CiB7CiAgICAgaWYgKHN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxF
ICYmICFlbmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVudCgpKQogICAgICAgICByZXR1
cm4gTGF5b3V0UmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
aAppbmRleCA5ZDc4MTQzOTQyMjVkNDBiMTJmOTg2ZGIwOWNkYWJiNzc4OGY5YTUyLi5lNzBmYjBk
NTk3MjgwMDI2ZWRhNjNmNjAxNzkwMGIzNWFkNjNlMmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApAQCAtNzAsMTMgKzcwLDEzIEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7CiAgICAgdmlydHVh
bCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSB7IH0K
IAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVh
bCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmly
dHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYp
OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJl
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRv
VmlzaWJsZUNvbnRlbnQgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9u
UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIE9WRVJSSURFOwogICAgIHZvaWQg
Y29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5kZXJCb3goUmVuZGVyQm94KiwgRmxv
YXRTaXplJiBjb25zdHJhaW5lZFNpemUsIGRvdWJsZSYgaW50cmluc2ljUmF0aW8sIGJvb2wmIGlz
UGVyY2VudGFnZUludHJpbnNpY1NpemUpIGNvbnN0OwogCiAgICAgbXV0YWJsZSBJbnRTaXplIG1f
aW50cmluc2ljU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTZWxlY3Rpb25JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VsZWN0
aW9uSW5mby5oCmluZGV4IDg5MzZhMzc3ZTY2NTQzMDFjYTVhNGNmNDY2ZDNiNzk1Yjk4ZDM5ZDcu
LjAzYzcxNTExMTY5OWU1OTEyNGViMzhmYzZlNzAzYTdkZGVlMzA3Y2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uaApAQCAtNDgsMTIgKzQ4LDEy
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgUmVuZGVyT2JqZWN0KiBvYmplY3QoKSBjb25z
dCB7IHJldHVybiBtX29iamVjdDsgfQotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50Q29udGFpbmVyOyB9CisgICAgUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVwYWludENvbnRhaW5lcjsgfQogICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUg
c3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAKIHByb3RlY3RlZDoKICAgICBSZW5k
ZXJPYmplY3QqIG1fb2JqZWN0OwotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBtX3JlcGFpbnRD
b250YWluZXI7CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogbV9yZXBhaW50Q29udGFp
bmVyOwogICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgbV9zdGF0ZTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggMGNlZmM3
NWE4MjgwNDc1NjU5ZTUxYWZlMGQzYjNhZmM2NzYxMGYzZC4uOGRjYjBjYWI5ZWI0Y2I0NDA1OGE0
ZTZjNDhkMjlhN2IzN2VjODM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCBMYXlvdXRTaXplIFJlbmRlclRhYmxl
Q2VsbDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IExheW91dFBv
aQogICAgIHJldHVybiBvZmZzZXQ7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyVGFibGVDZWxsOjpj
bGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyVGFibGVDZWxsOjpjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdAogewogICAgIC8vIElmIHRoZSB0YWJsZSBncmlkIGlzIGRpcnR5LCB3ZSBj
YW5ub3QgZ2V0IHJlbGlhYmxlIGluZm9ybWF0aW9uIGFib3V0IGFkam9pbmluZyBjZWxscywKICAg
ICAvLyBzbyB3ZSBpZ25vcmUgb3V0c2lkZSBib3JkZXJzLiBUaGlzIHNob3VsZCBub3QgYmUgYSBw
cm9ibGVtIGJlY2F1c2UgaXQgbWVhbnMgdGhhdApAQCAtMzAyLDcgKzMwMiw3IEBAIExheW91dFJl
Y3QgUmVuZGVyVGFibGVDZWxsOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCoKICAgICByZXR1cm4gcjsKIH0KIAotdm9pZCBSZW5kZXJUYWJsZUNlbGw6
OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgTGF5b3V0UmVjdCYgciwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyVGFibGVD
ZWxsOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVw
YWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgciwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBp
ZiAocmVwYWludENvbnRhaW5lciA9PSB0aGlzKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKaW5kZXggNWQ1YjI3NjRiYjgwNDk1ZTdh
MjFlODMwMGE2M2Q1MGZjNDc5M2YzMC4uMWNjZGRmNjkyMzIxZmY3YzQzNWNhODMzODNhYzU2Nzhi
MDU4MzkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApA
QCAtMTgzLDggKzE4Myw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGJveFNoYWRvd1No
b3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGlu
ZUZsb3dCb3gqKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZz
ZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCog
b2Zmc2V0RGVwZW5kc09uUG9pbnQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qg
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBi
b29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RG
b3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExh
eW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgaW50
IGJvcmRlckhhbGZMZWZ0KGJvb2wgb3V0ZXIpIGNvbnN0OwogICAgIGludCBib3JkZXJIYWxmUmln
aHQoYm9vbCBvdXRlcikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ29sLmNwcAppbmRleCA5N2NkOGNjM2VkMDk1NjhmNjg5MTYwYTUwZGU4Njk0MzcwMGNkZTI5
Li4xNTRjOWYyMTE5ZmNlY2I3Njg5NGQ3OTkxOWFlMDlkYjIzYWI3ZDJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9v
bCBSZW5kZXJUYWJsZUNvbDo6Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QKICAgICByZXR1cm4gaXNU
YWJsZUNvbHVtbkdyb3VwKCk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyVGFibGVDb2w6OmNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJUYWJsZUNvbDo6Y2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3QKIHsKICAgICAvLyBGb3Igbm93LCBqdXN0IHJlcGFpbnQgdGhlIHdob2xlIHRhYmxl
LgogICAgIC8vIEZJWE1FOiBGaW5kIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLCBlLmcuLCBuZWVk
IHRvIHJlcGFpbnQgYWxsIHRoZSBjZWxscyB0aGF0IHdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNvbC5oCmluZGV4IDYyZjMyODhlOGQ2NjM4NzQwZjY5ZWY2MWRmNjg3YWJi
ZWJjMjQyMWMuLjQwZWMxM2U1YmYyMzk1ZWYyOTAyYmE5NzkyMDNjNTE3ZDNlZTNlNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCkBAIC03OSw3ICs3OSw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAot
ICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCBM
YXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApOwog
CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVSb3cuY3BwCmluZGV4IDdkYzA1ZmE1NjdkYjc3ZWZmYmIwNTdkMDA1YjA5MTU0ZDQ2YTdl
MzMuLmQ1YWM3NzRiNTQwZTQ0YjhjNTBkMDBiMTY4MjA1YjQxYWIyYzMyMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBA
IHZvaWQgUmVuZGVyVGFibGVSb3c6OmxheW91dCgpCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2Up
OwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclRhYmxlUm93OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xh
eW91dFJlY3QgUmVuZGVyVGFibGVSb3c6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKHBhcmVudCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlUm93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVS
b3cuaAppbmRleCBhZmE4MzhjMTI1NDYxYmU1ZmMzNTVkMDI2NWRjZDMxY2VmNmEyYzMxLi5mM2Zh
M2IxZjJmNGFhNjlkMjNmZWI1Y2FmOGZkZTY2MDQ5Y2Q0NmY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaApAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVj
dCogYmVmb3JlQ2hpbGQgPSAwKTsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci0gICAgdmly
dHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJl
Y3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIG5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhp
dFRlc3RQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBy
ZXF1aXJlc0xheWVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gaXNUcmFuc3BhcmVudCgpIHx8
IGhhc092ZXJmbG93Q2xpcCgpIHx8IGhhc1RyYW5zZm9ybSgpIHx8IGhhc0hpZGRlbkJhY2tmYWNl
KCkgfHwgaGFzTWFzaygpIHx8IGhhc0ZpbHRlcigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHAKaW5kZXggNzNlNTc3NTRhZDc3NWQxZGJhM2NjYjNmN2FjYzg5MjE0ZmQy
NjNkNy4uOGE2MTAxZWJjZjA1MDNjMWFhNmViOWE4NzJmNmViYTRmMThmNjk2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTYxNiw3ICsxNjE2LDcgQEAgTGF5
b3V0UmVjdCBSZW5kZXJUZXh0OjpsaW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBjb25z
dAogICAgIHJldHVybiByZWN0OwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclRleHQ6OmNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25z
dAogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXJUb1JlcGFpbnQgPSBjb250YWluaW5nQmxv
Y2soKTsKIApAQCAtMTYzMiw3ICsxNjMyLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWkKICAg
ICByZXR1cm4gcmVuZGVyZXJUb1JlcGFpbnQtPmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KHJlcGFpbnRDb250YWluZXIpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclRleHQ6OnNlbGVjdGlv
blJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBi
b29sIGNsaXBUb1Zpc2libGVDb250ZW50KQorTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpzZWxlY3Rp
b25SZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KQogewogICAgIEFTU0VSVCghbmVlZHNMYXlv
dXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IGI5NmVjYTcz
ZjM2YzE1ZmY2MjI1ZTk5OGEzOTExMDU1NjcxN2Y0NGEuLjU5NGE2ODkwZmM0MjdlNjZkMTBhNjBh
ZmFhN2ExY2I2OTQ0NTI1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApA
QCAtOTcsMTMgKzk3LDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVj
dGlvbkxlYWYoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFNl
bGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlIHMpOwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBz
ZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpOworICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KElubGluZUJveCos
IGludCBjYXJldE9mZnNldCwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gMCk7
CiAKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1p
bmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5MZWZ0KCksIDAsIHZpZXcoKSk7IH0K
ICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luUmlnaHQoKSBjb25zdCB7IHJldHVybiBtaW5p
bXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luUmlnaHQoKSwgMCwgdmlldygpKTsgfQog
Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFs
IExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CiAKICAgICBJbmxp
bmVUZXh0Qm94KiBmaXJzdFRleHRCb3goKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0VGV4dEJveDsg
fQogICAgIElubGluZVRleHRCb3gqIGxhc3RUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0
VGV4dEJveDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkYjY1NGMxN2YyMjhkNGY2Y2RiMzAx
ZjliNjNhOTljZmQ1NjFhOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAKQEAgLTAsMCArMSwxNjYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAg
ICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqICAg
ICAgICAgICAoQykgMjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5jb20p
CisgKiAgICAgICAgICAgKEMpIDIwMDUsIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0Bn
bWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmgiCisKKyNpbmNsdWRlICJSZW5k
ZXJMYXllci5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2Jvb2wgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6c193YXNGbG9hdGluZyA9IGZhbHNl
OworYm9vbCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpzX2hhZExheWVyID0gZmFsc2U7Citi
b29sIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OnNfaGFkVHJhbnNmb3JtID0gZmFsc2U7Citi
b29sIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OnNfbGF5ZXJXYXNTZWxmUGFpbnRpbmcgPSBm
YWxzZTsKKworUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6UmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdChOb2RlKiBub2RlKQorICAgIDogUmVuZGVyT2JqZWN0KG5vZGUpCisgICAgLCBtX2xheWVy
KDApCit7Cit9CisKK1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6On5SZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KCkKK3sKKyAgICAvLyBPdXIgbGF5ZXIgc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95
ZWQgYW5kIGNsZWFyZWQgYnkgbm93CisgICAgQVNTRVJUKCFoYXNMYXllcigpKTsKKyAgICBBU1NF
UlQoIW1fbGF5ZXIpOworfQorCit2b2lkIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OmRlc3Ry
b3lMYXllcigpCit7CisgICAgQVNTRVJUKCFoYXNMYXllcigpKTsgLy8gQ2FsbGVycyBzaG91bGQg
aGF2ZSBhbHJlYWR5IGNhbGxlZCBzZXRIYXNMYXllcihmYWxzZSkKKyAgICBBU1NFUlQobV9sYXll
cik7CisgICAgbV9sYXllci0+ZGVzdHJveShyZW5kZXJBcmVuYSgpKTsKKyAgICBtX2xheWVyID0g
MDsKK30KKwordm9pZCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjplbnN1cmVMYXllcigpCit7
CisgICAgaWYgKG1fbGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGF5ZXIgPSBuZXcg
KHJlbmRlckFyZW5hKCkpIFJlbmRlckxheWVyKHRoaXMpOworICAgIHNldEhhc0xheWVyKHRydWUp
OworICAgIG1fbGF5ZXItPmluc2VydE9ubHlUaGlzTGF5ZXIoKTsKK30KKworYm9vbCBSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0OjpoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fbGF5ZXIgJiYgbV9sYXllci0+aXNTZWxmUGFpbnRpbmdMYXllcigpOworfQorCit2
b2lkIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpCit7CisgICAg
Ly8gUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQgY2FsbHMgYmFjayB0byBkZXN0cm95TGF5
ZXIoKSBmb3IgbGF5ZXIgZGVzdHJ1Y3Rpb24KKyAgICBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ry
b3llZCgpOworfQorCit2b2lkIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OnN0eWxlV2lsbENo
YW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKQor
eworICAgIHNfd2FzRmxvYXRpbmcgPSBpc0Zsb2F0aW5nKCk7CisgICAgc19oYWRMYXllciA9IGhh
c0xheWVyKCk7CisgICAgc19oYWRUcmFuc2Zvcm0gPSBoYXNUcmFuc2Zvcm0oKTsKKyAgICBpZiAo
c19oYWRMYXllcikKKyAgICAgICAgc19sYXllcldhc1NlbGZQYWludGluZyA9IGxheWVyKCktPmlz
U2VsZlBhaW50aW5nTGF5ZXIoKTsKKworICAgIC8vIElmIG91ciB6LWluZGV4IGNoYW5nZXMgdmFs
dWUgb3Igb3VyIHZpc2liaWxpdHkgY2hhbmdlcywKKyAgICAvLyB3ZSBuZWVkIHRvIGRpcnR5IG91
ciBzdGFja2luZyBjb250ZXh0J3Mgei1vcmRlciBsaXN0LgorICAgIFJlbmRlclN0eWxlKiBvbGRT
dHlsZSA9IHN0eWxlKCk7CisgICAgaWYgKG9sZFN0eWxlICYmIG5ld1N0eWxlKSB7CisgICAgICAg
IGlmIChwYXJlbnQoKSkgeworICAgICAgICAgICAgLy8gRG8gYSByZXBhaW50IHdpdGggdGhlIG9s
ZCBzdHlsZSBmaXJzdCwgZS5nLiwgZm9yIGV4YW1wbGUgaWYgd2UgZ28gZnJvbQorICAgICAgICAg
ICAgLy8gaGF2aW5nIGFuIG91dGxpbmUgdG8gbm90IGhhdmluZyBhbiBvdXRsaW5lLgorICAgICAg
ICAgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlUmVwYWludExheWVyKSB7CisgICAgICAg
ICAgICAgICAgbGF5ZXIoKS0+cmVwYWludEluY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7CisgICAgICAg
ICAgICAgICAgaWYgKCEob2xkU3R5bGUtPmNsaXAoKSA9PSBuZXdTdHlsZS0+Y2xpcCgpKSkKKyAg
ICAgICAgICAgICAgICAgICAgbGF5ZXIoKS0+Y2xlYXJDbGlwUmVjdHNJbmNsdWRpbmdEZXNjZW5k
YW50cygpOworICAgICAgICAgICAgfSBlbHNlIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZVJl
cGFpbnQgfHwgbmV3U3R5bGUtPm91dGxpbmVTaXplKCkgPCBvbGRTdHlsZS0+b3V0bGluZVNpemUo
KSkKKyAgICAgICAgICAgICAgICByZXBhaW50KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
ZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VMYXlvdXQgfHwgZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VT
aW1wbGlmaWVkTGF5b3V0KSB7CisgICAgICAgICAgICAvLyBXaGVuIGEgbGF5b3V0IGhpbnQgaGFw
cGVucywgd2UgZ28gYWhlYWQgYW5kIGRvIGEgcmVwYWludCBvZiB0aGUgbGF5ZXIsIHNpbmNlIHRo
ZSBsYXllciBjb3VsZAorICAgICAgICAgICAgLy8gZW5kIHVwIGJlaW5nIGRlc3Ryb3llZC4KKyAg
ICAgICAgICAgIGlmIChoYXNMYXllcigpKSB7CisgICAgICAgICAgICAgICAgaWYgKG9sZFN0eWxl
LT5wb3NpdGlvbigpICE9IG5ld1N0eWxlLT5wb3NpdGlvbigpCisgICAgICAgICAgICAgICAgICAg
IHx8IG9sZFN0eWxlLT56SW5kZXgoKSAhPSBuZXdTdHlsZS0+ekluZGV4KCkKKyAgICAgICAgICAg
ICAgICAgICAgfHwgb2xkU3R5bGUtPmhhc0F1dG9aSW5kZXgoKSAhPSBuZXdTdHlsZS0+aGFzQXV0
b1pJbmRleCgpCisgICAgICAgICAgICAgICAgICAgIHx8ICEob2xkU3R5bGUtPmNsaXAoKSA9PSBu
ZXdTdHlsZS0+Y2xpcCgpKQorICAgICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+aGFzQ2xp
cCgpICE9IG5ld1N0eWxlLT5oYXNDbGlwKCkKKyAgICAgICAgICAgICAgICAgICAgfHwgb2xkU3R5
bGUtPm9wYWNpdHkoKSAhPSBuZXdTdHlsZS0+b3BhY2l0eSgpCisgICAgICAgICAgICAgICAgICAg
IHx8IG9sZFN0eWxlLT50cmFuc2Zvcm0oKSAhPSBuZXdTdHlsZS0+dHJhbnNmb3JtKCkKKyNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT5maWx0
ZXIoKSAhPSBuZXdTdHlsZS0+ZmlsdGVyKCkKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICAgICAgbGF5ZXIoKS0+cmVwYWludEluY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7
CisgICAgICAgICAgICB9IGVsc2UgaWYgKG5ld1N0eWxlLT5oYXNUcmFuc2Zvcm0oKSB8fCBuZXdT
dHlsZS0+b3BhY2l0eSgpIDwgMSB8fCBuZXdTdHlsZS0+aGFzRmlsdGVyKCkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgbGF5ZXIgeWV0LCBidXQgd2UgYXJlIGdvaW5n
IHRvIGdldCBvbmUgYmVjYXVzZSBvZiB0cmFuc2Zvcm0gb3Igb3BhY2l0eSwKKyAgICAgICAgICAg
ICAgICAvLyAgdGhlbiB3ZSBuZWVkIHRvIHJlcGFpbnQgdGhlIG9sZCBwb3NpdGlvbiBvZiB0aGUg
b2JqZWN0LgorICAgICAgICAgICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIG5l
d1N0eWxlKTsKK30KKwordm9pZCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQor
eworICAgIFJlbmRlck9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOworICAg
IHVwZGF0ZUZyb21TdHlsZSgpOworCisgICAgaWYgKHJlcXVpcmVzTGF5ZXIoKSkgeworICAgICAg
ICBpZiAoIWxheWVyKCkgJiYgbGF5ZXJDcmVhdGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkpIHsKKyAg
ICAgICAgICAgIGlmIChzX3dhc0Zsb2F0aW5nICYmIGlzRmxvYXRpbmcoKSkKKyAgICAgICAgICAg
ICAgICBzZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUpOworICAgICAgICAgICAgZW5zdXJlTGF5ZXIo
KTsKKyAgICAgICAgICAgIGlmIChwYXJlbnQoKSAmJiAhbmVlZHNMYXlvdXQoKSAmJiBjb250YWlu
aW5nQmxvY2soKSkgeworICAgICAgICAgICAgICAgIGxheWVyKCktPnNldFJlcGFpbnRTdGF0dXMo
TmVlZHNGdWxsUmVwYWludCk7CisgICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgb25seSBvbmUg
bGF5ZXIgdG8gdXBkYXRlLCBpdCBpcyBub3Qgd29ydGggdXNpbmcgfGNhY2hlZE9mZnNldHwgc2lu
Y2UKKyAgICAgICAgICAgICAgICAvLyB3ZSBhcmUgbm90IHN1cmUgdGhlIHZhbHVlIHdpbGwgYmUg
dXNlZC4KKyAgICAgICAgICAgICAgICBsYXllcigpLT51cGRhdGVMYXllclBvc2l0aW9ucygwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAobGF5ZXIoKSAmJiBsYXll
cigpLT5wYXJlbnQoKSkgeworICAgICAgICBzZXRIYXNUcmFuc2Zvcm0oZmFsc2UpOyAvLyBFaXRo
ZXIgYSB0cmFuc2Zvcm0gd2Fzbid0IHNwZWNpZmllZCBvciB0aGUgb2JqZWN0IGRvZXNuJ3Qgc3Vw
cG9ydCB0cmFuc2Zvcm1zLCBzbyBqdXN0IG51bGwgb3V0IHRoZSBiaXQuCisgICAgICAgIHNldEhh
c1JlZmxlY3Rpb24oZmFsc2UpOworICAgICAgICBsYXllcigpLT5yZW1vdmVPbmx5VGhpc0xheWVy
KCk7IC8vIGNhbGxzIGRlc3Ryb3lMYXllcigpIHdoaWNoIGNsZWFycyBtX2xheWVyCisgICAgICAg
IGlmIChzX3dhc0Zsb2F0aW5nICYmIGlzRmxvYXRpbmcoKSkKKyAgICAgICAgICAgIHNldENoaWxk
TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgICAgIGlmIChzX2hhZFRyYW5zZm9ybSkKKyAgICAgICAg
ICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworICAgIH0KKworICAgIGlm
IChsYXllcigpKSB7CisgICAgICAgIGxheWVyKCktPnN0eWxlQ2hhbmdlZChkaWZmLCBvbGRTdHls
ZSk7CisgICAgICAgIGlmIChzX2hhZExheWVyICYmIGxheWVyKCktPmlzU2VsZlBhaW50aW5nTGF5
ZXIoKSAhPSBzX2xheWVyV2FzU2VsZlBhaW50aW5nKQorICAgICAgICAgICAgc2V0Q2hpbGROZWVk
c0xheW91dCh0cnVlKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTk1Y2Q1YzA4OTgxMDRhYzY4MGQzYjJlYzNiZGJlNDAzYzQzN2U2OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0LmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5
OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAgICAgIChDKSAxOTk5IEFudHRp
IEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2
LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVm
IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3RfaAorI2RlZmluZSBSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0X2gKKworI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFJlbmRlckxheWVyOworCitjbGFzcyBSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0IDogcHVibGljIFJlbmRlck9iamVjdCB7CitwdWJsaWM6CisgICAgUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdChOb2RlKik7CisgICAgdmlydHVhbCB+UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCgpOworCisgICAgLy8gQ2FsbGVkIGJ5IFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkg
YW5kIGlzIHRoZSBvbmx5IHdheSBsYXllcnMgc2hvdWxkIGV2ZXIgYmUgZGVzdHJveWVkCisgICAg
dm9pZCBkZXN0cm95TGF5ZXIoKTsKKworICAgIGJvb2wgaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSBj
b25zdDsKKyAgICBSZW5kZXJMYXllciogbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyOyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29u
c3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tU3R5bGUoKSB7IH0KKworICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgPSAwOworCitwcm90ZWN0ZWQ6Cisg
ICAgdm9pZCBlbnN1cmVMYXllcigpOworCisgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3ll
ZCgpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5zZm9ybWFi
bGVPYmplY3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBSZW5kZXJM
YXllciogbV9sYXllcjsKKworICAgIC8vIFVzZWQgdG8gc3RvcmUgc3RhdGUgYmV0d2VlbiBzdHls
ZVdpbGxDaGFuZ2UgYW5kIHN0eWxlRGlkQ2hhbmdlCisgICAgc3RhdGljIGJvb2wgc193YXNGbG9h
dGluZzsKKyAgICBzdGF0aWMgYm9vbCBzX2hhZExheWVyOworICAgIHN0YXRpYyBib29sIHNfaGFk
VHJhbnNmb3JtOworICAgIHN0YXRpYyBib29sIHNfbGF5ZXJXYXNTZWxmUGFpbnRpbmc7Cit9Owor
CitpbmxpbmUgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogdG9SZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0KQoreworICAgIEFTU0VSVCghb2JqZWN0IHx8IG9i
amVjdC0+aXNUcmFuc2Zvcm1hYmxlT2JqZWN0KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Kj4ob2JqZWN0KTsKK30KKworaW5saW5lIGNvbnN0IFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdChjb25z
dCBSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NFUlQoIW9iamVjdCB8fCBvYmplY3Qt
PmlzVHJhbnNmb3JtYWJsZU9iamVjdCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCo+KG9iamVjdCk7Cit9CisKKy8vIFRoaXMgd2lsbCBj
YXRjaCBhbnlvbmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2FzdC4KK3ZvaWQgdG9SZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqKTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggMDJiNTRjNjYw
YzlkYjJiYjEwMTBlOTBlNzIzOWI3ZWRkNTA1ZjMxZC4uYzU2MWJiMDNjZjY3Zjk2MWY0MDBjY2Uz
NTBlZGYzMDNkNDczNzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cApAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgUmVuZGVyVmlldzo6bGF5b3V0KCkKICAgICBzZXRO
ZWVkc0xheW91dChmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6bWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3Rh
dGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCog
d2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclZpZXc6Om1hcExvY2FsVG9Db250YWluZXIoUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUm
IHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2Fz
Rml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gSWYgYSBjb250YWluZXIgd2FzIHNwZWNpZmllZCwgYW5k
IHdhcyBub3QgMCBvciB0aGUgUmVuZGVyVmlldywKICAgICAvLyB0aGVuIHdlIHNob3VsZCBoYXZl
IGZvdW5kIGl0IGJ5IG5vdy4KQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIFJlbmRlclZpZXc6Om1h
cExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IFRyYQogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKG1fZnJhbWVWaWV3LT5zY3JvbGxPZmZz
ZXRGb3JGaXhlZFBvc2l0aW9uKCkpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclZp
ZXc6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFu
Y2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2Nv
bnN0IFJlbmRlck9iamVjdCogUmVuZGVyVmlldzo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25z
dCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9t
ZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgLy8gSWYgYSBjb250YWluZXIgd2Fz
IHNwZWNpZmllZCwgYW5kIHdhcyBub3QgMCBvciB0aGUgUmVuZGVyVmlldywKICAgICAvLyB0aGVu
IHdlIHNob3VsZCBoYXZlIGZvdW5kIGl0IGJ5IG5vdy4KQEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lk
IFJlbmRlclZpZXc6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NvbXBvc2l0ZWQoUmVuZGVy
T2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgcmV0dXJuIG9iamVjdC0+aGFzTGF5ZXIoKSAmJiB0b1Jl
bmRlckJveE1vZGVsT2JqZWN0KG9iamVjdCktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOworICAg
IHJldHVybiBvYmplY3QtPmhhc0xheWVyKCkgJiYgdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KG9iamVjdCktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOwogfQogCiBzdGF0aWMgaW5saW5lIGJv
b2wgcmVuZGVyZXJPYnNjdXJlc0JhY2tncm91bmQoUmVuZGVyT2JqZWN0KiBvYmplY3QpCkBAIC0z
NzYsNyArMzc2LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50UmVjdGFuZ2xlSW5WaWV3QW5k
Q29tcG9zaXRlZExheWVycyhjb25zdCBMYXlvdXRSZWN0JiB1ciwKICNlbmRpZgogfQogCi12b2lk
IFJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3Zv
aWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNv
bnN0CiB7CiAgICAgLy8gSWYgYSBjb250YWluZXIgd2FzIHNwZWNpZmllZCwgYW5kIHdhcyBub3Qg
MCBvciB0aGUgUmVuZGVyVmlldywKICAgICAvLyB0aGVuIHdlIHNob3VsZCBoYXZlIGZvdW5kIGl0
IGJ5IG5vdy4KQEAgLTM5OCwyMCArMzk4LDIwIEBAIHZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJl
Y3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMCiAg
ICAgICAgIHJlY3QubW92ZShtX2ZyYW1lVmlldy0+c2Nyb2xsT2Zmc2V0Rm9yRml4ZWRQb3NpdGlv
bigpKTsKICAgICAgICAgCiAgICAgLy8gQXBwbHkgb3VyIHRyYW5zZm9ybSBpZiB3ZSBoYXZlIG9u
ZSAoYmVjYXVzZSBvZiBmdWxsIHBhZ2Ugem9vbWluZykuCi0gICAgaWYgKCFyZXBhaW50Q29udGFp
bmVyICYmIG1fbGF5ZXIgJiYgbV9sYXllci0+dHJhbnNmb3JtKCkpCi0gICAgICAgIHJlY3QgPSBt
X2xheWVyLT50cmFuc2Zvcm0oKS0+bWFwUmVjdChyZWN0KTsKKyAgICBpZiAoIXJlcGFpbnRDb250
YWluZXIgJiYgbGF5ZXIoKSAmJiBsYXllcigpLT50cmFuc2Zvcm0oKSkKKyAgICAgICAgcmVjdCA9
IGxheWVyKCktPnRyYW5zZm9ybSgpLT5tYXBSZWN0KHJlY3QpOwogfQogCiB2b2lkIFJlbmRlclZp
ZXc6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewotICAgIHJlY3RzLmFwcGVuZChwaXhlbFNu
YXBwZWRJbnRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBtX2xheWVyLT5zaXplKCkpKTsKKyAgICBy
ZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgbGF5ZXIo
KS0+c2l6ZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmICh3YXNG
aXhlZCkKICAgICAgICAgKndhc0ZpeGVkID0gZmFsc2U7Ci0gICAgcXVhZHMuYXBwZW5kKEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIG1fbGF5ZXItPnNpemUoKSkpOworICAgIHF1YWRzLmFwcGVuZChG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllcigpLT5zaXplKCkpKTsKIH0KIAogc3RhdGljIFJl
bmRlck9iamVjdCogcmVuZGVyZXJBZnRlclBvc2l0aW9uKFJlbmRlck9iamVjdCogb2JqZWN0LCB1
bnNpZ25lZCBvZmZzZXQpCkBAIC00NTYsNyArNDU2LDcgQEAgSW50UmVjdCBSZW5kZXJWaWV3Ojpz
ZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKICAgICAgICAg
UmVuZGVyU2VsZWN0aW9uSW5mbyogaW5mbyA9IGktPnNlY29uZC5nZXQoKTsKICAgICAgICAgLy8g
UmVuZGVyU2VsZWN0aW9uSW5mbzo6cmVjdCgpIGlzIGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGUg
cmVwYWludENvbnRhaW5lciwgc28gbWFwIHRvIHBhZ2UgY29vcmRpbmF0ZXMuCiAgICAgICAgIExh
eW91dFJlY3QgY3VyclJlY3QgPSBpbmZvLT5yZWN0KCk7Ci0gICAgICAgIGlmIChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IGluZm8tPnJlcGFpbnRDb250YWluZXIoKSkg
eworICAgICAgICBpZiAoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
ciA9IGluZm8tPnJlcGFpbnRDb250YWluZXIoKSkgewogICAgICAgICAgICAgRmxvYXRRdWFkIGFi
c1F1YWQgPSByZXBhaW50Q29udGFpbmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChj
dXJyUmVjdCkpOwogICAgICAgICAgICAgY3VyclJlY3QgPSBhYnNRdWFkLmVuY2xvc2luZ0JvdW5k
aW5nQm94KCk7IAogICAgICAgICB9CkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBSZW5kZXJWaWV3
OjpzZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJP
YmplY3QqIGUKICAgICB9CiAKICAgICBpZiAoYmxvY2tSZXBhaW50TW9kZSAhPSBSZXBhaW50Tm90
aGluZykKLSAgICAgICAgbV9sYXllci0+Y2xlYXJCbG9ja1NlbGVjdGlvbkdhcHNCb3VuZHMoKTsK
KyAgICAgICAgbGF5ZXIoKS0+Y2xlYXJCbG9ja1NlbGVjdGlvbkdhcHNCb3VuZHMoKTsKIAogICAg
IC8vIE5vdyB0aGF0IHRoZSBzZWxlY3Rpb24gc3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBmb3IgdGhl
IG5ldyBvYmplY3RzLCB3YWxrIHRoZW0gYWdhaW4gYW5kCiAgICAgLy8gcHV0IHRoZW0gaW4gdGhl
IG5ldyBvYmplY3RzIGxpc3QuCkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBSZW5kZXJWaWV3Ojpn
ZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiYgc3RhcnRSZW5kZXJlciwgaW50JiBzdGFydE9mZnNl
dCwgUmUKIAogdm9pZCBSZW5kZXJWaWV3OjpjbGVhclNlbGVjdGlvbigpCiB7Ci0gICAgbV9sYXll
ci0+cmVwYWludEJsb2NrU2VsZWN0aW9uR2FwcygpOworICAgIGxheWVyKCktPnJlcGFpbnRCbG9j
a1NlbGVjdGlvbkdhcHMoKTsKICAgICBzZXRTZWxlY3Rpb24oMCwgLTEsIDAsIC0xLCBSZXBhaW50
TmV3TWludXNPbGQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRl
eCAyOTZjNjI5ZWNhODExYzU5YjZkNjQxNzAzNTNlZmRhMDljYjUzZmVlLi42YmQzNDdjZjdlZTgy
NzlkZTExMTY3MjVjZjFlZjJjYjAwYjEzNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogCiAgICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lVmlldzsgfQogCi0gICAgdmlydHVhbCB2b2lk
IGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVwYWludFZpZXdSZWN0YW5nbGUoY29uc3QgTGF5
b3V0UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOwogICAgIC8vIFJlcGFpbnQgdGhlIHZp
ZXcsIGFuZCBhbGwgY29tcG9zaXRlZCBsYXllcnMgdGhhdCBpbnRlcnNlY3QgdGhlIGdpdmVuIGFi
c29sdXRlIHJlY3RhbmdsZS4KICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSdkIG5ldmVyIGhhdmUg
dG8gZG8gdGhpcywgaWYgYWxsIHJlcGFpbnRzIGFyZSBjb250YWluZXItcmVsYXRpdmUuCkBAIC0y
MDcsOCArMjA3LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzUmVuZGVyQ291bnRlcnMoKSB7IHJl
dHVybiBtX3JlbmRlckNvdW50ZXJDb3VudDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2
b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBB
cHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2FzRml4
ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCog
cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0
b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0g
QXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0Zp
eGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3Qq
IHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
YW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1
c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBy
ZXF1aXJlc0NvbHVtbnMoaW50IGRlc2lyZWRDb2x1bW5Db3VudCkgY29uc3QgT1ZFUlJJREU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCmluZGV4
IDFmMGE0YTM4ZTcyZTIxYTdkYzNmMGFkY2QzY2FlMzYzYzhhNTFkOTIuLmM4OWNmMDU3OWI3Yjlj
NTQ1YTlkYmEyOTJlZDA3NDdkOGY2NWVlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcApAQCAtMTA2LDYgKzEwNiw3IEBACiAjaW5jbHVkZSAi
UmVuZGVyVGV4dEZyYWdtZW50LmNwcCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5jcHAiCiAjaW5j
bHVkZSAiUmVuZGVyVGhlbWVXaW4uY3BwIgorI2luY2x1ZGUgIlJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QuY3BwIgogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuY3BwIgogI2luY2x1ZGUgIlJl
bmRlclZpZGVvLmNwcCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmNwcCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKaW5kZXggMzYxMjc5NDE1YWFk
ZTYyOThlM2QyMmMwNWZmNmE0ZmUzY2VkOTQwOC4uOWYzOTM1N2MxYjY0ZjQwMDE1Yjg5OWM3ODFi
YWIxMDRkZDQ2OTY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdCbG9jay5jcHAKQEAgLTYxLDkgKzYxLDkgQEAgdm9pZCBSZW5kZXJTVkdCbG9jazo6c2V0
U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgUmVuZGVyQmxvY2s6OnNl
dFN0eWxlKHVzZVN0eWxlLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHQmxvY2s6OnVw
ZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpCit2b2lkIFJlbmRlclNWR0Jsb2NrOjp1cGRhdGVG
cm9tU3R5bGUoKQogewotICAgIFJlbmRlckJsb2NrOjp1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5
bGUoKTsKKyAgICBSZW5kZXJCbG9jazo6dXBkYXRlRnJvbVN0eWxlKCk7CiAKICAgICAvLyBSZW5k
ZXJTVkdsb2NrLCB1c2VkIGJ5IFJlbmRlcihTVkdUZXh0fEZvcmVpZ25PYmplY3QpLCBpcyBub3Qg
YWxsb3dlZCB0byBjYWxsIHNldEhhc092ZXJmbG93Q2xpcCh0cnVlKS4KICAgICAvLyBSZW5kZXJC
bG9jayBhc3N1bWVzIGEgbGF5ZXIgdG8gYmUgcHJlc2VudCB3aGVuIHRoZSBvdmVyZmxvdyBjbGlw
IGZ1bmN0aW9uYWxpdHkgaXMgcmVxdWVzdGVkLiBCb3RoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKaW5kZXggN2Y1Yjc4NTMyOGIwNTczZTI5ZmYzOThm
ZjIwNzcxMTU4NTIzYTI2YS4uMjIyZDVlZTIwMzUyMGE1MGZmN2M5MjQzNDliNDIxYWEwMzc5OWI2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9j
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaApA
QCAtMzksNyArMzksNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+KTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21T
dHlsZSgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9y
PEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdC5jcHAKaW5kZXggOGY4NDJlZTIxNTE5ZGFhNDFkMDYwY2NjYjY1NTZlMWQxNzA5
MWNjYi4uYzJkYTU1YzIzZTNhOWM1ZDBlNjQ2MDliOThmNWNiZmQ5NjQyNTBkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmpl
Y3QuY3BwCkBAIC04OCwxMiArODgsMTIgQEAgdm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgIH0KIH0K
IAotTGF5b3V0UmVjdCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QK
K0xheW91dFJlY3QgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29u
c3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lcik7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQp
IGNvbnN0Cit2b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JS
ZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0
UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3Vw
cG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lciwg
cmVwYWludFJlY3QsIGZpeGVkKTsKIH0KQEAgLTE5MCwxMiArMTkwLDEyIEBAIGJvb2wgUmVuZGVy
U1ZHRm9yZWlnbk9iamVjdDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRU
ZXN0UmVzdWx0JiwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHRm9yZWln
bk9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29u
dGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR0Zv
cmVpZ25PYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBM
b2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAg
U1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0aGlzLCByZXBhaW50Q29udGFp
bmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSAmIFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCB3YXNG
aXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6
cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0
b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAorY29uc3Qg
UmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFp
bmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJl
bmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHUmVu
ZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcih0aGlzLCBhbmNlc3RvclRvU3RvcEF0
LCBnZW9tZXRyeU1hcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCmluZGV4IDdlNTJlMDBjMjI1NmQ4NWNkODllNzI1
ZTJlODkxZDA5ZmUzMjgxYzAuLmQxMjVjYWY1Y2Q5YzkzYWRhOWNiYWIxMzFkOTIwNzE1MjNkZjM5
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Rm9yZWlnbk9iamVjdC5oCkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCi0gICAgdmlydHVh
bCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0
ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCBM
YXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKQEAgLTU0LDggKzU0LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVx
dWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0UG9pbnQmIHBvaW50SW5Db250YWlu
ZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzU1ZHRm9yZWlnbk9iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1h
cExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9m
ZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29u
c3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5
TWFwJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBN
YXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNuYXBP
ZmZzZXRGb3JUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNv
bnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdl
b21ldHJ5TWFwJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJh
bnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdH
cmFkaWVudFN0b3AuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3Jh
ZGllbnRTdG9wLmgKaW5kZXggYjkwYWI1MDgxMDQxMTM4NDE0MWMzMjM4OTQ3NmUzYzg0NDM0MDY1
Yi4uOTViYzM0ZTJiZGJkNjAwNTkwM2ZhN2MxNjA2N2Q4MTkyMzEyN2U4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIG92ZXJyaWRlcyBhcmUgbmVlZGVk
IHRvIHByZXZlbnQgQVNTRVJUcyBvbiA8c3ZnPjxzdG9wIC8+PC9zdmc+CiAgICAgLy8gUmVuZGVy
T2JqZWN0J3MgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgQVNTRVJUX05PVF9SRUFDSEVEKCkKICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MDAKLSAgICB2
aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICB2aXJ0dWFs
IExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCopIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQogICAg
IHZpcnR1YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gRmxv
YXRSZWN0KCk7IH0KICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNv
bnN0IHsgcmV0dXJuIEZsb2F0UmVjdCgpOyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWlu
dFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5D
b250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyLmgKaW5kZXggZjI2YzVmYzYxYTM3ZjgyMDdkNGQ2NDliZTY4MDlkNTJhMmY4ODI1
Zi4uYjRiYzIzNDVhNjU4MTJiM2JmMmVhOWNhZGQzNzY4NjQ3OWQ1ZmRlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5l
ci5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICAKLSAgICB2aXJ0dWFsIExheW91
dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3Qq
KSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3Qg
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCop
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0
OwogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0
VGVzdEFjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZS5jcHAKaW5kZXggMjFiZWQ0YTE1ZWI3MTIyNDZkNGY5YTkzMTRiY2MyZTcxNjZmMWMx
Mi4uOTAxZDQ3MDY3MTJkNWNiZGQyZGRlM2UxZjVmODU1MGNmMmUyOWZkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcApAQCAtNjksMjIg
KzY5LDIyIEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdJbmxpbmU6OnJlcGFpbnRSZWN0SW5Mb2NhbENv
b3JkaW5hdGVzKCkgY29uc3QKICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiB9CiAKLUxheW91dFJl
Y3QgUmVuZGVyU1ZHSW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVy
U1ZHSW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5k
ZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29u
dGFpbmVyKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdJbmxpbmU6OmNvbXB1dGVGbG9hdFJlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3Qm
IHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdJbmxpbmU6OmNv
bXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7
CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQodGhpcywg
cmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJT
VkdJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0Nv
bnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdJ
bmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVw
YWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRv
Q29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVu
ZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0aGlzLCByZXBhaW50Q29udGFpbmVyLCB0
cmFuc2Zvcm1TdGF0ZSwgbW9kZSAmIFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCB3YXNGaXhlZCk7
CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHSW5saW5lOjpwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBS
ZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5kZXJPYmplY3Qq
IFJlbmRlclNWR0lubGluZTo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2Vv
bWV0cnlNYXApIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBw
aW5nVG9Db250YWluZXIodGhpcywgYW5jZXN0b3JUb1N0b3BBdCwgZ2VvbWV0cnlNYXApOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKaW5kZXgg
OGVmOWNlZDdhYTEyMGUzMTBjMGNkNzljM2QyYzhiZjVjNTRkMWVjZi4uZWRiNzk1NzI2MjYzYzI2
YjRjMDlmYTRiYTMzNmEwNmYyN2FmOGVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCkBAIC00NSwxMCArNDUsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3Q7CiAgICAgdmlydHVh
bCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdDsKIAotICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBt
b2RlID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wq
IHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJP
YmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CisgICAgdmlydHVh
bCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwg
TWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFw
T2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihj
b25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJH
ZW9tZXRyeU1hcCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2Rl
bE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVs
T2JqZWN0LmNwcAppbmRleCAwODJiZjQ4N2U0ZDliM2VhYWE4ZDU2ZDExODRlM2QwYTgxMWRkNzJk
Li5iZWEyZDJiYzBlMTA3MmRhODQ5NGNhMmQ5NTAwMjRlMDk1MTQwODA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlbmRlclNWR01vZGVsT2JqZWN0LmgiCiAKICNp
bmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgorI2luY2x1ZGUgIlJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNl
c0NhY2hlLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgpAQCAtNDUsMjIgKzQ2LDIy
IEBAIFJlbmRlclNWR01vZGVsT2JqZWN0OjpSZW5kZXJTVkdNb2RlbE9iamVjdChTVkdTdHlsZWRF
bGVtZW50KiBub2RlKQogewogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0Ojpj
bGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFp
bnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIpOwogfQogCi12
b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVj
dCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNvbXB1dGVG
bG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAg
U1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWlu
dENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdNb2Rl
bE9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29u
dGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR01v
ZGVsT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9j
YWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIFNW
R1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIodGhpcywgcmVwYWludENvbnRhaW5l
ciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUgJiBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3Jtcywgd2FzRml4
ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR01vZGVsT2JqZWN0OjpwdXNo
TWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRv
U3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5k
ZXJPYmplY3QqIFJlbmRlclNWR01vZGVsT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNv
bnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdl
b21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3Vw
cG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcih0aGlzLCBhbmNlc3RvclRvU3RvcEF0LCBnZW9t
ZXRyeU1hcCk7CiB9CkBAIC02OCw3ICs2OSw3IEBAIGNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVy
U1ZHTW9kZWxPYmplY3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94CiAv
LyBDb3BpZWQgZnJvbSBSZW5kZXJCb3gsIHRoaXMgbWV0aG9kIGxpa2VseSByZXF1aXJlcyBmdXJ0
aGVyIHJlZmFjdG9yaW5nIHRvIHdvcmsgZWFzaWx5IGZvciBib3RoIFNWRyBhbmQgQ1NTIEJveCBN
b2RlbCBjb250ZW50LgogLy8gRklYTUU6IFRoaXMgbWF5IGFsc28gbmVlZCB0byBtb3ZlIGludG8g
U1ZHUmVuZGVyU3VwcG9ydCBhcyB0aGUgUmVuZGVyQm94IHZlcnNpb24gZGVwZW5kcwogLy8gb24g
Ym9yZGVyQm91bmRpbmdCb3goKSB3aGljaCBTVkcgUmVuZGVyQm94IHN1YmNsYXNlcyAobGlrZSBT
VkdSZW5kZXJCbG9jaykgZG8gbm90IGltcGxlbWVudC4KLUxheW91dFJlY3QgUmVuZGVyU1ZHTW9k
ZWxPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBMYXlvdXRQb2ludCopIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclNW
R01vZGVsT2JqZWN0OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRQb2ludCopIGNvbnN0CiB7CiAgICAgTGF5
b3V0UmVjdCBib3ggPSBlbmNsb3NpbmdMYXlvdXRSZWN0KHJlcGFpbnRSZWN0SW5Mb2NhbENvb3Jk
aW5hdGVzKCkpOwogICAgIGFkanVzdFJlY3RGb3JPdXRsaW5lQW5kU2hhZG93KGJveCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgK
aW5kZXggYTI4Mzc2NjI1YjkwYTc1MGI4MmNjODg2NWY5M2IwZmYzZDg5MzQzMi4uYzg5ZGNhZjFm
ZjZlZGY2YTI4YzU2N2U4OTVkYjc5YmYwN2UzMTkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaApAQCAtNTEsMTUgKzUxLDE1
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0g
ZmFsc2UpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVw
YWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9pbnQq
KSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJl
cGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJv
b2wgZml4ZWQgPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0
IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIExheW91dFBvaW50KikgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCi0gICAgdmlydHVh
bCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUg
PSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2Fz
Rml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVj
dCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5j
ZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2Rl
ID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdh
c0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmpl
Y3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCA1ZDU2YjVj
ZTc4OTc1ODUxMDM3ZDExZGIyOGFiNDYyNWQ5MzdmNjhjLi5iNmYwZTIzY2YxNWQ3MGQ0NmRmZThm
OGI2MjExMGJlYmMxYWVkNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTM2OSwxMiArMzY5LDEyIEBAIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgUmVuZGVyU1ZHUm9vdDo6bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fbG9jYWxUb1BhcmVudFRyYW5zZm9ybTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJT
VkdSb290OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyU1ZHUm9vdDo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVw
YWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lcik7CiB9CiAK
LXZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJv
b2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JS
ZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0
UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gQXBwbHkgb3Vy
IGxvY2FsIHRyYW5zZm9ybXMgKGV4Y2VwdCBmb3IgeC95IHRyYW5zbGF0aW9uKSwgdGhlbiBvdXIg
c2hhZG93LCAKICAgICAvLyBhbmQgdGhlbiBjYWxsIFJlbmRlckJveCdzIG1ldGhvZCB0byBoYW5k
bGUgYWxsIHRoZSBub3JtYWwgQ1NTIEJveCBtb2RlbCBiaXRzCkBAIC0zOTUsNyArMzk1LDcgQEAg
dm9pZCBSZW5kZXJTVkdSb290Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnQKIC8vIFRoaXMgbWV0aG9kIGV4cGVjdHMgbG9jYWwgQ1NT
IGJveCBjb29yZGluYXRlcy4KIC8vIENhbGxlcnMgd2l0aCBsb2NhbCBTVkcgdmlld3BvcnQgY29v
cmRpbmF0ZXMgc2hvdWxkIGZpcnN0IGFwcGx5IHRoZSBsb2NhbFRvQm9yZGVyQm94VHJhbnNmb3Jt
CiAvLyB0byBjb252ZXJ0IGZyb20gU1ZHIHZpZXdwb3J0IGNvb3JkaW5hdGVzIHRvIGxvY2FsIENT
UyBib3ggY29vcmRpbmF0ZXMuCi12b2lkIFJlbmRlclNWR1Jvb3Q6Om1hcExvY2FsVG9Db250YWlu
ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRl
JiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdSb290OjptYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRl
JiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdAogewogICAgIEFTU0VSVChtb2RlICYgfklzRml4ZWQpOyAvLyBXZSBzaG91
bGQgaGF2ZSBubyBmaXhlZCBjb250ZW50IGluIHRoZSBTVkcgcmVuZGVyaW5nIHRyZWUuCiAgICAg
QVNTRVJUKG1vZGUgJiBVc2VUcmFuc2Zvcm1zKTsgLy8gbWFwcGluZyBhIHBvaW50IHRocm91Z2gg
U1ZHIHcvbyByZXNwZWN0aW5nIHRyYXNuZm9ybXMgaXMgdXNlbGVzcy4KQEAgLTQwMyw3ICs0MDMs
NyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsCiAgICAgUmVuZGVyUmVwbGFjZWQ6Om1hcExvY2Fs
VG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUgfCBBcHBs
eUNvbnRhaW5lckZsaXAsIHdhc0ZpeGVkKTsKIH0KIAotY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5k
ZXJTVkdSb290OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNv
bnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR1Jvb3Q6OnB1c2hNYXBwaW5nVG9Db250
YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwg
UmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAogewogICAgIHJldHVybiBSZW5k
ZXJSZXBsYWNlZDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihhbmNlc3RvclRvU3RvcEF0LCBnZW9t
ZXRyeU1hcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9v
dC5oCmluZGV4IGEwNTY2YjEzNGEzNzI2ZTU1OGUyMjIzZWZhYjJlNzc5NTNhZjgyYWMuLjA1ZWUw
MjU4MTYxYzA4MDJiY2E2ZDRjMmI4OTgxOTFlNjU5NmQxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCkBAIC05MiwxMSArOTIsMTEgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYs
IEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNv
bnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJ
REU7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkg
Y29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFp
bnRSZWN0LCBib29sIGZpeGVkKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBt
YXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlD
b250YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkID0g
MCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hN
YXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9T
dG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExv
Y2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5
Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhlZCA9
IDApIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNo
TWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2Vz
dG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5k
ZXggZGUyZjAxNjVjYTRhYmVhYjFjY2JmYjljMDMyYWYwZWQwNjkyZjY2Ni4uNWUyMmMyOGZjODM0
MzQzYmNiMmJhM2I5ZTk3NTgyNDdiZDE0MDczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC05NCwyOSArOTQsMjkgQEAgY29uc3QgUmVu
ZGVyU1ZHVGV4dCogUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKGNv
bnN0IFJlbmRlck9iamUKICAgICByZXR1cm4gdG9SZW5kZXJTVkdUZXh0KHN0YXJ0KTsKIH0KIAot
TGF5b3V0UmVjdCBSZW5kZXJTVkdUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3Qg
UmVuZGVyU1ZHVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICByZXR1cm4gU1ZH
UmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWlu
dENvbnRhaW5lcik7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZVJlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiBy
ZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdUZXh0Ojpjb21wdXRlUmVjdEZv
clJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5
b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBGbG9hdFJlY3QgcmVwYWlu
dFJlY3QgPSByZWN0OwogICAgIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250
YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7CiAgICAgcmVjdCA9IGVuY2xvc2luZ0xheW91dFJl
Y3QocmVwYWludFJlY3QpOwogfQogCi12b2lkIFJlbmRlclNWR1RleHQ6OmNvbXB1dGVGbG9hdFJl
Y3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9h
dFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdUZXh0
Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25z
dAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHRo
aXMsIHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7CiB9CiAKLXZvaWQgUmVu
ZGVyU1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRv
Q29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNW
R1RleHQ6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVw
YWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRv
Q29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVu
ZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0aGlzLCByZXBhaW50Q29udGFpbmVyLCB0
cmFuc2Zvcm1TdGF0ZSwgbW9kZSAmIFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCB3YXNGaXhlZCk7
CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHVGV4dDo6cHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVu
ZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0KiBS
ZW5kZXJTVkdUZXh0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRy
eU1hcCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdU
b0NvbnRhaW5lcih0aGlzLCBhbmNlc3RvclRvU3RvcEF0LCBnZW9tZXRyeU1hcCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCmluZGV4IDBhMGMyODU2
YmFiZTA1OTY4ODA5ZjQwYzFjMThlM2FiY2NmZDhkMmYuLjhiNTE4Zjg1Zjg0OWJhYjc4NDhkNzEx
NTQ0NjJkYWNjYzBhYzZjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5oCkBAIC03MSwxMiArNzEsMTIgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNv
bnN0OwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2
aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsK
LSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxz
ZSkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wg
Zml4ZWQgPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVG
bG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVy
RmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1z
LCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgY29uc3Qg
UmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVs
T2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5l
ckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3Jt
cywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0
IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxk
LCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUNoaWxkKFJlbmRlck9iamVjdCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVE
ZXN0cm95ZWQoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclN1cHBvcnQuY3BwCmluZGV4IGZjNTcyYWQ2ZjNiMGVlYTY0YjE2YTQwNTVjOWM5
YzBmYjcyOGZiYzIuLmQxMzA5YWMxMTIyMGU5MWMyY2Q1YzY4ZGJiYzdiNWRkODEyYzZhOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNw
cApAQCAtNDYsNyArNDYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUxheW91dFJlY3Qg
U1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KQorTGF5b3V0UmVjdCBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCogcmVwYWludENvbnRhaW5lcikKIHsKICAgICAvLyBSZXR1cm4gZWFybHkgZm9yIGFueSBjYXNl
cyB3aGVyZSB3ZSBkb24ndCBhY3R1YWxseSBwYWludAogICAgIGlmIChvYmplY3QtPnN0eWxlKCkt
PnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYmICFvYmplY3QtPmVuY2xvc2luZ0xheWVyKCktPmhh
c1Zpc2libGVDb250ZW50KCkpCkBAIC01OSw3ICs1OSw3IEBAIExheW91dFJlY3QgU1ZHUmVuZGVy
U3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0
KiBvCiAgICAgcmV0dXJuIGVuY2xvc2luZ0xheW91dFJlY3QocmVwYWludFJlY3QpOwogfQogCi12
b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KGNvbnN0IFJl
bmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkKK3ZvaWQgU1ZHUmVuZGVyU3Vw
cG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVj
dCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpCiB7CiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUq
IHN2Z1N0eWxlID0gb2JqZWN0LT5zdHlsZSgpLT5zdmdTdHlsZSgpOwogICAgIGlmIChjb25zdCBT
aGFkb3dEYXRhKiBzaGFkb3cgPSBzdmdTdHlsZS0+c2hhZG93KCkpCkBAIC03MSw3ICs3MSw3IEBA
IHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoY29uc3Qg
UmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlCiAgICAgb2JqZWN0LT5wYXJlbnQoKS0+Y29tcHV0ZUZs
b2F0UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsK
IH0KIAotdm9pZCBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJl
bmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBib29sIHNuYXBPZmZzZXRGb3JUcmFu
c2Zvcm1zLCBib29sKiB3YXNGaXhlZCkKK3ZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRl
LCBib29sIHNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhlZCkKIHsKICAgICB0
cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybShvYmplY3QtPmxvY2FsVG9QYXJlbnRUcmFuc2Zv
cm0oKSk7CiAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2Nh
bFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJCb3gKICAgICBw
YXJlbnQtPm1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3Rh
dGUsIG1vZGUsIHdhc0ZpeGVkKTsKIH0KIAotY29uc3QgUmVuZGVyT2JqZWN0KiBTVkdSZW5kZXJT
dXBwb3J0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0
LCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2Vv
bWV0cnlNYXAmIGdlb21ldHJ5TWFwKQorY29uc3QgUmVuZGVyT2JqZWN0KiBTVkdSZW5kZXJTdXBw
b3J0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBj
b25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJH
ZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApCiB7CiAgICAgQVNTRVJUX1VOVVNFRChhbmNlc3RvclRv
U3RvcEF0LCBhbmNlc3RvclRvU3RvcEF0ICE9IG9iamVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmgKaW5kZXggYjYyY2NmYjJmMTg1ZTlm
OGYwY2VmNmY1ODFmYmMxODAzNjE4OGYxMC4uMGU5MTZjY2M2MDFlODcxMWM5NzUwZWZiZTQ4YmE0
ZjkzYjJlZWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJTdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJTdXBwb3J0LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSW1h
Z2VCdWZmZXI7CiBjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdDsKIGNsYXNzIFJlbmRlckdlb21l
dHJ5TWFwOworY2xhc3MgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDsKIGNsYXNzIFJlbmRlck9i
amVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgUmVuZGVyU1ZHUm9vdDsKQEAgLTYyLDEw
ICs2MywxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGFpbnRJbmZvSW50ZXJzZWN0c1Jl
cGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbG9jYWxSZXBhaW50UmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBsb2NhbFRyYW5zZm9ybSwgY29uc3QgUGFpbnRJbmZvJik7CiAKICAgICAvLyBJ
bXBvcnRhbnQgZnVuY3Rpb25zIHVzZWQgYnkgbmVhcmx5IGFsbCBTVkcgcmVuZGVyZXJzIGNlbnRy
YWxpemluZyBjb29yZGluYXRlIHRyYW5zZm9ybWF0aW9ucyAvIHJlcGFpbnQgcmVjdCBjYWxjdWxh
dGlvbnMKLSAgICBzdGF0aWMgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChjb25zdCBSZW5kZXJPYmplY3QqLCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lcik7Ci0gICAgc3RhdGljIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoY29uc3Qg
UmVuZGVyT2JqZWN0KiwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZs
b2F0UmVjdCYsIGJvb2wgZml4ZWQpOwotICAgIHN0YXRpYyB2b2lkIG1hcExvY2FsVG9Db250YWlu
ZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgYm9vbCBzbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcyA9IHRy
dWUsIGJvb2wqIHdhc0ZpeGVkID0gMCk7Ci0gICAgc3RhdGljIGNvbnN0IFJlbmRlck9iamVjdCog
cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJC
b3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKTsKKyAg
ICBzdGF0aWMgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBS
ZW5kZXJPYmplY3QqLCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KTsKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChjb25zdCBSZW5k
ZXJPYmplY3QqLCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBG
bG9hdFJlY3QmLCBib29sIGZpeGVkKTsKKyAgICBzdGF0aWMgdm9pZCBtYXBMb2NhbFRvQ29udGFp
bmVyKGNvbnN0IFJlbmRlck9iamVjdCosIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgYm9vbCBzbmFwT2Zmc2V0Rm9yVHJhbnNmb3Jt
cyA9IHRydWUsIGJvb2wqIHdhc0ZpeGVkID0gMCk7CisgICAgc3RhdGljIGNvbnN0IFJlbmRlck9i
amVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRy
eU1hcCYpOwogCiAgICAgLy8gU2hhcmVkIGJldHdlZW4gU1ZHIHJlbmRlcmVycyBhbmQgcmVzb3Vy
Y2VzLgogICAgIHN0YXRpYyB2b2lkIGFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBSZW5kZXJPYmplY3QqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160195</attachid>
            <date>2012-08-23 10:56:26 -0700</date>
            <delta_ts>2012-09-27 13:41:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86022-20120823135622.patch</filename>
            <type>text/plain</type>
            <size>149654</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzJjZDg5MmM4YTk5Y2U1
MjFmNGJkYjI0ZDE4YTM2NTE0YWJmNGQ2MC4uOWM3YTE0ODBhY2Y2YmU1NWQ1NmFlYmQ3MjljYjYx
NDczMTc3NmIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNyBAQAorMjAxMi0wOC0yMyAgRmxv
cmluIE1hbGl0YSAgPGZtYWxpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZmFjdG9yIGxh
eWVyLXJlbGF0ZWQgbG9naWMgb3V0IG9mIFJlbmRlckJveE1vZGVsT2JqZWN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjAyMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZXh0cmFjdHMg
bGF5ZXItcmVsYXRlZCBsb2dpYyBpbnRvIGEgZGVkaWNhdGVkIGNsYXNzCisgICAgICAgIChSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KSBhbmQgcmVmYWN0b3JzIGRlcGVuZGVudCBjb2RlIHRvIG1h
a2UgdXNlCisgICAgICAgIG9mIHRoZSBuZXcgdHlwZSBpbnN0ZWFkIG9mIFJlbmRlckJveE1vZGVs
T2JqZWN0LiBUaGlzIGlzIGluIHByZXBhcmF0aW9uCisgICAgICAgIG9mIGFkZGluZyBub24tUmVu
ZGVyQm94TW9kZWxPYmplY3QgbGF5ZXIgc3VwcHJ0LgorCisgICAgICAgIEFsbCBtZXRob2RzIHRo
YXQgd2VyZSB1c2luZyBSZW5kZXJCb3hNb2RlbE9iamVjdCBmb3IgbGF5ZXItcmVsYXRlZAorICAg
ICAgICBmdW5jdGlvbmFsaXR5IGFyZSB1cGRhdGVkIHRvIHdvcmsgd2l0aCBSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0CisgICAgICAgIGluc3RlYWQgKGEgUmVuZGVyTGF5ZXIncyByZW5kZXJlcigp
IGNhbiBubyBsb25nZXIgYmUgYXNzdW1lZCB0byBiZQorICAgICAgICBhIFJlbmRlckJveE1vZGVs
T2JqZWN0KS4KKworICAgICAgICBObyBuZXcgdGVzdHM6IHJlZmFjdG9yaW5nIHdpdGggbm8gYmVo
YXZpb3IgY2hhbmdlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5v
cmRlcjoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVuZGVyaW5n
L0xheW91dFJlcGFpbnRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXlvdXRS
ZXBhaW50ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCUi5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
c2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaDoKKyAgICAgICAgKFJlbmRlckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c3R5bGVEaWRDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojp1cGRhdGVGcm9tU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjplbmNsb3NpbmdGbG9hdFBhaW50aW5nTGF5ZXIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFJlbmRlckJveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVs
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojp+UmVuZGVy
Qm94TW9kZWxPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuaDoKKyAgICAgICAgKFJlbmRlckJveE1vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2Vv
bWV0cnlNYXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyR2VvbWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rvcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckdlb21ldHJ5TWFwLmg6CisgICAgICAgIChSZW5kZXJHZW9tZXRyeU1hcCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbmxpbmU6OnVwZGF0ZUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlcklubGluZTo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbmxpbmU6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW5saW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAgIChSZW5kZXJJbmxpbmUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxh
eWVyUG9zaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb21wdXRlUmVw
YWludFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrQ29udGFpbmluZ0Jsb2NrQ2hhaW5G
b3JQYWdpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXll
clBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUG9zaXRpb25lZENvbnRhaW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGFzQW5jZXN0b3JXaXRoRmlsdGVyT3V0c2V0
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsVG8pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2Nl
bmRhbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJl
bmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZW5kZXJlcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpyZXBhaW50T25Db21wb3NpdGluZ0NoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbkZvckNvbXBvc2l0aW5n
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKFJlbmRlckxpc3RN
YXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjphZGRM
YXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZW1vdmVMYXllcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojptb3ZlTGF5ZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6ZmluZE5leHRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmVuY2xvc2luZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5
b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29udGFpbmVyRm9yUmVwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnRVc2luZ0NvbnRhaW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZXBhaW50UmVjdGFuZ2xlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVw
YWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkanVzdFN0eWxlRGlmZmVy
ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om1hcExvY2FsVG9Db250YWlu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFp
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3Jt
RnJvbUNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdldFRyYW5z
Zm9ybUZyb21Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpsb2Nh
bFRvQ29udGFpbmVyUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2Fs
VG9Db250YWluZXJQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbnRh
aW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzQ29tcG9zaXRlZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzVHJhbnNmb3JtYWJsZU9iamVjdCk6CisgICAgICAg
IChSZW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZWxlY3Rp
b25SZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om91dGxp
bmVCb3VuZHNGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnNlbGVjdGlvblJlY3RGb3JS
ZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6
CisgICAgICAgIChSZW5kZXJSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNl
bGVjdGlvbkluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlbGVjdGlvbkluZm9CYXNl
OjpyZXBhaW50Q29udGFpbmVyKToKKyAgICAgICAgKFJlbmRlclNlbGVjdGlvbkluZm9CYXNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKFJlbmRlclRh
YmxlQ2VsbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29sOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmg6CisgICAgICAgIChSZW5k
ZXJUYWJsZUNvbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlUm93OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93Lmg6CisgICAgICAgIChS
ZW5kZXJUYWJsZVJvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6CisgICAgICAgIChSZW5kZXJUZXh0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0OjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6On5SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OmRlc3Ryb3lM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjplbnN1
cmVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Ojpo
YXNTZWxmUGFpbnRpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OjpsYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Ojp1cGRhdGVGcm9tU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6dG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjptYXBMb2Nh
bFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnB1c2hNYXBwaW5n
VG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6aXNDb21wb3NpdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZXc6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6
c2VsZWN0aW9uQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNldFNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpjbGVhclNlbGVjdGlvbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKFJlbmRlclZpZXcpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHA6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdCbG9jazo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0Jsb2NrLmg6CisgICAgICAgIChSZW5kZXJTVkdCbG9jayk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RG
b3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om1h
cExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9i
amVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg6CisgICAgICAgIChSZW5kZXJTVkdGb3JlaWduT2JqZWN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHSW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWlu
ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmg6CisgICAgICAg
IChSZW5kZXJTVkdJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9k
ZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R01vZGVsT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGluZUJvdW5kc0Zv
clJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
aDoKKyAgICAgICAgKFJlbmRlclNWR01vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUm9vdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUm9vdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSb290OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuaDoKKyAgICAgICAgKFJlbmRlclNWR1Jvb3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKFJlbmRlclNW
R1RleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxv
YXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpt
YXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6
OnB1c2hNYXBwaW5nVG9Db250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdSZW5kZXJTdXBw
b3J0KToKKwogMjAxMi0wOC0yMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCB0cml2aWFsIGJ1aWxkIGZpeCBmb3IgUXQvTWFj
IG9uIE9TIFggMTAuNjogQXZvaWQgdXNpbmcgYW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTE0
YzViZWE1ZDlhYTgwYzVjOGIzY2RiM2Y1YWNkNjQzMTQwNmEzOC4uYWU2YjZjYmJjYzlhM2I4Y2Yy
OTQ0MWJkZTYwYjQxMDkyMWU3NjVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwOTIsNiAr
MjA5Miw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5kZXJpbmcvUmVuZGVyVGV4dEZy
YWdtZW50LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJUZXh0VHJhY2tDdWUuY3BwCiAgICAgcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorICAgIHJlbmRlcmluZy9SZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAogICAgIHJlbmRl
cmluZy9SZW5kZXJWaWRlby5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGY1NzY0MjA1NmEzMzY0NDMzZTRkYWUzNDBkYWM0
YzZhZGFlZjBlZGEuLmE5NWE2NjExMmViZjRhNDczYTdmMmEyODE1YjI5YzAwYzA2MTY2MzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDI3MCw2ICs0MjcwLDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKaW5kZXggOGIwZGIyMTdkMDZlNzdhYjYzNTcwNzQyMGZjZTU4MzI0YTU5
ZmI0Yi4uNDFmMGRiNDBmOGQ2OTYzNjhjZTAyZmNmNjAxMzFhMmY3MmM2MDg2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCkBAIC0xMTc2LDYgKzExNzYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICByZW5kZXJpbmcvUmVu
ZGVyVGV4dEZyYWdtZW50LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRleHRUcmFja0N1ZS5j
cHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgXAorICAgIHJlbmRlcmluZy9SZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgXAogICAgIHJlbmRlcmluZy9S
ZW5kZXJXaWRnZXQuY3BwIFwKQEAgLTIzNTcsNiArMjM1OCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IHJlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRl
eHQuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggXAorICAgIHJlbmRlcmluZy9SZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJWaWRlby5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVy
Vmlldy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNzcwZGQ4NThjMjY1NDBlMmIwNTYxN2U5
MWY1YjkzOTg2ZmQ4MTNkMi4uYjA5ODQ1MTE5YjcwNzAwZTI3NGE1YjQzYTk1Zjc3YjQ0NGNmODAy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTExMDYsNyArMTEwNiw3IEBAIF9fWk5LN1dlYkNv
cmUxMVJlbmRlclN0eWxlNGZvbnRFdgogX19aTks3V2ViQ29yZTExU2NyaXB0VmFsdWU5Z2V0U3Ry
aW5nRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMlJlbmRl
ck9iamVjdDE0ZW5jbG9zaW5nTGF5ZXJFdgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTVs
b2NhbFRvQWJzb2x1dGVFUktOU18xMEZsb2F0UG9pbnRFYmIKLV9fWk5LN1dlYkNvcmUxMlJlbmRl
ck9iamVjdDIwbG9jYWxUb0NvbnRhaW5lclF1YWRFUktOU185RmxvYXRRdWFkRVBOU18yMFJlbmRl
ckJveE1vZGVsT2JqZWN0RWJiUGIKK19fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDIwbG9jYWxU
b0NvbnRhaW5lclF1YWRFUktOU185RmxvYXRRdWFkRVBOU18yNVJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3RFYmJQYgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdEViCiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QzOXBpeGVsU25hcHBlZEFic29s
dXRlQ2xpcHBlZE92ZXJmbG93UmVjdEV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3Q3Y2hp
bGRBdEVqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOGZjNTc4Njg2OWVlNzMwODY3NjgxZjJiNWI5MDU2
OGNlYTNhNTBhNC4uN2MyYTk3ODc4Nzk1YTAxOWRjYjQ3ZmZjZmQ1YzM4Mzk2MmE2NjZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtNTc3LDYgKzU3Nyw3IEBACiAgICAgICAgICAgICAncmVuZGVyaW5n
L1JlbmRlclBhcnQuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgn
LAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJUZXh0LmgnLAorICAgICAgICAgICAgJ3Jl
bmRlcmluZy9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmgnLAogICAgICAgICAgICAgJ3JlbmRl
cmluZy9SZW5kZXJUcmVlQXNUZXh0LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJW
aWV3LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaCcsCkBAIC00ODU5
LDYgKzQ4NjAsNyBAQAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oJywK
ICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5jcHAnLAogICAgICAgICAg
ICAgJ3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmgnLAorICAgICAgICAgICAgJ3JlbmRlcmlu
Zy9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVmlk
ZW8uY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVmlkZW8uaCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5vcmRlcgppbmRleCAwYjJiMTc1ODNjYjcwNjA3OWI3MzIyODdkMjhmZjI0MmNiMzVkM2ZjLi5l
YzUyM2Q3ZjBiMjAwOTcwY2RhY2ExOWVmZWIzNjZhYWFiOWZkNzEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3Jk
ZXIKQEAgLTgyMyw4ICs4MjMsOCBAQCBfX1pON1dlYkNvcmUxMVJlbmRlckJsb2NrMTRzdHlsZURp
ZENoYW5nZUVOU18xNVN0eWxlRGlmZmVyZW5jZUVQS05TXzExUmVuZGVyU3R5bAogX19aTjdXZWJD
b3JlOVJlbmRlckJveDE0c3R5bGVEaWRDaGFuZ2VFTlNfMTVTdHlsZURpZmZlcmVuY2VFUEtOU18x
MVJlbmRlclN0eWxlRQogX19aTjdXZWJDb3JlMjBSZW5kZXJCb3hNb2RlbE9iamVjdDE0c3R5bGVE
aWRDaGFuZ2VFTlNfMTVTdHlsZURpZmZlcmVuY2VFUEtOU18xMVJlbmRlclN0eWxlRQogX19aTjdX
ZWJDb3JlMTJSZW5kZXJPYmplY3QxNHN0eWxlRGlkQ2hhbmdlRU5TXzE1U3R5bGVEaWZmZXJlbmNl
RVBLTlNfMTFSZW5kZXJTdHlsZUUKLV9fWk43V2ViQ29yZTlSZW5kZXJCb3gyN3VwZGF0ZUJveE1v
ZGVsSW5mb0Zyb21TdHlsZUV2Ci1fX1pON1dlYkNvcmUyMFJlbmRlckJveE1vZGVsT2JqZWN0Mjd1
cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGVFdgorX19aTjdXZWJDb3JlOVJlbmRlckJveDE1dXBk
YXRlRnJvbVN0eWxlRXYKK19fWk43V2ViQ29yZTIwUmVuZGVyQm94TW9kZWxPYmplY3QxNXVwZGF0
ZUZyb21TdHlsZUV2CiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJTdHlsZTIxdmlzaXRlZERlcGVuZGVu
dENvbG9yRWkKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMjJjb2xvckluY2x1ZGluZ0ZhbGxi
YWNrRWlOU18xMkVCb3JkZXJTdHlsZUUKIF9fWk5LN1dlYkNvcmUxMFJlbmRlclZpZXcxMmlzUmVu
ZGVyVmlld0V2CkBAIC00MTcwLDcgKzQxNzAsNyBAQCBfX1pON1dlYkNvcmU0Tm9kZTExYXBwZW5k
Q2hpbGRFTjNXVEYxMFBhc3NSZWZQdHJJUzBfRUVSaWIKIF9fWk43V2ViQ29yZTROb2RlMTBsYXp5
QXR0YWNoRU5TMF8xN1Nob3VsZFNldEF0dGFjaGVkRQogX19aTjdXZWJDb3JlMTJSZW5kZXJJbmxp
bmVDMUVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxMlJlbmRlcklubGluZTE0c3R5bGVEaWRDaGFu
Z2VFTlNfMTVTdHlsZURpZmZlcmVuY2VFUEtOU18xMVJlbmRlclN0eWxlRQotX19aTjdXZWJDb3Jl
MTJSZW5kZXJJbmxpbmUyN3VwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZUV2CitfX1pON1dlYkNv
cmUxMlJlbmRlcklubGluZTE1dXBkYXRlRnJvbVN0eWxlRXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRl
cklubGluZTEzcmVxdWlyZXNMYXllckV2CiBfX1pOSzdXZWJDb3JlOUxlbmd0aEJveDdub25aZXJv
RXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRlcklubGluZTE1dmlydHVhbENoaWxkcmVuRXYKQEAgLTEx
MzI4LDcgKzExMzI4LDcgQEAgX19aTjdXZWJDb3JlMTNSZW5kZXJTVkdUZXh0QzFFUE5TXzE0U1ZH
VGV4dEVsZW1lbnRFCiBfX1pON1dlYkNvcmUxNFJlbmRlclNWR0Jsb2NrOHNldFN0eWxlRU4zV1RG
MTBQYXNzUmVmUHRySU5TXzExUmVuZGVyU3R5bGVFRUUKIF9fWk43V2ViQ29yZTE0UmVuZGVyU1ZH
QmxvY2sxNXN0eWxlV2lsbENoYW5nZUVOU18xNVN0eWxlRGlmZmVyZW5jZUVQS05TXzExUmVuZGVy
U3R5bGVFCiBfX1pON1dlYkNvcmUxNFJlbmRlclNWR0Jsb2NrMTRzdHlsZURpZENoYW5nZUVOU18x
NVN0eWxlRGlmZmVyZW5jZUVQS05TXzExUmVuZGVyU3R5bGVFCi1fX1pON1dlYkNvcmUxNFJlbmRl
clNWR0Jsb2NrMjd1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGVFdgorX19aTjdXZWJDb3JlMTRS
ZW5kZXJTVkdCbG9jazE1dXBkYXRlRnJvbVN0eWxlRXYKIF9fWk5LN1dlYkNvcmUxM1JlbmRlclNW
R1RleHQxM3JlcXVpcmVzTGF5ZXJFdgogX19aTjdXZWJDb3JlMTRSZW5kZXJTVkdCbG9jazE3dXBk
YXRlRnJvbUVsZW1lbnRFdgogX19aTjdXZWJDb3JlMjVTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
MTVjaGlsZHJlbkNoYW5nZWRFYlBOU180Tm9kZUVTMl9pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDkwNTYxYTdhYTg2YjM4ZDI1M2EyNTgzOTA2
OTEzMjBkMjgzNGIxYzQuLmE4NThiYjQyNDg4NzQyYWNlMjBkZTMxMTRmYTVjN2NkNmIxNGRhZWEg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00
NDAyMSw2ICs0NDAyMSw2MiBAQAogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJl
bGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVn
X0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0Lmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRl
cmluZ1xSZW5kZXJUcmVlQXNUZXh0LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZDk1ZjY1ODQ3MzM2M2RhMDhiOTI1YmViY2M5ZWY0ZjVlMTkxMjg5NC4uMDc1N2E1MmIz
NTIwMmRhY2QzZTY4OTcxNGQ4NTk1YjE5MGUzNzM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAyNSw2ICsxMDI1LDggQEAK
IAkJM0FCMDJEMkIxMkQ0RjkxNjAwRkJCNjk0IC8qIFN0b3JhZ2VUcmFja2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNBQjAyRDI5MTJENEY5MTYw
MEZCQjY5NCAvKiBTdG9yYWdlVHJhY2tlci5jcHAgKi87IH07CiAJCTNBQzM2ODAwMTJFRjdBMDkw
MDZBM0Q2RiAvKiBTdG9yYWdlVHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0FDMzY3RkUxMkVGN0EwOTAwNkEzRDZGIC8qIFN0b3Jh
Z2VUcmFja2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJM0FDNjQ4QjIxMjlFMTQ2NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0FDNjQ4QjEx
MjlFMTQ2NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTNDMjQ0RkVBQTM3NUFDNjMzRjg4QkU2RiAv
KiBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzQzI0NEZFNEEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTNDMjQ0RkVCQTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDNDMjQ0RkU1QTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
LmNwcCAqLzsgfTsKIAkJNDEwMDJDQ0QwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9u
Q2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEw
MDJDQ0IwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovOyB9OwogCQk0
MTAwMkNDRTBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NDMEY2NkVERUYw
MDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovOyB9OwogCQk0MTBCN0U3MjEwNDVG
QUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8q
IEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLzsgfTsKQEAgLTgxMDksNiArODExMSw4IEBACiAJ
CTNBQjAyRDI5MTJENEY5MTYwMEZCQjY5NCAvKiBTdG9yYWdlVHJhY2tlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlVHJhY2tlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNBQzM2N0ZFMTJFRjdBMDkwMDZBM0Q2RiAvKiBTdG9yYWdl
VHJhY2tlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdl
VHJhY2tlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzQUM2NDhCMTEy
OUUxNDY1MDBDM0VCMjUgLyogRWRpdGluZ0JvdW5kYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEVkaXRpbmdCb3VuZGFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzQzI0NEZFNEEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNDMjQ0RkU1QTM3NUFDNjMz
Rjg4QkU2RiAvKiBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTAwMkNDQjBGNjZFREVGMDA5RTY2MEQgLyogU2Ny
aXB0RnVuY3Rpb25DYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dEZ1bmN0aW9uQ2FsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTAwMkNDQzBG
NjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VF
dmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01l
c3NhZ2VFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTQ0
MSw2ICsyMTQ0NSw4IEBACiAJCQkJQkNFQTQ4NEIwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRo
ZW1lLmggKi8sCiAJCQkJQkNFQTQ4NDgwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFj
LmggKi8sCiAJCQkJQkNFQTQ4NDkwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFjLm1t
ICovLAorCQkJCTNDMjQ0RkU1QTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJUcmFuc2Zvcm1hYmxl
T2JqZWN0LmNwcCAqLywKKwkJCQkzQzI0NEZFNEEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdC5oICovLAogCQkJCTkzOTU1QTQyMDNENzI5MzIwMDg2MzVDRSAvKiBS
ZW5kZXJUcmVlQXNUZXh0LmNwcCAqLywKIAkJCQk5Mzk1NUE0MTAzRDcyOTMyMDA4NjM1Q0UgLyog
UmVuZGVyVHJlZUFzVGV4dC5oICovLAogCQkJCUU0QjQxRTMzMENCRkI2MDkwMEFGMkVDRSAvKiBS
ZW5kZXJWaWRlby5jcHAgKi8sCkBAIC0yNDY4NCw2ICsyNDY5MCw3IEBACiAJCQkJODZGRjg4NjIx
NURFM0QwNzAwQkQ2QjI4IC8qIFJlbmRlclRleHRUcmFja0N1ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNFQTQ4OEEwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0VBNDg4NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTNDMjQ0RkVBQTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTk4QzA4MjQ1RTU5MDAxRTlB
QkMgLyogUmVuZGVyVHJlZUFzVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjE0NTIwQ0Q2
OEEzNTAwRkFEQTc1IC8qIFJlbmRlclZpZGVvLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg2
ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVmlldy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzg5
MSw2ICsyNzg5OCw3IEBACiAJCQkJQkNFQTQ4ODkwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRo
ZW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODg4MDk3RDkzMDIwMDk0QzlFNCAvKiBS
ZW5kZXJUaGVtZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QUQ1MDgyNDVFNTkwMDFF
OUFCQyAvKiBSZW5kZXJUcmVlQXNUZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTNDMjQ0RkVC
QTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUU0NDYxNDUxMENENjhBMzUwMEZBREE3NSAvKiBSZW5kZXJWaWRlby5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg2NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVmll
dy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxREZFNTBBMTUzNzZCMDBCMTJBNjggLyogUmVu
ZGVyV2lkZ2V0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HZXN0
dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwCmluZGV4IGJiOGY0MjNiY2EyN2I1NDhjZWU3ZjIwNGFhNjJm
MGUzY2YzODFkN2YuLjlkZDE1ZTg0ODFlOTljOTI0ZmZlOGZjYjU0NDBlMjExYjdjOGEwNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAKQEAgLTE5
OSw3ICsxOTksNyBAQCBQYXRoIGFic29sdXRlUGF0aEZvclJlbmRlcmVyKFJlbmRlck9iamVjdCog
Y29uc3QgbykKIAogICAgICAgICAvLyBDaGVjayBhbmNlc3RvciBsYXllcnMgZm9yIG92ZXJmbG93
IGNsaXAgYW5kIGludGVyc2VjdCB0aGVtLgogICAgICAgICBmb3IgKDsgbGF5ZXI7IGxheWVyID0g
bGF5ZXItPnBhcmVudCgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbGF5
ZXJSZW5kZXJlciA9IGxheWVyLT5yZW5kZXJlcigpOworICAgICAgICAgICAgUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogbGF5ZXJSZW5kZXJlciA9IGxheWVyLT5yZW5kZXJlcigpOwogCiAgICAg
ICAgICAgICBpZiAobGF5ZXJSZW5kZXJlci0+aGFzT3ZlcmZsb3dDbGlwKCkgJiYgbGF5ZXJSZW5k
ZXJlciAhPSBjdXJyZW50UmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICBib29sIGNvbnRhaW5l
clNraXBwZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
YXlvdXRSZXBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBhaW50
ZXIuaAppbmRleCA1NzQwMGZhZWJmN2IyMGExNjU0Yzg5YTgxZGRiY2IzZjE5MzVmZmIwLi41Zjk2
ZmRjMGY0NmM0NGFhNDg0MzU5MzZiZDM4NzZkMzlmYzIxYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5oCkBAIC0zMCw4ICszMCw4IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDsKIGNsYXNzIFJl
bmRlck9iamVjdDsKLWNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OwogCiBjbGFzcyBMYXlvdXRS
ZXBhaW50ZXIgewogcHVibGljOgpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgUmVuZGVyT2JqZWN0JiBtX29iamVjdDsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCog
bV9yZXBhaW50Q29udGFpbmVyOworICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIG1fcmVw
YWludENvbnRhaW5lcjsKICAgICAvLyBXZSBzdG9yZSB0aGVzZSB2YWx1ZXMgYXMgTGF5b3V0UmVj
dHMsIGJ1dCB0aGUgZmluYWwgaW52YWxpZGF0aW9ucyB3aWxsIGJlIHBpeGVsIHNuYXBwZWQKICAg
ICBMYXlvdXRSZWN0IG1fb2xkQm91bmRzOwogICAgIExheW91dFJlY3QgbV9vbGRPdXRsaW5lQm94
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaAppbmRleCA0OWY5YjVlNmNjMjBlOTQ5ZjY2
MDYxY2JkYWUzYTFiMzYwZWMzODUwLi43MDliMTU2ZmQ2YTc3NjQ2OGQ1Y2VmODNmMzI5ZTkwZmQz
OTZlOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaApAQCAtMzgsNyArMzgsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7
IHJldHVybiAiUmVuZGVyQlIiOyB9CiAgCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlv
blJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIq
LywgYm9vbCAvKmNsaXBUb1Zpc2libGVDb250ZW50Ki8pIHsgcmV0dXJuIExheW91dFJlY3QoKTsg
fQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgYm9vbCAvKmNsaXBUb1Zp
c2libGVDb250ZW50Ki8pIE9WRVJSSURFIHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQogCiAgICAg
dmlydHVhbCBmbG9hdCB3aWR0aCh1bnNpZ25lZCAvKmZyb20qLywgdW5zaWduZWQgLypsZW4qLywg
Y29uc3QgRm9udCYsIGZsb2F0IC8qeFBvcyovLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRh
Kj4qID0gMCAvKmZhbGxiYWNrRm9udHMqLyAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgZmxvYXQgd2lkdGgodW5zaWduZWQgLypmcm9tKi8sIHVu
c2lnbmVkIC8qbGVuKi8sIGZsb2F0IC8qeHBvcyovLCBib29sID0gZmFsc2UgLypmaXJzdExpbmUq
LywgSGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0YSo+KiA9IDAgLypmYWxsYmFja0ZvbnRzKi8s
IEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggYTQxNThmNGUxODc5NDI3YjVhYThhZjVkMmRh
MzI0OGZlMDA2NTBiNi4uMGU2NTA1NDczYmJiMjQwYzY1MmZkNjIzODgyNmFhNmExOTIyY2VmMCAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zMTg4LDcgKzMx
ODgsNyBAQCBib29sIFJlbmRlckJsb2NrOjppc1NlbGVjdGlvblJvb3QoKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotR2FwUmVjdHMgUmVuZGVyQmxvY2s6OnNlbGVjdGlvbkdhcFJlY3Rz
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikKK0dhcFJl
Y3RzIFJlbmRlckJsb2NrOjpzZWxlY3Rpb25HYXBSZWN0c0ZvclJlcGFpbnQoUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikKIHsKICAgICBBU1NFUlQoIW5lZWRzTGF5
b3V0KCkpOwogCkBAIC02Njk5LDcgKzY2OTksNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiAg
ICAgICAgIHF1YWRzLmFwcGVuZChSZW5kZXJCb3g6OmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRS
ZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKSwgZmFsc2UsIHdhc0ZpeGVkKSk7CiB9CiAKLUxh
eW91dFJlY3QgUmVuZGVyQmxvY2s6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBj
b25zdAorTGF5b3V0UmVjdCBSZW5kZXJCbG9jazo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91
dGxpbmVXaWR0aCkgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IHIoUmVuZGVyQm94OjpyZWN0V2l0
aE91dGxpbmVGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIG91dGxpbmVXaWR0aCkpOwogICAg
IGlmIChpc0Fub255bW91c0Jsb2NrQ29udGludWF0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCmluZGV4IGEzMWIyNmVkNmU4ZjQxMDY2YjkxNmUzOTI5YjBiZDczMzYx
MzRmN2YuLmI3NDA3MzFjODdiNDdiMmU1YmEwOTkzZmY2ZWU5OGUzYWRlM2Q2MzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0yMTEsNyArMjExLDcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBjb250YWluc05vblplcm9CaWRpTGV2ZWwoKSBjb25zdDsKIAotICAgIEdh
cFJlY3RzIHNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lcik7CisgICAgR2FwUmVjdHMgc2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBh
aW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpOwogICAgIExh
eW91dFJlY3QgbG9naWNhbExlZnRTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywg
Y29uc3QgTGF5b3V0UG9pbnQmIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGNvbnN0IExheW91
dFNpemUmIG9mZnNldEZyb21Sb290QmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZW5kZXJPYmplY3QqIHNlbE9iaiwgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwg
TGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIGNvbnN0IFBh
aW50SW5mbyopOwogICAgIExheW91dFJlY3QgbG9naWNhbFJpZ2h0U2VsZWN0aW9uR2FwKFJlbmRl
ckJsb2NrKiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaW50JiByb290QmxvY2tQaHlzaWNhbFBv
c2l0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdEJsb2NrLApAQCAtNzgzLDE0
ICs3ODMsMTQgQEAgcHJpdmF0ZToKICAgICAvLyBjaGlsZHJlbi4KICAgICB2aXJ0dWFsIFJlbmRl
ckJsb2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0
IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExh
eW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBSZW5kZXJTdHlsZSogb3V0bGluZVN0eWxlRm9yUmVwYWludCgp
IGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBob3ZlckFuY2VzdG9yKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURyYWdTdGF0ZShib29sIGRyYWdPbik7CiAg
ICAgdmlydHVhbCB2b2lkIGNoaWxkQmVjYW1lTm9uSW5saW5lKFJlbmRlck9iamVjdCogY2hpbGQp
OwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qY2xpcFRvVmlzaWJsZUNv
bnRlbnQqLykKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQo
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCAvKmNsaXBU
b1Zpc2libGVDb250ZW50Ki8pIE9WRVJSSURFCiAgICAgewogICAgICAgICByZXR1cm4gc2VsZWN0
aW9uR2FwUmVjdHNGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggYTAwNTZlMDNiNzczODBmMTJjOGQ5YzJi
N2MxYjI1MzAyMWZiMDM2NS4uOWE0MDk4M2ZkYzE5ZGU5ZTE4ZjBhODJkZDRlODEwNDEyZmQ3MTE0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTIyMSw3ICsyMjEs
NyBAQCB2b2lkIFJlbmRlckJveDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZm
LCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bAogCiB2b2lkIFJlbmRlckJveDo6c3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkK
IHsKLSAgICAvLyBIb3Jpem9udGFsIHdyaXRpbmcgbW9kZSBkZWZpbml0aW9uIGlzIHVwZGF0ZWQg
aW4gUmVuZGVyQm94TW9kZWxPYmplY3Q6OnVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSwKKyAg
ICAvLyBIb3Jpem9udGFsIHdyaXRpbmcgbW9kZSBkZWZpbml0aW9uIGlzIHVwZGF0ZWQgaW4gUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnVwZGF0ZUZyb21TdHlsZSwKICAgICAvLyAoYXMgcGFydCBvZiB0
aGUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlIGNhbGwgYmVsb3cpLiBTbywg
d2UgY2FuIHNhZmVseSBjYWNoZSB0aGUgaG9yaXpvbnRhbAogICAgIC8vIHdyaXRpbmcgbW9kZSB2
YWx1ZSBiZWZvcmUgc3R5bGUgY2hhbmdlIGhlcmUuCiAgICAgYm9vbCBvbGRIb3Jpem9udGFsV3Jp
dGluZ01vZGUgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwpAQCAtMjg5LDkgKzI4OSw5IEBA
IHZvaWQgUmVuZGVyQm94OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlCiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveDo6dXBk
YXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCkKK3ZvaWQgUmVuZGVyQm94Ojp1cGRhdGVGcm9tU3R5
bGUoKQogewotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0Ojp1cGRhdGVCb3hNb2RlbEluZm9Gcm9t
U3R5bGUoKTsKKyAgICBSZW5kZXJCb3hNb2RlbE9iamVjdDo6dXBkYXRlRnJvbVN0eWxlKCk7CiAK
ICAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IHN0eWxlKCk7CiAgICAgYm9vbCBpc1Jvb3RP
YmplY3QgPSBpc1Jvb3QoKTsKQEAgLTQ2Myw3ICs0NjMsNyBAQCBGbG9hdFF1YWQgUmVuZGVyQm94
OjphYnNvbHV0ZUNvbnRlbnRRdWFkKCkgY29uc3QKICAgICByZXR1cm4gbG9jYWxUb0Fic29sdXRl
UXVhZChGbG9hdFJlY3QocmVjdCkpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlckJveDo6b3V0bGlu
ZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IExheW91dFBvaW50KiBjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlv
dXRSZWN0IFJlbmRlckJveDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldFRv
UmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IGJveCA9IGJvcmRlckJv
dW5kaW5nQm94KCk7CiAgICAgYWRqdXN0UmVjdEZvck91dGxpbmVBbmRTaGFkb3coYm94KTsKQEAg
LTEyNjMsNyArMTI2Myw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94OjpwZXJwZW5kaWN1bGFyQ29u
dGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodCgpIGNvbnN0CiAgICAgcmV0dXJuIGNiLT5jb21wdXRl
Q29udGVudEJveExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodExlbmd0aC52YWx1ZSgpKTsKIH0K
IAotdm9pZCBSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFw
TG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBS
ZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2Nh
bFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgaWYg
KHJlcGFpbnRDb250YWluZXIgPT0gdGhpcykKICAgICAgICAgcmV0dXJuOwpAQCAtMTMyOCw3ICsx
MzI4LDcgQEAgdm9pZCBSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW4KICAgICBvLT5tYXBMb2NhbFRvQ29udGFp
bmVyKHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlLCB3YXNGaXhlZCk7CiB9
CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyQm94OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVy
KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9t
ZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlckJv
eDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGFuY2VzdG9yVG9TdG9wQXQgIT0gdGhpcyk7CiAKQEAgLTE0ODEsNyAr
MTQ4MSw3IEBAIHZvaWQgUmVuZGVyQm94OjpkZWxldGVMaW5lQm94V3JhcHBlcigpCiAgICAgfQog
fQogCi1MYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0
IFJlbmRlckJveDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICBpZiAoc3R5bGUoKS0+
dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIWVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVD
b250ZW50KCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CkBAIC0xNTA4LDcgKzE1MDgs
NyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbgogICAgIHJldHVybiByOwogfQogCi12b2lkIFJl
bmRlckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBS
ZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAog
ewogICAgIC8vIFRoZSByZWN0IHdlIGNvbXB1dGUgYXQgZWFjaCBzdGVwIGlzIHNoaWZ0ZWQgYnkg
b3VyIHgveSBvZmZzZXQgaW4gdGhlIHBhcmVudCBjb250YWluZXIncyBjb29yZGluYXRlIHNwYWNl
LgogICAgIC8vIE9ubHkgd2hlbiB3ZSBjcm9zcyBhIHdyaXRpbmcgbW9kZSBib3VuZGFyeSB3aWxs
IHdlIGhhdmUgdG8gcG9zc2libHkgZmxpcEZvcldyaXRpbmdNb2RlICh0byBjb252ZXJ0IGludG8g
YSBtb3JlIGFwcHJvcHJpYXRlCkBAIC0zNzg2LDcgKzM3ODYsNyBAQCBSZW5kZXJMYXllciogUmVu
ZGVyQm94OjplbmNsb3NpbmdGbG9hdFBhaW50aW5nTGF5ZXIoKSBjb25zdAogewogICAgIGNvbnN0
IFJlbmRlck9iamVjdCogY3VyciA9IHRoaXM7CiAgICAgd2hpbGUgKGN1cnIpIHsKLSAgICAgICAg
UmVuZGVyTGF5ZXIqIGxheWVyID0gY3Vyci0+aGFzTGF5ZXIoKSAmJiBjdXJyLT5pc0JveCgpID8g
dG9SZW5kZXJCb3hNb2RlbE9iamVjdChjdXJyKS0+bGF5ZXIoKSA6IDA7CisgICAgICAgIFJlbmRl
ckxheWVyKiBsYXllciA9IGN1cnItPmhhc0xheWVyKCkgJiYgY3Vyci0+aXNCb3goKSA/IHRvUmVu
ZGVyQm94KGN1cnIpLT5sYXllcigpIDogMDsKICAgICAgICAgaWYgKGxheWVyICYmIGxheWVyLT5p
c1NlbGZQYWludGluZ0xheWVyKCkpCiAgICAgICAgICAgICByZXR1cm4gbGF5ZXI7CiAgICAgICAg
IGN1cnIgPSBjdXJyLT5wYXJlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApp
bmRleCAwMGIwNWY0ZTFhZjAxMjZlMmI4NDVkZTk2NWFiOTdkOWZlNzdiN2IwLi4yODViYjFhZWVl
NjNhNGE4YjJjODUwNjZkZTYwYWQ1ODdjZjExMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oCkBAIC0xNTMsNyArMTUzLDcgQEAgcHVibGljOgogICAgIExheW91dFJlY3QgY29t
cHV0ZWRDU1NDb250ZW50Qm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoYm9yZGVy
TGVmdCgpICsgY29tcHV0ZWRDU1NQYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIGNvbXB1dGVk
Q1NTUGFkZGluZ1RvcCgpLCBjbGllbnRXaWR0aCgpIC0gY29tcHV0ZWRDU1NQYWRkaW5nTGVmdCgp
IC0gY29tcHV0ZWRDU1NQYWRkaW5nUmlnaHQoKSwgY2xpZW50SGVpZ2h0KCkgLSBjb21wdXRlZENT
U1BhZGRpbmdUb3AoKSAtIGNvbXB1dGVkQ1NTUGFkZGluZ0JvdHRvbSgpKTsgfQogCiAgICAgLy8g
Qm91bmRzIG9mIHRoZSBvdXRsaW5lIGJveCBpbiBhYnNvbHV0ZSBjb29yZHMuIFJlc3BlY3RzIHRy
YW5zZm9ybXMKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBMYXlvdXRQb2ludCog
Y2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91
dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
LypyZXBhaW50Q29udGFpbmVyKi8sIExheW91dFBvaW50KiBjYWNoZWRPZmZzZXRUb1JlcGFpbnRD
b250YWluZXIpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdS
ZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgLy8gVXNl
IHRoaXMgd2l0aCBjYXV0aW9uISBObyB0eXBlIGNoZWNraW5nIGlzIGRvbmUhCkBAIC0zMTIsOCAr
MzEyLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5saW5lQm94V3JhcHBlcihJbmxpbmVCb3gq
IGJveFdyYXBwZXIpIHsgbV9pbmxpbmVCb3hXcmFwcGVyID0gYm94V3JhcHBlcjsgfQogICAgIHZv
aWQgZGVsZXRlTGluZUJveFdyYXBwZXIoKTsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wg
Zml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJl
cGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0
UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IHZvaWQgcmVwYWludER1cmluZ0xheW91dElmTW92ZWQoY29uc3QgTGF5b3V0UmVjdCYpOwogCkBA
IC01MDMsNyArNTAzLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIHN0eWxlV2ls
bENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CiAg
ICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0eWxlKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQm94TW9kZWxJbmZv
RnJvbVN0eWxlKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21TdHlsZSgpIE9WRVJSSURF
OwogCiAgICAgdmlydHVhbCBib29sIGJhY2tncm91bmRJc09ic2N1cmVkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2b2lkIHBhaW50QmFja2dyb3VuZChjb25zdCBQYWludEluZm8mLCBj
b25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJs
ZWVkTm9uZSk7CkBAIC01MjMsOCArNTIzLDggQEAgcHJvdGVjdGVkOgogICAgIAogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWQoKSBjb25zdCB7IHJldHVybiBpc1Jl
cGxhY2VkKCkgJiYgIWlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCk7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2Rl
ID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdh
c0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmpl
Y3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBS
ZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29u
dGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5z
Zm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5l
ckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiwgUmVuZGVyR2VvbWV0
cnlNYXAmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xv
Y2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYp
IGNvbnN0OwogCiAgICAgdm9pZCBwYWludFJvb3RCb3hGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5m
byYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAKaW5kZXggY2FmMzI3YjEzYzg0MjczYmU3OTM1NjI1NDQzNDBmODkzM2JmNzc1OC4uNTI0
ZTQyNmRkODVhNmY0NTQ1ZmY0MTlkNzlkMTlmMWU3ZjlhYWQ1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC01MiwxMSArNTIs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
LWJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNfd2FzRmxvYXRpbmcgPSBmYWxzZTsKLWJvb2wg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnNfaGFkTGF5ZXIgPSBmYWxzZTsKLWJvb2wgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnNfaGFkVHJhbnNmb3JtID0gZmFsc2U7Ci1ib29sIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpzX2xheWVyV2FzU2VsZlBhaW50aW5nID0gZmFsc2U7Ci0KIHN0YXRpYyBjb25zdCBk
b3VibGUgY0ludGVycG9sYXRpb25DdXRvZmYgPSA4MDAuICogODAwLjsKIHN0YXRpYyBjb25zdCBk
b3VibGUgY0xvd1F1YWxpdHlUaW1lVGhyZXNob2xkID0gMC41MDA7IC8vIDUwMCBtcwogCkBAIC0z
MTYsMTYgKzMxMSwxMiBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRQYWludEF0
TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEltYQogfQogCiBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QoTm9kZSogbm9kZSkKLSAgICA6IFJlbmRl
ck9iamVjdChub2RlKQotICAgICwgbV9sYXllcigwKQorICAgIDogUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdChub2RlKQogewogfQogCiBSZW5kZXJCb3hNb2RlbE9iamVjdDo6flJlbmRlckJveE1v
ZGVsT2JqZWN0KCkKIHsKLSAgICAvLyBPdXIgbGF5ZXIgc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95
ZWQgYW5kIGNsZWFyZWQgYnkgbm93Ci0gICAgQVNTRVJUKCFoYXNMYXllcigpKTsKLSAgICBBU1NF
UlQoIW1fbGF5ZXIpOwogICAgIGlmIChnSW1hZ2VRdWFsaXR5Q29udHJvbGxlcikgewogICAgICAg
ICBnSW1hZ2VRdWFsaXR5Q29udHJvbGxlci0+b2JqZWN0RGVzdHJveWVkKHRoaXMpOwogICAgICAg
ICBpZiAoZ0ltYWdlUXVhbGl0eUNvbnRyb2xsZXItPmlzRW1wdHkoKSkgewpAQCAtMzM1LDE0ICsz
MjYsNiBAQCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6flJlbmRlckJveE1vZGVsT2JqZWN0KCkKICAg
ICB9CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcigpCi17Ci0g
ICAgQVNTRVJUKCFoYXNMYXllcigpKTsgLy8gQ2FsbGVycyBzaG91bGQgaGF2ZSBhbHJlYWR5IGNh
bGxlZCBzZXRIYXNMYXllcihmYWxzZSkKLSAgICBBU1NFUlQobV9sYXllcik7Ci0gICAgbV9sYXll
ci0+ZGVzdHJveShyZW5kZXJBcmVuYSgpKTsKLSAgICBtX2xheWVyID0gMDsKLX0KLQogdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkKIHsKICAgICAvLyBBIGNvbnRp
bnVhdGlvbiBvZiB0aGlzIFJlbmRlck9iamVjdCBzaG91bGQgYmUgZGVzdHJveWVkIGF0IHN1YmNs
YXNzZXMuCkBAIC0zNTMsMTAzICszMzYsMTMgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
d2lsbEJlRGVzdHJveWVkKCkKICAgICBpZiAoZmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KCkpCiAg
ICAgICAgIHNldEZpcnN0TGV0dGVyUmVtYWluaW5nVGV4dCgwKTsKIAotICAgIC8vIFJlbmRlck9i
amVjdDo6d2lsbEJlRGVzdHJveWVkIGNhbGxzIGJhY2sgdG8gZGVzdHJveUxheWVyKCkgZm9yIGxh
eWVyIGRlc3RydWN0aW9uCi0gICAgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKTsKLX0K
LQotYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSBjb25z
dAotewotICAgIHJldHVybiBtX2xheWVyICYmIG1fbGF5ZXItPmlzU2VsZlBhaW50aW5nTGF5ZXIo
KTsKLX0KLQotdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpCi17Ci0gICAgc193
YXNGbG9hdGluZyA9IGlzRmxvYXRpbmcoKTsKLSAgICBzX2hhZExheWVyID0gaGFzTGF5ZXIoKTsK
LSAgICBzX2hhZFRyYW5zZm9ybSA9IGhhc1RyYW5zZm9ybSgpOwotICAgIGlmIChzX2hhZExheWVy
KQotICAgICAgICBzX2xheWVyV2FzU2VsZlBhaW50aW5nID0gbGF5ZXIoKS0+aXNTZWxmUGFpbnRp
bmdMYXllcigpOwotCi0gICAgLy8gSWYgb3VyIHotaW5kZXggY2hhbmdlcyB2YWx1ZSBvciBvdXIg
dmlzaWJpbGl0eSBjaGFuZ2VzLAotICAgIC8vIHdlIG5lZWQgdG8gZGlydHkgb3VyIHN0YWNraW5n
IGNvbnRleHQncyB6LW9yZGVyIGxpc3QuCi0gICAgUmVuZGVyU3R5bGUqIG9sZFN0eWxlID0gc3R5
bGUoKTsKLSAgICBpZiAob2xkU3R5bGUgJiYgbmV3U3R5bGUpIHsKLSAgICAgICAgaWYgKHBhcmVu
dCgpKSB7Ci0gICAgICAgICAgICAvLyBEbyBhIHJlcGFpbnQgd2l0aCB0aGUgb2xkIHN0eWxlIGZp
cnN0LCBlLmcuLCBmb3IgZXhhbXBsZSBpZiB3ZSBnbyBmcm9tCi0gICAgICAgICAgICAvLyBoYXZp
bmcgYW4gb3V0bGluZSB0byBub3QgaGF2aW5nIGFuIG91dGxpbmUuCi0gICAgICAgICAgICBpZiAo
ZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VSZXBhaW50TGF5ZXIpIHsKLSAgICAgICAgICAgICAgICBs
YXllcigpLT5yZXBhaW50SW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKLSAgICAgICAgICAgICAgICBp
ZiAoIShvbGRTdHlsZS0+Y2xpcCgpID09IG5ld1N0eWxlLT5jbGlwKCkpKQotICAgICAgICAgICAg
ICAgICAgICBsYXllcigpLT5jbGVhckNsaXBSZWN0c0luY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlUmVwYWludCB8fCBu
ZXdTdHlsZS0+b3V0bGluZVNpemUoKSA8IG9sZFN0eWxlLT5vdXRsaW5lU2l6ZSgpKQotICAgICAg
ICAgICAgICAgIHJlcGFpbnQoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGRp
ZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0IHx8IGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlU2lt
cGxpZmllZExheW91dCkgewotICAgICAgICAgICAgLy8gV2hlbiBhIGxheW91dCBoaW50IGhhcHBl
bnMsIHdlIGdvIGFoZWFkIGFuZCBkbyBhIHJlcGFpbnQgb2YgdGhlIGxheWVyLCBzaW5jZSB0aGUg
bGF5ZXIgY291bGQKLSAgICAgICAgICAgIC8vIGVuZCB1cCBiZWluZyBkZXN0cm95ZWQuCi0gICAg
ICAgICAgICBpZiAoaGFzTGF5ZXIoKSkgewotICAgICAgICAgICAgICAgIGlmIChvbGRTdHlsZS0+
cG9zaXRpb24oKSAhPSBuZXdTdHlsZS0+cG9zaXRpb24oKQotICAgICAgICAgICAgICAgICAgICB8
fCBvbGRTdHlsZS0+ekluZGV4KCkgIT0gbmV3U3R5bGUtPnpJbmRleCgpCi0gICAgICAgICAgICAg
ICAgICAgIHx8IG9sZFN0eWxlLT5oYXNBdXRvWkluZGV4KCkgIT0gbmV3U3R5bGUtPmhhc0F1dG9a
SW5kZXgoKQotICAgICAgICAgICAgICAgICAgICB8fCAhKG9sZFN0eWxlLT5jbGlwKCkgPT0gbmV3
U3R5bGUtPmNsaXAoKSkKLSAgICAgICAgICAgICAgICAgICAgfHwgb2xkU3R5bGUtPmhhc0NsaXAo
KSAhPSBuZXdTdHlsZS0+aGFzQ2xpcCgpCi0gICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxl
LT5vcGFjaXR5KCkgIT0gbmV3U3R5bGUtPm9wYWNpdHkoKQotICAgICAgICAgICAgICAgICAgICB8
fCBvbGRTdHlsZS0+dHJhbnNmb3JtKCkgIT0gbmV3U3R5bGUtPnRyYW5zZm9ybSgpCi0jaWYgRU5B
QkxFKENTU19GSUxURVJTKQotICAgICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+ZmlsdGVy
KCkgIT0gbmV3U3R5bGUtPmZpbHRlcigpCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgKQot
ICAgICAgICAgICAgICAgIGxheWVyKCktPnJlcGFpbnRJbmNsdWRpbmdEZXNjZW5kYW50cygpOwot
ICAgICAgICAgICAgfSBlbHNlIGlmIChuZXdTdHlsZS0+aGFzVHJhbnNmb3JtKCkgfHwgbmV3U3R5
bGUtPm9wYWNpdHkoKSA8IDEgfHwgbmV3U3R5bGUtPmhhc0ZpbHRlcigpKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIGxheWVyIHlldCwgYnV0IHdlIGFyZSBnb2luZyB0
byBnZXQgb25lIGJlY2F1c2Ugb2YgdHJhbnNmb3JtIG9yIG9wYWNpdHksCi0gICAgICAgICAgICAg
ICAgLy8gIHRoZW4gd2UgbmVlZCB0byByZXBhaW50IHRoZSBvbGQgcG9zaXRpb24gb2YgdGhlIG9i
amVjdC4KLSAgICAgICAgICAgICAgICByZXBhaW50KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShkaWZmLCBuZXdT
dHlsZSk7CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCk7
CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlm
ZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCit2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0Ojp1cGRhdGVGcm9tU3R5bGUoKQogewotICAgIFJlbmRlck9iamVjdDo6c3R5
bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwotICAgIHVwZGF0ZUJveE1vZGVsSW5mb0Zyb21T
dHlsZSgpOwotICAgIAotICAgIGlmIChyZXF1aXJlc0xheWVyKCkpIHsKLSAgICAgICAgaWYgKCFs
YXllcigpICYmIGxheWVyQ3JlYXRpb25BbGxvd2VkRm9yU3VidHJlZSgpKSB7Ci0gICAgICAgICAg
ICBpZiAoc193YXNGbG9hdGluZyAmJiBpc0Zsb2F0aW5nKCkpCi0gICAgICAgICAgICAgICAgc2V0
Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKLSAgICAgICAgICAgIG1fbGF5ZXIgPSBuZXcgKHJlbmRl
ckFyZW5hKCkpIFJlbmRlckxheWVyKHRoaXMpOwotICAgICAgICAgICAgc2V0SGFzTGF5ZXIodHJ1
ZSk7Ci0gICAgICAgICAgICBtX2xheWVyLT5pbnNlcnRPbmx5VGhpc0xheWVyKCk7Ci0gICAgICAg
ICAgICBpZiAocGFyZW50KCkgJiYgIW5lZWRzTGF5b3V0KCkgJiYgY29udGFpbmluZ0Jsb2NrKCkp
IHsKLSAgICAgICAgICAgICAgICBtX2xheWVyLT5zZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJl
cGFpbnQpOwotICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG9ubHkgb25lIGxheWVyIHRvIHVw
ZGF0ZSwgaXQgaXMgbm90IHdvcnRoIHVzaW5nIHxjYWNoZWRPZmZzZXR8IHNpbmNlCi0gICAgICAg
ICAgICAgICAgLy8gd2UgYXJlIG5vdCBzdXJlIHRoZSB2YWx1ZSB3aWxsIGJlIHVzZWQuCi0gICAg
ICAgICAgICAgICAgbV9sYXllci0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMoMCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGxheWVyKCkgJiYgbGF5ZXIoKS0+cGFyZW50
KCkpIHsKLSAgICAgICAgc2V0SGFzVHJhbnNmb3JtKGZhbHNlKTsgLy8gRWl0aGVyIGEgdHJhbnNm
b3JtIHdhc24ndCBzcGVjaWZpZWQgb3IgdGhlIG9iamVjdCBkb2Vzbid0IHN1cHBvcnQgdHJhbnNm
b3Jtcywgc28ganVzdCBudWxsIG91dCB0aGUgYml0LgotICAgICAgICBzZXRIYXNSZWZsZWN0aW9u
KGZhbHNlKTsKLSAgICAgICAgbV9sYXllci0+cmVtb3ZlT25seVRoaXNMYXllcigpOyAvLyBjYWxs
cyBkZXN0cm95TGF5ZXIoKSB3aGljaCBjbGVhcnMgbV9sYXllcgotICAgICAgICBpZiAoc193YXNG
bG9hdGluZyAmJiBpc0Zsb2F0aW5nKCkpCi0gICAgICAgICAgICBzZXRDaGlsZE5lZWRzTGF5b3V0
KHRydWUpOwotICAgICAgICBpZiAoc19oYWRUcmFuc2Zvcm0pCi0gICAgICAgICAgICBzZXROZWVk
c0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKLSAgICB9Ci0KLSAgICBpZiAobGF5ZXIoKSkg
ewotICAgICAgICBsYXllcigpLT5zdHlsZUNoYW5nZWQoZGlmZiwgb2xkU3R5bGUpOwotICAgICAg
ICBpZiAoc19oYWRMYXllciAmJiBsYXllcigpLT5pc1NlbGZQYWludGluZ0xheWVyKCkgIT0gc19s
YXllcldhc1NlbGZQYWludGluZykKLSAgICAgICAgICAgIHNldENoaWxkTmVlZHNMYXlvdXQodHJ1
ZSk7Ci0gICAgfQotfQorICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OnVwZGF0ZUZyb21T
dHlsZSgpOwogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojp1cGRhdGVCb3hNb2RlbEluZm9G
cm9tU3R5bGUoKQotewogICAgIC8vIFNldCB0aGUgYXBwcm9wcmlhdGUgYml0cyBmb3IgYSBib3gg
bW9kZWwgb2JqZWN0LiAgU2luY2UgYWxsIGJpdHMgYXJlIGNsZWFyZWQgaW4gc3R5bGVXaWxsQ2hh
bmdlLAogICAgIC8vIHdlIG9ubHkgY2hlY2sgZm9yIGJpdHMgdGhhdCBjb3VsZCBwb3NzaWJseSBi
ZSBzZXQgdG8gdHJ1ZS4KICAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IHN0eWxlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4
IDA2N2Y2MDQ2ZDA5MDhhOTRjOTdlOGE0MjJlNjAyY2JjY2FmYzFkOTMuLjlmYTU5MDg3MTRiMzU4
NDA3NGU0NzE5ODk3YTg3ZWQ5NzIwMDM3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0yNCw3ICsyNCw3IEBACiAjaWZuZGVmIFJl
bmRlckJveE1vZGVsT2JqZWN0X2gKICNkZWZpbmUgUmVuZGVyQm94TW9kZWxPYmplY3RfaAogCi0j
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdC5oIgogI2luY2x1ZGUgIlNoYWRvd0RhdGEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNTQsNyArNTQsNyBAQCBjbGFzcyBLZXlmcmFtZUxpc3Q7CiAvLyBUaGlzIGNsYXNzIGlzIHRo
ZSBiYXNlIGZvciBhbGwgb2JqZWN0cyB0aGF0IGFkaGVyZSB0byB0aGUgQ1NTIGJveCBtb2RlbCBh
cyBkZXNjcmliZWQKIC8vIGF0IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL2JveC5odG1sCiAK
LWNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0IDogcHVibGljIFJlbmRlck9iamVjdCB7CitjbGFz
cyBSZW5kZXJCb3hNb2RlbE9iamVjdCA6IHB1YmxpYyBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
IHsKIHB1YmxpYzoKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdChOb2RlKik7CiAgICAgdmlydHVh
bCB+UmVuZGVyQm94TW9kZWxPYmplY3QoKTsKQEAgLTc0LDEzICs3NCw5IEBAIHB1YmxpYzoKICAg
ICBpbnQgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSBjb25zdDsKICAgICBpbnQgcGl4ZWxTbmFw
cGVkT2Zmc2V0SGVpZ2h0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCb3hNb2RlbEluZm9Gcm9t
U3R5bGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbVN0eWxlKCkgT1ZFUlJJREU7CiAK
LSAgICBib29sIGhhc1NlbGZQYWludGluZ0xheWVyKCkgY29uc3Q7Ci0gICAgUmVuZGVyTGF5ZXIq
IGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcjsgfQotICAgIHZpcnR1YWwgYm9vbCByZXF1
aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gaXNSb290KCkgfHwgaXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkgfHwgaXNSZWxQb3NpdGlvbmVkKCkgfHwgaXNUcmFuc3BhcmVudCgpIHx8IGhhc1RyYW5z
Zm9ybSgpIHx8IGhhc0hpZGRlbkJhY2tmYWNlKCkgfHwgaGFzTWFzaygpIHx8IGhhc1JlZmxlY3Rp
b24oKSB8fCBoYXNGaWx0ZXIoKSB8fCBzdHlsZSgpLT5zcGVjaWZpZXNDb2x1bW5zKCk7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGlz
Um9vdCgpIHx8IGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGlzUmVsUG9zaXRpb25lZCgpIHx8
IGlzVHJhbnNwYXJlbnQoKSB8fCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNIaWRkZW5CYWNrZmFjZSgp
IHx8IGhhc01hc2soKSB8fCBoYXNSZWZsZWN0aW9uKCkgfHwgaGFzRmlsdGVyKCkgfHwgc3R5bGUo
KS0+c3BlY2lmaWVzQ29sdW1ucygpOyB9CiAKICAgICAvLyBUaGlzIHdpbGwgd29yayBvbiBpbmxp
bmVzIHRvIHJldHVybiB0aGUgYm91bmRpbmcgYm94IG9mIGFsbCBvZiB0aGUgbGluZXMnIGJvcmRl
ciBib3hlcy4KICAgICB2aXJ0dWFsIEludFJlY3QgYm9yZGVyQm91bmRpbmdCb3goKSBjb25zdCA9
IDA7CkBAIC0xNTYsOSArMTUyLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIG1hcEFi
c29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNm
b3JtU3RhdGUmKSBjb25zdCBPVkVSUklERTsKIAotICAgIC8vIENhbGxlZCBieSBSZW5kZXJPYmpl
Y3Q6OndpbGxCZURlc3Ryb3llZCgpIGFuZCBpcyB0aGUgb25seSB3YXkgbGF5ZXJzIHNob3VsZCBl
dmVyIGJlIGRlc3Ryb3llZAotICAgIHZvaWQgZGVzdHJveUxheWVyKCk7Ci0KICAgICB2b2lkIGhp
Z2hRdWFsaXR5UmVwYWludFRpbWVyRmlyZWQoVGltZXI8UmVuZGVyQm94TW9kZWxPYmplY3Q+Kik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgcyk7
CkBAIC0yOTcsMTAgKzI5MCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgdGhpY2tuZXNzLCBmbG9hdCBkcmF3VGhpY2tuZXNzLCBCb3hTaWRlLCBjb25zdCBS
ZW5kZXJTdHlsZSosIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yLCBFQm9yZGVy
U3R5bGUsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRF
ZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAotICAgIGZyaWVuZCBjbGFzcyBS
ZW5kZXJWaWV3OwotCi0gICAgUmVuZGVyTGF5ZXIqIG1fbGF5ZXI7Ci0gICAgCiAgICAgLy8gVXNl
ZCB0byBzdG9yZSBzdGF0ZSBiZXR3ZWVuIHN0eWxlV2lsbENoYW5nZSBhbmQgc3R5bGVEaWRDaGFu
Z2UKICAgICBzdGF0aWMgYm9vbCBzX3dhc0Zsb2F0aW5nOwogICAgIHN0YXRpYyBib29sIHNfaGFk
TGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0
cnlNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNw
cAppbmRleCBmZTE2YjliOGU3MjM2YzMwOGE0YjcxYWRhZmZiMjY1MzU2MDJlYWY4Li4wNDc5YWYz
NDI0ZDdjMzQyZjFhMTkzYjc0MTU4NDEwNjlkYWM3ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lk
IFJlbmRlckdlb21ldHJ5TWFwOjptYXBUb0Fic29sdXRlKFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zv
cm1TdGF0ZSkgY29uc3QKICAgICB0cmFuc2Zvcm1TdGF0ZS5mbGF0dGVuKCk7ICAgIAogfQogCi12
b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclJl
bmRlcmVyKQordm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaE1hcHBpbmdzVG9BbmNlc3Rvcihj
b25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KiBhbmNlc3RvclJlbmRlcmVyKQogewogICAgIC8vIFdlIG5lZWQgdG8gcHVzaCBtYXBwaW5n
cyBpbiByZXZlcnNlIG9yZGVyIGhlcmUsIHNvIGRvIGluc2VydGlvbnMgcmF0aGVyIHRoYW4gYXBw
ZW5kcy4KICAgICBUZW1wb3JhcnlDaGFuZ2U8c2l6ZV90PiBwb3NpdGlvbkNoYW5nZShtX2luc2Vy
dGlvblBvc2l0aW9uLCBtX21hcHBpbmcuc2l6ZSgpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lk
IFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckxh
eWVyKiBsYXllciwgY29uc3QgUgogICAgICAgICBwdXNoKHJlbmRlcmVyLCB0b0xheW91dFNpemUo
bGF5ZXJPZmZzZXQpLCAvKmFjY3VtdWxhdGluZ1RyYW5zZm9ybSovIHRydWUsIC8qaXNOb25Vbmlm
b3JtKi8gZmFsc2UsIC8qaXNGaXhlZFBvc2l0aW9uKi8gZmFsc2UsIC8qaGFzVHJhbnNmb3JtKi8g
ZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNvbnN0IFJlbmRlckJveE1vZGVs
T2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyID0gYW5jZXN0b3JMYXllciA/IGFuY2VzdG9yTGF5ZXIt
PnJlbmRlcmVyKCkgOiAwOworICAgIGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFu
Y2VzdG9yUmVuZGVyZXIgPSBhbmNlc3RvckxheWVyID8gYW5jZXN0b3JMYXllci0+cmVuZGVyZXIo
KSA6IDA7CiAgICAgcHVzaE1hcHBpbmdzVG9BbmNlc3RvcihyZW5kZXJlciwgYW5jZXN0b3JSZW5k
ZXJlcik7CiB9CiAKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpw
dXNoVmlldyhjb25zdCBSZW5kZXJWaWV3KiB2aWV3LCBjb25zdCBMYXlvdXRTaXplJiBzY3JvbAog
ICAgIHN0ZXBJbnNlcnRlZChzdGVwKTsKIH0KIAotdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cG9w
TWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclJl
bmRlcmVyKQordm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNv
bnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIpCiB7CiAgICAg
QVNTRVJUKG1fbWFwcGluZy5zaXplKCkpOwogCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBSZW5k
ZXJHZW9tZXRyeU1hcDo6cG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckJveE1vZGVs
T2JqZWN0KiBhbmNlc3QKIAogdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cG9wTWFwcGluZ3NUb0Fu
Y2VzdG9yKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyKQogewotICAgIGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyID0gYW5jZXN0b3JMYXllciA/IGFu
Y2VzdG9yTGF5ZXItPnJlbmRlcmVyKCkgOiAwOworICAgIGNvbnN0IFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIgPSBhbmNlc3RvckxheWVyID8gYW5jZXN0b3JMYXll
ci0+cmVuZGVyZXIoKSA6IDA7CiAgICAgcG9wTWFwcGluZ3NUb0FuY2VzdG9yKGFuY2VzdG9yUmVu
ZGVyZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R2VvbWV0cnlNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1h
cC5oCmluZGV4IDk4ZjQ0YzYzM2RiM2U3OWRmYTdlYzcyYjg1ODg4MjE2MDBjOGJiY2MuLjhlMDJh
ZTc1MjczOGZlN2JhMGZiYzAwMjdkNzY0NGQ1NzM3YjQ2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5oCkBAIC03OSw4ICs3OSw4IEBAIHB1YmxpYzoK
ICAgICAvLyBDYWxsZWQgYnkgY29kZSB3YWxraW5nIHRoZSByZW5kZXJlciBvciBsYXllciB0cmVl
cy4KICAgICB2b2lkIHB1c2hNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5ZXIqLCBj
b25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllcik7CiAgICAgdm9pZCBwb3BNYXBwaW5nc1Rv
QW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5ZXIqKTsKLSAgICB2b2lkIHB1c2hNYXBwaW5nc1RvQW5j
ZXN0b3IoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFu
Y2VzdG9yUmVuZGVyZXIpOwotICAgIHZvaWQgcG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0Kik7CisgICAgdm9pZCBwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKGNv
bnN0IFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2Vz
dG9yUmVuZGVyZXIpOworICAgIHZvaWQgcG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqKTsKICAgICAKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhv
ZHMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHJlbmRlcmVycyBpbnNpZGUgYSBjYWxsIHRvIHB1
c2hNYXBwaW5nc1RvQW5jZXN0b3IoKS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcAppbmRleCBkNThiZmMxYWJkOTlhMDU2NzEyYjM4NzkyMDA4OWI4NDBkNDZmYjhj
Li5iMzRlNzRkMmVmODU1OGY2ZDM3ZTY0YjAyMzVlZTRiZWVkNzAyZTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtMTE4LDkgKzExOCw5IEBAIFJlbmRl
cklubGluZSogUmVuZGVySW5saW5lOjppbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkgY29uc3QK
ICAgICByZXR1cm4gdG9SZW5kZXJCbG9jayhjb250aW51YXRpb24pLT5pbmxpbmVFbGVtZW50Q29u
dGludWF0aW9uKCk7CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjp1cGRhdGVCb3hNb2RlbEluZm9G
cm9tU3R5bGUoKQordm9pZCBSZW5kZXJJbmxpbmU6OnVwZGF0ZUZyb21TdHlsZSgpCiB7Ci0gICAg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOworICAg
IFJlbmRlckJveE1vZGVsT2JqZWN0Ojp1cGRhdGVGcm9tU3R5bGUoKTsKIAogICAgIHNldElubGlu
ZSh0cnVlKTsgLy8gTmVlZGVkIGZvciBydW4taW5zLCBzaW5jZSBydW4taW4gaXMgY29uc2lkZXJl
ZCBhIGJsb2NrIGRpc3BsYXkgdHlwZS4KIApAQCAtOTU4LDcgKzk1OCw3IEBAIExheW91dFJlY3Qg
UmVuZGVySW5saW5lOjpsaW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBjb25zdAogICAg
IHJldHVybiByZWN0OwogfQogCi1MYXlvdXRSZWN0IFJlbmRlcklubGluZTo6Y2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIp
IGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlcklubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJl
cGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QK
IHsKICAgICAvLyBPbmx5IHJ1bi1pbnMgYXJlIGFsbG93ZWQgaW4gaGVyZSBkdXJpbmcgbGF5b3V0
LgogICAgIEFTU0VSVCghdmlldygpIHx8ICF2aWV3KCktPmxheW91dFN0YXRlRW5hYmxlZCgpIHx8
IGlzUnVuSW4oKSk7CkBAIC0xMDE2LDcgKzEwMTYsNyBAQCBMYXlvdXRSZWN0IFJlbmRlcklubGlu
ZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cAogICAgIHJldHVybiByZXBhaW50UmVjdDsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6
OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdAorTGF5b3V0UmVjdCBSZW5k
ZXJJbmxpbmU6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CiB7
CiAgICAgTGF5b3V0UmVjdCByKFJlbmRlckJveE1vZGVsT2JqZWN0OjpyZWN0V2l0aE91dGxpbmVG
b3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIG91dGxpbmVXaWR0aCkpOwogICAgIGZvciAoUmVu
ZGVyT2JqZWN0KiBjdXJyID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFNp
YmxpbmcoKSkgewpAQCAtMTAyNiw3ICsxMDI2LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6
OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnQK
ICAgICByZXR1cm4gcjsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6OmNvbXB1dGVSZWN0Rm9yUmVw
YWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYg
cmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVySW5saW5lOjpjb21wdXRlUmVjdEZv
clJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5
b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBpZiAoUmVuZGVyVmlldyog
diA9IHZpZXcoKSkgewogICAgICAgICAvLyBMYXlvdXRTdGF0ZSBpcyBvbmx5IHZhbGlkIGZvciBy
b290LXJlbGF0aXZlIHJlcGFpbnRpbmcKQEAgLTExMTYsNyArMTExNiw3IEBAIExheW91dFNpemUg
UmVuZGVySW5saW5lOjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCogY29udGFpbmVy
LCBjb25zdCBMYXlvCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6
Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZs
YWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJJbmxpbmU6Om1hcExv
Y2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxh
Z3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWlu
ZXIgPT0gdGhpcykKICAgICAgICAgcmV0dXJuOwpAQCAtMTE2OCw3ICsxMTY4LDcgQEAgdm9pZCBS
ZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIFQKICAgICBvLT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250
YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRl
ck9iamVjdCogUmVuZGVySW5saW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2Vv
bWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlcklubGluZTo6cHVzaE1h
cHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3Rv
clRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGFuY2VzdG9yVG9TdG9wQXQgIT0gdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuaAppbmRleCBiYjQzMjg5YmVjMWI5YzRjMjYyYjFmZTVlNjAxZWZlN2Jk
Y2UxNmIxLi41OTU4MzcxMmE4MGI4ZmQ2ZjE3YmQ1ZGQ0NGEzMzJhMjk0MDQwNzgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC0xMzEsMTIgKzEzMSwxMiBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIGxpbmVzQm91bmRpbmdCb3goKS53aWR0aCgpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0
IG9mZnNldEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxpbmVzQm91bmRpbmdCb3goKS5oZWlnaHQo
KTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2
aXJ0dWFsIExheW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkKSBjb25zdDsK
KyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5l
V2lkdGgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJl
cGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0
UmVjdCYsIGJvb2wgZml4ZWQpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIG1h
cExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNv
bnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2FzRml4ZWQgPSAw
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1h
cHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0
b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9j
YWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlD
b250YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkID0g
MCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hN
YXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0
b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZp
cnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
KTsKIApAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFkZERh
c2hib2FyZFJlZ2lvbnMoVmVjdG9yPERhc2hib2FyZFJlZ2lvblZhbHVlPiYpOwogI2VuZGlmCiAg
ICAgCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tU3R5bGUoKSBPVkVSUklERTsKICAgICAKICAgICBSZW5k
ZXJJbmxpbmUqIGNsb25lKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCmluZGV4IDY2MWQwZWIwODIwZTM4ZmY5ZGE5NWEzNTkxZWQ0ZjAwZmY3NjQ1ZmIu
LjdkMjExZmM2MTUwZjdhZGQ2OTQ1Mzg2YjFiODhmMWIzNzVjMjVlNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIGJvb2wgQ2xp
cFJlY3Q6OmludGVyc2VjdHMoY29uc3QgSGl0VGVzdFBvaW50JiBoaXRUZXN0UG9pbnQpCiAgICAg
cmV0dXJuIGhpdFRlc3RQb2ludC5pbnRlcnNlY3RzKG1fcmVjdCk7CiB9CiAKLVJlbmRlckxheWVy
OjpSZW5kZXJMYXllcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIpCitSZW5kZXJMYXll
cjo6UmVuZGVyTGF5ZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVuZGVyZXIpCiAgICAg
OiBtX2luUmVzaXplTW9kZShmYWxzZSkKICAgICAsIG1fc2Nyb2xsRGltZW5zaW9uc0RpcnR5KHRy
dWUpCiAgICAgLCBtX25vcm1hbEZsb3dMaXN0RGlydHkodHJ1ZSkKQEAgLTM4OCw3ICszODgsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhMYXlvdXRQb2ludCogb2Zm
c2V0RnJvbVJvb3QsIFVwZGF0ZUxheWVyUAogICAgICAgICAvLyBMYXlvdXRTdGF0ZSBvdXRzaWRl
IHRoZSBsYXlvdXQoKSBwaGFzZSBhbmQgdXNlIGl0IGhlcmUuCiAgICAgICAgIEFTU0VSVCghdmll
dy0+bGF5b3V0U3RhdGVFbmFibGVkKCkpOwogCi0gICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOwor
ICAgICAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gcmVu
ZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOwogICAgICAgICBMYXlvdXRSZWN0IG9sZFJl
cGFpbnRSZWN0ID0gbV9yZXBhaW50UmVjdDsKICAgICAgICAgTGF5b3V0UmVjdCBvbGRPdXRsaW5l
Qm94ID0gbV9vdXRsaW5lQm94OwogICAgICAgICBjb21wdXRlUmVwYWludFJlY3RzKG9mZnNldEZy
b21Sb290KTsKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjb21wdXRlUmVw
YWludFJlY3RzKExheW91dFBvaW50KiBvZmZzZXRGcm9tUm9vdCkKIHsKICAgICBBU1NFUlQoIW1f
dmlzaWJsZUNvbnRlbnRTdGF0dXNEaXJ0eSk7CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAg
ICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIo
KS0+Y29udGFpbmVyRm9yUmVwYWludCgpOwogICAgIG1fcmVwYWludFJlY3QgPSByZW5kZXJlcigp
LT5jbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsKICAgICBt
X291dGxpbmVCb3ggPSByZW5kZXJlcigpLT5vdXRsaW5lQm91bmRzRm9yUmVwYWludChyZXBhaW50
Q29udGFpbmVyLCBvZmZzZXRGcm9tUm9vdCk7CiB9CkBAIC02MDUsMTAgKzYwNSwxMCBAQCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJMYXllcjo6cmVuZGVyYWJsZVRyYW5zZm9ybShQYWludEJl
aGF2aW9yIHBhaW50QmVoYXZpbwogICAgIHJldHVybiAqbV90cmFuc2Zvcm07CiB9CiAKLXN0YXRp
YyBib29sIGNoZWNrQ29udGFpbmluZ0Jsb2NrQ2hhaW5Gb3JQYWdpbmF0aW9uKFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyQm94KiBhbmNlc3RvckNvbHVtbnNSZW5kZXJlcikK
K3N0YXRpYyBib29sIGNoZWNrQ29udGFpbmluZ0Jsb2NrQ2hhaW5Gb3JQYWdpbmF0aW9uKFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJCb3gqIGFuY2VzdG9yQ29sdW1u
c1JlbmRlcmVyKQogewogICAgIFJlbmRlclZpZXcqIHZpZXcgPSByZW5kZXJlci0+dmlldygpOwot
ICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBwcmV2QmxvY2sgPSByZW5kZXJlcjsKKyAgICBSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBwcmV2QmxvY2sgPSByZW5kZXJlcjsKICAgICBSZW5kZXJC
bG9jayogY29udGFpbmluZ0Jsb2NrOwogICAgIGZvciAoY29udGFpbmluZ0Jsb2NrID0gcmVuZGVy
ZXItPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgY29udGFpbmluZ0Jsb2NrICYmIGNvbnRh
aW5pbmdCbG9jayAhPSB2aWV3ICYmIGNvbnRhaW5pbmdCbG9jayAhPSBhbmNlc3RvckNvbHVtbnNS
ZW5kZXJlcjsKQEAgLTg2OSw3ICs4NjksNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXll
clBvc2l0aW9uKCkKICAgICB9CiAgICAgICAgIAogICAgIGlmIChyZW5kZXJlcigpLT5pc1JlbFBv
c2l0aW9uZWQoKSkgewotICAgICAgICBtX3JlbGF0aXZlT2Zmc2V0ID0gcmVuZGVyZXIoKS0+cmVs
YXRpdmVQb3NpdGlvbk9mZnNldCgpOworICAgICAgICBtX3JlbGF0aXZlT2Zmc2V0ID0gdG9SZW5k
ZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlcigpKS0+cmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpOwog
ICAgICAgICBsb2NhbFBvaW50Lm1vdmUobV9yZWxhdGl2ZU9mZnNldCk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgbV9yZWxhdGl2ZU9mZnNldCA9IExheW91dFNpemUoKTsKQEAgLTkzMiw3ICs5MzIs
NyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OnN0YWNraW5nQ29udGV4dCgpIGNvbnN0CiAK
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Bvc2l0aW9uZWRDb250YWluZXIoUmVuZGVyTGF5ZXIqIGxh
eWVyKQogewotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBsYXllclJlbmRlcmVyID0gbGF5ZXIt
PnJlbmRlcmVyKCk7CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogbGF5ZXJSZW5kZXJl
ciA9IGxheWVyLT5yZW5kZXJlcigpOwogICAgIHJldHVybiBsYXllci0+aXNSb290TGF5ZXIoKSB8
fCBsYXllclJlbmRlcmVyLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBsYXllclJlbmRlcmVy
LT5pc1JlbFBvc2l0aW9uZWQoKSB8fCBsYXllci0+aGFzVHJhbnNmb3JtKCk7CiB9CiAKQEAgLTEx
MTAsNyArMTExMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNldEZpbHRlckJhY2tlbmROZWVkc1Jl
cGFpbnRpbmdJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKIGJvb2wgUmVuZGVyTGF5ZXI6
Omhhc0FuY2VzdG9yV2l0aEZpbHRlck91dHNldHMoKSBjb25zdAogewogICAgIGZvciAoY29uc3Qg
UmVuZGVyTGF5ZXIqIGN1cnIgPSB0aGlzOyBjdXJyOyBjdXJyID0gY3Vyci0+cGFyZW50KCkpIHsK
LSAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyID0gY3Vyci0+cmVuZGVyZXIo
KTsKKyAgICAgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVuZGVyZXIgPSBjdXJyLT5y
ZW5kZXJlcigpOwogICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPmhhc0ZpbHRlck91dHNl
dHMoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE2OTAsNyArMTY5MCw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFRvKGludCB4LCBpbnQgeSkKIAogICAgIHVwZGF0
ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGwoKTsKIAotICAgIFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgp
OworICAgIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSByZW5k
ZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50KCk7CiAgICAgRnJhbWUqIGZyYW1lID0gcmVuZGVy
ZXIoKS0+ZnJhbWUoKTsKICAgICBpZiAoZnJhbWUpIHsKICAgICAgICAgLy8gVGhlIGNhcmV0IHJl
Y3QgbmVlZHMgdG8gYmUgaW52YWxpZGF0ZWQgYWZ0ZXIgc2Nyb2xsaW5nCkBAIC00NzU3LDcgKzQ3
NTcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzZXRCYWNraW5nTmVlZHNSZXBhaW50SW5SZWN0KGNv
bnN0IExheW91dFJlY3QmIHIpCiB9CiAKIC8vIFNpbmNlIHdlJ3JlIG9ubHkgcGFpbnRpbmcgbm9u
LWNvbXBvc2l0ZWQgbGF5ZXJzLCB3ZSBrbm93IHRoYXQgdGhleSBhbGwgc2hhcmUgdGhlIHNhbWUg
cmVwYWludENvbnRhaW5lci4KLXZvaWQgUmVuZGVyTGF5ZXI6OnJlcGFpbnRJbmNsdWRpbmdOb25D
b21wb3NpdGluZ0Rlc2NlbmRhbnRzKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKQordm9pZCBSZW5kZXJMYXllcjo6cmVwYWludEluY2x1ZGluZ05vbkNvbXBvc2l0aW5nRGVz
Y2VuZGFudHMoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikKIHsK
ICAgICByZW5kZXJlcigpLT5yZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwg
cmVuZGVyZXIoKS0+Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5l
cikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDAwYzVjMTlk
MjQ0ZGM1MmZlMWFjYmQ3NDEzMzE0ZjBmM2M1YWJkOGQuLjdiMDRmOTgwNjFmNzk0ZDdmNDU0ODcw
ZGMwMjVhOTJkODkwZDIwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CkBAIC0yNDUsMTAgKzI0NSwxMCBAQCBjbGFzcyBSZW5kZXJMYXllciA6IHB1YmxpYyBTY3JvbGxh
YmxlQXJlYSB7CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlclJlcGxpY2E7CiAKLSAg
ICBSZW5kZXJMYXllcihSZW5kZXJCb3hNb2RlbE9iamVjdCopOworICAgIFJlbmRlckxheWVyKFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QqKTsKICAgICB+UmVuZGVyTGF5ZXIoKTsKIAotICAgIFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7
IH0KKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVuZGVyZXI7IH0KICAgICBSZW5kZXJCb3gqIHJlbmRlckJveCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVuZGVyZXIgJiYgbV9yZW5kZXJlci0+aXNCb3goKSA/IHRvUmVuZGVyQm94KG1fcmVu
ZGVyZXIpIDogMDsgfQogICAgIFJlbmRlckxheWVyKiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBt
X3BhcmVudDsgfQogICAgIFJlbmRlckxheWVyKiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3ByZXZpb3VzOyB9CkBAIC0yNjksNyArMjY5LDcgQEAgcHVibGljOgogICAgIC8vIGlm
IGxheWVyIGNvbXBvc2l0aW5nIGlzIGJlaW5nIHVzZWQsCiAgICAgdm9pZCBzZXRCYWNraW5nTmVl
ZHNSZXBhaW50KCk7CiAgICAgdm9pZCBzZXRCYWNraW5nTmVlZHNSZXBhaW50SW5SZWN0KGNvbnN0
IExheW91dFJlY3QmKTsgLy8gciBpcyBpbiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiB0aGUgbGF5
ZXIncyByZW5kZXIgb2JqZWN0Ci0gICAgdm9pZCByZXBhaW50SW5jbHVkaW5nTm9uQ29tcG9zaXRp
bmdEZXNjZW5kYW50cyhSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7Cisg
ICAgdm9pZCByZXBhaW50SW5jbHVkaW5nTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKTsKICNlbmRpZgogCiAgICAgdm9p
ZCBzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUpOwpAQCAtODY3LDcgKzg2Nyw3IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQgY2xhc3MgUmVu
ZGVyTGF5ZXJCYWNraW5nOwogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllckNvbXBvc2l0b3I7
Ci0gICAgZnJpZW5kIGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OworICAgIGZyaWVuZCBjbGFz
cyBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0OwogCiAgICAgLy8gT25seSBzYWZlIHRvIGNhbGwg
ZnJvbSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZGVzdHJveUxheWVyKFJlbmRlckFyZW5hKikKICAg
ICB2b2lkIGRlc3Ryb3koUmVuZGVyQXJlbmEqKTsKQEAgLTkzOSw3ICs5MzksNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgQmxlbmRNb2RlIG1fYmxlbmRNb2RlOwogI2VuZGlmCiAKLSAgICBSZW5kZXJCb3hN
b2RlbE9iamVjdCogbV9yZW5kZXJlcjsKKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBt
X3JlbmRlcmVyOwogCiAgICAgUmVuZGVyTGF5ZXIqIG1fcGFyZW50OwogICAgIFJlbmRlckxheWVy
KiBtX3ByZXZpb3VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5oCmluZGV4IGYxMDdkYzI3OTAxZmVhMWNlYTU1NmUyZGI0YTQ5MjQzMGM2NTQ1MWMuLjk0
N2E2YzA2MGUxZTdmNDQwYjZhYjZiYTkzNGRmZTRiYzI1NTJiNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKQEAgLTE3NSw3ICsxNzUsNyBAQCBw
cml2YXRlOgogICAgIAogICAgIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gY3JlYXRlR3JhcGhp
Y3NMYXllcihjb25zdCBTdHJpbmcmKTsKIAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5k
ZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fb3duaW5nTGF5ZXItPnJlbmRlcmVyKCk7IH0KKyAgICBS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fb3du
aW5nTGF5ZXItPnJlbmRlcmVyKCk7IH0KICAgICBSZW5kZXJMYXllckNvbXBvc2l0b3IqIGNvbXBv
c2l0b3IoKSBjb25zdCB7IHJldHVybiBtX293bmluZ0xheWVyLT5jb21wb3NpdG9yKCk7IH0KIAog
ICAgIHZvaWQgdXBkYXRlSW50ZXJuYWxIaWVyYXJjaHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggNzJiYTRjMmY4ZmJh
OGYxZTdkNTc3ZDcxMDMxZTA3YzliZjYxMzUzMC4uZWMzNWY0YTI5MGY3ZGIxY2Y2NTcyYmM1NjIw
OGFmNDg0YTc1ZjVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTUwNyw3ICs1MDcsNyBAQCBib29sIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6dXBkYXRlQmFja2luZyhSZW5kZXJMYXllciogbGF5ZXIsIENvbXBvc2l0aW5n
Q2hhbmdlUgogICAgICAgICAgICAgLy8gaXRzIHJlcGxpY2EgR3JhcGhpY3NMYXllci4gSW4gcHJh
Y3RpY2UgdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGJlY2F1c2UgcmVmbGVjdGVlIGFuZCByZWZs
ZWN0aW9uIAogICAgICAgICAgICAgLy8gYXJlIGJvdGggZWl0aGVyIGNvbXBvc2l0ZWQsIG9yIG5v
dCBjb21wb3NpdGVkLgogICAgICAgICAgICAgaWYgKGxheWVyLT5pc1JlZmxlY3Rpb24oKSkgewot
ICAgICAgICAgICAgICAgIFJlbmRlckxheWVyKiBzb3VyY2VMYXllciA9IHRvUmVuZGVyQm94TW9k
ZWxPYmplY3QobGF5ZXItPnJlbmRlcmVyKCktPnBhcmVudCgpKS0+bGF5ZXIoKTsKKyAgICAgICAg
ICAgICAgICBSZW5kZXJMYXllciogc291cmNlTGF5ZXIgPSB0b1JlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QobGF5ZXItPnJlbmRlcmVyKCktPnBhcmVudCgpKS0+bGF5ZXIoKTsKICAgICAgICAgICAg
ICAgICBpZiAoUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gc291cmNlTGF5ZXItPmJhY2tp
bmcoKSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmFja2luZy0+Z3JhcGhpY3NMYXll
cigpLT5yZXBsaWNhTGF5ZXIoKSA9PSBsYXllci0+YmFja2luZygpLT5ncmFwaGljc0xheWVyKCkp
OwogICAgICAgICAgICAgICAgICAgICBiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnNldFJlcGxp
Y2F0ZWRCeUxheWVyKDApOwpAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXBhaW50T25Db21wb3NpdGluZ0NoYW5nZShSZW5kZXJMYXllciogbGF5ZXIpCiAg
ICAgaWYgKGxheWVyLT5yZW5kZXJlcigpICE9IG1fcmVuZGVyVmlldyAmJiAhbGF5ZXItPnJlbmRl
cmVyKCktPnBhcmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lciA9IGxheWVyLT5yZW5kZXJlcigpLT5jb250YWluZXJGb3JS
ZXBhaW50KCk7CisgICAgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
ciA9IGxheWVyLT5yZW5kZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50KCk7CiAgICAgaWYgKCFy
ZXBhaW50Q29udGFpbmVyKQogICAgICAgICByZXBhaW50Q29udGFpbmVyID0gbV9yZW5kZXJWaWV3
OwogCkBAIC0xNDMyLDcgKzE0MzIsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikgYwogICAgIC8v
IFRoZSBjb21wb3NpdGluZyBzdGF0ZSBvZiBhIHJlZmxlY3Rpb24gc2hvdWxkIG1hdGNoIHRoYXQg
b2YgaXRzIHJlZmxlY3RlZCBsYXllci4KICAgICBpZiAobGF5ZXItPmlzUmVmbGVjdGlvbigpKSB7
CiAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOyAvLyBUaGUgUmVuZGVyUmVw
bGljYSdzIHBhcmVudCBpcyB0aGUgb2JqZWN0IGJlaW5nIHJlZmxlY3RlZC4KLSAgICAgICAgbGF5
ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlcmVyKS0+bGF5ZXIoKTsKKyAgICAgICAg
bGF5ZXIgPSB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QocmVuZGVyZXIpLT5sYXllcigpOwog
ICAgIH0KICAgICAvLyBUaGUgcm9vdCBsYXllciBhbHdheXMgaGFzIGEgY29tcG9zaXRpbmcgbGF5
ZXIsIGJ1dCBpdCBtYXkgbm90IGhhdmUgYmFja2luZy4KICAgICByZXR1cm4gcmVxdWlyZXNDb21w
b3NpdGluZ0ZvclRyYW5zZm9ybShyZW5kZXJlcikKQEAgLTE0OTcsNyArMTQ5Nyw3IEBAIGNvbnN0
IGNoYXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVhc29uRm9yQ29tcG9zaXRpbmcoY29uc3Qg
UmVuZGVyTGF5ZXIqIGxheWVyCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGxheWVyLT5y
ZW5kZXJlcigpOwogICAgIGlmIChsYXllci0+aXNSZWZsZWN0aW9uKCkpIHsKICAgICAgICAgcmVu
ZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7Ci0gICAgICAgIGxheWVyID0gdG9SZW5kZXJCb3hN
b2RlbE9iamVjdChyZW5kZXJlciktPmxheWVyKCk7CisgICAgICAgIGxheWVyID0gdG9SZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KHJlbmRlcmVyKS0+bGF5ZXIoKTsKICAgICB9CiAKICAgICBpZiAo
cmVxdWlyZXNDb21wb3NpdGluZ0ZvclRyYW5zZm9ybShyZW5kZXJlcikpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggMDRkODYzMmE4MTlmODll
ZTE5NDk2MDk0Y2IyMWYxN2Y0YTY3NGI0Yy4uMThmNzM3M2U0OTJlZTNiMDZjMWE0ZWUyNzI0MTE0
NTEwNzUzZTMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFy
a2VyLmNwcApAQCAtMTcwMyw3ICsxNzAzLDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpzZXRT
ZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25TdGF0ZSBzdGF0ZSkKICAgICAgICAgICAgIHJvb3QtPnNl
dEhhc1NlbGVjdGVkQ2hpbGRyZW4oc3RhdGUgIT0gU2VsZWN0aW9uTm9uZSk7CiB9CiAKLUxheW91
dFJlY3QgUmVuZGVyTGlzdE1hcmtlcjo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQp
CitMYXlvdXRSZWN0IFJlbmRlckxpc3RNYXJrZXI6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlz
aWJsZUNvbnRlbnQpCiB7CiAgICAgQVNTRVJUKCFuZWVkc0xheW91dCgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKaW5kZXggZDg4ZDkyMmIwZTQyODNj
Y2E0NTYwMzVmNGVlYjExN2Q4MmM4ZjUyZC4uYjJmNTI1YWZkN2Q3YmZkYmRlM2E2NTFjYjliYzMx
ZjIwNDYyMmNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RNYXJrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtl
ci5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1RleHQoKSBjb25zdCB7
IHJldHVybiAhaXNJbWFnZSgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0aW9uU3Rh
dGUoU2VsZWN0aW9uU3RhdGUpOwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBj
bGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxl
Y3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IAogICAgIHZvaWQgdXBkYXRlTWFyZ2lucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAppbmRleCAzOTFjMTE5ODg2YTU2NDMzOGM3ZDFkZjFkN2YzMWUwZjczNzIz
YTQ5Li42MDRjZDg0N2U5YWJmYTU0N2FjOTU2NDVhMmZhN2ViNjQ0ZWUxZGRhIDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjphZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkKQogICAgIC8vIFRvIGF2b2lkIHRoZSBwcm9ibGVtIGFsbHRvZ2V0
aGVyLCBkZXRlY3QgZWFybHkgaWYgd2UncmUgaW5zaWRlIGEgaGlkZGVuIFNWRyBzdWJ0cmVlCiAg
ICAgLy8gYW5kIHN0b3AgY3JlYXRpbmcgbGF5ZXJzIGF0IGFsbCBmb3IgdGhlc2UgY2FzZXMgLSB0
aGV5J3JlIG5vdCB1c2VkIGFueXdheXMuCiAgICAgaWYgKG5ld0NoaWxkLT5oYXNMYXllcigpICYm
ICFsYXllckNyZWF0aW9uQWxsb3dlZEZvclN1YnRyZWUoKSkKLSAgICAgICAgdG9SZW5kZXJCb3hN
b2RlbE9iamVjdChuZXdDaGlsZCktPmxheWVyKCktPnJlbW92ZU9ubHlUaGlzTGF5ZXIoKTsKKyAg
ICAgICAgdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KG5ld0NoaWxkKS0+bGF5ZXIoKS0+cmVt
b3ZlT25seVRoaXNMYXllcigpOwogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlQ2hpbGQo
UmVuZGVyT2JqZWN0KiBvbGRDaGlsZCkKQEAgLTQzMiw3ICs0MzIsNyBAQCBzdGF0aWMgdm9pZCBh
ZGRMYXllcnMoUmVuZGVyT2JqZWN0KiBvYmosIFJlbmRlckxheWVyKiBwYXJlbnRMYXllciwgUmVu
ZGVyT2JqZWN0KgogICAgICAgICAgICAgYmVmb3JlQ2hpbGQgPSBuZXdPYmplY3QtPnBhcmVudCgp
LT5maW5kTmV4dExheWVyKHBhcmVudExheWVyLCBuZXdPYmplY3QpOwogICAgICAgICAgICAgbmV3
T2JqZWN0ID0gMDsKICAgICAgICAgfQotICAgICAgICBwYXJlbnRMYXllci0+YWRkQ2hpbGQodG9S
ZW5kZXJCb3hNb2RlbE9iamVjdChvYmopLT5sYXllcigpLCBiZWZvcmVDaGlsZCk7CisgICAgICAg
IHBhcmVudExheWVyLT5hZGRDaGlsZCh0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qob2JqKS0+
bGF5ZXIoKSwgYmVmb3JlQ2hpbGQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTYs
NyArNDU2LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZUxheWVycyhSZW5kZXJMYXllciog
cGFyZW50TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChoYXNMYXllcigpKSB7Ci0g
ICAgICAgIHBhcmVudExheWVyLT5yZW1vdmVDaGlsZCh0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRo
aXMpLT5sYXllcigpKTsKKyAgICAgICAgcGFyZW50TGF5ZXItPnJlbW92ZUNoaWxkKHRvUmVuZGVy
VHJhbnNmb3JtYWJsZU9iamVjdCh0aGlzKS0+bGF5ZXIoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTQ3MCw3ICs0NzAsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6bW92ZUxheWVycyhS
ZW5kZXJMYXllciogb2xkUGFyZW50LCBSZW5kZXJMYXllciogbmV3UGFyZW50KQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoaGFzTGF5ZXIoKSkgewotICAgICAgICBSZW5kZXJMYXllciogbGF5
ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpOworICAgICAgICBSZW5k
ZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVy
KCk7CiAgICAgICAgIEFTU0VSVChvbGRQYXJlbnQgPT0gbGF5ZXItPnBhcmVudCgpKTsKICAgICAg
ICAgaWYgKG9sZFBhcmVudCkKICAgICAgICAgICAgIG9sZFBhcmVudC0+cmVtb3ZlQ2hpbGQobGF5
ZXIpOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIFJlbmRlckxheWVyKiBSZW5kZXJPYmplY3Q6OmZpbmRO
ZXh0TGF5ZXIoUmVuZGVyTGF5ZXIqIHBhcmVudExheWVyLCBSZW5kZXJPYmplY3QqCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgLy8gU3RlcCAxOiBJZiBvdXIgbGF5ZXIgaXMgYSBjaGlsZCBvZiB0
aGUgZGVzaXJlZCBwYXJlbnQsIHRoZW4gcmV0dXJuIG91ciBsYXllci4KLSAgICBSZW5kZXJMYXll
ciogb3VyTGF5ZXIgPSBoYXNMYXllcigpID8gdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+
bGF5ZXIoKSA6IDA7CisgICAgUmVuZGVyTGF5ZXIqIG91ckxheWVyID0gaGFzTGF5ZXIoKSA/IHRv
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCh0aGlzKS0+bGF5ZXIoKSA6IDA7CiAgICAgaWYgKG91
ckxheWVyICYmIG91ckxheWVyLT5wYXJlbnQoKSA9PSBwYXJlbnRMYXllcikKICAgICAgICAgcmV0
dXJuIG91ckxheWVyOwogCkBAIC01MjIsNyArNTIyLDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlck9i
amVjdDo6ZW5jbG9zaW5nTGF5ZXIoKSBjb25zdAogewogICAgIGNvbnN0IFJlbmRlck9iamVjdCog
Y3VyciA9IHRoaXM7CiAgICAgd2hpbGUgKGN1cnIpIHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxh
eWVyID0gY3Vyci0+aGFzTGF5ZXIoKSA/IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY3VyciktPmxh
eWVyKCkgOiAwOworICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBjdXJyLT5oYXNMYXllcigp
ID8gdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KGN1cnIpLT5sYXllcigpIDogMDsKICAgICAg
ICAgaWYgKGxheWVyKQogICAgICAgICAgICAgcmV0dXJuIGxheWVyOwogICAgICAgICBjdXJyID0g
Y3Vyci0+cGFyZW50KCk7CkBAIC03MTgsMTMgKzcxOCwxMyBAQCB2b2lkIFJlbmRlck9iamVjdDo6
aW52YWxpZGF0ZUNvbnRhaW5lclByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogdm9pZCBSZW5kZXJP
YmplY3Q6OnNldExheWVyTmVlZHNGdWxsUmVwYWludCgpCiB7CiAgICAgQVNTRVJUKGhhc0xheWVy
KCkpOwotICAgIHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCktPnNldFJlcGFp
bnRTdGF0dXMoTmVlZHNGdWxsUmVwYWludCk7CisgICAgdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0KHRoaXMpLT5sYXllcigpLT5zZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnQpOwog
fQogCiB2b2lkIFJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRp
b25lZE1vdmVtZW50TGF5b3V0KCkKIHsKICAgICBBU1NFUlQoaGFzTGF5ZXIoKSk7Ci0gICAgdG9S
ZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhOZWVk
c0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KTsKKyAgICB0b1JlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCktPnNldFJlcGFpbnRTdGF0dXMoTmVlZHNG
dWxsUmVwYWludEZvclBvc2l0aW9uZWRNb3ZlbWVudExheW91dCk7CiB9CiAKIFJlbmRlckJsb2Nr
KiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5pbmdCbG9jaygpIGNvbnN0CkBAIC0xMjQzLDEzICsxMjQz
LDEzIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYpCiB7CiB9CiAKLVJlbmRlckJveE1vZGVsT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNvbnRh
aW5lckZvclJlcGFpbnQoKSBjb25zdAorUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogUmVuZGVy
T2JqZWN0Ojpjb250YWluZXJGb3JSZXBhaW50KCkgY29uc3QKIHsKICAgICBSZW5kZXJWaWV3KiB2
ID0gdmlldygpOwogICAgIGlmICghdikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSAwOworICAgIFJlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSAwOwogCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQogICAgIGlmICh2LT51c2VzQ29tcG9zaXRpbmcoKSkgewpAQCAtMTI3
OSw3ICsxMjc5LDcgQEAgUmVuZGVyQm94TW9kZWxPYmplY3QqIFJlbmRlck9iamVjdDo6Y29udGFp
bmVyRm9yUmVwYWludCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlcGFpbnRDb250YWluZXI7CiB9CiAK
LXZvaWQgUmVuZGVyT2JqZWN0OjpyZXBhaW50VXNpbmdDb250YWluZXIoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFJlY3QmIHIsIGJvb2wgaW1tZWRp
YXRlKQordm9pZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRVc2luZ0NvbnRhaW5lcihSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiByLCBi
b29sIGltbWVkaWF0ZSkKIHsKICAgICBpZiAoIXJlcGFpbnRDb250YWluZXIpIHsKICAgICAgICAg
dmlldygpLT5yZXBhaW50Vmlld1JlY3RhbmdsZShyLCBpbW1lZGlhdGUpOwpAQCAtMTMzMiw3ICsx
MzMyLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnQoYm9vbCBpbW1lZGlhdGUpCiAgICAg
aWYgKHZpZXctPnByaW50aW5nKCkpCiAgICAgICAgIHJldHVybjsgLy8gRG9uJ3QgcmVwYWludCBp
ZiB3ZSdyZSBwcmludGluZy4KIAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyID0gY29udGFpbmVyRm9yUmVwYWludCgpOworICAgIFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBjb250YWluZXJGb3JSZXBhaW50KCk7CiAgICAgcmVw
YWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIgPyByZXBhaW50Q29udGFpbmVyIDog
dmlldywgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciksIGlt
bWVkaWF0ZSk7CiB9CiAKQEAgLTEzNTIsNyArMTM1Miw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpy
ZXBhaW50UmVjdGFuZ2xlKGNvbnN0IExheW91dFJlY3QmIHIsIGJvb2wgaW1tZWRpYXRlKQogICAg
IC8vIHJlcGFpbnQgY29udGFpbmVycy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzA4CiAgICAgZGlydHlSZWN0Lm1vdmUodmlldy0+bGF5b3V0RGVsdGEoKSk7CiAK
LSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IGNvbnRhaW5lckZv
clJlcGFpbnQoKTsKKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyID0gY29udGFpbmVyRm9yUmVwYWludCgpOwogICAgIGNvbXB1dGVSZWN0Rm9yUmVwYWludChy
ZXBhaW50Q29udGFpbmVyLCBkaXJ0eVJlY3QpOwogICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihy
ZXBhaW50Q29udGFpbmVyID8gcmVwYWludENvbnRhaW5lciA6IHZpZXcsIGRpcnR5UmVjdCwgaW1t
ZWRpYXRlKTsKIH0KQEAgLTEzNjIsNyArMTM2Miw3IEBAIEludFJlY3QgUmVuZGVyT2JqZWN0Ojpw
aXhlbFNuYXBwZWRBYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdAogICAgIHJldHVy
biBwaXhlbFNuYXBwZWRJbnRSZWN0KGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpKTsKIH0K
IAotYm9vbCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRCb3Vu
ZHMsIGNvbnN0IExheW91dFJlY3QmIG9sZE91dGxpbmVCb3gsIGNvbnN0IExheW91dFJlY3QqIG5l
d0JvdW5kc1B0ciwgY29uc3QgTGF5b3V0UmVjdCogbmV3T3V0bGluZUJveFJlY3RQdHIpCitib29s
IFJlbmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYgb2xkQm91bmRz
LCBjb25zdCBMYXlvdXRSZWN0JiBvbGRPdXRsaW5lQm94LCBjb25zdCBMYXlvdXRSZWN0KiBuZXdC
b3VuZHNQdHIsIGNvbnN0IExheW91dFJlY3QqIG5ld091dGxpbmVCb3hSZWN0UHRyKQogewogICAg
IFJlbmRlclZpZXcqIHYgPSB2aWV3KCk7CiAgICAgaWYgKHYtPnByaW50aW5nKCkpCkBAIC0xNDgz
LDIwICsxNDgzLDIwIEBAIGJvb2wgUmVuZGVyT2JqZWN0OjpjaGVja0ZvclJlcGFpbnREdXJpbmdM
YXlvdXQoKSBjb25zdAogICAgIHJldHVybiAhZG9jdW1lbnQoKS0+dmlldygpLT5uZWVkc0Z1bGxS
ZXBhaW50KCkgJiYgIWhhc0xheWVyKCkgJiYgZXZlckhhZExheW91dCgpOwogfQogCi1MYXlvdXRS
ZWN0IFJlbmRlck9iamVjdDo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0
CitMYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxp
bmVXaWR0aCkgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IHIoY2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQocmVwYWludENvbnRhaW5lcikpOwogICAgIHIuaW5mbGF0ZShvdXRsaW5lV2lkdGgp
OwogICAgIHJldHVybiByOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6Y2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqKSBjb25zdAorTGF5b3V0
UmVjdCBSZW5kZXJPYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QqKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRl
UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExh
eW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlck9iamVjdDo6Y29t
cHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJl
cGFpbnRDb250YWluZXIgPT0gdGhpcykKICAgICAgICAgcmV0dXJuOwpAQCAtMTUyNyw3ICsxNTI3
LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyT2Jq
ZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCosIEZs
b2F0UmVjdCYsIGJvb2wpIGNvbnN0Cit2b2lkIFJlbmRlck9iamVjdDo6Y29tcHV0ZUZsb2F0UmVj
dEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCosIEZsb2F0UmVjdCYsIGJvb2wp
IGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xNjg4LDcgKzE2ODgs
NyBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyT2JqZWN0OjphZGp1c3RTdHlsZURpZmZlcmVuY2Uo
U3R5bGVEaWZmZXJlbmNlIGRpZmYsIHVuc2lnbgogICAgICAgICAvLyBUZXh0IG5vZGVzIHNoYXJl
IHN0eWxlIHdpdGggdGhlaXIgcGFyZW50cyBidXQgdHJhbnNmb3JtcyBkb24ndCBhcHBseSB0byB0
aGVtLAogICAgICAgICAvLyBoZW5jZSB0aGUgIWlzVGV4dCgpIGNoZWNrLgogICAgICAgICAvLyBG
SVhNRTogd2hlbiB0cmFuc2Zvcm1zIGFyZSB0YWtlbiBpbnRvIGFjY291bnQgZm9yIG92ZXJmbG93
LCB3ZSB3aWxsIG5lZWQgdG8gZG8gYSBsYXlvdXQuCi0gICAgICAgIGlmICghaXNUZXh0KCkgJiYg
KCFoYXNMYXllcigpIHx8ICF0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5p
c0NvbXBvc2l0ZWQoKSkpIHsKKyAgICAgICAgaWYgKCFpc1RleHQoKSAmJiAoIWhhc0xheWVyKCkg
fHwgIXRvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+aXNDb21wb3Np
dGVkKCkpKSB7CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHNldCBhdCBsZWFzdCBTaW1wbGlm
aWVkTGF5b3V0LCBidXQgaWYgUG9zaXRpb25lZE1vdmVtZW50T25seSBpcyBhbHJlYWR5IHNldAog
ICAgICAgICAgICAgLy8gdGhlbiB3ZSBhY3R1YWxseSBuZWVkIFNpbXBsaWZpZWRMYXlvdXRBbmRQ
b3NpdGlvbmVkTW92ZW1lbnQuCiAgICAgICAgICAgICBpZiAoIWhhc0xheWVyKCkpCkBAIC0xNzA0
LDcgKzE3MDQsNyBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyT2JqZWN0OjphZGp1c3RTdHlsZURp
ZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIHVuc2lnbgogICAgIC8vIElmIG9wYWNpdHkg
Y2hhbmdlZCwgYW5kIHdlIGFyZSBub3QgY29tcG9zaXRlZCwgbmVlZCB0byByZXBhaW50IChhbHNv
CiAgICAgLy8gaWdub3JpbmcgdGV4dCBub2RlcykKICAgICBpZiAoY29udGV4dFNlbnNpdGl2ZVBy
b3BlcnRpZXMgJiBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlPcGFjaXR5KSB7Ci0gICAgICAgIGlm
ICghaXNUZXh0KCkgJiYgKCFoYXNMYXllcigpIHx8ICF0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRo
aXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkpCisgICAgICAgIGlmICghaXNUZXh0KCkgJiYg
KCFoYXNMYXllcigpIHx8ICF0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVy
KCktPmlzQ29tcG9zaXRlZCgpKSkKICAgICAgICAgICAgIGRpZmYgPSBTdHlsZURpZmZlcmVuY2VS
ZXBhaW50TGF5ZXI7CiAgICAgICAgIGVsc2UgaWYgKGRpZmYgPCBTdHlsZURpZmZlcmVuY2VSZWNv
bXBvc2l0ZUxheWVyKQogICAgICAgICAgICAgZGlmZiA9IFN0eWxlRGlmZmVyZW5jZVJlY29tcG9z
aXRlTGF5ZXI7CkBAIC0xNzEyLDcgKzE3MTIsNyBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyT2Jq
ZWN0OjphZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIHVuc2lnbgog
ICAgIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICBpZiAoKGNvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0aWVzICYgQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5RmlsdGVyKSAmJiBoYXNMYXllcigp
KSB7Ci0gICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qo
dGhpcyktPmxheWVyKCk7CisgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdCh0aGlzKS0+bGF5ZXIoKTsKICAgICAgICAgaWYgKCFsYXllci0+aXND
b21wb3NpdGVkKCkgfHwgbGF5ZXItPnBhaW50c1dpdGhGaWx0ZXJzKCkpCiAgICAgICAgICAgICBk
aWZmID0gU3R5bGVEaWZmZXJlbmNlUmVwYWludExheWVyOwogICAgICAgICBlbHNlIGlmIChkaWZm
IDwgU3R5bGVEaWZmZXJlbmNlUmVjb21wb3NpdGVMYXllcikKQEAgLTE3MjMsOCArMTcyMyw4IEBA
IFN0eWxlRGlmZmVyZW5jZSBSZW5kZXJPYmplY3Q6OmFkanVzdFN0eWxlRGlmZmVyZW5jZShTdHls
ZURpZmZlcmVuY2UgZGlmZiwgdW5zaWduCiAgICAgLy8gVGhlIGFuc3dlciB0byByZXF1aXJlc0xh
eWVyKCkgZm9yIHBsdWdpbnMgYW5kIGlmcmFtZXMgY2FuIGNoYW5nZSBvdXRzaWRlIG9mIHRoZSBz
dHlsZSBzeXN0ZW0sCiAgICAgLy8gc2luY2UgaXQgZGVwZW5kcyBvbiB3aGV0aGVyIHdlIGRlY2lk
ZSB0byBjb21wb3NpdGUgdGhlc2UgZWxlbWVudHMuIFdoZW4gdGhlIGxheWVyIHN0YXR1cyBvZgog
ICAgIC8vIG9uZSBvZiB0aGVzZSBlbGVtZW50cyBjaGFuZ2VzLCB3ZSBuZWVkIHRvIGZvcmNlIGEg
bGF5b3V0LgotICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUVxdWFsICYmIHN0eWxlKCkg
JiYgaXNCb3hNb2RlbE9iamVjdCgpKSB7Ci0gICAgICAgIGlmIChoYXNMYXllcigpICE9IHRvUmVu
ZGVyQm94TW9kZWxPYmplY3QodGhpcyktPnJlcXVpcmVzTGF5ZXIoKSkKKyAgICBpZiAoZGlmZiA9
PSBTdHlsZURpZmZlcmVuY2VFcXVhbCAmJiBzdHlsZSgpICYmIGlzVHJhbnNmb3JtYWJsZU9iamVj
dCgpKSB7CisgICAgICAgIGlmIChoYXNMYXllcigpICE9IHRvUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdCh0aGlzKS0+cmVxdWlyZXNMYXllcigpKQogICAgICAgICAgICAgZGlmZiA9IFN0eWxlRGlm
ZmVyZW5jZUxheW91dDsKICAgICB9CiAjZWxzZQpAQCAtMjAzMSw3ICsyMDMxLDcgQEAgRmxvYXRQ
b2ludCBSZW5kZXJPYmplY3Q6OmFic29sdXRlVG9Mb2NhbChjb25zdCBGbG9hdFBvaW50JiBjb250
YWluZXJQb2ludCwgYm9vbAogICAgIHJldHVybiB0cmFuc2Zvcm1TdGF0ZS5sYXN0UGxhbmFyUG9p
bnQoKTsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zv
cm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBj
b25zdAordm9pZCBSZW5kZXJPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9y
bVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNv
bnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXIgPT0gdGhpcykKICAgICAgICAgcmV0dXJu
OwpAQCAtMjA1OSw3ICsyMDU5LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6Om1hcExvY2FsVG9Db250
YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFQKICAgICBvLT5t
YXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2Rl
LCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpwdXNo
TWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRv
U3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5k
ZXJPYmplY3QqIFJlbmRlck9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1h
cCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgQVNTRVJUX1VOVVNFRChhbmNlc3RvclRvU3Rv
cEF0LCBhbmNlc3RvclRvU3RvcEF0ICE9IHRoaXMpOwogCkBAIC0yMDkyLDcgKzIwOTIsNyBAQCBi
b29sIFJlbmRlck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBS
ZW5kZXJPYmplY3QqIGNvbnRhaW5lcgogI2lmIEVOQUJMRSgzRF9SRU5ERVJJTkcpCiAgICAgLy8g
aGFzVHJhbnNmb3JtKCkgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIG9iamVjdCBoYXMgdHJhbnNmb3Jt
LCB0cmFuc2Zvcm0tc3R5bGUgb3IgcGVyc3BlY3RpdmUuIFdlIGp1c3QgY2FyZSBhYm91dCB0cmFu
c2Zvcm0sCiAgICAgLy8gc28gY2hlY2sgdGhlIGxheWVyJ3MgdHJhbnNmb3JtIGRpcmVjdGx5Lgot
ICAgIHJldHVybiAoaGFzTGF5ZXIoKSAmJiB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5s
YXllcigpLT50cmFuc2Zvcm0oKSkgfHwgKGNvbnRhaW5lck9iamVjdCAmJiBjb250YWluZXJPYmpl
Y3QtPnN0eWxlKCktPmhhc1BlcnNwZWN0aXZlKCkpOworICAgIHJldHVybiAoaGFzTGF5ZXIoKSAm
JiB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCktPnRyYW5zZm9ybSgp
KSB8fCAoY29udGFpbmVyT2JqZWN0ICYmIGNvbnRhaW5lck9iamVjdC0+c3R5bGUoKS0+aGFzUGVy
c3BlY3RpdmUoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250YWluZXJPYmplY3QpOwog
ICAgIHJldHVybiBoYXNUcmFuc2Zvcm0oKTsKQEAgLTIxMDQsMTQgKzIxMDQsMTQgQEAgdm9pZCBS
ZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0
KiBjb250YWluZXJPYmplY3QKICAgICB0cmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7CiAgICAgdHJh
bnNmb3JtLnRyYW5zbGF0ZShvZmZzZXRJbkNvbnRhaW5lci53aWR0aCgpLCBvZmZzZXRJbkNvbnRh
aW5lci5oZWlnaHQoKSk7CiAgICAgUmVuZGVyTGF5ZXIqIGxheWVyOwotICAgIGlmIChoYXNMYXll
cigpICYmIChsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCkpICYm
IGxheWVyLT50cmFuc2Zvcm0oKSkKKyAgICBpZiAoaGFzTGF5ZXIoKSAmJiAobGF5ZXIgPSB0b1Jl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCkpICYmIGxheWVyLT50cmFuc2Zv
cm0oKSkKICAgICAgICAgdHJhbnNmb3JtLm11bHRpcGx5KGxheWVyLT5jdXJyZW50VHJhbnNmb3Jt
KCkpOwogICAgIAogI2lmIEVOQUJMRSgzRF9SRU5ERVJJTkcpCiAgICAgaWYgKGNvbnRhaW5lck9i
amVjdCAmJiBjb250YWluZXJPYmplY3QtPmhhc0xheWVyKCkgJiYgY29udGFpbmVyT2JqZWN0LT5z
dHlsZSgpLT5oYXNQZXJzcGVjdGl2ZSgpKSB7CiAgICAgICAgIC8vIFBlcnBzZWN0aXZlIG9uIHRo
ZSBjb250YWluZXIgYWZmZWN0cyB1cywgc28gd2UgaGF2ZSB0byBmYWN0b3IgaXQgaW4gaGVyZS4K
ICAgICAgICAgQVNTRVJUKGNvbnRhaW5lck9iamVjdC0+aGFzTGF5ZXIoKSk7Ci0gICAgICAgIEZs
b2F0UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4gPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGNvbnRh
aW5lck9iamVjdCktPmxheWVyKCktPnBlcnNwZWN0aXZlT3JpZ2luKCk7CisgICAgICAgIEZsb2F0
UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4gPSB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QoY29u
dGFpbmVyT2JqZWN0KS0+bGF5ZXIoKS0+cGVyc3BlY3RpdmVPcmlnaW4oKTsKIAogICAgICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBwZXJzcGVjdGl2ZU1hdHJpeDsKICAgICAgICAgcGVyc3BlY3Rp
dmVNYXRyaXguYXBwbHlQZXJzcGVjdGl2ZShjb250YWluZXJPYmplY3QtPnN0eWxlKCktPnBlcnNw
ZWN0aXZlKCkpOwpAQCAtMjEyNSw3ICsyMTI1LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRy
YW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXJPYmplY3QK
ICNlbmRpZgogfQogCi1GbG9hdFF1YWQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVyUXVh
ZChjb25zdCBGbG9hdFF1YWQmIGxvY2FsUXVhZCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGJvb2wgc25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIGJv
b2wqIHdhc0ZpeGVkKSBjb25zdAorRmxvYXRRdWFkIFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRh
aW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiBsb2NhbFF1YWQsIFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgc25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJv
b2wgZml4ZWQsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIC8vIFRyYWNrIHRoZSBwb2lu
dCBhdCB0aGUgY2VudGVyIG9mIHRoZSBxdWFkJ3MgYm91bmRpbmcgYm94LiBBcyBtYXBMb2NhbFRv
Q29udGFpbmVyKCkgY2FsbHMgb2Zmc2V0RnJvbUNvbnRhaW5lcigpLAogICAgIC8vIGl0IHdpbGwg
dXNlIHRoYXQgcG9pbnQgYXMgdGhlIHJlZmVyZW5jZSBwb2ludCB0byBkZWNpZGUgd2hpY2ggY29s
dW1uJ3MgdHJhbnNmb3JtIHRvIGFwcGx5IGluIG11bHRpcGxlLWNvbHVtbiBibG9ja3MuCkBAIC0y
MTQxLDcgKzIxNDEsNyBAQCBGbG9hdFF1YWQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVy
UXVhZChjb25zdCBGbG9hdFF1YWQmIGxvY2FsUXVhZCwgUmVuZGVyQgogICAgIHJldHVybiB0cmFu
c2Zvcm1TdGF0ZS5sYXN0UGxhbmFyUXVhZCgpOwogfQogCi1GbG9hdFBvaW50IFJlbmRlck9iamVj
dDo6bG9jYWxUb0NvbnRhaW5lclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsUG9pbnQsIFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHNuYXBPZmZzZXRGb3JU
cmFuc2Zvcm1zLCBib29sIGZpeGVkLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK0Zsb2F0UG9pbnQg
UmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVyUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgbG9j
YWxQb2ludCwgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9v
bCBzbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgYm9vbCogd2FzRml4ZWQpIGNv
bnN0CiB7CiAgICAgVHJhbnNmb3JtU3RhdGUgdHJhbnNmb3JtU3RhdGUoVHJhbnNmb3JtU3RhdGU6
OkFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uLCBsb2NhbFBvaW50KTsKICAgICBNYXBMb2NhbFRvQ29u
dGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFVzZVRyYW5zZm9ybXM7CkBA
IC0yMjQ0LDcgKzIyNDQsNyBAQCBib29sIFJlbmRlck9iamVjdDo6aGFzT3V0bGluZUFubm90YXRp
b24oKSBjb25zdAogICAgIHJldHVybiBub2RlKCkgJiYgbm9kZSgpLT5pc0xpbmsoKSAmJiBkb2N1
bWVudCgpLT5wcmludGluZygpOwogfQogCi1SZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6Y29u
dGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29s
KiByZXBhaW50Q29udGFpbmVyU2tpcHBlZCkgY29uc3QKK1JlbmRlck9iamVjdCogUmVuZGVyT2Jq
ZWN0Ojpjb250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCogcmVwYWludENvbnRhaW5lclNraXBwZWQpIGNvbnN0CiB7CiAgICAgaWYg
KHJlcGFpbnRDb250YWluZXJTa2lwcGVkKQogICAgICAgICAqcmVwYWludENvbnRhaW5lclNraXBw
ZWQgPSBmYWxzZTsKQEAgLTIzNzcsNyArMjM3Nyw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojp3aWxs
QmVEZXN0cm95ZWQoKQogICAgIC8vIGJlIG1vdmVkIGludG8gUmVuZGVyQm94TW9kZWxPYmplY3Q6
OmRlc3Ryb3kuCiAgICAgaWYgKGhhc0xheWVyKCkpIHsKICAgICAgICAgc2V0SGFzTGF5ZXIoZmFs
c2UpOwotICAgICAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5kZXN0cm95TGF5ZXIo
KTsKKyAgICAgICAgdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KHRoaXMpLT5kZXN0cm95TGF5
ZXIoKTsKICAgICB9CiAKICAgICBzZXRBbmNlc3RvckxpbmVCb3hEaXJ0eShmYWxzZSk7CkBAIC0y
NTMyLDcgKzI1MzIsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6dXBkYXRlRHJhZ1N0YXRlKGJvb2wg
ZHJhZ09uKQogCiBib29sIFJlbmRlck9iamVjdDo6aXNDb21wb3NpdGVkKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gaGFzTGF5ZXIoKSAmJiB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXll
cigpLT5pc0NvbXBvc2l0ZWQoKTsKKyAgICByZXR1cm4gaGFzTGF5ZXIoKSAmJiB0b1JlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QodGhpcyktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOwogfQogCiBi
b29sIFJlbmRlck9iamVjdDo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0UG9pbnQmIHBvaW50SW5Db250YWlu
ZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEZpbHRlciBo
aXRUZXN0RmlsdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4
IDNjYTJhMjI1NTJmZmYzYmZkZDVjYTAxMDY0NDcxMWE1NGE2MGYwYzYuLjJmNjJjNTUyNDQyYWIy
YjAxM2NhZDFlMGFiNmY5MjBmYmQyZmI2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKQEAgLTYyLDYgKzYyLDcgQEAgY2xhc3MgUmVuZGVyTGF5ZXI7CiBjbGFzcyBS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQ7CiBjbGFzcyBSZW5kZXJUYWJsZTsKIGNsYXNzIFJlbmRlclRo
ZW1lOworY2xhc3MgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDsKIGNsYXNzIFRyYW5zZm9ybVN0
YXRlOwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogI2lmIEVOQUJMRShTVkcpCkBAIC0zNjAsNiAr
MzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0QXJlYSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZpZWxkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFuc2Zvcm1hYmxlT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNWaWRlbygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzV2lkZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNDYW52YXMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQpAQCAtNTk2LDcgKzU5OCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRo
ZSBvYmplY3QgY29udGFpbmluZyB0aGlzIG9uZS4gQ2FuIGJlIGRpZmZlcmVudCBmcm9tIHBhcmVu
dCBmb3IgcG9zaXRpb25lZCBlbGVtZW50cy4KICAgICAvLyBJZiByZXBhaW50Q29udGFpbmVyIGFu
ZCByZXBhaW50Q29udGFpbmVyU2tpcHBlZCBhcmUgbm90IG51bGwsIG9uIHJldHVybiAqcmVwYWlu
dENvbnRhaW5lclNraXBwZWQKICAgICAvLyBpcyB0cnVlIGlmIHRoZSByZW5kZXJlciByZXR1cm5l
ZCBpcyBhbiBhbmNlc3RvciBvZiByZXBhaW50Q29udGFpbmVyLgotICAgIFJlbmRlck9iamVjdCog
Y29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0g
MCwgYm9vbCogcmVwYWludENvbnRhaW5lclNraXBwZWQgPSAwKSBjb25zdDsKKyAgICBSZW5kZXJP
YmplY3QqIGNvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyID0gMCwgYm9vbCogcmVwYWludENvbnRhaW5lclNraXBwZWQgPSAwKSBjb25zdDsK
IAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBob3ZlckFuY2VzdG9yKCkgY29uc3QgeyByZXR1
cm4gcGFyZW50KCk7IH0KIApAQCAtNjkyLDggKzY5NCw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICAvLyBDb252ZXJ0IGEgbG9jYWwgcXVhZCBpbnRvIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiBj
b250YWluZXIsIHRha2luZyB0cmFuc2Zvcm1zIGludG8gYWNjb3VudC4KLSAgICBGbG9hdFF1YWQg
bG9jYWxUb0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiwgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgc25hcE9mZnNldEZvclRyYW5zZm9ybXMgPSB0cnVl
LCBib29sIGZpeGVkID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgRmxv
YXRQb2ludCBsb2NhbFRvQ29udGFpbmVyUG9pbnQoY29uc3QgRmxvYXRQb2ludCYsIFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHNuYXBPZmZzZXRGb3JUcmFuc2Zv
cm1zID0gdHJ1ZSwgYm9vbCBmaXhlZCA9IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0
OworICAgIEZsb2F0UXVhZCBsb2NhbFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmLCBS
ZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHNuYXBPZmZz
ZXRGb3JUcmFuc2Zvcm1zID0gdHJ1ZSwgYm9vbCBmaXhlZCA9IGZhbHNlLCBib29sKiB3YXNGaXhl
ZCA9IDApIGNvbnN0OworICAgIEZsb2F0UG9pbnQgbG9jYWxUb0NvbnRhaW5lclBvaW50KGNvbnN0
IEZsb2F0UG9pbnQmLCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBib29sIHNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zID0gdHJ1ZSwgYm9vbCBmaXhlZCA9IGZhbHNl
LCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQg
ZnJvbSB0aGUgY29udGFpbmVyKCkgcmVuZGVyZXIgKGV4Y2x1ZGluZyB0cmFuc2Zvcm1zKS4gSW4g
bXVsdGktY29sdW1uIGxheW91dCwKICAgICAvLyBkaWZmZXJlbnQgb2Zmc2V0cyBhcHBseSBhdCBk
aWZmZXJlbnQgcG9pbnRzLCBzbyByZXR1cm4gdGhlIG9mZnNldCB0aGF0IGFwcGxpZXMgdG8gdGhl
IGdpdmVuIHBvaW50LgpAQCAtNzM2LDEzICs3MzgsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBn
ZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyhpbnQgZGVjb3JhdGlvbnMsIENvbG9yJiB1bmRlcmxpbmUs
IENvbG9yJiBvdmVybGluZSwgQ29sb3ImIGxpbmV0aHJvdWdoLCBib29sIHF1aXJrc01vZGUgPSBm
YWxzZSwgYm9vbCBmaXJzdGxpbmVTdHlsZSA9IGZhbHNlKTsKIAotICAgIC8vIFJldHVybiB0aGUg
UmVuZGVyQm94IGluIHRoZSBjb250YWluZXIgY2hhaW4gd2hpY2ggaXMgcmVzcG9uc2libGUgZm9y
IHBhaW50aW5nIHRoaXMgb2JqZWN0LCBvciAwCisgICAgLy8gUmV0dXJuIHRoZSBSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0IGluIHRoZSBjb250YWluZXIgY2hhaW4gd2hpY2ggaXMgcmVzcG9uc2li
bGUgZm9yIHBhaW50aW5nIHRoaXMgb2JqZWN0LCBvciAwCiAgICAgLy8gaWYgcGFpbnRpbmcgaXMg
cm9vdC1yZWxhdGl2ZS4gVGhpcyBpcyB0aGUgY29udGFpbmVyIHRoYXQgc2hvdWxkIGJlIHBhc3Nl
ZCB0byB0aGUgJ2ZvclJlcGFpbnQnCiAgICAgLy8gbWV0aG9kcy4KLSAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogY29udGFpbmVyRm9yUmVwYWludCgpIGNvbnN0OworICAgIFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QqIGNvbnRhaW5lckZvclJlcGFpbnQoKSBjb25zdDsKICAgICAvLyBBY3R1YWxs
eSBkbyB0aGUgcmVwYWludCBvZiByZWN0IHIgZm9yIHRoaXMgb2JqZWN0IHdoaWNoIGhhcyBiZWVu
IGNvbXB1dGVkIGluIHRoZSBjb29yZGluYXRlIHNwYWNlCiAgICAgLy8gb2YgcmVwYWludENvbnRh
aW5lci4gSWYgcmVwYWludENvbnRhaW5lciBpcyAwLCByZXBhaW50IHZpYSB0aGUgdmlldy4KLSAg
ICB2b2lkIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOwor
ICAgIHZvaWQgcmVwYWludFVzaW5nQ29udGFpbmVyKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFJlY3QmLCBib29sIGltbWVkaWF0ZSA9IGZh
bHNlKTsKICAgICAKICAgICAvLyBSZXBhaW50IHRoZSBlbnRpcmUgb2JqZWN0LiAgQ2FsbGVkIHdo
ZW4sIGUuZy4sIHRoZSBjb2xvciBvZiBhIGJvcmRlciBjaGFuZ2VzLCBvciB3aGVuIGEgYm9yZGVy
CiAgICAgLy8gc3R5bGUgY2hhbmdlcy4KQEAgLTc1Miw3ICs3NTQsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZXBhaW50UmVjdGFuZ2xlKGNvbnN0IExheW91dFJlY3QmLCBib29sIGltbWVkaWF0ZSA9
IGZhbHNlKTsKIAogICAgIC8vIFJlcGFpbnQgb25seSBpZiBvdXIgb2xkIGJvdW5kcyBhbmQgbmV3
IGJvdW5kcyBhcmUgZGlmZmVyZW50LiBUaGUgY2FsbGVyIG1heSBwYXNzIGluIG5ld0JvdW5kcyBh
bmQgbmV3T3V0bGluZUJveCBpZiB0aGV5IGFyZSBrbm93bi4KLSAgICBib29sIHJlcGFpbnRBZnRl
ckxheW91dElmTmVlZGVkKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBj
b25zdCBMYXlvdXRSZWN0JiBvbGRCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIG9sZE91dGxpbmVC
b3gsIGNvbnN0IExheW91dFJlY3QqIG5ld0JvdW5kc1B0ciA9IDAsIGNvbnN0IExheW91dFJlY3Qq
IG5ld091dGxpbmVCb3hQdHIgPSAwKTsKKyAgICBib29sIHJlcGFpbnRBZnRlckxheW91dElmTmVl
ZGVkKFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExh
eW91dFJlY3QmIG9sZEJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgb2xkT3V0bGluZUJveCwgY29u
c3QgTGF5b3V0UmVjdCogbmV3Qm91bmRzUHRyID0gMCwgY29uc3QgTGF5b3V0UmVjdCogbmV3T3V0
bGluZUJveFB0ciA9IDApOwogCiAgICAgLy8gUmVwYWludCBvbmx5IGlmIHRoZSBvYmplY3QgbW92
ZWQuCiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKGNvbnN0IExh
eW91dFJlY3QmKTsKQEAgLTc2OSw4ICs3NzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBj
bGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCgwKTsKICAgICB9CiAgICAgSW50UmVjdCBwaXhl
bFNuYXBwZWRBYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBy
ZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlv
dXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBy
ZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdDsKIAogICAgIC8vIEdp
dmVuIGEgcmVjdCBpbiB0aGUgb2JqZWN0J3MgY29vcmRpbmF0ZSBzcGFjZSwgY29tcHV0ZSBhIHJl
Y3Qgc3VpdGFibGUgZm9yIHJlcGFpbnRpbmcKICAgICAvLyB0aGF0IHJlY3QgaW4gdmlldyBjb29y
ZGluYXRlcy4KQEAgLTc4MCw4ICs3ODIsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIC8vIEdpdmVu
IGEgcmVjdCBpbiB0aGUgb2JqZWN0J3MgY29vcmRpbmF0ZSBzcGFjZSwgY29tcHV0ZSBhIHJlY3Qg
c3VpdGFibGUgZm9yIHJlcGFpbnRpbmcKICAgICAvLyB0aGF0IHJlY3QgaW4gdGhlIGNvb3JkaW5h
dGUgc3BhY2Ugb2YgcmVwYWludENvbnRhaW5lci4KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJl
Y3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlv
dXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29t
cHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZh
bHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQo
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiBy
ZXBhaW50UmVjdCwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKIAogICAgIC8vIElmIG11bHRp
cGxlLWNvbHVtbiBsYXlvdXQgcmVzdWx0cyBpbiBhcHBseWluZyBhbiBvZmZzZXQgdG8gdGhlIGdp
dmVuIHBvaW50LCBhZGQgdGhlIHNhbWUKICAgICAvLyBvZmZzZXQgdG8gdGhlIGdpdmVuIHNpemUu
CkBAIC04MjMsNyArODI1LDcgQEAgcHVibGljOgogICAgIC8vIEEgc2luZ2xlIHJlY3RhbmdsZSB0
aGF0IGVuY29tcGFzc2VzIGFsbCBvZiB0aGUgc2VsZWN0ZWQgb2JqZWN0cyB3aXRoaW4gdGhpcyBv
YmplY3QuICBVc2VkIHRvIGRldGVybWluZSB0aGUgdGlnaHRlc3QKICAgICAvLyBwb3NzaWJsZSBi
b3VuZGluZyBib3ggZm9yIHRoZSBzZWxlY3Rpb24uCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25S
ZWN0KGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSB7IHJldHVybiBzZWxlY3Rpb25S
ZWN0Rm9yUmVwYWludCgwLCBjbGlwVG9WaXNpYmxlQ29udGVudCk7IH0KLSAgICB2aXJ0dWFsIExh
eW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8q
cmVwYWludENvbnRhaW5lciovLCBib29sIC8qY2xpcFRvVmlzaWJsZUNvbnRlbnQqLyA9IHRydWUp
IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rp
b25SZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiAvKnJlcGFpbnRDb250
YWluZXIqLywgYm9vbCAvKmNsaXBUb1Zpc2libGVDb250ZW50Ki8gPSB0cnVlKSB7IHJldHVybiBM
YXlvdXRSZWN0KCk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaGFzU2VsZWN0ZWRDaGlsZHJlbigpIGNv
bnN0IHsgcmV0dXJuIHNlbGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZTsgfQpAQCAtODkx
LDEyICs4OTMsMTIgQEAgcHVibGljOgogCiAgICAgLy8gTWFwIHBvaW50cyBhbmQgcXVhZHMgdGhy
b3VnaCBlbGVtZW50cywgcG90ZW50aWFsbHkgdmlhIDNkIHRyYW5zZm9ybXMuIFlvdSBzaG91bGQg
bmV2ZXIgbmVlZCB0byBjYWxsIHRoZXNlIGRpcmVjdGx5OyB1c2UKICAgICAvLyBsb2NhbFRvQWJz
b2x1dGUvYWJzb2x1dGVUb0xvY2FsIG1ldGhvZHMgaW5zdGVhZC4KLSAgICB2aXJ0dWFsIHZvaWQg
bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5
Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2Rl
ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRy
YW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CiAKICAgICAvLyBQdXNoZXMgc3RhdGUg
b250byBSZW5kZXJHZW9tZXRyeU1hcCBhYm91dCBob3cgdG8gbWFwIGNvb3JkaW5hdGVzIGZyb20g
dGhpcyByZW5kZXJlciB0byBpdHMgY29udGFpbmVyLCBvciBhbmNlc3RvclRvU3RvcEF0ICh3aGlj
aGV2ZXIgaXMgZW5jb3VudGVyZWQgZmlyc3QpLgogICAgIC8vIFJldHVybnMgdGhlIHJlbmRlcmVy
IHdoaWNoIHdhcyBtYXBwZWQgdG8gKGNvbnRhaW5lciBvciBhbmNlc3RvclRvU3RvcEF0KS4KLSAg
ICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25z
dCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlN
YXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3Rv
cEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OwogICAgIAogICAgIGJvb2wgc2hvdWxkVXNl
VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIGNvbnRhaW5lcikgY29u
c3Q7CiAgICAgdm9pZCBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVj
dCogY29udGFpbmVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRJbkNvbnRhaW5lciwgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKSBjb25zdDsKQEAgLTkzNyw3ICs5MzksNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogICAgIHZvaWQgYXJlbmFEZWxldGUo
UmVuZGVyQXJlbmEqLCB2b2lkKiBvYmplY3RCYXNlKTsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogLypyZXBhaW50
Q29udGFpbmVyKi8sIExheW91dFBvaW50KiAvKmNhY2hlZE9mZnNldFRvUmVwYWludENvbnRhaW5l
ciovID0gMCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgdmlydHVhbCBMYXlv
dXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
IC8qcmVwYWludENvbnRhaW5lciovLCBMYXlvdXRQb2ludCogLypjYWNoZWRPZmZzZXRUb1JlcGFp
bnRDb250YWluZXIqLyA9IDApIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQogCiAgICAg
dmlydHVhbCBib29sIGNhbkJlUmVwbGFjZWRXaXRoSW5saW5lUnVuSW4oKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggYmNkOTY3ZTZh
NzUxMDg0Y2YxZDY2MDcxMGMwYmM0N2U4NWE3NGUwYy4uZDVkOWVhOGVmODE3NWQzODViZGIzY2Fj
ZDcyY2RlNmRhMzM5ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuY3BwCkBAIC00ODIsNyArNDgyLDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlclJlcGxh
Y2VkOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICByZXR1
cm4gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KHBvaW50KTsKIH0KIAotTGF5b3V0UmVjdCBS
ZW5kZXJSZXBsYWNlZDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpCitMYXlvdXRS
ZWN0IFJlbmRlclJlcGxhY2VkOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50
KQogewogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7CiAKQEAgLTU0Nyw3ICs1NDcsNyBAQCBi
b29sIFJlbmRlclJlcGxhY2VkOjppc1NlbGVjdGVkKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyUmVwbGFjZWQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5
b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICBp
ZiAoc3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIWVuY2xvc2luZ0xheWVyKCkt
Pmhhc1Zpc2libGVDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4IDlkNzgxNDM5NDIyNWQ0
MGIxMmY5ODZkYjA5Y2RhYmI3Nzg4ZjlhNTIuLmU3MGZiMGQ1OTcyODAwMjZlZGE2M2Y2MDE3OTAw
YjM1YWQ2M2UyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5o
CkBAIC03MCwxMyArNzAsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZXBsYWNlZChQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIHsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRS
ZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgCiAgICAgdmlydHVhbCBi
b29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUp
OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVD
b250ZW50ID0gdHJ1ZSkgT1ZFUlJJREU7CiAgICAgdm9pZCBjb21wdXRlQXNwZWN0UmF0aW9JbmZv
cm1hdGlvbkZvclJlbmRlckJveChSZW5kZXJCb3gqLCBGbG9hdFNpemUmIGNvbnN0cmFpbmVkU2l6
ZSwgZG91YmxlJiBpbnRyaW5zaWNSYXRpbywgYm9vbCYgaXNQZXJjZW50YWdlSW50cmluc2ljU2l6
ZSkgY29uc3Q7CiAKICAgICBtdXRhYmxlIEludFNpemUgbV9pbnRyaW5zaWNTaXplOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmgKaW5kZXggODkzNmEz
NzdlNjY1NDMwMWNhNWE0Y2Y0NjZkM2I3OTViOThkMzlkNy4uMDNjNzE1MTExNjk5ZTU5MTI0ZWIz
OGZjNmU3MDNhN2RkZWUzMDdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNlbGVjdGlvbkluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2VsZWN0aW9uSW5mby5oCkBAIC00OCwxMiArNDgsMTIgQEAgcHVibGljOgogICAgIH0KICAg
ICAKICAgICBSZW5kZXJPYmplY3QqIG9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9
Ci0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIoKSBjb25zdCB7IHJl
dHVybiBtX3JlcGFpbnRDb250YWluZXI7IH0KKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50Q29udGFpbmVyOyB9
CiAgICAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGU7IH0KIAogcHJvdGVjdGVkOgogICAgIFJlbmRlck9iamVjdCogbV9vYmplY3Q7Ci0g
ICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG1fcmVwYWludENvbnRhaW5lcjsKKyAgICBSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiBtX3JlcGFpbnRDb250YWluZXI7CiAgICAgUmVuZGVyT2JqZWN0
OjpTZWxlY3Rpb25TdGF0ZSBtX3N0YXRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCAwY2VmYzc1YTgyODA0NzU2NTllNTFhZmUwZDNi
M2FmYzY3NjEwZjNkLi44ZGNiMGNhYjllYjRjYjQ0MDU4YTRlNmM0OGQyOWE3YjM3ZWM4MzQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtMjUx
LDcgKzI1MSw3IEBAIExheW91dFNpemUgUmVuZGVyVGFibGVDZWxsOjpvZmZzZXRGcm9tQ29udGFp
bmVyKFJlbmRlck9iamVjdCogbywgY29uc3QgTGF5b3V0UG9pCiAgICAgcmV0dXJuIG9mZnNldDsK
IH0KIAotTGF5b3V0UmVjdCBSZW5kZXJUYWJsZUNlbGw6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5
b3V0UmVjdCBSZW5kZXJUYWJsZUNlbGw6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAg
Ly8gSWYgdGhlIHRhYmxlIGdyaWQgaXMgZGlydHksIHdlIGNhbm5vdCBnZXQgcmVsaWFibGUgaW5m
b3JtYXRpb24gYWJvdXQgYWRqb2luaW5nIGNlbGxzLAogICAgIC8vIHNvIHdlIGlnbm9yZSBvdXRz
aWRlIGJvcmRlcnMuIFRoaXMgc2hvdWxkIG5vdCBiZSBhIHByb2JsZW0gYmVjYXVzZSBpdCBtZWFu
cyB0aGF0CkBAIC0zMDIsNyArMzAyLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJUYWJsZUNlbGw6OmNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KgogICAgIHJl
dHVybiByOwogfQogCi12b2lkIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByLCBi
b29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVSZWN0Rm9yUmVw
YWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRS
ZWN0JiByLCBib29sIGZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09
IHRoaXMpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZUNlbGwuaAppbmRleCA1ZDViMjc2NGJiODA0OTVlN2EyMWU4MzAwYTYzZDUwZmM0NzkzZjMw
Li4xY2NkZGY2OTIzMjFmZjdjNDM1Y2E4MzM4M2FjNTY3OGIwNTgzOTIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCkBAIC0xODMsOCArMTgzLDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3Jv
dW5kKEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCopIGNvbnN0IE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVy
T2JqZWN0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCA9
IDApIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0g
ICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29u
c3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQg
PSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBpbnQgYm9yZGVySGFsZkxlZnQoYm9vbCBv
dXRlcikgY29uc3Q7CiAgICAgaW50IGJvcmRlckhhbGZSaWdodChib29sIG91dGVyKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCmluZGV4IDk3Y2Q4
Y2MzZWQwOTU2OGY2ODkxNjBhNTBkZTg2OTQzNzAwY2RlMjkuLjE1NGM5ZjIxMTlmY2VjYjc2ODk0
ZDc5OTE5YWUwOWRiMjNhYjdkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ29sLmNwcApAQCAtODIsNyArODIsNyBAQCBib29sIFJlbmRlclRhYmxlQ29sOjpjYW5I
YXZlQ2hpbGRyZW4oKSBjb25zdAogICAgIHJldHVybiBpc1RhYmxlQ29sdW1uR3JvdXAoKTsKIH0K
IAotTGF5b3V0UmVjdCBSZW5kZXJUYWJsZUNvbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRS
ZWN0IFJlbmRlclRhYmxlQ29sOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIC8vIEZv
ciBub3csIGp1c3QgcmVwYWludCB0aGUgd2hvbGUgdGFibGUuCiAgICAgLy8gRklYTUU6IEZpbmQg
YSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMsIGUuZy4sIG5lZWQgdG8gcmVwYWludCBhbGwgdGhlIGNl
bGxzIHRoYXQgd2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZUNvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKaW5k
ZXggNjJmMzI4OGU4ZDY2Mzg3NDBmNjllZjYxZGY2ODdhYmJlYmMyNDIxYy4uNDBlYzEzZTViZjIz
OTVlZjI5MDJiYTk3OTIwM2M1MTdkM2VlM2U2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ29sLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0
IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRh
aW5lcikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFw
cGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKaW5kZXggN2Rj
MDVmYTU2N2RiNzdlZmZiYjA1N2QwMDViMDkxNTRkNDZhN2UzMy4uZDVhYzc3NGI1NDBlNDRiOGM1
MGQwMGIxNjgyMDViNDFhYjJjMzIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVSb3cuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6
bGF5b3V0KCkKICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAKLUxheW91dFJlY3QgUmVu
ZGVyVGFibGVSb3c6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJUYWJsZVJv
dzo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICBBU1NFUlQocGFyZW50KCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCmluZGV4IGFmYTgzOGMxMjU0
NjFiZTVmYzM1NWQwMjY1ZGNkMzFjZWY2YTJjMzEuLmYzZmEzYjFmMmY0YWE2OWQyM2ZlYjVjYWY4
ZmRlNjYwNDljZDQ2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZVJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJv
dy5oCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hp
bGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwog
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdFBvaW50JiBwb2ludEluQ29u
dGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rp
b24pIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBpc1RyYW5zcGFyZW50KCkgfHwgaGFzT3ZlcmZsb3dDbGlwKCkgfHwg
aGFzVHJhbnNmb3JtKCkgfHwgaGFzSGlkZGVuQmFja2ZhY2UoKSB8fCBoYXNNYXNrKCkgfHwgaGFz
RmlsdGVyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA3
M2U1Nzc1NGFkNzc1ZDFkYmEzY2NiM2Y3YWNjODkyMTRmZDI2M2Q3Li44YTYxMDFlYmNmMDUwM2Mx
YWE2ZWI5YTg3MmY2ZWJhNGYxOGY2OTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCkBAIC0xNjE2LDcgKzE2MTYsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclRleHQ6Omxp
bmVzVmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0JveCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlY3Q7CiB9
CiAKLUxheW91dFJlY3QgUmVuZGVyVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0
IFJlbmRlclRleHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlclRvUmVwYWludCA9IGNvbnRhaW5pbmdCbG9jaygpOwogCkBAIC0xNjMyLDcgKzE2
MzIsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclRleHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaQogICAgIHJldHVybiByZW5kZXJlclRvUmVw
YWludC0+Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcik7CiB9
CiAKLUxheW91dFJlY3QgUmVuZGVyVGV4dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRl
bnQpCitMYXlvdXRSZWN0IFJlbmRlclRleHQ6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRl
clRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJs
ZUNvbnRlbnQpCiB7CiAgICAgQVNTRVJUKCFuZWVkc0xheW91dCgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmgKaW5kZXggYjk2ZWNhNzNmMzZjMTVmZjYyMjVlOTk4YTM5MTEw
NTU2NzE3ZjQ0YS4uNTk0YTY4OTBmYzQyN2U2NmQxMGE2MGFmYWE3YTFjYjY5NDQ1MjU5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC05NywxMyArOTcsMTMgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9u
U3RhdGUgcyk7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2li
bGVDb250ZW50ID0gdHJ1ZSk7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RG
b3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJv
b2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIExh
eW91dFJlY3QgbG9jYWxDYXJldFJlY3QoSW5saW5lQm94KiwgaW50IGNhcmV0T2Zmc2V0LCBMYXlv
dXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSAwKTsKIAogICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3QgeyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0
eWxlKCktPm1hcmdpbkxlZnQoKSwgMCwgdmlldygpKTsgfQogICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBtYXJnaW5SaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHls
ZSgpLT5tYXJnaW5SaWdodCgpLCAwLCB2aWV3KCkpOyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFJl
Y3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdCBPVkVSUklERTsKIAogICAgIElubGluZVRleHRCb3gqIGZpcnN0VGV4dEJv
eCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RUZXh0Qm94OyB9CiAgICAgSW5saW5lVGV4dEJveCog
bGFzdFRleHRCb3goKSBjb25zdCB7IHJldHVybiBtX2xhc3RUZXh0Qm94OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWRiNjU0YzE3ZjIyOGQ0ZjZjZGIzMDFmOWI2M2E5OWNmZDU2MWE4ZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0LmNwcApAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5
OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAgICAgIChDKSAxOTk5IEFudHRp
IEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDA1IEFsbGFu
IFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKKyAqICAgICAgICAgICAoQykgMjAw
NSwgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKKyAqIENvcHlyaWdo
dCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QuaCIKKworI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0OjpzX3dhc0Zsb2F0aW5nID0gZmFsc2U7Citib29sIFJlbmRlclRyYW5zZm9y
bWFibGVPYmplY3Q6OnNfaGFkTGF5ZXIgPSBmYWxzZTsKK2Jvb2wgUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdDo6c19oYWRUcmFuc2Zvcm0gPSBmYWxzZTsKK2Jvb2wgUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdDo6c19sYXllcldhc1NlbGZQYWludGluZyA9IGZhbHNlOworCitSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0OjpSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KE5vZGUqIG5vZGUpCisgICAg
OiBSZW5kZXJPYmplY3Qobm9kZSkKKyAgICAsIG1fbGF5ZXIoMCkKK3sKK30KKworUmVuZGVyVHJh
bnNmb3JtYWJsZU9iamVjdDo6flJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QoKQoreworICAgIC8v
IE91ciBsYXllciBzaG91bGQgaGF2ZSBiZWVuIGRlc3Ryb3llZCBhbmQgY2xlYXJlZCBieSBub3cK
KyAgICBBU1NFUlQoIWhhc0xheWVyKCkpOworICAgIEFTU0VSVCghbV9sYXllcik7Cit9CisKK3Zv
aWQgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6ZGVzdHJveUxheWVyKCkKK3sKKyAgICBBU1NF
UlQoIWhhc0xheWVyKCkpOyAvLyBDYWxsZXJzIHNob3VsZCBoYXZlIGFscmVhZHkgY2FsbGVkIHNl
dEhhc0xheWVyKGZhbHNlKQorICAgIEFTU0VSVChtX2xheWVyKTsKKyAgICBtX2xheWVyLT5kZXN0
cm95KHJlbmRlckFyZW5hKCkpOworICAgIG1fbGF5ZXIgPSAwOworfQorCit2b2lkIFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3Q6OmVuc3VyZUxheWVyKCkKK3sKKyAgICBpZiAobV9sYXllcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9sYXllciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVy
TGF5ZXIodGhpcyk7CisgICAgc2V0SGFzTGF5ZXIodHJ1ZSk7CisgICAgbV9sYXllci0+aW5zZXJ0
T25seVRoaXNMYXllcigpOworfQorCitib29sIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Q6Omhh
c1NlbGZQYWludGluZ0xheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllciAmJiBtX2xh
eWVyLT5pc1NlbGZQYWludGluZ0xheWVyKCk7Cit9CisKK3ZvaWQgUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkKK3sKKyAgICAvLyBSZW5kZXJPYmplY3Q6OndpbGxC
ZURlc3Ryb3llZCBjYWxscyBiYWNrIHRvIGRlc3Ryb3lMYXllcigpIGZvciBsYXllciBkZXN0cnVj
dGlvbgorICAgIFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCk7Cit9CisKK3ZvaWQgUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBk
aWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpCit7CisgICAgc193YXNGbG9hdGluZyA9
IGlzRmxvYXRpbmcoKTsKKyAgICBzX2hhZExheWVyID0gaGFzTGF5ZXIoKTsKKyAgICBzX2hhZFRy
YW5zZm9ybSA9IGhhc1RyYW5zZm9ybSgpOworICAgIGlmIChzX2hhZExheWVyKQorICAgICAgICBz
X2xheWVyV2FzU2VsZlBhaW50aW5nID0gbGF5ZXIoKS0+aXNTZWxmUGFpbnRpbmdMYXllcigpOwor
CisgICAgLy8gSWYgb3VyIHotaW5kZXggY2hhbmdlcyB2YWx1ZSBvciBvdXIgdmlzaWJpbGl0eSBj
aGFuZ2VzLAorICAgIC8vIHdlIG5lZWQgdG8gZGlydHkgb3VyIHN0YWNraW5nIGNvbnRleHQncyB6
LW9yZGVyIGxpc3QuCisgICAgUmVuZGVyU3R5bGUqIG9sZFN0eWxlID0gc3R5bGUoKTsKKyAgICBp
ZiAob2xkU3R5bGUgJiYgbmV3U3R5bGUpIHsKKyAgICAgICAgaWYgKHBhcmVudCgpKSB7CisgICAg
ICAgICAgICAvLyBEbyBhIHJlcGFpbnQgd2l0aCB0aGUgb2xkIHN0eWxlIGZpcnN0LCBlLmcuLCBm
b3IgZXhhbXBsZSBpZiB3ZSBnbyBmcm9tCisgICAgICAgICAgICAvLyBoYXZpbmcgYW4gb3V0bGlu
ZSB0byBub3QgaGF2aW5nIGFuIG91dGxpbmUuCisgICAgICAgICAgICBpZiAoZGlmZiA9PSBTdHls
ZURpZmZlcmVuY2VSZXBhaW50TGF5ZXIpIHsKKyAgICAgICAgICAgICAgICBsYXllcigpLT5yZXBh
aW50SW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKKyAgICAgICAgICAgICAgICBpZiAoIShvbGRTdHls
ZS0+Y2xpcCgpID09IG5ld1N0eWxlLT5jbGlwKCkpKQorICAgICAgICAgICAgICAgICAgICBsYXll
cigpLT5jbGVhckNsaXBSZWN0c0luY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlUmVwYWludCB8fCBuZXdTdHlsZS0+b3V0
bGluZVNpemUoKSA8IG9sZFN0eWxlLT5vdXRsaW5lU2l6ZSgpKQorICAgICAgICAgICAgICAgIHJl
cGFpbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5j
ZUxheW91dCB8fCBkaWZmID09IFN0eWxlRGlmZmVyZW5jZVNpbXBsaWZpZWRMYXlvdXQpIHsKKyAg
ICAgICAgICAgIC8vIFdoZW4gYSBsYXlvdXQgaGludCBoYXBwZW5zLCB3ZSBnbyBhaGVhZCBhbmQg
ZG8gYSByZXBhaW50IG9mIHRoZSBsYXllciwgc2luY2UgdGhlIGxheWVyIGNvdWxkCisgICAgICAg
ICAgICAvLyBlbmQgdXAgYmVpbmcgZGVzdHJveWVkLgorICAgICAgICAgICAgaWYgKGhhc0xheWVy
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAob2xkU3R5bGUtPnBvc2l0aW9uKCkgIT0gbmV3U3R5
bGUtPnBvc2l0aW9uKCkKKyAgICAgICAgICAgICAgICAgICAgfHwgb2xkU3R5bGUtPnpJbmRleCgp
ICE9IG5ld1N0eWxlLT56SW5kZXgoKQorICAgICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+
aGFzQXV0b1pJbmRleCgpICE9IG5ld1N0eWxlLT5oYXNBdXRvWkluZGV4KCkKKyAgICAgICAgICAg
ICAgICAgICAgfHwgIShvbGRTdHlsZS0+Y2xpcCgpID09IG5ld1N0eWxlLT5jbGlwKCkpCisgICAg
ICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT5oYXNDbGlwKCkgIT0gbmV3U3R5bGUtPmhhc0Ns
aXAoKQorICAgICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+b3BhY2l0eSgpICE9IG5ld1N0
eWxlLT5vcGFjaXR5KCkKKyAgICAgICAgICAgICAgICAgICAgfHwgb2xkU3R5bGUtPnRyYW5zZm9y
bSgpICE9IG5ld1N0eWxlLT50cmFuc2Zvcm0oKQorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAg
ICAgICAgICAgICAgICAgICAgfHwgb2xkU3R5bGUtPmZpbHRlcigpICE9IG5ld1N0eWxlLT5maWx0
ZXIoKQorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBsYXll
cigpLT5yZXBhaW50SW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAobmV3U3R5bGUtPmhhc1RyYW5zZm9ybSgpIHx8IG5ld1N0eWxlLT5vcGFjaXR5KCkgPCAxIHx8
IG5ld1N0eWxlLT5oYXNGaWx0ZXIoKSkgeworICAgICAgICAgICAgICAgIC8vIElmIHdlIGRvbid0
IGhhdmUgYSBsYXllciB5ZXQsIGJ1dCB3ZSBhcmUgZ29pbmcgdG8gZ2V0IG9uZSBiZWNhdXNlIG9m
IHRyYW5zZm9ybSBvciBvcGFjaXR5LAorICAgICAgICAgICAgICAgIC8vICB0aGVuIHdlIG5lZWQg
dG8gcmVwYWludCB0aGUgb2xkIHBvc2l0aW9uIG9mIHRoZSBvYmplY3QuCisgICAgICAgICAgICAg
ICAgcmVwYWludCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgUmVu
ZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoZGlmZiwgbmV3U3R5bGUpOworfQorCit2b2lkIFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBk
aWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCit7CisgICAgUmVuZGVyT2JqZWN0Ojpz
dHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7CisgICAgdXBkYXRlRnJvbVN0eWxlKCk7CisK
KyAgICBpZiAocmVxdWlyZXNMYXllcigpKSB7CisgICAgICAgIGlmICghbGF5ZXIoKSAmJiBsYXll
ckNyZWF0aW9uQWxsb3dlZEZvclN1YnRyZWUoKSkgeworICAgICAgICAgICAgaWYgKHNfd2FzRmxv
YXRpbmcgJiYgaXNGbG9hdGluZygpKQorICAgICAgICAgICAgICAgIHNldENoaWxkTmVlZHNMYXlv
dXQodHJ1ZSk7CisgICAgICAgICAgICBlbnN1cmVMYXllcigpOworICAgICAgICAgICAgaWYgKHBh
cmVudCgpICYmICFuZWVkc0xheW91dCgpICYmIGNvbnRhaW5pbmdCbG9jaygpKSB7CisgICAgICAg
ICAgICAgICAgbGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50KTsKKyAg
ICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBvbmx5IG9uZSBsYXllciB0byB1cGRhdGUsIGl0IGlz
IG5vdCB3b3J0aCB1c2luZyB8Y2FjaGVkT2Zmc2V0fCBzaW5jZQorICAgICAgICAgICAgICAgIC8v
IHdlIGFyZSBub3Qgc3VyZSB0aGUgdmFsdWUgd2lsbCBiZSB1c2VkLgorICAgICAgICAgICAgICAg
IGxheWVyKCktPnVwZGF0ZUxheWVyUG9zaXRpb25zKDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfSBlbHNlIGlmIChsYXllcigpICYmIGxheWVyKCktPnBhcmVudCgpKSB7CisgICAg
ICAgIHNldEhhc1RyYW5zZm9ybShmYWxzZSk7IC8vIEVpdGhlciBhIHRyYW5zZm9ybSB3YXNuJ3Qg
c3BlY2lmaWVkIG9yIHRoZSBvYmplY3QgZG9lc24ndCBzdXBwb3J0IHRyYW5zZm9ybXMsIHNvIGp1
c3QgbnVsbCBvdXQgdGhlIGJpdC4KKyAgICAgICAgc2V0SGFzUmVmbGVjdGlvbihmYWxzZSk7Cisg
ICAgICAgIGxheWVyKCktPnJlbW92ZU9ubHlUaGlzTGF5ZXIoKTsgLy8gY2FsbHMgZGVzdHJveUxh
eWVyKCkgd2hpY2ggY2xlYXJzIG1fbGF5ZXIKKyAgICAgICAgaWYgKHNfd2FzRmxvYXRpbmcgJiYg
aXNGbG9hdGluZygpKQorICAgICAgICAgICAgc2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKKyAg
ICAgICAgaWYgKHNfaGFkVHJhbnNmb3JtKQorICAgICAgICAgICAgc2V0TmVlZHNMYXlvdXRBbmRQ
cmVmV2lkdGhzUmVjYWxjKCk7CisgICAgfQorCisgICAgaWYgKGxheWVyKCkpIHsKKyAgICAgICAg
bGF5ZXIoKS0+c3R5bGVDaGFuZ2VkKGRpZmYsIG9sZFN0eWxlKTsKKyAgICAgICAgaWYgKHNfaGFk
TGF5ZXIgJiYgbGF5ZXIoKS0+aXNTZWxmUGFpbnRpbmdMYXllcigpICE9IHNfbGF5ZXJXYXNTZWxm
UGFpbnRpbmcpCisgICAgICAgICAgICBzZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUpOworICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTVjZDVj
MDg5ODEwNGFjNjgwZDNiMmVjM2JkYmU0MDNjNDM3ZTY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QuaApAQCAtMCww
ICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtk
ZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgUmVuZGVyVHJhbnNmb3JtYWJsZU9i
amVjdF9oCisjZGVmaW5lIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3RfaAorCisjaW5jbHVkZSAi
UmVuZGVyT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyTGF5
ZXI7CisKK2NsYXNzIFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QgOiBwdWJsaWMgUmVuZGVyT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KE5vZGUqKTsKKyAg
ICB2aXJ0dWFsIH5SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KCk7CisKKyAgICAvLyBDYWxsZWQg
YnkgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKSBhbmQgaXMgdGhlIG9ubHkgd2F5IGxh
eWVycyBzaG91bGQgZXZlciBiZSBkZXN0cm95ZWQKKyAgICB2b2lkIGRlc3Ryb3lMYXllcigpOwor
CisgICAgYm9vbCBoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0OworICAgIFJlbmRlckxheWVy
KiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXI7IH0KKworICAgIHZpcnR1YWwgdm9pZCBz
dHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5
bGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUZyb21TdHlsZSgpIHsgfQorCisgICAgdmlydHVhbCBib29sIHJlcXVpcmVz
TGF5ZXIoKSBjb25zdCA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGVuc3VyZUxheWVyKCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgT1ZFUlJJREU7CisKK3ByaXZh
dGU6CisgICAgdmlydHVhbCBib29sIGlzVHJhbnNmb3JtYWJsZU9iamVjdCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFJlbmRlckxheWVyKiBtX2xheWVyOworCisgICAg
Ly8gVXNlZCB0byBzdG9yZSBzdGF0ZSBiZXR3ZWVuIHN0eWxlV2lsbENoYW5nZSBhbmQgc3R5bGVE
aWRDaGFuZ2UKKyAgICBzdGF0aWMgYm9vbCBzX3dhc0Zsb2F0aW5nOworICAgIHN0YXRpYyBib29s
IHNfaGFkTGF5ZXI7CisgICAgc3RhdGljIGJvb2wgc19oYWRUcmFuc2Zvcm07CisgICAgc3RhdGlj
IGJvb2wgc19sYXllcldhc1NlbGZQYWludGluZzsKK307CisKK2lubGluZSBSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QoUmVuZGVyT2JqZWN0KiBv
YmplY3QpCit7CisgICAgQVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0LT5pc1RyYW5zZm9ybWFibGVP
YmplY3QoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3QqPihvYmplY3QpOworfQorCitpbmxpbmUgY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCogdG9SZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0
KQoreworICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+aXNUcmFuc2Zvcm1hYmxlT2JqZWN0
KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2Jq
ZWN0Kj4ob2JqZWN0KTsKK30KKworLy8gVGhpcyB3aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1
bm5lY2Vzc2FyeSBjYXN0Lgordm9pZCB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3QoY29uc3Qg
UmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCopOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCAwMmI1NGM2NjBjOWRiMmJiMTAxMGU5MGU3MjM5Yjdl
ZGQ1MDVmMzFkLi5jNTYxYmIwM2NmNjdmOTYxZjQwMGNjZTM1MGVkZjMwM2Q0NzM3OTMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAg
dm9pZCBSZW5kZXJWaWV3OjpsYXlvdXQoKQogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0K
IAotdm9pZCBSZW5kZXJWaWV3OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1h
cExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQg
UmVuZGVyVmlldzo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExv
Y2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICAv
LyBJZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBhbmQgd2FzIG5vdCAwIG9yIHRoZSBSZW5k
ZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIGhhdmUgZm91bmQgaXQgYnkgbm93LgpAQCAt
MTgzLDcgKzE4Myw3IEBAIHZvaWQgUmVuZGVyVmlldzo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhCiAgICAgICAgIHRyYW5zZm9y
bVN0YXRlLm1vdmUobV9mcmFtZVZpZXctPnNjcm9sbE9mZnNldEZvckZpeGVkUG9zaXRpb24oKSk7
CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyVmlldzo6cHVzaE1hcHBpbmdUb0NvbnRh
aW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVy
R2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5k
ZXJWaWV3OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVP
YmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkg
Y29uc3QKIHsKICAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBhbmQgd2FzIG5v
dCAwIG9yIHRoZSBSZW5kZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIGhhdmUgZm91bmQg
aXQgYnkgbm93LgpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIAogc3Rh
dGljIGlubGluZSBib29sIGlzQ29tcG9zaXRlZChSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKLSAg
ICByZXR1cm4gb2JqZWN0LT5oYXNMYXllcigpICYmIHRvUmVuZGVyQm94TW9kZWxPYmplY3Qob2Jq
ZWN0KS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCk7CisgICAgcmV0dXJuIG9iamVjdC0+aGFzTGF5
ZXIoKSAmJiB0b1JlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qob2JqZWN0KS0+bGF5ZXIoKS0+aXND
b21wb3NpdGVkKCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCByZW5kZXJlck9ic2N1cmVzQmFj
a2dyb3VuZChSZW5kZXJPYmplY3QqIG9iamVjdCkKQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIFJl
bmRlclZpZXc6OnJlcGFpbnRSZWN0YW5nbGVJblZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKGNvbnN0
IExheW91dFJlY3QmIHVyLAogI2VuZGlmCiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJl
Y3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlv
dXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJWaWV3Ojpjb21wdXRl
UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICAvLyBJZiBhIGNv
bnRhaW5lciB3YXMgc3BlY2lmaWVkLCBhbmQgd2FzIG5vdCAwIG9yIHRoZSBSZW5kZXJWaWV3LAog
ICAgIC8vIHRoZW4gd2Ugc2hvdWxkIGhhdmUgZm91bmQgaXQgYnkgbm93LgpAQCAtMzk4LDIwICsz
OTgsMjAgQEAgdm9pZCBSZW5kZXJWaWV3Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEwKICAgICAgICAgcmVjdC5tb3ZlKG1fZnJh
bWVWaWV3LT5zY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCkpOwogICAgICAgICAKICAgICAv
LyBBcHBseSBvdXIgdHJhbnNmb3JtIGlmIHdlIGhhdmUgb25lIChiZWNhdXNlIG9mIGZ1bGwgcGFn
ZSB6b29taW5nKS4KLSAgICBpZiAoIXJlcGFpbnRDb250YWluZXIgJiYgbV9sYXllciAmJiBtX2xh
eWVyLT50cmFuc2Zvcm0oKSkKLSAgICAgICAgcmVjdCA9IG1fbGF5ZXItPnRyYW5zZm9ybSgpLT5t
YXBSZWN0KHJlY3QpOworICAgIGlmICghcmVwYWludENvbnRhaW5lciAmJiBsYXllcigpICYmIGxh
eWVyKCktPnRyYW5zZm9ybSgpKQorICAgICAgICByZWN0ID0gbGF5ZXIoKS0+dHJhbnNmb3JtKCkt
Pm1hcFJlY3QocmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyhWZWN0
b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQp
IGNvbnN0CiB7Ci0gICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWNjdW11bGF0
ZWRPZmZzZXQsIG1fbGF5ZXItPnNpemUoKSkpOworICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBw
ZWRJbnRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBsYXllcigpLT5zaXplKCkpKTsKIH0KIAogdm9p
ZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9v
bCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHdhc0ZpeGVkKQogICAgICAgICAqd2FzRml4
ZWQgPSBmYWxzZTsKLSAgICBxdWFkcy5hcHBlbmQoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9s
YXllci0+c2l6ZSgpKSk7CisgICAgcXVhZHMuYXBwZW5kKEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGxheWVyKCktPnNpemUoKSkpOwogfQogCiBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckFm
dGVyUG9zaXRpb24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9mZnNldCkKQEAgLTQ1
Niw3ICs0NTYsNyBAQCBJbnRSZWN0IFJlbmRlclZpZXc6OnNlbGVjdGlvbkJvdW5kcyhib29sIGNs
aXBUb1Zpc2libGVDb250ZW50KSBjb25zdAogICAgICAgICBSZW5kZXJTZWxlY3Rpb25JbmZvKiBp
bmZvID0gaS0+c2Vjb25kLmdldCgpOwogICAgICAgICAvLyBSZW5kZXJTZWxlY3Rpb25JbmZvOjpy
ZWN0KCkgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSByZXBhaW50Q29udGFpbmVyLCBzbyBt
YXAgdG8gcGFnZSBjb29yZGluYXRlcy4KICAgICAgICAgTGF5b3V0UmVjdCBjdXJyUmVjdCA9IGlu
Zm8tPnJlY3QoKTsKLSAgICAgICAgaWYgKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyID0gaW5mby0+cmVwYWludENvbnRhaW5lcigpKSB7CisgICAgICAgIGlmIChSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gaW5mby0+cmVwYWludENvbnRh
aW5lcigpKSB7CiAgICAgICAgICAgICBGbG9hdFF1YWQgYWJzUXVhZCA9IHJlcGFpbnRDb250YWlu
ZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGN1cnJSZWN0KSk7CiAgICAgICAgICAg
ICBjdXJyUmVjdCA9IGFic1F1YWQuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsgCiAgICAgICAgIH0K
QEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnNldFNlbGVjdGlvbihSZW5kZXJP
YmplY3QqIHN0YXJ0LCBpbnQgc3RhcnRQb3MsIFJlbmRlck9iamVjdCogZQogICAgIH0KIAogICAg
IGlmIChibG9ja1JlcGFpbnRNb2RlICE9IFJlcGFpbnROb3RoaW5nKQotICAgICAgICBtX2xheWVy
LT5jbGVhckJsb2NrU2VsZWN0aW9uR2Fwc0JvdW5kcygpOworICAgICAgICBsYXllcigpLT5jbGVh
ckJsb2NrU2VsZWN0aW9uR2Fwc0JvdW5kcygpOwogCiAgICAgLy8gTm93IHRoYXQgdGhlIHNlbGVj
dGlvbiBzdGF0ZSBoYXMgYmVlbiB1cGRhdGVkIGZvciB0aGUgbmV3IG9iamVjdHMsIHdhbGsgdGhl
bSBhZ2FpbiBhbmQKICAgICAvLyBwdXQgdGhlbSBpbiB0aGUgbmV3IG9iamVjdHMgbGlzdC4KQEAg
LTY0MSw3ICs2NDEsNyBAQCB2b2lkIFJlbmRlclZpZXc6OmdldFNlbGVjdGlvbihSZW5kZXJPYmpl
Y3QqJiBzdGFydFJlbmRlcmVyLCBpbnQmIHN0YXJ0T2Zmc2V0LCBSZQogCiB2b2lkIFJlbmRlclZp
ZXc6OmNsZWFyU2VsZWN0aW9uKCkKIHsKLSAgICBtX2xheWVyLT5yZXBhaW50QmxvY2tTZWxlY3Rp
b25HYXBzKCk7CisgICAgbGF5ZXIoKS0+cmVwYWludEJsb2NrU2VsZWN0aW9uR2FwcygpOwogICAg
IHNldFNlbGVjdGlvbigwLCAtMSwgMCwgLTEsIFJlcGFpbnROZXdNaW51c09sZCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDI5NmM2MjllY2E4MTFjNTliNmQ2
NDE3MDM1M2VmZGEwOWNiNTNmZWUuLjZiZDM0N2NmN2VlODI3OWRlMTExNjcyNWNmMWVmMmNiMDBi
MTM1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtNzYsNyArNzYs
NyBAQCBwdWJsaWM6CiAKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldygpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhbWVWaWV3OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9v
bCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JS
ZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91
dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCByZXBhaW50Vmlld1JlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCBpbW1lZGlh
dGUgPSBmYWxzZSk7CiAgICAgLy8gUmVwYWludCB0aGUgdmlldywgYW5kIGFsbCBjb21wb3NpdGVk
IGxheWVycyB0aGF0IGludGVyc2VjdCB0aGUgZ2l2ZW4gYWJzb2x1dGUgcmVjdGFuZ2xlLgogICAg
IC8vIEZJWE1FOiBpZGVhbGx5IHdlJ2QgbmV2ZXIgaGF2ZSB0byBkbyB0aGlzLCBpZiBhbGwgcmVw
YWludHMgYXJlIGNvbnRhaW5lci1yZWxhdGl2ZS4KQEAgLTIwNyw4ICsyMDcsOCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNSZW5kZXJDb3VudGVycygpIHsgcmV0dXJuIG1fcmVuZGVyQ291bnRlckNv
dW50OyB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5l
cihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUm
LCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNu
YXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURF
OwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVy
KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9t
ZXRyeU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRl
JiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBT
bmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5l
cihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5k
ZXJHZW9tZXRyeU1hcCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNv
bHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9y
bVN0YXRlJikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzQ29sdW1ucyhpbnQgZGVz
aXJlZENvbHVtbkNvdW50KSBjb25zdCBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKaW5kZXggMWYwYTRhMzhlNzJlMjFhN2RjM2Yw
YWRjZDNjYWUzNjNjOGE1MWQ5Mi4uYzg5Y2YwNTc5YjdiOWM1NDVhOWRiYTI5MmVkMDc0N2Q4ZjY1
ZWVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbElu
T25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUu
Y3BwCkBAIC0xMDYsNiArMTA2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0RnJhZ21lbnQuY3Bw
IgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmNwcCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZVdpbi5j
cHAiCisjaW5jbHVkZSAiUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5jcHAiCiAjaW5jbHVkZSAi
UmVuZGVyVHJlZUFzVGV4dC5jcHAiCiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uY3BwIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0Jsb2NrLmNwcAppbmRleCAzNjEyNzk0MTVhYWRlNjI5OGUzZDIyYzA1ZmY2YTRmZTNj
ZWQ5NDA4Li45ZjM5MzU3YzFiNjRmNDAwMTViODk5Yzc4MWJhYjEwNGRkNDY5NjUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcApAQCAtNjEs
OSArNjEsOSBAQCB2b2lkIFJlbmRlclNWR0Jsb2NrOjpzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKICAgICBSZW5kZXJCbG9jazo6c2V0U3R5bGUodXNlU3R5bGUucmVsZWFz
ZSgpKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdCbG9jazo6dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0
eWxlKCkKK3ZvaWQgUmVuZGVyU1ZHQmxvY2s6OnVwZGF0ZUZyb21TdHlsZSgpCiB7Ci0gICAgUmVu
ZGVyQmxvY2s6OnVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOworICAgIFJlbmRlckJsb2Nr
Ojp1cGRhdGVGcm9tU3R5bGUoKTsKIAogICAgIC8vIFJlbmRlclNWR2xvY2ssIHVzZWQgYnkgUmVu
ZGVyKFNWR1RleHR8Rm9yZWlnbk9iamVjdCksIGlzIG5vdCBhbGxvd2VkIHRvIGNhbGwgc2V0SGFz
T3ZlcmZsb3dDbGlwKHRydWUpLgogICAgIC8vIFJlbmRlckJsb2NrIGFzc3VtZXMgYSBsYXllciB0
byBiZSBwcmVzZW50IHdoZW4gdGhlIG92ZXJmbG93IGNsaXAgZnVuY3Rpb25hbGl0eSBpcyByZXF1
ZXN0ZWQuIEJvdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxv
Y2suaAppbmRleCA3ZjViNzg1MzI4YjA1NzNlMjlmZjM5OGZmMjA3NzExNTg1MjNhMjZhLi4yMjJk
NWVlMjAzNTIwYTUwZmY3YzkyNDM0OWI0MjFhYTAzNzk5YjY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCkBAIC0zOSw3ICszOSw3IEBAIHByb3Rl
Y3RlZDoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGUoUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4pOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5
bGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbVN0eWxlKCkgT1ZFUlJJREU7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAppbmRleCA4
Zjg0MmVlMjE1MTlkYWE0MWQwNjBjY2NiNjU1NmUxZDE3MDkxY2NiLi5jMmRhNTVjMjNlM2E5YzVk
MGU2NDYwOWI5OGY1Y2JmZDk2NDI1MGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKQEAgLTg4LDEyICs4OCwx
MiBAQCB2b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgfQogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNW
R0ZvcmVpZ25PYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJTVkdG
b3JlaWduT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIHJldHVybiBTVkdS
ZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50
Q29udGFpbmVyKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpjb21wdXRlRmxv
YXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
RmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZH
Rm9yZWlnbk9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9v
bCBmaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0
Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwog
fQpAQCAtMTkwLDEyICsxOTAsMTIgQEAgYm9vbCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjptYXBMb2NhbFRvQ29u
dGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1T
dGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBib29s
KiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bWFwTG9jYWxU
b0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBU
cmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBt
b2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBM
b2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBt
b2RlICYgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIHdhc0ZpeGVkKTsKIH0KIAotY29uc3QgUmVu
ZGVyT2JqZWN0KiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVy
KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9t
ZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNW
R0ZvcmVpZ25PYmplY3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNm
b3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21l
dHJ5TWFwKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGlu
Z1RvQ29udGFpbmVyKHRoaXMsIGFuY2VzdG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFwKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0LmgKaW5kZXggN2U1MmUwMGMyMjU2ZDg1Y2Q4OWU3MjVlMmU4OTFkMDlmZTMyODFjMC4uZDEy
NWNhZjVjZDljOTNhZGE5Y2JhYjEzMWQ5MjA3MTUyM2RmMzljOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKQEAgLTQw
LDggKzQwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYs
IGNvbnN0IExheW91dFBvaW50Jik7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBm
aXhlZCA9IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRh
aW5lcikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RG
b3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZs
b2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0
dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCB2b2lkIGxheW91dCgpOwpAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IEhpdFRlc3RQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQm
IGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAg
dmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdz
IG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9v
bCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRl
ck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVj
dCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFn
cyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJv
b2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBSZW5k
ZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSB7IG1fbmVl
ZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaAppbmRleCBiOTBh
YjUwODEwNDExMzg0MTQxYzMyMzg5NDc2ZTNjODQ0MzQwNjViLi45NWJjMzRlMmJkYmQ2MDA1OTAz
ZmE3YzE2MDY3ZDgxOTIzMTI3ZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGlj
OgogICAgIC8vIFRoaXMgb3ZlcnJpZGVzIGFyZSBuZWVkZWQgdG8gcHJldmVudCBBU1NFUlRzIG9u
IDxzdmc+PHN0b3AgLz48L3N2Zz4KICAgICAvLyBSZW5kZXJPYmplY3QncyBkZWZhdWx0IGltcGxl
bWVudGF0aW9ucyBBU1NFUlRfTk9UX1JFQUNIRUQoKQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQwMAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCopIGNvbnN0IHsg
cmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KikgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgb2Jq
ZWN0Qm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQogICAgIHZpcnR1
YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0
KCk7IH0KICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRl
cygpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UmVjdCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAppbmRleCBmMjZj
NWZjNjFhMzdmODIwN2Q0ZDY0OWJlNjgwOWQ1MmEyZjg4MjVmLi5iNGJjMjM0NWE2NTgxMmIzYmYy
ZWE5Y2FkZDM3Njg2NDc5ZDVmZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKQEAgLTQzLDcgKzQzLDcgQEAg
cHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpOwogICAgIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCopIGNvbnN0IHsgcmV0dXJuIExheW91
dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KikgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gTGF5b3V0UmVjdCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wg
bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBj
b25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCAyMWJl
ZDRhMTVlYjcxMjI0NmQ0ZjlhOTMxNGJjYzJlNzE2NmYxYzEyLi45MDFkNDcwNjcxMmQ1Y2JkZDJk
ZGUzZTFmNWY4NTUwY2YyZTI5ZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCkBAIC02OSwyMiArNjksMjIgQEAgRmxvYXRSZWN0IFJl
bmRlclNWR0lubGluZTo6cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdAogICAg
IHJldHVybiBGbG9hdFJlY3QoKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJTVkdJbmxpbmU6OmNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJTVkdJbmxpbmU6OmNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIpOwogfQogCi12b2lkIFJl
bmRlclNWR0lubGluZTo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4
ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR0lubGluZTo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFp
bnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0
JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0
Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyLCByZXBh
aW50UmVjdCwgZml4ZWQpOwogfQogCi12b2lkIFJlbmRlclNWR0lubGluZTo6bWFwTG9jYWxUb0Nv
bnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3Jt
U3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9v
bCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR0lubGluZTo6bWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zv
cm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBi
b29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRv
Q29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlICYg
U25hcE9mZnNldEZvclRyYW5zZm9ybXMsIHdhc0ZpeGVkKTsKIH0KIAotY29uc3QgUmVuZGVyT2Jq
ZWN0KiBSZW5kZXJTVkdJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9t
ZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHSW5saW5lOjpwdXNo
TWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2Vz
dG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKIHsKICAg
ICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcih0aGlzLCBh
bmNlc3RvclRvU3RvcEF0LCBnZW9tZXRyeU1hcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAppbmRleCA4ZWY5Y2VkN2FhMTIwZTMxMGMwY2Q3
OWMzZDJjOGJmNWM1NGQxZWNmLi5lZGI3OTU3MjYyNjNjMjZiNGMwOWZhNGJhMzM2YTA2ZjI3YWY4
ZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lu
bGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5l
LmgKQEAgLTQ1LDEwICs0NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ry
b2tlQm91bmRpbmdCb3goKSBjb25zdDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVj
dEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJl
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYs
IGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9D
b250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9y
bVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZs
aXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVu
ZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJl
Y3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCog
cmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxh
Z3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCBi
b29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgUmVu
ZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4m
LCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCmluZGV4IDA4MmJm
NDg3ZTRkOWIzZWFhYThkNTZkMTE4NGUzZDBhODExZGQ3MmQuLmJlYTJkMmJjMGUxMDcyZGE4NDk0
Y2EyZDk1MDAyNGUwOTUxNDA4MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCIKIAogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291
cmNlLmgiCisjaW5jbHVkZSAiUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdC5oIgogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VzQ2FjaGUuaCIKICNpbmNsdWRlICJT
VkdTdHlsZWRFbGVtZW50LmgiCkBAIC00NSwyMiArNDYsMjIgQEAgUmVuZGVyU1ZHTW9kZWxPYmpl
Y3Q6OlJlbmRlclNWR01vZGVsT2JqZWN0KFNWR1N0eWxlZEVsZW1lbnQqIG5vZGUpCiB7CiB9CiAK
LUxheW91dFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5
b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsK
ICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQodGhpcywgcmVwYWludENvbnRhaW5lcik7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHTW9kZWxPYmpl
Y3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAor
dm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBh
aW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0Ojpjb21w
dXRlRmxvYXRSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyLCByZXBhaW50UmVj
dCwgZml4ZWQpOwogfQogCi12b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjptYXBMb2NhbFRvQ29u
dGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1T
dGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBib29s
KiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om1hcExvY2FsVG9D
b250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJh
bnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9k
ZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9j
YWxUb0NvbnRhaW5lcih0aGlzLCByZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9k
ZSAmIFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRl
ck9iamVjdCogUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29u
c3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5
TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHTW9k
ZWxPYmplY3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFw
KSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGluZ1RvQ29u
dGFpbmVyKHRoaXMsIGFuY2VzdG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFwKTsKIH0KQEAgLTY4LDcg
KzY5LDcgQEAgY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdNb2RlbE9iamVjdDo6cHVzaE1h
cHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3gKIC8vIENvcGllZCBmcm9tIFJlbmRlckJv
eCwgdGhpcyBtZXRob2QgbGlrZWx5IHJlcXVpcmVzIGZ1cnRoZXIgcmVmYWN0b3JpbmcgdG8gd29y
ayBlYXNpbHkgZm9yIGJvdGggU1ZHIGFuZCBDU1MgQm94IE1vZGVsIGNvbnRlbnQuCiAvLyBGSVhN
RTogVGhpcyBtYXkgYWxzbyBuZWVkIHRvIG1vdmUgaW50byBTVkdSZW5kZXJTdXBwb3J0IGFzIHRo
ZSBSZW5kZXJCb3ggdmVyc2lvbiBkZXBlbmRzCiAvLyBvbiBib3JkZXJCb3VuZGluZ0JveCgpIHdo
aWNoIFNWRyBSZW5kZXJCb3ggc3ViY2xhc2VzIChsaWtlIFNWR1JlbmRlckJsb2NrKSBkbyBub3Qg
aW1wbGVtZW50LgotTGF5b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGluZUJvdW5k
c0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91
dFBvaW50KikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om91dGxpbmVC
b3VuZHNGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIExheW91dFBvaW50KikgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IGJveCA9IGVuY2xvc2lu
Z0xheW91dFJlY3QocmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSk7CiAgICAgYWRqdXN0
UmVjdEZvck91dGxpbmVBbmRTaGFkb3coYm94KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAppbmRleCBhMjgzNzY2MjViOTBhNzUw
YjgyY2M4ODY1ZjkzYjBmZjNkODkzNDMyLi5jODlkY2FmMWZmNmVkZjZhMjhjNTY3ZTg5NWRiNzli
ZjA3ZTMxOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdNb2RlbE9iamVjdC5oCkBAIC01MSwxNSArNTEsMTUgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAg
dmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7Ci0gICAgdmly
dHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRQb2ludCopIGNvbnN0OworICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1h
YmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFp
bnQoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9p
bnQqKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBi
b29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3Rh
dGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8
IFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJS
SURFOwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFp
bmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJH
ZW9tZXRyeU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVy
KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0
YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAg
fCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRh
aW5lcihjb25zdCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBS
ZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdHls
ZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUp
OwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDVkNTZiNWNlNzg5NzU4NTEwMzdkMTFkYjI4YWI0
NjI1ZDkzN2Y2OGMuLmI2ZjBlMjNjZjE1ZDcwZDQ2ZGZlOGY4YjYyMTEwYmViYzFhZWQ0YmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAt
MzY5LDEyICszNjksMTIgQEAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBSZW5kZXJTVkdSb290Ojps
b2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3QKICAgICByZXR1cm4gbV9sb2NhbFRvUGFyZW50
VHJhbnNmb3JtOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNWR1Jvb3Q6OmNsaXBwZWRPdmVyZmxv
d1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBj
b25zdAorTGF5b3V0UmVjdCBSZW5kZXJTVkdSb290OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAog
ewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdSb290Ojpj
b21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQg
UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9v
bCBmaXhlZCkgY29uc3QKIHsKICAgICAvLyBBcHBseSBvdXIgbG9jYWwgdHJhbnNmb3JtcyAoZXhj
ZXB0IGZvciB4L3kgdHJhbnNsYXRpb24pLCB0aGVuIG91ciBzaGFkb3csIAogICAgIC8vIGFuZCB0
aGVuIGNhbGwgUmVuZGVyQm94J3MgbWV0aG9kIHRvIGhhbmRsZSBhbGwgdGhlIG5vcm1hbCBDU1Mg
Qm94IG1vZGVsIGJpdHMKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmNv
bXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dAogLy8gVGhpcyBtZXRob2QgZXhwZWN0cyBsb2NhbCBDU1MgYm94IGNvb3JkaW5hdGVzLgogLy8g
Q2FsbGVycyB3aXRoIGxvY2FsIFNWRyB2aWV3cG9ydCBjb29yZGluYXRlcyBzaG91bGQgZmlyc3Qg
YXBwbHkgdGhlIGxvY2FsVG9Cb3JkZXJCb3hUcmFuc2Zvcm0KIC8vIHRvIGNvbnZlcnQgZnJvbSBT
Vkcgdmlld3BvcnQgY29vcmRpbmF0ZXMgdG8gbG9jYWwgQ1NTIGJveCBjb29yZGluYXRlcy4KLXZv
aWQgUmVuZGVyU1ZHUm9vdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBM
b2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJl
bmRlclNWR1Jvb3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVj
dCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBM
b2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKG1vZGUgJiB+SXNGaXhlZCk7IC8vIFdlIHNob3VsZCBoYXZlIG5vIGZpeGVkIGNvbnRl
bnQgaW4gdGhlIFNWRyByZW5kZXJpbmcgdHJlZS4KICAgICBBU1NFUlQobW9kZSAmIFVzZVRyYW5z
Zm9ybXMpOyAvLyBtYXBwaW5nIGEgcG9pbnQgdGhyb3VnaCBTVkcgdy9vIHJlc3BlY3RpbmcgdHJh
c25mb3JtcyBpcyB1c2VsZXNzLgpAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9v
dDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwKICAgICBSZW5kZXJSZXBsYWNlZDo6bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29u
dGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSB8IEFwcGx5Q29udGFpbmVyRmxpcCwgd2FzRml4
ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR1Jvb3Q6OnB1c2hNYXBwaW5n
VG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQs
IFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9iamVj
dCogUmVuZGVyU1ZHUm9vdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJUcmFu
c2Zvcm1hYmxlT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2Vv
bWV0cnlNYXApIGNvbnN0CiB7CiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwdXNoTWFwcGlu
Z1RvQ29udGFpbmVyKGFuY2VzdG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFwKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKaW5kZXggYTA1NjZiMTM0YTM3
MjZlNTU4ZTIyMjNlZmFiMmU3Nzk1M2FmODJhYy4uMDVlZTAyNTgxNjFjMDgwMmJjYTZkNGMyYjg5
ODE5MWU2NTk2ZDE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmgKQEAgLTkyLDExICs5MiwxMSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29s
IG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0
IEhpdFRlc3RQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9h
dFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBG
bG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdDsKKyAgICB2aXJ0dWFsIExh
eW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNv
bnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFw
TG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zm
c2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25z
dCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlN
YXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1h
cExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9m
ZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29u
c3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2Vv
bWV0cnlNYXAmKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVj
dGlvbkxlYWYoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5I
YXZlQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCBkZTJmMDE2NWNhNGFiZWFiMWNj
YmZiOWMwMzJhZjBlZDA2OTJmNjY2Li41ZTIyYzI4ZmM4MzQzNDNiY2IyYmEzYjllOTc1ODI0N2Jk
MTQwNzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4
dC5jcHAKQEAgLTk0LDI5ICs5NCwyOSBAQCBjb25zdCBSZW5kZXJTVkdUZXh0KiBSZW5kZXJTVkdU
ZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IoY29uc3QgUmVuZGVyT2JqZQogICAgIHJl
dHVybiB0b1JlbmRlclNWR1RleHQoc3RhcnQpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNWR1Rl
eHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJTVkdUZXh0OjpjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyKTsKIH0KIAotdm9p
ZCBSZW5kZXJTVkdUZXh0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0
Cit2b2lkIFJlbmRlclNWR1RleHQ6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zv
cm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZp
eGVkKSBjb25zdAogewogICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IHJlY3Q7CiAgICAgY29t
cHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZp
eGVkKTsKICAgICByZWN0ID0gZW5jbG9zaW5nTGF5b3V0UmVjdChyZXBhaW50UmVjdCk7CiB9CiAK
LXZvaWQgUmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJv
b2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1RleHQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JS
ZXBhaW50KFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0
UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3Vw
cG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lciwg
cmVwYWludFJlY3QsIGZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdUZXh0OjptYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zv
cm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBi
b29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zv
cm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBi
b29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRv
Q29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlICYg
U25hcE9mZnNldEZvclRyYW5zZm9ybXMsIHdhc0ZpeGVkKTsKIH0KIAotY29uc3QgUmVuZGVyT2Jq
ZWN0KiBSZW5kZXJTVkdUZXh0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0
cnlNYXApIGNvbnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR1RleHQ6OnB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogYW5jZXN0b3JU
b1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAogewogICAgIHJl
dHVybiBTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKHRoaXMsIGFuY2Vz
dG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5kZXggMGEwYzI4NTZiYWJlMDU5Njg4MDlmNDBjMWMxOGUz
YWJjY2ZkOGQyZi4uOGI1MThmODVmODQ5YmFiNzg0OGQ3MTE1NDQ2MmRhY2NjMGFjNmMyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKQEAgLTcxLDEy
ICs3MSwxMiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIExh
eW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVj
dEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91
dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21w
dXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFs
IExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyVHJhbnNmb3Jt
YWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVu
ZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9v
bCBmaXhlZCA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBtYXBM
b2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBU
cmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250
YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkID0gMCkg
Y29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9w
QXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2Fs
VG9Db250YWluZXIoUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwg
VHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29u
dGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhlZCA9IDAp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmplY3QqIGFuY2VzdG9y
VG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3Jl
Q2hpbGQgPSAwKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Kikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIE9WRVJSSURFOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAK
aW5kZXggZmM1NzJhZDZmM2IwZWVhNjRiMTZhNDA1NWM5YzljMGZiNzI4ZmJjMi4uZDEzMDlhYzEx
MjIwZTkxYzJjZDVjNjhkYmJjN2I1ZGQ4MTJjNmE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC00Niw3ICs0Niw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTGF5b3V0UmVjdCBTVkdSZW5kZXJTdXBwb3J0OjpjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCitMYXlvdXRSZWN0IFNWR1JlbmRl
clN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVj
dCogb2JqZWN0LCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKQog
ewogICAgIC8vIFJldHVybiBlYXJseSBmb3IgYW55IGNhc2VzIHdoZXJlIHdlIGRvbid0IGFjdHVh
bGx5IHBhaW50CiAgICAgaWYgKG9iamVjdC0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lC
TEUgJiYgIW9iamVjdC0+ZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKQEAg
LTU5LDcgKzU5LDcgQEAgTGF5b3V0UmVjdCBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqIG8KICAgICByZXR1cm4gZW5jbG9z
aW5nTGF5b3V0UmVjdChyZXBhaW50UmVjdCk7CiB9CiAKLXZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6
Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRS
ZWN0LCBib29sIGZpeGVkKQordm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0
Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyVHJhbnNmb3JtYWJs
ZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBm
aXhlZCkKIHsKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnU3R5bGUgPSBvYmplY3QtPnN0
eWxlKCktPnN2Z1N0eWxlKCk7CiAgICAgaWYgKGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdyA9IHN2
Z1N0eWxlLT5zaGFkb3coKSkKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0
Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwg
UmUKICAgICBvYmplY3QtPnBhcmVudCgpLT5jb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChyZXBh
aW50Q29udGFpbmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwogfQogCi12b2lkIFNWR1JlbmRlclN1
cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJh
bnNmb3JtU3RhdGUsIGJvb2wgc25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVk
KQordm9pZCBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRl
ck9iamVjdCogb2JqZWN0LCBSZW5kZXJUcmFuc2Zvcm1hYmxlT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIGJvb2wgc25hcE9mZnNldEZvclRy
YW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkKQogewogICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJh
bnNmb3JtKG9iamVjdC0+bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpKTsKIApAQCAtODksNyArODks
NyBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlckJveAogICAgIHBhcmVudC0+bWFwTG9jYWxUb0NvbnRh
aW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOwog
fQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFNWR1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5nVG9D
b250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFJlbmRlckJveE1vZGVs
T2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXAp
Citjb25zdCBSZW5kZXJPYmplY3QqIFNWR1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5nVG9Db250
YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFJlbmRlclRyYW5zZm9ybWFi
bGVPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1h
cCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGFuY2VzdG9yVG9TdG9wQXQsIGFuY2VzdG9yVG9TdG9w
QXQgIT0gb2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJTdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclN1cHBvcnQuaAppbmRleCBiNjJjY2ZiMmYxODVlOWY4ZjBjZWY2ZjU4MWZiYzE4MDM2MTg4
ZjEwLi4wZTkxNmNjYzYwMWU4NzExYzk3NTBlZmJlNDhiYTRmOTNiMmVlZjY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaApAQCAtMzUsNiAr
MzUsNyBAQCBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIFJlbmRl
ckJveE1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyR2VvbWV0cnlNYXA7CitjbGFzcyBSZW5kZXJU
cmFuc2Zvcm1hYmxlT2JqZWN0OwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyU3R5
bGU7CiBjbGFzcyBSZW5kZXJTVkdSb290OwpAQCAtNjIsMTAgKzYzLDEwIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBwYWludEluZm9JbnRlcnNlY3RzUmVwYWludFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiBsb2NhbFJlcGFpbnRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVHJhbnNm
b3JtLCBjb25zdCBQYWludEluZm8mKTsKIAogICAgIC8vIEltcG9ydGFudCBmdW5jdGlvbnMgdXNl
ZCBieSBuZWFybHkgYWxsIFNWRyByZW5kZXJlcnMgY2VudHJhbGl6aW5nIGNvb3JkaW5hdGUgdHJh
bnNmb3JtYXRpb25zIC8gcmVwYWludCByZWN0IGNhbGN1bGF0aW9ucwotICAgIHN0YXRpYyBMYXlv
dXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCos
IFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKTsKLSAgICBzdGF0aWMgdm9p
ZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqLCBSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCk7
Ci0gICAgc3RhdGljIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3Qq
LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUm
LCBib29sIHNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zID0gdHJ1ZSwgYm9vbCogd2FzRml4ZWQgPSAw
KTsKLSAgICBzdGF0aWMgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVy
KGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3Rv
clRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpOworICAgIHN0YXRpYyBMYXlvdXRSZWN0IGNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCosIFJlbmRlclRy
YW5zZm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIpOworICAgIHN0YXRpYyB2b2lkIGNv
bXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCosIFJlbmRlclRyYW5z
Zm9ybWFibGVPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQp
OworICAgIHN0YXRpYyB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0
KiwgUmVuZGVyVHJhbnNmb3JtYWJsZU9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3Jt
U3RhdGUmLCBib29sIHNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zID0gdHJ1ZSwgYm9vbCogd2FzRml4
ZWQgPSAwKTsKKyAgICBzdGF0aWMgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29u
dGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlclRyYW5zZm9ybWFibGVPYmpl
Y3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJik7CiAKICAgICAvLyBTaGFy
ZWQgYmV0d2VlbiBTVkcgcmVuZGVyZXJzIGFuZCByZXNvdXJjZXMuCiAgICAgc3RhdGljIHZvaWQg
YXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJT
dHlsZSosIGNvbnN0IFJlbmRlck9iamVjdCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166057</attachid>
            <date>2012-09-27 13:41:32 -0700</date>
            <delta_ts>2012-10-01 14:01:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86022-20120927164049.patch</filename>
            <type>text/plain</type>
            <size>150362</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU0ZTYwZjg4ZTU4MzRh
MjJiYTg2NzQ3YjEwYWQyNGY4OWFmNDNkMC4uYTFiNTQ2ZGJjOTBkNzhlZGE5YTI2ODZjMDIyZWY2
YTI3YjBkYTlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNyBAQAorMjAxMi0wOS0yNyAgRmxv
cmluIE1hbGl0YSAgPGZtYWxpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZmFjdG9yIGxh
eWVyLXJlbGF0ZWQgbG9naWMgb3V0IG9mIFJlbmRlckJveE1vZGVsT2JqZWN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjAyMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZXh0cmFjdHMg
bGF5ZXItcmVsYXRlZCBsb2dpYyBpbnRvIGEgZGVkaWNhdGVkIGNsYXNzCisgICAgICAgIChSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KSBhbmQgcmVmYWN0b3JzIGRlcGVuZGVudCBjb2RlIHRvIG1ha2Ug
dXNlCisgICAgICAgIG9mIHRoZSBuZXcgdHlwZSBpbnN0ZWFkIG9mIFJlbmRlckJveE1vZGVsT2Jq
ZWN0LiBUaGlzIGlzIGluIHByZXBhcmF0aW9uCisgICAgICAgIG9mIGFkZGluZyBub24tUmVuZGVy
Qm94TW9kZWxPYmplY3QgbGF5ZXIgc3VwcHJ0LgorCisgICAgICAgIEFsbCBtZXRob2RzIHRoYXQg
d2VyZSB1c2luZyBSZW5kZXJCb3hNb2RlbE9iamVjdCBmb3IgbGF5ZXItcmVsYXRlZAorICAgICAg
ICBmdW5jdGlvbmFsaXR5IGFyZSB1cGRhdGVkIHRvIHdvcmsgd2l0aCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0CisgICAgICAgIGluc3RlYWQgKGEgUmVuZGVyTGF5ZXIncyByZW5kZXJlcigpIGNhbiBu
byBsb25nZXIgYmUgYXNzdW1lZCB0byBiZQorICAgICAgICBhIFJlbmRlckJveE1vZGVsT2JqZWN0
KS4KKworICAgICAgICBObyBuZXcgdGVzdHM6IHJlZmFjdG9yaW5nIHdpdGggbm8gYmVoYXZpb3Ig
Y2hhbmdlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5vcmRlcjoK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVuZGVyaW5nL0xheW91
dFJlcGFpbnRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXlvdXRSZXBhaW50
ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCUi5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2VsZWN0
aW9uR2FwUmVjdHNGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpy
ZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaDoKKyAgICAgICAgKFJlbmRlckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojp1cGRhdGVGcm9tU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjplbmNsb3NpbmdGbG9hdFBhaW50aW5nTGF5ZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFJlbmRlckJveCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojp+UmVuZGVyQm94TW9k
ZWxPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OndpbGxC
ZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6dXBk
YXRlRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aDoKKyAgICAgICAgKFJlbmRlckJveE1vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlN
YXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2Vv
bWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rvcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdlb21ldHJ5TWFwLmg6CisgICAgICAgIChSZW5kZXJHZW9tZXRyeU1hcCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bmxpbmU6OnVwZGF0ZUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
cklubGluZTo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbmxpbmU6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW5saW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVySW5saW5lLmg6CisgICAgICAgIChSZW5kZXJJbmxpbmUpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6UmVu
ZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9z
aXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb21wdXRlUmVwYWludFJl
Y3RzKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrQ29udGFpbmluZ0Jsb2NrQ2hhaW5Gb3JQYWdp
bmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUG9zaXRpb25lZENvbnRhaW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGFzQW5jZXN0b3JXaXRoRmlsdGVyT3V0c2V0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsVG8pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJlbmRlckxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZW5kZXJlcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjpyZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnVwZGF0ZUJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpyZXBhaW50T25Db21wb3NpdGluZ0NoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbkZvckNvbXBvc2l0aW5nKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMaXN0TWFya2VyOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKFJlbmRlckxpc3RNYXJrZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjphZGRMYXllcnMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZW1vdmVMYXllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojptb3ZlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6ZmluZE5leHRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OmVuY2xvc2luZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29udGFpbmVyRm9yUmVwYWludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnRVc2luZ0NvbnRhaW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpyZXBhaW50UmVjdGFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkanVzdFN0eWxlRGlmZmVyZW5jZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNv
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZy
b21Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29u
dGFpbmVyUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2FsVG9Db250
YWluZXJQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzQ29tcG9zaXRlZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmlzTGF5ZXJNb2RlbE9iamVjdCk6CisgICAgICAgIChSZW5kZXJP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25SZWN0Rm9y
UmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om91dGxpbmVCb3VuZHNG
b3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAg
IChSZW5kZXJSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlbGVjdGlvbklu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlbGVjdGlvbkluZm9CYXNlOjpyZXBhaW50
Q29udGFpbmVyKToKKyAgICAgICAgKFJlbmRlclNlbGVjdGlvbkluZm9CYXNlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVDZWxsOjpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKFJlbmRlclRhYmxlQ2VsbCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlQ29sOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmg6CisgICAgICAgIChSZW5kZXJUYWJsZUNv
bCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlUm93OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93Lmg6CisgICAgICAgIChSZW5kZXJUYWJs
ZVJvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6CisgICAgICAgIChSZW5kZXJUZXh0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9k
ZWxPYmplY3Q6On5SZW5kZXJMYXllck1vZGVsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyTW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllck1vZGVsT2JqZWN0OjplbnN1cmVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllck1vZGVsT2JqZWN0OjpoYXNTZWxmUGFpbnRpbmdMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpsYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojp1cGRhdGVGcm9tU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6dG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjptYXBMb2Nh
bFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnB1c2hNYXBwaW5n
VG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6aXNDb21wb3NpdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZXc6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6
c2VsZWN0aW9uQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNldFNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpjbGVhclNlbGVjdGlvbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKFJlbmRlclZpZXcpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHA6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdCbG9jazo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0Jsb2NrLmg6CisgICAgICAgIChSZW5kZXJTVkdCbG9jayk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RG
b3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om1h
cExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9i
amVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg6CisgICAgICAgIChSZW5kZXJTVkdGb3JlaWduT2JqZWN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHSW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWlu
ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmg6CisgICAgICAg
IChSZW5kZXJTVkdJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9k
ZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R01vZGVsT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGluZUJvdW5kc0Zv
clJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
aDoKKyAgICAgICAgKFJlbmRlclNWR01vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUm9vdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUm9vdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSb290OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuaDoKKyAgICAgICAgKFJlbmRlclNWR1Jvb3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKFJlbmRlclNW
R1RleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxv
YXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpt
YXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6
OnB1c2hNYXBwaW5nVG9Db250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdSZW5kZXJTdXBw
b3J0KToKKwogMjAxMi0wOS0yNyAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjk2MzMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IGM1ZTg4M2ViMTMxNGI4NDFiZTFkMzc0MzMwODA0YWZhNjFiNDMzNjYuLjgw
YTZjNjI0Mzg2ZjJjN2JiMGU2ODZlZjQwMjE3MjFiMGU0YjlmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0yMDcwLDYgKzIwNzAsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwCisgICAg
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckxpbmVCb3hMaXN0LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAogICAgIHJl
bmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IGZmZTI2MDBlYTYxM2RiOGY1ZmIxM2VhMjQ4NzEwNzYwNjQzZDc4YTcuLjFhOWM2NjRhNzUz
OGY3MGI2NmIwODc0YWZkOGFiMzA5ZGJhZWEzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtNDk5NCw2ICs0OTk0LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggXAogCVNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmggXAorICAgICAgICBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgXAorICAgICAgICBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGZhMjcyNGRiZjAyMWNmZjU4
YjEwZTdmNWMzMWZjZDIxY2YzMTRiMjguLmI3ODg4ZGNiMDMyY2E5MTJhNGFhOWRhNjJjZjBlZTBj
YTJmNzY2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTE0Nyw2ICsxMTQ3LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgXAogICAgIHJlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0
ZXJJbmZvLmNwcCBcCisgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwIFwK
ICAgICByZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwIFwKICAgICByZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAgXApAQCAt
MjM0OCw2ICsyMzQ5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVy
LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCBcCiAgICAgcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oIFwKKyAgICByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuaCBcCiAgICAgcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBkMTU4ZmMwNTkxMzAwY2IyYjJjZWY1OWU5ZGJiZjJj
ZThmMGRkMWUwLi43NjE4ZDE0YzAxOTQwZTAyMDUzM2QwNzA1ODU3MzI4NDdjNjJmNWZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTExOSw3ICsxMTE5LDcgQEAgX19aTks3V2ViQ29yZTExUmVu
ZGVyU3R5bGU0Zm9udEV2CiBfX1pOSzdXZWJDb3JlMTFTY3JpcHRWYWx1ZTlnZXRTdHJpbmdFUE4z
SlNDOUV4ZWNTdGF0ZUVSTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0
MTRlbmNsb3NpbmdMYXllckV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNWxvY2FsVG9B
YnNvbHV0ZUVSS05TXzEwRmxvYXRQb2ludEViYgotX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0
MjBsb2NhbFRvQ29udGFpbmVyUXVhZEVSS05TXzlGbG9hdFF1YWRFUE5TXzIwUmVuZGVyQm94TW9k
ZWxPYmplY3RFYmJQYgorX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MjBsb2NhbFRvQ29udGFp
bmVyUXVhZEVSS05TXzlGbG9hdFF1YWRFUE5TXzIyUmVuZGVyTGF5ZXJNb2RlbE9iamVjdEViYlBi
CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91bmRpbmdCb3hSZWN0RWIK
IF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDM5cGl4ZWxTbmFwcGVkQWJzb2x1dGVDbGlwcGVk
T3ZlcmZsb3dSZWN0RXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDdjaGlsZEF0RWoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCA4NDAwYzMxNTU3YjE1ODgxMjdlYjE0YTg2NzcxMjA1YjM0M2VlNTk1
Li44ZWYzYWIxZGYyZTIyYzNkZDQ4ZGQwOTc2ODk5Yjg3MWVkYzI1Mzg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC01NzQsNiArNTc0LDcgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oJywKICAg
ICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgnLAorICAgICAgICAg
ICAgJ3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgnLAogICAgICAgICAgICAgJ3Jl
bmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVu
ZGVyTGlzdEl0ZW0uaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5oJywKQEAgLTMzNzUsNiArMzM3Niw3IEBACiAgICAgICAgICAgICAncmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxheWVyRmls
dGVySW5mby5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dC5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAnLAog
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCcsCiAgICAgICAgICAgICAn
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA3NjhhN2Zh
MzUwYzMzOGY5MTQxMjljMzhkMmY4ZmM2YTRiMjI5ZTg3Li5jMWQyMTRlYjMzN2VkZWE5MjllOWUx
MjFlZDQ2OWIyOTBhNzcxM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9y
ZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTgyMyw4ICs4MjMsOCBA
QCBfX1pON1dlYkNvcmUxMVJlbmRlckJsb2NrMTRzdHlsZURpZENoYW5nZUVOU18xNVN0eWxlRGlm
ZmVyZW5jZUVQS05TXzExUmVuZGVyU3R5bAogX19aTjdXZWJDb3JlOVJlbmRlckJveDE0c3R5bGVE
aWRDaGFuZ2VFTlNfMTVTdHlsZURpZmZlcmVuY2VFUEtOU18xMVJlbmRlclN0eWxlRQogX19aTjdX
ZWJDb3JlMjBSZW5kZXJCb3hNb2RlbE9iamVjdDE0c3R5bGVEaWRDaGFuZ2VFTlNfMTVTdHlsZURp
ZmZlcmVuY2VFUEtOU18xMVJlbmRlclN0eWxlRQogX19aTjdXZWJDb3JlMTJSZW5kZXJPYmplY3Qx
NHN0eWxlRGlkQ2hhbmdlRU5TXzE1U3R5bGVEaWZmZXJlbmNlRVBLTlNfMTFSZW5kZXJTdHlsZUUK
LV9fWk43V2ViQ29yZTlSZW5kZXJCb3gyN3VwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZUV2Ci1f
X1pON1dlYkNvcmUyMFJlbmRlckJveE1vZGVsT2JqZWN0Mjd1cGRhdGVCb3hNb2RlbEluZm9Gcm9t
U3R5bGVFdgorX19aTjdXZWJDb3JlOVJlbmRlckJveDE1dXBkYXRlRnJvbVN0eWxlRXYKK19fWk43
V2ViQ29yZTIwUmVuZGVyQm94TW9kZWxPYmplY3QxNXVwZGF0ZUZyb21TdHlsZUV2CiBfX1pOSzdX
ZWJDb3JlMTFSZW5kZXJTdHlsZTIxdmlzaXRlZERlcGVuZGVudENvbG9yRWkKIF9fWk5LN1dlYkNv
cmUxMVJlbmRlclN0eWxlMjJjb2xvckluY2x1ZGluZ0ZhbGxiYWNrRWlOU18xMkVCb3JkZXJTdHls
ZUUKIF9fWk5LN1dlYkNvcmUxMFJlbmRlclZpZXcxMmlzUmVuZGVyVmlld0V2CkBAIC00MTcxLDcg
KzQxNzEsNyBAQCBfX1pON1dlYkNvcmU0Tm9kZTExYXBwZW5kQ2hpbGRFTjNXVEYxMFBhc3NSZWZQ
dHJJUzBfRUVSaWIKIF9fWk43V2ViQ29yZTROb2RlMTBsYXp5QXR0YWNoRU5TMF8xN1Nob3VsZFNl
dEF0dGFjaGVkRQogX19aTjdXZWJDb3JlMTJSZW5kZXJJbmxpbmVDMUVQTlNfNE5vZGVFCiBfX1pO
N1dlYkNvcmUxMlJlbmRlcklubGluZTE0c3R5bGVEaWRDaGFuZ2VFTlNfMTVTdHlsZURpZmZlcmVu
Y2VFUEtOU18xMVJlbmRlclN0eWxlRQotX19aTjdXZWJDb3JlMTJSZW5kZXJJbmxpbmUyN3VwZGF0
ZUJveE1vZGVsSW5mb0Zyb21TdHlsZUV2CitfX1pON1dlYkNvcmUxMlJlbmRlcklubGluZTE1dXBk
YXRlRnJvbVN0eWxlRXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRlcklubGluZTEzcmVxdWlyZXNMYXll
ckV2CiBfX1pOSzdXZWJDb3JlOUxlbmd0aEJveDdub25aZXJvRXYKIF9fWk5LN1dlYkNvcmUxMlJl
bmRlcklubGluZTE1dmlydHVhbENoaWxkcmVuRXYKQEAgLTExMzI5LDcgKzExMzI5LDcgQEAgX19a
TjdXZWJDb3JlMTNSZW5kZXJTVkdUZXh0QzFFUE5TXzE0U1ZHVGV4dEVsZW1lbnRFCiBfX1pON1dl
YkNvcmUxNFJlbmRlclNWR0Jsb2NrOHNldFN0eWxlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzExUmVu
ZGVyU3R5bGVFRUUKIF9fWk43V2ViQ29yZTE0UmVuZGVyU1ZHQmxvY2sxNXN0eWxlV2lsbENoYW5n
ZUVOU18xNVN0eWxlRGlmZmVyZW5jZUVQS05TXzExUmVuZGVyU3R5bGVFCiBfX1pON1dlYkNvcmUx
NFJlbmRlclNWR0Jsb2NrMTRzdHlsZURpZENoYW5nZUVOU18xNVN0eWxlRGlmZmVyZW5jZUVQS05T
XzExUmVuZGVyU3R5bGVFCi1fX1pON1dlYkNvcmUxNFJlbmRlclNWR0Jsb2NrMjd1cGRhdGVCb3hN
b2RlbEluZm9Gcm9tU3R5bGVFdgorX19aTjdXZWJDb3JlMTRSZW5kZXJTVkdCbG9jazE1dXBkYXRl
RnJvbVN0eWxlRXYKIF9fWk5LN1dlYkNvcmUxM1JlbmRlclNWR1RleHQxM3JlcXVpcmVzTGF5ZXJF
dgogX19aTjdXZWJDb3JlMTRSZW5kZXJTVkdCbG9jazE3dXBkYXRlRnJvbUVsZW1lbnRFdgogX19a
TjdXZWJDb3JlMjVTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50MTVjaGlsZHJlbkNoYW5nZWRFYlBO
U180Tm9kZUVTMl9pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IDkwOGE3MDVkNWI1NzQ3Y2I5Y2NhNTMxZGVjN2Q3ODg1NDBkZDcwMTMuLjRiODcw
MjA3YzQ5Zjg5MDJjM2UzZDgwNjQwMjViMDM2NzljZjg0YWUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00NDIxNyw2ICs0NDIxNyw2MiBAQAog
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwIgorCQkJCT4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJTmFtZT0iRGVidWdfQWxsfFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRl
cmluZ1xSZW5kZXJMYXllck1vZGVsT2JqZWN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJUcmVlQXNUZXh0LmNwcCIK
IAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDlhMDVkODFlNzMwNzFlMTFlNjg2
ZTA5NDMxN2RkMTg3MDgzZWNlMS4uOTRjNjM3MWNkYzcxODQ1OWM5MGI4MTAzNDA1YWU3ZWVlZjQx
MjYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTAyOSw2ICsxMDI5LDggQEAKIAkJM0FCMDJEMkIxMkQ0RjkxNjAwRkJCNjk0
IC8qIFN0b3JhZ2VUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDNBQjAyRDI5MTJENEY5MTYwMEZCQjY5NCAvKiBTdG9yYWdlVHJhY2tlci5j
cHAgKi87IH07CiAJCTNBQzM2ODAwMTJFRjdBMDkwMDZBM0Q2RiAvKiBTdG9yYWdlVHJhY2tlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0FD
MzY3RkUxMkVGN0EwOTAwNkEzRDZGIC8qIFN0b3JhZ2VUcmFja2VyQ2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJM0FDNjQ4QjIxMjlFMTQ2
NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gM0FDNjQ4QjExMjlFMTQ2NTAwQzNFQjI1IC8qIEVkaXRpbmdC
b3VuZGFyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTNDMjQ0RkVBQTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJMYXllck1vZGVsT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQzI0NEZFNEEz
NzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTNDMjQ0RkVCQTM3NUFDNjMzRjg4
QkU2RiAvKiBSZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNDMjQ0RkU1QTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0LmNwcCAqLzsgfTsKIAkJNDEwMDJDQ0QwRjY2RURFRjAwOUU2NjBE
IC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDEwMDJDQ0IwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9u
Q2FsbC5oICovOyB9OwogCQk0MTAwMkNDRTBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rp
b25DYWxsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxMDAyQ0NDMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovOyB9
OwogCQk0MTBCN0U3MjEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwQjdFNzEx
MDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLzsgfTsKQEAgLTgx
NDcsNiArODE0OSw4IEBACiAJCTNBQjAyRDI5MTJENEY5MTYwMEZCQjY5NCAvKiBTdG9yYWdlVHJh
Y2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlVHJh
Y2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNBQzM2N0ZFMTJFRjdBMDkw
MDZBM0Q2RiAvKiBTdG9yYWdlVHJhY2tlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdG9yYWdlVHJhY2tlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzQUM2NDhCMTEyOUUxNDY1MDBDM0VCMjUgLyogRWRpdGluZ0JvdW5kYXJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdCb3VuZGFyeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzQzI0NEZFNEEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNDMjQ0
RkU1QTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckxheWVyTW9kZWxPYmplY3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTAwMkNDQjBGNjZFREVGMDA5RTY2MEQg
LyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjcmlwdEZ1bmN0aW9uQ2FsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTAw
MkNDQzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01l
c3NhZ2VFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMTU0Nyw2ICsyMTU1MSw4IEBACiAJCQkJQkNFQTQ4NEIwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlclRoZW1lLmggKi8sCiAJCQkJQkNFQTQ4NDgwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRo
ZW1lTWFjLmggKi8sCiAJCQkJQkNFQTQ4NDkwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1l
TWFjLm1tICovLAorCQkJCTNDMjQ0RkU1QTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0LmNwcCAqLywKKwkJCQkzQzI0NEZFNEEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5oICovLAogCQkJCTkzOTU1QTQyMDNENzI5MzIwMDg2MzVDRSAvKiBS
ZW5kZXJUcmVlQXNUZXh0LmNwcCAqLywKIAkJCQk5Mzk1NUE0MTAzRDcyOTMyMDA4NjM1Q0UgLyog
UmVuZGVyVHJlZUFzVGV4dC5oICovLAogCQkJCUU0QjQxRTMzMENCRkI2MDkwMEFGMkVDRSAvKiBS
ZW5kZXJWaWRlby5jcHAgKi8sCkBAIC0yNDgxMSw2ICsyNDgxNyw3IEBACiAJCQkJODZGRjg4NjIx
NURFM0QwNzAwQkQ2QjI4IC8qIFJlbmRlclRleHRUcmFja0N1ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNFQTQ4OEEwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0VBNDg4NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTNDMjQ0RkVBQTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTk4QzA4MjQ1RTU5MDAxRTlBQkMg
LyogUmVuZGVyVHJlZUFzVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjE0NTIwQ0Q2OEEz
NTAwRkFEQTc1IC8qIFJlbmRlclZpZGVvLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg2ODA5
N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVmlldy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODAzMyw2
ICsyODA0MCw3IEBACiAJCQkJQkNFQTQ4ODkwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1l
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODg4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJUaGVtZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QUQ1MDgyNDVFNTkwMDFFOUFC
QyAvKiBSZW5kZXJUcmVlQXNUZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTNDMjQ0RkVCQTM3
NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUU0NDYxNDUxMENENjhBMzUwMEZBREE3NSAvKiBSZW5kZXJWaWRlby5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0VBNDg2NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVmlldy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODcxREZFNTBBMTUzNzZCMDBCMTJBNjggLyogUmVuZGVyV2lk
Z2V0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9H
ZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HZXN0dXJlVGFw
SGlnaGxpZ2h0ZXIuY3BwCmluZGV4IGVlZjFkMzc3NGI4YjhlMzZiOWE0MDk4Mjg2YTgwYWI2NmE5
MGI1ZjEuLjU2ZGY0N2MyNjk5NDViZGFhNDUzMDY5M2NkN2YzMjhhZTA4NmJmMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAKQEAgLTIwOCw3ICsy
MDgsNyBAQCBQYXRoIGFic29sdXRlUGF0aEZvclJlbmRlcmVyKFJlbmRlck9iamVjdCogY29uc3Qg
bykKIAogICAgICAgICAvLyBDaGVjayBhbmNlc3RvciBsYXllcnMgZm9yIG92ZXJmbG93IGNsaXAg
YW5kIGludGVyc2VjdCB0aGVtLgogICAgICAgICBmb3IgKDsgbGF5ZXI7IGxheWVyID0gbGF5ZXIt
PnBhcmVudCgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbGF5ZXJSZW5k
ZXJlciA9IGxheWVyLT5yZW5kZXJlcigpOworICAgICAgICAgICAgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogbGF5ZXJSZW5kZXJlciA9IGxheWVyLT5yZW5kZXJlcigpOwogCiAgICAgICAgICAgICBp
ZiAobGF5ZXJSZW5kZXJlci0+aGFzT3ZlcmZsb3dDbGlwKCkgJiYgbGF5ZXJSZW5kZXJlciAhPSBj
dXJyZW50UmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICBib29sIGNvbnRhaW5lclNraXBwZWQg
PSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBh
aW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuaAppbmRl
eCA2ZjYzZTgyZDM1MDMxMTJkZjAxNzE3NTY0N2MwNGU4OTAzNDNhMGU0Li5kMDc0Yjg0YmI0NWVk
NjYzZmY2OTE4N2Y4OTQyYzljZjM2ZjFjOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xheW91dFJlcGFpbnRlci5oCkBAIC0zMCw4ICszMCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDsKIGNsYXNzIFJlbmRlck9iamVjdDsK
LWNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OwogCiBjbGFzcyBMYXlvdXRSZXBhaW50ZXIgewog
cHVibGljOgpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUmVuZGVy
T2JqZWN0JiBtX29iamVjdDsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbV9yZXBhaW50Q29u
dGFpbmVyOworICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIG1fcmVwYWludENvbnRhaW5lcjsK
ICAgICAvLyBXZSBzdG9yZSB0aGVzZSB2YWx1ZXMgYXMgTGF5b3V0UmVjdHMsIGJ1dCB0aGUgZmlu
YWwgaW52YWxpZGF0aW9ucyB3aWxsIGJlIHBpeGVsIHNuYXBwZWQKICAgICBMYXlvdXRSZWN0IG1f
b2xkQm91bmRzOwogICAgIExheW91dFJlY3QgbV9vbGRPdXRsaW5lQm94OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQlIuaAppbmRleCA0OWY5YjVlNmNjMjBlOTQ5ZjY2MDYxY2JkYWUzYTFiMzYw
ZWMzODUwLi4wZWJhYTJmYTI2MTdjZjMwOGY4MGQ5YWNmNjcwNWY4NjRhNzFlNzA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVy
QlIiOyB9CiAgCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgYm9vbCAvKmNsaXBU
b1Zpc2libGVDb250ZW50Ki8pIHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiAvKnJlcGFpbnRDb250YWluZXIqLywgYm9vbCAvKmNsaXBUb1Zpc2libGVDb250ZW50Ki8pIE9W
RVJSSURFIHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQogCiAgICAgdmlydHVhbCBmbG9hdCB3aWR0
aCh1bnNpZ25lZCAvKmZyb20qLywgdW5zaWduZWQgLypsZW4qLywgY29uc3QgRm9udCYsIGZsb2F0
IC8qeFBvcyovLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qID0gMCAvKmZhbGxiYWNr
Rm9udHMqLyAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZp
cnR1YWwgZmxvYXQgd2lkdGgodW5zaWduZWQgLypmcm9tKi8sIHVuc2lnbmVkIC8qbGVuKi8sIGZs
b2F0IC8qeHBvcyovLCBib29sID0gZmFsc2UgLypmaXJzdExpbmUqLywgSGFzaFNldDxjb25zdCBT
aW1wbGVGb250RGF0YSo+KiA9IDAgLypmYWxsYmFja0ZvbnRzKi8sIEdseXBoT3ZlcmZsb3cqID0g
MCkgY29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKaW5kZXggZjczYjcxNjMwOTRjMzFhYjBjZmRlOTIwNWYwY2VjYWYyYmM1OWFkYS4uY2Nj
MTlkMDEwNzE5YWE0MDQyYTcxOTMwOTA0OWM3ZDQ5ZTBhOGQ3YyAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zMjQ5LDcgKzMyNDksNyBAQCBib29sIFJlbmRl
ckJsb2NrOjppc1NlbGVjdGlvblJvb3QoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
R2FwUmVjdHMgUmVuZGVyQmxvY2s6OnNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikKK0dhcFJlY3RzIFJlbmRlckJsb2NrOjpz
ZWxlY3Rpb25HYXBSZWN0c0ZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lcikKIHsKICAgICBBU1NFUlQoIW5lZWRzTGF5b3V0KCkpOwogCkBAIC02NzY5LDcg
KzY3NjksNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiAgICAgICAgIHF1YWRzLmFwcGVuZChS
ZW5kZXJCb3g6OmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KDAsIDAsIHdpZHRoKCksIGhl
aWdodCgpKSwgZmFsc2UsIHdhc0ZpeGVkKSk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyQmxvY2s6
OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdAorTGF5b3V0UmVjdCBSZW5k
ZXJCbG9jazo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QKIHsKICAg
ICBMYXlvdXRSZWN0IHIoUmVuZGVyQm94OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KHJlcGFp
bnRDb250YWluZXIsIG91dGxpbmVXaWR0aCkpOwogICAgIGlmIChpc0Fub255bW91c0Jsb2NrQ29u
dGludWF0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDk0
NzAzOTk2ODQ1YzhkYjQ0YjNlZTZiMTUyZTY5YjdjYjNhZDczODYuLjQyYmE4MDVlZTRjN2E5ZTc1
OWQ1ZGI2ZmFkNDZkOWYxOTQzNTZkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5oCkBAIC0yMTYsNyArMjE2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb250YWluc05v
blplcm9CaWRpTGV2ZWwoKSBjb25zdDsKIAotICAgIEdhcFJlY3RzIHNlbGVjdGlvbkdhcFJlY3Rz
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7CisgICAg
R2FwUmVjdHMgc2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIpOwogICAgIExheW91dFJlY3QgbG9naWNhbExlZnRTZWxlY3Rp
b25HYXAoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9pbnQmIHJvb3RCbG9j
a1BoeXNpY2FsUG9zaXRpb24sIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290QmxvY2ss
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHNl
bE9iaiwgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlv
dXRVbml0IGxvZ2ljYWxIZWlnaHQsIGNvbnN0IFBhaW50SW5mbyopOwogICAgIExheW91dFJlY3Qg
bG9naWNhbFJpZ2h0U2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrKiByb290QmxvY2ssIGNvbnN0IExh
eW91dFBvaW50JiByb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBv
ZmZzZXRGcm9tUm9vdEJsb2NrLApAQCAtODA5LDE0ICs4MDksMTQgQEAgcHJpdmF0ZToKICAgICAv
LyBjaGlsZHJlbi4KICAgICB2aXJ0dWFsIFJlbmRlckJsb2NrKiBmaXJzdExpbmVCbG9jaygpIGNv
bnN0OwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGlu
ZVdpZHRoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9y
UmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRV
bml0IG91dGxpbmVXaWR0aCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBSZW5kZXJTdHls
ZSogb3V0bGluZVN0eWxlRm9yUmVwYWludCgpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBob3ZlckFuY2VzdG9yKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZURyYWdTdGF0ZShib29sIGRyYWdPbik7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkQmVjYW1lTm9u
SW5saW5lKFJlbmRlck9iamVjdCogY2hpbGQpOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNl
bGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBib29sIC8qY2xpcFRvVmlzaWJsZUNvbnRlbnQqLykKKyAgICB2aXJ0dWFsIExheW91dFJl
Y3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgYm9vbCAvKmNsaXBUb1Zpc2libGVDb250ZW50Ki8pIE9WRVJSSURFCiAgICAg
ewogICAgICAgICByZXR1cm4gc2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KHJlcGFpbnRDb250
YWluZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXgg
YTFhM2M5OTIyM2Y1ZDQ3YTg5MTNhNDg4NzU3NzIwMDMyNjlhOTE3Ni4uY2M2YWZiYmU3YWUxYzZj
Y2I2OWIwYWRkYzYwMWQ1ZDRlMjE0MzA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFJlbmRlckJveDo6c3R5bGVXaWxsQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bAogCiB2
b2lkIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKLSAgICAvLyBIb3Jpem9udGFsIHdyaXRpbmcgbW9k
ZSBkZWZpbml0aW9uIGlzIHVwZGF0ZWQgaW4gUmVuZGVyQm94TW9kZWxPYmplY3Q6OnVwZGF0ZUJv
eE1vZGVsSW5mb0Zyb21TdHlsZSwKKyAgICAvLyBIb3Jpem9udGFsIHdyaXRpbmcgbW9kZSBkZWZp
bml0aW9uIGlzIHVwZGF0ZWQgaW4gUmVuZGVyQm94TW9kZWxPYmplY3Q6OnVwZGF0ZUZyb21TdHls
ZSwKICAgICAvLyAoYXMgcGFydCBvZiB0aGUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnN0eWxlRGlk
Q2hhbmdlIGNhbGwgYmVsb3cpLiBTbywgd2UgY2FuIHNhZmVseSBjYWNoZSB0aGUgaG9yaXpvbnRh
bAogICAgIC8vIHdyaXRpbmcgbW9kZSB2YWx1ZSBiZWZvcmUgc3R5bGUgY2hhbmdlIGhlcmUuCiAg
ICAgYm9vbCBvbGRIb3Jpem9udGFsV3JpdGluZ01vZGUgPSBpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpOwpAQCAtMjY5LDkgKzI2OSw5IEBAIHZvaWQgUmVuZGVyQm94OjpzdHlsZURpZENoYW5nZShT
dHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlCiAgICAgfQog
fQogCi12b2lkIFJlbmRlckJveDo6dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCkKK3ZvaWQg
UmVuZGVyQm94Ojp1cGRhdGVGcm9tU3R5bGUoKQogewotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0
Ojp1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsKKyAgICBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6dXBkYXRlRnJvbVN0eWxlKCk7CiAKICAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IHN0
eWxlKCk7CiAgICAgYm9vbCBpc1Jvb3RPYmplY3QgPSBpc1Jvb3QoKTsKQEAgLTQ0Nyw3ICs0NDcs
NyBAQCBGbG9hdFF1YWQgUmVuZGVyQm94OjphYnNvbHV0ZUNvbnRlbnRRdWFkKCkgY29uc3QKICAg
ICByZXR1cm4gbG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QocmVjdCkpOwogfQogCi1MYXlv
dXRSZWN0IFJlbmRlckJveDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFBvaW50KiBjYWNoZWRPZmZzZXRUb1JlcGFp
bnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlckJveDo6b3V0bGluZUJvdW5kc0Zv
clJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0
UG9pbnQqIGNhY2hlZE9mZnNldFRvUmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICBMYXlv
dXRSZWN0IGJveCA9IGJvcmRlckJvdW5kaW5nQm94KCk7CiAgICAgYWRqdXN0UmVjdEZvck91dGxp
bmVBbmRTaGFkb3coYm94KTsKQEAgLTEyNTgsNyArMTI1OCw3IEBAIExheW91dFVuaXQgUmVuZGVy
Qm94OjpwZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodCgpIGNvbnN0CiAg
ICAgcmV0dXJuIGNiLT5hZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhs
b2dpY2FsSGVpZ2h0TGVuZ3RoLnZhbHVlKCkpOwogfQogCi12b2lkIFJlbmRlckJveDo6bWFwTG9j
YWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJh
bnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9k
ZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1T
dGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBib29s
KiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAocmVwYWludENvbnRhaW5lciA9PSB0aGlzKQog
ICAgICAgICByZXR1cm47CkBAIC0xMzIzLDcgKzEzMjMsNyBAQCB2b2lkIFJlbmRlckJveDo6bWFw
TG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
VHJhbgogICAgIG8tPm1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgdHJhbnNm
b3JtU3RhdGUsIG1vZGUsIHdhc0ZpeGVkKTsKIH0KIAotY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5k
ZXJCb3g6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QK
K2NvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyQm94OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21l
dHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKIHsKICAgICBBU1NFUlQoYW5jZXN0b3JUb1N0b3BB
dCAhPSB0aGlzKTsKIApAQCAtMTQ3Myw3ICsxNDczLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmRlbGV0
ZUxpbmVCb3hXcmFwcGVyKCkKICAgICB9CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyQm94OjpjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyQm94OjpjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25z
dAogewogICAgIGlmIChzdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAhZW5jbG9z
aW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIExheW91dFJl
Y3QoKTsKQEAgLTE1MDAsNyArMTUwMCw3IEBAIExheW91dFJlY3QgUmVuZGVyQm94OjpjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWluCiAgICAg
cmV0dXJuIHI7CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJv
b2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3Qs
IGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gVGhlIHJlY3Qgd2UgY29tcHV0ZSBhdCBlYWNo
IHN0ZXAgaXMgc2hpZnRlZCBieSBvdXIgeC95IG9mZnNldCBpbiB0aGUgcGFyZW50IGNvbnRhaW5l
cidzIGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgLy8gT25seSB3aGVuIHdlIGNyb3NzIGEgd3JpdGlu
ZyBtb2RlIGJvdW5kYXJ5IHdpbGwgd2UgaGF2ZSB0byBwb3NzaWJseSBmbGlwRm9yV3JpdGluZ01v
ZGUgKHRvIGNvbnZlcnQgaW50byBhIG1vcmUgYXBwcm9wcmlhdGUKQEAgLTM4MjAsNyArMzgyMCw3
IEBAIFJlbmRlckxheWVyKiBSZW5kZXJCb3g6OmVuY2xvc2luZ0Zsb2F0UGFpbnRpbmdMYXllcigp
IGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBjdXJyID0gdGhpczsKICAgICB3aGls
ZSAoY3VycikgewotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBjdXJyLT5oYXNMYXllcigp
ICYmIGN1cnItPmlzQm94KCkgPyB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGN1cnIpLT5sYXllcigp
IDogMDsKKyAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gY3Vyci0+aGFzTGF5ZXIoKSAmJiBj
dXJyLT5pc0JveCgpID8gdG9SZW5kZXJCb3goY3VyciktPmxheWVyKCkgOiAwOwogICAgICAgICBp
ZiAobGF5ZXIgJiYgbGF5ZXItPmlzU2VsZlBhaW50aW5nTGF5ZXIoKSkKICAgICAgICAgICAgIHJl
dHVybiBsYXllcjsKICAgICAgICAgY3VyciA9IGN1cnItPnBhcmVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGRiMjc0ZmI4NDEyZDZlYWQ0ODYwYWQyYjk0YTFkZjlk
NTU1ODE1NDQuLjFlYTRmNDQyOThmMjgxMDg5Y2U2OWE2NDE5MWNhMzU2MDgzNGJkY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6
CiAgICAgTGF5b3V0UmVjdCBjb21wdXRlZENTU0NvbnRlbnRCb3hSZWN0KCkgY29uc3QgeyByZXR1
cm4gTGF5b3V0UmVjdChib3JkZXJMZWZ0KCkgKyBjb21wdXRlZENTU1BhZGRpbmdMZWZ0KCksIGJv
cmRlclRvcCgpICsgY29tcHV0ZWRDU1NQYWRkaW5nVG9wKCksIGNsaWVudFdpZHRoKCkgLSBjb21w
dXRlZENTU1BhZGRpbmdMZWZ0KCkgLSBjb21wdXRlZENTU1BhZGRpbmdSaWdodCgpLCBjbGllbnRI
ZWlnaHQoKSAtIGNvbXB1dGVkQ1NTUGFkZGluZ1RvcCgpIC0gY29tcHV0ZWRDU1NQYWRkaW5nQm90
dG9tKCkpOyB9CiAKICAgICAvLyBCb3VuZHMgb2YgdGhlIG91dGxpbmUgYm94IGluIGFic29sdXRl
IGNvb3Jkcy4gUmVzcGVjdHMgdHJhbnNmb3JtcwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRs
aW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogLypyZXBhaW50Q29udGFp
bmVyKi8sIExheW91dFBvaW50KiBjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIpIGNvbnN0
OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgTGF5b3V0UG9pbnQqIGNhY2hl
ZE9mZnNldFRvUmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50
Jik7CiAKICAgICAvLyBVc2UgdGhpcyB3aXRoIGNhdXRpb24hIE5vIHR5cGUgY2hlY2tpbmcgaXMg
ZG9uZSEKQEAgLTM1NCw4ICszNTQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbmxpbmVCb3hX
cmFwcGVyKElubGluZUJveCogYm94V3JhcHBlcikgeyBtX2lubGluZUJveFdyYXBwZXIgPSBib3hX
cmFwcGVyOyB9CiAgICAgdm9pZCBkZWxldGVMaW5lQm94V3JhcHBlcigpOwogCi0gICAgdmlydHVh
bCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0
ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBM
YXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91
dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgdm9pZCByZXBhaW50RHVyaW5nTGF5b3V0SWZNb3ZlZChjb25zdCBMYXlvdXRS
ZWN0Jik7CiAKQEAgLTU1MCw3ICs1NTAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZv
aWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5l
d1N0eWxlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVC
b3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbVN0eWxl
KCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgYmFja2dyb3VuZElzT2JzY3VyZWQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgcGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgPSBC
YWNrZ3JvdW5kQmxlZWROb25lKTsKQEAgLTU3MCw4ICs1NzAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
CiAgICAgdmlydHVhbCBib29sIHNob3VsZENvbXB1dGVTaXplQXNSZXBsYWNlZCgpIGNvbnN0IHsg
cmV0dXJuIGlzUmVwbGFjZWQoKSAmJiAhaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKTsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5l
ckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3Jt
cywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0
IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCosIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1h
cExvY2FsVG9Db250YWluZXIoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5
Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhlZCA9
IDApIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNo
TWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqLCBSZW5kZXJH
ZW9tZXRyeU1hcCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0
ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0
YXRlJikgY29uc3Q7CiAKICAgICB2b2lkIHBhaW50Um9vdEJveEZpbGxMYXllcnMoY29uc3QgUGFp
bnRJbmZvJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAppbmRleCA4ZGVlZGRmMzhiNjQyNTA0Mjg3N2EwZmM5MjdkYjBhZjU4ZmUyYWY5
Li42NGQ5MGFkYjE1NTY5YjE3YWNlZjQ3MzJiNDg3NDdmYjljMmYzNjQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTUzLDEx
ICs1Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAotYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c193YXNGbG9hdGluZyA9IGZhbHNlOwot
Ym9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c19oYWRMYXllciA9IGZhbHNlOwotYm9vbCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6c19oYWRUcmFuc2Zvcm0gPSBmYWxzZTsKLWJvb2wgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnNfbGF5ZXJXYXNTZWxmUGFpbnRpbmcgPSBmYWxzZTsKLQogc3RhdGljIGNv
bnN0IGRvdWJsZSBjSW50ZXJwb2xhdGlvbkN1dG9mZiA9IDgwMC4gKiA4MDAuOwogc3RhdGljIGNv
bnN0IGRvdWJsZSBjTG93UXVhbGl0eVRpbWVUaHJlc2hvbGQgPSAwLjUwMDsgLy8gNTAwIG1zCiAK
QEAgLTMxNywxNiArMzEyLDEyIEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNob3VsZFBh
aW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgSW1hCiB9CiAKIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVjdChOb2RlKiBub2RlKQotICAgIDog
UmVuZGVyT2JqZWN0KG5vZGUpCi0gICAgLCBtX2xheWVyKDApCisgICAgOiBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KG5vZGUpCiB7CiB9CiAKIFJlbmRlckJveE1vZGVsT2JqZWN0Ojp+UmVuZGVyQm94
TW9kZWxPYmplY3QoKQogewotICAgIC8vIE91ciBsYXllciBzaG91bGQgaGF2ZSBiZWVuIGRlc3Ry
b3llZCBhbmQgY2xlYXJlZCBieSBub3cKLSAgICBBU1NFUlQoIWhhc0xheWVyKCkpOwotICAgIEFT
U0VSVCghbV9sYXllcik7CiAgICAgaWYgKGdJbWFnZVF1YWxpdHlDb250cm9sbGVyKSB7CiAgICAg
ICAgIGdJbWFnZVF1YWxpdHlDb250cm9sbGVyLT5vYmplY3REZXN0cm95ZWQodGhpcyk7CiAgICAg
ICAgIGlmIChnSW1hZ2VRdWFsaXR5Q29udHJvbGxlci0+aXNFbXB0eSgpKSB7CkBAIC0zMzYsMTQg
KzMyNyw2IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0Ojp+UmVuZGVyQm94TW9kZWxPYmplY3QoKQog
ICAgIH0KIH0KIAotdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZGVzdHJveUxheWVyKCkKLXsK
LSAgICBBU1NFUlQoIWhhc0xheWVyKCkpOyAvLyBDYWxsZXJzIHNob3VsZCBoYXZlIGFscmVhZHkg
Y2FsbGVkIHNldEhhc0xheWVyKGZhbHNlKQotICAgIEFTU0VSVChtX2xheWVyKTsKLSAgICBtX2xh
eWVyLT5kZXN0cm95KHJlbmRlckFyZW5hKCkpOwotICAgIG1fbGF5ZXIgPSAwOwotfQotCiB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQogewogICAgIC8vIEEgY29u
dGludWF0aW9uIG9mIHRoaXMgUmVuZGVyT2JqZWN0IHNob3VsZCBiZSBkZXN0cm95ZWQgYXQgc3Vi
Y2xhc3Nlcy4KQEAgLTM2MywxMTQgKzM0NiwxMyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAgIGlmIChmaXJzdExldHRlclJlbWFpbmluZ1RleHQoKSkK
ICAgICAgICAgc2V0Rmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KDApOwogCi0gICAgLy8gUmVuZGVy
T2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQgY2FsbHMgYmFjayB0byBkZXN0cm95TGF5ZXIoKSBmb3Ig
bGF5ZXIgZGVzdHJ1Y3Rpb24KLSAgICBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpOwot
fQotCi1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fbGF5ZXIgJiYgbV9sYXllci0+aXNTZWxmUGFpbnRpbmdMYXll
cigpOwotfQotCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSkKLXsKLSAgICBz
X3dhc0Zsb2F0aW5nID0gaXNGbG9hdGluZygpOwotICAgIHNfaGFkTGF5ZXIgPSBoYXNMYXllcigp
OwotICAgIHNfaGFkVHJhbnNmb3JtID0gaGFzVHJhbnNmb3JtKCk7Ci0gICAgaWYgKHNfaGFkTGF5
ZXIpCi0gICAgICAgIHNfbGF5ZXJXYXNTZWxmUGFpbnRpbmcgPSBsYXllcigpLT5pc1NlbGZQYWlu
dGluZ0xheWVyKCk7Ci0KLSAgICAvLyBJZiBvdXIgei1pbmRleCBjaGFuZ2VzIHZhbHVlIG9yIG91
ciB2aXNpYmlsaXR5IGNoYW5nZXMsCi0gICAgLy8gd2UgbmVlZCB0byBkaXJ0eSBvdXIgc3RhY2tp
bmcgY29udGV4dCdzIHotb3JkZXIgbGlzdC4KLSAgICBSZW5kZXJTdHlsZSogb2xkU3R5bGUgPSBz
dHlsZSgpOwotICAgIGlmIChvbGRTdHlsZSAmJiBuZXdTdHlsZSkgewotICAgICAgICBpZiAocGFy
ZW50KCkpIHsKLSAgICAgICAgICAgIC8vIERvIGEgcmVwYWludCB3aXRoIHRoZSBvbGQgc3R5bGUg
Zmlyc3QsIGUuZy4sIGZvciBleGFtcGxlIGlmIHdlIGdvIGZyb20KLSAgICAgICAgICAgIC8vIGhh
dmluZyBhbiBvdXRsaW5lIHRvIG5vdCBoYXZpbmcgYW4gb3V0bGluZS4KLSAgICAgICAgICAgIGlm
IChkaWZmID09IFN0eWxlRGlmZmVyZW5jZVJlcGFpbnRMYXllcikgewotICAgICAgICAgICAgICAg
IGxheWVyKCktPnJlcGFpbnRJbmNsdWRpbmdEZXNjZW5kYW50cygpOwotICAgICAgICAgICAgICAg
IGlmICghKG9sZFN0eWxlLT5jbGlwKCkgPT0gbmV3U3R5bGUtPmNsaXAoKSkpCi0gICAgICAgICAg
ICAgICAgICAgIGxheWVyKCktPmNsZWFyQ2xpcFJlY3RzSW5jbHVkaW5nRGVzY2VuZGFudHMoKTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VSZXBhaW50IHx8
IG5ld1N0eWxlLT5vdXRsaW5lU2l6ZSgpIDwgb2xkU3R5bGUtPm91dGxpbmVTaXplKCkpCi0gICAg
ICAgICAgICAgICAgcmVwYWludCgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAo
ZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VMYXlvdXQgfHwgZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VT
aW1wbGlmaWVkTGF5b3V0KSB7Ci0gICAgICAgICAgICAvLyBXaGVuIGEgbGF5b3V0IGhpbnQgaGFw
cGVucywgd2UgZ28gYWhlYWQgYW5kIGRvIGEgcmVwYWludCBvZiB0aGUgbGF5ZXIsIHNpbmNlIHRo
ZSBsYXllciBjb3VsZAotICAgICAgICAgICAgLy8gZW5kIHVwIGJlaW5nIGRlc3Ryb3llZC4KLSAg
ICAgICAgICAgIGlmIChoYXNMYXllcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9sZFN0eWxl
LT5wb3NpdGlvbigpICE9IG5ld1N0eWxlLT5wb3NpdGlvbigpCi0gICAgICAgICAgICAgICAgICAg
IHx8IG9sZFN0eWxlLT56SW5kZXgoKSAhPSBuZXdTdHlsZS0+ekluZGV4KCkKLSAgICAgICAgICAg
ICAgICAgICAgfHwgb2xkU3R5bGUtPmhhc0F1dG9aSW5kZXgoKSAhPSBuZXdTdHlsZS0+aGFzQXV0
b1pJbmRleCgpCi0gICAgICAgICAgICAgICAgICAgIHx8ICEob2xkU3R5bGUtPmNsaXAoKSA9PSBu
ZXdTdHlsZS0+Y2xpcCgpKQotICAgICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+aGFzQ2xp
cCgpICE9IG5ld1N0eWxlLT5oYXNDbGlwKCkKLSAgICAgICAgICAgICAgICAgICAgfHwgb2xkU3R5
bGUtPm9wYWNpdHkoKSAhPSBuZXdTdHlsZS0+b3BhY2l0eSgpCi0gICAgICAgICAgICAgICAgICAg
IHx8IG9sZFN0eWxlLT50cmFuc2Zvcm0oKSAhPSBuZXdTdHlsZS0+dHJhbnNmb3JtKCkKLSNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT5maWx0
ZXIoKSAhPSBuZXdTdHlsZS0+ZmlsdGVyKCkKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAp
Ci0gICAgICAgICAgICAgICAgbGF5ZXIoKS0+cmVwYWludEluY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG5ld1N0eWxlLT5oYXNUcmFuc2Zvcm0oKSB8fCBuZXdT
dHlsZS0+b3BhY2l0eSgpIDwgMSB8fCBuZXdTdHlsZS0+aGFzRmlsdGVyKCkpIHsKLSAgICAgICAg
ICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgbGF5ZXIgeWV0LCBidXQgd2UgYXJlIGdvaW5n
IHRvIGdldCBvbmUgYmVjYXVzZSBvZiB0cmFuc2Zvcm0gb3Igb3BhY2l0eSwKLSAgICAgICAgICAg
ICAgICAvLyAgdGhlbiB3ZSBuZWVkIHRvIHJlcGFpbnQgdGhlIG9sZCBwb3NpdGlvbiBvZiB0aGUg
b2JqZWN0LgotICAgICAgICAgICAgICAgIHJlcGFpbnQoKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQotICAgIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIG5l
d1N0eWxlKTsKKyAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKTsK
IH0KIAotdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKK3ZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnVwZGF0ZUZyb21TdHlsZSgpCiB7Ci0gICAgUmVuZGVyT2JqZWN0OjpzdHls
ZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7Ci0gICAgdXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0
eWxlKCk7Ci0gICAgCi0gICAgaWYgKHJlcXVpcmVzTGF5ZXIoKSkgewotICAgICAgICBpZiAoIWxh
eWVyKCkgJiYgbGF5ZXJDcmVhdGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkpIHsKLSAgICAgICAgICAg
IGlmIChzX3dhc0Zsb2F0aW5nICYmIGlzRmxvYXRpbmcoKSkKLSAgICAgICAgICAgICAgICBzZXRD
aGlsZE5lZWRzTGF5b3V0KHRydWUpOwotICAgICAgICAgICAgbV9sYXllciA9IG5ldyAocmVuZGVy
QXJlbmEoKSkgUmVuZGVyTGF5ZXIodGhpcyk7Ci0gICAgICAgICAgICBzZXRIYXNMYXllcih0cnVl
KTsKLSAgICAgICAgICAgIG1fbGF5ZXItPmluc2VydE9ubHlUaGlzTGF5ZXIoKTsKLSAgICAgICAg
ICAgIGlmIChwYXJlbnQoKSAmJiAhbmVlZHNMYXlvdXQoKSAmJiBjb250YWluaW5nQmxvY2soKSkg
ewotICAgICAgICAgICAgICAgIG1fbGF5ZXItPnNldFJlcGFpbnRTdGF0dXMoTmVlZHNGdWxsUmVw
YWludCk7Ci0gICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgb25seSBvbmUgbGF5ZXIgdG8gdXBk
YXRlLCBpdCBpcyBub3Qgd29ydGggdXNpbmcgfGNhY2hlZE9mZnNldHwgc2luY2UKLSAgICAgICAg
ICAgICAgICAvLyB3ZSBhcmUgbm90IHN1cmUgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZC4KLSAgICAg
ICAgICAgICAgICBtX2xheWVyLT51cGRhdGVMYXllclBvc2l0aW9ucygwKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAobGF5ZXIoKSAmJiBsYXllcigpLT5wYXJlbnQo
KSkgewotICAgICAgICBzZXRIYXNUcmFuc2Zvcm0oZmFsc2UpOyAvLyBFaXRoZXIgYSB0cmFuc2Zv
cm0gd2Fzbid0IHNwZWNpZmllZCBvciB0aGUgb2JqZWN0IGRvZXNuJ3Qgc3VwcG9ydCB0cmFuc2Zv
cm1zLCBzbyBqdXN0IG51bGwgb3V0IHRoZSBiaXQuCi0gICAgICAgIHNldEhhc1JlZmxlY3Rpb24o
ZmFsc2UpOwotICAgICAgICBtX2xheWVyLT5yZW1vdmVPbmx5VGhpc0xheWVyKCk7IC8vIGNhbGxz
IGRlc3Ryb3lMYXllcigpIHdoaWNoIGNsZWFycyBtX2xheWVyCi0gICAgICAgIGlmIChzX3dhc0Zs
b2F0aW5nICYmIGlzRmxvYXRpbmcoKSkKLSAgICAgICAgICAgIHNldENoaWxkTmVlZHNMYXlvdXQo
dHJ1ZSk7Ci0gICAgICAgIGlmIChzX2hhZFRyYW5zZm9ybSkKLSAgICAgICAgICAgIHNldE5lZWRz
TGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwotICAgIH0KLQotICAgIGlmIChsYXllcigpKSB7
Ci0gICAgICAgIGxheWVyKCktPnN0eWxlQ2hhbmdlZChkaWZmLCBvbGRTdHlsZSk7Ci0gICAgICAg
IGlmIChzX2hhZExheWVyICYmIGxheWVyKCktPmlzU2VsZlBhaW50aW5nTGF5ZXIoKSAhPSBzX2xh
eWVyV2FzU2VsZlBhaW50aW5nKQotICAgICAgICAgICAgc2V0Q2hpbGROZWVkc0xheW91dCh0cnVl
KTsKLSAgICB9Ci0KLSAgICBpZiAoRnJhbWVWaWV3ICpmcmFtZVZpZXcgPSB2aWV3KCktPmZyYW1l
VmlldygpKSB7Ci0gICAgICAgIGJvb2wgbmV3U3R5bGVJc1ZpZXdwb3J0Q29uc3RhaW5lZCA9IHN0
eWxlKCktPmhhc1ZpZXdwb3J0Q29uc3RyYWluZWRQb3NpdGlvbigpOwotICAgICAgICBib29sIG9s
ZFN0eWxlSXNWaWV3cG9ydENvbnN0cmFpbmVkID0gb2xkU3R5bGUgJiYgb2xkU3R5bGUtPmhhc1Zp
ZXdwb3J0Q29uc3RyYWluZWRQb3NpdGlvbigpOwotICAgICAgICBpZiAobmV3U3R5bGVJc1ZpZXdw
b3J0Q29uc3RhaW5lZCAhPSBvbGRTdHlsZUlzVmlld3BvcnRDb25zdHJhaW5lZCkgewotICAgICAg
ICAgICAgaWYgKG5ld1N0eWxlSXNWaWV3cG9ydENvbnN0YWluZWQgJiYgbGF5ZXIoKSkKLSAgICAg
ICAgICAgICAgICBmcmFtZVZpZXctPmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QodGhpcyk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5yZW1vdmVWaWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0KHRoaXMpOwotICAgICAgICB9Ci0gICAgfQotfQorICAgIFJl
bmRlckxheWVyTW9kZWxPYmplY3Q6OnVwZGF0ZUZyb21TdHlsZSgpOwogCi12b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0Ojp1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKQotewogICAgIC8vIFNl
dCB0aGUgYXBwcm9wcmlhdGUgYml0cyBmb3IgYSBib3ggbW9kZWwgb2JqZWN0LiAgU2luY2UgYWxs
IGJpdHMgYXJlIGNsZWFyZWQgaW4gc3R5bGVXaWxsQ2hhbmdlLAogICAgIC8vIHdlIG9ubHkgY2hl
Y2sgZm9yIGJpdHMgdGhhdCBjb3VsZCBwb3NzaWJseSBiZSBzZXQgdG8gdHJ1ZS4KICAgICBSZW5k
ZXJTdHlsZSogc3R5bGVUb1VzZSA9IHN0eWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDZlZTM1NGM5YWM4OTJkZjg5N2M5YWVj
YjEzM2RlMGIxMTlmZGFiYTUuLjRmNWMwNTIwYjBhODU3NmY0OWI4ZDRkOTIwMTI1ZmFkODFiZTc1
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oCkBAIC0yNSw3ICsyNSw3IEBACiAjZGVmaW5lIFJlbmRlckJveE1vZGVsT2JqZWN0X2gKIAog
I2luY2x1ZGUgIkxheW91dFR5cGVzSW5saW5lTWV0aG9kcy5oIgotI2luY2x1ZGUgIlJlbmRlck9i
amVjdC5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKICNpbmNsdWRlICJT
aGFkb3dEYXRhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU2LDcgKzU2LDcgQEAgY2xh
c3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwogLy8gVGhpcyBjbGFzcyBpcyB0
aGUgYmFzZSBmb3IgYWxsIG9iamVjdHMgdGhhdCBhZGhlcmUgdG8gdGhlIENTUyBib3ggbW9kZWwg
YXMgZGVzY3JpYmVkCiAvLyBhdCBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9ib3guaHRtbAog
Ci1jbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdCA6IHB1YmxpYyBSZW5kZXJPYmplY3QgeworY2xh
c3MgUmVuZGVyQm94TW9kZWxPYmplY3QgOiBwdWJsaWMgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCB7
CiBwdWJsaWM6CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QoTm9kZSopOwogICAgIHZpcnR1YWwg
flJlbmRlckJveE1vZGVsT2JqZWN0KCk7CkBAIC04MiwxNCArODIsOSBAQCBwdWJsaWM6CiAgICAg
aW50IHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCkgY29uc3Q7CiAgICAgaW50IHBpeGVsU25hcHBl
ZE9mZnNldEhlaWdodCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5n
ZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSkgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Qm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21TdHls
ZSgpIE9WRVJSSURFOwogCi0gICAgYm9vbCBoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0Owot
ICAgIFJlbmRlckxheWVyKiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXI7IH0KLQotICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gaXNSb290KCkgfHwg
aXNQb3NpdGlvbmVkKCkgfHwgY3JlYXRlc0dyb3VwKCkgfHwgaGFzQ2xpcFBhdGgoKSB8fCBoYXNU
cmFuc2Zvcm0oKSB8fCBoYXNIaWRkZW5CYWNrZmFjZSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBz
dHlsZSgpLT5zcGVjaWZpZXNDb2x1bW5zKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNM
YXllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGlzUm9vdCgpIHx8IGlzUG9zaXRpb25lZCgp
IHx8IGNyZWF0ZXNHcm91cCgpIHx8IGhhc0NsaXBQYXRoKCkgfHwgaGFzVHJhbnNmb3JtKCkgfHwg
aGFzSGlkZGVuQmFja2ZhY2UoKSB8fCBoYXNSZWZsZWN0aW9uKCkgfHwgc3R5bGUoKS0+c3BlY2lm
aWVzQ29sdW1ucygpOyB9CiAKICAgICAvLyBUaGlzIHdpbGwgd29yayBvbiBpbmxpbmVzIHRvIHJl
dHVybiB0aGUgYm91bmRpbmcgYm94IG9mIGFsbCBvZiB0aGUgbGluZXMnIGJvcmRlciBib3hlcy4K
ICAgICB2aXJ0dWFsIEludFJlY3QgYm9yZGVyQm91bmRpbmdCb3goKSBjb25zdCA9IDA7CkBAIC0x
NjUsOSArMTYwLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9M
b2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUm
KSBjb25zdCBPVkVSUklERTsKIAotICAgIC8vIENhbGxlZCBieSBSZW5kZXJPYmplY3Q6OndpbGxC
ZURlc3Ryb3llZCgpIGFuZCBpcyB0aGUgb25seSB3YXkgbGF5ZXJzIHNob3VsZCBldmVyIGJlIGRl
c3Ryb3llZAotICAgIHZvaWQgZGVzdHJveUxheWVyKCk7Ci0KICAgICB2b2lkIGhpZ2hRdWFsaXR5
UmVwYWludFRpbWVyRmlyZWQoVGltZXI8UmVuZGVyQm94TW9kZWxPYmplY3Q+Kik7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgcyk7CkBAIC0zMDgs
MTAgKzMwMCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
dGhpY2tuZXNzLCBmbG9hdCBkcmF3VGhpY2tuZXNzLCBCb3hTaWRlLCBjb25zdCBSZW5kZXJTdHls
ZSosIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yLCBFQm9yZGVyU3R5bGUsIEJh
Y2tncm91bmRCbGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29s
IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAotICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJWaWV3
OwotCi0gICAgUmVuZGVyTGF5ZXIqIG1fbGF5ZXI7Ci0gICAgCiAgICAgLy8gVXNlZCB0byBzdG9y
ZSBzdGF0ZSBiZXR3ZWVuIHN0eWxlV2lsbENoYW5nZSBhbmQgc3R5bGVEaWRDaGFuZ2UKICAgICBz
dGF0aWMgYm9vbCBzX3dhc0Zsb2F0aW5nOwogICAgIHN0YXRpYyBib29sIHNfaGFkTGF5ZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAppbmRleCBm
ZTE2YjliOGU3MjM2YzMwOGE0YjcxYWRhZmZiMjY1MzU2MDJlYWY4Li4xODk1NGNhZWNhYjdlZjE3
YjNiYTQyN2VjNjBhZmU4ZGMwYTI3ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFJlbmRlckdl
b21ldHJ5TWFwOjptYXBUb0Fic29sdXRlKFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSkg
Y29uc3QKICAgICB0cmFuc2Zvcm1TdGF0ZS5mbGF0dGVuKCk7ICAgIAogfQogCi12b2lkIFJlbmRl
ckdlb21ldHJ5TWFwOjpwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyKQor
dm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3Rv
clJlbmRlcmVyKQogewogICAgIC8vIFdlIG5lZWQgdG8gcHVzaCBtYXBwaW5ncyBpbiByZXZlcnNl
IG9yZGVyIGhlcmUsIHNvIGRvIGluc2VydGlvbnMgcmF0aGVyIHRoYW4gYXBwZW5kcy4KICAgICBU
ZW1wb3JhcnlDaGFuZ2U8c2l6ZV90PiBwb3NpdGlvbkNoYW5nZShtX2luc2VydGlvblBvc2l0aW9u
LCBtX21hcHBpbmcuc2l6ZSgpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFJlbmRlckdlb21l
dHJ5TWFwOjpwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwg
Y29uc3QgUgogICAgICAgICBwdXNoKHJlbmRlcmVyLCB0b0xheW91dFNpemUobGF5ZXJPZmZzZXQp
LCAvKmFjY3VtdWxhdGluZ1RyYW5zZm9ybSovIHRydWUsIC8qaXNOb25Vbmlmb3JtKi8gZmFsc2Us
IC8qaXNGaXhlZFBvc2l0aW9uKi8gZmFsc2UsIC8qaGFzVHJhbnNmb3JtKi8gZmFsc2UpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNl
c3RvclJlbmRlcmVyID0gYW5jZXN0b3JMYXllciA/IGFuY2VzdG9yTGF5ZXItPnJlbmRlcmVyKCkg
OiAwOworICAgIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIg
PSBhbmNlc3RvckxheWVyID8gYW5jZXN0b3JMYXllci0+cmVuZGVyZXIoKSA6IDA7CiAgICAgcHVz
aE1hcHBpbmdzVG9BbmNlc3RvcihyZW5kZXJlciwgYW5jZXN0b3JSZW5kZXJlcik7CiB9CiAKQEAg
LTIxOCw3ICsyMTgsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyhjb25zdCBS
ZW5kZXJWaWV3KiB2aWV3LCBjb25zdCBMYXlvdXRTaXplJiBzY3JvbAogICAgIHN0ZXBJbnNlcnRl
ZChzdGVwKTsKIH0KIAotdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cG9wTWFwcGluZ3NUb0FuY2Vz
dG9yKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclJlbmRlcmVyKQordm9pZCBS
ZW5kZXJHZW9tZXRyeU1hcDo6cG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIpCiB7CiAgICAgQVNTRVJUKG1fbWFwcGluZy5z
aXplKCkpOwogCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cG9w
TWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3QKIAog
dm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRl
ckxheWVyKiBhbmNlc3RvckxheWVyKQogewotICAgIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0
KiBhbmNlc3RvclJlbmRlcmVyID0gYW5jZXN0b3JMYXllciA/IGFuY2VzdG9yTGF5ZXItPnJlbmRl
cmVyKCkgOiAwOworICAgIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yUmVu
ZGVyZXIgPSBhbmNlc3RvckxheWVyID8gYW5jZXN0b3JMYXllci0+cmVuZGVyZXIoKSA6IDA7CiAg
ICAgcG9wTWFwcGluZ3NUb0FuY2VzdG9yKGFuY2VzdG9yUmVuZGVyZXIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5oCmluZGV4IDQ5NWQwYmYyMmQ3
N2VmNmVkN2ZiNGJiYjAyMDIwNDA3YTA3MmZkZTcuLmRmZmM1MDI2ZjJiMmNlOTk3ZjQxMjk2YWNl
NDQxNGEwZjk2ZmQ1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHZW9tZXRyeU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9t
ZXRyeU1hcC5oCkBAIC0zNSw4ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgUmVuZGVyQm94TW9kZWxPYmplY3Q7CiBjbGFzcyBSZW5kZXJMYXllcjsKK2NsYXNzIFJlbmRl
ckxheWVyTW9kZWxPYmplY3Q7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJWaWV3
OwogY2xhc3MgVHJhbnNmb3JtU3RhdGU7CkBAIC04Myw4ICs4Myw4IEBAIHB1YmxpYzoKICAgICAv
LyBDYWxsZWQgYnkgY29kZSB3YWxraW5nIHRoZSByZW5kZXJlciBvciBsYXllciB0cmVlcy4KICAg
ICB2b2lkIHB1c2hNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5ZXIqLCBjb25zdCBS
ZW5kZXJMYXllciogYW5jZXN0b3JMYXllcik7CiAgICAgdm9pZCBwb3BNYXBwaW5nc1RvQW5jZXN0
b3IoY29uc3QgUmVuZGVyTGF5ZXIqKTsKLSAgICB2b2lkIHB1c2hNYXBwaW5nc1RvQW5jZXN0b3Io
Y29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9y
UmVuZGVyZXIpOwotICAgIHZvaWQgcG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckJv
eE1vZGVsT2JqZWN0Kik7CisgICAgdm9pZCBwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJl
bmRlck9iamVjdCosIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yUmVuZGVy
ZXIpOworICAgIHZvaWQgcG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqKTsKICAgICAKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgc2hvdWxkIG9u
bHkgYmUgY2FsbGVkIGJ5IHJlbmRlcmVycyBpbnNpZGUgYSBjYWxsIHRvIHB1c2hNYXBwaW5nc1Rv
QW5jZXN0b3IoKS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApp
bmRleCAyMzlhYmEzNzAwOGUxMDdmNmJjNDkyZWM1YzM0MGI5MjBiMWZiYmVjLi5mZTk2MTc2MTQz
ZGY1ODZmOThiOTcyMGEzNTJlNzNmMDdlMGRkMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcApAQCAtMTE4LDkgKzExOCw5IEBAIFJlbmRlcklubGluZSogUmVu
ZGVySW5saW5lOjppbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkgY29uc3QKICAgICByZXR1cm4g
dG9SZW5kZXJCbG9jayhjb250aW51YXRpb24pLT5pbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCk7
CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjp1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKQor
dm9pZCBSZW5kZXJJbmxpbmU6OnVwZGF0ZUZyb21TdHlsZSgpCiB7Ci0gICAgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOworICAgIFJlbmRlckJveE1v
ZGVsT2JqZWN0Ojp1cGRhdGVGcm9tU3R5bGUoKTsKIAogICAgIHNldElubGluZSh0cnVlKTsgLy8g
TmVlZGVkIGZvciBydW4taW5zLCBzaW5jZSBydW4taW4gaXMgY29uc2lkZXJlZCBhIGJsb2NrIGRp
c3BsYXkgdHlwZS4KIApAQCAtOTYwLDcgKzk2MCw3IEBAIExheW91dFJlY3QgUmVuZGVySW5saW5l
OjpsaW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBjb25zdAogICAgIHJldHVybiByZWN0
OwogfQogCi1MYXlvdXRSZWN0IFJlbmRlcklubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJl
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlv
dXRSZWN0IFJlbmRlcklubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICAvLyBPbmx5
IHJ1bi1pbnMgYXJlIGFsbG93ZWQgaW4gaGVyZSBkdXJpbmcgbGF5b3V0LgogICAgIEFTU0VSVCgh
dmlldygpIHx8ICF2aWV3KCktPmxheW91dFN0YXRlRW5hYmxlZCgpIHx8IGlzUnVuSW4oKSk7CkBA
IC0xMDExLDcgKzEwMTEsNyBAQCBMYXlvdXRSZWN0IFJlbmRlcklubGluZTo6Y2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcAogICAgIHJldHVybiBy
ZXBhaW50UmVjdDsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OnJlY3RXaXRoT3V0bGlu
ZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91
dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OnJlY3RX
aXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCBy
KFJlbmRlckJveE1vZGVsT2JqZWN0OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KHJlcGFpbnRD
b250YWluZXIsIG91dGxpbmVXaWR0aCkpOwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyID0g
Zmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmcoKSkgewpAQCAtMTAy
MSw3ICsxMDIxLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OnJlY3RXaXRoT3V0bGluZUZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnQKICAgICByZXR1cm4gcjsKIH0K
IAotdm9pZCBSZW5kZXJJbmxpbmU6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkg
Y29uc3QKK3ZvaWQgUmVuZGVySW5saW5lOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBm
aXhlZCkgY29uc3QKIHsKICAgICBpZiAoUmVuZGVyVmlldyogdiA9IHZpZXcoKSkgewogICAgICAg
ICAvLyBMYXlvdXRTdGF0ZSBpcyBvbmx5IHZhbGlkIGZvciByb290LXJlbGF0aXZlIHJlcGFpbnRp
bmcKQEAgLTExMDMsNyArMTEwMyw3IEBAIExheW91dFNpemUgUmVuZGVySW5saW5lOjpvZmZzZXRG
cm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCogY29udGFpbmVyLCBjb25zdCBMYXlvCiAgICAgcmV0
dXJuIG9mZnNldDsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0
cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdAordm9pZCBSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5z
Zm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXIgPT0gdGhpcykKICAgICAgICAgcmV0
dXJuOwpAQCAtMTE1NSw3ICsxMTU1LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9D
b250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFQKICAgICBv
LT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBt
b2RlLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVySW5saW5lOjpw
dXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3Rv
clRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBS
ZW5kZXJPYmplY3QqIFJlbmRlcklubGluZTo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1h
cCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgQVNTRVJUKGFuY2VzdG9yVG9TdG9wQXQgIT0g
dGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxp
bmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCA0YTVi
YjA5ZGM1NjU5YzE2ZTc0MDljMGFhOTI1ZWJhNWZiZjRmMTNmLi4zMDJjZjE2Mjc3NjhiNjVmMWMy
ZmZmMmU5NjQwMzUwNjU2ZGU5MTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5oCkBAIC0xMzEsMTIgKzEzMSwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBvZmZzZXRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGxpbmVzQm91bmRpbmdCb3goKS53aWR0
aCgpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldEhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIGxpbmVzQm91bmRpbmdCb3goKS5oZWlnaHQoKTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRS
ZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgcmVjdFdpdGhP
dXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
TGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExh
eW91dFJlY3QmLCBib29sIGZpeGVkKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHJlY3RX
aXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQpIGNvbnN0IE9WRVJSSURFOwog
Ci0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5l
ckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3Jt
cywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0
IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJG
bGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMs
IGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBS
ZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBPVkVS
UklERTsKIAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmKTsKIApAQCAtMTY1LDcgKzE2NSw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGFkZERhc2hib2FyZFJlZ2lvbnMoVmVjdG9yPERhc2hib2FyZFJlZ2lvblZhbHVl
PiYpOwogI2VuZGlmCiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJveE1vZGVsSW5mb0Zy
b21TdHlsZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tU3R5bGUoKSBPVkVSUklERTsK
ICAgICAKICAgICBSZW5kZXJJbmxpbmUqIGNsb25lKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDc1OTg2MzM1ZWVmNDhiZjQ0YTQzMjcxNmQy
Yzc5NDE5OWJjNWEwZTcuLmMwMTI3N2QxM2JkMzMxNmNhZTg2YTIxMzIzYjVlYmIxNjQ3Yzk0NzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTMxLDcgKzEz
MSw3IEBAIGJvb2wgQ2xpcFJlY3Q6OmludGVyc2VjdHMoY29uc3QgSGl0VGVzdExvY2F0aW9uJiBo
aXRUZXN0TG9jYXRpb24pCiAgICAgcmV0dXJuIGhpdFRlc3RMb2NhdGlvbi5pbnRlcnNlY3RzKG1f
cmVjdCk7CiB9CiAKLVJlbmRlckxheWVyOjpSZW5kZXJMYXllcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVuZGVyZXIpCitSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogcmVuZGVyZXIpCiAgICAgOiBtX2luUmVzaXplTW9kZShmYWxzZSkKICAgICAsIG1fc2Ny
b2xsRGltZW5zaW9uc0RpcnR5KHRydWUpCiAgICAgLCBtX25vcm1hbEZsb3dMaXN0RGlydHkodHJ1
ZSkKQEAgLTM5Miw3ICszOTIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0
aW9ucyhMYXlvdXRQb2ludCogb2Zmc2V0RnJvbVJvb3QsIFVwZGF0ZUxheWVyUAogICAgICAgICAv
LyBMYXlvdXRTdGF0ZSBvdXRzaWRlIHRoZSBsYXlvdXQoKSBwaGFzZSBhbmQgdXNlIGl0IGhlcmUu
CiAgICAgICAgIEFTU0VSVCghdmlldy0+bGF5b3V0U3RhdGVFbmFibGVkKCkpOwogCi0gICAgICAg
IFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29u
dGFpbmVyRm9yUmVwYWludCgpOworICAgICAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOwogICAgICAg
ICBMYXlvdXRSZWN0IG9sZFJlcGFpbnRSZWN0ID0gbV9yZXBhaW50UmVjdDsKICAgICAgICAgTGF5
b3V0UmVjdCBvbGRPdXRsaW5lQm94ID0gbV9vdXRsaW5lQm94OwogICAgICAgICBjb21wdXRlUmVw
YWludFJlY3RzKG9mZnNldEZyb21Sb290KTsKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjpjb21wdXRlUmVwYWludFJlY3RzKExheW91dFBvaW50KiBvZmZzZXRGcm9tUm9vdCkK
IHsKICAgICBBU1NFUlQoIW1fdmlzaWJsZUNvbnRlbnRTdGF0dXNEaXJ0eSk7CiAKLSAgICBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5l
ckZvclJlcGFpbnQoKTsKKyAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyID0gcmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOwogICAgIG1fcmVwYWludFJl
Y3QgPSByZW5kZXJlcigpLT5jbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29u
dGFpbmVyKTsKICAgICBtX291dGxpbmVCb3ggPSByZW5kZXJlcigpLT5vdXRsaW5lQm91bmRzRm9y
UmVwYWludChyZXBhaW50Q29udGFpbmVyLCBvZmZzZXRGcm9tUm9vdCk7CiB9CkBAIC02MzAsMTAg
KzYzMCwxMCBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJMYXllcjo6cmVuZGVyYWJsZVRy
YW5zZm9ybShQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpbwogICAgIHJldHVybiAqbV90cmFuc2Zv
cm07CiB9CiAKLXN0YXRpYyBib29sIGNoZWNrQ29udGFpbmluZ0Jsb2NrQ2hhaW5Gb3JQYWdpbmF0
aW9uKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyQm94KiBhbmNlc3RvckNv
bHVtbnNSZW5kZXJlcikKK3N0YXRpYyBib29sIGNoZWNrQ29udGFpbmluZ0Jsb2NrQ2hhaW5Gb3JQ
YWdpbmF0aW9uKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJCb3gqIGFu
Y2VzdG9yQ29sdW1uc1JlbmRlcmVyKQogewogICAgIFJlbmRlclZpZXcqIHZpZXcgPSByZW5kZXJl
ci0+dmlldygpOwotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBwcmV2QmxvY2sgPSByZW5kZXJl
cjsKKyAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwcmV2QmxvY2sgPSByZW5kZXJlcjsKICAg
ICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrOwogICAgIGZvciAoY29udGFpbmluZ0Jsb2Nr
ID0gcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgY29udGFpbmluZ0Jsb2Nr
ICYmIGNvbnRhaW5pbmdCbG9jayAhPSB2aWV3ICYmIGNvbnRhaW5pbmdCbG9jayAhPSBhbmNlc3Rv
ckNvbHVtbnNSZW5kZXJlcjsKQEAgLTg5NCw3ICs4OTQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1
cGRhdGVMYXllclBvc2l0aW9uKCkKICAgICB9CiAgICAgCiAgICAgaWYgKHJlbmRlcmVyKCktPmlz
SW5GbG93UG9zaXRpb25lZCgpKSB7Ci0gICAgICAgIG1fb2Zmc2V0Rm9ySW5GbG93UG9zaXRpb24g
PSByZW5kZXJlcigpLT5vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbigpOworICAgICAgICBtX29mZnNl
dEZvckluRmxvd1Bvc2l0aW9uID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlcigpKS0+
b2Zmc2V0Rm9ySW5GbG93UG9zaXRpb24oKTsKICAgICAgICAgbG9jYWxQb2ludC5tb3ZlKG1fb2Zm
c2V0Rm9ySW5GbG93UG9zaXRpb24pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fb2Zmc2V0Rm9y
SW5GbG93UG9zaXRpb24gPSBMYXlvdXRTaXplKCk7CkBAIC05NTcsNyArOTU3LDcgQEAgUmVuZGVy
TGF5ZXIqIFJlbmRlckxheWVyOjpzdGFja2luZ0NvbnRleHQoKSBjb25zdAogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNQb3NpdGlvbmVkQ29udGFpbmVyKFJlbmRlckxheWVyKiBsYXllcikKIHsKLSAg
ICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbGF5ZXJSZW5kZXJlciA9IGxheWVyLT5yZW5kZXJlcigp
OworICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGxheWVyUmVuZGVyZXIgPSBsYXllci0+cmVu
ZGVyZXIoKTsKICAgICByZXR1cm4gbGF5ZXItPmlzUm9vdExheWVyKCkgfHwgbGF5ZXJSZW5kZXJl
ci0+aXNQb3NpdGlvbmVkKCkgfHwgbGF5ZXItPmhhc1RyYW5zZm9ybSgpOwogfQogCkBAIC0xMTM1
LDcgKzExMzUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzZXRGaWx0ZXJCYWNrZW5kTmVlZHNSZXBh
aW50aW5nSW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QsCiBib29sIFJlbmRlckxheWVyOjpo
YXNBbmNlc3RvcldpdGhGaWx0ZXJPdXRzZXRzKCkgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0IFJl
bmRlckxheWVyKiBjdXJyID0gdGhpczsgY3VycjsgY3VyciA9IGN1cnItPnBhcmVudCgpKSB7Ci0g
ICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciA9IGN1cnItPnJlbmRlcmVyKCk7
CisgICAgICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlbmRlcmVyID0gY3Vyci0+cmVuZGVy
ZXIoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT5oYXNGaWx0ZXJPdXRzZXRzKCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNzM1LDcgKzE3MzUsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpCiAgICAgICAgIHVwZGF0ZUNv
bXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGwoKTsKICAgICB9CiAKLSAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5lckZvclJlcGFp
bnQoKTsKKyAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gcmVu
ZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOwogICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRl
cmVyKCktPmZyYW1lKCk7CiAgICAgaWYgKGZyYW1lKSB7CiAgICAgICAgIC8vIFRoZSBjYXJldCBy
ZWN0IG5lZWRzIHRvIGJlIGludmFsaWRhdGVkIGFmdGVyIHNjcm9sbGluZwpAQCAtNDcwNCw3ICs0
NzA0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0QmFja2luZ05lZWRzUmVwYWludEluUmVjdChj
b25zdCBMYXlvdXRSZWN0JiByKQogfQogCiAvLyBTaW5jZSB3ZSdyZSBvbmx5IHBhaW50aW5nIG5v
bi1jb21wb3NpdGVkIGxheWVycywgd2Uga25vdyB0aGF0IHRoZXkgYWxsIHNoYXJlIHRoZSBzYW1l
IHJlcGFpbnRDb250YWluZXIuCi12b2lkIFJlbmRlckxheWVyOjpyZXBhaW50SW5jbHVkaW5nTm9u
Q29tcG9zaXRpbmdEZXNjZW5kYW50cyhSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lcikKK3ZvaWQgUmVuZGVyTGF5ZXI6OnJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rl
c2NlbmRhbnRzKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCiB7CiAg
ICAgcmVuZGVyZXIoKS0+cmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHBp
eGVsU25hcHBlZEludFJlY3QocmVuZGVyZXIoKS0+Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQocmVwYWludENvbnRhaW5lcikpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaAppbmRleCA5NzBiMTY0M2U3YjllYWI4MjgzNTNkNDE5OTBjZmMyZWExNGEzOTZlLi5jM2Ri
OTZkMWRlZDY1NjBmOWVhNDFlNjNkODA1N2I4MWM4OWU4YjNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMjUxLDEwICsyNTEsMTAgQEAgY2xhc3MgUmVuZGVyTGF5
ZXIgOiBwdWJsaWMgU2Nyb2xsYWJsZUFyZWEgewogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBS
ZW5kZXJSZXBsaWNhOwogCi0gICAgUmVuZGVyTGF5ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqKTsK
KyAgICBSZW5kZXJMYXllcihSZW5kZXJMYXllck1vZGVsT2JqZWN0Kik7CiAgICAgflJlbmRlckxh
eWVyKCk7CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJl
dHVybiBtX3JlbmRlcmVyOyB9CisgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVuZGVyZXIo
KSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyOyB9CiAgICAgUmVuZGVyQm94KiByZW5kZXJCb3go
KSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyICYmIG1fcmVuZGVyZXItPmlzQm94KCkgPyB0b1Jl
bmRlckJveChtX3JlbmRlcmVyKSA6IDA7IH0KICAgICBSZW5kZXJMYXllciogcGFyZW50KCkgY29u
c3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAgICBSZW5kZXJMYXllciogcHJldmlvdXNTaWJsaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91czsgfQpAQCAtMjc1LDcgKzI3NSw3IEBAIHB1Ymxp
YzoKICAgICAvLyBpZiBsYXllciBjb21wb3NpdGluZyBpcyBiZWluZyB1c2VkLAogICAgIHZvaWQg
c2V0QmFja2luZ05lZWRzUmVwYWludCgpOwogICAgIHZvaWQgc2V0QmFja2luZ05lZWRzUmVwYWlu
dEluUmVjdChjb25zdCBMYXlvdXRSZWN0Jik7IC8vIHIgaXMgaW4gdGhlIGNvb3JkaW5hdGUgc3Bh
Y2Ugb2YgdGhlIGxheWVyJ3MgcmVuZGVyIG9iamVjdAotICAgIHZvaWQgcmVwYWludEluY2x1ZGlu
Z05vbkNvbXBvc2l0aW5nRGVzY2VuZGFudHMoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIpOworICAgIHZvaWQgcmVwYWludEluY2x1ZGluZ05vbkNvbXBvc2l0aW5nRGVzY2Vu
ZGFudHMoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7CiAjZW5kaWYK
IAogICAgIHZvaWQgc3R5bGVDaGFuZ2VkKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5
bGUqIG9sZFN0eWxlKTsKQEAgLTg4Miw3ICs4ODIsNyBAQCBwcml2YXRlOgogCiAgICAgZnJpZW5k
IGNsYXNzIFJlbmRlckxheWVyQmFja2luZzsKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOwotICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdDsKKyAgICBm
cmllbmQgY2xhc3MgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDsKIAogICAgIC8vIE9ubHkgc2FmZSB0
byBjYWxsIGZyb20gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcihSZW5kZXJBcmVu
YSopCiAgICAgdm9pZCBkZXN0cm95KFJlbmRlckFyZW5hKik7CkBAIC05NTYsNyArOTU2LDcgQEAg
cHJvdGVjdGVkOgogICAgIEJsZW5kTW9kZSBtX2JsZW5kTW9kZTsKICNlbmRpZgogCi0gICAgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogbV9yZW5kZXJlcjsKIAogICAgIFJlbmRlckxheWVyKiBtX3BhcmVudDsKICAgICBSZW5kZXJM
YXllciogbV9wcmV2aW91czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuaAppbmRleCA3ODIzMjcwOWY4ZjNjNDQ1MjVmNTczYmVhZDlkMzBiNDI4ZGE1YWMy
Li4zNzU5MDg0ODk4ZTQ1YjBhMDk1Zjg0MGRiNDdkZjA3ZDI3NmFkMjIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCkBAIC0xODAsNyArMTgwLDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IGNyZWF0ZUdy
YXBoaWNzTGF5ZXIoY29uc3QgU3RyaW5nJik7CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX293bmluZ0xheWVyLT5yZW5kZXJlcigpOyB9Cisg
ICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX293
bmluZ0xheWVyLT5yZW5kZXJlcigpOyB9CiAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBjb21w
b3NpdG9yKCkgY29uc3QgeyByZXR1cm4gbV9vd25pbmdMYXllci0+Y29tcG9zaXRvcigpOyB9CiAK
ICAgICB2b2lkIHVwZGF0ZUludGVybmFsSGllcmFyY2h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGY5NjcyMzNlZjdl
NTU5MjBjYjRkZTliZDgwMmQ2NTg4MWQwOTY3YzYuLjQ1NDFmODk2NmQyMzU1OWEyMTVmZTg3MDg0
ODBkYjczNmVmZGUwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC01MDcsNyArNTA3LDcgQEAgYm9vbCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcoUmVuZGVyTGF5ZXIqIGxheWVyLCBDb21wb3NpdGlu
Z0NoYW5nZVIKICAgICAgICAgICAgIC8vIGl0cyByZXBsaWNhIEdyYXBoaWNzTGF5ZXIuIEluIHBy
YWN0aWNlIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBiZWNhdXNlIHJlZmxlY3RlZSBhbmQgcmVm
bGVjdGlvbiAKICAgICAgICAgICAgIC8vIGFyZSBib3RoIGVpdGhlciBjb21wb3NpdGVkLCBvciBu
b3QgY29tcG9zaXRlZC4KICAgICAgICAgICAgIGlmIChsYXllci0+aXNSZWZsZWN0aW9uKCkpIHsK
LSAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogc291cmNlTGF5ZXIgPSB0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KGxheWVyLT5yZW5kZXJlcigpLT5wYXJlbnQoKSktPmxheWVyKCk7CisgICAgICAg
ICAgICAgICAgUmVuZGVyTGF5ZXIqIHNvdXJjZUxheWVyID0gdG9SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KGxheWVyLT5yZW5kZXJlcigpLT5wYXJlbnQoKSktPmxheWVyKCk7CiAgICAgICAgICAgICAg
ICAgaWYgKFJlbmRlckxheWVyQmFja2luZyogYmFja2luZyA9IHNvdXJjZUxheWVyLT5iYWNraW5n
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIo
KS0+cmVwbGljYUxheWVyKCkgPT0gbGF5ZXItPmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpKTsK
ICAgICAgICAgICAgICAgICAgICAgYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5zZXRSZXBsaWNh
dGVkQnlMYXllcigwKTsKQEAgLTU3MCw3ICs1NzAsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cmVwYWludE9uQ29tcG9zaXRpbmdDaGFuZ2UoUmVuZGVyTGF5ZXIqIGxheWVyKQogICAg
IGlmIChsYXllci0+cmVuZGVyZXIoKSAhPSBtX3JlbmRlclZpZXcgJiYgIWxheWVyLT5yZW5kZXJl
cigpLT5wYXJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIgPSBsYXllci0+cmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVw
YWludCgpOworICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBs
YXllci0+cmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOwogICAgIGlmICghcmVwYWlu
dENvbnRhaW5lcikKICAgICAgICAgcmVwYWludENvbnRhaW5lciA9IG1fcmVuZGVyVmlldzsKIApA
QCAtMTQzOSw3ICsxNDM5LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVz
Q29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciogbGF5ZXIpIGMKICAgICAvLyBUaGUg
Y29tcG9zaXRpbmcgc3RhdGUgb2YgYSByZWZsZWN0aW9uIHNob3VsZCBtYXRjaCB0aGF0IG9mIGl0
cyByZWZsZWN0ZWQgbGF5ZXIuCiAgICAgaWYgKGxheWVyLT5pc1JlZmxlY3Rpb24oKSkgewogICAg
ICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsgLy8gVGhlIFJlbmRlclJlcGxpY2En
cyBwYXJlbnQgaXMgdGhlIG9iamVjdCBiZWluZyByZWZsZWN0ZWQuCi0gICAgICAgIGxheWVyID0g
dG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlciktPmxheWVyKCk7CisgICAgICAgIGxheWVy
ID0gdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHJlbmRlcmVyKS0+bGF5ZXIoKTsKICAgICB9CiAg
ICAgLy8gVGhlIHJvb3QgbGF5ZXIgYWx3YXlzIGhhcyBhIGNvbXBvc2l0aW5nIGxheWVyLCBidXQg
aXQgbWF5IG5vdCBoYXZlIGJhY2tpbmcuCiAgICAgcmV0dXJuIHJlcXVpcmVzQ29tcG9zaXRpbmdG
b3JUcmFuc2Zvcm0ocmVuZGVyZXIpCkBAIC0xNTA4LDcgKzE1MDgsNyBAQCBjb25zdCBjaGFyKiBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbkZvckNvbXBvc2l0aW5nKGNvbnN0IFJlbmRlckxh
eWVyKiBsYXllcgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBsYXllci0+cmVuZGVyZXIo
KTsKICAgICBpZiAobGF5ZXItPmlzUmVmbGVjdGlvbigpKSB7CiAgICAgICAgIHJlbmRlcmVyID0g
cmVuZGVyZXItPnBhcmVudCgpOwotICAgICAgICBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmpl
Y3QocmVuZGVyZXIpLT5sYXllcigpOworICAgICAgICBsYXllciA9IHRvUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdChyZW5kZXJlciktPmxheWVyKCk7CiAgICAgfQogCiAgICAgaWYgKHJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JUcmFuc2Zvcm0ocmVuZGVyZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlYjMyYjdh
MmUzZmQ1YzAwOTgxMzAyYjBkNzM2MmIzZjY2NjNlNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKQEAgLTAsMCAr
MSwxNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2Rl
Lm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2Rl
Lm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBj
YXJld29sZi5jb20pCisgKiAgICAgICAgICAgKEMpIDIwMDUsIDIwMDYgU2FtdWVsIFdlaW5pZyAo
c2FtLndlaW5pZ0BnbWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllck1vZGVsT2JqZWN0LmgiCisKKyNpbmNs
dWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIFJlbmRlckxheWVyTW9k
ZWxPYmplY3Q6OnNfd2FzRmxvYXRpbmcgPSBmYWxzZTsKK2Jvb2wgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdDo6c19oYWRMYXllciA9IGZhbHNlOworYm9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojpz
X2hhZFRyYW5zZm9ybSA9IGZhbHNlOworYm9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzX2xh
eWVyV2FzU2VsZlBhaW50aW5nID0gZmFsc2U7CisKK1JlbmRlckxheWVyTW9kZWxPYmplY3Q6OlJl
bmRlckxheWVyTW9kZWxPYmplY3QoTm9kZSogbm9kZSkKKyAgICA6IFJlbmRlck9iamVjdChub2Rl
KQorICAgICwgbV9sYXllcigwKQoreworfQorCitSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojp+UmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCgpCit7CisgICAgLy8gT3VyIGxheWVyIHNob3VsZCBoYXZlIGJl
ZW4gZGVzdHJveWVkIGFuZCBjbGVhcmVkIGJ5IG5vdworICAgIEFTU0VSVCghaGFzTGF5ZXIoKSk7
CisgICAgQVNTRVJUKCFtX2xheWVyKTsKK30KKwordm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
OjpkZXN0cm95TGF5ZXIoKQoreworICAgIEFTU0VSVCghaGFzTGF5ZXIoKSk7IC8vIENhbGxlcnMg
c2hvdWxkIGhhdmUgYWxyZWFkeSBjYWxsZWQgc2V0SGFzTGF5ZXIoZmFsc2UpCisgICAgQVNTRVJU
KG1fbGF5ZXIpOworICAgIG1fbGF5ZXItPmRlc3Ryb3kocmVuZGVyQXJlbmEoKSk7CisgICAgbV9s
YXllciA9IDA7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6ZW5zdXJlTGF5ZXIo
KQoreworICAgIGlmIChtX2xheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xheWVyID0g
bmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJMYXllcih0aGlzKTsKKyAgICBzZXRIYXNMYXllcih0
cnVlKTsKKyAgICBtX2xheWVyLT5pbnNlcnRPbmx5VGhpc0xheWVyKCk7Cit9CisKK2Jvb2wgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdDo6aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdAoreworICAg
IHJldHVybiBtX2xheWVyICYmIG1fbGF5ZXItPmlzU2VsZlBhaW50aW5nTGF5ZXIoKTsKK30KKwor
dm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQoreworICAgIC8v
IFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkIGNhbGxzIGJhY2sgdG8gZGVzdHJveUxheWVy
KCkgZm9yIGxheWVyIGRlc3RydWN0aW9uCisgICAgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95
ZWQoKTsKK30KKwordm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSkKK3sKKyAg
ICBzX3dhc0Zsb2F0aW5nID0gaXNGbG9hdGluZygpOworICAgIHNfaGFkTGF5ZXIgPSBoYXNMYXll
cigpOworICAgIHNfaGFkVHJhbnNmb3JtID0gaGFzVHJhbnNmb3JtKCk7CisgICAgaWYgKHNfaGFk
TGF5ZXIpCisgICAgICAgIHNfbGF5ZXJXYXNTZWxmUGFpbnRpbmcgPSBsYXllcigpLT5pc1NlbGZQ
YWludGluZ0xheWVyKCk7CisKKyAgICAvLyBJZiBvdXIgei1pbmRleCBjaGFuZ2VzIHZhbHVlIG9y
IG91ciB2aXNpYmlsaXR5IGNoYW5nZXMsCisgICAgLy8gd2UgbmVlZCB0byBkaXJ0eSBvdXIgc3Rh
Y2tpbmcgY29udGV4dCdzIHotb3JkZXIgbGlzdC4KKyAgICBSZW5kZXJTdHlsZSogb2xkU3R5bGUg
PSBzdHlsZSgpOworICAgIGlmIChvbGRTdHlsZSAmJiBuZXdTdHlsZSkgeworICAgICAgICBpZiAo
cGFyZW50KCkpIHsKKyAgICAgICAgICAgIC8vIERvIGEgcmVwYWludCB3aXRoIHRoZSBvbGQgc3R5
bGUgZmlyc3QsIGUuZy4sIGZvciBleGFtcGxlIGlmIHdlIGdvIGZyb20KKyAgICAgICAgICAgIC8v
IGhhdmluZyBhbiBvdXRsaW5lIHRvIG5vdCBoYXZpbmcgYW4gb3V0bGluZS4KKyAgICAgICAgICAg
IGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZVJlcGFpbnRMYXllcikgeworICAgICAgICAgICAg
ICAgIGxheWVyKCktPnJlcGFpbnRJbmNsdWRpbmdEZXNjZW5kYW50cygpOworICAgICAgICAgICAg
ICAgIGlmICghKG9sZFN0eWxlLT5jbGlwKCkgPT0gbmV3U3R5bGUtPmNsaXAoKSkpCisgICAgICAg
ICAgICAgICAgICAgIGxheWVyKCktPmNsZWFyQ2xpcFJlY3RzSW5jbHVkaW5nRGVzY2VuZGFudHMo
KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VSZXBhaW50
IHx8IG5ld1N0eWxlLT5vdXRsaW5lU2l6ZSgpIDwgb2xkU3R5bGUtPm91dGxpbmVTaXplKCkpCisg
ICAgICAgICAgICAgICAgcmVwYWludCgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRpZmYg
PT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0IHx8IGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlU2ltcGxp
ZmllZExheW91dCkgeworICAgICAgICAgICAgLy8gV2hlbiBhIGxheW91dCBoaW50IGhhcHBlbnMs
IHdlIGdvIGFoZWFkIGFuZCBkbyBhIHJlcGFpbnQgb2YgdGhlIGxheWVyLCBzaW5jZSB0aGUgbGF5
ZXIgY291bGQKKyAgICAgICAgICAgIC8vIGVuZCB1cCBiZWluZyBkZXN0cm95ZWQuCisgICAgICAg
ICAgICBpZiAoaGFzTGF5ZXIoKSkgeworICAgICAgICAgICAgICAgIGlmIChvbGRTdHlsZS0+cG9z
aXRpb24oKSAhPSBuZXdTdHlsZS0+cG9zaXRpb24oKQorICAgICAgICAgICAgICAgICAgICB8fCBv
bGRTdHlsZS0+ekluZGV4KCkgIT0gbmV3U3R5bGUtPnpJbmRleCgpCisgICAgICAgICAgICAgICAg
ICAgIHx8IG9sZFN0eWxlLT5oYXNBdXRvWkluZGV4KCkgIT0gbmV3U3R5bGUtPmhhc0F1dG9aSW5k
ZXgoKQorICAgICAgICAgICAgICAgICAgICB8fCAhKG9sZFN0eWxlLT5jbGlwKCkgPT0gbmV3U3R5
bGUtPmNsaXAoKSkKKyAgICAgICAgICAgICAgICAgICAgfHwgb2xkU3R5bGUtPmhhc0NsaXAoKSAh
PSBuZXdTdHlsZS0+aGFzQ2xpcCgpCisgICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT5v
cGFjaXR5KCkgIT0gbmV3U3R5bGUtPm9wYWNpdHkoKQorICAgICAgICAgICAgICAgICAgICB8fCBv
bGRTdHlsZS0+dHJhbnNmb3JtKCkgIT0gbmV3U3R5bGUtPnRyYW5zZm9ybSgpCisjaWYgRU5BQkxF
KENTU19GSUxURVJTKQorICAgICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+ZmlsdGVyKCkg
IT0gbmV3U3R5bGUtPmZpbHRlcigpCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgICAgIGxheWVyKCktPnJlcGFpbnRJbmNsdWRpbmdEZXNjZW5kYW50cygpOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChuZXdTdHlsZS0+aGFzVHJhbnNmb3JtKCkgfHwgbmV3U3R5bGUt
Pm9wYWNpdHkoKSA8IDEgfHwgbmV3U3R5bGUtPmhhc0ZpbHRlcigpKSB7CisgICAgICAgICAgICAg
ICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIGxheWVyIHlldCwgYnV0IHdlIGFyZSBnb2luZyB0byBn
ZXQgb25lIGJlY2F1c2Ugb2YgdHJhbnNmb3JtIG9yIG9wYWNpdHksCisgICAgICAgICAgICAgICAg
Ly8gIHRoZW4gd2UgbmVlZCB0byByZXBhaW50IHRoZSBvbGQgcG9zaXRpb24gb2YgdGhlIG9iamVj
dC4KKyAgICAgICAgICAgICAgICByZXBhaW50KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShkaWZmLCBuZXdTdHls
ZSk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKK3sKKyAgICBS
ZW5kZXJPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKKyAgICB1cGRhdGVG
cm9tU3R5bGUoKTsKKworICAgIGlmIChyZXF1aXJlc0xheWVyKCkpIHsKKyAgICAgICAgaWYgKCFs
YXllcigpICYmIGxheWVyQ3JlYXRpb25BbGxvd2VkRm9yU3VidHJlZSgpKSB7CisgICAgICAgICAg
ICBpZiAoc193YXNGbG9hdGluZyAmJiBpc0Zsb2F0aW5nKCkpCisgICAgICAgICAgICAgICAgc2V0
Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKKyAgICAgICAgICAgIGVuc3VyZUxheWVyKCk7CisgICAg
ICAgICAgICBpZiAocGFyZW50KCkgJiYgIW5lZWRzTGF5b3V0KCkgJiYgY29udGFpbmluZ0Jsb2Nr
KCkpIHsKKyAgICAgICAgICAgICAgICBsYXllcigpLT5zZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVs
bFJlcGFpbnQpOworICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG9ubHkgb25lIGxheWVyIHRv
IHVwZGF0ZSwgaXQgaXMgbm90IHdvcnRoIHVzaW5nIHxjYWNoZWRPZmZzZXR8IHNpbmNlCisgICAg
ICAgICAgICAgICAgLy8gd2UgYXJlIG5vdCBzdXJlIHRoZSB2YWx1ZSB3aWxsIGJlIHVzZWQuCisg
ICAgICAgICAgICAgICAgbGF5ZXIoKS0+dXBkYXRlTGF5ZXJQb3NpdGlvbnMoMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGxheWVyKCkgJiYgbGF5ZXIoKS0+cGFy
ZW50KCkpIHsKKyAgICAgICAgc2V0SGFzVHJhbnNmb3JtKGZhbHNlKTsgLy8gRWl0aGVyIGEgdHJh
bnNmb3JtIHdhc24ndCBzcGVjaWZpZWQgb3IgdGhlIG9iamVjdCBkb2Vzbid0IHN1cHBvcnQgdHJh
bnNmb3Jtcywgc28ganVzdCBudWxsIG91dCB0aGUgYml0LgorICAgICAgICBzZXRIYXNSZWZsZWN0
aW9uKGZhbHNlKTsKKyAgICAgICAgbGF5ZXIoKS0+cmVtb3ZlT25seVRoaXNMYXllcigpOyAvLyBj
YWxscyBkZXN0cm95TGF5ZXIoKSB3aGljaCBjbGVhcnMgbV9sYXllcgorICAgICAgICBpZiAoc193
YXNGbG9hdGluZyAmJiBpc0Zsb2F0aW5nKCkpCisgICAgICAgICAgICBzZXRDaGlsZE5lZWRzTGF5
b3V0KHRydWUpOworICAgICAgICBpZiAoc19oYWRUcmFuc2Zvcm0pCisgICAgICAgICAgICBzZXRO
ZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKKyAgICB9CisKKyAgICBpZiAobGF5ZXIo
KSkgeworICAgICAgICBsYXllcigpLT5zdHlsZUNoYW5nZWQoZGlmZiwgb2xkU3R5bGUpOworICAg
ICAgICBpZiAoc19oYWRMYXllciAmJiBsYXllcigpLT5pc1NlbGZQYWludGluZ0xheWVyKCkgIT0g
c19sYXllcldhc1NlbGZQYWludGluZykKKyAgICAgICAgICAgIHNldENoaWxkTmVlZHNMYXlvdXQo
dHJ1ZSk7CisgICAgfQorCisgICAgaWYgKEZyYW1lVmlldyAqZnJhbWVWaWV3ID0gdmlldygpLT5m
cmFtZVZpZXcoKSkgeworICAgICAgICBib29sIG5ld1N0eWxlSXNWaWV3cG9ydENvbnN0YWluZWQg
PSBzdHlsZSgpLT5oYXNWaWV3cG9ydENvbnN0cmFpbmVkUG9zaXRpb24oKTsKKyAgICAgICAgYm9v
bCBvbGRTdHlsZUlzVmlld3BvcnRDb25zdHJhaW5lZCA9IG9sZFN0eWxlICYmIG9sZFN0eWxlLT5o
YXNWaWV3cG9ydENvbnN0cmFpbmVkUG9zaXRpb24oKTsKKyAgICAgICAgaWYgKG5ld1N0eWxlSXNW
aWV3cG9ydENvbnN0YWluZWQgIT0gb2xkU3R5bGVJc1ZpZXdwb3J0Q29uc3RyYWluZWQpIHsKKyAg
ICAgICAgICAgIGlmIChuZXdTdHlsZUlzVmlld3BvcnRDb25zdGFpbmVkICYmIGxheWVyKCkpCisg
ICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5hZGRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KHRo
aXMpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+cmVtb3Zl
Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCh0aGlzKTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyTW9kZWxPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjI0MWQzNzc1MTM5NTM1Zjkw
ZmM2MDU2YTQ0NDI0ZTlhZDM4NTFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaApAQCAtMCwwICsxLDgzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAg
ICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZm5kZWYgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdF9oCisjZGVmaW5lIFJl
bmRlckxheWVyTW9kZWxPYmplY3RfaAorCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyTGF5ZXI7CisKK2NsYXNzIFJlbmRlckxh
eWVyTW9kZWxPYmplY3QgOiBwdWJsaWMgUmVuZGVyT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KE5vZGUqKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJMYXllck1vZGVs
T2JqZWN0KCk7CisKKyAgICAvLyBDYWxsZWQgYnkgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95
ZWQoKSBhbmQgaXMgdGhlIG9ubHkgd2F5IGxheWVycyBzaG91bGQgZXZlciBiZSBkZXN0cm95ZWQK
KyAgICB2b2lkIGRlc3Ryb3lMYXllcigpOworCisgICAgYm9vbCBoYXNTZWxmUGFpbnRpbmdMYXll
cigpIGNvbnN0OworICAgIFJlbmRlckxheWVyKiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5
ZXI7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
LCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHlsZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21TdHlsZSgpIHsgfQor
CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCA9IDA7CisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIGVuc3VyZUxheWVyKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVz
dHJveWVkKCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzTGF5ZXJN
b2RlbE9iamVjdCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFJlbmRl
ckxheWVyKiBtX2xheWVyOworCisgICAgLy8gVXNlZCB0byBzdG9yZSBzdGF0ZSBiZXR3ZWVuIHN0
eWxlV2lsbENoYW5nZSBhbmQgc3R5bGVEaWRDaGFuZ2UKKyAgICBzdGF0aWMgYm9vbCBzX3dhc0Zs
b2F0aW5nOworICAgIHN0YXRpYyBib29sIHNfaGFkTGF5ZXI7CisgICAgc3RhdGljIGJvb2wgc19o
YWRUcmFuc2Zvcm07CisgICAgc3RhdGljIGJvb2wgc19sYXllcldhc1NlbGZQYWludGluZzsKK307
CisKK2lubGluZSBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiB0b1JlbmRlckxheWVyTW9kZWxPYmpl
Y3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0
LT5pc0xheWVyTW9kZWxPYmplY3QoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqPihvYmplY3QpOworfQorCitpbmxpbmUgY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KGNvbnN0IFJlbmRlck9iamVjdCog
b2JqZWN0KQoreworICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+aXNMYXllck1vZGVsT2Jq
ZWN0KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0Kj4ob2JqZWN0KTsKK30KKworLy8gVGhpcyB3aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1
bm5lY2Vzc2FyeSBjYXN0Lgordm9pZCB0b1JlbmRlckxheWVyTW9kZWxPYmplY3QoY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCopOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBSZW5kZXJMYXllck1vZGVsT2JqZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCBiNGJjNTllOWYyYWI5OGJhZjRlNGFiOGEwNWVk
YzI5YzFmM2RjN2VlLi5hNWIwZTRjZGJhZThkMGM4YTc4ODdlMTBlYmYwYTI5NzE2NDQ1ZTA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0x
NzAyLDcgKzE3MDIsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnNldFNlbGVjdGlvblN0YXRl
KFNlbGVjdGlvblN0YXRlIHN0YXRlKQogICAgICAgICAgICAgcm9vdC0+c2V0SGFzU2VsZWN0ZWRD
aGlsZHJlbihzdGF0ZSAhPSBTZWxlY3Rpb25Ob25lKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJM
aXN0TWFya2VyOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkKK0xheW91dFJlY3Qg
UmVuZGVyTGlzdE1hcmtlcjo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkKIHsK
ICAgICBBU1NFUlQoIW5lZWRzTGF5b3V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RNYXJrZXIuaAppbmRleCBkODhkOTIyYjBlNDI4M2NjYTQ1NjAzNWY0ZWViMTE3
ZDgyYzhmNTJkLi5jMWYxZDY3NmVhNGRhZTk2NTk1YWY3Y2I5MjVkYzU2NzIyYjBhMTUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKQEAgLTY1LDcgKzY1
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuICFpc0ltYWdl
KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25TdGF0
ZSk7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250
ZW50ID0gdHJ1ZSk7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBh
aW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRv
VmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVT
ZWxlY3Rpb25MZWFmKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCB1cGRhdGVN
YXJnaW5zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4
IGM1MjNkMjZiNjNlNTViZmIxN2NiYTJiODc1NzMyMmY4NzdjZDE1MTAuLmNhMTlmM2Y4MWI5MmQ5
MTIxM2IyMmM5NWRkYTIwYTQzNGQ5ZjRhZjYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFk
ZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQp
CiAgICAgLy8gVG8gYXZvaWQgdGhlIHByb2JsZW0gYWxsdG9nZXRoZXIsIGRldGVjdCBlYXJseSBp
ZiB3ZSdyZSBpbnNpZGUgYSBoaWRkZW4gU1ZHIHN1YnRyZWUKICAgICAvLyBhbmQgc3RvcCBjcmVh
dGluZyBsYXllcnMgYXQgYWxsIGZvciB0aGVzZSBjYXNlcyAtIHRoZXkncmUgbm90IHVzZWQgYW55
d2F5cy4KICAgICBpZiAobmV3Q2hpbGQtPmhhc0xheWVyKCkgJiYgIWxheWVyQ3JlYXRpb25BbGxv
d2VkRm9yU3VidHJlZSgpKQotICAgICAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG5ld0NoaWxk
KS0+bGF5ZXIoKS0+cmVtb3ZlT25seVRoaXNMYXllcigpOworICAgICAgICB0b1JlbmRlckxheWVy
TW9kZWxPYmplY3QobmV3Q2hpbGQpLT5sYXllcigpLT5yZW1vdmVPbmx5VGhpc0xheWVyKCk7CiB9
CiAKIHZvaWQgUmVuZGVyT2JqZWN0OjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3QqIG9sZENoaWxk
KQpAQCAtNDMwLDcgKzQzMCw3IEBAIHN0YXRpYyB2b2lkIGFkZExheWVycyhSZW5kZXJPYmplY3Qq
IG9iaiwgUmVuZGVyTGF5ZXIqIHBhcmVudExheWVyLCBSZW5kZXJPYmplY3QqCiAgICAgICAgICAg
ICBiZWZvcmVDaGlsZCA9IG5ld09iamVjdC0+cGFyZW50KCktPmZpbmROZXh0TGF5ZXIocGFyZW50
TGF5ZXIsIG5ld09iamVjdCk7CiAgICAgICAgICAgICBuZXdPYmplY3QgPSAwOwogICAgICAgICB9
Ci0gICAgICAgIHBhcmVudExheWVyLT5hZGRDaGlsZCh0b1JlbmRlckJveE1vZGVsT2JqZWN0KG9i
aiktPmxheWVyKCksIGJlZm9yZUNoaWxkKTsKKyAgICAgICAgcGFyZW50TGF5ZXItPmFkZENoaWxk
KHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChvYmopLT5sYXllcigpLCBiZWZvcmVDaGlsZCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIFJlbmRlck9i
amVjdDo6cmVtb3ZlTGF5ZXJzKFJlbmRlckxheWVyKiBwYXJlbnRMYXllcikKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKGhhc0xheWVyKCkpIHsKLSAgICAgICAgcGFyZW50TGF5ZXItPnJlbW92
ZUNoaWxkKHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCkpOworICAgICAgICBw
YXJlbnRMYXllci0+cmVtb3ZlQ2hpbGQodG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHRoaXMpLT5s
YXllcigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDY4LDcgKzQ2OCw3IEBAIHZv
aWQgUmVuZGVyT2JqZWN0Ojptb3ZlTGF5ZXJzKFJlbmRlckxheWVyKiBvbGRQYXJlbnQsIFJlbmRl
ckxheWVyKiBuZXdQYXJlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChoYXNMYXllcigp
KSB7Ci0gICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qo
dGhpcyktPmxheWVyKCk7CisgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKTsKICAgICAgICAgQVNTRVJUKG9sZFBhcmVudCA9
PSBsYXllci0+cGFyZW50KCkpOwogICAgICAgICBpZiAob2xkUGFyZW50KQogICAgICAgICAgICAg
b2xkUGFyZW50LT5yZW1vdmVDaGlsZChsYXllcik7CkBAIC00ODgsNyArNDg4LDcgQEAgUmVuZGVy
TGF5ZXIqIFJlbmRlck9iamVjdDo6ZmluZE5leHRMYXllcihSZW5kZXJMYXllciogcGFyZW50TGF5
ZXIsIFJlbmRlck9iamVjdCoKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBTdGVwIDE6IElm
IG91ciBsYXllciBpcyBhIGNoaWxkIG9mIHRoZSBkZXNpcmVkIHBhcmVudCwgdGhlbiByZXR1cm4g
b3VyIGxheWVyLgotICAgIFJlbmRlckxheWVyKiBvdXJMYXllciA9IGhhc0xheWVyKCkgPyB0b1Jl
bmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpIDogMDsKKyAgICBSZW5kZXJMYXllciog
b3VyTGF5ZXIgPSBoYXNMYXllcigpID8gdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHRoaXMpLT5s
YXllcigpIDogMDsKICAgICBpZiAob3VyTGF5ZXIgJiYgb3VyTGF5ZXItPnBhcmVudCgpID09IHBh
cmVudExheWVyKQogICAgICAgICByZXR1cm4gb3VyTGF5ZXI7CiAKQEAgLTUyMCw3ICs1MjAsNyBA
QCBSZW5kZXJMYXllciogUmVuZGVyT2JqZWN0OjplbmNsb3NpbmdMYXllcigpIGNvbnN0CiB7CiAg
ICAgY29uc3QgUmVuZGVyT2JqZWN0KiBjdXJyID0gdGhpczsKICAgICB3aGlsZSAoY3Vycikgewot
ICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBjdXJyLT5oYXNMYXllcigpID8gdG9SZW5kZXJC
b3hNb2RlbE9iamVjdChjdXJyKS0+bGF5ZXIoKSA6IDA7CisgICAgICAgIFJlbmRlckxheWVyKiBs
YXllciA9IGN1cnItPmhhc0xheWVyKCkgPyB0b1JlbmRlckxheWVyTW9kZWxPYmplY3QoY3Vycikt
PmxheWVyKCkgOiAwOwogICAgICAgICBpZiAobGF5ZXIpCiAgICAgICAgICAgICByZXR1cm4gbGF5
ZXI7CiAgICAgICAgIGN1cnIgPSBjdXJyLT5wYXJlbnQoKTsKQEAgLTcxNiwxMyArNzE2LDEzIEBA
IHZvaWQgUmVuZGVyT2JqZWN0OjppbnZhbGlkYXRlQ29udGFpbmVyUHJlZmVycmVkTG9naWNhbFdp
ZHRocygpCiB2b2lkIFJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50KCkKIHsK
ICAgICBBU1NFUlQoaGFzTGF5ZXIoKSk7Ci0gICAgdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlz
KS0+bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50KTsKKyAgICB0b1Jl
bmRlckxheWVyTW9kZWxPYmplY3QodGhpcyktPmxheWVyKCktPnNldFJlcGFpbnRTdGF0dXMoTmVl
ZHNGdWxsUmVwYWludCk7CiB9CiAKIHZvaWQgUmVuZGVyT2JqZWN0OjpzZXRMYXllck5lZWRzRnVs
bFJlcGFpbnRGb3JQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQoKQogewogICAgIEFTU0VSVChoYXNM
YXllcigpKTsKLSAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5zZXRS
ZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnRGb3JQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQp
OworICAgIHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+c2V0UmVwYWlu
dFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KTsKIH0K
IAogUmVuZGVyQmxvY2sqIFJlbmRlck9iamVjdDo6Y29udGFpbmluZ0Jsb2NrKCkgY29uc3QKQEAg
LTEyNDEsMTMgKzEyNDEsMTMgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50KFBhaW50SW5mbyYs
IGNvbnN0IExheW91dFBvaW50JikKIHsKIH0KIAotUmVuZGVyQm94TW9kZWxPYmplY3QqIFJlbmRl
ck9iamVjdDo6Y29udGFpbmVyRm9yUmVwYWludCgpIGNvbnN0CitSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5lckZvclJlcGFpbnQoKSBjb25zdAogewogICAgIFJl
bmRlclZpZXcqIHYgPSB2aWV3KCk7CiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm4gMDsKICAg
ICAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IDA7CisgICAg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IDA7CiAKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKHYtPnVzZXNDb21wb3NpdGluZygpKSB7
CkBAIC0xMjc3LDcgKzEyNzcsNyBAQCBSZW5kZXJCb3hNb2RlbE9iamVjdCogUmVuZGVyT2JqZWN0
Ojpjb250YWluZXJGb3JSZXBhaW50KCkgY29uc3QKICAgICByZXR1cm4gcmVwYWludENvbnRhaW5l
cjsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRVc2luZ0NvbnRhaW5lcihSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgSW50UmVjdCYgciwgYm9vbCBp
bW1lZGlhdGUpIGNvbnN0Cit2b2lkIFJlbmRlck9iamVjdDo6cmVwYWludFVzaW5nQ29udGFpbmVy
KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IEludFJlY3Qm
IHIsIGJvb2wgaW1tZWRpYXRlKSBjb25zdAogewogICAgIGlmICghcmVwYWludENvbnRhaW5lcikg
ewogICAgICAgICB2aWV3KCktPnJlcGFpbnRWaWV3UmVjdGFuZ2xlKHIsIGltbWVkaWF0ZSk7CkBA
IC0xMzMwLDcgKzEzMzAsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6cmVwYWludChib29sIGltbWVk
aWF0ZSkgY29uc3QKICAgICBpZiAodmlldy0+cHJpbnRpbmcoKSkKICAgICAgICAgcmV0dXJuOyAv
LyBEb24ndCByZXBhaW50IGlmIHdlJ3JlIHByaW50aW5nLgogCi0gICAgUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBjb250YWluZXJGb3JSZXBhaW50KCk7CisgICAgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IGNvbnRhaW5lckZvclJlcGFp
bnQoKTsKICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciA/IHJlcGFp
bnRDb250YWluZXIgOiB2aWV3LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpKSwgaW1tZWRpYXRlKTsKIH0KIApAQCAtMTM1
MCw3ICsxMzUwLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRSZWN0YW5nbGUoY29uc3Qg
TGF5b3V0UmVjdCYgciwgYm9vbCBpbW1lZGlhdGUpIGNvbnN0CiAgICAgLy8gcmVwYWludCBjb250
YWluZXJzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDgKICAg
ICBkaXJ0eVJlY3QubW92ZSh2aWV3LT5sYXlvdXREZWx0YSgpKTsKIAotICAgIFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gY29udGFpbmVyRm9yUmVwYWludCgpOworICAg
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBjb250YWluZXJGb3JS
ZXBhaW50KCk7CiAgICAgY29tcHV0ZVJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIGRp
cnR5UmVjdCk7CiAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIgPyBy
ZXBhaW50Q29udGFpbmVyIDogdmlldywgcGl4ZWxTbmFwcGVkSW50UmVjdChkaXJ0eVJlY3QpLCBp
bW1lZGlhdGUpOwogfQpAQCAtMTM2MCw3ICsxMzYwLDcgQEAgSW50UmVjdCBSZW5kZXJPYmplY3Q6
OnBpeGVsU25hcHBlZEFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpIGNvbnN0CiAgICAgcmV0
dXJuIHBpeGVsU25hcHBlZEludFJlY3QoYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkpOwog
fQogCi1ib29sIFJlbmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFJlY3QmIG9sZEJv
dW5kcywgY29uc3QgTGF5b3V0UmVjdCYgb2xkT3V0bGluZUJveCwgY29uc3QgTGF5b3V0UmVjdCog
bmV3Qm91bmRzUHRyLCBjb25zdCBMYXlvdXRSZWN0KiBuZXdPdXRsaW5lQm94UmVjdFB0cikKK2Jv
b2wgUmVuZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRCb3VuZHMs
IGNvbnN0IExheW91dFJlY3QmIG9sZE91dGxpbmVCb3gsIGNvbnN0IExheW91dFJlY3QqIG5ld0Jv
dW5kc1B0ciwgY29uc3QgTGF5b3V0UmVjdCogbmV3T3V0bGluZUJveFJlY3RQdHIpCiB7CiAgICAg
UmVuZGVyVmlldyogdiA9IHZpZXcoKTsKICAgICBpZiAodi0+cHJpbnRpbmcoKSkKQEAgLTE0ODEs
MjAgKzE0ODEsMjAgQEAgYm9vbCBSZW5kZXJPYmplY3Q6OmNoZWNrRm9yUmVwYWludER1cmluZ0xh
eW91dCgpIGNvbnN0CiAgICAgcmV0dXJuICFkb2N1bWVudCgpLT52aWV3KCktPm5lZWRzRnVsbFJl
cGFpbnQoKSAmJiAhaGFzTGF5ZXIoKSAmJiBldmVySGFkTGF5b3V0KCk7CiB9CiAKLUxheW91dFJl
Y3QgUmVuZGVyT2JqZWN0OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QK
K0xheW91dFJlY3QgUmVuZGVyT2JqZWN0OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdp
ZHRoKSBjb25zdAogewogICAgIExheW91dFJlY3QgcihjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludChyZXBhaW50Q29udGFpbmVyKSk7CiAgICAgci5pbmZsYXRlKG91dGxpbmVXaWR0aCk7CiAg
ICAgcmV0dXJuIHI7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyT2JqZWN0OjpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCopIGNvbnN0CitMYXlvdXRSZWN0
IFJlbmRlck9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCopIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIExheW91dFJlY3QoKTsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OmNvbXB1dGVSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVj
dCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVj
dEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5
b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBpZiAocmVwYWludENvbnRh
aW5lciA9PSB0aGlzKQogICAgICAgICByZXR1cm47CkBAIC0xNTE3LDcgKzE1MTcsNyBAQCB2b2lk
IFJlbmRlck9iamVjdDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OmNvbXB1
dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiwgRmxvYXRSZWN0Jiwg
Ym9vbCkgY29uc3QKK3ZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWlu
dChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiwgRmxvYXRSZWN0JiwgYm9vbCkgY29uc3QKIHsKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTE2NzgsNyArMTY3OCw3IEBAIFN0eWxlRGlm
ZmVyZW5jZSBSZW5kZXJPYmplY3Q6OmFkanVzdFN0eWxlRGlmZmVyZW5jZShTdHlsZURpZmZlcmVu
Y2UgZGlmZiwgdW5zaWduCiAgICAgICAgIC8vIFRleHQgbm9kZXMgc2hhcmUgc3R5bGUgd2l0aCB0
aGVpciBwYXJlbnRzIGJ1dCB0cmFuc2Zvcm1zIGRvbid0IGFwcGx5IHRvIHRoZW0sCiAgICAgICAg
IC8vIGhlbmNlIHRoZSAhaXNUZXh0KCkgY2hlY2suCiAgICAgICAgIC8vIEZJWE1FOiB3aGVuIHRy
YW5zZm9ybXMgYXJlIHRha2VuIGludG8gYWNjb3VudCBmb3Igb3ZlcmZsb3csIHdlIHdpbGwgbmVl
ZCB0byBkbyBhIGxheW91dC4KLSAgICAgICAgaWYgKCFpc1RleHQoKSAmJiAoIWhhc0xheWVyKCkg
fHwgIXRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgp
KSkgeworICAgICAgICBpZiAoIWlzVGV4dCgpICYmICghaGFzTGF5ZXIoKSB8fCAhdG9SZW5kZXJM
YXllck1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkpIHsKICAgICAg
ICAgICAgIC8vIFdlIG5lZWQgdG8gc2V0IGF0IGxlYXN0IFNpbXBsaWZpZWRMYXlvdXQsIGJ1dCBp
ZiBQb3NpdGlvbmVkTW92ZW1lbnRPbmx5IGlzIGFscmVhZHkgc2V0CiAgICAgICAgICAgICAvLyB0
aGVuIHdlIGFjdHVhbGx5IG5lZWQgU2ltcGxpZmllZExheW91dEFuZFBvc2l0aW9uZWRNb3ZlbWVu
dC4KICAgICAgICAgICAgIGlmICghaGFzTGF5ZXIoKSkKQEAgLTE2OTQsNyArMTY5NCw3IEBAIFN0
eWxlRGlmZmVyZW5jZSBSZW5kZXJPYmplY3Q6OmFkanVzdFN0eWxlRGlmZmVyZW5jZShTdHlsZURp
ZmZlcmVuY2UgZGlmZiwgdW5zaWduCiAgICAgLy8gSWYgb3BhY2l0eSBjaGFuZ2VkLCBhbmQgd2Ug
YXJlIG5vdCBjb21wb3NpdGVkLCBuZWVkIHRvIHJlcGFpbnQgKGFsc28KICAgICAvLyBpZ25vcmlu
ZyB0ZXh0IG5vZGVzKQogICAgIGlmIChjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyAmIENvbnRl
eHRTZW5zaXRpdmVQcm9wZXJ0eU9wYWNpdHkpIHsKLSAgICAgICAgaWYgKCFpc1RleHQoKSAmJiAo
IWhhc0xheWVyKCkgfHwgIXRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCktPmlz
Q29tcG9zaXRlZCgpKSkKKyAgICAgICAgaWYgKCFpc1RleHQoKSAmJiAoIWhhc0xheWVyKCkgfHwg
IXRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkp
KQogICAgICAgICAgICAgZGlmZiA9IFN0eWxlRGlmZmVyZW5jZVJlcGFpbnRMYXllcjsKICAgICAg
ICAgZWxzZSBpZiAoZGlmZiA8IFN0eWxlRGlmZmVyZW5jZVJlY29tcG9zaXRlTGF5ZXIpCiAgICAg
ICAgICAgICBkaWZmID0gU3R5bGVEaWZmZXJlbmNlUmVjb21wb3NpdGVMYXllcjsKQEAgLTE3MDIs
NyArMTcwMiw3IEBAIFN0eWxlRGlmZmVyZW5jZSBSZW5kZXJPYmplY3Q6OmFkanVzdFN0eWxlRGlm
ZmVyZW5jZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgdW5zaWduCiAgICAgCiAjaWYgRU5BQkxFKENT
U19GSUxURVJTKQogICAgIGlmICgoY29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgJiBDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydHlGaWx0ZXIpICYmIGhhc0xheWVyKCkpIHsKLSAgICAgICAgUmVuZGVy
TGF5ZXIqIGxheWVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKTsKKyAg
ICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHRoaXMp
LT5sYXllcigpOwogICAgICAgICBpZiAoIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSB8fCBsYXllci0+
cGFpbnRzV2l0aEZpbHRlcnMoKSkKICAgICAgICAgICAgIGRpZmYgPSBTdHlsZURpZmZlcmVuY2VS
ZXBhaW50TGF5ZXI7CiAgICAgICAgIGVsc2UgaWYgKGRpZmYgPCBTdHlsZURpZmZlcmVuY2VSZWNv
bXBvc2l0ZUxheWVyKQpAQCAtMTcxMyw4ICsxNzEzLDggQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRl
ck9iamVjdDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCB1bnNp
Z24KICAgICAvLyBUaGUgYW5zd2VyIHRvIHJlcXVpcmVzTGF5ZXIoKSBmb3IgcGx1Z2lucyBhbmQg
aWZyYW1lcyBjYW4gY2hhbmdlIG91dHNpZGUgb2YgdGhlIHN0eWxlIHN5c3RlbSwKICAgICAvLyBz
aW5jZSBpdCBkZXBlbmRzIG9uIHdoZXRoZXIgd2UgZGVjaWRlIHRvIGNvbXBvc2l0ZSB0aGVzZSBl
bGVtZW50cy4gV2hlbiB0aGUgbGF5ZXIgc3RhdHVzIG9mCiAgICAgLy8gb25lIG9mIHRoZXNlIGVs
ZW1lbnRzIGNoYW5nZXMsIHdlIG5lZWQgdG8gZm9yY2UgYSBsYXlvdXQuCi0gICAgaWYgKGRpZmYg
PT0gU3R5bGVEaWZmZXJlbmNlRXF1YWwgJiYgc3R5bGUoKSAmJiBpc0JveE1vZGVsT2JqZWN0KCkp
IHsKLSAgICAgICAgaWYgKGhhc0xheWVyKCkgIT0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlz
KS0+cmVxdWlyZXNMYXllcigpKQorICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUVxdWFs
ICYmIHN0eWxlKCkgJiYgaXNMYXllck1vZGVsT2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKGhhc0xh
eWVyKCkgIT0gdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHRoaXMpLT5yZXF1aXJlc0xheWVyKCkp
CiAgICAgICAgICAgICBkaWZmID0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogICAgIH0KICNlbHNl
CkBAIC0yMDIyLDcgKzIwMjIsNyBAQCBGbG9hdFBvaW50IFJlbmRlck9iamVjdDo6YWJzb2x1dGVU
b0xvY2FsKGNvbnN0IEZsb2F0UG9pbnQmIGNvbnRhaW5lclBvaW50LCBib29sCiAgICAgcmV0dXJu
IHRyYW5zZm9ybVN0YXRlLmxhc3RQbGFuYXJQb2ludCgpOwogfQogCi12b2lkIFJlbmRlck9iamVj
dDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVy
RmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlck9iamVjdDo6bWFw
TG9jYWxUb0NvbnRhaW5lcihSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFn
cyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAocmVwYWludENvbnRhaW5l
ciA9PSB0aGlzKQogICAgICAgICByZXR1cm47CkBAIC0yMDUwLDcgKzIwNTAsNyBAQCB2b2lkIFJl
bmRlck9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgVAogICAgIG8tPm1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRh
aW5lciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdhc0ZpeGVkKTsKIH0KIAotY29uc3QgUmVuZGVy
T2JqZWN0KiBSZW5kZXJPYmplY3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9t
ZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9T
dG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKIHsKICAgICBBU1NF
UlRfVU5VU0VEKGFuY2VzdG9yVG9TdG9wQXQsIGFuY2VzdG9yVG9TdG9wQXQgIT0gdGhpcyk7CiAK
QEAgLTIwODMsNyArMjA4Myw3IEBAIGJvb2wgUmVuZGVyT2JqZWN0OjpzaG91bGRVc2VUcmFuc2Zv
cm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogY29udGFpbmVyCiAjaWYgRU5BQkxF
KDNEX1JFTkRFUklORykKICAgICAvLyBoYXNUcmFuc2Zvcm0oKSBpbmRpY2F0ZXMgd2hldGhlciB0
aGUgb2JqZWN0IGhhcyB0cmFuc2Zvcm0sIHRyYW5zZm9ybS1zdHlsZSBvciBwZXJzcGVjdGl2ZS4g
V2UganVzdCBjYXJlIGFib3V0IHRyYW5zZm9ybSwKICAgICAvLyBzbyBjaGVjayB0aGUgbGF5ZXIn
cyB0cmFuc2Zvcm0gZGlyZWN0bHkuCi0gICAgcmV0dXJuIChoYXNMYXllcigpICYmIHRvUmVuZGVy
Qm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCktPnRyYW5zZm9ybSgpKSB8fCAoY29udGFpbmVy
T2JqZWN0ICYmIGNvbnRhaW5lck9iamVjdC0+c3R5bGUoKS0+aGFzUGVyc3BlY3RpdmUoKSk7Cisg
ICAgcmV0dXJuIChoYXNMYXllcigpICYmIHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCh0aGlzKS0+
bGF5ZXIoKS0+dHJhbnNmb3JtKCkpIHx8IChjb250YWluZXJPYmplY3QgJiYgY29udGFpbmVyT2Jq
ZWN0LT5zdHlsZSgpLT5oYXNQZXJzcGVjdGl2ZSgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGNvbnRhaW5lck9iamVjdCk7CiAgICAgcmV0dXJuIGhhc1RyYW5zZm9ybSgpOwpAQCAtMjA5NSwx
NCArMjA5NSwxNCBAQCB2b2lkIFJlbmRlck9iamVjdDo6Z2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5l
cihjb25zdCBSZW5kZXJPYmplY3QqIGNvbnRhaW5lck9iamVjdAogICAgIHRyYW5zZm9ybS5tYWtl
SWRlbnRpdHkoKTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9mZnNldEluQ29udGFpbmVyLndp
ZHRoKCksIG9mZnNldEluQ29udGFpbmVyLmhlaWdodCgpKTsKICAgICBSZW5kZXJMYXllciogbGF5
ZXI7Ci0gICAgaWYgKGhhc0xheWVyKCkgJiYgKGxheWVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVj
dCh0aGlzKS0+bGF5ZXIoKSkgJiYgbGF5ZXItPnRyYW5zZm9ybSgpKQorICAgIGlmIChoYXNMYXll
cigpICYmIChsYXllciA9IHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKSkg
JiYgbGF5ZXItPnRyYW5zZm9ybSgpKQogICAgICAgICB0cmFuc2Zvcm0ubXVsdGlwbHkobGF5ZXIt
PmN1cnJlbnRUcmFuc2Zvcm0oKSk7CiAgICAgCiAjaWYgRU5BQkxFKDNEX1JFTkRFUklORykKICAg
ICBpZiAoY29udGFpbmVyT2JqZWN0ICYmIGNvbnRhaW5lck9iamVjdC0+aGFzTGF5ZXIoKSAmJiBj
b250YWluZXJPYmplY3QtPnN0eWxlKCktPmhhc1BlcnNwZWN0aXZlKCkpIHsKICAgICAgICAgLy8g
UGVycHNlY3RpdmUgb24gdGhlIGNvbnRhaW5lciBhZmZlY3RzIHVzLCBzbyB3ZSBoYXZlIHRvIGZh
Y3RvciBpdCBpbiBoZXJlLgogICAgICAgICBBU1NFUlQoY29udGFpbmVyT2JqZWN0LT5oYXNMYXll
cigpKTsKLSAgICAgICAgRmxvYXRQb2ludCBwZXJzcGVjdGl2ZU9yaWdpbiA9IHRvUmVuZGVyQm94
TW9kZWxPYmplY3QoY29udGFpbmVyT2JqZWN0KS0+bGF5ZXIoKS0+cGVyc3BlY3RpdmVPcmlnaW4o
KTsKKyAgICAgICAgRmxvYXRQb2ludCBwZXJzcGVjdGl2ZU9yaWdpbiA9IHRvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdChjb250YWluZXJPYmplY3QpLT5sYXllcigpLT5wZXJzcGVjdGl2ZU9yaWdpbigp
OwogCiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBlcnNwZWN0aXZlTWF0cml4OwogICAg
ICAgICBwZXJzcGVjdGl2ZU1hdHJpeC5hcHBseVBlcnNwZWN0aXZlKGNvbnRhaW5lck9iamVjdC0+
c3R5bGUoKS0+cGVyc3BlY3RpdmUoKSk7CkBAIC0yMTE2LDcgKzIxMTYsNyBAQCB2b2lkIFJlbmRl
ck9iamVjdDo6Z2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIGNv
bnRhaW5lck9iamVjdAogI2VuZGlmCiB9CiAKLUZsb2F0UXVhZCBSZW5kZXJPYmplY3Q6OmxvY2Fs
VG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0UXVhZCYgbG9jYWxRdWFkLCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBzbmFwT2Zmc2V0Rm9yVHJhbnNmb3Jtcywg
Ym9vbCBmaXhlZCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CitGbG9hdFF1YWQgUmVuZGVyT2JqZWN0
Ojpsb2NhbFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmIGxvY2FsUXVhZCwgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBzbmFwT2Zmc2V0Rm9yVHJh
bnNmb3JtcywgYm9vbCBmaXhlZCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gVHJh
Y2sgdGhlIHBvaW50IGF0IHRoZSBjZW50ZXIgb2YgdGhlIHF1YWQncyBib3VuZGluZyBib3guIEFz
IG1hcExvY2FsVG9Db250YWluZXIoKSBjYWxscyBvZmZzZXRGcm9tQ29udGFpbmVyKCksCiAgICAg
Ly8gaXQgd2lsbCB1c2UgdGhhdCBwb2ludCBhcyB0aGUgcmVmZXJlbmNlIHBvaW50IHRvIGRlY2lk
ZSB3aGljaCBjb2x1bW4ncyB0cmFuc2Zvcm0gdG8gYXBwbHkgaW4gbXVsdGlwbGUtY29sdW1uIGJs
b2Nrcy4KQEAgLTIxMzIsNyArMjEzMiw3IEBAIEZsb2F0UXVhZCBSZW5kZXJPYmplY3Q6OmxvY2Fs
VG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0UXVhZCYgbG9jYWxRdWFkLCBSZW5kZXJCCiAgICAg
cmV0dXJuIHRyYW5zZm9ybVN0YXRlLmxhc3RQbGFuYXJRdWFkKCk7CiB9CiAKLUZsb2F0UG9pbnQg
UmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVyUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgbG9j
YWxQb2ludCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgc25h
cE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAor
RmxvYXRQb2ludCBSZW5kZXJPYmplY3Q6OmxvY2FsVG9Db250YWluZXJQb2ludChjb25zdCBGbG9h
dFBvaW50JiBsb2NhbFBvaW50LCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBib29sIHNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBib29sKiB3YXNG
aXhlZCkgY29uc3QKIHsKICAgICBUcmFuc2Zvcm1TdGF0ZSB0cmFuc2Zvcm1TdGF0ZShUcmFuc2Zv
cm1TdGF0ZTo6QXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24sIGxvY2FsUG9pbnQpOwogICAgIE1hcExv
Y2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwIHwgVXNlVHJhbnNm
b3JtczsKQEAgLTIyMzUsNyArMjIzNSw3IEBAIGJvb2wgUmVuZGVyT2JqZWN0OjpoYXNPdXRsaW5l
QW5ub3RhdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmlzTGluaygp
ICYmIGRvY3VtZW50KCktPnByaW50aW5nKCk7CiB9CiAKLVJlbmRlck9iamVjdCogUmVuZGVyT2Jq
ZWN0Ojpjb250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIGJvb2wqIHJlcGFpbnRDb250YWluZXJTa2lwcGVkKSBjb25zdAorUmVuZGVyT2JqZWN0KiBS
ZW5kZXJPYmplY3Q6OmNvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBib29sKiByZXBhaW50Q29udGFpbmVyU2tpcHBlZCkgY29uc3QKIHsKICAg
ICBpZiAocmVwYWludENvbnRhaW5lclNraXBwZWQpCiAgICAgICAgICpyZXBhaW50Q29udGFpbmVy
U2tpcHBlZCA9IGZhbHNlOwpAQCAtMjM2OCw3ICsyMzY4LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6
OndpbGxCZURlc3Ryb3llZCgpCiAgICAgLy8gYmUgbW92ZWQgaW50byBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6ZGVzdHJveS4KICAgICBpZiAoaGFzTGF5ZXIoKSkgewogICAgICAgICBzZXRIYXNMYXll
cihmYWxzZSk7Ci0gICAgICAgIHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmRlc3Ryb3lM
YXllcigpOworICAgICAgICB0b1JlbmRlckxheWVyTW9kZWxPYmplY3QodGhpcyktPmRlc3Ryb3lM
YXllcigpOwogICAgIH0KIAogICAgIHNldEFuY2VzdG9yTGluZUJveERpcnR5KGZhbHNlKTsKQEAg
LTI1MjIsNyArMjUyMiw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojp1cGRhdGVEcmFnU3RhdGUoYm9v
bCBkcmFnT24pCiAKIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0NvbXBvc2l0ZWQoKSBjb25zdAogewot
ICAgIHJldHVybiBoYXNMYXllcigpICYmIHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxh
eWVyKCktPmlzQ29tcG9zaXRlZCgpOworICAgIHJldHVybiBoYXNMYXllcigpICYmIHRvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCk7CiB9CiAKIGJv
b2wgUmVuZGVyT2JqZWN0OjpoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBI
aXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNv
bnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0Rmls
dGVyIGhpdFRlc3RGaWx0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgK
aW5kZXggMjhjZGEzYWQ3YTU2YTA2OGYwYmNiZDk4YmQwYTI5NWE1MGIzOWNkYy4uMGE3MDU3NTBm
N2M2NTc1YmFjM2E3MThlYTFiZTlhOGIzYzQyNjQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaApAQCAtNjAsNiArNjAsNyBAQCBjbGFzcyBSZW5kZXJCbG9jazsKIGNs
YXNzIFJlbmRlckZsb3dUaHJlYWQ7CiBjbGFzcyBSZW5kZXJHZW9tZXRyeU1hcDsKIGNsYXNzIFJl
bmRlckxheWVyOworY2xhc3MgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDsKIGNsYXNzIFJlbmRlck5h
bWVkRmxvd1RocmVhZDsKIGNsYXNzIFJlbmRlclRhYmxlOwogY2xhc3MgUmVuZGVyVGhlbWU7CkBA
IC0zMjcsNiArMzI4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lU2V0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSW5saW5lQmxvY2tPcklubGlu
ZVRhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNMYXll
ck1vZGVsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNMaXN0Qm94KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNM
aXN0SXRlbSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTGlz
dE1hcmtlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02MTAsNyArNjEyLDcgQEAgcHVi
bGljOgogICAgIC8vIFJldHVybnMgdGhlIG9iamVjdCBjb250YWluaW5nIHRoaXMgb25lLiBDYW4g
YmUgZGlmZmVyZW50IGZyb20gcGFyZW50IGZvciBwb3NpdGlvbmVkIGVsZW1lbnRzLgogICAgIC8v
IElmIHJlcGFpbnRDb250YWluZXIgYW5kIHJlcGFpbnRDb250YWluZXJTa2lwcGVkIGFyZSBub3Qg
bnVsbCwgb24gcmV0dXJuICpyZXBhaW50Q29udGFpbmVyU2tpcHBlZAogICAgIC8vIGlzIHRydWUg
aWYgdGhlIHJlbmRlcmVyIHJldHVybmVkIGlzIGFuIGFuY2VzdG9yIG9mIHJlcGFpbnRDb250YWlu
ZXIuCi0gICAgUmVuZGVyT2JqZWN0KiBjb250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIgPSAwLCBib29sKiByZXBhaW50Q29udGFpbmVyU2tpcHBlZCA9
IDApIGNvbnN0OworICAgIFJlbmRlck9iamVjdCogY29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSAwLCBib29sKiByZXBhaW50Q29udGFpbmVy
U2tpcHBlZCA9IDApIGNvbnN0OwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGhvdmVyQW5j
ZXN0b3IoKSBjb25zdCB7IHJldHVybiBwYXJlbnQoKTsgfQogCkBAIC03MDcsOCArNzA5LDggQEAg
cHVibGljOgogICAgIH0KIAogICAgIC8vIENvbnZlcnQgYSBsb2NhbCBxdWFkIGludG8gdGhlIGNv
b3JkaW5hdGUgc3lzdGVtIG9mIGNvbnRhaW5lciwgdGFraW5nIHRyYW5zZm9ybXMgaW50byBhY2Nv
dW50LgotICAgIEZsb2F0UXVhZCBsb2NhbFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQm
LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBzbmFwT2Zmc2V0
Rm9yVHJhbnNmb3JtcyA9IHRydWUsIGJvb2wgZml4ZWQgPSBmYWxzZSwgYm9vbCogd2FzRml4ZWQg
PSAwKSBjb25zdDsKLSAgICBGbG9hdFBvaW50IGxvY2FsVG9Db250YWluZXJQb2ludChjb25zdCBG
bG9hdFBvaW50JiwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wg
c25hcE9mZnNldEZvclRyYW5zZm9ybXMgPSB0cnVlLCBib29sIGZpeGVkID0gZmFsc2UsIGJvb2wq
IHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgRmxvYXRRdWFkIGxvY2FsVG9Db250YWluZXJRdWFk
KGNvbnN0IEZsb2F0UXVhZCYsIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIGJvb2wgc25hcE9mZnNldEZvclRyYW5zZm9ybXMgPSB0cnVlLCBib29sIGZpeGVkID0gZmFs
c2UsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgRmxvYXRQb2ludCBsb2NhbFRvQ29u
dGFpbmVyUG9pbnQoY29uc3QgRmxvYXRQb2ludCYsIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIGJvb2wgc25hcE9mZnNldEZvclRyYW5zZm9ybXMgPSB0cnVlLCBib29s
IGZpeGVkID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CiAKICAgICAvLyBSZXR1
cm4gdGhlIG9mZnNldCBmcm9tIHRoZSBjb250YWluZXIoKSByZW5kZXJlciAoZXhjbHVkaW5nIHRy
YW5zZm9ybXMpLiBJbiBtdWx0aS1jb2x1bW4gbGF5b3V0LAogICAgIC8vIGRpZmZlcmVudCBvZmZz
ZXRzIGFwcGx5IGF0IGRpZmZlcmVudCBwb2ludHMsIHNvIHJldHVybiB0aGUgb2Zmc2V0IHRoYXQg
YXBwbGllcyB0byB0aGUgZ2l2ZW4gcG9pbnQuCkBAIC03NTEsMTMgKzc1MywxMyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGdldFRleHREZWNvcmF0aW9uQ29sb3JzKGludCBkZWNvcmF0aW9ucywgQ29s
b3ImIHVuZGVybGluZSwgQ29sb3ImIG92ZXJsaW5lLCBDb2xvciYgbGluZXRocm91Z2gsIGJvb2wg
cXVpcmtzTW9kZSA9IGZhbHNlLCBib29sIGZpcnN0bGluZVN0eWxlID0gZmFsc2UpOwogCi0gICAg
Ly8gUmV0dXJuIHRoZSBSZW5kZXJCb3ggaW4gdGhlIGNvbnRhaW5lciBjaGFpbiB3aGljaCBpcyBy
ZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgdGhpcyBvYmplY3QsIG9yIDAKKyAgICAvLyBSZXR1cm4g
dGhlIFJlbmRlckxheWVyTW9kZWxPYmplY3QgaW4gdGhlIGNvbnRhaW5lciBjaGFpbiB3aGljaCBp
cyByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgdGhpcyBvYmplY3QsIG9yIDAKICAgICAvLyBpZiBw
YWludGluZyBpcyByb290LXJlbGF0aXZlLiBUaGlzIGlzIHRoZSBjb250YWluZXIgdGhhdCBzaG91
bGQgYmUgcGFzc2VkIHRvIHRoZSAnZm9yUmVwYWludCcKICAgICAvLyBtZXRob2RzLgotICAgIFJl
bmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJGb3JSZXBhaW50KCkgY29uc3Q7CisgICAgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyRm9yUmVwYWludCgpIGNvbnN0OwogICAgIC8v
IEFjdHVhbGx5IGRvIHRoZSByZXBhaW50IG9mIHJlY3QgciBmb3IgdGhpcyBvYmplY3Qgd2hpY2gg
aGFzIGJlZW4gY29tcHV0ZWQgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2UKICAgICAvLyBvZiByZXBh
aW50Q29udGFpbmVyLiBJZiByZXBhaW50Q29udGFpbmVyIGlzIDAsIHJlcGFpbnQgdmlhIHRoZSB2
aWV3LgotICAgIHZvaWQgcmVwYWludFVzaW5nQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBJbnRSZWN0JiwgYm9vbCBpbW1lZGlhdGUgPSBmYWxz
ZSkgY29uc3Q7CisgICAgdm9pZCByZXBhaW50VXNpbmdDb250YWluZXIoUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgSW50UmVjdCYsIGJvb2wgaW1tZWRpYXRl
ID0gZmFsc2UpIGNvbnN0OwogICAgIAogICAgIC8vIFJlcGFpbnQgdGhlIGVudGlyZSBvYmplY3Qu
ICBDYWxsZWQgd2hlbiwgZS5nLiwgdGhlIGNvbG9yIG9mIGEgYm9yZGVyIGNoYW5nZXMsIG9yIHdo
ZW4gYSBib3JkZXIKICAgICAvLyBzdHlsZSBjaGFuZ2VzLgpAQCAtNzY3LDcgKzc2OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlcGFpbnRSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYsIGJvb2wg
aW1tZWRpYXRlID0gZmFsc2UpIGNvbnN0OwogCiAgICAgLy8gUmVwYWludCBvbmx5IGlmIG91ciBv
bGQgYm91bmRzIGFuZCBuZXcgYm91bmRzIGFyZSBkaWZmZXJlbnQuIFRoZSBjYWxsZXIgbWF5IHBh
c3MgaW4gbmV3Qm91bmRzIGFuZCBuZXdPdXRsaW5lQm94IGlmIHRoZXkgYXJlIGtub3duLgotICAg
IGJvb2wgcmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFJlY3QmIG9sZEJvdW5kcywgY29uc3QgTGF5b3V0
UmVjdCYgb2xkT3V0bGluZUJveCwgY29uc3QgTGF5b3V0UmVjdCogbmV3Qm91bmRzUHRyID0gMCwg
Y29uc3QgTGF5b3V0UmVjdCogbmV3T3V0bGluZUJveFB0ciA9IDApOworICAgIGJvb2wgcmVwYWlu
dEFmdGVyTGF5b3V0SWZOZWVkZWQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgY29uc3QgTGF5b3V0UmVjdCYgb2xkQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRP
dXRsaW5lQm94LCBjb25zdCBMYXlvdXRSZWN0KiBuZXdCb3VuZHNQdHIgPSAwLCBjb25zdCBMYXlv
dXRSZWN0KiBuZXdPdXRsaW5lQm94UHRyID0gMCk7CiAKICAgICAvLyBSZXBhaW50IG9ubHkgaWYg
dGhlIG9iamVjdCBtb3ZlZC4KICAgICB2aXJ0dWFsIHZvaWQgcmVwYWludER1cmluZ0xheW91dElm
TW92ZWQoY29uc3QgTGF5b3V0UmVjdCYpOwpAQCAtNzg0LDggKzc4Niw4IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KDApOwogICAgIH0KICAg
ICBJbnRSZWN0IHBpeGVsU25hcHBlZEFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVh
bCBMYXlvdXRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCBM
YXlvdXRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0OwogCiAg
ICAgLy8gR2l2ZW4gYSByZWN0IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNlLCBjb21w
dXRlIGEgcmVjdCBzdWl0YWJsZSBmb3IgcmVwYWludGluZwogICAgIC8vIHRoYXQgcmVjdCBpbiB2
aWV3IGNvb3JkaW5hdGVzLgpAQCAtNzk1LDggKzc5Nyw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAg
Ly8gR2l2ZW4gYSByZWN0IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNlLCBjb21wdXRl
IGEgcmVjdCBzdWl0YWJsZSBmb3IgcmVwYWludGluZwogICAgIC8vIHRoYXQgcmVjdCBpbiB0aGUg
Y29vcmRpbmF0ZSBzcGFjZSBvZiByZXBhaW50Q29udGFpbmVyLgotICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCA9IGZhbHNl
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVk
ID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVw
YWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3Qm
IHJlcGFpbnRSZWN0LCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwogCiAgICAgLy8gSWYgbXVs
dGlwbGUtY29sdW1uIGxheW91dCByZXN1bHRzIGluIGFwcGx5aW5nIGFuIG9mZnNldCB0byB0aGUg
Z2l2ZW4gcG9pbnQsIGFkZCB0aGUgc2FtZQogICAgIC8vIG9mZnNldCB0byB0aGUgZ2l2ZW4gc2l6
ZS4KQEAgLTgzOCw3ICs4NDAsNyBAQCBwdWJsaWM6CiAgICAgLy8gQSBzaW5nbGUgcmVjdGFuZ2xl
IHRoYXQgZW5jb21wYXNzZXMgYWxsIG9mIHRoZSBzZWxlY3RlZCBvYmplY3RzIHdpdGhpbiB0aGlz
IG9iamVjdC4gIFVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB0aWdodGVzdAogICAgIC8vIHBvc3NpYmxl
IGJvdW5kaW5nIGJveCBmb3IgdGhlIHNlbGVjdGlvbi4KICAgICBMYXlvdXRSZWN0IHNlbGVjdGlv
blJlY3QoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIHsgcmV0dXJuIHNlbGVjdGlv
blJlY3RGb3JSZXBhaW50KDAsIGNsaXBUb1Zpc2libGVDb250ZW50KTsgfQotICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
LypyZXBhaW50Q29udGFpbmVyKi8sIGJvb2wgLypjbGlwVG9WaXNpYmxlQ29udGVudCovID0gdHJ1
ZSkgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVj
dGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRh
aW5lciovLCBib29sIC8qY2xpcFRvVmlzaWJsZUNvbnRlbnQqLyA9IHRydWUpIHsgcmV0dXJuIExh
eW91dFJlY3QoKTsgfQogCiAgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYXNTZWxlY3RlZENoaWxkcmVuKCkgY29u
c3QgeyByZXR1cm4gc2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lOyB9CkBAIC05MDYs
MTIgKzkwOCwxMiBAQCBwdWJsaWM6CiAKICAgICAvLyBNYXAgcG9pbnRzIGFuZCBxdWFkcyB0aHJv
dWdoIGVsZW1lbnRzLCBwb3RlbnRpYWxseSB2aWEgM2QgdHJhbnNmb3Jtcy4gWW91IHNob3VsZCBu
ZXZlciBuZWVkIHRvIGNhbGwgdGhlc2UgZGlyZWN0bHk7IHVzZQogICAgIC8vIGxvY2FsVG9BYnNv
bHV0ZS9hYnNvbHV0ZVRvTG9jYWwgbWV0aG9kcyBpbnN0ZWFkLgotICAgIHZpcnR1YWwgdm9pZCBt
YXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlD
b250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBB
cHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNm
b3JtcywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKIAogICAgIC8vIFB1c2hlcyBzdGF0ZSBvbnRv
IFJlbmRlckdlb21ldHJ5TWFwIGFib3V0IGhvdyB0byBtYXAgY29vcmRpbmF0ZXMgZnJvbSB0aGlz
IHJlbmRlcmVyIHRvIGl0cyBjb250YWluZXIsIG9yIGFuY2VzdG9yVG9TdG9wQXQgKHdoaWNoZXZl
ciBpcyBlbmNvdW50ZXJlZCBmaXJzdCkuCiAgICAgLy8gUmV0dXJucyB0aGUgcmVuZGVyZXIgd2hp
Y2ggd2FzIG1hcHBlZCB0byAoY29udGFpbmVyIG9yIGFuY2VzdG9yVG9TdG9wQXQpLgotICAgIHZp
cnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYp
IGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29u
dGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJl
bmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBzaG91bGRVc2VUcmFuc2Zv
cm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogY29udGFpbmVyKSBjb25zdDsKICAg
ICB2b2lkIGdldFRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBjb250
YWluZXIsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpIGNvbnN0OwpAQCAtOTU1LDcgKzk1Nyw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAgICAgdm9pZCBhcmVuYURlbGV0ZShSZW5kZXJB
cmVuYSosIHZvaWQqIG9iamVjdEJhc2UpOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxp
bmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWlu
ZXIqLywgTGF5b3V0UG9pbnQqIC8qY2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVyKi8gPSAw
KSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3Qg
b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogLypyZXBhaW50
Q29udGFpbmVyKi8sIExheW91dFBvaW50KiAvKmNhY2hlZE9mZnNldFRvUmVwYWludENvbnRhaW5l
ciovID0gMCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CiAKICAgICB2aXJ0dWFsIGJv
b2wgY2FuQmVSZXBsYWNlZFdpdGhJbmxpbmVSdW5JbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCAxZWJiMTUyNmUzMDMwNDUwNmQw
ZjI4NTExYTZiNDFjMDViNDNjMDk4Li5jMmZmZjYyNmNmYzk1NGQ1OGFhZjYwZGRiZDMwMzcyNTc4
NzZkZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAK
QEAgLTQ5Niw3ICs0OTYsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyUmVwbGFjZWQ6OnBvc2l0
aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgIHJldHVybiBSZW5kZXJC
b3g6OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclJlcGxh
Y2VkOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkKK0xheW91dFJlY3QgUmVuZGVy
UmVwbGFjZWQ6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpCiB7CiAgICAgQVNT
RVJUKCFuZWVkc0xheW91dCgpKTsKIApAQCAtNTYxLDcgKzU2MSw3IEBAIGJvb2wgUmVuZGVyUmVw
bGFjZWQ6OmlzU2VsZWN0ZWQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTGF5b3V0
UmVjdCBSZW5kZXJSZXBsYWNlZDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRl
clJlcGxhY2VkOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIGlmIChzdHlsZSgpLT52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSAmJiAhZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRl
bnQoKSkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmgKaW5kZXggNzgyNmNlYmEzZjYyMDE3MmM0MDllZmNkN2JlMWZm
NDNlN2UwODUzZS4uNmEyNDIxNTdmYzMzOWU5MDU0NTkzMTVlN2Q3NWRiZjQyOTcwYWM4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTcxLDEzICs3MSwx
MyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocygpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFBvaW50JikgeyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIp
IGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBPVkVS
UklERTsKIAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25M
ZWFmKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNl
bGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSk7CisgICAgdmlydHVhbCBMYXlv
dXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBPVkVSUklE
RTsKICAgICB2b2lkIGNvbXB1dGVBc3BlY3RSYXRpb0luZm9ybWF0aW9uRm9yUmVuZGVyQm94KFJl
bmRlckJveCosIEZsb2F0U2l6ZSYgY29uc3RyYWluZWRTaXplLCBkb3VibGUmIGludHJpbnNpY1Jh
dGlvLCBib29sJiBpc1BlcmNlbnRhZ2VJbnRyaW5zaWNTaXplKSBjb25zdDsKIAogICAgIG11dGFi
bGUgSW50U2l6ZSBtX2ludHJpbnNpY1NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2VsZWN0aW9uSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNlbGVjdGlvbkluZm8uaAppbmRleCBhNTEzMzcyZGZiOTg1N2Y3NmE2NzlhZWJlNGQ3
NWRkMWM0ZmM1MjIyLi41MGRmZjcwYWE0ZTBiYzRmYjI3NTNjMWM0MWMxNTViY2JmMjdmYzUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VsZWN0aW9uSW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmgKQEAg
LTQ4LDEyICs0OCwxMiBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIFJlbmRlck9iamVjdCog
b2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Q7IH0KLSAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWludENvbnRhaW5l
cjsgfQorICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIoKSBjb25z
dCB7IHJldHVybiBtX3JlcGFpbnRDb250YWluZXI7IH0KICAgICBSZW5kZXJPYmplY3Q6OlNlbGVj
dGlvblN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgUmVuZGVyT2JqZWN0KiBtX29iamVjdDsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCog
bV9yZXBhaW50Q29udGFpbmVyOworICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIG1fcmVwYWlu
dENvbnRhaW5lcjsKICAgICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIG1fc3RhdGU7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4
IDk1MDMyYWJjYWZlNjgwNjdjNzFjOTg5MWRiNDZlNmNlZjVkNDBkN2IuLjk0NGE5MGM3MGYxMDQ4
MGQ2YjYxOTk4MGI2N2U4NmMwYWYxOGRjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAgTGF5b3V0U2l6ZSBSZW5k
ZXJUYWJsZUNlbGw6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBM
YXlvdXRQb2kKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclRhYmxl
Q2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclRhYmxlQ2VsbDo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lcikgY29uc3QKIHsKICAgICAvLyBJZiB0aGUgdGFibGUgZ3JpZCBpcyBkaXJ0eSwg
d2UgY2Fubm90IGdldCByZWxpYWJsZSBpbmZvcm1hdGlvbiBhYm91dCBhZGpvaW5pbmcgY2VsbHMs
CiAgICAgLy8gc28gd2UgaWdub3JlIG91dHNpZGUgYm9yZGVycy4gVGhpcyBzaG91bGQgbm90IGJl
IGEgcHJvYmxlbSBiZWNhdXNlIGl0IG1lYW5zIHRoYXQKQEAgLTMyOCw3ICszMjgsNyBAQCBMYXlv
dXRSZWN0IFJlbmRlclRhYmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqCiAgICAgcmV0dXJuIHI7CiB9CiAKLXZvaWQgUmVuZGVyVGFibGVD
ZWxsOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIExheW91dFJlY3QmIHIsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclRh
YmxlQ2VsbDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHIsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAg
aWYgKHJlcGFpbnRDb250YWluZXIgPT0gdGhpcykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCmluZGV4IGY1OWEyMGE5MmUwNGU1OGY0
MTY1YmViNTc0NDU4NWViODU5M2VlZjUuLjQ1ZGI3YWExOWM3OTdkNzEyMTM4YTgxMjkyYjhiOGE0
ZjYxNWMyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgK
QEAgLTE5Nyw4ICsxOTcsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBib3hTaGFkb3dT
aG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxp
bmVGbG93Qm94KikgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zm
c2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wq
IG9mZnNldERlcGVuZHNPblBvaW50ID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0
IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0Jiwg
Ym9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9y
UmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRS
ZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKIAogICAgIGludCBib3Jk
ZXJIYWxmTGVmdChib29sIG91dGVyKSBjb25zdDsKICAgICBpbnQgYm9yZGVySGFsZlJpZ2h0KGJv
b2wgb3V0ZXIpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ29sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNv
bC5jcHAKaW5kZXggYmFmMTkxNDMxOWNkZmRiYzM4NmRkNmYwZjMxMTllODZlYTcwOWUzMC4uN2Fh
ODM0MWE3ZTIyZGQ2MDk0YTJiZGMzMjMxN2VhM2I0ZjI3ZWEzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCkBAIC05Myw3ICs5Myw3IEBAIGJvb2wgUmVu
ZGVyVGFibGVDb2w6OmNhbkhhdmVDaGlsZHJlbigpIGNvbnN0CiAgICAgcmV0dXJuIGlzVGFibGVD
b2x1bW5Hcm91cCgpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclRhYmxlQ29sOjpjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyVGFibGVDb2w6OmNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0
CiB7CiAgICAgLy8gRm9yIG5vdywganVzdCByZXBhaW50IHRoZSB3aG9sZSB0YWJsZS4KICAgICAv
LyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gZG8gdGhpcywgZS5nLiwgbmVlZCB0byByZXBh
aW50IGFsbCB0aGUgY2VsbHMgdGhhdCB3ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ29sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDb2wuaAppbmRleCA2MWY4ZmEzNDYyYzRjZTBhYzNmMTE2NTEyYTFhMmVmYmE3ZGM1NGQ4
Li4xYTlmYWM2ZWMyM2Q2ZjBjNWM3MTA1ZGJmYzExNDMxZThkYTgyNGE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0
dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VD
aGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNw
cAppbmRleCBiMTAyZjA4NDI0M2U3NzJjOTgwZDRhZjkzZjA2NWU0MjgzYzEzNzM5Li5jODZmMTRj
MmMwYzFjZWY5NTE5MzllMTZlYmI2ODliODZhM2NiMmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFJlbmRl
clRhYmxlUm93OjpsYXlvdXQoKQogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0KIAotTGF5
b3V0UmVjdCBSZW5kZXJUYWJsZVJvdzo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJl
bmRlclRhYmxlUm93OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIEFTU0VSVChwYXJlbnQo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJv
dy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKaW5kZXggMTJm
ODMzYmFmMGYwNjU3MDUyOGI3N2ViNjk0YjE2NDU3NjkzZDhjZC4uODBkNGMxN2U2NDNhM2IwYWM0
ZGQ3YzE3ZjcyNGNjNGJiNzJmZjdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93LmgKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxk
ID0gMCk7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwotICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVx
dWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5D
b250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFj
dGlvbikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIGhhc092ZXJmbG93Q2xpcCgpIHx8IGhhc1RyYW5zZm9ybSgpIHx8
IGhhc0hpZGRlbkJhY2tmYWNlKCkgfHwgaGFzQ2xpcFBhdGgoKSB8fCBjcmVhdGVzR3JvdXAoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDRkYzIwMGMwOGY2
YTlhN2YzMzIxYzg3OWMyOGMyZTk5ZjdhYjg4YWEuLmM0ZWYyOWZjMmI1NjM5Mzg5Njk5OTcxODY5
NGFmM2IwODQ1ZTc3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAK
QEAgLTE2MjAsNyArMTYyMCw3IEBAIExheW91dFJlY3QgUmVuZGVyVGV4dDo6bGluZXNWaXN1YWxP
dmVyZmxvd0JvdW5kaW5nQm94KCkgY29uc3QKICAgICByZXR1cm4gcmVjdDsKIH0KIAotTGF5b3V0
UmVjdCBSZW5kZXJUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyVGV4
dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyVG9S
ZXBhaW50ID0gY29udGFpbmluZ0Jsb2NrKCk7CiAKQEAgLTE2MzYsNyArMTYzNiw3IEBAIExheW91
dFJlY3QgUmVuZGVyVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpCiAgICAgcmV0dXJuIHJlbmRlcmVyVG9SZXBhaW50LT5jbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsKIH0KIAotTGF5b3V0UmVj
dCBSZW5kZXJUZXh0OjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkKK0xheW91dFJl
Y3QgUmVuZGVyVGV4dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkKIHsKICAg
ICBBU1NFUlQoIW5lZWRzTGF5b3V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuaAppbmRleCA2ZmM0YzY3YTc3ZTU1ZTc0ZGZiY2ZkMmQ1NDdiMjYxZTk5OTcyMWJmLi40Y2Y5
YzRlMmE2YWIwODBiMzUzY2RmZmZiZmQ3MDlmMzY1NzUxZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmgKQEAgLTEwMywxMyArMTAzLDEzIEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlIHMpOwotICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRy
dWUpOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVD
b250ZW50ID0gdHJ1ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGxvY2FsQ2Fy
ZXRSZWN0KElubGluZUJveCosIGludCBjYXJldE9mZnNldCwgTGF5b3V0VW5pdCogZXh0cmFXaWR0
aFRvRW5kT2ZMaW5lID0gMCk7CiAKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luTGVmdCgp
IGNvbnN0IHsgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5MZWZ0
KCksIDAsIHZpZXcoKSk7IH0KICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luUmlnaHQoKSBj
b25zdCB7IHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luUmlnaHQo
KSwgMCwgdmlldygpKTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxv
d1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBj
b25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJ
REU7CiAKICAgICBJbmxpbmVUZXh0Qm94KiBmaXJzdFRleHRCb3goKSBjb25zdCB7IHJldHVybiBt
X2ZpcnN0VGV4dEJveDsgfQogICAgIElubGluZVRleHRCb3gqIGxhc3RUZXh0Qm94KCkgY29uc3Qg
eyByZXR1cm4gbV9sYXN0VGV4dEJveDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwCmluZGV4IDk0ZGEyNzcwM2FhMTQ2YmYwZTAzNzIzYzJkOTlkNDY4NzUyOWY1ODUuLjY2
MWJjOTRlNGFmNTdkNjgyYzg0ZTA5ODZiNDk4ZjhjNWRlODAzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFJlbmRlclZp
ZXc6OmxheW91dCgpCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCi12b2lkIFJlbmRl
clZpZXc6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRh
aW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJWaWV3Ojpt
YXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZs
YWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIC8vIElmIGEgY29udGFpbmVy
IHdhcyBzcGVjaWZpZWQsIGFuZCB3YXMgbm90IDAgb3IgdGhlIFJlbmRlclZpZXcsCiAgICAgLy8g
dGhlbiB3ZSBzaG91bGQgaGF2ZSBmb3VuZCBpdCBieSBub3cuCkBAIC0xOTMsNyArMTkzLDcgQEAg
dm9pZCBSZW5kZXJWaWV3OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBUcmEKICAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZShtX2Zy
YW1lVmlldy0+c2Nyb2xsT2Zmc2V0Rm9yRml4ZWRQb3NpdGlvbigpKTsKIH0KIAotY29uc3QgUmVu
ZGVyT2JqZWN0KiBSZW5kZXJWaWV3OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2Vv
bWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclZpZXc6OnB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0
b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAogewogICAgIC8vIElm
IGEgY29udGFpbmVyIHdhcyBzcGVjaWZpZWQsIGFuZCB3YXMgbm90IDAgb3IgdGhlIFJlbmRlclZp
ZXcsCiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgaGF2ZSBmb3VuZCBpdCBieSBub3cuCkBAIC0yNjgs
NyArMjY4LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXND
b21wb3NpdGVkKFJlbmRlck9iamVjdCogb2JqZWN0KQogewotICAgIHJldHVybiBvYmplY3QtPmhh
c0xheWVyKCkgJiYgdG9SZW5kZXJCb3hNb2RlbE9iamVjdChvYmplY3QpLT5sYXllcigpLT5pc0Nv
bXBvc2l0ZWQoKTsKKyAgICByZXR1cm4gb2JqZWN0LT5oYXNMYXllcigpICYmIHRvUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdChvYmplY3QpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKIH0KIAogc3Rh
dGljIGlubGluZSBib29sIHJlbmRlcmVyT2JzY3VyZXNCYWNrZ3JvdW5kKFJlbmRlck9iamVjdCog
b2JqZWN0KQpAQCAtMzkxLDcgKzM5MSw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cmVwYWludFJlY3Rh
bmdsZUluVmlld0FuZENvbXBvc2l0ZWRMYXllcnMoY29uc3QgTGF5b3V0UmVjdCYgdXIsCiAjZW5k
aWYKIH0KIAotdm9pZCBSZW5kZXJWaWV3Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4
ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29s
IGZpeGVkKSBjb25zdAogewogICAgIC8vIElmIGEgY29udGFpbmVyIHdhcyBzcGVjaWZpZWQsIGFu
ZCB3YXMgbm90IDAgb3IgdGhlIFJlbmRlclZpZXcsCiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgaGF2
ZSBmb3VuZCBpdCBieSBub3cuCkBAIC00MTMsMjAgKzQxMywyMCBAQCB2b2lkIFJlbmRlclZpZXc6
OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgTAogICAgICAgICByZWN0Lm1vdmUobV9mcmFtZVZpZXctPnNjcm9sbE9mZnNldEZvckZp
eGVkUG9zaXRpb24oKSk7CiAgICAgICAgIAogICAgIC8vIEFwcGx5IG91ciB0cmFuc2Zvcm0gaWYg
d2UgaGF2ZSBvbmUgKGJlY2F1c2Ugb2YgZnVsbCBwYWdlIHpvb21pbmcpLgotICAgIGlmICghcmVw
YWludENvbnRhaW5lciAmJiBtX2xheWVyICYmIG1fbGF5ZXItPnRyYW5zZm9ybSgpKQotICAgICAg
ICByZWN0ID0gbV9sYXllci0+dHJhbnNmb3JtKCktPm1hcFJlY3QocmVjdCk7CisgICAgaWYgKCFy
ZXBhaW50Q29udGFpbmVyICYmIGxheWVyKCkgJiYgbGF5ZXIoKS0+dHJhbnNmb3JtKCkpCisgICAg
ICAgIHJlY3QgPSBsYXllcigpLT50cmFuc2Zvcm0oKS0+bWFwUmVjdChyZWN0KTsKIH0KIAogdm9p
ZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKLSAgICByZWN0cy5hcHBl
bmQocGl4ZWxTbmFwcGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgbV9sYXllci0+c2l6ZSgp
KSk7CisgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWNjdW11bGF0ZWRPZmZz
ZXQsIGxheWVyKCktPnNpemUoKSkpOwogfQogCiB2b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUXVh
ZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAg
ICBpZiAod2FzRml4ZWQpCiAgICAgICAgICp3YXNGaXhlZCA9IGZhbHNlOwotICAgIHF1YWRzLmFw
cGVuZChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX2xheWVyLT5zaXplKCkpKTsKKyAgICBxdWFk
cy5hcHBlbmQoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbGF5ZXIoKS0+c2l6ZSgpKSk7CiB9CiAK
IHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbihSZW5kZXJPYmplY3Qq
IG9iamVjdCwgdW5zaWduZWQgb2Zmc2V0KQpAQCAtNDcxLDcgKzQ3MSw3IEBAIEludFJlY3QgUmVu
ZGVyVmlldzo6c2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpIGNvbnN0
CiAgICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8qIGluZm8gPSBpLT5zZWNvbmQuZ2V0KCk7CiAg
ICAgICAgIC8vIFJlbmRlclNlbGVjdGlvbkluZm86OnJlY3QoKSBpcyBpbiB0aGUgY29vcmRpbmF0
ZXMgb2YgdGhlIHJlcGFpbnRDb250YWluZXIsIHNvIG1hcCB0byBwYWdlIGNvb3JkaW5hdGVzLgog
ICAgICAgICBMYXlvdXRSZWN0IGN1cnJSZWN0ID0gaW5mby0+cmVjdCgpOwotICAgICAgICBpZiAo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBpbmZvLT5yZXBhaW50Q29u
dGFpbmVyKCkpIHsKKyAgICAgICAgaWYgKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIgPSBpbmZvLT5yZXBhaW50Q29udGFpbmVyKCkpIHsKICAgICAgICAgICAgIEZsb2F0
UXVhZCBhYnNRdWFkID0gcmVwYWludENvbnRhaW5lci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9h
dFJlY3QoY3VyclJlY3QpKTsKICAgICAgICAgICAgIGN1cnJSZWN0ID0gYWJzUXVhZC5lbmNsb3Np
bmdCb3VuZGluZ0JveCgpOyAKICAgICAgICAgfQpAQCAtNTc2LDcgKzU3Niw3IEBAIHZvaWQgUmVu
ZGVyVmlldzo6c2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIGludCBzdGFydFBvcywg
UmVuZGVyT2JqZWN0KiBlCiAgICAgfQogCiAgICAgaWYgKGJsb2NrUmVwYWludE1vZGUgIT0gUmVw
YWludE5vdGhpbmcpCi0gICAgICAgIG1fbGF5ZXItPmNsZWFyQmxvY2tTZWxlY3Rpb25HYXBzQm91
bmRzKCk7CisgICAgICAgIGxheWVyKCktPmNsZWFyQmxvY2tTZWxlY3Rpb25HYXBzQm91bmRzKCk7
CiAKICAgICAvLyBOb3cgdGhhdCB0aGUgc2VsZWN0aW9uIHN0YXRlIGhhcyBiZWVuIHVwZGF0ZWQg
Zm9yIHRoZSBuZXcgb2JqZWN0cywgd2FsayB0aGVtIGFnYWluIGFuZAogICAgIC8vIHB1dCB0aGVt
IGluIHRoZSBuZXcgb2JqZWN0cyBsaXN0LgpAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgUmVuZGVy
Vmlldzo6Z2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdComIHN0YXJ0UmVuZGVyZXIsIGludCYgc3Rh
cnRPZmZzZXQsIFJlCiAKIHZvaWQgUmVuZGVyVmlldzo6Y2xlYXJTZWxlY3Rpb24oKQogewotICAg
IG1fbGF5ZXItPnJlcGFpbnRCbG9ja1NlbGVjdGlvbkdhcHMoKTsKKyAgICBsYXllcigpLT5yZXBh
aW50QmxvY2tTZWxlY3Rpb25HYXBzKCk7CiAgICAgc2V0U2VsZWN0aW9uKDAsIC0xLCAwLCAtMSwg
UmVwYWludE5ld01pbnVzT2xkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmgKaW5kZXggZGE0YjIwM2EwY2NmYjk5YjkxNzQ4ZTIzNjc2NWVkY2Q4Yzk3ZjI5My4uNjk2MjIx
YmU3NzU2OTE4MmQ1YTU2NDA3M2VkZGJlYmJkNzNlMWUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIEZyYW1lVmll
dyogZnJhbWVWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVZpZXc7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRWaWV3UmVjdGFuZ2xlKGNvbnN0
IExheW91dFJlY3QmLCBib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsKICAgICAvLyBSZXBhaW50IHRo
ZSB2aWV3LCBhbmQgYWxsIGNvbXBvc2l0ZWQgbGF5ZXJzIHRoYXQgaW50ZXJzZWN0IHRoZSBnaXZl
biBhYnNvbHV0ZSByZWN0YW5nbGUuCiAgICAgLy8gRklYTUU6IGlkZWFsbHkgd2UnZCBuZXZlciBo
YXZlIHRvIGRvIHRoaXMsIGlmIGFsbCByZXBhaW50cyBhcmUgY29udGFpbmVyLXJlbGF0aXZlLgpA
QCAtMjA2LDggKzIwNiw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1JlbmRlckNvdW50ZXJzKCkg
eyByZXR1cm4gbV9yZW5kZXJDb3VudGVyQ291bnQ7IH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1
YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2Rl
ID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdh
c0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmpl
Y3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFu
Y2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9
IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCBib29sKiB3YXNG
aXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0
KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFu
Y2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNl
VHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNDb2x1bW5zKGludCBkZXNpcmVkQ29sdW1uQ291bnQpIGNvbnN0IE9WRVJSSURFOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcAppbmRleCAw
M2JkZDNmOGI5NWRlYmVmOTY4MzYzNDkxY2MwZDNkMWI0MjA0YmZjLi5lMzhhN2YyNzBmZmUyODA0
MjA5ZGFiZTIyMzBjZWI1N2ZkMzE2NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJSZW5k
ZXJJbmxpbmUuY3BwIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmNwcCIKICNpbmNsdWRlICJSZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwIgorI2luY2x1ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3Qu
Y3BwIgogI2luY2x1ZGUgIlJlbmRlckxpbmVCb3hMaXN0LmNwcCIKICNpbmNsdWRlICJSZW5kZXJM
aXN0Qm94LmNwcCIKICNpbmNsdWRlICJSZW5kZXJMaXN0SXRlbS5jcHAiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCmluZGV4IDM2MTI3OTQxNWFh
ZGU2Mjk4ZTNkMjJjMDVmZjZhNGZlM2NlZDk0MDguLjlmMzkzNTdjMWI2NGY0MDAxNWI4OTljNzgx
YmFiMTA0ZGQ0Njk2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHQmxvY2suY3BwCkBAIC02MSw5ICs2MSw5IEBAIHZvaWQgUmVuZGVyU1ZHQmxvY2s6OnNl
dFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIFJlbmRlckJsb2NrOjpz
ZXRTdHlsZSh1c2VTdHlsZS5yZWxlYXNlKCkpOwogfQogCi12b2lkIFJlbmRlclNWR0Jsb2NrOjp1
cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKQordm9pZCBSZW5kZXJTVkdCbG9jazo6dXBkYXRl
RnJvbVN0eWxlKCkKIHsKLSAgICBSZW5kZXJCbG9jazo6dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0
eWxlKCk7CisgICAgUmVuZGVyQmxvY2s6OnVwZGF0ZUZyb21TdHlsZSgpOwogCiAgICAgLy8gUmVu
ZGVyU1ZHbG9jaywgdXNlZCBieSBSZW5kZXIoU1ZHVGV4dHxGb3JlaWduT2JqZWN0KSwgaXMgbm90
IGFsbG93ZWQgdG8gY2FsbCBzZXRIYXNPdmVyZmxvd0NsaXAodHJ1ZSkuCiAgICAgLy8gUmVuZGVy
QmxvY2sgYXNzdW1lcyBhIGxheWVyIHRvIGJlIHByZXNlbnQgd2hlbiB0aGUgb3ZlcmZsb3cgY2xp
cCBmdW5jdGlvbmFsaXR5IGlzIHJlcXVlc3RlZC4gQm90aApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCmluZGV4IDdmNWI3ODUzMjhiMDU3M2UyOWZmMzk4
ZmYyMDc3MTE1ODUyM2EyNmEuLjIyMmQ1ZWUyMDM1MjBhNTBmZjdjOTI0MzQ5YjQyMWFhMDM3OTli
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxv
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgK
QEAgLTM5LDcgKzM5LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7Ci0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9t
U3R5bGUoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Zv
cmVpZ25PYmplY3QuY3BwCmluZGV4IGZlMGQ5YTEyYjgxZDNmYWViMGQyYTg2NTI2ZTJlMDVjOGYw
YWMzYmYuLjM0MzBiNTU3NTQyYWU3MzYxMTFhMWYzODU0NzJkNTE1MTkyNWMwOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0LmNwcApAQCAtODgsMTIgKzg4LDEyIEBAIHZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKICAgICB9CiB9
CiAKLUxheW91dFJlY3QgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0
CitMYXlvdXRSZWN0IFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIpOwogfQogCi12b2lkIFJlbmRlclNWR0ZvcmVp
Z25PYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBj
b25zdAordm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVw
YWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3Qm
IHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6
OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHJlcGFp
bnRSZWN0LCBmaXhlZCk7CiB9CkBAIC0xOTAsMTIgKzE5MCwxMiBAQCBib29sIFJlbmRlclNWR0Zv
cmVpZ25PYmplY3Q6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJl
c3VsdCYsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmpl
Y3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5l
ckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdGb3JlaWdu
T2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0Nv
bnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIFNWR1JlbmRl
clN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIodGhpcywgcmVwYWludENvbnRhaW5lciwgdHJh
bnNmb3JtU3RhdGUsIG1vZGUgJiBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3Jtcywgd2FzRml4ZWQpOwog
fQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OnB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9w
QXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9i
amVjdCogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRy
eU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6
OnB1c2hNYXBwaW5nVG9Db250YWluZXIodGhpcywgYW5jZXN0b3JUb1N0b3BBdCwgZ2VvbWV0cnlN
YXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdGb3JlaWduT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ZvcmVpZ25PYmplY3QuaAppbmRleCAxZjM3YTNmY2Y0ZGFmZTUxYWRlYzQyYzEwYWFkNmYyODBk
MTMxOGRiLi4yYmJiMTVlZDEzOGMyNTE1ZGE5MTY4OTIyYTNiM2JkNzU3MzBjMmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmpl
Y3QuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJl
Y3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBj
bGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZs
b2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CkBAIC01NCw4ICs1NCw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVz
dWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ZvcmVpZ25PYmplY3QoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29u
dGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRGb3JUcmFu
c2Zvcm1zLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwg
Y29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRh
aW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNm
b3JtcywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNv
bnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsg
bV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oCmluZGV4
IGI5MGFiNTA4MTA0MTEzODQxNDFjMzIzODk0NzZlM2M4NDQzNDA2NWIuLmFmOGI4OTg5MWJjOWQw
NGQ5M2ZmZThlZTRkNjFkOWEzNzMxOTNlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaApAQCAtNDMsNyArNDMsNyBAQCBw
dWJsaWM6CiAgICAgLy8gVGhpcyBvdmVycmlkZXMgYXJlIG5lZWRlZCB0byBwcmV2ZW50IEFTU0VS
VHMgb24gPHN2Zz48c3RvcCAvPjwvc3ZnPgogICAgIC8vIFJlbmRlck9iamVjdCdzIGRlZmF1bHQg
aW1wbGVtZW50YXRpb25zIEFTU0VSVF9OT1RfUkVBQ0hFRCgpCiAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDAwCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0
IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KikgY29u
c3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBv
YmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UmVjdCgpOyB9CiAgICAgdmly
dHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBGbG9hdFJl
Y3QoKTsgfQogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5h
dGVzKCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCmluZGV4IGYy
NmM1ZmM2MWEzN2Y4MjA3ZDRkNjQ5YmU2ODA5ZDUyYTJmODgyNWYuLmIzMDFlYTIzZWRhY2E4ZjBh
N2YyYjAzNmEyNGM4YmEwZGFjNDYxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaApAQCAtNDMsNyArNDMsNyBA
QCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50Jik7CiAgICAgCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxv
d1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KikgY29uc3QgeyByZXR1cm4gTGF5
b3V0UmVjdCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBMYXlvdXRSZWN0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBu
b2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCmluZGV4IDIxYmVk
NGExNWViNzEyMjQ2ZDRmOWE5MzE0YmNjMmU3MTY2ZjFjMTIuLmNmODE1M2ExNDliNDA4NjkyM2Zi
OWM2NTZiNDFlMGI0YTQ2YjUxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZS5jcHAKQEAgLTY5LDIyICs2OSwyMiBAQCBGbG9hdFJlY3QgUmVu
ZGVyU1ZHSW5saW5lOjpyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0CiAgICAg
cmV0dXJuIEZsb2F0UmVjdCgpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNWR0lubGluZTo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclNWR0lubGluZTo6Y2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lcik7CiB9CiAKLXZvaWQgUmVuZGVy
U1ZHSW5saW5lOjpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkg
Y29uc3QKK3ZvaWQgUmVuZGVyU1ZHSW5saW5lOjpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFp
bnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1
dGVGbG9hdFJlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRSZWN0
LCBmaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHSW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVy
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYg
dHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBib29sKiB3YXNG
aXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHSW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0
cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIo
dGhpcywgcmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUgJiBTbmFwT2Zmc2V0
Rm9yVHJhbnNmb3Jtcywgd2FzRml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRl
clNWR0lubGluZTo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9i
amVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBj
b25zdAorY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdJbmxpbmU6OnB1c2hNYXBwaW5nVG9D
b250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwg
UmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAogewogICAgIHJldHVybiBTVkdS
ZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKHRoaXMsIGFuY2VzdG9yVG9TdG9w
QXQsIGdlb21ldHJ5TWFwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZS5oCmluZGV4IDhlZjljZWQ3YWExMjBlMzEwYzBjZDc5YzNkMmM4YmY1YzU0
ZDFlY2YuLmY2NTlhMTNiYTkxMGVmYTkyOTc4M2MyMzQ1NWExNWQ2Y2Q5YjVjZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaApAQCAtNDUsMTAg
KzQ1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ0Jv
eCgpIGNvbnN0OwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3Jk
aW5hdGVzKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9
IGZhbHNlKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBM
b2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZz
ZXRGb3JUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwotICAg
IHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0
IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1h
cCYpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBm
aXhlZCA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxU
b0NvbnRhaW5lcihSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFu
c2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWlu
ZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5n
VG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BB
dCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5kZXggNTYzNzJiNDlmNTQxNDcwNTg0ODY4MWJjNDZjY2U2
ZWYxMDM0NjgxMy4uNjRlYjUzMzIxOTFiNjA0YjY0M2RiNzFjN2U2MmRkZmNhZWNmODIwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9i
amVjdC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlJl
bmRlclNWR01vZGVsT2JqZWN0LmgiCiAKKyNpbmNsdWRlICJSZW5kZXJMYXllck1vZGVsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5o
IgogI2luY2x1ZGUgIlNWR1Jlc291cmNlc0NhY2hlLmgiCkBAIC00NSwyMiArNDYsMjIgQEAgUmVu
ZGVyU1ZHTW9kZWxPYmplY3Q6OlJlbmRlclNWR01vZGVsT2JqZWN0KFNWR1N0eWxlZEVsZW1lbnQq
IG5vZGUpCiB7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lcik7CiB9CiAKLXZvaWQgUmVuZGVy
U1ZHTW9kZWxPYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZp
eGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZv
clJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRS
ZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBw
b3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyLCBy
ZXBhaW50UmVjdCwgZml4ZWQpOwogfQogCi12b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjptYXBM
b2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBU
cmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBt
b2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om1h
cExvY2FsVG9Db250YWluZXIoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxh
Z3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6
bWFwTG9jYWxUb0NvbnRhaW5lcih0aGlzLCByZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0
ZSwgbW9kZSAmIFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0
IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OnB1c2hNYXBwaW5nVG9Db250YWlu
ZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdl
b21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9iamVjdCogUmVuZGVy
U1ZHTW9kZWxPYmplY3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5
TWFwKSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKHRoaXMsIGFuY2VzdG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFwKTsKIH0KQEAgLTY4
LDcgKzY5LDcgQEAgY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdNb2RlbE9iamVjdDo6cHVz
aE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3gKIC8vIENvcGllZCBmcm9tIFJlbmRl
ckJveCwgdGhpcyBtZXRob2QgbGlrZWx5IHJlcXVpcmVzIGZ1cnRoZXIgcmVmYWN0b3JpbmcgdG8g
d29yayBlYXNpbHkgZm9yIGJvdGggU1ZHIGFuZCBDU1MgQm94IE1vZGVsIGNvbnRlbnQuCiAvLyBG
SVhNRTogVGhpcyBtYXkgYWxzbyBuZWVkIHRvIG1vdmUgaW50byBTVkdSZW5kZXJTdXBwb3J0IGFz
IHRoZSBSZW5kZXJCb3ggdmVyc2lvbiBkZXBlbmRzCiAvLyBvbiBib3JkZXJCb3VuZGluZ0JveCgp
IHdoaWNoIFNWRyBSZW5kZXJCb3ggc3ViY2xhc2VzIChsaWtlIFNWR1JlbmRlckJsb2NrKSBkbyBu
b3QgaW1wbGVtZW50LgotTGF5b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGluZUJv
dW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExh
eW91dFBvaW50KikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om91dGxp
bmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIExheW91dFBvaW50KikgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IGJveCA9IGVuY2xvc2lu
Z0xheW91dFJlY3QocmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSk7CiAgICAgYWRqdXN0
UmVjdEZvck91dGxpbmVBbmRTaGFkb3coYm94KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAppbmRleCBiODNjYTBmY2JiYmZhNGQ1
NjczMjQ3NWExMTZiZGZkYTM4ZWZhMDIzLi4zYjljOGNlMTk5NGNkYzc4NDAyNGNmOWVlY2FiN2E1
YzM3MWFiODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdNb2RlbE9iamVjdC5oCkBAIC01MSwxNSArNTEsMTUgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAg
dmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7Ci0gICAgdmly
dHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRQb2ludCopIGNvbnN0OworICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9pbnQqKSBjb25z
dCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRS
ZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNG
aXhlZCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBM
b2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZz
ZXRGb3JUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwotICAg
IHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0
IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1h
cCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9j
YWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0
Rm9yVHJhbnNmb3JtcywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1h
cCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpOwogICAgIHZpcnR1YWwg
dm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBv
bGRTdHlsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jv
b3QuY3BwCmluZGV4IDc0NzY3OTI2NjU3ODk0NDk2NGE5YTcwYzM1NTIxYjRkNWIwYTBmYTIuLmI2
OWRkMzE3NjUwZjYzOGQxYjYxMmJiMTRkMjA5YTkyZjdiY2VkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtMzY5LDEyICszNjksMTIg
QEAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBSZW5kZXJTVkdSb290Ojpsb2NhbFRvUGFyZW50VHJh
bnNmb3JtKCkgY29uc3QKICAgICByZXR1cm4gbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtOwogfQog
Ci1MYXlvdXRSZWN0IFJlbmRlclNWR1Jvb3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVj
dCBSZW5kZXJTVkdSb290OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIHJldHVybiBTVkdS
ZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50
Q29udGFpbmVyKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdSb290Ojpjb21wdXRlRmxvYXRSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0
JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29t
cHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAg
ICAvLyBBcHBseSBvdXIgbG9jYWwgdHJhbnNmb3JtcyAoZXhjZXB0IGZvciB4L3kgdHJhbnNsYXRp
b24pLCB0aGVuIG91ciBzaGFkb3csIAogICAgIC8vIGFuZCB0aGVuIGNhbGwgUmVuZGVyQm94J3Mg
bWV0aG9kIHRvIGhhbmRsZSBhbGwgdGhlIG5vcm1hbCBDU1MgQm94IG1vZGVsIGJpdHMKQEAgLTM5
NSw3ICszOTUsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBh
aW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udAogLy8gVGhpcyBtZXRob2QgZXhw
ZWN0cyBsb2NhbCBDU1MgYm94IGNvb3JkaW5hdGVzLgogLy8gQ2FsbGVycyB3aXRoIGxvY2FsIFNW
RyB2aWV3cG9ydCBjb29yZGluYXRlcyBzaG91bGQgZmlyc3QgYXBwbHkgdGhlIGxvY2FsVG9Cb3Jk
ZXJCb3hUcmFuc2Zvcm0KIC8vIHRvIGNvbnZlcnQgZnJvbSBTVkcgdmlld3BvcnQgY29vcmRpbmF0
ZXMgdG8gbG9jYWwgQ1NTIGJveCBjb29yZGluYXRlcy4KLXZvaWQgUmVuZGVyU1ZHUm9vdDo6bWFw
TG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
VHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3Mg
bW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1Jvb3Q6Om1hcExvY2Fs
VG9Db250YWluZXIoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJh
bnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9k
ZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1vZGUgJiB+SXNGaXhlZCk7
IC8vIFdlIHNob3VsZCBoYXZlIG5vIGZpeGVkIGNvbnRlbnQgaW4gdGhlIFNWRyByZW5kZXJpbmcg
dHJlZS4KICAgICBBU1NFUlQobW9kZSAmIFVzZVRyYW5zZm9ybXMpOyAvLyBtYXBwaW5nIGEgcG9p
bnQgdGhyb3VnaCBTVkcgdy9vIHJlc3BlY3RpbmcgdHJhc25mb3JtcyBpcyB1c2VsZXNzLgpAQCAt
NDAzLDcgKzQwMyw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwKICAgICBSZW5kZXJSZXBsYWNl
ZDo6bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwg
bW9kZSB8IEFwcGx5Q29udGFpbmVyRmxpcCwgd2FzRml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJP
YmplY3QqIFJlbmRlclNWR1Jvb3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9t
ZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHUm9vdDo6cHVzaE1h
cHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRv
U3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFJlbmRlclJlcGxhY2VkOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGFuY2VzdG9yVG9TdG9w
QXQsIGdlb21ldHJ5TWFwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmgKaW5kZXggY2RkZDMxMWZkNWM2M2JlNjE3OWEzYjJjNGYwZTIzMmYxY2QxZmNh
Mi4uNDcyYWY0YjhmOTgyODgwZmU4ZWMyNmE5NGEzZDk4YTljMzI1NjQ1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKQEAgLTkyLDExICs5MiwxMSBA
QCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25J
bkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0
QWN0aW9uKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikg
Y29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0
LCBib29sIGZpeGVkKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JS
ZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVj
dCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUg
PSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2Fz
Rml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVj
dCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5j
ZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0g
QXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0Zp
eGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3Qq
IHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5j
ZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Rl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApp
bmRleCAyOTQ1ZmU0OGI3MjMxNjcwOWJiMzdhYmVjMzMzMTIxNjk3N2RhMjhmLi45ZmYyY2M4ZTcw
YTU2M2JlNTIwY2U5NjAzMDgxMDQ1ODMyZTA2YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTk0LDI5ICs5NCwyOSBAQCBjb25zdCBS
ZW5kZXJTVkdUZXh0KiBSZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3Io
Y29uc3QgUmVuZGVyT2JqZQogICAgIHJldHVybiB0b1JlbmRlclNWR1RleHQoc3RhcnQpOwogfQog
Ci1MYXlvdXRSZWN0IFJlbmRlclNWR1RleHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVj
dCBSZW5kZXJTVkdUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIHJldHVybiBTVkdS
ZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50
Q29udGFpbmVyKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdUZXh0Ojpjb21wdXRlUmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJl
Y3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1RleHQ6OmNvbXB1dGVSZWN0Rm9y
UmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRS
ZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIEZsb2F0UmVjdCByZXBhaW50UmVj
dCA9IHJlY3Q7CiAgICAgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5l
ciwgcmVwYWludFJlY3QsIGZpeGVkKTsKICAgICByZWN0ID0gZW5jbG9zaW5nTGF5b3V0UmVjdChy
ZXBhaW50UmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZUZsb2F0UmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVj
dCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1RleHQ6OmNv
bXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAg
ICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQodGhpcywgcmVw
YWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdU
ZXh0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWlu
ZXJGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHVGV4dDo6
bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJG
bGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0
OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0
YXRlLCBtb2RlICYgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIHdhc0ZpeGVkKTsKIH0KIAotY29u
c3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdUZXh0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNv
bnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRy
eU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR1Rl
eHQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
YW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAog
ewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKHRo
aXMsIGFuY2VzdG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5kZXggY2QyZTM4Zjc5NjYwNWUyNzkwZGIy
YmNmYWNiZjk2MDlkZTU1NThhNS4uYWE2NGM2YzhkYTI1ZDg5MTMwZjU0MzVmMzU3OWU4OTZlZTU3
NzM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgK
QEAgLTcxLDEyICs3MSwxMiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRl
UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQo
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9v
bCBmaXhlZCA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBtYXBM
b2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBU
cmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250
YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkID0gMCkg
Y29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9w
QXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2Fs
VG9Db250YWluZXIoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJh
bnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFp
bmVyRmxpcCB8IFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhlZCA9IDApIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGlu
Z1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9w
QXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQg
PSAwKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0KikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIE9WRVJSSURFOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKaW5kZXgg
ZmM1NzJhZDZmM2IwZWVhNjRiMTZhNDA1NWM5YzljMGZiNzI4ZmJjMi4uYzhjMGY3OGM3ZWQyN2Iw
M2RiOTcyNjMxZDA4YzI5MDYzMGM3YWQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC00Niw3ICs0Niw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotTGF5b3V0UmVjdCBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCitMYXlvdXRSZWN0IFNWR1JlbmRlclN1cHBv
cnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCogb2Jq
ZWN0LCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKQogewogICAgIC8v
IFJldHVybiBlYXJseSBmb3IgYW55IGNhc2VzIHdoZXJlIHdlIGRvbid0IGFjdHVhbGx5IHBhaW50
CiAgICAgaWYgKG9iamVjdC0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIW9i
amVjdC0+ZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKQEAgLTU5LDcgKzU5
LDcgQEAgTGF5b3V0UmVjdCBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqIG8KICAgICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0
UmVjdChyZXBhaW50UmVjdCk7CiB9CiAKLXZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZs
b2F0UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29s
IGZpeGVkKQordm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWlu
dChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkKIHsKICAg
ICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnU3R5bGUgPSBvYmplY3QtPnN0eWxlKCktPnN2Z1N0
eWxlKCk7CiAgICAgaWYgKGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdyA9IHN2Z1N0eWxlLT5zaGFk
b3coKSkKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxv
YXRSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmUKICAgICBvYmpl
Y3QtPnBhcmVudCgpLT5jb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVy
LCByZXBhaW50UmVjdCwgZml4ZWQpOwogfQogCi12b2lkIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExv
Y2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUs
IGJvb2wgc25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkKQordm9pZCBTVkdS
ZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogb2Jq
ZWN0LCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1T
dGF0ZSYgdHJhbnNmb3JtU3RhdGUsIGJvb2wgc25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wq
IHdhc0ZpeGVkKQogewogICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJhbnNmb3JtKG9iamVjdC0+
bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpKTsKIApAQCAtODksNyArODksNyBAQCB2b2lkIFNWR1Jl
bmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIFJlbmRlckJveAogICAgIHBhcmVudC0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29u
dGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOwogfQogCi1jb25zdCBSZW5k
ZXJPYmplY3QqIFNWR1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3Qg
UmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3Rv
clRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApCitjb25zdCBSZW5kZXJP
YmplY3QqIFNWR1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9y
VG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkKIHsKICAgICBBU1NFUlRf
VU5VU0VEKGFuY2VzdG9yVG9TdG9wQXQsIGFuY2VzdG9yVG9TdG9wQXQgIT0gb2JqZWN0KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaAppbmRl
eCBiNjJjY2ZiMmYxODVlOWY4ZjBjZWY2ZjU4MWZiYzE4MDM2MTg4ZjEwLi4zMjg2ZjhmZTg1ZjEy
MDU4YWQ5NTFmZTU5MDQxNzZkMTgyYWExMTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBGbG9h
dFJlY3Q7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0Owog
Y2xhc3MgUmVuZGVyR2VvbWV0cnlNYXA7CitjbGFzcyBSZW5kZXJMYXllck1vZGVsT2JqZWN0Owog
Y2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBSZW5kZXJTVkdS
b290OwpAQCAtNjIsMTAgKzYzLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwYWludElu
Zm9JbnRlcnNlY3RzUmVwYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiBsb2NhbFJlcGFpbnRSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVHJhbnNmb3JtLCBjb25zdCBQYWludEluZm8m
KTsKIAogICAgIC8vIEltcG9ydGFudCBmdW5jdGlvbnMgdXNlZCBieSBuZWFybHkgYWxsIFNWRyBy
ZW5kZXJlcnMgY2VudHJhbGl6aW5nIGNvb3JkaW5hdGUgdHJhbnNmb3JtYXRpb25zIC8gcmVwYWlu
dCByZWN0IGNhbGN1bGF0aW9ucwotICAgIHN0YXRpYyBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxv
d1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCosIFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyKTsKLSAgICBzdGF0aWMgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9y
UmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqLCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCk7Ci0gICAgc3RhdGljIHZvaWQgbWFw
TG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqLCBSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBib29sIHNuYXBPZmZzZXRGb3JU
cmFuc2Zvcm1zID0gdHJ1ZSwgYm9vbCogd2FzRml4ZWQgPSAwKTsKLSAgICBzdGF0aWMgY29uc3Qg
UmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCos
IGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9t
ZXRyeU1hcCYpOworICAgIHN0YXRpYyBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCosIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIpOworICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50
KGNvbnN0IFJlbmRlck9iamVjdCosIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQpOworICAgIHN0YXRpYyB2b2lkIG1hcExvY2Fs
VG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBib29sIHNuYXBPZmZzZXRGb3JUcmFu
c2Zvcm1zID0gdHJ1ZSwgYm9vbCogd2FzRml4ZWQgPSAwKTsKKyAgICBzdGF0aWMgY29uc3QgUmVu
ZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21l
dHJ5TWFwJik7CiAKICAgICAvLyBTaGFyZWQgYmV0d2VlbiBTVkcgcmVuZGVyZXJzIGFuZCByZXNv
dXJjZXMuCiAgICAgc3RhdGljIHZvaWQgYXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFJlbmRlck9iamVjdCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166537</attachid>
            <date>2012-10-01 14:01:14 -0700</date>
            <delta_ts>2012-10-01 15:04:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86022-20121001170026.patch</filename>
            <type>text/plain</type>
            <size>150646</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA5NTAwMDU1ZjM5ZTM0
OTA5MWNkOTA2MWM0MjI2Y2FmNmM3MmFhYy4uNWRhZTNlOGU1Y2UzMzhjY2E0NTg4YmIwNjE0ZmQ4
YWI1MjA2N2U0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNyBAQAorMjAxMi0xMC0wMSAgRmxv
cmluIE1hbGl0YSAgPGZtYWxpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZmFjdG9yIGxh
eWVyLXJlbGF0ZWQgbG9naWMgb3V0IG9mIFJlbmRlckJveE1vZGVsT2JqZWN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjAyMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZXh0cmFjdHMg
bGF5ZXItcmVsYXRlZCBsb2dpYyBpbnRvIGEgZGVkaWNhdGVkIGNsYXNzCisgICAgICAgIChSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KSBhbmQgcmVmYWN0b3JzIGRlcGVuZGVudCBjb2RlIHRvIG1ha2Ug
dXNlCisgICAgICAgIG9mIHRoZSBuZXcgdHlwZSBpbnN0ZWFkIG9mIFJlbmRlckJveE1vZGVsT2Jq
ZWN0LiBUaGlzIGlzIGluIHByZXBhcmF0aW9uCisgICAgICAgIG9mIGFkZGluZyBub24tUmVuZGVy
Qm94TW9kZWxPYmplY3QgbGF5ZXIgc3VwcHJ0LgorCisgICAgICAgIEFsbCBtZXRob2RzIHRoYXQg
d2VyZSB1c2luZyBSZW5kZXJCb3hNb2RlbE9iamVjdCBmb3IgbGF5ZXItcmVsYXRlZAorICAgICAg
ICBmdW5jdGlvbmFsaXR5IGFyZSB1cGRhdGVkIHRvIHdvcmsgd2l0aCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0CisgICAgICAgIGluc3RlYWQgKGEgUmVuZGVyTGF5ZXIncyByZW5kZXJlcigpIGNhbiBu
byBsb25nZXIgYmUgYXNzdW1lZCB0byBiZQorICAgICAgICBhIFJlbmRlckJveE1vZGVsT2JqZWN0
KS4KKworICAgICAgICBObyBuZXcgdGVzdHM6IHJlZmFjdG9yaW5nIHdpdGggbm8gYmVoYXZpb3Ig
Y2hhbmdlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5vcmRlcjoK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVuZGVyaW5nL0xheW91
dFJlcGFpbnRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXlvdXRSZXBhaW50
ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCUi5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2VsZWN0
aW9uR2FwUmVjdHNGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpy
ZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaDoKKyAgICAgICAgKFJlbmRlckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojp1cGRhdGVGcm9tU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjplbmNsb3NpbmdGbG9hdFBhaW50aW5nTGF5ZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFJlbmRlckJveCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojp+UmVuZGVyQm94TW9k
ZWxPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OndpbGxC
ZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6dXBk
YXRlRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aDoKKyAgICAgICAgKFJlbmRlckJveE1vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlN
YXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2Vv
bWV0cnlNYXA6OnBvcE1hcHBpbmdzVG9BbmNlc3Rvcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdlb21ldHJ5TWFwLmg6CisgICAgICAgIChSZW5kZXJHZW9tZXRyeU1hcCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bmxpbmU6OnVwZGF0ZUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
cklubGluZTo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbmxpbmU6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW5saW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVySW5saW5lLmg6CisgICAgICAgIChSZW5kZXJJbmxpbmUpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6UmVu
ZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9z
aXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb21wdXRlUmVwYWludFJl
Y3RzKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrQ29udGFpbmluZ0Jsb2NrQ2hhaW5Gb3JQYWdp
bmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUG9zaXRpb25lZENvbnRhaW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGFzQW5jZXN0b3JXaXRoRmlsdGVyT3V0c2V0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsVG8pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJlbmRlckxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZW5kZXJlcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjpyZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnVwZGF0ZUJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpyZXBhaW50T25Db21wb3NpdGluZ0NoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbkZvckNvbXBvc2l0aW5nKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMaXN0TWFya2VyOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKFJlbmRlckxpc3RNYXJrZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjphZGRMYXllcnMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZW1vdmVMYXllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojptb3ZlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6ZmluZE5leHRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OmVuY2xvc2luZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29udGFpbmVyRm9yUmVwYWludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnRVc2luZ0NvbnRhaW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpyZXBhaW50UmVjdGFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkanVzdFN0eWxlRGlmZmVyZW5jZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNv
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZy
b21Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29u
dGFpbmVyUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2FsVG9Db250
YWluZXJQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzQ29tcG9zaXRlZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmlzTGF5ZXJNb2RlbE9iamVjdCk6CisgICAgICAgIChSZW5kZXJP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25SZWN0Rm9y
UmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om91dGxpbmVCb3VuZHNG
b3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAg
IChSZW5kZXJSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlbGVjdGlvbklu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlbGVjdGlvbkluZm9CYXNlOjpyZXBhaW50
Q29udGFpbmVyKToKKyAgICAgICAgKFJlbmRlclNlbGVjdGlvbkluZm9CYXNlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVDZWxsOjpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKFJlbmRlclRhYmxlQ2VsbCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlQ29sOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmg6CisgICAgICAgIChSZW5kZXJUYWJsZUNv
bCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlUm93OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93Lmg6CisgICAgICAgIChSZW5kZXJUYWJs
ZVJvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6CisgICAgICAgIChSZW5kZXJUZXh0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9k
ZWxPYmplY3Q6On5SZW5kZXJMYXllck1vZGVsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyTW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllck1vZGVsT2JqZWN0OjplbnN1cmVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllck1vZGVsT2JqZWN0OjpoYXNTZWxmUGFpbnRpbmdMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpsYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojp1cGRhdGVGcm9tU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6dG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjptYXBMb2Nh
bFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnB1c2hNYXBwaW5n
VG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6aXNDb21wb3NpdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZXc6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6
c2VsZWN0aW9uQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNldFNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpjbGVhclNlbGVjdGlvbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKFJlbmRlclZpZXcpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHA6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdCbG9jazo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0Jsb2NrLmg6CisgICAgICAgIChSZW5kZXJTVkdCbG9jayk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RG
b3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om1h
cExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9i
amVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg6CisgICAgICAgIChSZW5kZXJTVkdGb3JlaWduT2JqZWN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHSW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWlu
ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmg6CisgICAgICAg
IChSZW5kZXJTVkdJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9k
ZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R01vZGVsT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGluZUJvdW5kc0Zv
clJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
aDoKKyAgICAgICAgKFJlbmRlclNWR01vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUm9vdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUm9vdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSb290OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuaDoKKyAgICAgICAgKFJlbmRlclNWR1Jvb3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKFJlbmRlclNW
R1RleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxv
YXRSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpt
YXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6
OnB1c2hNYXBwaW5nVG9Db250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdSZW5kZXJTdXBw
b3J0KToKKwogMjAxMi0xMC0wMSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBDb25zb2xpZGF0ZSBtb3JlIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24gbG9n
aWMgaW4gTm9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA0YjY5MjY5M2ZhYmYxZmRmMjEzMWZj
NTM2NGM4OWM4OTE1ODlkZTQ5Li5kYTE0YzA5ZTZhNTM3NjkwZmRiM2RlOGY5OTIxZWM1ZDNlZTIx
ZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjA3OCw2ICsyMDc4LDcgQEAgU0VUKFdlYkNv
cmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCiAgICAgcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvLmNwcAorICAgIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNw
cAogICAgIHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKICAgICByZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAyMmMzMTJjNWFkMzVjYmNhMmEwZjY1YTc0MjIxMjU1
ZjRhYjViNTE1Li5jOTQ2ZDBkZWZkY2RhZDU0MTBmOGE5Yzc3ZTM3YmVjMzA3NzJjYjkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTUwMTYsNiArNTAxNiw4IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmggXAog
CVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNmM5ZTRjY2Q4
NDdkNzQzZjQ3ZWFiYjNiYjM3ZWMzMzBhYTdlM2MyNC4uYTRkODc1NDdhNGE5ZDBhNTA5ZTEzZjk0
ZmIwZGU1M2IyZDhkZjE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0xMTUxLDYgKzExNTEsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBcCiAgICAgcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlckluZm8uY3BwIFwKKyAgICByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dC5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAgXAogICAgIHJlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNw
cCBcCkBAIC0yMzUyLDYgKzIzNTMsNyBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIFwKICAgICBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggXAorICAgIHJlbmRlcmluZy9SZW5kZXJM
YXllck1vZGVsT2JqZWN0LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5oIFwK
ICAgICByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGlz
dEl0ZW0uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDRjMDliMGU4YmVmY2UwZmE2Y2I2ZDVm
MjdlYTk2Y2M2MTYwNDQwNDcuLjViYmY4ZjIyNTY4ZjViNDUwYTMxMmZkMjU2MDgyODkxZDdkZmU5
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xMTE4LDcgKzExMTgsNyBAQCBfX1pOSzdXZWJD
b3JlMTFSZW5kZXJTdHlsZTRmb250RXYKIF9fWk5LN1dlYkNvcmUxMVNjcmlwdFZhbHVlOWdldFN0
cmluZ0VQTjNKU0M5RXhlY1N0YXRlRVJOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTJSZW5k
ZXJPYmplY3QxNGVuY2xvc2luZ0xheWVyRXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE1
bG9jYWxUb0Fic29sdXRlRVJLTlNfMTBGbG9hdFBvaW50RWJiCi1fX1pOSzdXZWJDb3JlMTJSZW5k
ZXJPYmplY3QyMGxvY2FsVG9Db250YWluZXJRdWFkRVJLTlNfOUZsb2F0UXVhZEVQTlNfMjBSZW5k
ZXJCb3hNb2RlbE9iamVjdEViYlBiCitfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyMGxvY2Fs
VG9Db250YWluZXJRdWFkRVJLTlNfOUZsb2F0UXVhZEVQTlNfMjJSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0RWJiUGIKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3RFYgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MzlwaXhlbFNuYXBwZWRBYnNvbHV0
ZUNsaXBwZWRPdmVyZmxvd1JlY3RFdgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0N2NoaWxk
QXRFagpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDNiZTRlNmE4M2JmMjA5NzNkZGU1OTVkMjZmMmU0N2Vi
NGI3MDQxOTQuLmQxZTBhOGY5NzQ5NjExMzM1YWRhN2JkYjk5ODMyMDU2MWNmN2Y4NzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTU3Myw2ICs1NzMsNyBAQAogICAgICAgICAgICAgJ3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaCcsCisg
ICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaCcsCiAgICAgICAg
ICAgICAncmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmgnLAogICAgICAgICAgICAgJ3JlbmRl
cmluZy9SZW5kZXJMaXN0SXRlbS5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmgnLApAQCAtMzM2NSw2ICszMzY2LDcgQEAKICAgICAgICAgICAgICdyZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9S
ZW5kZXJMYXllckZpbHRlckluZm8uY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVy
TGF5ZXJGaWx0ZXJJbmZvLmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJMYXllck1v
ZGVsT2JqZWN0LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0
LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwJywKICAgICAg
ICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4
IDc2OGE3ZmEzNTBjMzM4ZjkxNDEyOWMzOGQyZjhmYzZhNGIyMjllODcuLmMxZDIxNGViMzM3ZWRl
YTkyOWU5ZTEyMWVkNDY5YjI5MGE3NzEzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtODIzLDgg
KzgyMyw4IEBAIF9fWk43V2ViQ29yZTExUmVuZGVyQmxvY2sxNHN0eWxlRGlkQ2hhbmdlRU5TXzE1
U3R5bGVEaWZmZXJlbmNlRVBLTlNfMTFSZW5kZXJTdHlsCiBfX1pON1dlYkNvcmU5UmVuZGVyQm94
MTRzdHlsZURpZENoYW5nZUVOU18xNVN0eWxlRGlmZmVyZW5jZUVQS05TXzExUmVuZGVyU3R5bGVF
CiBfX1pON1dlYkNvcmUyMFJlbmRlckJveE1vZGVsT2JqZWN0MTRzdHlsZURpZENoYW5nZUVOU18x
NVN0eWxlRGlmZmVyZW5jZUVQS05TXzExUmVuZGVyU3R5bGVFCiBfX1pON1dlYkNvcmUxMlJlbmRl
ck9iamVjdDE0c3R5bGVEaWRDaGFuZ2VFTlNfMTVTdHlsZURpZmZlcmVuY2VFUEtOU18xMVJlbmRl
clN0eWxlRQotX19aTjdXZWJDb3JlOVJlbmRlckJveDI3dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0
eWxlRXYKLV9fWk43V2ViQ29yZTIwUmVuZGVyQm94TW9kZWxPYmplY3QyN3VwZGF0ZUJveE1vZGVs
SW5mb0Zyb21TdHlsZUV2CitfX1pON1dlYkNvcmU5UmVuZGVyQm94MTV1cGRhdGVGcm9tU3R5bGVF
dgorX19aTjdXZWJDb3JlMjBSZW5kZXJCb3hNb2RlbE9iamVjdDE1dXBkYXRlRnJvbVN0eWxlRXYK
IF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMjF2aXNpdGVkRGVwZW5kZW50Q29sb3JFaQogX19a
Tks3V2ViQ29yZTExUmVuZGVyU3R5bGUyMmNvbG9ySW5jbHVkaW5nRmFsbGJhY2tFaU5TXzEyRUJv
cmRlclN0eWxlRQogX19aTks3V2ViQ29yZTEwUmVuZGVyVmlldzEyaXNSZW5kZXJWaWV3RXYKQEAg
LTQxNzEsNyArNDE3MSw3IEBAIF9fWk43V2ViQ29yZTROb2RlMTFhcHBlbmRDaGlsZEVOM1dURjEw
UGFzc1JlZlB0cklTMF9FRVJpYgogX19aTjdXZWJDb3JlNE5vZGUxMGxhenlBdHRhY2hFTlMwXzE3
U2hvdWxkU2V0QXR0YWNoZWRFCiBfX1pON1dlYkNvcmUxMlJlbmRlcklubGluZUMxRVBOU180Tm9k
ZUUKIF9fWk43V2ViQ29yZTEyUmVuZGVySW5saW5lMTRzdHlsZURpZENoYW5nZUVOU18xNVN0eWxl
RGlmZmVyZW5jZUVQS05TXzExUmVuZGVyU3R5bGVFCi1fX1pON1dlYkNvcmUxMlJlbmRlcklubGlu
ZTI3dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlRXYKK19fWk43V2ViQ29yZTEyUmVuZGVySW5s
aW5lMTV1cGRhdGVGcm9tU3R5bGVFdgogX19aTks3V2ViQ29yZTEyUmVuZGVySW5saW5lMTNyZXF1
aXJlc0xheWVyRXYKIF9fWk5LN1dlYkNvcmU5TGVuZ3RoQm94N25vblplcm9FdgogX19aTks3V2Vi
Q29yZTEyUmVuZGVySW5saW5lMTV2aXJ0dWFsQ2hpbGRyZW5FdgpAQCAtMTEzMjksNyArMTEzMjks
NyBAQCBfX1pON1dlYkNvcmUxM1JlbmRlclNWR1RleHRDMUVQTlNfMTRTVkdUZXh0RWxlbWVudEUK
IF9fWk43V2ViQ29yZTE0UmVuZGVyU1ZHQmxvY2s4c2V0U3R5bGVFTjNXVEYxMFBhc3NSZWZQdHJJ
TlNfMTFSZW5kZXJTdHlsZUVFRQogX19aTjdXZWJDb3JlMTRSZW5kZXJTVkdCbG9jazE1c3R5bGVX
aWxsQ2hhbmdlRU5TXzE1U3R5bGVEaWZmZXJlbmNlRVBLTlNfMTFSZW5kZXJTdHlsZUUKIF9fWk43
V2ViQ29yZTE0UmVuZGVyU1ZHQmxvY2sxNHN0eWxlRGlkQ2hhbmdlRU5TXzE1U3R5bGVEaWZmZXJl
bmNlRVBLTlNfMTFSZW5kZXJTdHlsZUUKLV9fWk43V2ViQ29yZTE0UmVuZGVyU1ZHQmxvY2syN3Vw
ZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZUV2CitfX1pON1dlYkNvcmUxNFJlbmRlclNWR0Jsb2Nr
MTV1cGRhdGVGcm9tU3R5bGVFdgogX19aTks3V2ViQ29yZTEzUmVuZGVyU1ZHVGV4dDEzcmVxdWly
ZXNMYXllckV2CiBfX1pON1dlYkNvcmUxNFJlbmRlclNWR0Jsb2NrMTd1cGRhdGVGcm9tRWxlbWVu
dEV2CiBfX1pON1dlYkNvcmUyNVNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQxNWNoaWxkcmVuQ2hh
bmdlZEViUE5TXzROb2RlRVMyX2kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggMDIyNmE3OWVhNTdiM2Y1Njk5MGU3YjQ1ZWZhNjg0ZjNkOTUzOTRl
OS4uN2E3NTc1YTg4OTM3MTFjMDBiMDhlMjNjMDRiMTYyMTEyMzMwMjFiMSAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQ0MjAxLDYgKzQ0MjAx
LDYyIEBACiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAi
CisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQlOYW1lPSJEZWJ1
Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1
Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccmVuZGVyaW5nXFJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlclRyZWVBc1Rl
eHQuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1ZTU2ODMwNDRiN2E4
YjMyNjgwNjFhZmJhMTExNmE1ZjdjZTFmZGU4Li40MzkwZGFhZWMyMmE2NGNjNmRhOWM0NWZiYmU4
NDA4MjJkZTNiODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMDI2LDYgKzEwMjYsOCBAQAogCQkzQUIwMkQyQjEyRDRGOTE2
MDBGQkI2OTQgLyogU3RvcmFnZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gM0FCMDJEMjkxMkQ0RjkxNjAwRkJCNjk0IC8qIFN0b3JhZ2VU
cmFja2VyLmNwcCAqLzsgfTsKIAkJM0FDMzY4MDAxMkVGN0EwOTAwNkEzRDZGIC8qIFN0b3JhZ2VU
cmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzQUMzNjdGRTEyRUY3QTA5MDA2QTNENkYgLyogU3RvcmFnZVRyYWNrZXJDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzQUM2NDhC
MjEyOUUxNDY1MDBDM0VCMjUgLyogRWRpdGluZ0JvdW5kYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQUM2NDhCMTEyOUUxNDY1MDBDM0VCMjUgLyog
RWRpdGluZ0JvdW5kYXJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJM0MyNDRGRUFBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlckxheWVyTW9kZWxP
YmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDND
MjQ0RkU0QTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJMYXllck1vZGVsT2JqZWN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJM0MyNDRGRUJBMzc1
QUM2MzNGODhCRTZGIC8qIFJlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0MyNDRGRTVBMzc1QUM2MzNGODhCRTZG
IC8qIFJlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwICovOyB9OwogCQk0MTAwMkNDRDBGNjZFREVG
MDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkNDQjBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0
RnVuY3Rpb25DYWxsLmggKi87IH07CiAJCTQxMDAyQ0NFMEY2NkVERUYwMDlFNjYwRCAvKiBTY3Jp
cHRGdW5jdGlvbkNhbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAgKi87IH07CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9
OwpAQCAtODEyOSw2ICs4MTMxLDggQEAKIAkJM0FCMDJEMjkxMkQ0RjkxNjAwRkJCNjk0IC8qIFN0
b3JhZ2VUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
b3JhZ2VUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0FDMzY3RkUx
MkVGN0EwOTAwNkEzRDZGIC8qIFN0b3JhZ2VUcmFja2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VUcmFja2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTNBQzY0OEIxMTI5RTE0NjUwMEMzRUIyNSAvKiBFZGl0aW5nQm91bmRh
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ0JvdW5kYXJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNDMjQ0RkU0QTM3NUFDNjMzRjg4QkU2RiAv
KiBSZW5kZXJMYXllck1vZGVsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbmRlckxheWVyTW9kZWxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJM0MyNDRGRTVBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlckxheWVyTW9kZWxPYmplY3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMDAyQ0NCMEY2NkVERUYw
MDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxMDAyQ0NDMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRG
IC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIxNDg1LDYgKzIxNDg5LDggQEAKIAkJCQlCQ0VBNDg0QjA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyVGhlbWUuaCAqLywKIAkJCQlCQ0VBNDg0ODA5N0Q5MzAyMDA5NEM5RTQgLyog
UmVuZGVyVGhlbWVNYWMuaCAqLywKIAkJCQlCQ0VBNDg0OTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVyVGhlbWVNYWMubW0gKi8sCisJCQkJM0MyNDRGRTVBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRl
ckxheWVyTW9kZWxPYmplY3QuY3BwICovLAorCQkJCTNDMjQ0RkU0QTM3NUFDNjMzRjg4QkU2RiAv
KiBSZW5kZXJMYXllck1vZGVsT2JqZWN0LmggKi8sCiAJCQkJOTM5NTVBNDIwM0Q3MjkzMjAwODYz
NUNFIC8qIFJlbmRlclRyZWVBc1RleHQuY3BwICovLAogCQkJCTkzOTU1QTQxMDNENzI5MzIwMDg2
MzVDRSAvKiBSZW5kZXJUcmVlQXNUZXh0LmggKi8sCiAJCQkJRTRCNDFFMzMwQ0JGQjYwOTAwQUYy
RUNFIC8qIFJlbmRlclZpZGVvLmNwcCAqLywKQEAgLTI0NzQxLDYgKzI0NzQ3LDcgQEAKIAkJCQk4
NkZGODg2MjE1REUzRDA3MDBCRDZCMjggLyogUmVuZGVyVGV4dFRyYWNrQ3VlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0VBNDg4QTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDRUE0ODg3MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1h
Yy5oIGluIEhlYWRlcnMgKi8sCisJCQkJM0MyNDRGRUFBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRl
ckxheWVyTW9kZWxPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OThDMDgyNDVFNTkw
MDFFOUFCQyAvKiBSZW5kZXJUcmVlQXNUZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTQ1
MjBDRDY4QTM1MDBGQURBNzUgLyogUmVuZGVyVmlkZW8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RUE0ODY4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJWaWV3LmggaW4gSGVhZGVycyAqLywKQEAg
LTI3OTU2LDYgKzI3OTYzLDcgQEAKIAkJCQlCQ0VBNDg4OTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVyVGhlbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4ODgwOTdEOTMwMjAwOTRDOUU0
IC8qIFJlbmRlclRoZW1lTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBRDUwODI0NUU1
OTAwMUU5QUJDIC8qIFJlbmRlclRyZWVBc1RleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJM0My
NDRGRUJBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTQ0NjE0NTEwQ0Q2OEEzNTAwRkFEQTc1IC8qIFJlbmRlclZpZGVvLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODY3MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJW
aWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFERkU1MEExNTM3NkIwMEIxMkE2OCAvKiBS
ZW5kZXJXaWRnZXQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dl
c3R1cmVUYXBIaWdobGlnaHRlci5jcHAKaW5kZXggZWVmMWQzNzc0YjhiOGUzNmI5YTQwOTgyODZh
ODBhYjY2YTkwYjVmMS4uNTZkZjQ3YzI2OTk0NWJkYWE0NTMwNjkzY2Q3ZjMyOGFlMDg2YmYwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcApAQCAt
MjA4LDcgKzIwOCw3IEBAIFBhdGggYWJzb2x1dGVQYXRoRm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0
KiBjb25zdCBvKQogCiAgICAgICAgIC8vIENoZWNrIGFuY2VzdG9yIGxheWVycyBmb3Igb3ZlcmZs
b3cgY2xpcCBhbmQgaW50ZXJzZWN0IHRoZW0uCiAgICAgICAgIGZvciAoOyBsYXllcjsgbGF5ZXIg
PSBsYXllci0+cGFyZW50KCkpIHsKLSAgICAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBs
YXllclJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiBsYXllclJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7CiAKICAgICAg
ICAgICAgIGlmIChsYXllclJlbmRlcmVyLT5oYXNPdmVyZmxvd0NsaXAoKSAmJiBsYXllclJlbmRl
cmVyICE9IGN1cnJlbnRSZW5kZXJlcikgewogICAgICAgICAgICAgICAgIGJvb2wgY29udGFpbmVy
U2tpcHBlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xh
eW91dFJlcGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFJlcGFpbnRl
ci5oCmluZGV4IDZmNjNlODJkMzUwMzExMmRmMDE3MTc1NjQ3YzA0ZTg5MDM0M2EwZTQuLmQwNzRi
ODRiYjQ1ZWQ2NjNmZjY5MTg3Zjg5NDJjOWNmMzZmMWM4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmgKQEAgLTMwLDggKzMwLDggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBSZW5kZXJMYXllck1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVy
T2JqZWN0OwotY2xhc3MgUmVuZGVyQm94TW9kZWxPYmplY3Q7CiAKIGNsYXNzIExheW91dFJlcGFp
bnRlciB7CiBwdWJsaWM6CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBSZW5kZXJPYmplY3QmIG1fb2JqZWN0OwotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBtX3Jl
cGFpbnRDb250YWluZXI7CisgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogbV9yZXBhaW50Q29u
dGFpbmVyOwogICAgIC8vIFdlIHN0b3JlIHRoZXNlIHZhbHVlcyBhcyBMYXlvdXRSZWN0cywgYnV0
IHRoZSBmaW5hbCBpbnZhbGlkYXRpb25zIHdpbGwgYmUgcGl4ZWwgc25hcHBlZAogICAgIExheW91
dFJlY3QgbV9vbGRCb3VuZHM7CiAgICAgTGF5b3V0UmVjdCBtX29sZE91dGxpbmVCb3g7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCUi5oCmluZGV4IDQ5ZjliNWU2Y2MyMGU5NDlmNjYwNjFjYmRh
ZTNhMWIzNjBlYzM4NTAuLjBlYmFhMmZhMjYxN2NmMzA4ZjgwZDlhY2Y2NzA1Zjg2NGE3MWU3MDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCUi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCUi5oCkBAIC0zOCw3ICszOCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJu
ICJSZW5kZXJCUiI7IH0KICAKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBib29s
IC8qY2xpcFRvVmlzaWJsZUNvbnRlbnQqLykgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CisgICAg
dmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBib29sIC8qY2xpcFRvVmlzaWJsZUNvbnRl
bnQqLykgT1ZFUlJJREUgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CiAKICAgICB2aXJ0dWFsIGZs
b2F0IHdpZHRoKHVuc2lnbmVkIC8qZnJvbSovLCB1bnNpZ25lZCAvKmxlbiovLCBjb25zdCBGb250
JiwgZmxvYXQgLyp4UG9zKi8sIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiogPSAwIC8q
ZmFsbGJhY2tGb250cyovICwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdCB7IHJldHVybiAwOyB9
CiAgICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1bnNpZ25lZCAvKmZyb20qLywgdW5zaWduZWQgLyps
ZW4qLywgZmxvYXQgLyp4cG9zKi8sIGJvb2wgPSBmYWxzZSAvKmZpcnN0TGluZSovLCBIYXNoU2V0
PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qID0gMCAvKmZhbGxiYWNrRm9udHMqLywgR2x5cGhPdmVy
ZmxvdyogPSAwKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAppbmRleCAzNDViNDJkYWIwY2VjNmE4N2QzMTEwNzAwODRlMGExN2U3OGUw
NjU0Li5jNzU2MmFlMmFkYmQ1YjRkM2VkMzBlOTg0YjhkOTE2MWMwNDVmOWEzIDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTMyNTgsNyArMzI1OCw3IEBAIGJv
b2wgUmVuZGVyQmxvY2s6OmlzU2VsZWN0aW9uUm9vdCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1HYXBSZWN0cyBSZW5kZXJCbG9jazo6c2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKQorR2FwUmVjdHMgUmVuZGVy
QmxvY2s6OnNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyKQogewogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7CiAKQEAg
LTY3ODQsNyArNjc4NCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKICAgICAgICAgcXVhZHMu
YXBwZW5kKFJlbmRlckJveDo6bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoMCwgMCwgd2lk
dGgoKSwgaGVpZ2h0KCkpLCBmYWxzZSwgd2FzRml4ZWQpKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5k
ZXJCbG9jazo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CitMYXlvdXRS
ZWN0IFJlbmRlckJsb2NrOjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25z
dAogewogICAgIExheW91dFJlY3QgcihSZW5kZXJCb3g6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFp
bnQocmVwYWludENvbnRhaW5lciwgb3V0bGluZVdpZHRoKSk7CiAgICAgaWYgKGlzQW5vbnltb3Vz
QmxvY2tDb250aW51YXRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgK
aW5kZXggOTRlYTAwNWM4N2U2YTE3Y2FiMWM5NGE2ODcyYjg3MzI4Mjc4ZWYxMi4uMjA0ODJiMWY5
MzAzMDA5NDFhMjAzMzhlNTYwOTc3YjhkMjJiYjlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmgKQEAgLTIxNiw3ICsyMTYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNv
bnRhaW5zTm9uWmVyb0JpZGlMZXZlbCgpIGNvbnN0OwogCi0gICAgR2FwUmVjdHMgc2VsZWN0aW9u
R2FwUmVjdHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KTsKKyAgICBHYXBSZWN0cyBzZWxlY3Rpb25HYXBSZWN0c0ZvclJlcGFpbnQoUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7CiAgICAgTGF5b3V0UmVjdCBsb2dpY2FsTGVm
dFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQb2ludCYg
cm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJv
b3RCbG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlck9i
amVjdCogc2VsT2JqLCBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBMYXlvdXRVbml0IGxvZ2ljYWxU
b3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgY29uc3QgUGFpbnRJbmZvKik7CiAgICAgTGF5
b3V0UmVjdCBsb2dpY2FsUmlnaHRTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywg
Y29uc3QgTGF5b3V0UG9pbnQmIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGNvbnN0IExheW91
dFNpemUmIG9mZnNldEZyb21Sb290QmxvY2ssCkBAIC04MTEsMTQgKzgxMSwxNCBAQCBwcml2YXRl
OgogICAgIC8vIGNoaWxkcmVuLgogICAgIHZpcnR1YWwgUmVuZGVyQmxvY2sqIGZpcnN0TGluZUJs
b2NrKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5p
dCBvdXRsaW5lV2lkdGgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91
dGxpbmVGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFJl
bmRlclN0eWxlKiBvdXRsaW5lU3R5bGVGb3JSZXBhaW50KCkgY29uc3Q7CiAgICAgCiAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGhvdmVyQW5jZXN0b3IoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRHJhZ1N0YXRlKGJvb2wgZHJhZ09uKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRC
ZWNhbWVOb25JbmxpbmUoUmVuZGVyT2JqZWN0KiBjaGlsZCk7CiAKLSAgICB2aXJ0dWFsIExheW91
dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGJvb2wgLypjbGlwVG9WaXNpYmxlQ29udGVudCovKQorICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qY2xpcFRvVmlzaWJsZUNvbnRlbnQqLykgT1ZFUlJJ
REUKICAgICB7CiAgICAgICAgIHJldHVybiBzZWxlY3Rpb25HYXBSZWN0c0ZvclJlcGFpbnQocmVw
YWludENvbnRhaW5lcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAppbmRleCBhMWEzYzk5MjIzZjVkNDdhODkxM2E0ODg3NTc3MjAwMzI2OWE5MTc2Li5jYzZhZmJi
ZTdhZTFjNmNjYjY5YjBhZGRjNjAxZDVkNGUyMTQzMDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgUmVuZGVyQm94OjpzdHls
ZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdT
dHlsCiAKIHZvaWQgUmVuZGVyQm94OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogewotICAgIC8vIEhvcml6b250YWwgd3Jp
dGluZyBtb2RlIGRlZmluaXRpb24gaXMgdXBkYXRlZCBpbiBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlLAorICAgIC8vIEhvcml6b250YWwgd3JpdGluZyBt
b2RlIGRlZmluaXRpb24gaXMgdXBkYXRlZCBpbiBSZW5kZXJCb3hNb2RlbE9iamVjdDo6dXBkYXRl
RnJvbVN0eWxlLAogICAgIC8vIChhcyBwYXJ0IG9mIHRoZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
c3R5bGVEaWRDaGFuZ2UgY2FsbCBiZWxvdykuIFNvLCB3ZSBjYW4gc2FmZWx5IGNhY2hlIHRoZSBo
b3Jpem9udGFsCiAgICAgLy8gd3JpdGluZyBtb2RlIHZhbHVlIGJlZm9yZSBzdHlsZSBjaGFuZ2Ug
aGVyZS4KICAgICBib29sIG9sZEhvcml6b250YWxXcml0aW5nTW9kZSA9IGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCk7CkBAIC0yNjksOSArMjY5LDkgQEAgdm9pZCBSZW5kZXJCb3g6OnN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUK
ICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojp1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUo
KQordm9pZCBSZW5kZXJCb3g6OnVwZGF0ZUZyb21TdHlsZSgpCiB7Ci0gICAgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOworICAgIFJlbmRlckJveE1v
ZGVsT2JqZWN0Ojp1cGRhdGVGcm9tU3R5bGUoKTsKIAogICAgIFJlbmRlclN0eWxlKiBzdHlsZVRv
VXNlID0gc3R5bGUoKTsKICAgICBib29sIGlzUm9vdE9iamVjdCA9IGlzUm9vdCgpOwpAQCAtNDQ3
LDcgKzQ0Nyw3IEBAIEZsb2F0UXVhZCBSZW5kZXJCb3g6OmFic29sdXRlQ29udGVudFF1YWQoKSBj
b25zdAogICAgIHJldHVybiBsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChyZWN0KSk7CiB9
CiAKLUxheW91dFJlY3QgUmVuZGVyQm94OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNl
dFRvUmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyQm94OjpvdXRsaW5l
Qm91bmRzRm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBMYXlvdXRQb2ludCogY2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVyKSBjb25zdAogewog
ICAgIExheW91dFJlY3QgYm94ID0gYm9yZGVyQm91bmRpbmdCb3goKTsKICAgICBhZGp1c3RSZWN0
Rm9yT3V0bGluZUFuZFNoYWRvdyhib3gpOwpAQCAtMTI1OCw3ICsxMjU4LDcgQEAgTGF5b3V0VW5p
dCBSZW5kZXJCb3g6OnBlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0KCkg
Y29uc3QKICAgICByZXR1cm4gY2ItPmFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94
U2l6aW5nKGxvZ2ljYWxIZWlnaHRMZW5ndGgudmFsdWUoKSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94
OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJG
bGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyQm94OjptYXBMb2Nh
bFRvQ29udGFpbmVyKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRy
YW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1v
ZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09
IHRoaXMpCiAgICAgICAgIHJldHVybjsKQEAgLTEzMjMsNyArMTMyMyw3IEBAIHZvaWQgUmVuZGVy
Qm94OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBUcmFuCiAgICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVy
LCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJPYmpl
Y3QqIFJlbmRlckJveDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFw
KSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJCb3g6OnB1c2hNYXBwaW5nVG9Db250
YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVu
ZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAogewogICAgIEFTU0VSVChhbmNlc3Rv
clRvU3RvcEF0ICE9IHRoaXMpOwogCkBAIC0xNDczLDcgKzE0NzMsNyBAQCB2b2lkIFJlbmRlckJv
eDo6ZGVsZXRlTGluZUJveFdyYXBwZXIoKQogICAgIH0KIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJC
b3g6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIpIGNvbnN0CiB7CiAgICAgaWYgKHN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYm
ICFlbmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVudCgpKQogICAgICAgICByZXR1cm4g
TGF5b3V0UmVjdCgpOwpAQCAtMTUwMCw3ICsxNTAwLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6
OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW4KICAgICByZXR1cm4gcjsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVw
YWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYg
cmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJl
cGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVj
dCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICAvLyBUaGUgcmVjdCB3ZSBjb21wdXRl
IGF0IGVhY2ggc3RlcCBpcyBzaGlmdGVkIGJ5IG91ciB4L3kgb2Zmc2V0IGluIHRoZSBwYXJlbnQg
Y29udGFpbmVyJ3MgY29vcmRpbmF0ZSBzcGFjZS4KICAgICAvLyBPbmx5IHdoZW4gd2UgY3Jvc3Mg
YSB3cml0aW5nIG1vZGUgYm91bmRhcnkgd2lsbCB3ZSBoYXZlIHRvIHBvc3NpYmx5IGZsaXBGb3JX
cml0aW5nTW9kZSAodG8gY29udmVydCBpbnRvIGEgbW9yZSBhcHByb3ByaWF0ZQpAQCAtMzgyMCw3
ICszODIwLDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckJveDo6ZW5jbG9zaW5nRmxvYXRQYWludGlu
Z0xheWVyKCkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIGN1cnIgPSB0aGlzOwog
ICAgIHdoaWxlIChjdXJyKSB7Ci0gICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IGN1cnItPmhh
c0xheWVyKCkgJiYgY3Vyci0+aXNCb3goKSA/IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY3Vycikt
PmxheWVyKCkgOiAwOworICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBjdXJyLT5oYXNMYXll
cigpICYmIGN1cnItPmlzQm94KCkgPyB0b1JlbmRlckJveChjdXJyKS0+bGF5ZXIoKSA6IDA7CiAg
ICAgICAgIGlmIChsYXllciAmJiBsYXllci0+aXNTZWxmUGFpbnRpbmdMYXllcigpKQogICAgICAg
ICAgICAgcmV0dXJuIGxheWVyOwogICAgICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggZGIyNzRmYjg0MTJkNmVhZDQ4NjBhZDJi
OTRhMWRmOWQ1NTU4MTU0NC4uMWVhNGY0NDI5OGYyODEwODljZTY5YTY0MTkxY2EzNTYwODM0YmRj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMTU0LDcgKzE1NCw3IEBA
IHB1YmxpYzoKICAgICBMYXlvdXRSZWN0IGNvbXB1dGVkQ1NTQ29udGVudEJveFJlY3QoKSBjb25z
dCB7IHJldHVybiBMYXlvdXRSZWN0KGJvcmRlckxlZnQoKSArIGNvbXB1dGVkQ1NTUGFkZGluZ0xl
ZnQoKSwgYm9yZGVyVG9wKCkgKyBjb21wdXRlZENTU1BhZGRpbmdUb3AoKSwgY2xpZW50V2lkdGgo
KSAtIGNvbXB1dGVkQ1NTUGFkZGluZ0xlZnQoKSAtIGNvbXB1dGVkQ1NTUGFkZGluZ1JpZ2h0KCks
IGNsaWVudEhlaWdodCgpIC0gY29tcHV0ZWRDU1NQYWRkaW5nVG9wKCkgLSBjb21wdXRlZENTU1Bh
ZGRpbmdCb3R0b20oKSk7IH0KIAogICAgIC8vIEJvdW5kcyBvZiB0aGUgb3V0bGluZSBib3ggaW4g
YWJzb2x1dGUgY29vcmRzLiBSZXNwZWN0cyB0cmFuc2Zvcm1zCi0gICAgdmlydHVhbCBMYXlvdXRS
ZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiAvKnJlcGFp
bnRDb250YWluZXIqLywgTGF5b3V0UG9pbnQqIGNhY2hlZE9mZnNldFRvUmVwYWludENvbnRhaW5l
cikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50
KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBMYXlvdXRQb2lu
dCogY2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5
b3V0UG9pbnQmKTsKIAogICAgIC8vIFVzZSB0aGlzIHdpdGggY2F1dGlvbiEgTm8gdHlwZSBjaGVj
a2luZyBpcyBkb25lIQpAQCAtMzU0LDggKzM1NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElu
bGluZUJveFdyYXBwZXIoSW5saW5lQm94KiBib3hXcmFwcGVyKSB7IG1faW5saW5lQm94V3JhcHBl
ciA9IGJveFdyYXBwZXI7IH0KICAgICB2b2lkIGRlbGV0ZUxpbmVCb3hXcmFwcGVyKCk7CiAKLSAg
ICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1
YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKGNvbnN0
IExheW91dFJlY3QmKTsKIApAQCAtNTUwLDcgKzU1MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZp
cnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJT
dHlsZSogbmV3U3R5bGUpOwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVG
cm9tU3R5bGUoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBiYWNrZ3JvdW5kSXNPYnNj
dXJlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBwYWludEJhY2tncm91bmQo
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUpOwpAQCAtNTcwLDggKzU3MCw4IEBAIHByb3RlY3Rl
ZDoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2VkKCkg
Y29uc3QgeyByZXR1cm4gaXNSZXBsYWNlZCgpICYmICFpc0lubGluZUJsb2NrT3JJbmxpbmVUYWJs
ZSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRv
Q29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRGb3JU
cmFuc2Zvcm1zLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRl
ckJveE1vZGVsT2JqZWN0KiwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2Rl
ID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdh
c0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmpl
Y3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCos
IFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1h
cEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJh
bnNmb3JtU3RhdGUmKSBjb25zdDsKIAogICAgIHZvaWQgcGFpbnRSb290Qm94RmlsbExheWVycyhj
b25zdCBQYWludEluZm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDhkZWVkZGYzOGI2NDI1MDQyODc3YTBmYzkyN2RiMGFm
NThmZTJhZjkuLjY0ZDkwYWRiMTU1NjliMTdhY2VmNDczMmI0ODc0N2ZiOWMyZjM2NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApA
QCAtNTMsMTEgKzUzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogCi1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzX3dhc0Zsb2F0aW5nID0g
ZmFsc2U7Ci1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzX2hhZExheWVyID0gZmFsc2U7Ci1i
b29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzX2hhZFRyYW5zZm9ybSA9IGZhbHNlOwotYm9vbCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6c19sYXllcldhc1NlbGZQYWludGluZyA9IGZhbHNlOwotCiBz
dGF0aWMgY29uc3QgZG91YmxlIGNJbnRlcnBvbGF0aW9uQ3V0b2ZmID0gODAwLiAqIDgwMC47CiBz
dGF0aWMgY29uc3QgZG91YmxlIGNMb3dRdWFsaXR5VGltZVRocmVzaG9sZCA9IDAuNTAwOyAvLyA1
MDAgbXMKIApAQCAtMzE3LDE2ICszMTIsMTIgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBJbWEKIH0K
IAogUmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0KE5vZGUqIG5vZGUp
Ci0gICAgOiBSZW5kZXJPYmplY3Qobm9kZSkKLSAgICAsIG1fbGF5ZXIoMCkKKyAgICA6IFJlbmRl
ckxheWVyTW9kZWxPYmplY3Qobm9kZSkKIHsKIH0KIAogUmVuZGVyQm94TW9kZWxPYmplY3Q6On5S
ZW5kZXJCb3hNb2RlbE9iamVjdCgpCiB7Ci0gICAgLy8gT3VyIGxheWVyIHNob3VsZCBoYXZlIGJl
ZW4gZGVzdHJveWVkIGFuZCBjbGVhcmVkIGJ5IG5vdwotICAgIEFTU0VSVCghaGFzTGF5ZXIoKSk7
Ci0gICAgQVNTRVJUKCFtX2xheWVyKTsKICAgICBpZiAoZ0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIp
IHsKICAgICAgICAgZ0ltYWdlUXVhbGl0eUNvbnRyb2xsZXItPm9iamVjdERlc3Ryb3llZCh0aGlz
KTsKICAgICAgICAgaWYgKGdJbWFnZVF1YWxpdHlDb250cm9sbGVyLT5pc0VtcHR5KCkpIHsKQEAg
LTMzNiwxNCArMzI3LDYgQEAgUmVuZGVyQm94TW9kZWxPYmplY3Q6On5SZW5kZXJCb3hNb2RlbE9i
amVjdCgpCiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkZXN0cm95TGF5
ZXIoKQotewotICAgIEFTU0VSVCghaGFzTGF5ZXIoKSk7IC8vIENhbGxlcnMgc2hvdWxkIGhhdmUg
YWxyZWFkeSBjYWxsZWQgc2V0SGFzTGF5ZXIoZmFsc2UpCi0gICAgQVNTRVJUKG1fbGF5ZXIpOwot
ICAgIG1fbGF5ZXItPmRlc3Ryb3kocmVuZGVyQXJlbmEoKSk7Ci0gICAgbV9sYXllciA9IDA7Ci19
Ci0KIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpCiB7CiAgICAg
Ly8gQSBjb250aW51YXRpb24gb2YgdGhpcyBSZW5kZXJPYmplY3Qgc2hvdWxkIGJlIGRlc3Ryb3ll
ZCBhdCBzdWJjbGFzc2VzLgpAQCAtMzYzLDExNCArMzQ2LDEzIEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpCiAgICAgaWYgKGZpcnN0TGV0dGVyUmVtYWluaW5n
VGV4dCgpKQogICAgICAgICBzZXRGaXJzdExldHRlclJlbWFpbmluZ1RleHQoMCk7CiAKLSAgICAv
LyBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCBjYWxscyBiYWNrIHRvIGRlc3Ryb3lMYXll
cigpIGZvciBsYXllciBkZXN0cnVjdGlvbgotICAgIFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJv
eWVkKCk7Ci19Ci0KLWJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6Omhhc1NlbGZQYWludGluZ0xh
eWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sYXllciAmJiBtX2xheWVyLT5pc1NlbGZQYWlu
dGluZ0xheWVyKCk7Ci19Ci0KLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnN0eWxlV2lsbENo
YW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKQot
ewotICAgIHNfd2FzRmxvYXRpbmcgPSBpc0Zsb2F0aW5nKCk7Ci0gICAgc19oYWRMYXllciA9IGhh
c0xheWVyKCk7Ci0gICAgc19oYWRUcmFuc2Zvcm0gPSBoYXNUcmFuc2Zvcm0oKTsKLSAgICBpZiAo
c19oYWRMYXllcikKLSAgICAgICAgc19sYXllcldhc1NlbGZQYWludGluZyA9IGxheWVyKCktPmlz
U2VsZlBhaW50aW5nTGF5ZXIoKTsKLQotICAgIC8vIElmIG91ciB6LWluZGV4IGNoYW5nZXMgdmFs
dWUgb3Igb3VyIHZpc2liaWxpdHkgY2hhbmdlcywKLSAgICAvLyB3ZSBuZWVkIHRvIGRpcnR5IG91
ciBzdGFja2luZyBjb250ZXh0J3Mgei1vcmRlciBsaXN0LgotICAgIFJlbmRlclN0eWxlKiBvbGRT
dHlsZSA9IHN0eWxlKCk7Ci0gICAgaWYgKG9sZFN0eWxlICYmIG5ld1N0eWxlKSB7Ci0gICAgICAg
IGlmIChwYXJlbnQoKSkgewotICAgICAgICAgICAgLy8gRG8gYSByZXBhaW50IHdpdGggdGhlIG9s
ZCBzdHlsZSBmaXJzdCwgZS5nLiwgZm9yIGV4YW1wbGUgaWYgd2UgZ28gZnJvbQotICAgICAgICAg
ICAgLy8gaGF2aW5nIGFuIG91dGxpbmUgdG8gbm90IGhhdmluZyBhbiBvdXRsaW5lLgotICAgICAg
ICAgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlUmVwYWludExheWVyKSB7Ci0gICAgICAg
ICAgICAgICAgbGF5ZXIoKS0+cmVwYWludEluY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCEob2xkU3R5bGUtPmNsaXAoKSA9PSBuZXdTdHlsZS0+Y2xpcCgpKSkKLSAg
ICAgICAgICAgICAgICAgICAgbGF5ZXIoKS0+Y2xlYXJDbGlwUmVjdHNJbmNsdWRpbmdEZXNjZW5k
YW50cygpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZVJl
cGFpbnQgfHwgbmV3U3R5bGUtPm91dGxpbmVTaXplKCkgPCBvbGRTdHlsZS0+b3V0bGluZVNpemUo
KSkKLSAgICAgICAgICAgICAgICByZXBhaW50KCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dCB8fCBkaWZmID09IFN0eWxlRGlm
ZmVyZW5jZVNpbXBsaWZpZWRMYXlvdXQpIHsKLSAgICAgICAgICAgIC8vIFdoZW4gYSBsYXlvdXQg
aGludCBoYXBwZW5zLCB3ZSBnbyBhaGVhZCBhbmQgZG8gYSByZXBhaW50IG9mIHRoZSBsYXllciwg
c2luY2UgdGhlIGxheWVyIGNvdWxkCi0gICAgICAgICAgICAvLyBlbmQgdXAgYmVpbmcgZGVzdHJv
eWVkLgotICAgICAgICAgICAgaWYgKGhhc0xheWVyKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAo
b2xkU3R5bGUtPnBvc2l0aW9uKCkgIT0gbmV3U3R5bGUtPnBvc2l0aW9uKCkKLSAgICAgICAgICAg
ICAgICAgICAgfHwgb2xkU3R5bGUtPnpJbmRleCgpICE9IG5ld1N0eWxlLT56SW5kZXgoKQotICAg
ICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+aGFzQXV0b1pJbmRleCgpICE9IG5ld1N0eWxl
LT5oYXNBdXRvWkluZGV4KCkKLSAgICAgICAgICAgICAgICAgICAgfHwgIShvbGRTdHlsZS0+Y2xp
cCgpID09IG5ld1N0eWxlLT5jbGlwKCkpCi0gICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxl
LT5oYXNDbGlwKCkgIT0gbmV3U3R5bGUtPmhhc0NsaXAoKQotICAgICAgICAgICAgICAgICAgICB8
fCBvbGRTdHlsZS0+b3BhY2l0eSgpICE9IG5ld1N0eWxlLT5vcGFjaXR5KCkKLSAgICAgICAgICAg
ICAgICAgICAgfHwgb2xkU3R5bGUtPnRyYW5zZm9ybSgpICE9IG5ld1N0eWxlLT50cmFuc2Zvcm0o
KQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICAgICAgICAgICAgICAgICAgfHwgb2xkU3R5
bGUtPmZpbHRlcigpICE9IG5ld1N0eWxlLT5maWx0ZXIoKQotI2VuZGlmCi0gICAgICAgICAgICAg
ICAgICAgICkKLSAgICAgICAgICAgICAgICBsYXllcigpLT5yZXBhaW50SW5jbHVkaW5nRGVzY2Vu
ZGFudHMoKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3U3R5bGUtPmhhc1RyYW5zZm9ybSgp
IHx8IG5ld1N0eWxlLT5vcGFjaXR5KCkgPCAxIHx8IG5ld1N0eWxlLT5oYXNGaWx0ZXIoKSkgewot
ICAgICAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBsYXllciB5ZXQsIGJ1dCB3ZSBh
cmUgZ29pbmcgdG8gZ2V0IG9uZSBiZWNhdXNlIG9mIHRyYW5zZm9ybSBvciBvcGFjaXR5LAotICAg
ICAgICAgICAgICAgIC8vICB0aGVuIHdlIG5lZWQgdG8gcmVwYWludCB0aGUgb2xkIHBvc2l0aW9u
IG9mIHRoZSBvYmplY3QuCi0gICAgICAgICAgICAgICAgcmVwYWludCgpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotCi0gICAgUmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2Uo
ZGlmZiwgbmV3U3R5bGUpOworICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OndpbGxCZURlc3Ry
b3llZCgpOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZShT
dHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQordm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6dXBkYXRlRnJvbVN0eWxlKCkKIHsKLSAgICBSZW5kZXJPYmpl
Y3Q6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKLSAgICB1cGRhdGVCb3hNb2RlbElu
Zm9Gcm9tU3R5bGUoKTsKLSAgICAKLSAgICBpZiAocmVxdWlyZXNMYXllcigpKSB7Ci0gICAgICAg
IGlmICghbGF5ZXIoKSAmJiBsYXllckNyZWF0aW9uQWxsb3dlZEZvclN1YnRyZWUoKSkgewotICAg
ICAgICAgICAgaWYgKHNfd2FzRmxvYXRpbmcgJiYgaXNGbG9hdGluZygpKQotICAgICAgICAgICAg
ICAgIHNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAgICAgICAgICBtX2xheWVyID0gbmV3
IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJMYXllcih0aGlzKTsKLSAgICAgICAgICAgIHNldEhhc0xh
eWVyKHRydWUpOwotICAgICAgICAgICAgbV9sYXllci0+aW5zZXJ0T25seVRoaXNMYXllcigpOwot
ICAgICAgICAgICAgaWYgKHBhcmVudCgpICYmICFuZWVkc0xheW91dCgpICYmIGNvbnRhaW5pbmdC
bG9jaygpKSB7Ci0gICAgICAgICAgICAgICAgbV9sYXllci0+c2V0UmVwYWludFN0YXR1cyhOZWVk
c0Z1bGxSZXBhaW50KTsKLSAgICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBvbmx5IG9uZSBsYXll
ciB0byB1cGRhdGUsIGl0IGlzIG5vdCB3b3J0aCB1c2luZyB8Y2FjaGVkT2Zmc2V0fCBzaW5jZQot
ICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBub3Qgc3VyZSB0aGUgdmFsdWUgd2lsbCBiZSB1c2Vk
LgotICAgICAgICAgICAgICAgIG1fbGF5ZXItPnVwZGF0ZUxheWVyUG9zaXRpb25zKDApOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChsYXllcigpICYmIGxheWVyKCkt
PnBhcmVudCgpKSB7Ci0gICAgICAgIHNldEhhc1RyYW5zZm9ybShmYWxzZSk7IC8vIEVpdGhlciBh
IHRyYW5zZm9ybSB3YXNuJ3Qgc3BlY2lmaWVkIG9yIHRoZSBvYmplY3QgZG9lc24ndCBzdXBwb3J0
IHRyYW5zZm9ybXMsIHNvIGp1c3QgbnVsbCBvdXQgdGhlIGJpdC4KLSAgICAgICAgc2V0SGFzUmVm
bGVjdGlvbihmYWxzZSk7Ci0gICAgICAgIG1fbGF5ZXItPnJlbW92ZU9ubHlUaGlzTGF5ZXIoKTsg
Ly8gY2FsbHMgZGVzdHJveUxheWVyKCkgd2hpY2ggY2xlYXJzIG1fbGF5ZXIKLSAgICAgICAgaWYg
KHNfd2FzRmxvYXRpbmcgJiYgaXNGbG9hdGluZygpKQotICAgICAgICAgICAgc2V0Q2hpbGROZWVk
c0xheW91dCh0cnVlKTsKLSAgICAgICAgaWYgKHNfaGFkVHJhbnNmb3JtKQotICAgICAgICAgICAg
c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7Ci0gICAgfQotCi0gICAgaWYgKGxh
eWVyKCkpIHsKLSAgICAgICAgbGF5ZXIoKS0+c3R5bGVDaGFuZ2VkKGRpZmYsIG9sZFN0eWxlKTsK
LSAgICAgICAgaWYgKHNfaGFkTGF5ZXIgJiYgbGF5ZXIoKS0+aXNTZWxmUGFpbnRpbmdMYXllcigp
ICE9IHNfbGF5ZXJXYXNTZWxmUGFpbnRpbmcpCi0gICAgICAgICAgICBzZXRDaGlsZE5lZWRzTGF5
b3V0KHRydWUpOwotICAgIH0KLQotICAgIGlmIChGcmFtZVZpZXcgKmZyYW1lVmlldyA9IHZpZXco
KS0+ZnJhbWVWaWV3KCkpIHsKLSAgICAgICAgYm9vbCBuZXdTdHlsZUlzVmlld3BvcnRDb25zdGFp
bmVkID0gc3R5bGUoKS0+aGFzVmlld3BvcnRDb25zdHJhaW5lZFBvc2l0aW9uKCk7Ci0gICAgICAg
IGJvb2wgb2xkU3R5bGVJc1ZpZXdwb3J0Q29uc3RyYWluZWQgPSBvbGRTdHlsZSAmJiBvbGRTdHls
ZS0+aGFzVmlld3BvcnRDb25zdHJhaW5lZFBvc2l0aW9uKCk7Ci0gICAgICAgIGlmIChuZXdTdHls
ZUlzVmlld3BvcnRDb25zdGFpbmVkICE9IG9sZFN0eWxlSXNWaWV3cG9ydENvbnN0cmFpbmVkKSB7
Ci0gICAgICAgICAgICBpZiAobmV3U3R5bGVJc1ZpZXdwb3J0Q29uc3RhaW5lZCAmJiBsYXllcigp
KQotICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+YWRkVmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dCh0aGlzKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnJl
bW92ZVZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QodGhpcyk7Ci0gICAgICAgIH0KLSAgICB9Ci19
CisgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6dXBkYXRlRnJvbVN0eWxlKCk7CiAKLXZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpCi17CiAg
ICAgLy8gU2V0IHRoZSBhcHByb3ByaWF0ZSBiaXRzIGZvciBhIGJveCBtb2RlbCBvYmplY3QuICBT
aW5jZSBhbGwgYml0cyBhcmUgY2xlYXJlZCBpbiBzdHlsZVdpbGxDaGFuZ2UsCiAgICAgLy8gd2Ug
b25seSBjaGVjayBmb3IgYml0cyB0aGF0IGNvdWxkIHBvc3NpYmx5IGJlIHNldCB0byB0cnVlLgog
ICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXggNmVlMzU0YzlhYzg5MmRm
ODk3YzlhZWNiMTMzZGUwYjExOWZkYWJhNS4uOTljZGU0ZWYxOGI4NDNlMGJhZmZlYzNlMTE1M2Vi
N2ZkMzI0YjNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmgKQEAgLTI1LDcgKzI1LDcgQEAKICNkZWZpbmUgUmVuZGVyQm94TW9kZWxPYmpl
Y3RfaAogCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXNJbmxpbmVNZXRob2RzLmgiCi0jaW5jbHVkZSAi
UmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIgogI2lu
Y2x1ZGUgIlNoYWRvd0RhdGEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTYsNyArNTYs
NyBAQCBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CiAvLyBUaGlzIGNs
YXNzIGlzIHRoZSBiYXNlIGZvciBhbGwgb2JqZWN0cyB0aGF0IGFkaGVyZSB0byB0aGUgQ1NTIGJv
eCBtb2RlbCBhcyBkZXNjcmliZWQKIC8vIGF0IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL2Jv
eC5odG1sCiAKLWNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0IDogcHVibGljIFJlbmRlck9iamVj
dCB7CitjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdCA6IHB1YmxpYyBSZW5kZXJMYXllck1vZGVs
T2JqZWN0IHsKIHB1YmxpYzoKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdChOb2RlKik7CiAgICAg
dmlydHVhbCB+UmVuZGVyQm94TW9kZWxPYmplY3QoKTsKQEAgLTgyLDE0ICs4Miw5IEBAIHB1Ymxp
YzoKICAgICBpbnQgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSBjb25zdDsKICAgICBpbnQgcGl4
ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVX
aWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
RnJvbVN0eWxlKCkgT1ZFUlJJREU7CiAKLSAgICBib29sIGhhc1NlbGZQYWludGluZ0xheWVyKCkg
Y29uc3Q7Ci0gICAgUmVuZGVyTGF5ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcjsg
fQotCi0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBpc1Jv
b3QoKSB8fCBpc1Bvc2l0aW9uZWQoKSB8fCBjcmVhdGVzR3JvdXAoKSB8fCBoYXNDbGlwUGF0aCgp
IHx8IGhhc1RyYW5zZm9ybSgpIHx8IGhhc0hpZGRlbkJhY2tmYWNlKCkgfHwgaGFzUmVmbGVjdGlv
bigpIHx8IHN0eWxlKCktPnNwZWNpZmllc0NvbHVtbnMoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBy
ZXF1aXJlc0xheWVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gaXNSb290KCkgfHwgaXNQb3Np
dGlvbmVkKCkgfHwgY3JlYXRlc0dyb3VwKCkgfHwgaGFzQ2xpcFBhdGgoKSB8fCBoYXNUcmFuc2Zv
cm0oKSB8fCBoYXNIaWRkZW5CYWNrZmFjZSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBzdHlsZSgp
LT5zcGVjaWZpZXNDb2x1bW5zKCk7IH0KIAogICAgIC8vIFRoaXMgd2lsbCB3b3JrIG9uIGlubGlu
ZXMgdG8gcmV0dXJuIHRoZSBib3VuZGluZyBib3ggb2YgYWxsIG9mIHRoZSBsaW5lcycgYm9yZGVy
IGJveGVzLgogICAgIHZpcnR1YWwgSW50UmVjdCBib3JkZXJCb3VuZGluZ0JveCgpIGNvbnN0ID0g
MDsKQEAgLTE2NSw5ICsxNjAsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFwQWJz
b2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zv
cm1TdGF0ZSYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgLy8gQ2FsbGVkIGJ5IFJlbmRlck9iamVj
dDo6d2lsbEJlRGVzdHJveWVkKCkgYW5kIGlzIHRoZSBvbmx5IHdheSBsYXllcnMgc2hvdWxkIGV2
ZXIgYmUgZGVzdHJveWVkCi0gICAgdm9pZCBkZXN0cm95TGF5ZXIoKTsKLQogICAgIHZvaWQgaGln
aFF1YWxpdHlSZXBhaW50VGltZXJGaXJlZChUaW1lcjxSZW5kZXJCb3hNb2RlbE9iamVjdD4qKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25TdGF0ZSBzKTsK
QEAgLTMwNywxNiArMjk5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdCb3hTaWRlRnJvbVBh
dGgoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFBhdGgmLCBjb25z
dCBjbGFzcyBCb3JkZXJFZGdlW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
dGhpY2tuZXNzLCBmbG9hdCBkcmF3VGhpY2tuZXNzLCBCb3hTaWRlLCBjb25zdCBSZW5kZXJTdHls
ZSosIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yLCBFQm9yZGVyU3R5bGUsIEJh
Y2tncm91bmRCbGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29s
IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKLQotICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJWaWV3
OwotCi0gICAgUmVuZGVyTGF5ZXIqIG1fbGF5ZXI7Ci0gICAgCi0gICAgLy8gVXNlZCB0byBzdG9y
ZSBzdGF0ZSBiZXR3ZWVuIHN0eWxlV2lsbENoYW5nZSBhbmQgc3R5bGVEaWRDaGFuZ2UKLSAgICBz
dGF0aWMgYm9vbCBzX3dhc0Zsb2F0aW5nOwotICAgIHN0YXRpYyBib29sIHNfaGFkTGF5ZXI7Ci0g
ICAgc3RhdGljIGJvb2wgc19oYWRUcmFuc2Zvcm07Ci0gICAgc3RhdGljIGJvb2wgc19sYXllcldh
c1NlbGZQYWludGluZzsKIH07CiAKIGlubGluZSBSZW5kZXJCb3hNb2RlbE9iamVjdCogdG9SZW5k
ZXJCb3hNb2RlbE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmluZGV4IGZlMTZiOWI4ZTcyMzZjMzA4
YTRiNzFhZGFmZmIyNjUzNTYwMmVhZjguLjE4OTU0Y2FlY2FiN2VmMTdiM2JhNDI3ZWM2MGFmZThk
YzBhMjdmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9t
ZXRyeU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5
TWFwLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6Om1hcFRv
QWJzb2x1dGUoVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlKSBjb25zdAogICAgIHRyYW5z
Zm9ybVN0YXRlLmZsYXR0ZW4oKTsgICAgCiB9CiAKLXZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1
c2hNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3Qg
UmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIpCit2b2lkIFJlbmRlckdlb21l
dHJ5TWFwOjpwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVy
ZXIsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIpCiB7CiAg
ICAgLy8gV2UgbmVlZCB0byBwdXNoIG1hcHBpbmdzIGluIHJldmVyc2Ugb3JkZXIgaGVyZSwgc28g
ZG8gaW5zZXJ0aW9ucyByYXRoZXIgdGhhbiBhcHBlbmRzLgogICAgIFRlbXBvcmFyeUNoYW5nZTxz
aXplX3Q+IHBvc2l0aW9uQ2hhbmdlKG1faW5zZXJ0aW9uUG9zaXRpb24sIG1fbWFwcGluZy5zaXpl
KCkpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1c2hNYXBw
aW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBjb25zdCBSCiAgICAgICAg
IHB1c2gocmVuZGVyZXIsIHRvTGF5b3V0U2l6ZShsYXllck9mZnNldCksIC8qYWNjdW11bGF0aW5n
VHJhbnNmb3JtKi8gdHJ1ZSwgLyppc05vblVuaWZvcm0qLyBmYWxzZSwgLyppc0ZpeGVkUG9zaXRp
b24qLyBmYWxzZSwgLypoYXNUcmFuc2Zvcm0qLyBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIgPSBh
bmNlc3RvckxheWVyID8gYW5jZXN0b3JMYXllci0+cmVuZGVyZXIoKSA6IDA7CisgICAgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JSZW5kZXJlciA9IGFuY2VzdG9yTGF5ZXIg
PyBhbmNlc3RvckxheWVyLT5yZW5kZXJlcigpIDogMDsKICAgICBwdXNoTWFwcGluZ3NUb0FuY2Vz
dG9yKHJlbmRlcmVyLCBhbmNlc3RvclJlbmRlcmVyKTsKIH0KIApAQCAtMjE4LDcgKzIxOCw3IEBA
IHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1c2hWaWV3KGNvbnN0IFJlbmRlclZpZXcqIHZpZXcs
IGNvbnN0IExheW91dFNpemUmIHNjcm9sCiAgICAgc3RlcEluc2VydGVkKHN0ZXApOwogfQogCi12
b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwb3BNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIGFuY2VzdG9yUmVuZGVyZXIpCit2b2lkIFJlbmRlckdlb21ldHJ5TWFw
Ojpwb3BNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5j
ZXN0b3JSZW5kZXJlcikKIHsKICAgICBBU1NFUlQobV9tYXBwaW5nLnNpemUoKSk7CiAKQEAgLTIz
MCw3ICsyMzAsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwb3BNYXBwaW5nc1RvQW5jZXN0
b3IoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdAogCiB2b2lkIFJlbmRlckdlb21l
dHJ5TWFwOjpwb3BNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9y
TGF5ZXIpCiB7Ci0gICAgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yUmVuZGVy
ZXIgPSBhbmNlc3RvckxheWVyID8gYW5jZXN0b3JMYXllci0+cmVuZGVyZXIoKSA6IDA7CisgICAg
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JSZW5kZXJlciA9IGFuY2VzdG9y
TGF5ZXIgPyBhbmNlc3RvckxheWVyLT5yZW5kZXJlcigpIDogMDsKICAgICBwb3BNYXBwaW5nc1Rv
QW5jZXN0b3IoYW5jZXN0b3JSZW5kZXJlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdlb21ldHJ5TWFwLmgKaW5kZXggNDk1ZDBiZjIyZDc3ZWY2ZWQ3ZmI0YmJiMDIw
MjA0MDdhMDcyZmRlNy4uZGZmYzUwMjZmMmIyY2U5OTdmNDEyOTZhY2U0NDE0YTBmOTZmZDU0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmgKQEAgLTM1
LDggKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBSZW5kZXJCb3hNb2Rl
bE9iamVjdDsKIGNsYXNzIFJlbmRlckxheWVyOworY2xhc3MgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclZpZXc7CiBjbGFzcyBUcmFuc2Zv
cm1TdGF0ZTsKQEAgLTgzLDggKzgzLDggQEAgcHVibGljOgogICAgIC8vIENhbGxlZCBieSBjb2Rl
IHdhbGtpbmcgdGhlIHJlbmRlcmVyIG9yIGxheWVyIHRyZWVzLgogICAgIHZvaWQgcHVzaE1hcHBp
bmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJMYXllciosIGNvbnN0IFJlbmRlckxheWVyKiBhbmNl
c3RvckxheWVyKTsKICAgICB2b2lkIHBvcE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJM
YXllciopOwotICAgIHZvaWQgcHVzaE1hcHBpbmdzVG9BbmNlc3Rvcihjb25zdCBSZW5kZXJPYmpl
Y3QqLCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JSZW5kZXJlcik7Ci0gICAg
dm9pZCBwb3BNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqKTsK
KyAgICB2b2lkIHB1c2hNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JSZW5kZXJlcik7CisgICAgdm9pZCBw
b3BNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopOwogICAg
IAogICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYnkg
cmVuZGVyZXJzIGluc2lkZSBhIGNhbGwgdG8gcHVzaE1hcHBpbmdzVG9BbmNlc3RvcigpLgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDIzOWFiYTM3MDA4
ZTEwN2Y2YmM0OTJlYzVjMzQwYjkyMGIxZmJiZWMuLmZlOTYxNzYxNDNkZjU4NmY5OGI5NzIwYTM1
MmU3M2YwN2UwZGQxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCkBAIC0xMTgsOSArMTE4LDkgQEAgUmVuZGVySW5saW5lKiBSZW5kZXJJbmxpbmU6OmlubGlu
ZUVsZW1lbnRDb250aW51YXRpb24oKSBjb25zdAogICAgIHJldHVybiB0b1JlbmRlckJsb2NrKGNv
bnRpbnVhdGlvbiktPmlubGluZUVsZW1lbnRDb250aW51YXRpb24oKTsKIH0KIAotdm9pZCBSZW5k
ZXJJbmxpbmU6OnVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpCit2b2lkIFJlbmRlcklubGlu
ZTo6dXBkYXRlRnJvbVN0eWxlKCkKIHsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdDo6dXBkYXRl
Qm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CisgICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnVwZGF0
ZUZyb21TdHlsZSgpOwogCiAgICAgc2V0SW5saW5lKHRydWUpOyAvLyBOZWVkZWQgZm9yIHJ1bi1p
bnMsIHNpbmNlIHJ1bi1pbiBpcyBjb25zaWRlcmVkIGEgYmxvY2sgZGlzcGxheSB0eXBlLgogCkBA
IC05NjAsNyArOTYwLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmxpbmVzVmlzdWFsT3Zl
cmZsb3dCb3VuZGluZ0JveCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlY3Q7CiB9CiAKLUxheW91dFJl
Y3QgUmVuZGVySW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVySW5s
aW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIC8vIE9ubHkgcnVuLWlucyBhcmUgYWxs
b3dlZCBpbiBoZXJlIGR1cmluZyBsYXlvdXQuCiAgICAgQVNTRVJUKCF2aWV3KCkgfHwgIXZpZXco
KS0+bGF5b3V0U3RhdGVFbmFibGVkKCkgfHwgaXNSdW5JbigpKTsKQEAgLTEwMTEsNyArMTAxMSw3
IEBAIExheW91dFJlY3QgUmVuZGVySW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwCiAgICAgcmV0dXJuIHJlcGFpbnRSZWN0OwogfQog
Ci1MYXlvdXRSZWN0IFJlbmRlcklubGluZTo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lk
dGgpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlcklubGluZTo6cmVjdFdpdGhPdXRsaW5lRm9yUmVw
YWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0
IG91dGxpbmVXaWR0aCkgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IHIoUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgb3V0bGlu
ZVdpZHRoKSk7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnIgPSBmaXJzdENoaWxkKCk7IGN1
cnI7IGN1cnIgPSBjdXJyLT5uZXh0U2libGluZygpKSB7CkBAIC0xMDIxLDcgKzEwMjEsNyBAQCBM
YXlvdXRSZWN0IFJlbmRlcklubGluZTo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludAogICAgIHJldHVybiByOwogfQogCi12b2lkIFJlbmRlcklu
bGluZTo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5k
ZXJJbmxpbmU6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAogewog
ICAgIGlmIChSZW5kZXJWaWV3KiB2ID0gdmlldygpKSB7CiAgICAgICAgIC8vIExheW91dFN0YXRl
IGlzIG9ubHkgdmFsaWQgZm9yIHJvb3QtcmVsYXRpdmUgcmVwYWludGluZwpAQCAtMTEwMyw3ICsx
MTAzLDcgQEAgTGF5b3V0U2l6ZSBSZW5kZXJJbmxpbmU6Om9mZnNldEZyb21Db250YWluZXIoUmVu
ZGVyT2JqZWN0KiBjb250YWluZXIsIGNvbnN0IExheW8KICAgICByZXR1cm4gb2Zmc2V0OwogfQog
Ci12b2lkIFJlbmRlcklubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBN
YXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lk
IFJlbmRlcklubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExv
Y2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBp
ZiAocmVwYWludENvbnRhaW5lciA9PSB0aGlzKQogICAgICAgICByZXR1cm47CkBAIC0xMTU1LDcg
KzExNTUsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVAogICAgIG8tPm1hcExvY2FsVG9Db250
YWluZXIocmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdhc0ZpeGVkKTsK
IH0KIAotY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250
YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRl
ckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9iamVjdCogUmVu
ZGVySW5saW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoYW5jZXN0b3JUb1N0b3BBdCAhPSB0aGlzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IDRhNWJiMDlkYzU2NTljMTZlNzQw
OWMwYWE5MjVlYmE1ZmJmNGYxM2YuLjMwMmNmMTYyNzc2OGI2NWYxYzJmZmYyZTk2NDAzNTA2NTZk
ZTkxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTEzMSwx
MiArMTMxLDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldFdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbGluZXNCb3VuZGluZ0JveCgpLndpZHRoKCk7IH0KICAgICB2aXJ0
dWFsIExheW91dFVuaXQgb2Zmc2V0SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbGluZXNCb3VuZGlu
Z0JveCgpLmhlaWdodCgpOyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIp
IGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxp
bmVXaWR0aCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wg
Zml4ZWQpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVw
YWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0
IG91dGxpbmVXaWR0aCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVS
ZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBM
YXlvdXRSZWN0JiwgYm9vbCBmaXhlZCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFw
cGx5Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhl
ZCA9IDApIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBw
dXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3Rv
clRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBt
YXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBs
eUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2FzRml4ZWQg
PSAwKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVz
aE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3Rv
clRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmly
dHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYp
OwogCkBAIC0xNjUsNyArMTY1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRkRGFz
aGJvYXJkUmVnaW9ucyhWZWN0b3I8RGFzaGJvYXJkUmVnaW9uVmFsdWU+Jik7CiAjZW5kaWYKICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUZyb21TdHlsZSgpIE9WRVJSSURFOwogICAgIAogICAgIFJlbmRl
cklubGluZSogY2xvbmUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKaW5kZXggNzU5ODYzMzVlZWY0OGJmNDRhNDMyNzE2ZDJjNzk0MTk5YmM1YTBlNy4u
YzAxMjc3ZDEzYmQzMzE2Y2FlODZhMjEzMjNiNWViYjE2NDdjOTQ3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgYm9vbCBDbGlw
UmVjdDo6aW50ZXJzZWN0cyhjb25zdCBIaXRUZXN0TG9jYXRpb24mIGhpdFRlc3RMb2NhdGlvbikK
ICAgICByZXR1cm4gaGl0VGVzdExvY2F0aW9uLmludGVyc2VjdHMobV9yZWN0KTsKIH0KIAotUmVu
ZGVyTGF5ZXI6OlJlbmRlckxheWVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlcikKK1Jl
bmRlckxheWVyOjpSZW5kZXJMYXllcihSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZW5kZXJlcikK
ICAgICA6IG1faW5SZXNpemVNb2RlKGZhbHNlKQogICAgICwgbV9zY3JvbGxEaW1lbnNpb25zRGly
dHkodHJ1ZSkKICAgICAsIG1fbm9ybWFsRmxvd0xpc3REaXJ0eSh0cnVlKQpAQCAtMzkyLDcgKzM5
Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKExheW91dFBvaW50
KiBvZmZzZXRGcm9tUm9vdCwgVXBkYXRlTGF5ZXJQCiAgICAgICAgIC8vIExheW91dFN0YXRlIG91
dHNpZGUgdGhlIGxheW91dCgpIHBoYXNlIGFuZCB1c2UgaXQgaGVyZS4KICAgICAgICAgQVNTRVJU
KCF2aWV3LT5sYXlvdXRTdGF0ZUVuYWJsZWQoKSk7CiAKLSAgICAgICAgUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIgPSByZW5kZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50
KCk7CisgICAgICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBy
ZW5kZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50KCk7CiAgICAgICAgIExheW91dFJlY3Qgb2xk
UmVwYWludFJlY3QgPSBtX3JlcGFpbnRSZWN0OwogICAgICAgICBMYXlvdXRSZWN0IG9sZE91dGxp
bmVCb3ggPSBtX291dGxpbmVCb3g7CiAgICAgICAgIGNvbXB1dGVSZXBhaW50UmVjdHMob2Zmc2V0
RnJvbVJvb3QpOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbXB1dGVS
ZXBhaW50UmVjdHMoTGF5b3V0UG9pbnQqIG9mZnNldEZyb21Sb290KQogewogICAgIEFTU0VSVCgh
bV92aXNpYmxlQ29udGVudFN0YXR1c0RpcnR5KTsKIAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOwor
ICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSByZW5kZXJlcigp
LT5jb250YWluZXJGb3JSZXBhaW50KCk7CiAgICAgbV9yZXBhaW50UmVjdCA9IHJlbmRlcmVyKCkt
PmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpOwogICAgIG1f
b3V0bGluZUJveCA9IHJlbmRlcmVyKCktPm91dGxpbmVCb3VuZHNGb3JSZXBhaW50KHJlcGFpbnRD
b250YWluZXIsIG9mZnNldEZyb21Sb290KTsKIH0KQEAgLTYzMCwxMCArNjMwLDEwIEBAIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IFJlbmRlckxheWVyOjpyZW5kZXJhYmxlVHJhbnNmb3JtKFBhaW50QmVo
YXZpb3IgcGFpbnRCZWhhdmlvCiAgICAgcmV0dXJuICptX3RyYW5zZm9ybTsKIH0KIAotc3RhdGlj
IGJvb2wgY2hlY2tDb250YWluaW5nQmxvY2tDaGFpbkZvclBhZ2luYXRpb24oUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJCb3gqIGFuY2VzdG9yQ29sdW1uc1JlbmRlcmVyKQor
c3RhdGljIGJvb2wgY2hlY2tDb250YWluaW5nQmxvY2tDaGFpbkZvclBhZ2luYXRpb24oUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcmVuZGVyZXIsIFJlbmRlckJveCogYW5jZXN0b3JDb2x1bW5zUmVu
ZGVyZXIpCiB7CiAgICAgUmVuZGVyVmlldyogdmlldyA9IHJlbmRlcmVyLT52aWV3KCk7Ci0gICAg
UmVuZGVyQm94TW9kZWxPYmplY3QqIHByZXZCbG9jayA9IHJlbmRlcmVyOworICAgIFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIHByZXZCbG9jayA9IHJlbmRlcmVyOwogICAgIFJlbmRlckJsb2NrKiBj
b250YWluaW5nQmxvY2s7CiAgICAgZm9yIChjb250YWluaW5nQmxvY2sgPSByZW5kZXJlci0+Y29u
dGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICBjb250YWluaW5nQmxvY2sgJiYgY29udGFpbmluZ0Js
b2NrICE9IHZpZXcgJiYgY29udGFpbmluZ0Jsb2NrICE9IGFuY2VzdG9yQ29sdW1uc1JlbmRlcmVy
OwpAQCAtODk0LDcgKzg5NCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRp
b24oKQogICAgIH0KICAgICAKICAgICBpZiAocmVuZGVyZXIoKS0+aXNJbkZsb3dQb3NpdGlvbmVk
KCkpIHsKLSAgICAgICAgbV9vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbiA9IHJlbmRlcmVyKCktPm9m
ZnNldEZvckluRmxvd1Bvc2l0aW9uKCk7CisgICAgICAgIG1fb2Zmc2V0Rm9ySW5GbG93UG9zaXRp
b24gPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlcmVyKCkpLT5vZmZzZXRGb3JJbkZsb3dQ
b3NpdGlvbigpOwogICAgICAgICBsb2NhbFBvaW50Lm1vdmUobV9vZmZzZXRGb3JJbkZsb3dQb3Np
dGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbiA9
IExheW91dFNpemUoKTsKQEAgLTk1Nyw3ICs5NTcsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5
ZXI6OnN0YWNraW5nQ29udGV4dCgpIGNvbnN0CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Bvc2l0
aW9uZWRDb250YWluZXIoUmVuZGVyTGF5ZXIqIGxheWVyKQogewotICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0KiBsYXllclJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogbGF5ZXJSZW5kZXJlciA9IGxheWVyLT5yZW5kZXJlcigpOwogICAgIHJl
dHVybiBsYXllci0+aXNSb290TGF5ZXIoKSB8fCBsYXllclJlbmRlcmVyLT5pc1Bvc2l0aW9uZWQo
KSB8fCBsYXllci0+aGFzVHJhbnNmb3JtKCk7CiB9CiAKQEAgLTExMzUsNyArMTEzNSw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnNldEZpbHRlckJhY2tlbmROZWVkc1JlcGFpbnRpbmdJblJlY3QoY29u
c3QgTGF5b3V0UmVjdCYgcmVjdCwKIGJvb2wgUmVuZGVyTGF5ZXI6Omhhc0FuY2VzdG9yV2l0aEZp
bHRlck91dHNldHMoKSBjb25zdAogewogICAgIGZvciAoY29uc3QgUmVuZGVyTGF5ZXIqIGN1cnIg
PSB0aGlzOyBjdXJyOyBjdXJyID0gY3Vyci0+cGFyZW50KCkpIHsKLSAgICAgICAgUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlbmRlcmVyID0gY3Vyci0+cmVuZGVyZXIoKTsKKyAgICAgICAgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcmVuZGVyZXIgPSBjdXJyLT5yZW5kZXJlcigpOwogICAgICAgICBp
ZiAocmVuZGVyZXItPnN0eWxlKCktPmhhc0ZpbHRlck91dHNldHMoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTE3MzUsNyArMTczNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnNjcm9sbFRvKGludCB4LCBpbnQgeSkKICAgICAgICAgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNB
ZnRlclNjcm9sbCgpOwogICAgIH0KIAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpOworICAgIFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSByZW5kZXJlcigpLT5jb250YWlu
ZXJGb3JSZXBhaW50KCk7CiAgICAgRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKTsK
ICAgICBpZiAoZnJhbWUpIHsKICAgICAgICAgLy8gVGhlIGNhcmV0IHJlY3QgbmVlZHMgdG8gYmUg
aW52YWxpZGF0ZWQgYWZ0ZXIgc2Nyb2xsaW5nCkBAIC00NzA0LDcgKzQ3MDQsNyBAQCB2b2lkIFJl
bmRlckxheWVyOjpzZXRCYWNraW5nTmVlZHNSZXBhaW50SW5SZWN0KGNvbnN0IExheW91dFJlY3Qm
IHIpCiB9CiAKIC8vIFNpbmNlIHdlJ3JlIG9ubHkgcGFpbnRpbmcgbm9uLWNvbXBvc2l0ZWQgbGF5
ZXJzLCB3ZSBrbm93IHRoYXQgdGhleSBhbGwgc2hhcmUgdGhlIHNhbWUgcmVwYWludENvbnRhaW5l
ci4KLXZvaWQgUmVuZGVyTGF5ZXI6OnJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2Nl
bmRhbnRzKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKQordm9pZCBSZW5k
ZXJMYXllcjo6cmVwYWludEluY2x1ZGluZ05vbkNvbXBvc2l0aW5nRGVzY2VuZGFudHMoUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikKIHsKICAgICByZW5kZXJlcigpLT5y
ZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50UmVj
dChyZW5kZXJlcigpLT5jbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFp
bmVyKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDk3MGIx
NjQzZTdiOWVhYjgyODM1M2Q0MTk5MGNmYzJlYTE0YTM5NmUuLmMzZGI5NmQxZGVkNjU2MGY5ZWE0
MWU2M2Q4MDU3YjgxYzg5ZThiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5oCkBAIC0yNTEsMTAgKzI1MSwxMCBAQCBjbGFzcyBSZW5kZXJMYXllciA6IHB1YmxpYyBTY3Jv
bGxhYmxlQXJlYSB7CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlclJlcGxpY2E7CiAK
LSAgICBSZW5kZXJMYXllcihSZW5kZXJCb3hNb2RlbE9iamVjdCopOworICAgIFJlbmRlckxheWVy
KFJlbmRlckxheWVyTW9kZWxPYmplY3QqKTsKICAgICB+UmVuZGVyTGF5ZXIoKTsKIAotICAgIFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7
IH0KKyAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVuZGVyZXI7IH0KICAgICBSZW5kZXJCb3gqIHJlbmRlckJveCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVuZGVyZXIgJiYgbV9yZW5kZXJlci0+aXNCb3goKSA/IHRvUmVuZGVyQm94KG1fcmVuZGVy
ZXIpIDogMDsgfQogICAgIFJlbmRlckxheWVyKiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmVudDsgfQogICAgIFJlbmRlckxheWVyKiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJldHVy
biBtX3ByZXZpb3VzOyB9CkBAIC0yNzUsNyArMjc1LDcgQEAgcHVibGljOgogICAgIC8vIGlmIGxh
eWVyIGNvbXBvc2l0aW5nIGlzIGJlaW5nIHVzZWQsCiAgICAgdm9pZCBzZXRCYWNraW5nTmVlZHNS
ZXBhaW50KCk7CiAgICAgdm9pZCBzZXRCYWNraW5nTmVlZHNSZXBhaW50SW5SZWN0KGNvbnN0IExh
eW91dFJlY3QmKTsgLy8gciBpcyBpbiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiB0aGUgbGF5ZXIn
cyByZW5kZXIgb2JqZWN0Ci0gICAgdm9pZCByZXBhaW50SW5jbHVkaW5nTm9uQ29tcG9zaXRpbmdE
ZXNjZW5kYW50cyhSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7CisgICAg
dm9pZCByZXBhaW50SW5jbHVkaW5nTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKTsKICNlbmRpZgogCiAgICAgdm9pZCBzdHls
ZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwpA
QCAtODgyLDcgKzg4Miw3IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyTGF5
ZXJCYWNraW5nOwogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllckNvbXBvc2l0b3I7Ci0gICAg
ZnJpZW5kIGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OworICAgIGZyaWVuZCBjbGFzcyBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0OwogCiAgICAgLy8gT25seSBzYWZlIHRvIGNhbGwgZnJvbSBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6ZGVzdHJveUxheWVyKFJlbmRlckFyZW5hKikKICAgICB2b2lkIGRl
c3Ryb3koUmVuZGVyQXJlbmEqKTsKQEAgLTk1Niw3ICs5NTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
QmxlbmRNb2RlIG1fYmxlbmRNb2RlOwogI2VuZGlmCiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVj
dCogbV9yZW5kZXJlcjsKKyAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBtX3JlbmRlcmVyOwog
CiAgICAgUmVuZGVyTGF5ZXIqIG1fcGFyZW50OwogICAgIFJlbmRlckxheWVyKiBtX3ByZXZpb3Vz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCmluZGV4
IDc4MjMyNzA5ZjhmM2M0NDUyNWY1NzNiZWFkOWQzMGI0MjhkYTVhYzIuLjM3NTkwODQ4OThlNDVi
MGEwOTVmODQwZGI0N2RmMDdkMjc2YWQyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKQEAgLTE4MCw3ICsxODAsNyBAQCBwcml2YXRlOgogICAg
IAogICAgIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gY3JlYXRlR3JhcGhpY3NMYXllcihjb25z
dCBTdHJpbmcmKTsKIAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0
IHsgcmV0dXJuIG1fb3duaW5nTGF5ZXItPnJlbmRlcmVyKCk7IH0KKyAgICBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fb3duaW5nTGF5ZXItPnJlbmRl
cmVyKCk7IH0KICAgICBSZW5kZXJMYXllckNvbXBvc2l0b3IqIGNvbXBvc2l0b3IoKSBjb25zdCB7
IHJldHVybiBtX293bmluZ0xheWVyLT5jb21wb3NpdG9yKCk7IH0KIAogICAgIHZvaWQgdXBkYXRl
SW50ZXJuYWxIaWVyYXJjaHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggZjk2NzIzM2VmN2U1NTkyMGNiNGRlOWJkODAy
ZDY1ODgxZDA5NjdjNi4uNDU0MWY4OTY2ZDIzNTU5YTIxNWZlODcwODQ4MGRiNzM2ZWZkZTA5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAKQEAgLTUwNyw3ICs1MDcsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBk
YXRlQmFja2luZyhSZW5kZXJMYXllciogbGF5ZXIsIENvbXBvc2l0aW5nQ2hhbmdlUgogICAgICAg
ICAgICAgLy8gaXRzIHJlcGxpY2EgR3JhcGhpY3NMYXllci4gSW4gcHJhY3RpY2UgdGhpcyBzaG91
bGQgbmV2ZXIgaGFwcGVuIGJlY2F1c2UgcmVmbGVjdGVlIGFuZCByZWZsZWN0aW9uIAogICAgICAg
ICAgICAgLy8gYXJlIGJvdGggZWl0aGVyIGNvbXBvc2l0ZWQsIG9yIG5vdCBjb21wb3NpdGVkLgog
ICAgICAgICAgICAgaWYgKGxheWVyLT5pc1JlZmxlY3Rpb24oKSkgewotICAgICAgICAgICAgICAg
IFJlbmRlckxheWVyKiBzb3VyY2VMYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QobGF5ZXIt
PnJlbmRlcmVyKCktPnBhcmVudCgpKS0+bGF5ZXIoKTsKKyAgICAgICAgICAgICAgICBSZW5kZXJM
YXllciogc291cmNlTGF5ZXIgPSB0b1JlbmRlckxheWVyTW9kZWxPYmplY3QobGF5ZXItPnJlbmRl
cmVyKCktPnBhcmVudCgpKS0+bGF5ZXIoKTsKICAgICAgICAgICAgICAgICBpZiAoUmVuZGVyTGF5
ZXJCYWNraW5nKiBiYWNraW5nID0gc291cmNlTGF5ZXItPmJhY2tpbmcoKSkgewogICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5yZXBsaWNhTGF5ZXIo
KSA9PSBsYXllci0+YmFja2luZygpLT5ncmFwaGljc0xheWVyKCkpOwogICAgICAgICAgICAgICAg
ICAgICBiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnNldFJlcGxpY2F0ZWRCeUxheWVyKDApOwpA
QCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXBhaW50T25D
b21wb3NpdGluZ0NoYW5nZShSZW5kZXJMYXllciogbGF5ZXIpCiAgICAgaWYgKGxheWVyLT5yZW5k
ZXJlcigpICE9IG1fcmVuZGVyVmlldyAmJiAhbGF5ZXItPnJlbmRlcmVyKCktPnBhcmVudCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciA9IGxheWVyLT5yZW5kZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50KCk7CisgICAgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IGxheWVyLT5yZW5kZXJlcigp
LT5jb250YWluZXJGb3JSZXBhaW50KCk7CiAgICAgaWYgKCFyZXBhaW50Q29udGFpbmVyKQogICAg
ICAgICByZXBhaW50Q29udGFpbmVyID0gbV9yZW5kZXJWaWV3OwogCkBAIC0xNDM5LDcgKzE0Mzks
NyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0xheWVy
KGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikgYwogICAgIC8vIFRoZSBjb21wb3NpdGluZyBzdGF0
ZSBvZiBhIHJlZmxlY3Rpb24gc2hvdWxkIG1hdGNoIHRoYXQgb2YgaXRzIHJlZmxlY3RlZCBsYXll
ci4KICAgICBpZiAobGF5ZXItPmlzUmVmbGVjdGlvbigpKSB7CiAgICAgICAgIHJlbmRlcmVyID0g
cmVuZGVyZXItPnBhcmVudCgpOyAvLyBUaGUgUmVuZGVyUmVwbGljYSdzIHBhcmVudCBpcyB0aGUg
b2JqZWN0IGJlaW5nIHJlZmxlY3RlZC4KLSAgICAgICAgbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVs
T2JqZWN0KHJlbmRlcmVyKS0+bGF5ZXIoKTsKKyAgICAgICAgbGF5ZXIgPSB0b1JlbmRlckxheWVy
TW9kZWxPYmplY3QocmVuZGVyZXIpLT5sYXllcigpOwogICAgIH0KICAgICAvLyBUaGUgcm9vdCBs
YXllciBhbHdheXMgaGFzIGEgY29tcG9zaXRpbmcgbGF5ZXIsIGJ1dCBpdCBtYXkgbm90IGhhdmUg
YmFja2luZy4KICAgICByZXR1cm4gcmVxdWlyZXNDb21wb3NpdGluZ0ZvclRyYW5zZm9ybShyZW5k
ZXJlcikKQEAgLTE1MDgsNyArMTUwOCw3IEBAIGNvbnN0IGNoYXIqIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cmVhc29uRm9yQ29tcG9zaXRpbmcoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyCiAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGxheWVyLT5yZW5kZXJlcigpOwogICAgIGlmIChsYXll
ci0+aXNSZWZsZWN0aW9uKCkpIHsKICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50
KCk7Ci0gICAgICAgIGxheWVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlciktPmxh
eWVyKCk7CisgICAgICAgIGxheWVyID0gdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHJlbmRlcmVy
KS0+bGF5ZXIoKTsKICAgICB9CiAKICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclRyYW5z
Zm9ybShyZW5kZXJlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWViMzJiN2EyZTNmZDVjMDA5ODEzMDJi
MGQ3MzYyYjNmNjY2M2U3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtMCwwICsxLDE3OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAg
ICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQorICogICAgICAg
ICAgIChDKSAyMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKKyAq
ICAgICAgICAgICAoQykgMjAwNSwgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWls
LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKKworI2luY2x1ZGUgIlJlbmRlckxheWVy
LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c193YXNG
bG9hdGluZyA9IGZhbHNlOworYm9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzX2hhZExheWVy
ID0gZmFsc2U7Citib29sIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnNfaGFkVHJhbnNmb3JtID0g
ZmFsc2U7Citib29sIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnNfbGF5ZXJXYXNTZWxmUGFpbnRp
bmcgPSBmYWxzZTsKKworUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9i
amVjdChOb2RlKiBub2RlKQorICAgIDogUmVuZGVyT2JqZWN0KG5vZGUpCisgICAgLCBtX2xheWVy
KDApCit7Cit9CisKK1JlbmRlckxheWVyTW9kZWxPYmplY3Q6On5SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KCkKK3sKKyAgICAvLyBPdXIgbGF5ZXIgc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95ZWQgYW5k
IGNsZWFyZWQgYnkgbm93CisgICAgQVNTRVJUKCFoYXNMYXllcigpKTsKKyAgICBBU1NFUlQoIW1f
bGF5ZXIpOworfQorCit2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcigp
Cit7CisgICAgQVNTRVJUKCFoYXNMYXllcigpKTsgLy8gQ2FsbGVycyBzaG91bGQgaGF2ZSBhbHJl
YWR5IGNhbGxlZCBzZXRIYXNMYXllcihmYWxzZSkKKyAgICBBU1NFUlQobV9sYXllcik7CisgICAg
bV9sYXllci0+ZGVzdHJveShyZW5kZXJBcmVuYSgpKTsKKyAgICBtX2xheWVyID0gMDsKK30KKwor
dm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjplbnN1cmVMYXllcigpCit7CisgICAgaWYgKG1f
bGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGF5ZXIgPSBuZXcgKHJlbmRlckFyZW5h
KCkpIFJlbmRlckxheWVyKHRoaXMpOworICAgIHNldEhhc0xheWVyKHRydWUpOworICAgIG1fbGF5
ZXItPmluc2VydE9ubHlUaGlzTGF5ZXIoKTsKK30KKworYm9vbCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0OjpoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXIg
JiYgbV9sYXllci0+aXNTZWxmUGFpbnRpbmdMYXllcigpOworfQorCit2b2lkIFJlbmRlckxheWVy
TW9kZWxPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpCit7CisgICAgLy8gUmVuZGVyT2JqZWN0Ojp3
aWxsQmVEZXN0cm95ZWQgY2FsbHMgYmFjayB0byBkZXN0cm95TGF5ZXIoKSBmb3IgbGF5ZXIgZGVz
dHJ1Y3Rpb24KKyAgICBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpOworfQorCit2b2lk
IFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2Ug
ZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKQoreworICAgIHNfd2FzRmxvYXRpbmcg
PSBpc0Zsb2F0aW5nKCk7CisgICAgc19oYWRMYXllciA9IGhhc0xheWVyKCk7CisgICAgc19oYWRU
cmFuc2Zvcm0gPSBoYXNUcmFuc2Zvcm0oKTsKKyAgICBpZiAoc19oYWRMYXllcikKKyAgICAgICAg
c19sYXllcldhc1NlbGZQYWludGluZyA9IGxheWVyKCktPmlzU2VsZlBhaW50aW5nTGF5ZXIoKTsK
KworICAgIC8vIElmIG91ciB6LWluZGV4IGNoYW5nZXMgdmFsdWUgb3Igb3VyIHZpc2liaWxpdHkg
Y2hhbmdlcywKKyAgICAvLyB3ZSBuZWVkIHRvIGRpcnR5IG91ciBzdGFja2luZyBjb250ZXh0J3Mg
ei1vcmRlciBsaXN0LgorICAgIFJlbmRlclN0eWxlKiBvbGRTdHlsZSA9IHN0eWxlKCk7CisgICAg
aWYgKG9sZFN0eWxlICYmIG5ld1N0eWxlKSB7CisgICAgICAgIGlmIChwYXJlbnQoKSkgeworICAg
ICAgICAgICAgLy8gRG8gYSByZXBhaW50IHdpdGggdGhlIG9sZCBzdHlsZSBmaXJzdCwgZS5nLiwg
Zm9yIGV4YW1wbGUgaWYgd2UgZ28gZnJvbQorICAgICAgICAgICAgLy8gaGF2aW5nIGFuIG91dGxp
bmUgdG8gbm90IGhhdmluZyBhbiBvdXRsaW5lLgorICAgICAgICAgICAgaWYgKGRpZmYgPT0gU3R5
bGVEaWZmZXJlbmNlUmVwYWludExheWVyKSB7CisgICAgICAgICAgICAgICAgbGF5ZXIoKS0+cmVw
YWludEluY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7CisgICAgICAgICAgICAgICAgaWYgKCEob2xkU3R5
bGUtPmNsaXAoKSA9PSBuZXdTdHlsZS0+Y2xpcCgpKSkKKyAgICAgICAgICAgICAgICAgICAgbGF5
ZXIoKS0+Y2xlYXJDbGlwUmVjdHNJbmNsdWRpbmdEZXNjZW5kYW50cygpOworICAgICAgICAgICAg
fSBlbHNlIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQgfHwgbmV3U3R5bGUtPm91
dGxpbmVTaXplKCkgPCBvbGRTdHlsZS0+b3V0bGluZVNpemUoKSkKKyAgICAgICAgICAgICAgICBy
ZXBhaW50KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVu
Y2VMYXlvdXQgfHwgZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VTaW1wbGlmaWVkTGF5b3V0KSB7Cisg
ICAgICAgICAgICAvLyBXaGVuIGEgbGF5b3V0IGhpbnQgaGFwcGVucywgd2UgZ28gYWhlYWQgYW5k
IGRvIGEgcmVwYWludCBvZiB0aGUgbGF5ZXIsIHNpbmNlIHRoZSBsYXllciBjb3VsZAorICAgICAg
ICAgICAgLy8gZW5kIHVwIGJlaW5nIGRlc3Ryb3llZC4KKyAgICAgICAgICAgIGlmIChoYXNMYXll
cigpKSB7CisgICAgICAgICAgICAgICAgaWYgKG9sZFN0eWxlLT5wb3NpdGlvbigpICE9IG5ld1N0
eWxlLT5wb3NpdGlvbigpCisgICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT56SW5kZXgo
KSAhPSBuZXdTdHlsZS0+ekluZGV4KCkKKyAgICAgICAgICAgICAgICAgICAgfHwgb2xkU3R5bGUt
Pmhhc0F1dG9aSW5kZXgoKSAhPSBuZXdTdHlsZS0+aGFzQXV0b1pJbmRleCgpCisgICAgICAgICAg
ICAgICAgICAgIHx8ICEob2xkU3R5bGUtPmNsaXAoKSA9PSBuZXdTdHlsZS0+Y2xpcCgpKQorICAg
ICAgICAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+aGFzQ2xpcCgpICE9IG5ld1N0eWxlLT5oYXND
bGlwKCkKKyAgICAgICAgICAgICAgICAgICAgfHwgb2xkU3R5bGUtPm9wYWNpdHkoKSAhPSBuZXdT
dHlsZS0+b3BhY2l0eSgpCisgICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT50cmFuc2Zv
cm0oKSAhPSBuZXdTdHlsZS0+dHJhbnNmb3JtKCkKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisg
ICAgICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlLT5maWx0ZXIoKSAhPSBuZXdTdHlsZS0+Zmls
dGVyKCkKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgbGF5
ZXIoKS0+cmVwYWludEluY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKG5ld1N0eWxlLT5oYXNUcmFuc2Zvcm0oKSB8fCBuZXdTdHlsZS0+b3BhY2l0eSgpIDwgMSB8
fCBuZXdTdHlsZS0+aGFzRmlsdGVyKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBkb24n
dCBoYXZlIGEgbGF5ZXIgeWV0LCBidXQgd2UgYXJlIGdvaW5nIHRvIGdldCBvbmUgYmVjYXVzZSBv
ZiB0cmFuc2Zvcm0gb3Igb3BhY2l0eSwKKyAgICAgICAgICAgICAgICAvLyAgdGhlbiB3ZSBuZWVk
IHRvIHJlcGFpbnQgdGhlIG9sZCBwb3NpdGlvbiBvZiB0aGUgb2JqZWN0LgorICAgICAgICAgICAg
ICAgIHJlcGFpbnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIFJl
bmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIG5ld1N0eWxlKTsKK30KKwordm9pZCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQoreworICAgIFJlbmRlck9iamVjdDo6c3R5
bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOworICAgIHVwZGF0ZUZyb21TdHlsZSgpOworCisg
ICAgaWYgKHJlcXVpcmVzTGF5ZXIoKSkgeworICAgICAgICBpZiAoIWxheWVyKCkgJiYgbGF5ZXJD
cmVhdGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkpIHsKKyAgICAgICAgICAgIGlmIChzX3dhc0Zsb2F0
aW5nICYmIGlzRmxvYXRpbmcoKSkKKyAgICAgICAgICAgICAgICBzZXRDaGlsZE5lZWRzTGF5b3V0
KHRydWUpOworICAgICAgICAgICAgZW5zdXJlTGF5ZXIoKTsKKyAgICAgICAgICAgIGlmIChwYXJl
bnQoKSAmJiAhbmVlZHNMYXlvdXQoKSAmJiBjb250YWluaW5nQmxvY2soKSkgeworICAgICAgICAg
ICAgICAgIGxheWVyKCktPnNldFJlcGFpbnRTdGF0dXMoTmVlZHNGdWxsUmVwYWludCk7CisgICAg
ICAgICAgICAgICAgLy8gVGhlcmUgaXMgb25seSBvbmUgbGF5ZXIgdG8gdXBkYXRlLCBpdCBpcyBu
b3Qgd29ydGggdXNpbmcgfGNhY2hlZE9mZnNldHwgc2luY2UKKyAgICAgICAgICAgICAgICAvLyB3
ZSBhcmUgbm90IHN1cmUgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZC4KKyAgICAgICAgICAgICAgICBs
YXllcigpLT51cGRhdGVMYXllclBvc2l0aW9ucygwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0gZWxzZSBpZiAobGF5ZXIoKSAmJiBsYXllcigpLT5wYXJlbnQoKSkgeworICAgICAg
ICBzZXRIYXNUcmFuc2Zvcm0oZmFsc2UpOyAvLyBFaXRoZXIgYSB0cmFuc2Zvcm0gd2Fzbid0IHNw
ZWNpZmllZCBvciB0aGUgb2JqZWN0IGRvZXNuJ3Qgc3VwcG9ydCB0cmFuc2Zvcm1zLCBzbyBqdXN0
IG51bGwgb3V0IHRoZSBiaXQuCisgICAgICAgIHNldEhhc1JlZmxlY3Rpb24oZmFsc2UpOworICAg
ICAgICBsYXllcigpLT5yZW1vdmVPbmx5VGhpc0xheWVyKCk7IC8vIGNhbGxzIGRlc3Ryb3lMYXll
cigpIHdoaWNoIGNsZWFycyBtX2xheWVyCisgICAgICAgIGlmIChzX3dhc0Zsb2F0aW5nICYmIGlz
RmxvYXRpbmcoKSkKKyAgICAgICAgICAgIHNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7CisgICAg
ICAgIGlmIChzX2hhZFRyYW5zZm9ybSkKKyAgICAgICAgICAgIHNldE5lZWRzTGF5b3V0QW5kUHJl
ZldpZHRoc1JlY2FsYygpOworICAgIH0KKworICAgIGlmIChsYXllcigpKSB7CisgICAgICAgIGxh
eWVyKCktPnN0eWxlQ2hhbmdlZChkaWZmLCBvbGRTdHlsZSk7CisgICAgICAgIGlmIChzX2hhZExh
eWVyICYmIGxheWVyKCktPmlzU2VsZlBhaW50aW5nTGF5ZXIoKSAhPSBzX2xheWVyV2FzU2VsZlBh
aW50aW5nKQorICAgICAgICAgICAgc2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKKyAgICB9CisK
KyAgICBpZiAoRnJhbWVWaWV3ICpmcmFtZVZpZXcgPSB2aWV3KCktPmZyYW1lVmlldygpKSB7Cisg
ICAgICAgIGJvb2wgbmV3U3R5bGVJc1ZpZXdwb3J0Q29uc3RhaW5lZCA9IHN0eWxlKCktPmhhc1Zp
ZXdwb3J0Q29uc3RyYWluZWRQb3NpdGlvbigpOworICAgICAgICBib29sIG9sZFN0eWxlSXNWaWV3
cG9ydENvbnN0cmFpbmVkID0gb2xkU3R5bGUgJiYgb2xkU3R5bGUtPmhhc1ZpZXdwb3J0Q29uc3Ry
YWluZWRQb3NpdGlvbigpOworICAgICAgICBpZiAobmV3U3R5bGVJc1ZpZXdwb3J0Q29uc3RhaW5l
ZCAhPSBvbGRTdHlsZUlzVmlld3BvcnRDb25zdHJhaW5lZCkgeworICAgICAgICAgICAgaWYgKG5l
d1N0eWxlSXNWaWV3cG9ydENvbnN0YWluZWQgJiYgbGF5ZXIoKSkKKyAgICAgICAgICAgICAgICBm
cmFtZVZpZXctPmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QodGhpcyk7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5yZW1vdmVWaWV3cG9ydENvbnN0cmFp
bmVkT2JqZWN0KHRoaXMpOworICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2MjQxZDM3NzUxMzk1MzVmOTBmYzYwNTZhNDQ0MjRlOWFk
Mzg1MWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBB
bnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lm
bmRlZiBSZW5kZXJMYXllck1vZGVsT2JqZWN0X2gKKyNkZWZpbmUgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdF9oCisKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBSZW5kZXJMYXllcjsKKworY2xhc3MgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCA6
IHB1YmxpYyBSZW5kZXJPYmplY3QgeworcHVibGljOgorICAgIFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QoTm9kZSopOworICAgIHZpcnR1YWwgflJlbmRlckxheWVyTW9kZWxPYmplY3QoKTsKKworICAg
IC8vIENhbGxlZCBieSBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpIGFuZCBpcyB0aGUg
b25seSB3YXkgbGF5ZXJzIHNob3VsZCBldmVyIGJlIGRlc3Ryb3llZAorICAgIHZvaWQgZGVzdHJv
eUxheWVyKCk7CisKKyAgICBib29sIGhhc1NlbGZQYWludGluZ0xheWVyKCkgY29uc3Q7CisgICAg
UmVuZGVyTGF5ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcjsgfQorCisgICAgdmly
dHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0
eWxlKiBuZXdTdHlsZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbVN0eWxlKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJv
b2wgcmVxdWlyZXNMYXllcigpIGNvbnN0ID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZW5z
dXJlTGF5ZXIoKTsKKworICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBPVkVSUklE
RTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNMYXllck1vZGVsT2JqZWN0KCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgUmVuZGVyTGF5ZXIqIG1fbGF5ZXI7
CisKKyAgICAvLyBVc2VkIHRvIHN0b3JlIHN0YXRlIGJldHdlZW4gc3R5bGVXaWxsQ2hhbmdlIGFu
ZCBzdHlsZURpZENoYW5nZQorICAgIHN0YXRpYyBib29sIHNfd2FzRmxvYXRpbmc7CisgICAgc3Rh
dGljIGJvb2wgc19oYWRMYXllcjsKKyAgICBzdGF0aWMgYm9vbCBzX2hhZFRyYW5zZm9ybTsKKyAg
ICBzdGF0aWMgYm9vbCBzX2xheWVyV2FzU2VsZlBhaW50aW5nOworfTsKKworaW5saW5lIFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChSZW5kZXJPYmplY3Qq
IG9iamVjdCkKK3sKKyAgICBBU1NFUlQoIW9iamVjdCB8fCBvYmplY3QtPmlzTGF5ZXJNb2RlbE9i
amVjdCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCo+
KG9iamVjdCk7Cit9CisKK2lubGluZSBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiB0b1Jl
bmRlckxheWVyTW9kZWxPYmplY3QoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAg
QVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0LT5pc0xheWVyTW9kZWxPYmplY3QoKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqPihvYmplY3QpOwor
fQorCisvLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3Qu
Cit2b2lkIHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0Kik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlbmRlckxheWVy
TW9kZWxPYmplY3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJr
ZXIuY3BwCmluZGV4IGI0YmM1OWU5ZjJhYjk4YmFmNGU0YWI4YTA1ZWRjMjljMWYzZGM3ZWUuLmE1
YjBlNGNkYmFlOGQwYzhhNzg4N2UxMGViZjBhMjk3MTY0NDVlMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAgLTE3MDIsNyArMTcwMiw3IEBA
IHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6c2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUg
c3RhdGUpCiAgICAgICAgICAgICByb290LT5zZXRIYXNTZWxlY3RlZENoaWxkcmVuKHN0YXRlICE9
IFNlbGVjdGlvbk5vbmUpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlckxpc3RNYXJrZXI6OnNlbGVj
dGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KQorTGF5b3V0UmVjdCBSZW5kZXJMaXN0TWFya2Vy
OjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KQogewogICAgIEFTU0VSVCghbmVl
ZHNMYXlvdXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtl
ci5oCmluZGV4IGQ4OGQ5MjJiMGU0MjgzY2NhNDU2MDM1ZjRlZWIxMTdkODJjOGY1MmQuLmMxZjFk
Njc2ZWE0ZGFlOTY1OTVhZjdjYjkyNWRjNTY3MjJiMGExNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gIWlzSW1hZ2UoKTsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlKTsKLSAgICB2aXJ0dWFs
IExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKTsKKyAg
ICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9
IHRydWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHVwZGF0ZU1hcmdpbnMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggZmVkNjgzYTk2NzhhNGZm
YjRlMGIyMTk5OWE0ZDZhZjk5YjJmYWIzNC4uMzZiOWQxMmYyNmI1OWNkNmFjYWU0ZjE5NjcwYTI5
ODdjYzNjYzgxOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
QEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6YWRkQ2hpbGQoUmVuZGVyT2Jq
ZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKICAgICAvLyBUbyBhdm9p
ZCB0aGUgcHJvYmxlbSBhbGx0b2dldGhlciwgZGV0ZWN0IGVhcmx5IGlmIHdlJ3JlIGluc2lkZSBh
IGhpZGRlbiBTVkcgc3VidHJlZQogICAgIC8vIGFuZCBzdG9wIGNyZWF0aW5nIGxheWVycyBhdCBh
bGwgZm9yIHRoZXNlIGNhc2VzIC0gdGhleSdyZSBub3QgdXNlZCBhbnl3YXlzLgogICAgIGlmIChu
ZXdDaGlsZC0+aGFzTGF5ZXIoKSAmJiAhbGF5ZXJDcmVhdGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkp
Ci0gICAgICAgIHRvUmVuZGVyQm94TW9kZWxPYmplY3QobmV3Q2hpbGQpLT5sYXllcigpLT5yZW1v
dmVPbmx5VGhpc0xheWVyKCk7CisgICAgICAgIHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChuZXdD
aGlsZCktPmxheWVyKCktPnJlbW92ZU9ubHlUaGlzTGF5ZXIoKTsKIH0KIAogdm9pZCBSZW5kZXJP
YmplY3Q6OnJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCogb2xkQ2hpbGQpCkBAIC00MzQsNyArNDM0
LDcgQEAgc3RhdGljIHZvaWQgYWRkTGF5ZXJzKFJlbmRlck9iamVjdCogb2JqLCBSZW5kZXJMYXll
ciogcGFyZW50TGF5ZXIsIFJlbmRlck9iamVjdCoKICAgICAgICAgICAgIGJlZm9yZUNoaWxkID0g
bmV3T2JqZWN0LT5wYXJlbnQoKS0+ZmluZE5leHRMYXllcihwYXJlbnRMYXllciwgbmV3T2JqZWN0
KTsKICAgICAgICAgICAgIG5ld09iamVjdCA9IDA7CiAgICAgICAgIH0KLSAgICAgICAgcGFyZW50
TGF5ZXItPmFkZENoaWxkKHRvUmVuZGVyQm94TW9kZWxPYmplY3Qob2JqKS0+bGF5ZXIoKSwgYmVm
b3JlQ2hpbGQpOworICAgICAgICBwYXJlbnRMYXllci0+YWRkQ2hpbGQodG9SZW5kZXJMYXllck1v
ZGVsT2JqZWN0KG9iaiktPmxheWVyKCksIGJlZm9yZUNoaWxkKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNDU4LDcgKzQ1OCw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpyZW1vdmVMYXll
cnMoUmVuZGVyTGF5ZXIqIHBhcmVudExheWVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
aGFzTGF5ZXIoKSkgewotICAgICAgICBwYXJlbnRMYXllci0+cmVtb3ZlQ2hpbGQodG9SZW5kZXJC
b3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKSk7CisgICAgICAgIHBhcmVudExheWVyLT5yZW1v
dmVDaGlsZCh0b1JlbmRlckxheWVyTW9kZWxPYmplY3QodGhpcyktPmxheWVyKCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC00NzIsNyArNDcyLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6
Om1vdmVMYXllcnMoUmVuZGVyTGF5ZXIqIG9sZFBhcmVudCwgUmVuZGVyTGF5ZXIqIG5ld1BhcmVu
dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc0xheWVyKCkpIHsKLSAgICAgICAgUmVu
ZGVyTGF5ZXIqIGxheWVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKTsK
KyAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHRo
aXMpLT5sYXllcigpOwogICAgICAgICBBU1NFUlQob2xkUGFyZW50ID09IGxheWVyLT5wYXJlbnQo
KSk7CiAgICAgICAgIGlmIChvbGRQYXJlbnQpCiAgICAgICAgICAgICBvbGRQYXJlbnQtPnJlbW92
ZUNoaWxkKGxheWVyKTsKQEAgLTQ5Miw3ICs0OTIsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyT2Jq
ZWN0OjpmaW5kTmV4dExheWVyKFJlbmRlckxheWVyKiBwYXJlbnRMYXllciwgUmVuZGVyT2JqZWN0
KgogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIFN0ZXAgMTogSWYgb3VyIGxheWVyIGlzIGEg
Y2hpbGQgb2YgdGhlIGRlc2lyZWQgcGFyZW50LCB0aGVuIHJldHVybiBvdXIgbGF5ZXIuCi0gICAg
UmVuZGVyTGF5ZXIqIG91ckxheWVyID0gaGFzTGF5ZXIoKSA/IHRvUmVuZGVyQm94TW9kZWxPYmpl
Y3QodGhpcyktPmxheWVyKCkgOiAwOworICAgIFJlbmRlckxheWVyKiBvdXJMYXllciA9IGhhc0xh
eWVyKCkgPyB0b1JlbmRlckxheWVyTW9kZWxPYmplY3QodGhpcyktPmxheWVyKCkgOiAwOwogICAg
IGlmIChvdXJMYXllciAmJiBvdXJMYXllci0+cGFyZW50KCkgPT0gcGFyZW50TGF5ZXIpCiAgICAg
ICAgIHJldHVybiBvdXJMYXllcjsKIApAQCAtNTI0LDcgKzUyNCw3IEBAIFJlbmRlckxheWVyKiBS
ZW5kZXJPYmplY3Q6OmVuY2xvc2luZ0xheWVyKCkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJP
YmplY3QqIGN1cnIgPSB0aGlzOwogICAgIHdoaWxlIChjdXJyKSB7Ci0gICAgICAgIFJlbmRlckxh
eWVyKiBsYXllciA9IGN1cnItPmhhc0xheWVyKCkgPyB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGN1
cnIpLT5sYXllcigpIDogMDsKKyAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gY3Vyci0+aGFz
TGF5ZXIoKSA/IHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChjdXJyKS0+bGF5ZXIoKSA6IDA7CiAg
ICAgICAgIGlmIChsYXllcikKICAgICAgICAgICAgIHJldHVybiBsYXllcjsKICAgICAgICAgY3Vy
ciA9IGN1cnItPnBhcmVudCgpOwpAQCAtNzIwLDEzICs3MjAsMTMgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OmludmFsaWRhdGVDb250YWluZXJQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKIHZvaWQgUmVu
ZGVyT2JqZWN0OjpzZXRMYXllck5lZWRzRnVsbFJlcGFpbnQoKQogewogICAgIEFTU0VSVChoYXNM
YXllcigpKTsKLSAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5zZXRS
ZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnQpOworICAgIHRvUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCh0aGlzKS0+bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50KTsK
IH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OnNldExheWVyTmVlZHNGdWxsUmVwYWludEZvclBvc2l0
aW9uZWRNb3ZlbWVudExheW91dCgpCiB7CiAgICAgQVNTRVJUKGhhc0xheWVyKCkpOwotICAgIHRv
UmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCktPnNldFJlcGFpbnRTdGF0dXMoTmVl
ZHNGdWxsUmVwYWludEZvclBvc2l0aW9uZWRNb3ZlbWVudExheW91dCk7CisgICAgdG9SZW5kZXJM
YXllck1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5zZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVs
bFJlcGFpbnRGb3JQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQpOwogfQogCiBSZW5kZXJCbG9jayog
UmVuZGVyT2JqZWN0Ojpjb250YWluaW5nQmxvY2soKSBjb25zdApAQCAtMTI0NSwxMyArMTI0NSwx
MyBAQCB2b2lkIFJlbmRlck9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKQogewogfQogCi1SZW5kZXJCb3hNb2RlbE9iamVjdCogUmVuZGVyT2JqZWN0Ojpjb250YWlu
ZXJGb3JSZXBhaW50KCkgY29uc3QKK1JlbmRlckxheWVyTW9kZWxPYmplY3QqIFJlbmRlck9iamVj
dDo6Y29udGFpbmVyRm9yUmVwYWludCgpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyogdiA9IHZp
ZXcoKTsKICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gMDsKKyAgICBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gMDsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKICAgICBpZiAodi0+dXNlc0NvbXBvc2l0aW5nKCkpIHsKQEAgLTEyODEsNyArMTI4
MSw3IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5lckZvclJl
cGFpbnQoKSBjb25zdAogICAgIHJldHVybiByZXBhaW50Q29udGFpbmVyOwogfQogCi12b2lkIFJl
bmRlck9iamVjdDo6cmVwYWludFVzaW5nQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBjb25zdCBJbnRSZWN0JiByLCBib29sIGltbWVkaWF0ZSkgY29uc3QK
K3ZvaWQgUmVuZGVyT2JqZWN0OjpyZXBhaW50VXNpbmdDb250YWluZXIoUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgSW50UmVjdCYgciwgYm9vbCBpbW1lZGlh
dGUpIGNvbnN0CiB7CiAgICAgaWYgKCFyZXBhaW50Q29udGFpbmVyKSB7CiAgICAgICAgIHZpZXco
KS0+cmVwYWludFZpZXdSZWN0YW5nbGUociwgaW1tZWRpYXRlKTsKQEAgLTEzMzQsNyArMTMzNCw3
IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpyZXBhaW50KGJvb2wgaW1tZWRpYXRlKSBjb25zdAogICAg
IGlmICh2aWV3LT5wcmludGluZygpKQogICAgICAgICByZXR1cm47IC8vIERvbid0IHJlcGFpbnQg
aWYgd2UncmUgcHJpbnRpbmcuCiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciA9IGNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyID0gY29udGFpbmVyRm9yUmVwYWludCgpOwogICAgIHJlcGFp
bnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyID8gcmVwYWludENvbnRhaW5lciA6IHZp
ZXcsIHBpeGVsU25hcHBlZEludFJlY3QoY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVw
YWludENvbnRhaW5lcikpLCBpbW1lZGlhdGUpOwogfQogCkBAIC0xMzU0LDcgKzEzNTQsNyBAQCB2
b2lkIFJlbmRlck9iamVjdDo6cmVwYWludFJlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JiByLCBi
b29sIGltbWVkaWF0ZSkgY29uc3QKICAgICAvLyByZXBhaW50IGNvbnRhaW5lcnMuIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwOAogICAgIGRpcnR5UmVjdC5tb3Zl
KHZpZXctPmxheW91dERlbHRhKCkpOwogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIgPSBjb250YWluZXJGb3JSZXBhaW50KCk7CisgICAgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IGNvbnRhaW5lckZvclJlcGFpbnQoKTsKICAgICBj
b21wdXRlUmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgZGlydHlSZWN0KTsKICAgICBy
ZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciA/IHJlcGFpbnRDb250YWluZXIg
OiB2aWV3LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGRpcnR5UmVjdCksIGltbWVkaWF0ZSk7CiB9CkBA
IC0xMzY0LDcgKzEzNjQsNyBAQCBJbnRSZWN0IFJlbmRlck9iamVjdDo6cGl4ZWxTbmFwcGVkQWJz
b2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkgY29uc3QKICAgICByZXR1cm4gcGl4ZWxTbmFwcGVk
SW50UmVjdChhYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSk7CiB9CiAKLWJvb2wgUmVuZGVy
T2JqZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYgb2xkQm91bmRzLCBjb25zdCBMYXlv
dXRSZWN0JiBvbGRPdXRsaW5lQm94LCBjb25zdCBMYXlvdXRSZWN0KiBuZXdCb3VuZHNQdHIsIGNv
bnN0IExheW91dFJlY3QqIG5ld091dGxpbmVCb3hSZWN0UHRyKQorYm9vbCBSZW5kZXJPYmplY3Q6
OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGNvbnN0IExheW91dFJlY3QmIG9sZEJvdW5kcywgY29uc3QgTGF5b3V0UmVj
dCYgb2xkT3V0bGluZUJveCwgY29uc3QgTGF5b3V0UmVjdCogbmV3Qm91bmRzUHRyLCBjb25zdCBM
YXlvdXRSZWN0KiBuZXdPdXRsaW5lQm94UmVjdFB0cikKIHsKICAgICBSZW5kZXJWaWV3KiB2ID0g
dmlldygpOwogICAgIGlmICh2LT5wcmludGluZygpKQpAQCAtMTQ4NSwyMCArMTQ4NSwyMCBAQCBi
b29sIFJlbmRlck9iamVjdDo6Y2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkgY29uc3QKICAg
ICByZXR1cm4gIWRvY3VtZW50KCktPnZpZXcoKS0+bmVlZHNGdWxsUmVwYWludCgpICYmICFoYXNM
YXllcigpICYmIGV2ZXJIYWRMYXlvdXQoKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6
OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdAorTGF5b3V0UmVjdCBSZW5k
ZXJPYmplY3Q6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CiB7CiAg
ICAgTGF5b3V0UmVjdCByKGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250
YWluZXIpKTsKICAgICByLmluZmxhdGUob3V0bGluZVdpZHRoKTsKICAgICByZXR1cm4gcjsKIH0K
IAotTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyT2JqZWN0Ojpj
bGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KikgY29u
c3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gTGF5b3V0UmVjdCgp
OwogfQogCi12b2lkIFJlbmRlck9iamVjdDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZp
eGVkKSBjb25zdAordm9pZCBSZW5kZXJPYmplY3Q6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBi
b29sIGZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09IHRoaXMpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE1MjEsNyArMTUyMSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpj
b21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsCiAgICAgfQogfQogCi12b2lkIFJlbmRlck9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJl
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqLCBGbG9hdFJlY3QmLCBib29sKSBjb25zdAordm9p
ZCBSZW5kZXJPYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqLCBGbG9hdFJlY3QmLCBib29sKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQpAQCAtMTY4Miw3ICsxNjgyLDcgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlck9i
amVjdDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCB1bnNpZ24K
ICAgICAgICAgLy8gVGV4dCBub2RlcyBzaGFyZSBzdHlsZSB3aXRoIHRoZWlyIHBhcmVudHMgYnV0
IHRyYW5zZm9ybXMgZG9uJ3QgYXBwbHkgdG8gdGhlbSwKICAgICAgICAgLy8gaGVuY2UgdGhlICFp
c1RleHQoKSBjaGVjay4KICAgICAgICAgLy8gRklYTUU6IHdoZW4gdHJhbnNmb3JtcyBhcmUgdGFr
ZW4gaW50byBhY2NvdW50IGZvciBvdmVyZmxvdywgd2Ugd2lsbCBuZWVkIHRvIGRvIGEgbGF5b3V0
LgotICAgICAgICBpZiAoIWlzVGV4dCgpICYmICghaGFzTGF5ZXIoKSB8fCAhdG9SZW5kZXJCb3hN
b2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkpKSB7CisgICAgICAgIGlm
ICghaXNUZXh0KCkgJiYgKCFoYXNMYXllcigpIHx8ICF0b1JlbmRlckxheWVyTW9kZWxPYmplY3Qo
dGhpcyktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpKSkgewogICAgICAgICAgICAgLy8gV2UgbmVl
ZCB0byBzZXQgYXQgbGVhc3QgU2ltcGxpZmllZExheW91dCwgYnV0IGlmIFBvc2l0aW9uZWRNb3Zl
bWVudE9ubHkgaXMgYWxyZWFkeSBzZXQKICAgICAgICAgICAgIC8vIHRoZW4gd2UgYWN0dWFsbHkg
bmVlZCBTaW1wbGlmaWVkTGF5b3V0QW5kUG9zaXRpb25lZE1vdmVtZW50LgogICAgICAgICAgICAg
aWYgKCFoYXNMYXllcigpKQpAQCAtMTY5OCw3ICsxNjk4LDcgQEAgU3R5bGVEaWZmZXJlbmNlIFJl
bmRlck9iamVjdDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCB1
bnNpZ24KICAgICAvLyBJZiBvcGFjaXR5IGNoYW5nZWQsIGFuZCB3ZSBhcmUgbm90IGNvbXBvc2l0
ZWQsIG5lZWQgdG8gcmVwYWludCAoYWxzbwogICAgIC8vIGlnbm9yaW5nIHRleHQgbm9kZXMpCiAg
ICAgaWYgKGNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzICYgQ29udGV4dFNlbnNpdGl2ZVByb3Bl
cnR5T3BhY2l0eSkgewotICAgICAgICBpZiAoIWlzVGV4dCgpICYmICghaGFzTGF5ZXIoKSB8fCAh
dG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkpKQor
ICAgICAgICBpZiAoIWlzVGV4dCgpICYmICghaGFzTGF5ZXIoKSB8fCAhdG9SZW5kZXJMYXllck1v
ZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkpCiAgICAgICAgICAgICBk
aWZmID0gU3R5bGVEaWZmZXJlbmNlUmVwYWludExheWVyOwogICAgICAgICBlbHNlIGlmIChkaWZm
IDwgU3R5bGVEaWZmZXJlbmNlUmVjb21wb3NpdGVMYXllcikKICAgICAgICAgICAgIGRpZmYgPSBT
dHlsZURpZmZlcmVuY2VSZWNvbXBvc2l0ZUxheWVyOwpAQCAtMTcwNiw3ICsxNzA2LDcgQEAgU3R5
bGVEaWZmZXJlbmNlIFJlbmRlck9iamVjdDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlm
ZmVyZW5jZSBkaWZmLCB1bnNpZ24KICAgICAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAg
aWYgKChjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyAmIENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0
eUZpbHRlcikgJiYgaGFzTGF5ZXIoKSkgewotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0
b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpOworICAgICAgICBSZW5kZXJMYXll
ciogbGF5ZXIgPSB0b1JlbmRlckxheWVyTW9kZWxPYmplY3QodGhpcyktPmxheWVyKCk7CiAgICAg
ICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpIHx8IGxheWVyLT5wYWludHNXaXRoRmlsdGVy
cygpKQogICAgICAgICAgICAgZGlmZiA9IFN0eWxlRGlmZmVyZW5jZVJlcGFpbnRMYXllcjsKICAg
ICAgICAgZWxzZSBpZiAoZGlmZiA8IFN0eWxlRGlmZmVyZW5jZVJlY29tcG9zaXRlTGF5ZXIpCkBA
IC0xNzE3LDggKzE3MTcsOCBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyT2JqZWN0OjphZGp1c3RT
dHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIHVuc2lnbgogICAgIC8vIFRoZSBh
bnN3ZXIgdG8gcmVxdWlyZXNMYXllcigpIGZvciBwbHVnaW5zLCBpZnJhbWVzLCBhbmQgY2FudmFz
IGNhbiBjaGFuZ2Ugd2l0aG91dCB0aGUgYWN0dWFsCiAgICAgLy8gc3R5bGUgY2hhbmdpbmcsIHNp
bmNlIGl0IGRlcGVuZHMgb24gd2hldGhlciB3ZSBkZWNpZGUgdG8gY29tcG9zaXRlIHRoZXNlIGVs
ZW1lbnRzLiBXaGVuIHRoZQogICAgIC8vIGxheWVyIHN0YXR1cyBvZiBvbmUgb2YgdGhlc2UgZWxl
bWVudHMgY2hhbmdlcywgd2UgbmVlZCB0byBmb3JjZSBhIGxheW91dC4KLSAgICBpZiAoZGlmZiA9
PSBTdHlsZURpZmZlcmVuY2VFcXVhbCAmJiBzdHlsZSgpICYmIGlzQm94TW9kZWxPYmplY3QoKSkg
ewotICAgICAgICBpZiAoaGFzTGF5ZXIoKSAhPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMp
LT5yZXF1aXJlc0xheWVyKCkpCisgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlRXF1YWwg
JiYgc3R5bGUoKSAmJiBpc0xheWVyTW9kZWxPYmplY3QoKSkgeworICAgICAgICBpZiAoaGFzTGF5
ZXIoKSAhPSB0b1JlbmRlckxheWVyTW9kZWxPYmplY3QodGhpcyktPnJlcXVpcmVzTGF5ZXIoKSkK
ICAgICAgICAgICAgIGRpZmYgPSBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAgICAgfQogI2Vsc2UK
QEAgLTIwMjYsNyArMjAyNiw3IEBAIEZsb2F0UG9pbnQgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRv
TG9jYWwoY29uc3QgRmxvYXRQb2ludCYgY29udGFpbmVyUG9pbnQsIGJvb2wKICAgICByZXR1cm4g
dHJhbnNmb3JtU3RhdGUubGFzdFBsYW5hclBvaW50KCk7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0
OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJG
bGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyT2JqZWN0OjptYXBM
b2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdz
IG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVy
ID09IHRoaXMpCiAgICAgICAgIHJldHVybjsKQEAgLTIwNTQsNyArMjA1NCw3IEBAIHZvaWQgUmVu
ZGVyT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBUCiAgICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFp
bmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOwogfQogCi1jb25zdCBSZW5kZXJP
YmplY3QqIFJlbmRlck9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJC
b3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21l
dHJ5TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OnB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0
b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAogewogICAgIEFTU0VS
VF9VTlVTRUQoYW5jZXN0b3JUb1N0b3BBdCwgYW5jZXN0b3JUb1N0b3BBdCAhPSB0aGlzKTsKIApA
QCAtMjA4Nyw3ICsyMDg3LDcgQEAgYm9vbCBSZW5kZXJPYmplY3Q6OnNob3VsZFVzZVRyYW5zZm9y
bUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXIKICNpZiBFTkFCTEUo
M0RfUkVOREVSSU5HKQogICAgIC8vIGhhc1RyYW5zZm9ybSgpIGluZGljYXRlcyB3aGV0aGVyIHRo
ZSBvYmplY3QgaGFzIHRyYW5zZm9ybSwgdHJhbnNmb3JtLXN0eWxlIG9yIHBlcnNwZWN0aXZlLiBX
ZSBqdXN0IGNhcmUgYWJvdXQgdHJhbnNmb3JtLAogICAgIC8vIHNvIGNoZWNrIHRoZSBsYXllcidz
IHRyYW5zZm9ybSBkaXJlY3RseS4KLSAgICByZXR1cm4gKGhhc0xheWVyKCkgJiYgdG9SZW5kZXJC
b3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+dHJhbnNmb3JtKCkpIHx8IChjb250YWluZXJP
YmplY3QgJiYgY29udGFpbmVyT2JqZWN0LT5zdHlsZSgpLT5oYXNQZXJzcGVjdGl2ZSgpKTsKKyAg
ICByZXR1cm4gKGhhc0xheWVyKCkgJiYgdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHRoaXMpLT5s
YXllcigpLT50cmFuc2Zvcm0oKSkgfHwgKGNvbnRhaW5lck9iamVjdCAmJiBjb250YWluZXJPYmpl
Y3QtPnN0eWxlKCktPmhhc1BlcnNwZWN0aXZlKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
Y29udGFpbmVyT2JqZWN0KTsKICAgICByZXR1cm4gaGFzVHJhbnNmb3JtKCk7CkBAIC0yMDk5LDE0
ICsyMDk5LDE0IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVy
KGNvbnN0IFJlbmRlck9iamVjdCogY29udGFpbmVyT2JqZWN0CiAgICAgdHJhbnNmb3JtLm1ha2VJ
ZGVudGl0eSgpOwogICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob2Zmc2V0SW5Db250YWluZXIud2lk
dGgoKSwgb2Zmc2V0SW5Db250YWluZXIuaGVpZ2h0KCkpOwogICAgIFJlbmRlckxheWVyKiBsYXll
cjsKLSAgICBpZiAoaGFzTGF5ZXIoKSAmJiAobGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0
KHRoaXMpLT5sYXllcigpKSAmJiBsYXllci0+dHJhbnNmb3JtKCkpCisgICAgaWYgKGhhc0xheWVy
KCkgJiYgKGxheWVyID0gdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpKSAm
JiBsYXllci0+dHJhbnNmb3JtKCkpCiAgICAgICAgIHRyYW5zZm9ybS5tdWx0aXBseShsYXllci0+
Y3VycmVudFRyYW5zZm9ybSgpKTsKICAgICAKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5HKQogICAg
IGlmIChjb250YWluZXJPYmplY3QgJiYgY29udGFpbmVyT2JqZWN0LT5oYXNMYXllcigpICYmIGNv
bnRhaW5lck9iamVjdC0+c3R5bGUoKS0+aGFzUGVyc3BlY3RpdmUoKSkgewogICAgICAgICAvLyBQ
ZXJwc2VjdGl2ZSBvbiB0aGUgY29udGFpbmVyIGFmZmVjdHMgdXMsIHNvIHdlIGhhdmUgdG8gZmFj
dG9yIGl0IGluIGhlcmUuCiAgICAgICAgIEFTU0VSVChjb250YWluZXJPYmplY3QtPmhhc0xheWVy
KCkpOwotICAgICAgICBGbG9hdFBvaW50IHBlcnNwZWN0aXZlT3JpZ2luID0gdG9SZW5kZXJCb3hN
b2RlbE9iamVjdChjb250YWluZXJPYmplY3QpLT5sYXllcigpLT5wZXJzcGVjdGl2ZU9yaWdpbigp
OworICAgICAgICBGbG9hdFBvaW50IHBlcnNwZWN0aXZlT3JpZ2luID0gdG9SZW5kZXJMYXllck1v
ZGVsT2JqZWN0KGNvbnRhaW5lck9iamVjdCktPmxheWVyKCktPnBlcnNwZWN0aXZlT3JpZ2luKCk7
CiAKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVNYXRyaXg7CiAgICAg
ICAgIHBlcnNwZWN0aXZlTWF0cml4LmFwcGx5UGVyc3BlY3RpdmUoY29udGFpbmVyT2JqZWN0LT5z
dHlsZSgpLT5wZXJzcGVjdGl2ZSgpKTsKQEAgLTIxMjAsNyArMjEyMCw3IEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogY29u
dGFpbmVyT2JqZWN0CiAjZW5kaWYKIH0KIAotRmxvYXRRdWFkIFJlbmRlck9iamVjdDo6bG9jYWxU
b0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiBsb2NhbFF1YWQsIFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCBi
b29sIGZpeGVkLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK0Zsb2F0UXVhZCBSZW5kZXJPYmplY3Q6
OmxvY2FsVG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0UXVhZCYgbG9jYWxRdWFkLCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHNuYXBPZmZzZXRGb3JUcmFu
c2Zvcm1zLCBib29sIGZpeGVkLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICAvLyBUcmFj
ayB0aGUgcG9pbnQgYXQgdGhlIGNlbnRlciBvZiB0aGUgcXVhZCdzIGJvdW5kaW5nIGJveC4gQXMg
bWFwTG9jYWxUb0NvbnRhaW5lcigpIGNhbGxzIG9mZnNldEZyb21Db250YWluZXIoKSwKICAgICAv
LyBpdCB3aWxsIHVzZSB0aGF0IHBvaW50IGFzIHRoZSByZWZlcmVuY2UgcG9pbnQgdG8gZGVjaWRl
IHdoaWNoIGNvbHVtbidzIHRyYW5zZm9ybSB0byBhcHBseSBpbiBtdWx0aXBsZS1jb2x1bW4gYmxv
Y2tzLgpAQCAtMjEzNiw3ICsyMTM2LDcgQEAgRmxvYXRRdWFkIFJlbmRlck9iamVjdDo6bG9jYWxU
b0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiBsb2NhbFF1YWQsIFJlbmRlckIKICAgICBy
ZXR1cm4gdHJhbnNmb3JtU3RhdGUubGFzdFBsYW5hclF1YWQoKTsKIH0KIAotRmxvYXRQb2ludCBS
ZW5kZXJPYmplY3Q6OmxvY2FsVG9Db250YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiBsb2Nh
bFBvaW50LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBzbmFw
T2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CitG
bG9hdFBvaW50IFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclBvaW50KGNvbnN0IEZsb2F0
UG9pbnQmIGxvY2FsUG9pbnQsIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIGJvb2wgc25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdAogewogICAgIFRyYW5zZm9ybVN0YXRlIHRyYW5zZm9ybVN0YXRlKFRyYW5zZm9y
bVN0YXRlOjpBcHBseVRyYW5zZm9ybURpcmVjdGlvbiwgbG9jYWxQb2ludCk7CiAgICAgTWFwTG9j
YWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBVc2VUcmFuc2Zv
cm1zOwpAQCAtMjIzOSw3ICsyMjM5LDcgQEAgYm9vbCBSZW5kZXJPYmplY3Q6Omhhc091dGxpbmVB
bm5vdGF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbm9kZSgpICYmIG5vZGUoKS0+aXNMaW5rKCkg
JiYgZG9jdW1lbnQoKS0+cHJpbnRpbmcoKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmpl
Y3Q6OmNvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgYm9vbCogcmVwYWludENvbnRhaW5lclNraXBwZWQpIGNvbnN0CitSZW5kZXJPYmplY3QqIFJl
bmRlck9iamVjdDo6Y29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGJvb2wqIHJlcGFpbnRDb250YWluZXJTa2lwcGVkKSBjb25zdAogewogICAg
IGlmIChyZXBhaW50Q29udGFpbmVyU2tpcHBlZCkKICAgICAgICAgKnJlcGFpbnRDb250YWluZXJT
a2lwcGVkID0gZmFsc2U7CkBAIC0yMzcyLDcgKzIzNzIsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6
d2lsbEJlRGVzdHJveWVkKCkKICAgICAvLyBiZSBtb3ZlZCBpbnRvIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpkZXN0cm95LgogICAgIGlmIChoYXNMYXllcigpKSB7CiAgICAgICAgIHNldEhhc0xheWVy
KGZhbHNlKTsKLSAgICAgICAgdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+ZGVzdHJveUxh
eWVyKCk7CisgICAgICAgIHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCh0aGlzKS0+ZGVzdHJveUxh
eWVyKCk7CiAgICAgfQogCiAgICAgc2V0QW5jZXN0b3JMaW5lQm94RGlydHkoZmFsc2UpOwpAQCAt
MjUyNiw3ICsyNTI2LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnVwZGF0ZURyYWdTdGF0ZShib29s
IGRyYWdPbikKIAogYm9vbCBSZW5kZXJPYmplY3Q6OmlzQ29tcG9zaXRlZCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGhhc0xheWVyKCkgJiYgdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5
ZXIoKS0+aXNDb21wb3NpdGVkKCk7CisgICAgcmV0dXJuIGhhc0xheWVyKCkgJiYgdG9SZW5kZXJM
YXllck1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKIH0KIAogYm9v
bCBSZW5kZXJPYmplY3Q6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhp
dFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29u
dGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RGaWx0
ZXIgaGl0VGVzdEZpbHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApp
bmRleCAyOGNkYTNhZDdhNTZhMDY4ZjBiY2JkOThiZDBhMjk1YTUwYjM5Y2RjLi4wYTcwNTc1MGY3
YzY1NzViYWMzYTcxOGVhMWJlOWE4YjNjNDI2NDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCkBAIC02MCw2ICs2MCw3IEBAIGNsYXNzIFJlbmRlckJsb2NrOwogY2xh
c3MgUmVuZGVyRmxvd1RocmVhZDsKIGNsYXNzIFJlbmRlckdlb21ldHJ5TWFwOwogY2xhc3MgUmVu
ZGVyTGF5ZXI7CitjbGFzcyBSZW5kZXJMYXllck1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyTmFt
ZWRGbG93VGhyZWFkOwogY2xhc3MgUmVuZGVyVGFibGU7CiBjbGFzcyBSZW5kZXJUaGVtZTsKQEAg
LTMyNyw2ICszMjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRnJhbWVTZXQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJbmxpbmVCbG9ja09ySW5saW5l
VGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0xheWVy
TW9kZWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c0xpc3RCb3goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xp
c3RJdGVtKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0
TWFya2VyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTYxMCw3ICs2MTIsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUmV0dXJucyB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhpcyBvbmUuIENhbiBi
ZSBkaWZmZXJlbnQgZnJvbSBwYXJlbnQgZm9yIHBvc2l0aW9uZWQgZWxlbWVudHMuCiAgICAgLy8g
SWYgcmVwYWludENvbnRhaW5lciBhbmQgcmVwYWludENvbnRhaW5lclNraXBwZWQgYXJlIG5vdCBu
dWxsLCBvbiByZXR1cm4gKnJlcGFpbnRDb250YWluZXJTa2lwcGVkCiAgICAgLy8gaXMgdHJ1ZSBp
ZiB0aGUgcmVuZGVyZXIgcmV0dXJuZWQgaXMgYW4gYW5jZXN0b3Igb2YgcmVwYWludENvbnRhaW5l
ci4KLSAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciA9IDAsIGJvb2wqIHJlcGFpbnRDb250YWluZXJTa2lwcGVkID0g
MCkgY29uc3Q7CisgICAgUmVuZGVyT2JqZWN0KiBjb250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IDAsIGJvb2wqIHJlcGFpbnRDb250YWluZXJT
a2lwcGVkID0gMCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogaG92ZXJBbmNl
c3RvcigpIGNvbnN0IHsgcmV0dXJuIHBhcmVudCgpOyB9CiAKQEAgLTcwNyw4ICs3MDksOCBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgLy8gQ29udmVydCBhIGxvY2FsIHF1YWQgaW50byB0aGUgY29v
cmRpbmF0ZSBzeXN0ZW0gb2YgY29udGFpbmVyLCB0YWtpbmcgdHJhbnNmb3JtcyBpbnRvIGFjY291
bnQuCi0gICAgRmxvYXRRdWFkIGxvY2FsVG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0UXVhZCYs
IFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHNuYXBPZmZzZXRG
b3JUcmFuc2Zvcm1zID0gdHJ1ZSwgYm9vbCBmaXhlZCA9IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9
IDApIGNvbnN0OwotICAgIEZsb2F0UG9pbnQgbG9jYWxUb0NvbnRhaW5lclBvaW50KGNvbnN0IEZs
b2F0UG9pbnQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBz
bmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcyA9IHRydWUsIGJvb2wgZml4ZWQgPSBmYWxzZSwgYm9vbCog
d2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICBGbG9hdFF1YWQgbG9jYWxUb0NvbnRhaW5lclF1YWQo
Y29uc3QgRmxvYXRRdWFkJiwgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgYm9vbCBzbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcyA9IHRydWUsIGJvb2wgZml4ZWQgPSBmYWxz
ZSwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICBGbG9hdFBvaW50IGxvY2FsVG9Db250
YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiwgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgYm9vbCBzbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcyA9IHRydWUsIGJvb2wg
Zml4ZWQgPSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKIAogICAgIC8vIFJldHVy
biB0aGUgb2Zmc2V0IGZyb20gdGhlIGNvbnRhaW5lcigpIHJlbmRlcmVyIChleGNsdWRpbmcgdHJh
bnNmb3JtcykuIEluIG11bHRpLWNvbHVtbiBsYXlvdXQsCiAgICAgLy8gZGlmZmVyZW50IG9mZnNl
dHMgYXBwbHkgYXQgZGlmZmVyZW50IHBvaW50cywgc28gcmV0dXJuIHRoZSBvZmZzZXQgdGhhdCBh
cHBsaWVzIHRvIHRoZSBnaXZlbiBwb2ludC4KQEAgLTc1MSwxMyArNzUzLDEzIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZ2V0VGV4dERlY29yYXRpb25Db2xvcnMoaW50IGRlY29yYXRpb25zLCBDb2xv
ciYgdW5kZXJsaW5lLCBDb2xvciYgb3ZlcmxpbmUsIENvbG9yJiBsaW5ldGhyb3VnaCwgYm9vbCBx
dWlya3NNb2RlID0gZmFsc2UsIGJvb2wgZmlyc3RsaW5lU3R5bGUgPSBmYWxzZSk7CiAKLSAgICAv
LyBSZXR1cm4gdGhlIFJlbmRlckJveCBpbiB0aGUgY29udGFpbmVyIGNoYWluIHdoaWNoIGlzIHJl
c3BvbnNpYmxlIGZvciBwYWludGluZyB0aGlzIG9iamVjdCwgb3IgMAorICAgIC8vIFJldHVybiB0
aGUgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCBpbiB0aGUgY29udGFpbmVyIGNoYWluIHdoaWNoIGlz
IHJlc3BvbnNpYmxlIGZvciBwYWludGluZyB0aGlzIG9iamVjdCwgb3IgMAogICAgIC8vIGlmIHBh
aW50aW5nIGlzIHJvb3QtcmVsYXRpdmUuIFRoaXMgaXMgdGhlIGNvbnRhaW5lciB0aGF0IHNob3Vs
ZCBiZSBwYXNzZWQgdG8gdGhlICdmb3JSZXBhaW50JwogICAgIC8vIG1ldGhvZHMuCi0gICAgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5lckZvclJlcGFpbnQoKSBjb25zdDsKKyAgICBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXJGb3JSZXBhaW50KCkgY29uc3Q7CiAgICAgLy8g
QWN0dWFsbHkgZG8gdGhlIHJlcGFpbnQgb2YgcmVjdCByIGZvciB0aGlzIG9iamVjdCB3aGljaCBo
YXMgYmVlbiBjb21wdXRlZCBpbiB0aGUgY29vcmRpbmF0ZSBzcGFjZQogICAgIC8vIG9mIHJlcGFp
bnRDb250YWluZXIuIElmIHJlcGFpbnRDb250YWluZXIgaXMgMCwgcmVwYWludCB2aWEgdGhlIHZp
ZXcuCi0gICAgdm9pZCByZXBhaW50VXNpbmdDb250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGNvbnN0IEludFJlY3QmLCBib29sIGltbWVkaWF0ZSA9IGZhbHNl
KSBjb25zdDsKKyAgICB2b2lkIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBJbnRSZWN0JiwgYm9vbCBpbW1lZGlhdGUg
PSBmYWxzZSkgY29uc3Q7CiAgICAgCiAgICAgLy8gUmVwYWludCB0aGUgZW50aXJlIG9iamVjdC4g
IENhbGxlZCB3aGVuLCBlLmcuLCB0aGUgY29sb3Igb2YgYSBib3JkZXIgY2hhbmdlcywgb3Igd2hl
biBhIGJvcmRlcgogICAgIC8vIHN0eWxlIGNoYW5nZXMuCkBAIC03NjcsNyArNzY5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVwYWludFJlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCBp
bW1lZGlhdGUgPSBmYWxzZSkgY29uc3Q7CiAKICAgICAvLyBSZXBhaW50IG9ubHkgaWYgb3VyIG9s
ZCBib3VuZHMgYW5kIG5ldyBib3VuZHMgYXJlIGRpZmZlcmVudC4gVGhlIGNhbGxlciBtYXkgcGFz
cyBpbiBuZXdCb3VuZHMgYW5kIG5ld091dGxpbmVCb3ggaWYgdGhleSBhcmUga25vd24uCi0gICAg
Ym9vbCByZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYgb2xkQm91bmRzLCBjb25zdCBMYXlvdXRS
ZWN0JiBvbGRPdXRsaW5lQm94LCBjb25zdCBMYXlvdXRSZWN0KiBuZXdCb3VuZHNQdHIgPSAwLCBj
b25zdCBMYXlvdXRSZWN0KiBuZXdPdXRsaW5lQm94UHRyID0gMCk7CisgICAgYm9vbCByZXBhaW50
QWZ0ZXJMYXlvdXRJZk5lZWRlZChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIG9sZE91
dGxpbmVCb3gsIGNvbnN0IExheW91dFJlY3QqIG5ld0JvdW5kc1B0ciA9IDAsIGNvbnN0IExheW91
dFJlY3QqIG5ld091dGxpbmVCb3hQdHIgPSAwKTsKIAogICAgIC8vIFJlcGFpbnQgb25seSBpZiB0
aGUgb2JqZWN0IG1vdmVkLgogICAgIHZpcnR1YWwgdm9pZCByZXBhaW50RHVyaW5nTGF5b3V0SWZN
b3ZlZChjb25zdCBMYXlvdXRSZWN0Jik7CkBAIC03ODQsOCArNzg2LDggQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoMCk7CiAgICAgfQogICAg
IEludFJlY3QgcGl4ZWxTbmFwcGVkQWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFs
IExheW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0OworICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIExh
eW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3Q7CiAKICAg
ICAvLyBHaXZlbiBhIHJlY3QgaW4gdGhlIG9iamVjdCdzIGNvb3JkaW5hdGUgc3BhY2UsIGNvbXB1
dGUgYSByZWN0IHN1aXRhYmxlIGZvciByZXBhaW50aW5nCiAgICAgLy8gdGhhdCByZWN0IGluIHZp
ZXcgY29vcmRpbmF0ZXMuCkBAIC03OTUsOCArNzk3LDggQEAgcHVibGljOgogICAgIH0KICAgICAv
LyBHaXZlbiBhIHJlY3QgaW4gdGhlIG9iamVjdCdzIGNvb3JkaW5hdGUgc3BhY2UsIGNvbXB1dGUg
YSByZWN0IHN1aXRhYmxlIGZvciByZXBhaW50aW5nCiAgICAgLy8gdGhhdCByZWN0IGluIHRoZSBj
b29yZGluYXRlIHNwYWNlIG9mIHJlcGFpbnRDb250YWluZXIuCi0gICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkID0gZmFsc2Up
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQg
PSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBh
aW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYg
cmVwYWludFJlY3QsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CiAKICAgICAvLyBJZiBtdWx0
aXBsZS1jb2x1bW4gbGF5b3V0IHJlc3VsdHMgaW4gYXBwbHlpbmcgYW4gb2Zmc2V0IHRvIHRoZSBn
aXZlbiBwb2ludCwgYWRkIHRoZSBzYW1lCiAgICAgLy8gb2Zmc2V0IHRvIHRoZSBnaXZlbiBzaXpl
LgpAQCAtODM4LDcgKzg0MCw3IEBAIHB1YmxpYzoKICAgICAvLyBBIHNpbmdsZSByZWN0YW5nbGUg
dGhhdCBlbmNvbXBhc3NlcyBhbGwgb2YgdGhlIHNlbGVjdGVkIG9iamVjdHMgd2l0aGluIHRoaXMg
b2JqZWN0LiAgVXNlZCB0byBkZXRlcm1pbmUgdGhlIHRpZ2h0ZXN0CiAgICAgLy8gcG9zc2libGUg
Ym91bmRpbmcgYm94IGZvciB0aGUgc2VsZWN0aW9uLgogICAgIExheW91dFJlY3Qgc2VsZWN0aW9u
UmVjdChib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgeyByZXR1cm4gc2VsZWN0aW9u
UmVjdEZvclJlcGFpbnQoMCwgY2xpcFRvVmlzaWJsZUNvbnRlbnQpOyB9Ci0gICAgdmlydHVhbCBM
YXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiAv
KnJlcGFpbnRDb250YWluZXIqLywgYm9vbCAvKmNsaXBUb1Zpc2libGVDb250ZW50Ki8gPSB0cnVl
KSB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0
aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogLypyZXBhaW50Q29udGFp
bmVyKi8sIGJvb2wgLypjbGlwVG9WaXNpYmxlQ29udGVudCovID0gdHJ1ZSkgeyByZXR1cm4gTGF5
b3V0UmVjdCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGhhc1NlbGVjdGVkQ2hpbGRyZW4oKSBjb25z
dCB7IHJldHVybiBzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmU7IH0KQEAgLTkwNiwx
MiArOTA4LDEyIEBAIHB1YmxpYzoKIAogICAgIC8vIE1hcCBwb2ludHMgYW5kIHF1YWRzIHRocm91
Z2ggZWxlbWVudHMsIHBvdGVudGlhbGx5IHZpYSAzZCB0cmFuc2Zvcm1zLiBZb3Ugc2hvdWxkIG5l
dmVyIG5lZWQgdG8gY2FsbCB0aGVzZSBkaXJlY3RseTsgdXNlCiAgICAgLy8gbG9jYWxUb0Fic29s
dXRlL2Fic29sdXRlVG9Mb2NhbCBtZXRob2RzIGluc3RlYWQuCi0gICAgdmlydHVhbCB2b2lkIG1h
cExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNv
bnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFw
cGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zv
cm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogCiAgICAgLy8gUHVzaGVzIHN0YXRlIG9udG8g
UmVuZGVyR2VvbWV0cnlNYXAgYWJvdXQgaG93IHRvIG1hcCBjb29yZGluYXRlcyBmcm9tIHRoaXMg
cmVuZGVyZXIgdG8gaXRzIGNvbnRhaW5lciwgb3IgYW5jZXN0b3JUb1N0b3BBdCAod2hpY2hldmVy
IGlzIGVuY291bnRlcmVkIGZpcnN0KS4KICAgICAvLyBSZXR1cm5zIHRoZSByZW5kZXJlciB3aGlj
aCB3YXMgbWFwcGVkIHRvIChjb250YWluZXIgb3IgYW5jZXN0b3JUb1N0b3BBdCkuCi0gICAgdmly
dHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikg
Y29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250
YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVu
ZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKICAgICAKICAgICBib29sIHNob3VsZFVzZVRyYW5zZm9y
bUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXIpIGNvbnN0OwogICAg
IHZvaWQgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIGNvbnRh
aW5lciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0SW5Db250YWluZXIsIFRyYW5zZm9ybWF0aW9u
TWF0cml4JikgY29uc3Q7CkBAIC05NTUsNyArOTU3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKICAgICB2b2lkIGFyZW5hRGVsZXRlKFJlbmRlckFy
ZW5hKiwgdm9pZCogb2JqZWN0QmFzZSk7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGlu
ZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5l
ciovLCBMYXlvdXRQb2ludCogLypjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIqLyA9IDAp
IGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBv
dXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiAvKnJlcGFpbnRD
b250YWluZXIqLywgTGF5b3V0UG9pbnQqIC8qY2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVy
Ki8gPSAwKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBjYW5CZVJlcGxhY2VkV2l0aElubGluZVJ1bkluKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDFlYmIxNTI2ZTMwMzA0NTA2ZDBm
Mjg1MTFhNmI0MWMwNWI0M2MwOTguLmMyZmZmNjI2Y2ZjOTU0ZDU4YWFmNjBkZGJkMzAzNzI1Nzg3
NmRkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApA
QCAtNDk2LDcgKzQ5Niw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJSZXBsYWNlZDo6cG9zaXRp
b25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgcmV0dXJuIFJlbmRlckJv
eDo6cG9zaXRpb25Gb3JQb2ludChwb2ludCk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyUmVwbGFj
ZWQ6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KQorTGF5b3V0UmVjdCBSZW5kZXJS
ZXBsYWNlZDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkKIHsKICAgICBBU1NF
UlQoIW5lZWRzTGF5b3V0KCkpOwogCkBAIC01NjEsNyArNTYxLDcgQEAgYm9vbCBSZW5kZXJSZXBs
YWNlZDo6aXNTZWxlY3RlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1MYXlvdXRS
ZWN0IFJlbmRlclJlcGxhY2VkOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVy
UmVwbGFjZWQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgaWYgKHN0eWxlKCktPnZpc2li
aWxpdHkoKSAhPSBWSVNJQkxFICYmICFlbmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVu
dCgpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuaAppbmRleCA3ODI2Y2ViYTNmNjIwMTcyYzQwOWVmY2Q3YmUxZmY0
M2U3ZTA4NTNlLi42YTI0MjE1N2ZjMzM5ZTkwNTQ1OTMxNWU3ZDc1ZGJmNDI5NzBhYzg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApAQCAtNzEsMTMgKzcxLDEz
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmKSB7IH0KIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikg
Y29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25z
dCBMYXlvdXRQb2ludCYpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxl
YWYoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2Vs
ZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIExheW91
dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIE9WRVJSSURF
OwogICAgIHZvaWQgY29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5kZXJCb3goUmVu
ZGVyQm94KiwgRmxvYXRTaXplJiBjb25zdHJhaW5lZFNpemUsIGRvdWJsZSYgaW50cmluc2ljUmF0
aW8sIGJvb2wmIGlzUGVyY2VudGFnZUludHJpbnNpY1NpemUpIGNvbnN0OwogCiAgICAgbXV0YWJs
ZSBJbnRTaXplIG1faW50cmluc2ljU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2VsZWN0aW9uSW5mby5oCmluZGV4IGE1MTMzNzJkZmI5ODU3Zjc2YTY3OWFlYmU0ZDc1
ZGQxYzRmYzUyMjIuLjUwZGZmNzBhYTRlMGJjNGZiMjc1M2MxYzQxYzE1NWJjYmYyN2ZjNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uaApAQCAt
NDgsMTIgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgUmVuZGVyT2JqZWN0KiBv
YmplY3QoKSBjb25zdCB7IHJldHVybiBtX29iamVjdDsgfQotICAgIFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50Q29udGFpbmVy
OyB9CisgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcigpIGNvbnN0
IHsgcmV0dXJuIG1fcmVwYWludENvbnRhaW5lcjsgfQogICAgIFJlbmRlck9iamVjdDo6U2VsZWN0
aW9uU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAKIHByb3RlY3RlZDoK
ICAgICBSZW5kZXJPYmplY3QqIG1fb2JqZWN0OwotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBt
X3JlcGFpbnRDb250YWluZXI7CisgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogbV9yZXBhaW50
Q29udGFpbmVyOwogICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgbV9zdGF0ZTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXgg
OTUwMzJhYmNhZmU2ODA2N2M3MWM5ODkxZGI0NmU2Y2VmNWQ0MGQ3Yi4uOTQ0YTkwYzcwZjEwNDgw
ZDZiNjE5OTgwYjY3ZTg2YzBhZjE4ZGM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBMYXlvdXRTaXplIFJlbmRl
clRhYmxlQ2VsbDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IExh
eW91dFBvaQogICAgIHJldHVybiBvZmZzZXQ7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyVGFibGVD
ZWxsOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyVGFibGVDZWxsOjpjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyKSBjb25zdAogewogICAgIC8vIElmIHRoZSB0YWJsZSBncmlkIGlzIGRpcnR5LCB3
ZSBjYW5ub3QgZ2V0IHJlbGlhYmxlIGluZm9ybWF0aW9uIGFib3V0IGFkam9pbmluZyBjZWxscywK
ICAgICAvLyBzbyB3ZSBpZ25vcmUgb3V0c2lkZSBib3JkZXJzLiBUaGlzIHNob3VsZCBub3QgYmUg
YSBwcm9ibGVtIGJlY2F1c2UgaXQgbWVhbnMgdGhhdApAQCAtMzI4LDcgKzMyOCw3IEBAIExheW91
dFJlY3QgUmVuZGVyVGFibGVDZWxsOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCoKICAgICByZXR1cm4gcjsKIH0KIAotdm9pZCBSZW5kZXJUYWJsZUNl
bGw6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgTGF5b3V0UmVjdCYgciwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyVGFi
bGVDZWxsOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgciwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBp
ZiAocmVwYWludENvbnRhaW5lciA9PSB0aGlzKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKaW5kZXggZjU5YTIwYTkyZTA0ZTU4ZjQx
NjViZWI1NzQ0NTg1ZWI4NTkzZWVmNS4uNDVkYjdhYTE5Yzc5N2Q3MTIxMzhhODEyOTJiOGI4YTRm
NjE1YzI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApA
QCAtMTk3LDggKzE5Nyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGJveFNoYWRvd1No
b3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGlu
ZUZsb3dCb3gqKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZz
ZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCog
b2Zmc2V0RGVwZW5kc09uUG9pbnQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qg
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBi
b29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JS
ZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJl
Y3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgaW50IGJvcmRl
ckhhbGZMZWZ0KGJvb2wgb3V0ZXIpIGNvbnN0OwogICAgIGludCBib3JkZXJIYWxmUmlnaHQoYm9v
bCBvdXRlcikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29s
LmNwcAppbmRleCBiYWYxOTE0MzE5Y2RmZGJjMzg2ZGQ2ZjBmMzExOWU4NmVhNzA5ZTMwLi43YWE4
MzQxYTdlMjJkZDYwOTRhMmJkYzMyMzE3ZWEzYjRmMjdlYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBSZW5k
ZXJUYWJsZUNvbDo6Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QKICAgICByZXR1cm4gaXNUYWJsZUNv
bHVtbkdyb3VwKCk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyVGFibGVDb2w6OmNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJUYWJsZUNvbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QK
IHsKICAgICAvLyBGb3Igbm93LCBqdXN0IHJlcGFpbnQgdGhlIHdob2xlIHRhYmxlLgogICAgIC8v
IEZJWE1FOiBGaW5kIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLCBlLmcuLCBuZWVkIHRvIHJlcGFp
bnQgYWxsIHRoZSBjZWxscyB0aGF0IHdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZUNvbC5oCmluZGV4IDYxZjhmYTM0NjJjNGNlMGFjM2YxMTY1MTJhMWEyZWZiYTdkYzU0ZDgu
LjFhOWZhYzZlYzIzZDZmMGM1YzcxMDVkYmZjMTE0MzFlOGRhODI0YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1
YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0
IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNo
YW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApOwogCiAgICAgdmlydHVh
bCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUq
IG9sZFN0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3Bw
CmluZGV4IGIxMDJmMDg0MjQzZTc3MmM5ODBkNGFmOTNmMDY1ZTQyODNjMTM3MzkuLmM4NmYxNGMy
YzBjMWNlZjk1MTkzOWUxNmViYjY4OWI4NmEzY2IyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgUmVuZGVy
VGFibGVSb3c6OmxheW91dCgpCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCi1MYXlv
dXRSZWN0IFJlbmRlclRhYmxlUm93OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVu
ZGVyVGFibGVSb3c6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHBhcmVudCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAppbmRleCAxMmY4
MzNiYWYwZjA2NTcwNTI4Yjc3ZWI2OTRiMTY0NTc2OTNkOGNkLi44MGQ0YzE3ZTY0M2EzYjBhYzRk
ZDdjMTdmNzI0Y2M0YmI3MmZmN2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVSb3cuaApAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lk
IGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQg
PSAwKTsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0
IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNv
bnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0
aW9uKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gaGFzT3ZlcmZsb3dDbGlwKCkgfHwgaGFzVHJhbnNmb3JtKCkgfHwg
aGFzSGlkZGVuQmFja2ZhY2UoKSB8fCBoYXNDbGlwUGF0aCgpIHx8IGNyZWF0ZXNHcm91cCgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggZTE5NGNkNTQ2NGUw
ODM3ZmZjZDM5Yzk5NjVkODEwMWVjNDFjNWMzZi4uZDAzMjgxMmNlMjAyZTMxMThlMmMxNDNkMGJi
YWYwNjZkNGI4YjQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApA
QCAtMTYyMyw3ICsxNjIzLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpsaW5lc1Zpc3VhbE92
ZXJmbG93Qm91bmRpbmdCb3goKSBjb25zdAogICAgIHJldHVybiByZWN0OwogfQogCi1MYXlvdXRS
ZWN0IFJlbmRlclRleHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJUZXh0
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXJUb1Jl
cGFpbnQgPSBjb250YWluaW5nQmxvY2soKTsKIApAQCAtMTYzOSw3ICsxNjM5LDcgQEAgTGF5b3V0
UmVjdCBSZW5kZXJUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWkKICAgICByZXR1cm4gcmVuZGVyZXJUb1JlcGFpbnQtPmNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpOwogfQogCi1MYXlvdXRSZWN0
IFJlbmRlclRleHQ6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KQorTGF5b3V0UmVj
dCBSZW5kZXJUZXh0OjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KQogewogICAg
IEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5oCmluZGV4IDZmYzRjNjdhNzdlNTVlNzRkZmJjZmQyZDU0N2IyNjFlOTk5NzIxYmYuLjRjZjlj
NGUyYTZhYjA4MGIzNTNjZGZmZmJmZDcwOWYzNjU3NTFlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHQuaApAQCAtMTAzLDEzICsxMDMsMTMgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgcyk7Ci0gICAg
dmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1
ZSk7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNv
bnRlbnQgPSB0cnVlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgbG9jYWxDYXJl
dFJlY3QoSW5saW5lQm94KiwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRo
VG9FbmRPZkxpbmUgPSAwKTsKIAogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5MZWZ0KCkg
Y29uc3QgeyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkxlZnQo
KSwgMCwgdmlldygpKTsgfQogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5SaWdodCgpIGNv
bnN0IHsgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5SaWdodCgp
LCAwLCB2aWV3KCkpOyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNv
bnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBPVkVSUklE
RTsKIAogICAgIElubGluZVRleHRCb3gqIGZpcnN0VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1f
Zmlyc3RUZXh0Qm94OyB9CiAgICAgSW5saW5lVGV4dEJveCogbGFzdFRleHRCb3goKSBjb25zdCB7
IHJldHVybiBtX2xhc3RUZXh0Qm94OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKaW5kZXggOTRkYTI3NzAzYWExNDZiZjBlMDM3MjNjMmQ5OWQ0Njg3NTI5ZjU4NS4uNjYx
YmM5NGU0YWY1N2Q2ODJjODRlMDk4NmI0OThmOGM1ZGU4MDNiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgUmVuZGVyVmll
dzo6bGF5b3V0KCkKICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVy
Vmlldzo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFp
bmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclZpZXc6Om1h
cExvY2FsVG9Db250YWluZXIoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxh
Z3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gSWYgYSBjb250YWluZXIg
d2FzIHNwZWNpZmllZCwgYW5kIHdhcyBub3QgMCBvciB0aGUgUmVuZGVyVmlldywKICAgICAvLyB0
aGVuIHdlIHNob3VsZCBoYXZlIGZvdW5kIGl0IGJ5IG5vdy4KQEAgLTE5Myw3ICsxOTMsNyBAQCB2
b2lkIFJlbmRlclZpZXc6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIFRyYQogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKG1fZnJh
bWVWaWV3LT5zY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCkpOwogfQogCi1jb25zdCBSZW5k
ZXJPYmplY3QqIFJlbmRlclZpZXc6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9t
ZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyVmlldzo6cHVzaE1hcHBp
bmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3Rv
cEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgLy8gSWYg
YSBjb250YWluZXIgd2FzIHNwZWNpZmllZCwgYW5kIHdhcyBub3QgMCBvciB0aGUgUmVuZGVyVmll
dywKICAgICAvLyB0aGVuIHdlIHNob3VsZCBoYXZlIGZvdW5kIGl0IGJ5IG5vdy4KQEAgLTI2OCw3
ICsyNjgsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0Nv
bXBvc2l0ZWQoUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgcmV0dXJuIG9iamVjdC0+aGFz
TGF5ZXIoKSAmJiB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG9iamVjdCktPmxheWVyKCktPmlzQ29t
cG9zaXRlZCgpOworICAgIHJldHVybiBvYmplY3QtPmhhc0xheWVyKCkgJiYgdG9SZW5kZXJMYXll
ck1vZGVsT2JqZWN0KG9iamVjdCktPmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOwogfQogCiBzdGF0
aWMgaW5saW5lIGJvb2wgcmVuZGVyZXJPYnNjdXJlc0JhY2tncm91bmQoUmVuZGVyT2JqZWN0KiBv
YmplY3QpCkBAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50UmVjdGFu
Z2xlSW5WaWV3QW5kQ29tcG9zaXRlZExheWVycyhjb25zdCBMYXlvdXRSZWN0JiB1ciwKICNlbmRp
ZgogfQogCi12b2lkIFJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhl
ZCkgY29uc3QKK3ZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wg
Zml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gSWYgYSBjb250YWluZXIgd2FzIHNwZWNpZmllZCwgYW5k
IHdhcyBub3QgMCBvciB0aGUgUmVuZGVyVmlldywKICAgICAvLyB0aGVuIHdlIHNob3VsZCBoYXZl
IGZvdW5kIGl0IGJ5IG5vdy4KQEAgLTQxMywyMCArNDEzLDIwIEBAIHZvaWQgUmVuZGVyVmlldzo6
Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBMCiAgICAgICAgIHJlY3QubW92ZShtX2ZyYW1lVmlldy0+c2Nyb2xsT2Zmc2V0Rm9yRml4
ZWRQb3NpdGlvbigpKTsKICAgICAgICAgCiAgICAgLy8gQXBwbHkgb3VyIHRyYW5zZm9ybSBpZiB3
ZSBoYXZlIG9uZSAoYmVjYXVzZSBvZiBmdWxsIHBhZ2Ugem9vbWluZykuCi0gICAgaWYgKCFyZXBh
aW50Q29udGFpbmVyICYmIG1fbGF5ZXIgJiYgbV9sYXllci0+dHJhbnNmb3JtKCkpCi0gICAgICAg
IHJlY3QgPSBtX2xheWVyLT50cmFuc2Zvcm0oKS0+bWFwUmVjdChyZWN0KTsKKyAgICBpZiAoIXJl
cGFpbnRDb250YWluZXIgJiYgbGF5ZXIoKSAmJiBsYXllcigpLT50cmFuc2Zvcm0oKSkKKyAgICAg
ICAgcmVjdCA9IGxheWVyKCktPnRyYW5zZm9ybSgpLT5tYXBSZWN0KHJlY3QpOwogfQogCiB2b2lk
IFJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3Qg
TGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewotICAgIHJlY3RzLmFwcGVu
ZChwaXhlbFNuYXBwZWRJbnRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBtX2xheWVyLT5zaXplKCkp
KTsKKyAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNl
dCwgbGF5ZXIoKS0+c2l6ZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAg
IGlmICh3YXNGaXhlZCkKICAgICAgICAgKndhc0ZpeGVkID0gZmFsc2U7Ci0gICAgcXVhZHMuYXBw
ZW5kKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fbGF5ZXItPnNpemUoKSkpOworICAgIHF1YWRz
LmFwcGVuZChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllcigpLT5zaXplKCkpKTsKIH0KIAog
c3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJBZnRlclBvc2l0aW9uKFJlbmRlck9iamVjdCog
b2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQpCkBAIC00NzEsNyArNDcxLDcgQEAgSW50UmVjdCBSZW5k
ZXJWaWV3OjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QK
ICAgICAgICAgUmVuZGVyU2VsZWN0aW9uSW5mbyogaW5mbyA9IGktPnNlY29uZC5nZXQoKTsKICAg
ICAgICAgLy8gUmVuZGVyU2VsZWN0aW9uSW5mbzo6cmVjdCgpIGlzIGluIHRoZSBjb29yZGluYXRl
cyBvZiB0aGUgcmVwYWludENvbnRhaW5lciwgc28gbWFwIHRvIHBhZ2UgY29vcmRpbmF0ZXMuCiAg
ICAgICAgIExheW91dFJlY3QgY3VyclJlY3QgPSBpbmZvLT5yZWN0KCk7Ci0gICAgICAgIGlmIChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IGluZm8tPnJlcGFpbnRDb250
YWluZXIoKSkgeworICAgICAgICBpZiAoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciA9IGluZm8tPnJlcGFpbnRDb250YWluZXIoKSkgewogICAgICAgICAgICAgRmxvYXRR
dWFkIGFic1F1YWQgPSByZXBhaW50Q29udGFpbmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0
UmVjdChjdXJyUmVjdCkpOwogICAgICAgICAgICAgY3VyclJlY3QgPSBhYnNRdWFkLmVuY2xvc2lu
Z0JvdW5kaW5nQm94KCk7IAogICAgICAgICB9CkBAIC01NzYsNyArNTc2LDcgQEAgdm9pZCBSZW5k
ZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBS
ZW5kZXJPYmplY3QqIGUKICAgICB9CiAKICAgICBpZiAoYmxvY2tSZXBhaW50TW9kZSAhPSBSZXBh
aW50Tm90aGluZykKLSAgICAgICAgbV9sYXllci0+Y2xlYXJCbG9ja1NlbGVjdGlvbkdhcHNCb3Vu
ZHMoKTsKKyAgICAgICAgbGF5ZXIoKS0+Y2xlYXJCbG9ja1NlbGVjdGlvbkdhcHNCb3VuZHMoKTsK
IAogICAgIC8vIE5vdyB0aGF0IHRoZSBzZWxlY3Rpb24gc3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBm
b3IgdGhlIG5ldyBvYmplY3RzLCB3YWxrIHRoZW0gYWdhaW4gYW5kCiAgICAgLy8gcHV0IHRoZW0g
aW4gdGhlIG5ldyBvYmplY3RzIGxpc3QuCkBAIC02NTYsNyArNjU2LDcgQEAgdm9pZCBSZW5kZXJW
aWV3OjpnZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiYgc3RhcnRSZW5kZXJlciwgaW50JiBzdGFy
dE9mZnNldCwgUmUKIAogdm9pZCBSZW5kZXJWaWV3OjpjbGVhclNlbGVjdGlvbigpCiB7Ci0gICAg
bV9sYXllci0+cmVwYWludEJsb2NrU2VsZWN0aW9uR2FwcygpOworICAgIGxheWVyKCktPnJlcGFp
bnRCbG9ja1NlbGVjdGlvbkdhcHMoKTsKICAgICBzZXRTZWxlY3Rpb24oMCwgLTEsIDAsIC0xLCBS
ZXBhaW50TmV3TWludXNPbGQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
aAppbmRleCBkYTRiMjAzYTBjY2ZiOTliOTE3NDhlMjM2NzY1ZWRjZDhjOTdmMjkzLi42OTYyMjFi
ZTc3NTY5MTgyZDVhNTY0MDczZWRkYmViYmQ3M2UxZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogCiAgICAgRnJhbWVWaWV3
KiBmcmFtZVZpZXcoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lVmlldzsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVwYWludFZpZXdSZWN0YW5nbGUoY29uc3Qg
TGF5b3V0UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOwogICAgIC8vIFJlcGFpbnQgdGhl
IHZpZXcsIGFuZCBhbGwgY29tcG9zaXRlZCBsYXllcnMgdGhhdCBpbnRlcnNlY3QgdGhlIGdpdmVu
IGFic29sdXRlIHJlY3RhbmdsZS4KICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSdkIG5ldmVyIGhh
dmUgdG8gZG8gdGhpcywgaWYgYWxsIHJlcGFpbnRzIGFyZSBjb250YWluZXItcmVsYXRpdmUuCkBA
IC0yMDYsOCArMjA2LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzUmVuZGVyQ291bnRlcnMoKSB7
IHJldHVybiBtX3JlbmRlckNvdW50ZXJDb3VudDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVh
bCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUg
PSBBcHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2Fz
Rml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVj
dCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5j
ZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0g
QXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0Zp
eGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3Qq
IHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5j
ZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VU
cmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCByZXF1
aXJlc0NvbHVtbnMoaW50IGRlc2lyZWRDb2x1bW5Db3VudCkgY29uc3QgT1ZFUlJJREU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCmluZGV4IDAz
YmRkM2Y4Yjk1ZGViZWY5NjgzNjM0OTFjYzBkM2QxYjQyMDRiZmMuLmUzOGE3ZjI3MGZmZTI4MDQy
MDlkYWJlMjIzMGNlYjU3ZmQzMTY1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcmluZ0FsbEluT25lLmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIlJlbmRl
cklubGluZS5jcHAiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuY3BwIgogI2luY2x1ZGUgIlJlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5j
cHAiCiAjaW5jbHVkZSAiUmVuZGVyTGluZUJveExpc3QuY3BwIgogI2luY2x1ZGUgIlJlbmRlckxp
c3RCb3guY3BwIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmNwcCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKaW5kZXggMzYxMjc5NDE1YWFk
ZTYyOThlM2QyMmMwNWZmNmE0ZmUzY2VkOTQwOC4uOWYzOTM1N2MxYjY0ZjQwMDE1Yjg5OWM3ODFi
YWIxMDRkZDQ2OTY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdCbG9jay5jcHAKQEAgLTYxLDkgKzYxLDkgQEAgdm9pZCBSZW5kZXJTVkdCbG9jazo6c2V0
U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgUmVuZGVyQmxvY2s6OnNl
dFN0eWxlKHVzZVN0eWxlLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHQmxvY2s6OnVw
ZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpCit2b2lkIFJlbmRlclNWR0Jsb2NrOjp1cGRhdGVG
cm9tU3R5bGUoKQogewotICAgIFJlbmRlckJsb2NrOjp1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5
bGUoKTsKKyAgICBSZW5kZXJCbG9jazo6dXBkYXRlRnJvbVN0eWxlKCk7CiAKICAgICAvLyBSZW5k
ZXJTVkdsb2NrLCB1c2VkIGJ5IFJlbmRlcihTVkdUZXh0fEZvcmVpZ25PYmplY3QpLCBpcyBub3Qg
YWxsb3dlZCB0byBjYWxsIHNldEhhc092ZXJmbG93Q2xpcCh0cnVlKS4KICAgICAvLyBSZW5kZXJC
bG9jayBhc3N1bWVzIGEgbGF5ZXIgdG8gYmUgcHJlc2VudCB3aGVuIHRoZSBvdmVyZmxvdyBjbGlw
IGZ1bmN0aW9uYWxpdHkgaXMgcmVxdWVzdGVkLiBCb3RoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKaW5kZXggN2Y1Yjc4NTMyOGIwNTczZTI5ZmYzOThm
ZjIwNzcxMTU4NTIzYTI2YS4uMjIyZDVlZTIwMzUyMGE1MGZmN2M5MjQzNDliNDIxYWEwMzc5OWI2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9j
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaApA
QCAtMzksNyArMzksNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+KTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21T
dHlsZSgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9y
PEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdC5jcHAKaW5kZXggZmUwZDlhMTJiODFkM2ZhZWIwZDJhODY1MjZlMmUwNWM4ZjBh
YzNiZi4uMzQzMGI1NTc1NDJhZTczNjExMWExZjM4NTQ3MmQ1MTUxOTI1YzA4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmpl
Y3QuY3BwCkBAIC04OCwxMiArODgsMTIgQEAgdm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgIH0KIH0K
IAotTGF5b3V0UmVjdCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QK
K0xheW91dFJlY3QgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QK
IHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJl
cGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lcik7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHRm9yZWln
bk9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNv
bnN0Cit2b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBh
aW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYg
cmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6
Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lciwgcmVwYWlu
dFJlY3QsIGZpeGVkKTsKIH0KQEAgLTE5MCwxMiArMTkwLDEyIEBAIGJvb2wgUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVz
dWx0JiwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVy
RmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR0ZvcmVpZ25P
YmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29u
dGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVy
U3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0aGlzLCByZXBhaW50Q29udGFpbmVyLCB0cmFu
c2Zvcm1TdGF0ZSwgbW9kZSAmIFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCB3YXNGaXhlZCk7CiB9
CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6cHVzaE1hcHBp
bmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BB
dCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2Jq
ZWN0KiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5
TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6
cHVzaE1hcHBpbmdUb0NvbnRhaW5lcih0aGlzLCBhbmNlc3RvclRvU3RvcEF0LCBnZW9tZXRyeU1h
cCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ZvcmVpZ25PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Rm9yZWlnbk9iamVjdC5oCmluZGV4IDFmMzdhM2ZjZjRkYWZlNTFhZGVjNDJjMTBhYWQ2ZjI4MGQx
MzE4ZGIuLjJiYmIxNWVkMTM4YzI1MTVkYTkxNjg5MjJhM2IzYmQ3NTczMGMyYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5oCkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0
IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVj
dCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxv
YXRSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IE9WRVJSSURFOwogCiAgICAg
dmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBib29sIGlzU1ZHRm9yZWlnbk9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250
YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5z
Zm9ybXMsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBj
b25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94
TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFp
bmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRGb3JUcmFuc2Zv
cm1zLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29u
c3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBt
X25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgKaW5kZXgg
YjkwYWI1MDgxMDQxMTM4NDE0MWMzMjM4OTQ3NmUzYzg0NDM0MDY1Yi4uYWY4Yjg5ODkxYmM5ZDA0
ZDkzZmZlOGVlNGQ2MWQ5YTM3MzE5M2U4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1
YmxpYzoKICAgICAvLyBUaGlzIG92ZXJyaWRlcyBhcmUgbmVlZGVkIHRvIHByZXZlbnQgQVNTRVJU
cyBvbiA8c3ZnPjxzdG9wIC8+PC9zdmc+CiAgICAgLy8gUmVuZGVyT2JqZWN0J3MgZGVmYXVsdCBp
bXBsZW1lbnRhdGlvbnMgQVNTRVJUX05PVF9SRUFDSEVEKCkKICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MDAKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qg
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqKSBjb25z
dCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQogICAgIHZpcnR1YWwgRmxvYXRSZWN0IG9i
amVjdEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KICAgICB2aXJ0
dWFsIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UmVj
dCgpOyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0
ZXMoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKaW5kZXggZjI2
YzVmYzYxYTM3ZjgyMDdkNGQ2NDliZTY4MDlkNTJhMmY4ODI1Zi4uYjMwMWVhMjNlZGFjYThmMGE3
ZjJiMDM2YTI0YzhiYTBkYWM0NjE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCkBAIC00Myw3ICs0Myw3IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmKTsKICAgICAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqKSBjb25zdCB7IHJldHVybiBMYXlv
dXRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IExheW91dFJlY3QoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIG5v
ZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKaW5kZXggMjFiZWQ0
YTE1ZWI3MTIyNDZkNGY5YTkzMTRiY2MyZTcxNjZmMWMxMi4uY2Y4MTUzYTE0OWI0MDg2OTIzZmI5
YzY1NmI0MWUwYjRhNDZiNTFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lLmNwcApAQCAtNjksMjIgKzY5LDIyIEBAIEZsb2F0UmVjdCBSZW5k
ZXJTVkdJbmxpbmU6OnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3QKICAgICBy
ZXR1cm4gRmxvYXRSZWN0KCk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyU1ZHSW5saW5lOjpjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyU1ZHSW5saW5lOjpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyKTsKIH0KIAotdm9pZCBSZW5kZXJT
VkdJbmxpbmU6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBj
b25zdAordm9pZCBSZW5kZXJTVkdJbmxpbmU6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWlu
dFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0
ZUZsb2F0UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3Qs
IGZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0
cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRy
YW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4
ZWQpIGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0
aGlzLCByZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSAmIFNuYXBPZmZzZXRG
b3JUcmFuc2Zvcm1zLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVy
U1ZHSW5saW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNv
bnN0Citjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR0lubGluZTo6cHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBS
ZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1Jl
bmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIodGhpcywgYW5jZXN0b3JUb1N0b3BB
dCwgZ2VvbWV0cnlNYXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW5saW5lLmgKaW5kZXggOGVmOWNlZDdhYTEyMGUzMTBjMGNkNzljM2QyYzhiZjVjNTRk
MWVjZi4uZjY1OWExM2JhOTEwZWZhOTI5NzgzYzIzNDU1YTE1ZDZjZDliNWNmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCkBAIC00NSwxMCAr
NDUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRp
bmF0ZXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0g
ZmFsc2UpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExv
Y2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNl
dEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3Qg
UmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFw
JikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZp
eGVkID0gZmFsc2UpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5z
Zm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5l
ckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0
LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Owog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmNwcAppbmRleCA1NjM3MmI0OWY1NDE0NzA1ODQ4NjgxYmM0NmNjZTZl
ZjEwMzQ2ODEzLi42NGViNTMzMjE5MWI2MDRiNjQzZGI3MWM3ZTYyZGRmY2FlY2Y4MjA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuaCIKIAorI2luY2x1ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgi
CiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VzQ2FjaGUuaCIKQEAgLTQ1LDIyICs0NiwyMiBAQCBSZW5k
ZXJTVkdNb2RlbE9iamVjdDo6UmVuZGVyU1ZHTW9kZWxPYmplY3QoU1ZHU3R5bGVkRWxlbWVudCog
bm9kZSkKIHsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0OjpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyKTsKIH0KIAotdm9pZCBSZW5kZXJT
VkdNb2RlbE9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4
ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9y
UmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJl
Y3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIFNWR1JlbmRlclN1cHBv
cnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHJl
cGFpbnRSZWN0LCBmaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om1hcExv
Y2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRy
YW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1v
ZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6bWFw
TG9jYWxUb0NvbnRhaW5lcihSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFn
cyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0Ojpt
YXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRl
LCBtb2RlICYgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIHdhc0ZpeGVkKTsKIH0KIAotY29uc3Qg
UmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdNb2RlbE9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5l
cihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2Vv
bWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJT
VkdNb2RlbE9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlN
YXApIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5nVG9D
b250YWluZXIodGhpcywgYW5jZXN0b3JUb1N0b3BBdCwgZ2VvbWV0cnlNYXApOwogfQpAQCAtNjgs
NyArNjksNyBAQCBjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR01vZGVsT2JqZWN0OjpwdXNo
TWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveAogLy8gQ29waWVkIGZyb20gUmVuZGVy
Qm94LCB0aGlzIG1ldGhvZCBsaWtlbHkgcmVxdWlyZXMgZnVydGhlciByZWZhY3RvcmluZyB0byB3
b3JrIGVhc2lseSBmb3IgYm90aCBTVkcgYW5kIENTUyBCb3ggTW9kZWwgY29udGVudC4KIC8vIEZJ
WE1FOiBUaGlzIG1heSBhbHNvIG5lZWQgdG8gbW92ZSBpbnRvIFNWR1JlbmRlclN1cHBvcnQgYXMg
dGhlIFJlbmRlckJveCB2ZXJzaW9uIGRlcGVuZHMKIC8vIG9uIGJvcmRlckJvdW5kaW5nQm94KCkg
d2hpY2ggU1ZHIFJlbmRlckJveCBzdWJjbGFzZXMgKGxpa2UgU1ZHUmVuZGVyQmxvY2spIGRvIG5v
dCBpbXBsZW1lbnQuCi1MYXlvdXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0OjpvdXRsaW5lQm91
bmRzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5
b3V0UG9pbnQqKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGlu
ZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0UG9pbnQqKSBjb25zdAogewogICAgIExheW91dFJlY3QgYm94ID0gZW5jbG9zaW5n
TGF5b3V0UmVjdChyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKTsKICAgICBhZGp1c3RS
ZWN0Rm9yT3V0bGluZUFuZFNoYWRvdyhib3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCmluZGV4IGI4M2NhMGZjYmJiZmE0ZDU2
NzMyNDc1YTExNmJkZmRhMzhlZmEwMjMuLjNiOWM4Y2UxOTk0Y2RjNzg0MDI0Y2Y5ZWVjYWI3YTVj
MzcxYWI4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHTW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmgKQEAgLTUxLDE1ICs1MSwxNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2
aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKLSAgICB2aXJ0
dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFBvaW50KikgY29uc3Q7CisgICAgdmlydHVhbCBM
YXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRQb2ludCopIGNvbnN0
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJl
Y3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExv
Y2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwIHwgU25hcE9mZnNl
dEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3Qg
UmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFw
JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2Nh
bFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRG
b3JUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFw
JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CiAgICAgdmlydHVhbCB2
b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9v
dC5jcHAKaW5kZXggNzQ3Njc5MjY2NTc4OTQ0OTY0YTlhNzBjMzU1MjFiNGQ1YjBhMGZhMi4uYjY5
ZGQzMTc2NTBmNjM4ZDFiNjEyYmIxNGQyMDlhOTJmN2JjZWQwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC0zNjksMTIgKzM2OSwxMiBA
QCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIFJlbmRlclNWR1Jvb3Q6OmxvY2FsVG9QYXJlbnRUcmFu
c2Zvcm0oKSBjb25zdAogICAgIHJldHVybiBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07CiB9CiAK
LUxheW91dFJlY3QgUmVuZGVyU1ZHUm9vdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0
IFJlbmRlclNWR1Jvb3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1Jl
bmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRD
b250YWluZXIpOwogfQogCi12b2lkIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3Qm
IHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdSb290Ojpjb21w
dXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAg
IC8vIEFwcGx5IG91ciBsb2NhbCB0cmFuc2Zvcm1zIChleGNlcHQgZm9yIHgveSB0cmFuc2xhdGlv
biksIHRoZW4gb3VyIHNoYWRvdywgCiAgICAgLy8gYW5kIHRoZW4gY2FsbCBSZW5kZXJCb3gncyBt
ZXRob2QgdG8gaGFuZGxlIGFsbCB0aGUgbm9ybWFsIENTUyBCb3ggbW9kZWwgYml0cwpAQCAtMzk1
LDcgKzM5NSw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250CiAvLyBUaGlzIG1ldGhvZCBleHBl
Y3RzIGxvY2FsIENTUyBib3ggY29vcmRpbmF0ZXMuCiAvLyBDYWxsZXJzIHdpdGggbG9jYWwgU1ZH
IHZpZXdwb3J0IGNvb3JkaW5hdGVzIHNob3VsZCBmaXJzdCBhcHBseSB0aGUgbG9jYWxUb0JvcmRl
ckJveFRyYW5zZm9ybQogLy8gdG8gY29udmVydCBmcm9tIFNWRyB2aWV3cG9ydCBjb29yZGluYXRl
cyB0byBsb2NhbCBDU1MgYm94IGNvb3JkaW5hdGVzLgotdm9pZCBSZW5kZXJTVkdSb290OjptYXBM
b2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBU
cmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBt
b2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHUm9vdDo6bWFwTG9jYWxU
b0NvbnRhaW5lcihSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFu
c2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2Rl
LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBBU1NFUlQobW9kZSAmIH5Jc0ZpeGVkKTsg
Ly8gV2Ugc2hvdWxkIGhhdmUgbm8gZml4ZWQgY29udGVudCBpbiB0aGUgU1ZHIHJlbmRlcmluZyB0
cmVlLgogICAgIEFTU0VSVChtb2RlICYgVXNlVHJhbnNmb3Jtcyk7IC8vIG1hcHBpbmcgYSBwb2lu
dCB0aHJvdWdoIFNWRyB3L28gcmVzcGVjdGluZyB0cmFzbmZvcm1zIGlzIHVzZWxlc3MuCkBAIC00
MDMsNyArNDAzLDcgQEAgdm9pZCBSZW5kZXJTVkdSb290OjptYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLAogICAgIFJlbmRlclJlcGxhY2Vk
OjptYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBt
b2RlIHwgQXBwbHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRlck9i
amVjdCogUmVuZGVyU1ZHUm9vdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJC
b3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21l
dHJ5TWFwKSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdSb290OjpwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9T
dG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKIHsKICAgICByZXR1
cm4gUmVuZGVyUmVwbGFjZWQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoYW5jZXN0b3JUb1N0b3BB
dCwgZ2VvbWV0cnlNYXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuaAppbmRleCBjZGRkMzExZmQ1YzYzYmU2MTc5YTNiMmM0ZjBlMjMyZjFjZDFmY2Ey
Li40NzJhZjRiOGY5ODI4ODBmZThlYzI2YTk0YTNkOThhOWMzMjU2NDVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApAQCAtOTIsMTEgKzkyLDExIEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbklu
Q29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RB
Y3Rpb24pIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxv
d1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3Qs
IGJvb2wgZml4ZWQpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJl
cGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0
JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9
IEFwcGx5Q29udGFpbmVyRmxpcCB8IFNuYXBPZmZzZXRGb3JUcmFuc2Zvcm1zLCBib29sKiB3YXNG
aXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0
KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNl
c3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBB
cHBseUNvbnRhaW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2FzRml4
ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCog
cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNl
c3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IE9WRVJSSURFOwogCiAgICAg
dmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCmlu
ZGV4IDI5NDVmZTQ4YjcyMzE2NzA5YmIzN2FiZWMzMzMxMjE2OTc3ZGEyOGYuLjlmZjJjYzhlNzBh
NTYzYmU1MjBjZTk2MDMwODEwNDU4MzJlMDZiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtOTQsMjkgKzk0LDI5IEBAIGNvbnN0IFJl
bmRlclNWR1RleHQqIFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcihj
b25zdCBSZW5kZXJPYmplCiAgICAgcmV0dXJuIHRvUmVuZGVyU1ZHVGV4dChzdGFydCk7CiB9CiAK
LUxheW91dFJlY3QgUmVuZGVyU1ZHVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CitMYXlvdXRSZWN0
IFJlbmRlclNWR1RleHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1Jl
bmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRD
b250YWluZXIpOwogfQogCi12b2lkIFJlbmRlclNWR1RleHQ6OmNvbXB1dGVSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVj
dCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZVJlY3RGb3JS
ZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJl
Y3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0
ID0gcmVjdDsKICAgICBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVy
LCByZXBhaW50UmVjdCwgZml4ZWQpOwogICAgIHJlY3QgPSBlbmNsb3NpbmdMYXlvdXRSZWN0KHJl
cGFpbnRSZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJTVkdUZXh0Ojpjb21wdXRlRmxvYXRSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0
JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHVGV4dDo6Y29t
cHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAg
ICBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBh
aW50Q29udGFpbmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwogfQogCi12b2lkIFJlbmRlclNWR1Rl
eHQ6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5l
ckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdUZXh0Ojpt
YXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZs
YWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6
Om1hcExvY2FsVG9Db250YWluZXIodGhpcywgcmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3Rh
dGUsIG1vZGUgJiBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3Jtcywgd2FzRml4ZWQpOwogfQogCi1jb25z
dCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR1RleHQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29u
c3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5
TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK2NvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHVGV4
dDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBh
bmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIodGhp
cywgYW5jZXN0b3JUb1N0b3BBdCwgZ2VvbWV0cnlNYXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAppbmRleCBjZDJlMzhmNzk2NjA1ZTI3OTBkYjJi
Y2ZhY2JmOTYwOWRlNTU1OGE1Li5hYTY0YzZjOGRhMjVkODkxMzBmNTQzNWYzNTc5ZTg5NmVlNTc3
Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Rl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaApA
QCAtNzEsMTIgKzcxLDEyIEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29s
IGZpeGVkID0gZmFsc2UpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIG1hcExv
Y2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRy
YW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRh
aW5lckZsaXAgfCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2FzRml4ZWQgPSAwKSBj
b25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBp
bmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BB
dCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxU
b0NvbnRhaW5lcihSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFu
c2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWlu
ZXJGbGlwIHwgU25hcE9mZnNldEZvclRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5n
VG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BB
dCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9
IDApOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgT1ZFUlJJREU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCBm
YzU3MmFkNmYzYjBlZWE2NGIxNmE0MDU1YzljOWMwZmI3MjhmYmMyLi5jOGMwZjc4YzdlZDI3YjAz
ZGI5NzI2MzFkMDhjMjkwNjMwYzdhZDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1MYXlvdXRSZWN0IFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikKK0xheW91dFJlY3QgU1ZHUmVuZGVyU3VwcG9y
dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCiB7CiAgICAgLy8g
UmV0dXJuIGVhcmx5IGZvciBhbnkgY2FzZXMgd2hlcmUgd2UgZG9uJ3QgYWN0dWFsbHkgcGFpbnQK
ICAgICBpZiAob2JqZWN0LT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAhb2Jq
ZWN0LT5lbmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVudCgpKQpAQCAtNTksNyArNTks
NyBAQCBMYXlvdXRSZWN0IFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCogbwogICAgIHJldHVybiBlbmNsb3NpbmdMYXlvdXRS
ZWN0KHJlcGFpbnRSZWN0KTsKIH0KIAotdm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxv
YXRSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wg
Zml4ZWQpCit2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50
KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKQogewogICAg
IGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdmdTdHlsZSA9IG9iamVjdC0+c3R5bGUoKS0+c3ZnU3R5
bGUoKTsKICAgICBpZiAoY29uc3QgU2hhZG93RGF0YSogc2hhZG93ID0gc3ZnU3R5bGUtPnNoYWRv
dygpKQpAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9h
dFJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBSZQogICAgIG9iamVj
dC0+cGFyZW50KCktPmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIs
IHJlcGFpbnRSZWN0LCBmaXhlZCk7CiB9CiAKLXZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9j
YWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwg
Ym9vbCBzbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCogd2FzRml4ZWQpCit2b2lkIFNWR1Jl
bmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0
YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgYm9vbCBzbmFwT2Zmc2V0Rm9yVHJhbnNmb3JtcywgYm9vbCog
d2FzRml4ZWQpCiB7CiAgICAgdHJhbnNmb3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0ob2JqZWN0LT5s
b2NhbFRvUGFyZW50VHJhbnNmb3JtKCkpOwogCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgU1ZHUmVu
ZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVj
dCwgUmVuZGVyQm94CiAgICAgcGFyZW50LT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250
YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlLCB3YXNGaXhlZCk7CiB9CiAKLWNvbnN0IFJlbmRl
ck9iamVjdCogU1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9y
VG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkKK2NvbnN0IFJlbmRlck9i
amVjdCogU1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JU
b1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKQogewogICAgIEFTU0VSVF9V
TlVTRUQoYW5jZXN0b3JUb1N0b3BBdCwgYW5jZXN0b3JUb1N0b3BBdCAhPSBvYmplY3QpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oCmluZGV4
IGI2MmNjZmIyZjE4NWU5ZjhmMGNlZjZmNTgxZmJjMTgwMzYxODhmMTAuLjMyODZmOGZlODVmMTIw
NThhZDk1MWZlNTkwNDE3NmQxODJhYTExMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIEZsb2F0
UmVjdDsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgUmVuZGVyQm94TW9kZWxPYmplY3Q7CiBj
bGFzcyBSZW5kZXJHZW9tZXRyeU1hcDsKK2NsYXNzIFJlbmRlckxheWVyTW9kZWxPYmplY3Q7CiBj
bGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRlclNWR1Jv
b3Q7CkBAIC02MiwxMCArNjMsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHBhaW50SW5m
b0ludGVyc2VjdHNSZXBhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmIGxvY2FsUmVwYWludFJlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUcmFuc2Zvcm0sIGNvbnN0IFBhaW50SW5mbyYp
OwogCiAgICAgLy8gSW1wb3J0YW50IGZ1bmN0aW9ucyB1c2VkIGJ5IG5lYXJseSBhbGwgU1ZHIHJl
bmRlcmVycyBjZW50cmFsaXppbmcgY29vcmRpbmF0ZSB0cmFuc2Zvcm1hdGlvbnMgLyByZXBhaW50
IHJlY3QgY2FsY3VsYXRpb25zCi0gICAgc3RhdGljIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiwgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpOwotICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JS
ZXBhaW50KGNvbnN0IFJlbmRlck9iamVjdCosIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkKTsKLSAgICBzdGF0aWMgdm9pZCBtYXBM
b2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCosIFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIGJvb2wgc25hcE9mZnNldEZvclRy
YW5zZm9ybXMgPSB0cnVlLCBib29sKiB3YXNGaXhlZCA9IDApOwotICAgIHN0YXRpYyBjb25zdCBS
ZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21l
dHJ5TWFwJik7CisgICAgc3RhdGljIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJl
cGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0KiwgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lcik7CisgICAgc3RhdGljIHZvaWQgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQo
Y29uc3QgUmVuZGVyT2JqZWN0KiwgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCk7CisgICAgc3RhdGljIHZvaWQgbWFwTG9jYWxU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqLCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIGJvb2wgc25hcE9mZnNldEZvclRyYW5z
Zm9ybXMgPSB0cnVlLCBib29sKiB3YXNGaXhlZCA9IDApOworICAgIHN0YXRpYyBjb25zdCBSZW5k
ZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0
cnlNYXAmKTsKIAogICAgIC8vIFNoYXJlZCBiZXR3ZWVuIFNWRyByZW5kZXJlcnMgYW5kIHJlc291
cmNlcy4KICAgICBzdGF0aWMgdm9pZCBhcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgUmVuZGVyT2JqZWN0Kik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>