<?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>121558</bug_id>
          
          <creation_ts>2013-09-18 08:46:03 -0700</creation_ts>
          <short_desc>[ATK] Protect entry points in the ATK wrapper against outdated render trees</short_desc>
          <delta_ts>2013-09-27 09:53:31 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>121602</dependson>
          <blocked>111992</blocked>
    
    <blocked>121556</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mario Sanchez Prada">mario</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>buildbot</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jdiggs</cc>
    
    <cc>k.czech</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>930639</commentid>
    <comment_count>0</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-18 08:46:03 -0700</bug_when>
    <thetext>While working on bug 121556, I found that the reason why it crashes in AccessibilityNodeObject::textUnderElement() is because some nodes in the accessibility tree are being detached between one iteration and the following one inside the for loop in that function.

More specifically too, the problem happens exactly after we call child-&gt;textUnderElement() in the snipped of code below:

    StringBuilder builder;
    for  (AccessibilityObject* child = firstChild(); child; child = child-&gt;nextSibling()) {

        [...]

        String childText = child-&gt;textUnderElement(mode);
        if (childText.length()) {
            if (shouldAddSpaceBeforeAppendingNextElement(builder, childText))
                builder.append(&apos; &apos;);
            builder.append(childText);
        }
    }

Before the call to child-&gt;textUnderElement(), and considering the accessibility/heading-level.html test as our scenario, a hypothetical call to child-&gt;nextSibling() might return 0x0, which is fine, suggesting that there no more children after that one. However, if we call again child-&gt;nextSibling() after the call to textUnderElement(), we get a beautiful segfault error, which is the crashing we are seeing in the bots.

After some investigation, I found that the reason for that seems to be that in r155378 a forced call to update the layout has been added to the constructor of the TextIterator, which is used in AccessibilityRenderObject::textUnderElement() for text objects. And while that addition seems to be correct according to the comments in bug 120891, it&apos;s also causing that in certain scenarios (like the one detected with this test) we have the accessibility tree being altered between iterations of that for loop, causing that the &apos;child&apos; pointer that we have at the beginning of the iteration is no longer valid, thus leading to the crash.

I have trying to get a simplified version of a layout test based on heading-level.html to proof the problem and also a fix for that, which I hope to attach soon.

Btw, this only seems to happen in GTK/EFL for some reason, probably because of the way DRT/WKTR is implemented, but in any case I think there might be a bug here and that it could be as easy to call to updateLayout() before the loop so we make sure that further uses of TextIterator won&apos;t cause this weird behaviour.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930640</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-09-18 08:46:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/15020597&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930650</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-09-18 09:22:40 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; While working on bug 121556, I found that the reason why it crashes in AccessibilityNodeObject::textUnderElement() is because some nodes in the accessibility tree are being detached between one iteration and the following one inside the for loop in that function.
&gt; 
&gt; More specifically too, the problem happens exactly after we call child-&gt;textUnderElement() in the snipped of code below:
&gt; 
&gt;     StringBuilder builder;
&gt;     for  (AccessibilityObject* child = firstChild(); child; child = child-&gt;nextSibling()) {
&gt; 
&gt;         [...]
&gt; 
&gt;         String childText = child-&gt;textUnderElement(mode);
&gt;         if (childText.length()) {
&gt;             if (shouldAddSpaceBeforeAppendingNextElement(builder, childText))
&gt;                 builder.append(&apos; &apos;);
&gt;             builder.append(childText);
&gt;         }
&gt;     }
&gt; 
&gt; Before the call to child-&gt;textUnderElement(), and considering the accessibility/heading-level.html test as our scenario, a hypothetical call to child-&gt;nextSibling() might return 0x0, which is fine, suggesting that there no more children after that one. However, if we call again child-&gt;nextSibling() after the call to textUnderElement(), we get a beautiful segfault error, which is the crashing we are seeing in the bots.
&gt; 
&gt; After some investigation, I found that the reason for that seems to be that in r155378 a forced call to update the layout has been added to the constructor of the TextIterator, which is used in AccessibilityRenderObject::textUnderElement() for text objects. And while that addition seems to be correct according to the comments in bug 120891, it&apos;s also causing that in certain scenarios (like the one detected with this test) we have the accessibility tree being altered between iterations of that for loop, causing that the &apos;child&apos; pointer that we have at the beginning of the iteration is no longer valid, thus leading to the crash.
&gt; 

Are we able to force the layout update before we start building the string? hopefully then calls within the textUnderElement() won&apos;t do anything because it will already be updated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930656</commentid>
    <comment_count>3</comment_count>
      <attachid>212000</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-18 09:47:59 -0700</bug_when>
    <thetext>Created attachment 212000
Patch proposal plus new Layout test

(In reply to comment #2)
&gt; [...]
&gt; Are we able to force the layout update before we start building the string? hopefully then calls within the textUnderElement() won&apos;t do anything because it will already be updated

Yes, that&apos;s exactly the idea behind the patch I&apos;m attaching now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930673</commentid>
    <comment_count>4</comment_count>
      <attachid>212000</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-09-18 10:36:18 -0700</bug_when>
    <thetext>Comment on attachment 212000
Patch proposal plus new Layout test

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

&gt; LayoutTests/accessibility/heading-crash-after-hidden.html:24
&gt; +    axHeading.helpText

you should use semicolons at end of lines

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1593
&gt; +    Document* document = this-&gt;document();

I think we can cut this comment down to something like
&quot;Update the document&apos;s layout now, so that if a TextIterator updates, it won&apos;t invalidate our accessibility elements while iterating children&quot;

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1596
&gt; +    document-&gt;updateLayout();

we have a method already, we should probably use this one

void AccessibilityObject::updateBackingStore()
{
    // Updating the layout may delete this object.
    if (Document* document = this-&gt;document())
        document-&gt;updateLayoutIgnorePendingStylesheets();
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930895</commentid>
    <comment_count>5</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-19 04:07:43 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; [...]
&gt; &gt; LayoutTests/accessibility/heading-crash-after-hidden.html:24
&gt; &gt; +    axHeading.helpText
&gt; 
&gt; you should use semicolons at end of lines

Oops! Ok.

&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1593
&gt; &gt; +    Document* document = this-&gt;document();
&gt; 
&gt; I think we can cut this comment down to something like
&gt; &quot;Update the document&apos;s layout now, so that if a TextIterator updates, it 
&gt; won&apos;t invalidate our accessibility elements while iterating children&quot;

Agreed. I was definitely too verbose with my previous comment.

&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1596
&gt; &gt; +    document-&gt;updateLayout();
&gt; 
&gt; we have a method already, we should probably use this one
&gt; 
&gt; void AccessibilityObject::updateBackingStore()
&gt; {
&gt;     // Updating the layout may delete this object.
&gt;     if (Document* document = this-&gt;document())
&gt;         document-&gt;updateLayoutIgnorePendingStylesheets();
&gt; }

I think you are right here too. However, this unveiled an issue in my previous patch, which is why I&apos;m removing the flags for now and working on a new one:

In order to be able to use this non-const method, we would need to make textUnderElement() a non-cost function too, and chain that modification up in the callers of textUnderElement() until we are sure that any method from AccessibilityObject that might use this is declared as non-const too (e.g. title(), stringValue()...). 

Otherwise we will be hitting a build error due to trying to pass a const pointer to the non-cost method updateBackingStore().

This is a pity IMHO, and not very clear to people reading the accessibility object API, since we would be declaring methods like title() or stringValue() as non-const just because they might end up calling textUnderElement() for some cases, when those methods in principle should not modify the state.

However, this is a situation that was already there since bug 120891 got fixed, as now any time that a TextIterator is used will cause a call to updateLayout(), which will potentially modify the accessibility hierarchy, hence causing that these methods can&apos;t be declared as non-cost.

This means that the issue was already there, it was just not obvious. So, I guess the best way to move forward is to be more honest and declare as non-const all this methods that can potentially modify the a11y tree and then we will be able to finish this simple patch here by just calling updateBackingStore(), as you suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930898</commentid>
    <comment_count>6</comment_count>
      <attachid>212000</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-19 04:18:21 -0700</bug_when>
    <thetext>Comment on attachment 212000
Patch proposal plus new Layout test

(In reply to comment #5)
&gt; [...]
&gt; This means that the issue was already there, it was just not 
&gt; obvious. So, I guess the best way to move forward is to be
&gt; more honest and declare as non-const all this methods that
&gt; can potentially modify the a11y tree and then we will be
&gt; able to finish this simple patch here by just calling
&gt; updateBackingStore(), as you suggested.

I filed a new bug for dealing with that issue in bug 121602.

Now setting cq- so we make sure nobody lands this patch in the meantime, as it&apos;s wrong anyway since I should have realized that I should have made textUnderElement() a non-const method after adding the call to updateLayout() there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931361</commentid>
    <comment_count>7</comment_count>
      <attachid>212171</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-20 08:33:55 -0700</bug_when>
    <thetext>Created attachment 212171
Patch proposal plus new Layout test

New patch based on the work done in bug 121602 (so it probably won&apos;t build due to that) and removing the call to helpText() from the layout test, since we are now in the process of cleaning up some issues we have with that in ATK based platforms (see bug 121675) and it&apos;s not needed anyway to make the point of this test.

Not setting the r? flag yet since first we need to get bug 121602 sorted out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932554</commentid>
    <comment_count>8</comment_count>
      <attachid>212171</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-24 07:49:33 -0700</bug_when>
    <thetext>Comment on attachment 212171
Patch proposal plus new Layout test

Attachment 212171 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1908489</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932555</commentid>
    <comment_count>9</comment_count>
      <attachid>212171</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-24 07:49:35 -0700</bug_when>
    <thetext>Comment on attachment 212171
Patch proposal plus new Layout test

Attachment 212171 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/2012350</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932556</commentid>
    <comment_count>10</comment_count>
      <attachid>212171</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-24 07:50:08 -0700</bug_when>
    <thetext>Comment on attachment 212171
Patch proposal plus new Layout test

Attachment 212171 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/2053354</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932557</commentid>
    <comment_count>11</comment_count>
      <attachid>212171</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-24 07:51:25 -0700</bug_when>
    <thetext>Comment on attachment 212171
Patch proposal plus new Layout test

Attachment 212171 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/2053355</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932560</commentid>
    <comment_count>12</comment_count>
      <attachid>212171</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-09-24 08:10:25 -0700</bug_when>
    <thetext>Comment on attachment 212171
Patch proposal plus new Layout test

Attachment 212171 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/2092314</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932561</commentid>
    <comment_count>13</comment_count>
      <attachid>212171</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-24 08:10:30 -0700</bug_when>
    <thetext>Comment on attachment 212171
Patch proposal plus new Layout test

Attachment 212171 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1960263</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932566</commentid>
    <comment_count>14</comment_count>
      <attachid>212171</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-24 08:22:47 -0700</bug_when>
    <thetext>Comment on attachment 212171
Patch proposal plus new Layout test

Attachment 212171 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1864694</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932590</commentid>
    <comment_count>15</comment_count>
      <attachid>212171</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-24 09:12:14 -0700</bug_when>
    <thetext>Comment on attachment 212171
Patch proposal plus new Layout test

Attachment 212171 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/1960277</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932965</commentid>
    <comment_count>16</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-25 06:24:20 -0700</bug_when>
    <thetext>*** Bug 98360 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932980</commentid>
    <comment_count>17</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-25 06:55:30 -0700</bug_when>
    <thetext>As commented in bug 121602 (see [1]), it seems that a better way to proceed  is to ensure from the ATK wrapper that the render tree (and thus the a11y tree too) is not in an outdated state before proceeding to use the WebCore&apos;s accessibility API, by calling AccessibilityObject::updateBackingStore() in the entry points and then checking whether the ATK wrapper is detached or not to decide whether to go ahead or not.

So, this bug is no longer just about trying to avoid a crash after hiding a heading, but about fixing an important issue present in the ATK layer, which can potentially mean more issues than just that one.

Because of that, I&apos;m now renaming this bug to reflect the reality better, and will be attaching a patch for review soon, which will probably fix more issues than just that crash.

[1] https://bugs.webkit.org/show_bug.cgi?id=121602#c4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932981</commentid>
    <comment_count>18</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-25 06:56:27 -0700</bug_when>
    <thetext>Adding Krzysztof to CC, as he might be interested in knowing about this as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933016</commentid>
    <comment_count>19</comment_count>
      <attachid>212582</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-25 08:26:32 -0700</bug_when>
    <thetext>Created attachment 212582
Patch proposal plus new Layout test

Attaching a new patch for review now. As it&apos;s explained in the ChangeLog, it not only adds the new test to check that we no longer get that crash, but also helps us to pass a new one and get other two to print the right results (which were overlooked before, because of a wrong expectations file).

About the code, it&apos;s all changes in the ATK code with the exception of two asserts I added in AccessibilityNodeObject::textUnderElement(). Please Chris double check that&apos;s right also for the Mac:

    [...]
    // The render tree should be stable before going ahead. Otherwise, further uses of the
    // TextIterator will force a layout update, potentially altering the accessibility tree
    // and leading to crashes in the loop that computes the result text from the children.
    ASSERT(!document()-&gt;renderView()-&gt;layoutState());
    ASSERT(!document()-&gt;childNeedsStyleRecalc());
    [...]

It definitely works fine for GTK after the changes done here, but I&apos;m not that sure about the mac. Also, besides your suggestion of asserting !document()-&gt;renderView()-&gt;layoutState(), I added the other one to make sure not only that an update is not currently in progress, but also that the render tree is not in the state of needing a new layout update, since that would be triggered when using the TextIterator.

Last, after some considerations, I think asserting here only should be enough, but feel free to point other places where you think it might be useful too (did not want to clutter all the code if not strictly needed).

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933112</commentid>
    <comment_count>20</comment_count>
      <attachid>212582</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-09-25 11:16:37 -0700</bug_when>
    <thetext>Comment on attachment 212582
Patch proposal plus new Layout test

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

&gt; Source/WebCore/accessibility/atk/WebKitAccessibleUtil.h:38
&gt; +#define returnIfObjectIsInvalid(webkitAccessible) G_STMT_START { \

I would just name this (webkitAccessible) &quot;object&quot;, since the name of the macro is &quot;returnIfObjectIs...&quot;

&gt; Source/WebCore/accessibility/atk/WebKitAccessibleUtil.h:44
&gt; +            g_log(G_LOG_DOMAIN, \

do you think you need to log this event? it doesn&apos;t happen often, but it does seem like a valid use case to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933450</commentid>
    <comment_count>21</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-26 05:20:28 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 212582 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=212582&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/atk/WebKitAccessibleUtil.h:38
&gt; &gt; +#define returnIfObjectIsInvalid(webkitAccessible) G_STMT_START { \
&gt; 
Ok. Another option would be to rename the method to returnIfAccessibleIsInvalid, or even returnIfWebKitAccessibleIsInvalid, but I guess just changing the parameter name should be enough.

&gt; &gt; Source/WebCore/accessibility/atk/WebKitAccessibleUtil.h:44
&gt; &gt; +            g_log(G_LOG_DOMAIN, \
&gt; 
&gt; do you think you need to log this event? it doesn&apos;t happen often, but it does seem like a valid use case to me.

I think you are right here too. I took this idea from g_return_if_fail(), where they do log events, but it&apos;s right that this case does not have to be an error per-se, so logging does not add any value (if it makes sense at all)

I&apos;ll change those now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933453</commentid>
    <comment_count>22</comment_count>
      <attachid>212695</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-26 05:51:59 -0700</bug_when>
    <thetext>Created attachment 212695
Patch proposal

Attaching new patch addressing the issues pointed out by Chris.

(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; (From update of attachment 212582 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=212582&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/atk/WebKitAccessibleUtil.h:38
&gt; &gt; &gt; +#define returnIfObjectIsInvalid(webkitAccessible) G_STMT_START { \
&gt; &gt; 
&gt; Ok. Another option would be to rename the method to returnIfAccessibleIsInvalid, or even returnIfWebKitAccessibleIsInvalid, but I guess just changing the parameter name should be enough.

Actually I think I really prefer returnIfWebKitAccessibleIsInvalid() since that way is clear that a WebKitAccessible (subclass of AtkObject) is expected. I changed that in this new patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933466</commentid>
    <comment_count>23</comment_count>
      <attachid>212695</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-26 06:23:49 -0700</bug_when>
    <thetext>Comment on attachment 212695
Patch proposal

Attachment 212695 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/2195306</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933877</commentid>
    <comment_count>24</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-27 02:43:12 -0700</bug_when>
    <thetext>Committed r156532: &lt;http://trac.webkit.org/changeset/156532&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933977</commentid>
    <comment_count>25</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-27 09:53:31 -0700</bug_when>
    <thetext>*** Bug 111992 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212000</attachid>
            <date>2013-09-18 09:47:59 -0700</date>
            <delta_ts>2013-09-20 08:33:55 -0700</delta_ts>
            <desc>Patch proposal plus new Layout test</desc>
            <filename>0001-2013-09-18-Mario-Sanchez-Prada-mario.prada-samsung.c.patch</filename>
            <type>text/plain</type>
            <size>6749</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBhZjNjOTdlNTA1ZTVhMjk1NzQ4MmVkYWJiNjcyY2U1YTdhMzc4ZjZlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtYXJpby5wcmFkYUBzYW1z
dW5nLmNvbT4KRGF0ZTogV2VkLCAxOCBTZXAgMjAxMyAxNjo1MjowOSArMDEwMApTdWJqZWN0OiBb
UEFUQ0hdIDIwMTMtMDktMTggIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtYXJpby5wcmFkYUBzYW1z
dW5nLmNvbT4KCiAgICAgICAgQVg6IENyYXNoIHdoZW4gdHJ5aW5nIHRvIHJldHJpZXZlIHRleHR1
YWwgaW5mb3JtYXRpb24gZm9yIGEgaGVhZGluZyBhZnRlciBoaWRpbmcgaXQKICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNTU4CgogICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBGb3JjZSBhIGxheW91dCBiZWZvcmUgYnVp
bGRpbmcgdGhlIHRleHQgdW5kZXIgYW4gZWxlbWVudCBieQogICAgICAgIGl0ZXJhdGluZyBvdmVy
IGFsbCBpdHMgY2hpbGRyZW4sIHRvIGF2b2lkIHBvdGVudGlhbCBpc3N1ZXMgdXNpbmcKICAgICAg
ICB0aGUgVGV4dEl0ZXJhdG9yIGZvciB0ZXh0IG9iamVjdHMuCgogICAgICAgIFRlc3Q6IGFjY2Vz
c2liaWxpdHkvaGVhZGluZy1jcmFzaC1hZnRlci1oaWRkZW4uaHRtbAoKICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgogICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCk6IEZvcmNlIGEgY2FsbAog
ICAgICAgIHRvIHVwZGF0ZUxheW91dCgpIHJpZ2h0IGJlZm9yZSBpdGVyYXRpbmcgdGhyb3VnaCB0
aGUgY2hpbGRyZW4uCgoyMDEzLTA5LTE4ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bWFyaW8ucHJh
ZGFAc2Ftc3VuZy5jb20+CgogICAgICAgIEFYOiBDcmFzaCB3aGVuIHRyeWluZyB0byByZXRyaWV2
ZSB0ZXh0dWFsIGluZm9ybWF0aW9uIGZvciBhIGhlYWRpbmcgYWZ0ZXIgaGlkaW5nIGl0CiAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTU1OAoKICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgQWRkZWQgbmV3IHRlc3RzLgoK
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaGVhZGluZy1jcmFzaC1hZnRlci1oaWRkZW4tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaGVhZGluZy1jcmFzaC1hZnRl
ci1oaWRkZW4uaHRtbDogQWRkZWQuCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsrKysrKysrCiAuLi4vaGVhZGluZy1jcmFzaC1h
ZnRlci1oaWRkZW4tZXhwZWN0ZWQudHh0ICAgICAgICB8ICAgMTEgKysrKysrKysKIC4uLi9hY2Nl
c3NpYmlsaXR5L2hlYWRpbmctY3Jhc2gtYWZ0ZXItaGlkZGVuLmh0bWwgIHwgICAyOSArKysrKysr
KysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDE3ICsrKysrKysrKysrKwogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuY3BwICAgICAgfCAgIDE1ICsrKysrKysrKysKIDUgZmlsZXMgY2hhbmdl
ZCwgODQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvaGVhZGluZy1jcmFzaC1hZnRlci1oaWRkZW4tZXhwZWN0ZWQudHh0CiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFmdGVy
LWhpZGRlbi5odG1sCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUwYmM1ZDUuLjUwNzlhYWQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMy0wOS0xOCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1hcmlvLnByYWRhQHNhbXN1
bmcuY29tPgorCisgICAgICAgIEFYOiBDcmFzaCB3aGVuIHRyeWluZyB0byByZXRyaWV2ZSB0ZXh0
dWFsIGluZm9ybWF0aW9uIGZvciBhIGhlYWRpbmcgYWZ0ZXIgaGlkaW5nIGl0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE1NTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBuZXcgdGVzdHMuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2hlYWRpbmctY3Jhc2gtYWZ0ZXItaGlkZGVuLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFm
dGVyLWhpZGRlbi5odG1sOiBBZGRlZC4KKwogMjAxMy0wOS0xNyAgR2Fib3IgQWJyYWhhbSAgPGFi
cmhtQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5n
LiBTa2lwIGFuZCByZWJhc2UgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2hlYWRpbmctY3Jhc2gtYWZ0ZXItaGlkZGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvaGVhZGluZy1jcmFzaC1hZnRlci1oaWRkZW4tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YjQzNGYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2hlYWRpbmctY3Jhc2gtYWZ0ZXItaGlk
ZGVuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUaGlzIHRlc3RzIHRoYXQgd2UgZG9u
J3QgZ2V0IGEgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gcmV0cmlldmUgdGV4dHVhbCBpbmZvcm1hdGlv
biBmb3IgYSBoZWFkaW5nIGFmdGVyIGhpZGluZyBpdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK0FYVGl0bGU6IFgKK0FYUm9sZTogQVhIZWFkaW5nCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRlbi5odG1sIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRlbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZjY0MDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2hlYWRpbmctY3Jhc2gtYWZ0ZXItaGlkZGVuLmh0
bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisKKzxoMSBp
ZD0iaGVhZGluZyI+WDwvaDE+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
IHsKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHdlIGRvbid0IGdldCBhIGNyYXNo
IHdoZW4gdHJ5aW5nIHRvIHJldHJpZXZlIHRleHR1YWwgaW5mb3JtYXRpb24gZm9yIGEgaGVhZGlu
ZyBhZnRlciBoaWRpbmcgaXQuIikKKyAgICB2YXIgaGVhZGluZyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJoZWFkaW5nIik7CisgICAgdmFyIGF4SGVhZGluZyA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLnJvb3RFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCk7CisgICAg
ZGVidWcoYXhIZWFkaW5nLnRpdGxlKTsKKyAgICBkZWJ1ZyhheEhlYWRpbmcucm9sZSk7CisKKyAg
ICAvLyBIaWRlIHRoZSBoZWFkaW5nIG5vdy4KKyAgICBoZWFkaW5nLnN0eWxlLmRpc3BsYXkgPSAn
bm9uZSc7CisKKyAgICAvLyBGb3JjaW5nIGEgcmV0cmlldmFsIG9mIHRleHQgYXNzb2NpYXRlZCB0
byB0aGUgb2JqZWN0CisgICAgLy8gc2hvdWxkIG5vdCBjcmFzaCBhZnRlciBoaWRpbmcgdGhlIGhl
YWRpbmcuCisgICAgYXhIZWFkaW5nLnRpdGxlCisgICAgYXhIZWFkaW5nLmRlc2NyaXB0aW9uCisg
ICAgYXhIZWFkaW5nLmhlbHBUZXh0Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFlNmU1Mi4uNTQ0MTQ5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA5LTE4ICBNYXJpbyBTYW5jaGV6IFByYWRh
ICA8bWFyaW8ucHJhZGFAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgQVg6IENyYXNoIHdoZW4gdHJ5
aW5nIHRvIHJldHJpZXZlIHRleHR1YWwgaW5mb3JtYXRpb24gZm9yIGEgaGVhZGluZyBhZnRlciBo
aWRpbmcgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMTU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZvcmNlIGEgbGF5b3V0IGJlZm9yZSBidWlsZGluZyB0aGUgdGV4dCB1bmRlciBhbiBlbGVtZW50
IGJ5CisgICAgICAgIGl0ZXJhdGluZyBvdmVyIGFsbCBpdHMgY2hpbGRyZW4sIHRvIGF2b2lkIHBv
dGVudGlhbCBpc3N1ZXMgdXNpbmcKKyAgICAgICAgdGhlIFRleHRJdGVyYXRvciBmb3IgdGV4dCBv
YmplY3RzLgorCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvaGVhZGluZy1jcmFzaC1hZnRl
ci1oaWRkZW4uaHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
dGV4dFVuZGVyRWxlbWVudCk6IEZvcmNlIGEgY2FsbAorICAgICAgICB0byB1cGRhdGVMYXlvdXQo
KSByaWdodCBiZWZvcmUgaXRlcmF0aW5nIHRocm91Z2ggdGhlIGNoaWxkcmVuLgorCiAyMDEzLTA5
LTE3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgUmVu
ZGVyT2JqZWN0IGJpdCBmb3IgaXNCUigpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCBiODE5ZmFkLi5l
NWZmZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtMTU4MCw2ICsxNTgwLDIxIEBAIFN0cmluZyBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4
dFVuZGVyRWxlbWVudE1vCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNUZXh0Tm9kZSgpKQogICAg
ICAgICByZXR1cm4gdG9UZXh0KG5vZGUpLT53aG9sZVRleHQoKTsKIAorICAgIC8vIERvIG5vdCBj
b250aW51ZSBpZiB0aGVyZSdzIG5vdGhpbmcgdG8gZG8uCisgICAgaWYgKCFmaXJzdENoaWxkKCkp
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIC8vIFRoZSBsb29wIGJlbG93IG1pZ2h0
IHJlc3VsdCBpbiB1c2luZyB0aGUgVGV4dEl0ZXJhdG9yIGZvciBzb21lIGNhc2VzIChlLmcuIHRl
eHQgb2JqZWN0cyksCisgICAgLy8gd2hpY2ggd2lsbCBjYWxsIHRvIHVwZGF0ZUxheW91dElnbm9y
ZVBlbmRpbmdTdHlsZXNoZWV0cygpIGluIHRoZSBjb25zdHJ1Y3RvciBhZnRlciByMTU1Mzc4LAor
ICAgIC8vIHBvdGVudGlhbGx5IGNhdXNpbmcgdGhlIGFjY2Vzc2liaWxpdHkgdHJlZSB0byBjaGFu
Z2Ugb3ZlciB0aGUgY291cnNlIG9mIHRoZSBsb29wLiBBbmQgaWYgdGhhdAorICAgIC8vIGhhcHBl
bnMsIGl0IG1pZ2h0IGNhdXNlIHRoYXQgc29tZSByZWZlcmVuY2VzIGhvbGQgdG8gY2hpbGQgQWNj
ZXNzaWJpbGl0eU9iamVjdHMgYXJlIG5vIGxvbmdlcgorICAgIC8vIGNvcnJlY3QgYnkgdGhlIGVu
ZCBvZiBlYWNoIGl0ZXJhdGlvbiwgYWZ0ZXIgY2FsbGluZyB0ZXh0VW5kZXJFbGVtZW50KCkuIFRv
IHByZXZlbnQgdGhpcyBpc3N1ZSwKKyAgICAvLyBqdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZSBsYXlv
dXQgaXMgdXBkYXRlZCBiZWZvcmUgZ29pbmcgaW50byB0aGF0IGxvb3AuCisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CisgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dCgpOworCiAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hp
bGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7
CiAgICAgICAgIGlmICghc2hvdWxkVXNlQWNjZXNzaWJsaXR5T2JqZWN0SW5uZXJUZXh0KGNoaWxk
LCBtb2RlKSkKLS0gCjEuNy4xMC40Cgo=
</data>
<flag name="review"
          id="234149"
          type_id="1"
          status="+"
          setter="cfleizach"
    />
    <flag name="commit-queue"
          id="234203"
          type_id="3"
          status="-"
          setter="mario"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212171</attachid>
            <date>2013-09-20 08:33:55 -0700</date>
            <delta_ts>2013-09-25 08:26:32 -0700</delta_ts>
            <desc>Patch proposal plus new Layout test</desc>
            <filename>0002-2013-09-19-Mario-Sanchez-Prada-mario.prada-samsung.c.patch</filename>
            <type>text/plain</type>
            <size>6358</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA5NzJmMWJlMTM5YjEzNzZhNzkyM2Q2MWUwMDVjZmMxNDU3ZDViOGI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtYXJpby5wcmFkYUBzYW1z
dW5nLmNvbT4KRGF0ZTogVGh1LCAxOSBTZXAgMjAxMyAwOTo1MzoxOCArMDEwMApTdWJqZWN0OiBb
UEFUQ0ggMi80XSAyMDEzLTA5LTE5ICBNYXJpbyBTYW5jaGV6IFByYWRhIAogPG1hcmlvLnByYWRh
QHNhbXN1bmcuY29tPgoKICAgICAgICBBWDogQ3Jhc2ggd2hlbiB0cnlpbmcgdG8gcmV0cmlldmUg
dGV4dHVhbCBpbmZvcm1hdGlvbiBmb3IgYSBoZWFkaW5nIGFmdGVyIGhpZGluZyBpdAogICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE1NTgKCiAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIEZvcmNlIGEgbGF5b3V0IGJlZm9y
ZSBidWlsZGluZyB0aGUgdGV4dCB1bmRlciBhbiBlbGVtZW50IGJ5CiAgICAgICAgaXRlcmF0aW5n
IG92ZXIgYWxsIGl0cyBjaGlsZHJlbiwgdG8gYXZvaWQgcG90ZW50aWFsIGlzc3VlcyB1c2luZwog
ICAgICAgIHRoZSBUZXh0SXRlcmF0b3IgZm9yIHRleHQgb2JqZWN0cy4KCiAgICAgICAgVGVzdDog
YWNjZXNzaWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRlbi5odG1sCgogICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CiAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KTogRm9yY2UgYSBj
YWxsCiAgICAgICAgdG8gdXBkYXRlTGF5b3V0KCkgcmlnaHQgYmVmb3JlIGl0ZXJhdGluZyB0aHJv
dWdoIHRoZSBjaGlsZHJlbi4KCjIwMTMtMDktMTkgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtYXJp
by5wcmFkYUBzYW1zdW5nLmNvbT4KCiAgICAgICAgQVg6IENyYXNoIHdoZW4gdHJ5aW5nIHRvIHJl
dHJpZXZlIHRleHR1YWwgaW5mb3JtYXRpb24gZm9yIGEgaGVhZGluZyBhZnRlciBoaWRpbmcgaXQK
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNTU4Cgog
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBBZGRlZCBuZXcgdGVz
dHMuCgogICAgICAgICogYWNjZXNzaWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRlbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgogICAgICAgICogYWNjZXNzaWJpbGl0eS9oZWFkaW5nLWNyYXNo
LWFmdGVyLWhpZGRlbi5odG1sOiBBZGRlZC4KLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKysrKysrKysrCiAuLi4vaGVhZGluZy1j
cmFzaC1hZnRlci1oaWRkZW4tZXhwZWN0ZWQudHh0ICAgICAgICB8ICAgMTEgKysrKysrKysKIC4u
Li9hY2Nlc3NpYmlsaXR5L2hlYWRpbmctY3Jhc2gtYWZ0ZXItaGlkZGVuLmh0bWwgIHwgICAyOCAr
KysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDE3ICsrKysrKysrKysrKwogLi4uL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwICAgICAgfCAgICA4ICsrKysrKwogNSBmaWxlcyBjaGFu
Z2VkLCA3NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRlbi1leHBlY3RlZC50eHQKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2hlYWRpbmctY3Jhc2gtYWZ0
ZXItaGlkZGVuLmh0bWwKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2IyZjI0My4uNmFkYmY4NCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDEzLTA5LTE5ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bWFyaW8ucHJhZGFAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgQVg6IENyYXNoIHdoZW4gdHJ5aW5nIHRvIHJldHJpZXZlIHRl
eHR1YWwgaW5mb3JtYXRpb24gZm9yIGEgaGVhZGluZyBhZnRlciBoaWRpbmcgaXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTU1OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5ldyB0ZXN0cy4K
KworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaGVhZGluZy1jcmFzaC1hZnRlci1oaWRkZW4tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2hlYWRpbmctY3Jhc2gt
YWZ0ZXItaGlkZGVuLmh0bWw6IEFkZGVkLgorCiAyMDEzLTA5LTIwICBHYWJvciBBYnJhaGFtICA8
YWJyaG1AaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5p
bmcuIFJlYmFzZSBhZnRlciBRdCA1LjEuMSBhbmQgc2tpcCBmYWlsaW5nIHRlc3RzLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRl
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2hlYWRpbmctY3Jhc2gt
YWZ0ZXItaGlkZGVuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4zOGI0MzRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRlbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBA
QAorVGhpcyB0ZXN0cyB0aGF0IHdlIGRvbid0IGdldCBhIGNyYXNoIHdoZW4gdHJ5aW5nIHRvIHJl
dHJpZXZlIHRleHR1YWwgaW5mb3JtYXRpb24gZm9yIGEgaGVhZGluZyBhZnRlciBoaWRpbmcgaXQu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitBWFRpdGxlOiBYCitBWFJvbGU6IEFY
SGVhZGluZworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaGVhZGluZy1jcmFzaC1h
ZnRlci1oaWRkZW4uaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaGVhZGluZy1jcmFz
aC1hZnRlci1oaWRkZW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
MmNhMGI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9oZWFk
aW5nLWNyYXNoLWFmdGVyLWhpZGRlbi5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBI
VE1MPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorCis8aDEgaWQ9ImhlYWRpbmciPlg8L2gxPgorCis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93
LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMg
dGhhdCB3ZSBkb24ndCBnZXQgYSBjcmFzaCB3aGVuIHRyeWluZyB0byByZXRyaWV2ZSB0ZXh0dWFs
IGluZm9ybWF0aW9uIGZvciBhIGhlYWRpbmcgYWZ0ZXIgaGlkaW5nIGl0LiIpOworICAgIHZhciBo
ZWFkaW5nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhlYWRpbmciKTsKKyAgICB2YXIgYXhI
ZWFkaW5nID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQuY2hpbGRBdEluZGV4
KDApLmNoaWxkQXRJbmRleCgwKTsKKyAgICBkZWJ1ZyhheEhlYWRpbmcudGl0bGUpOworICAgIGRl
YnVnKGF4SGVhZGluZy5yb2xlKTsKKworICAgIC8vIEhpZGUgdGhlIGhlYWRpbmcgbm93LgorICAg
IGhlYWRpbmcuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKworICAgIC8vIEZvcmNpbmcgYSByZXRy
aWV2YWwgb2YgdGV4dCBhc3NvY2lhdGVkIHRvIHRoZSBvYmplY3QKKyAgICAvLyBzaG91bGQgbm90
IGNyYXNoIGFmdGVyIGhpZGluZyB0aGUgaGVhZGluZy4KKyAgICBheEhlYWRpbmcudGl0bGU7Cisg
ICAgYXhIZWFkaW5nLmRlc2NyaXB0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA3YmRhZjMuLjZmNTk2MzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMiBAQAogMjAxMy0wOS0xOSAgTWFyaW8gU2FuY2hleiBQ
cmFkYSAgPG1hcmlvLnByYWRhQHNhbXN1bmcuY29tPgogCisgICAgICAgIEFYOiBDcmFzaCB3aGVu
IHRyeWluZyB0byByZXRyaWV2ZSB0ZXh0dWFsIGluZm9ybWF0aW9uIGZvciBhIGhlYWRpbmcgYWZ0
ZXIgaGlkaW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjE1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGb3JjZSBhIGxheW91dCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRleHQgdW5kZXIgYW4gZWxl
bWVudCBieQorICAgICAgICBpdGVyYXRpbmcgb3ZlciBhbGwgaXRzIGNoaWxkcmVuLCB0byBhdm9p
ZCBwb3RlbnRpYWwgaXNzdWVzIHVzaW5nCisgICAgICAgIHRoZSBUZXh0SXRlcmF0b3IgZm9yIHRl
eHQgb2JqZWN0cy4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2hlYWRpbmctY3Jhc2gt
YWZ0ZXItaGlkZGVuLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OnRleHRVbmRlckVsZW1lbnQpOiBGb3JjZSBhIGNhbGwKKyAgICAgICAgdG8gdXBkYXRlTGF5
b3V0KCkgcmlnaHQgYmVmb3JlIGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBjaGlsZHJlbi4KKworMjAx
My0wOS0xOSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1hcmlvLnByYWRhQHNhbXN1bmcuY29tPgor
CiAgICAgICAgIEFYOiBBY2Nlc3NpYmlsaXR5IG1ldGhvZHMgdXNpbmcgdGV4dFVuZGVyRWxlbWVu
dCBzaG91bGQgYmUgZGVjbGFyZWQgYXMgbm9uLWNvbnN0CiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2MDIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCAx
NThjMjllLi40NDJhY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtMTU4MCw2ICsxNTgwLDE0IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxlbWVudChBY2Nlc3Np
YmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNUZXh0Tm9k
ZSgpKQogICAgICAgICByZXR1cm4gdG9UZXh0KG5vZGUpLT53aG9sZVRleHQoKTsKIAorICAgIC8v
IERvIG5vdCBjb250aW51ZSBpZiB0aGVyZSdzIG5vdGhpbmcgdG8gZG8uCisgICAgaWYgKCFmaXJz
dENoaWxkKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIC8vIFVwZGF0ZSB0aGUg
ZG9jdW1lbnQncyBsYXlvdXQgbm93LCBzbyB0aGF0IGlmIGEgVGV4dEl0ZXJhdG9yIHVwZGF0ZXMs
IGl0CisgICAgLy8gd29uJ3QgaW52YWxpZGF0ZSBvdXIgYWNjZXNzaWJpbGl0eSBlbGVtZW50cyB3
aGlsZSBpdGVyYXRpbmcgY2hpbGRyZW4uCisgICAgdGhpcy0+dXBkYXRlQmFja2luZ1N0b3JlKCk7
CisKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJs
aW5nKCkpIHsKICAgICAgICAgaWYgKCFzaG91bGRVc2VBY2Nlc3NpYmxpdHlPYmplY3RJbm5lclRl
eHQoY2hpbGQsIG1vZGUpKQotLSAKMS43LjEwLjQKCg==
</data>
<flag name="commit-queue"
          id="234701"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212582</attachid>
            <date>2013-09-25 08:26:32 -0700</date>
            <delta_ts>2013-09-26 05:51:59 -0700</delta_ts>
            <desc>Patch proposal plus new Layout test</desc>
            <filename>0001-2013-09-25-Mario-Sanchez-Prada-mario.prada-samsung.c.patch</filename>
            <type>text/plain</type>
            <size>82164</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA1OWQxNjVjMjQ4ZmIzYWEwMGIxNzdiMTdkZWE3M2U3MjNhOWRmZWM1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtYXJpby5wcmFkYUBzYW1z
dW5nLmNvbT4KRGF0ZTogTW9uLCAyMyBTZXAgMjAxMyAxNToyMjo1MCArMDEwMApTdWJqZWN0OiBb
UEFUQ0hdIDIwMTMtMDktMjUgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtYXJpby5wcmFkYUBzYW1z
dW5nLmNvbT4KCiAgICAgICAgW0FUS10gUHJvdGVjdCBlbnRyeSBwb2ludHMgaW4gdGhlIEFUSyB3
cmFwcGVyIGFnYWluc3Qgb3V0ZGF0ZWQgcmVuZGVyIHRyZWVzCiAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTU1OAoKICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCiAgICAgICAgTWFrZSBzdXJlIHRoYXQgd2UgcHJvdGVjdCBldmVyeSBl
bnRyeSBwb2ludCBpbiB0aGUgQVRLIHdyYXBwZXIKICAgICAgICBhZ2FpbnN0IG91dGRhdGVkIHJl
bmRlciB0cmVlcywgYmVmb3JlIHVzaW5nIHRoZSBXZWJDb3JlJ3MKICAgICAgICBhY2Nlc3NpYmls
aXR5IEFQSSwgc2luY2UgdGhhdCBtaWdodCBsZWFkIHRvIHByb2JsZW1zIChhbmQgY3Jhc2hlcykK
ICAgICAgICBpZiB0aGUgcmVuZGVyIGFuZCBhY2Nlc3NpYmlsaXR5IHRyZWVzIGFyZSBub3Qgc3Rh
YmxlLgoKICAgICAgICBUaHVzLCBjYWxsIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnVwZGF0ZUJhY2tp
bmdTdG9yZSgpIGluIHRob3NlCiAgICAgICAgZW50cnkgcG9pbnRzIGFuZCBjaGVjayB3aGV0aGVy
IHRoZSBBVEsgd3JhcHBlciBpcyBkZXRhY2hlZCBvciBub3QKICAgICAgICBhZnRlciB0aGF0LCB0
byBkZWNpZGUgd2hldGhlciB0byBjb250aW51ZSBvciBub3QuCgogICAgICAgIEJlc2lkZXMgcHJv
dmlkaW5nIGEgbmV3IHRlc3QgdG8gY2hlY2sgdGhhdCBpdCBXZWJLaXQgZG9lcyBub3QKICAgICAg
ICBjcmFzaCBpbiBhIGdpdmVuIHNjZW5hcmlvICh3aGljaCBhY3R1YWxseSB0cmlnZ2VyZWQgdGhl
CiAgICAgICAgaW52ZXN0aWdhdGlvbiBoZXJlKSwgc29sdmluZyB0aGlzIHNpdHVhdGlvbiBhbHNv
IGZpeGVzIG90aGVyIHRlc3RzCiAgICAgICAgdGhhdCB3ZXJlIHByZXZpb3VzbHkgZmFpbGluZyAo
YXJpYS11c2VkLW9uLWltYWdlLW1hcHMuaHRtbCkgb3IKICAgICAgICB0aGF0IHdlcmUgcHJpbnRp
bmcgd3JvbmcgcmVzdWx0cywgbm90IGRldGVjdGVkIHVudGlsIG5vdyBkdWUgdG8KICAgICAgICB3
cm9uZyBwbGF0Zm9ybSBzcGVjaWZpYyBleHBlY3RhdGlvbnMgKGZpbGUtdXBsb2FkLWJ1dHRvbi1z
dHJpbmd2YWx1ZQogICAgICAgIGFuZCBkZWxldGluZy1pZnJhbWUtZGVzdHJveXMtYXhjYWNoZSku
CgogICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvaGVhZGluZy1jcmFzaC1hZnRlci1oaWRkZW4u
aHRtbAoKICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmg6
IEFkZGVkIHR3byBuZXcgbWFjcm9zCiAgICAgICAgdG8gaW5qZWN0IHRoZSBuZWVkZWQgY29kZSBh
dCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggZW50cnkgcG9pbnQgdG8KICAgICAgICBhbGxvdyBncmFj
ZWZ1bGx5IGV4aXQgdGhvc2UgZnVuY3Rpb25zIHdoZW4gdGhlIHJlbmRlciB0cmVlIGlzCiAgICAg
ICAgdW5zdGFibGUuIEluc3BpcmVkIGJ5IGdfcmV0dXJuX2lmX2ZhaWwgYW5kIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsLCB3ZQogICAgICAgIGNhbGxlZCB0aGVtIHJldHVybklmT2JqZWN0SXNJbnZhbGlk
IGFuZCByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZC4KCiAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcDoKICAgICAgICAod2Via2l0QWNjZXNz
aWJsZUh5cGVybGlua0FjdGlvbkRvQWN0aW9uKTogUHJvdGVjdCBlbnRyeSBwb2ludC4KICAgICAg
ICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkdldE5BY3Rpb25zKTogRGl0dG8uCiAg
ICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtBY3Rpb25HZXREZXNjcmlwdGlvbik6IERp
dHRvLgogICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rQWN0aW9uR2V0S2V5YmluZGlu
Zyk6IERpdHRvLgogICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rQWN0aW9uR2V0TmFt
ZSk6IERpdHRvLgogICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0VVJJKTogRGl0
dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRPYmplY3QpOiBEaXR0by4K
ICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldFN0YXJ0SW5kZXgpOiBEaXR0by4K
ICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KTogRGl0dG8uCiAg
ICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJc1ZhbGlkKTogRGl0dG8uCiAgICAgICAg
KHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXROQW5jaG9ycyk6IERpdHRvLgogICAgICAgICh3
ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rSXNTZWxlY3RlZExpbmspOiBEaXR0by4KICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VBY3Rpb24uY3BwOgog
ICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlQWN0aW9uRG9BY3Rpb24pOiBEaXR0by4KICAgICAgICAo
d2Via2l0QWNjZXNzaWJsZUFjdGlvbkdldE5BY3Rpb25zKTogRGl0dG8uCiAgICAgICAgKHdlYmtp
dEFjY2Vzc2libGVBY3Rpb25HZXREZXNjcmlwdGlvbik6IERpdHRvLgogICAgICAgICh3ZWJraXRB
Y2Nlc3NpYmxlQWN0aW9uR2V0S2V5YmluZGluZyk6IERpdHRvLgogICAgICAgICh3ZWJraXRBY2Nl
c3NpYmxlQWN0aW9uR2V0TmFtZSk6IERpdHRvLgogICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUNvbXBvbmVudC5jcHA6CiAgICAgICAgKHdlYmtpdEFj
Y2Vzc2libGVDb21wb25lbnRSZWZBY2Nlc3NpYmxlQXRQb2ludCk6IERpdHRvLgogICAgICAgICh3
ZWJraXRBY2Nlc3NpYmxlQ29tcG9uZW50R2V0RXh0ZW50cyk6IERpdHRvLgogICAgICAgICh3ZWJr
aXRBY2Nlc3NpYmxlQ29tcG9uZW50R3JhYkZvY3VzKTogRGl0dG8uCiAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlRG9jdW1lbnQuY3BwOgogICAgICAg
ICh3ZWJraXRBY2Nlc3NpYmxlRG9jdW1lbnRHZXRBdHRyaWJ1dGVWYWx1ZSk6IERpdHRvLgogICAg
ICAgICh3ZWJraXRBY2Nlc3NpYmxlRG9jdW1lbnRHZXRBdHRyaWJ1dGVzKTogRGl0dG8uCiAgICAg
ICAgKHdlYmtpdEFjY2Vzc2libGVEb2N1bWVudEdldExvY2FsZSk6IERpdHRvLgogICAgICAgICog
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUVkaXRhYmxlVGV4dC5j
cHA6CiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVFZGl0YWJsZVRleHRTZXRSdW5BdHRyaWJ1dGVz
KTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVFZGl0YWJsZVRleHRTZXRUZXh0Q29u
dGVudHMpOiBEaXR0by4KICAgICAgICAod2Via2l0QWNjZXNzaWJsZUVkaXRhYmxlVGV4dEluc2Vy
dFRleHQpOiBEaXR0by4KICAgICAgICAod2Via2l0QWNjZXNzaWJsZUVkaXRhYmxlVGV4dENvcHlU
ZXh0KTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVFZGl0YWJsZVRleHRDdXRUZXh0
KTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVFZGl0YWJsZVRleHREZWxldGVUZXh0
KTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVFZGl0YWJsZVRleHRQYXN0ZVRleHQp
OiBEaXR0by4KICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VIeXBlcnRleHQuY3BwOgogICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0R2V0
TGluayk6IERpdHRvLgogICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0R2V0Tkxpbmtz
KTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcnRleHRHZXRMaW5rSW5kZXgp
OiBEaXR0by4KICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VJbWFnZS5jcHA6CiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVJbWFnZUdldEltYWdlUG9z
aXRpb24pOiBEaXR0by4KICAgICAgICAod2Via2l0QWNjZXNzaWJsZUltYWdlR2V0SW1hZ2VEZXNj
cmlwdGlvbik6IERpdHRvLgogICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VHZXRJbWFnZVNp
emUpOiBEaXR0by4KICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJ
bnRlcmZhY2VTZWxlY3Rpb24uY3BwOgogICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9u
QWRkU2VsZWN0aW9uKTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25D
bGVhclNlbGVjdGlvbik6IERpdHRvLgogICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9u
UmVmU2VsZWN0aW9uKTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25H
ZXRTZWxlY3Rpb25Db3VudCk6IERpdHRvLgogICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0
aW9uSXNDaGlsZFNlbGVjdGVkKTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVTZWxl
Y3Rpb25SZW1vdmVTZWxlY3Rpb24pOiBEaXR0by4KICAgICAgICAod2Via2l0QWNjZXNzaWJsZVNl
bGVjdGlvblNlbGVjdEFsbFNlbGVjdGlvbik6IERpdHRvLgogICAgICAgICogYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcDoKICAgICAgICAod2Via2l0
QWNjZXNzaWJsZVRhYmxlUmVmQXQpOiBEaXR0by4KICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRh
YmxlR2V0SW5kZXhBdCk6IERpdHRvLgogICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRD
b2x1bW5BdEluZGV4KTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJv
d0F0SW5kZXgpOiBEaXR0by4KICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0TkNvbHVt
bnMpOiBEaXR0by4KICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0TlJvd3MpOiBEaXR0
by4KICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q29sdW1uRXh0ZW50QXQpOiBEaXR0
by4KICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Um93RXh0ZW50QXQpOiBEaXR0by4K
ICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q29sdW1uSGVhZGVyKTogRGl0dG8uCiAg
ICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0hlYWRlcik6IERpdHRvLgogICAgICAg
ICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRDYXB0aW9uKTogRGl0dG8uCiAgICAgICAgKHdlYmtp
dEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkRlc2NyaXB0aW9uKTogRGl0dG8uCiAgICAgICAgKHdl
YmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0Rlc2NyaXB0aW9uKTogRGl0dG8uCiAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6CiAgICAg
ICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dCk6IERpdHRvLgogICAgICAgICh3ZWJraXRB
Y2Nlc3NpYmxlVGV4dEdldFRleHRBZnRlck9mZnNldCk6IERpdHRvLgogICAgICAgICh3ZWJraXRB
Y2Nlc3NpYmxlVGV4dEdldFRleHRBdE9mZnNldCk6IERpdHRvLgogICAgICAgICh3ZWJraXRBY2Nl
c3NpYmxlVGV4dEdldFRleHRCZWZvcmVPZmZzZXQpOiBEaXR0by4KICAgICAgICAod2Via2l0QWNj
ZXNzaWJsZVRleHRHZXRDaGFyYWN0ZXJBdE9mZnNldCk6IERpdHRvLgogICAgICAgICh3ZWJraXRB
Y2Nlc3NpYmxlVGV4dEdldENhcmV0T2Zmc2V0KTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vz
c2libGVUZXh0R2V0UnVuQXR0cmlidXRlcyk6IERpdHRvLgogICAgICAgICh3ZWJraXRBY2Nlc3Np
YmxlVGV4dEdldERlZmF1bHRBdHRyaWJ1dGVzKTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vz
c2libGVUZXh0R2V0Q2hhcmFjdGVyRXh0ZW50cyk6IERpdHRvLgogICAgICAgICh3ZWJraXRBY2Nl
c3NpYmxlVGV4dEdldFJhbmdlRXh0ZW50cyk6IERpdHRvLgogICAgICAgICh3ZWJraXRBY2Nlc3Np
YmxlVGV4dEdldENoYXJhY3RlckNvdW50KTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2li
bGVUZXh0R2V0T2Zmc2V0QXRQb2ludCk6IERpdHRvLgogICAgICAgICh3ZWJraXRBY2Nlc3NpYmxl
VGV4dEdldE5TZWxlY3Rpb25zKTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0
R2V0U2VsZWN0aW9uKTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0QWRkU2Vs
ZWN0aW9uKTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0U2V0U2VsZWN0aW9u
KTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0UmVtb3ZlU2VsZWN0aW9uKTog
RGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0U2V0Q2FyZXRPZmZzZXQpOiBEaXR0
by4KICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VW
YWx1ZS5jcHA6CiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVWYWx1ZUdldEN1cnJlbnRWYWx1ZSk6
IERpdHRvLgogICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVmFsdWVHZXRNYXhpbXVtVmFsdWUpOiBE
aXR0by4KICAgICAgICAod2Via2l0QWNjZXNzaWJsZVZhbHVlR2V0TWluaW11bVZhbHVlKTogRGl0
dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVWYWx1ZVNldEN1cnJlbnRWYWx1ZSk6IERpdHRv
LgogICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVmFsdWVHZXRNaW5pbXVtSW5jcmVtZW50KTogRGl0
dG8uCiAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0
ay5jcHA6CiAgICAgICAgKGNvcmUpOiBSZW1vdmVkLCBhcyBpdCdzIG5vdCBhY3R1YWxseSBuZWVk
ZWQuCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXROYW1lKTogIFByb3RlY3QgZW50cnkgcG9p
bnQuCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXREZXNjcmlwdGlvbik6IERpdHRvLgogICAg
ICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0UGFyZW50KTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFj
Y2Vzc2libGVHZXROQ2hpbGRyZW4pOiBEaXR0by4KICAgICAgICAod2Via2l0QWNjZXNzaWJsZVJl
ZkNoaWxkKTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXRJbmRleEluUGFyZW50
KTogRGl0dG8uCiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXRBdHRyaWJ1dGVzKTogRGl0dG8u
CiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXRSb2xlKTogRGl0dG8uCiAgICAgICAgKHdlYmtp
dEFjY2Vzc2libGVSZWZTdGF0ZVNldCk6IERpdHRvLgogICAgICAgICh3ZWJraXRBY2Nlc3NpYmxl
UmVmUmVsYXRpb25TZXQpOiBEaXR0by4KICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldE9iamVj
dExvY2FsZSk6IERpdHRvLgogICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlRGV0YWNoKTogRGl0dG8u
CiAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVJc0RldGFjaGVkKTogTmV3IGhlbHBlciBmdW5jdGlv
biwgdG8gYmUgdXNlZCBmcm9tCiAgICAgICAgdGhlIG5ld2x5IGFkZGVkIG1hY3Jvcy4gV2UgbmVl
ZCB0byBjaGVjayB3aGV0aGVyIHRoZSB3cmFwcGVyIGlzCiAgICAgICAgZGV0YWNoZWQgYW5kIG5v
dCBqdXN0IHRoZSB3cmFwcGVyIEFjY2Vzc2liaWxpdHlPYmplY3Qgc2luY2Ugb25jZQogICAgICAg
IHRoZSBkZXRhY2htZW50IGhhcHBlbnMgd2UgY2FuJ3QgdHJ1c3QgYW55dGhpbmcgYnV0IHRoZSBB
dGtPYmplY3QKICAgICAgICBmcm9tIHRoZSB3cmFwcGVyICh0aGUgQWNjZXNzaWJpbGl0eU9iamVj
dCBtaWdodCBiZSBpbnZhbGlkKS4KICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVXcmFwcGVyQXRrLmg6CgogICAgICAgIEFzc2VydCB0aGF0IHRoZSByZW5kZXIgdHJl
ZSBpcyBuZWl0aGVyIGJlaW5nIHVwZGF0ZWQgbm9yIGluIG5lZWQKICAgICAgICBvZiBiZWluZyB1
cGRhdGVkIGJlZm9yZSB0cnlpbmcgdG8gY29tcHV0ZSB0aGUgdGV4dCB1bmRlciBhIGdpdmVuCiAg
ICAgICAgZWxlbWVudCwgc2luY2UgdGhhdCBtaWdodCBsZWFkIHRvIGNyYXNoZXMgZHVlIHRvIHRo
ZSBjb25zdHJ1Y3RvcgogICAgICAgIG9mIFRleHRJdGVyYXRvciBjYWxsaW5nIHVwZGF0ZUxheW91
dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpLgoKICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgogICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCk6IEFzc2VydCB0aGF0CiAgICAgICAgdGhlIHJl
bmRlciB0cmVlIGlzIG5laXRoZXIgYmVpbmcgdXBkYXRlZCBub3IgbmVlZGluZyB1cGRhdGluZy4K
CjIwMTMtMDktMjUgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtYXJpby5wcmFkYUBzYW1zdW5nLmNv
bT4KCiAgICAgICAgW0FUS10gUHJvdGVjdCBlbnRyeSBwb2ludHMgaW4gdGhlIEFUSyB3cmFwcGVy
IGFnYWluc3Qgb3V0ZGF0ZWQgcmVuZGVyIHRyZWVzCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTU1OAoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KCiAgICAgICAgQWRkZWQgYSBuZXcgdGVzdCB0byBjaGVjayB0aGF0IHdlIGRvIG5v
dCBjcmFzaCBpbiBjZXJ0YWluCiAgICAgICAgc2NlbmFyaW9zIHdoZW4gaGlkaW5nIG9iamVjdHMg
YW5kIHJldHJpdmluZyBhY2Nlc3NpYmlsaXR5CiAgICAgICAgaW5mb3JtYXRpb24gYWJvdXQgaXQu
CgogICAgICAgICogYWNjZXNzaWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRlbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgogICAgICAgICogYWNjZXNzaWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFm
dGVyLWhpZGRlbi5odG1sOiBBZGRlZC4KCiAgICAgICAgUmViYXNlbGluZWQgZXhwZWN0YXRpb25z
IHRoYXQgd2VyZSB3cm9uZyBiZWZvcmUsIHNpbmNlIHRoZXkgd2VyZQogICAgICAgIG5vdCByZXR1
cm5pbmcgdGhlIGFjdHVhbCB2YWx1ZSB0aGF0IHRoZXkgc2hvdWxkIGJlIHJldHVybmluZyB3aGVu
CiAgICAgICAgY2FsbGVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkuCgog
ICAgICAgICogcGxhdGZvcm0vZWZsLXdrMS9hY2Nlc3NpYmlsaXR5L2ZpbGUtdXBsb2FkLWJ1dHRv
bi1zdHJpbmd2YWx1ZS1leHBlY3RlZC50eHQ6CiAgICAgICAgVXBkYXRlZCwgc2luY2UgdGhlIGFj
dHVhbCB0ZXh0IGJlaW5nIHJldHVybmVkIHNob3VsZCBiZSB0aGUgYWN0dWFsCiAgICAgICAgdmFs
dWUgb2YgdGhlIGZpbGUgY2hvb3NlciAoZS5nLiAiKE5vbmUpIikgYW5kIG5vdCB0aGUgdGV4dCBp
biB0aGUKICAgICAgICB1cGxvYWQgYm90dG9uIChlLmcuICJDaG9vc2UgZmlsZXMiKS4KICAgICAg
ICAqIHBsYXRmb3JtL2VmbC13azIvYWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1idXR0b24tc3Ry
aW5ndmFsdWUtZXhwZWN0ZWQudHh0OiBEaXR0by4KICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIv
YWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1idXR0b24tc3RyaW5ndmFsdWUtZXhwZWN0ZWQudHh0
OiBEaXR0by4uCiAgICAgICAgKiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9maWxlLXVwbG9h
ZC1idXR0b24tc3RyaW5ndmFsdWUtZXhwZWN0ZWQudHh0OiBEaXR0by4KCiAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9kZWxldGluZy1pZnJhbWUtZGVzdHJveXMtYXhjYWNoZS1l
eHBlY3RlZC50eHQ6CiAgICAgICAgVXBkYXRlZCwgc2luY2UgdGhlIGlmcmFtZSBzaG91bGQgYmUg
ZXhwb3NlZCBhdCBhbGwgYWZ0ZXIgZGVsZXRpbmcgaXQuCgogICAgICAgIFJlbW92ZWQgYWNjZXNp
YmlsaXR5IHRlc3Qgbm93IHBhc3NpbmcgYWZ0ZXIgZml4aW5nIHRoaXMgaXNzdWUuCgogICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6IFJlbW92ZWQgYWNjZXNzaWJpbGl0eS9h
cmlhLXVzZWQtb24taW1hZ2UtbWFwcy5odG1sLgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMyArKysrKwogLi4uL2hlYWRpbmctY3Jh
c2gtYWZ0ZXItaGlkZGVuLWV4cGVjdGVkLnR4dCAgICAgICAgfCAgIDExICsrCiAuLi4vYWNjZXNz
aWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRlbi5odG1sICB8ICAgMjggKysrKwogLi4u
L2ZpbGUtdXBsb2FkLWJ1dHRvbi1zdHJpbmd2YWx1ZS1leHBlY3RlZC50eHQgICAgfCAgICA0ICst
CiAuLi4vZmlsZS11cGxvYWQtYnV0dG9uLXN0cmluZ3ZhbHVlLWV4cGVjdGVkLnR4dCAgICB8ICAg
MTIgKy0KIC4uLi9maWxlLXVwbG9hZC1idXR0b24tc3RyaW5ndmFsdWUtZXhwZWN0ZWQudHh0ICAg
IHwgICAxMiArLQogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgICAg
ICAgICAgfCAgICAxIC0KIC4uLi9kZWxldGluZy1pZnJhbWUtZGVzdHJveXMtYXhjYWNoZS1leHBl
Y3RlZC50eHQgIHwgICAgMSAtCiAuLi4vZmlsZS11cGxvYWQtYnV0dG9uLXN0cmluZ3ZhbHVlLWV4
cGVjdGVkLnR4dCAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgIDE1MiArKysrKysrKysrKysrKysrKysrKwogLi4uL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwICAgICAgfCAgICA3ICsKIC4uLi9h
dGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAgICAgICAgICAgICAgIHwgICAzMCArKyst
CiAuLi4vYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VBY3Rpb24uY3BwICAgICAgICB8ICAg
MjAgKystCiAuLi4vYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VDb21wb25lbnQuY3BwICAg
ICB8ICAgIDkgKysKIC4uLi9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZURvY3VtZW50LmNw
cCAgICAgIHwgICAgOSArKwogLi4uL2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlRWRpdGFi
bGVUZXh0LmNwcCAgfCAgIDMwICsrKy0KIC4uLi9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZUh5cGVydGV4dC5jcHAgICAgIHwgICAxMCArKwogLi4uL2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlSW1hZ2UuY3BwICAgICAgICAgfCAgICA5ICsrCiAuLi4vYXRrL1dlYktpdEFjY2Vzc2li
bGVJbnRlcmZhY2VTZWxlY3Rpb24uY3BwICAgICB8ICAgMjYgKysrLQogLi4uL2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwICAgICAgICAgfCAgIDQwICsrKysrKwogLi4uL2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgICAgICAgICAgfCAgIDU5ICsrKysr
KystCiAuLi4vYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VWYWx1ZS5jcHAgICAgICAgICB8
ICAgMTggKystCiAuLi4vYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuaCAg
ICAgICB8ICAgMzIgKysrKysKIC4uLi9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3Bw
ICAgICAgICAgICAgIHwgICA2MyArKysrKystLQogLi4uL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVXcmFwcGVyQXRrLmggfCAgICAyICsKIDI1IGZpbGVzIGNoYW5nZWQsIDU3NCBp
bnNlcnRpb25zKCspLCA0OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2hlYWRpbmctY3Jhc2gtYWZ0ZXItaGlkZGVuLWV4cGVjdGVkLnR4
dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaGVhZGluZy1j
cmFzaC1hZnRlci1oaWRkZW4uaHRtbAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2NGI1OTJjLi5iZjBiMjUxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTMtMDktMjUgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtYXJpby5w
cmFkYUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbQVRLXSBQcm90ZWN0IGVudHJ5IHBvaW50cyBp
biB0aGUgQVRLIHdyYXBwZXIgYWdhaW5zdCBvdXRkYXRlZCByZW5kZXIgdHJlZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTU1OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHRlc3Qg
dG8gY2hlY2sgdGhhdCB3ZSBkbyBub3QgY3Jhc2ggaW4gY2VydGFpbgorICAgICAgICBzY2VuYXJp
b3Mgd2hlbiBoaWRpbmcgb2JqZWN0cyBhbmQgcmV0cml2aW5nIGFjY2Vzc2liaWxpdHkKKyAgICAg
ICAgaW5mb3JtYXRpb24gYWJvdXQgaXQuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2hlYWRp
bmctY3Jhc2gtYWZ0ZXItaGlkZGVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRlbi5odG1sOiBBZGRlZC4KKworICAg
ICAgICBSZWJhc2VsaW5lZCBleHBlY3RhdGlvbnMgdGhhdCB3ZXJlIHdyb25nIGJlZm9yZSwgc2lu
Y2UgdGhleSB3ZXJlCisgICAgICAgIG5vdCByZXR1cm5pbmcgdGhlIGFjdHVhbCB2YWx1ZSB0aGF0
IHRoZXkgc2hvdWxkIGJlIHJldHVybmluZyB3aGVuCisgICAgICAgIGNhbGxlZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSgpLgorCisgICAgICAgICogcGxhdGZvcm0vZWZsLXdr
MS9hY2Nlc3NpYmlsaXR5L2ZpbGUtdXBsb2FkLWJ1dHRvbi1zdHJpbmd2YWx1ZS1leHBlY3RlZC50
eHQ6CisgICAgICAgIFVwZGF0ZWQsIHNpbmNlIHRoZSBhY3R1YWwgdGV4dCBiZWluZyByZXR1cm5l
ZCBzaG91bGQgYmUgdGhlIGFjdHVhbAorICAgICAgICB2YWx1ZSBvZiB0aGUgZmlsZSBjaG9vc2Vy
IChlLmcuICIoTm9uZSkiKSBhbmQgbm90IHRoZSB0ZXh0IGluIHRoZQorICAgICAgICB1cGxvYWQg
Ym90dG9uIChlLmcuICJDaG9vc2UgZmlsZXMiKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwtd2sy
L2FjY2Vzc2liaWxpdHkvZmlsZS11cGxvYWQtYnV0dG9uLXN0cmluZ3ZhbHVlLWV4cGVjdGVkLnR4
dDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9hY2Nlc3NpYmlsaXR5L2ZpbGUt
dXBsb2FkLWJ1dHRvbi1zdHJpbmd2YWx1ZS1leHBlY3RlZC50eHQ6IERpdHRvLi4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1idXR0b24tc3RyaW5ndmFs
dWUtZXhwZWN0ZWQudHh0OiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9hY2Nlc3Np
YmlsaXR5L2RlbGV0aW5nLWlmcmFtZS1kZXN0cm95cy1heGNhY2hlLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgVXBkYXRlZCwgc2luY2UgdGhlIGlmcmFtZSBzaG91bGQgYmUgZXhwb3NlZCBhdCBhbGwg
YWZ0ZXIgZGVsZXRpbmcgaXQuCisKKyAgICAgICAgUmVtb3ZlZCBhY2Nlc2liaWxpdHkgdGVzdCBu
b3cgcGFzc2luZyBhZnRlciBmaXhpbmcgdGhpcyBpc3N1ZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zOiBSZW1vdmVkIGFjY2Vzc2liaWxpdHkvYXJpYS11c2VkLW9u
LWltYWdlLW1hcHMuaHRtbC4KKwogMjAxMy0wOS0yNSAgU2FuZ2h5dXAgTGVlICA8c2g1My5sZWVA
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuIFVuc2tp
cCBwYXNzaW5nIGZhc3QvdGV4dC9mb250LWtlcm5pbmcuaHRtbCAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvaGVhZGluZy1jcmFzaC1hZnRlci1oaWRkZW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRl
bi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhiNDM0
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaGVhZGluZy1j
cmFzaC1hZnRlci1oaWRkZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVz
dHMgdGhhdCB3ZSBkb24ndCBnZXQgYSBjcmFzaCB3aGVuIHRyeWluZyB0byByZXRyaWV2ZSB0ZXh0
dWFsIGluZm9ybWF0aW9uIGZvciBhIGhlYWRpbmcgYWZ0ZXIgaGlkaW5nIGl0LgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworQVhUaXRsZTogWAorQVhSb2xlOiBBWEhlYWRpbmcKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2hlYWRpbmctY3Jhc2gtYWZ0ZXItaGlkZGVu
Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2hlYWRpbmctY3Jhc2gtYWZ0ZXItaGlk
ZGVuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJjYTBiNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaGVhZGluZy1jcmFzaC1h
ZnRlci1oaWRkZW4uaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1s
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKworPGgxIGlkPSJoZWFkaW5nIj5YPC9oMT4KKworPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgd2UgZG9u
J3QgZ2V0IGEgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gcmV0cmlldmUgdGV4dHVhbCBpbmZvcm1hdGlv
biBmb3IgYSBoZWFkaW5nIGFmdGVyIGhpZGluZyBpdC4iKTsKKyAgICB2YXIgaGVhZGluZyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJoZWFkaW5nIik7CisgICAgdmFyIGF4SGVhZGluZyA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLnJvb3RFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0
SW5kZXgoMCk7CisgICAgZGVidWcoYXhIZWFkaW5nLnRpdGxlKTsKKyAgICBkZWJ1ZyhheEhlYWRp
bmcucm9sZSk7CisKKyAgICAvLyBIaWRlIHRoZSBoZWFkaW5nIG5vdy4KKyAgICBoZWFkaW5nLnN0
eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisKKyAgICAvLyBGb3JjaW5nIGEgcmV0cmlldmFsIG9mIHRl
eHQgYXNzb2NpYXRlZCB0byB0aGUgb2JqZWN0CisgICAgLy8gc2hvdWxkIG5vdCBjcmFzaCBhZnRl
ciBoaWRpbmcgdGhlIGhlYWRpbmcuCisgICAgYXhIZWFkaW5nLnRpdGxlOworICAgIGF4SGVhZGlu
Zy5kZXNjcmlwdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azEv
YWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1idXR0b24tc3RyaW5ndmFsdWUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMS9hY2Nlc3NpYmlsaXR5L2ZpbGUtdXBsb2Fk
LWJ1dHRvbi1zdHJpbmd2YWx1ZS1leHBlY3RlZC50eHQKaW5kZXggMGQxYzExYy4uNGE1ZGUyZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMS9hY2Nlc3NpYmlsaXR5L2Zp
bGUtdXBsb2FkLWJ1dHRvbi1zdHJpbmd2YWx1ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZWZsLXdrMS9hY2Nlc3NpYmlsaXR5L2ZpbGUtdXBsb2FkLWJ1dHRvbi1zdHJp
bmd2YWx1ZS1leHBlY3RlZC50eHQKQEAgLTMsOCArMyw4IEBAIFRoaXMgdGVzdHMgdGhlIHZhbHVl
IG9mIHN0cmluZ1ZhbHVlIGZvciBhIHNpbmdsZSBmaWxlLSBhbmQgbXVsdGlwbGUgZmlsZXMtPGlu
cHV0CiAKIAogRGVmYXVsdCB2YWx1ZSAobm8gZmlsZXMgc2VsZWN0ZWQpOgotYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJzaW5nbGVGaWxlVXBsb2FkIikuc3Ry
aW5nVmFsdWU6IEFYVmFsdWU6IENob29zZSBGaWxlCi1hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm11bHRpcGxlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBB
WFZhbHVlOiBDaG9vc2UgRmlsZXMKK2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgic2luZ2xlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiAoTm9u
ZSkKK2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibXVsdGlw
bGVGaWxlVXBsb2FkIikuc3RyaW5nVmFsdWU6IEFYVmFsdWU6IChOb25lKQogCiBEcmFnIGFuZCBk
cm9wIGEgc2luZ2xlIGZpbGU6CiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoInNpbmdsZUZpbGVVcGxvYWQiKS5zdHJpbmdWYWx1ZTogQVhWYWx1ZTogZmlsZTEu
dHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL2FjY2Vzc2liaWxp
dHkvZmlsZS11cGxvYWQtYnV0dG9uLXN0cmluZ3ZhbHVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2VmbC13azIvYWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1idXR0b24tc3Ry
aW5ndmFsdWUtZXhwZWN0ZWQudHh0CmluZGV4IDYwMTcxNjguLmNlN2RjZjAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvYWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1i
dXR0b24tc3RyaW5ndmFsdWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC13azIvYWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1idXR0b24tc3RyaW5ndmFsdWUtZXhw
ZWN0ZWQudHh0CkBAIC0zLDE0ICszLDE0IEBAIFRoaXMgdGVzdHMgdGhlIHZhbHVlIG9mIHN0cmlu
Z1ZhbHVlIGZvciBhIHNpbmdsZSBmaWxlLSBhbmQgbXVsdGlwbGUgZmlsZXMtPGlucHV0CiAKIAog
RGVmYXVsdCB2YWx1ZSAobm8gZmlsZXMgc2VsZWN0ZWQpOgotYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJzaW5nbGVGaWxlVXBsb2FkIikuc3RyaW5nVmFsdWU6
IEFYVmFsdWU6IENob29zZSBGaWxlCi1hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoIm11bHRpcGxlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiBD
aG9vc2UgRmlsZXMKK2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgic2luZ2xlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiAoTm9uZSkKK2FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibXVsdGlwbGVGaWxlVXBs
b2FkIikuc3RyaW5nVmFsdWU6IEFYVmFsdWU6IChOb25lKQogCiBEcmFnIGFuZCBkcm9wIGEgc2lu
Z2xlIGZpbGU6Ci1hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
InNpbmdsZUZpbGVVcGxvYWQiKS5zdHJpbmdWYWx1ZTogQVhWYWx1ZTogQ2hvb3NlIEZpbGUKLWFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibXVsdGlwbGVGaWxl
VXBsb2FkIikuc3RyaW5nVmFsdWU6IEFYVmFsdWU6IENob29zZSBGaWxlcworYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJzaW5nbGVGaWxlVXBsb2FkIikuc3Ry
aW5nVmFsdWU6IEFYVmFsdWU6IChOb25lKQorYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJtdWx0aXBsZUZpbGVVcGxvYWQiKS5zdHJpbmdWYWx1ZTogQVhWYWx1
ZTogKE5vbmUpCiAKIERyYWcgYW5kIGRyb3AgdHdvIGZpbGVzOgotYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJzaW5nbGVGaWxlVXBsb2FkIikuc3RyaW5nVmFs
dWU6IEFYVmFsdWU6IENob29zZSBGaWxlCi1hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoIm11bHRpcGxlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVl
OiBDaG9vc2UgRmlsZXMKK2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgic2luZ2xlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiAoTm9uZSkKK2Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibXVsdGlwbGVGaWxl
VXBsb2FkIikuc3RyaW5nVmFsdWU6IEFYVmFsdWU6IChOb25lKQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2FjY2Vzc2liaWxpdHkvZmlsZS11cGxvYWQtYnV0dG9u
LXN0cmluZ3ZhbHVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIv
YWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1idXR0b24tc3RyaW5ndmFsdWUtZXhwZWN0ZWQudHh0
CmluZGV4IDYwMTcxNjguLmNlN2RjZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay13azIvYWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1idXR0b24tc3RyaW5ndmFsdWUtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvYWNjZXNzaWJpbGl0
eS9maWxlLXVwbG9hZC1idXR0b24tc3RyaW5ndmFsdWUtZXhwZWN0ZWQudHh0CkBAIC0zLDE0ICsz
LDE0IEBAIFRoaXMgdGVzdHMgdGhlIHZhbHVlIG9mIHN0cmluZ1ZhbHVlIGZvciBhIHNpbmdsZSBm
aWxlLSBhbmQgbXVsdGlwbGUgZmlsZXMtPGlucHV0CiAKIAogRGVmYXVsdCB2YWx1ZSAobm8gZmls
ZXMgc2VsZWN0ZWQpOgotYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJzaW5nbGVGaWxlVXBsb2FkIikuc3RyaW5nVmFsdWU6IEFYVmFsdWU6IENob29zZSBGaWxl
Ci1hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm11bHRpcGxl
RmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiBDaG9vc2UgRmlsZXMKK2FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgic2luZ2xlRmlsZVVwbG9hZCIp
LnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiAoTm9uZSkKK2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgibXVsdGlwbGVGaWxlVXBsb2FkIikuc3RyaW5nVmFsdWU6IEFY
VmFsdWU6IChOb25lKQogCiBEcmFnIGFuZCBkcm9wIGEgc2luZ2xlIGZpbGU6Ci1hY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInNpbmdsZUZpbGVVcGxvYWQiKS5z
dHJpbmdWYWx1ZTogQVhWYWx1ZTogQ2hvb3NlIEZpbGUKLWFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgibXVsdGlwbGVGaWxlVXBsb2FkIikuc3RyaW5nVmFsdWU6
IEFYVmFsdWU6IENob29zZSBGaWxlcworYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJzaW5nbGVGaWxlVXBsb2FkIikuc3RyaW5nVmFsdWU6IEFYVmFsdWU6IChO
b25lKQorYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtdWx0
aXBsZUZpbGVVcGxvYWQiKS5zdHJpbmdWYWx1ZTogQVhWYWx1ZTogKE5vbmUpCiAKIERyYWcgYW5k
IGRyb3AgdHdvIGZpbGVzOgotYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJzaW5nbGVGaWxlVXBsb2FkIikuc3RyaW5nVmFsdWU6IEFYVmFsdWU6IENob29zZSBG
aWxlCi1hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm11bHRp
cGxlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiBDaG9vc2UgRmlsZXMKK2FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgic2luZ2xlRmlsZVVwbG9h
ZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiAoTm9uZSkKK2FjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgibXVsdGlwbGVGaWxlVXBsb2FkIikuc3RyaW5nVmFsdWU6
IEFYVmFsdWU6IChOb25lKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDE4NWYyODYuLjNlMGFjY2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9U
ZXN0RXhwZWN0YXRpb25zCkBAIC04NTYsNyArODU2LDYgQEAgd2Via2l0Lm9yZy9iLzEyMTY4NCBh
Y2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbCBbIEZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzk4MzU1IGFjY2Vzc2liaWxpdHkvYXJpYS1saW5rLXN1cHBvcnRzLXByZXNz
Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85ODM1NyBhY2Nlc3NpYmlsaXR5L2FyaWEt
cmVhZG9ubHkuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk4MzU5IGFjY2Vzc2liaWxp
dHkvYXJpYS10ZXh0LXJvbGUuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzk4MzYwIGFj
Y2Vzc2liaWxpdHkvYXJpYS11c2VkLW9uLWltYWdlLW1hcHMuaHRtbCBbIEZhaWx1cmUgXQogd2Vi
a2l0Lm9yZy9iLzk4MzYxIGFjY2Vzc2liaWxpdHkvYnV0dG9uLXByZXNzLWFjdGlvbi5odG1sIFsg
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTgzNjMgYWNjZXNzaWJpbGl0eS9jYW52YXMtZmFsbGJh
Y2stY29udGVudC0yLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85ODM3MSBhY2Nlc3Np
YmlsaXR5L2xvYWRpbmctaWZyYW1lLXVwZGF0ZXMtYXh0cmVlLmh0bWwgWyBGYWlsdXJlIF0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2RlbGV0aW5n
LWlmcmFtZS1kZXN0cm95cy1heGNhY2hlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2RlbGV0aW5nLWlmcmFtZS1kZXN0cm95cy1heGNhY2hlLWV4
cGVjdGVkLnR4dAppbmRleCA3NDJhYmUxLi4wZmVlMjM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9kZWxldGluZy1pZnJhbWUtZGVzdHJveXMtYXhj
YWNoZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2li
aWxpdHkvZGVsZXRpbmctaWZyYW1lLWRlc3Ryb3lzLWF4Y2FjaGUtZXhwZWN0ZWQudHh0CkBAIC0y
Niw3ICsyNiw2IEBAIEFmdGVyOgogQVhSb2xlOiBBWFNjcm9sbEFyZWEgCiAgICAgQVhSb2xlOiBB
WFdlYkFyZWEgCiAgICAgICAgIEFYUm9sZTogQVhQYXJhZ3JhcGggQVhWYWx1ZTogQmVmb3JlCi0g
ICAgICAgIEFYUm9sZTogQVhHcm91cCBBWFZhbHVlOiAKICAgICAgICAgQVhSb2xlOiBBWFBhcmFn
cmFwaCBBWFZhbHVlOiBBZnRlcgogICAgICAgICBBWFJvbGU6IEFYUGFyYWdyYXBoIEFYVmFsdWU6
IEVuZCBvZiB0ZXN0CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nl
c3NpYmlsaXR5L2ZpbGUtdXBsb2FkLWJ1dHRvbi1zdHJpbmd2YWx1ZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1idXR0b24t
c3RyaW5ndmFsdWUtZXhwZWN0ZWQudHh0CmluZGV4IDBkMWMxMWMuLjRhNWRlMmQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2ZpbGUtdXBsb2FkLWJ1
dHRvbi1zdHJpbmd2YWx1ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL2FjY2Vzc2liaWxpdHkvZmlsZS11cGxvYWQtYnV0dG9uLXN0cmluZ3ZhbHVlLWV4cGVjdGVk
LnR4dApAQCAtMyw4ICszLDggQEAgVGhpcyB0ZXN0cyB0aGUgdmFsdWUgb2Ygc3RyaW5nVmFsdWUg
Zm9yIGEgc2luZ2xlIGZpbGUtIGFuZCBtdWx0aXBsZSBmaWxlcy08aW5wdXQKIAogCiBEZWZhdWx0
IHZhbHVlIChubyBmaWxlcyBzZWxlY3RlZCk6Ci1hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoInNpbmdsZUZpbGVVcGxvYWQiKS5zdHJpbmdWYWx1ZTogQVhWYWx1
ZTogQ2hvb3NlIEZpbGUKLWFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgibXVsdGlwbGVGaWxlVXBsb2FkIikuc3RyaW5nVmFsdWU6IEFYVmFsdWU6IENob29zZSBG
aWxlcworYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJzaW5n
bGVGaWxlVXBsb2FkIikuc3RyaW5nVmFsdWU6IEFYVmFsdWU6IChOb25lKQorYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtdWx0aXBsZUZpbGVVcGxvYWQiKS5z
dHJpbmdWYWx1ZTogQVhWYWx1ZTogKE5vbmUpCiAKIERyYWcgYW5kIGRyb3AgYSBzaW5nbGUgZmls
ZToKIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgic2luZ2xl
RmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiBmaWxlMS50eHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA3NzUxY2NiLi41YTM1MzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU1IEBACisyMDEzLTA5
LTI1ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bWFyaW8ucHJhZGFAc2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0FUS10gUHJvdGVjdCBlbnRyeSBwb2ludHMgaW4gdGhlIEFUSyB3cmFwcGVyIGFnYWlu
c3Qgb3V0ZGF0ZWQgcmVuZGVyIHRyZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjE1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIHN1cmUgdGhhdCB3ZSBwcm90ZWN0IGV2ZXJ5IGVudHJ5IHBv
aW50IGluIHRoZSBBVEsgd3JhcHBlcgorICAgICAgICBhZ2FpbnN0IG91dGRhdGVkIHJlbmRlciB0
cmVlcywgYmVmb3JlIHVzaW5nIHRoZSBXZWJDb3JlJ3MKKyAgICAgICAgYWNjZXNzaWJpbGl0eSBB
UEksIHNpbmNlIHRoYXQgbWlnaHQgbGVhZCB0byBwcm9ibGVtcyAoYW5kIGNyYXNoZXMpCisgICAg
ICAgIGlmIHRoZSByZW5kZXIgYW5kIGFjY2Vzc2liaWxpdHkgdHJlZXMgYXJlIG5vdCBzdGFibGUu
CisKKyAgICAgICAgVGh1cywgY2FsbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp1cGRhdGVCYWNraW5n
U3RvcmUoKSBpbiB0aG9zZQorICAgICAgICBlbnRyeSBwb2ludHMgYW5kIGNoZWNrIHdoZXRoZXIg
dGhlIEFUSyB3cmFwcGVyIGlzIGRldGFjaGVkIG9yIG5vdAorICAgICAgICBhZnRlciB0aGF0LCB0
byBkZWNpZGUgd2hldGhlciB0byBjb250aW51ZSBvciBub3QuCisKKyAgICAgICAgQmVzaWRlcyBw
cm92aWRpbmcgYSBuZXcgdGVzdCB0byBjaGVjayB0aGF0IGl0IFdlYktpdCBkb2VzIG5vdAorICAg
ICAgICBjcmFzaCBpbiBhIGdpdmVuIHNjZW5hcmlvICh3aGljaCBhY3R1YWxseSB0cmlnZ2VyZWQg
dGhlCisgICAgICAgIGludmVzdGlnYXRpb24gaGVyZSksIHNvbHZpbmcgdGhpcyBzaXR1YXRpb24g
YWxzbyBmaXhlcyBvdGhlciB0ZXN0cworICAgICAgICB0aGF0IHdlcmUgcHJldmlvdXNseSBmYWls
aW5nIChhcmlhLXVzZWQtb24taW1hZ2UtbWFwcy5odG1sKSBvcgorICAgICAgICB0aGF0IHdlcmUg
cHJpbnRpbmcgd3JvbmcgcmVzdWx0cywgbm90IGRldGVjdGVkIHVudGlsIG5vdyBkdWUgdG8KKyAg
ICAgICAgd3JvbmcgcGxhdGZvcm0gc3BlY2lmaWMgZXhwZWN0YXRpb25zIChmaWxlLXVwbG9hZC1i
dXR0b24tc3RyaW5ndmFsdWUKKyAgICAgICAgYW5kIGRlbGV0aW5nLWlmcmFtZS1kZXN0cm95cy1h
eGNhY2hlKS4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2hlYWRpbmctY3Jhc2gtYWZ0
ZXItaGlkZGVuLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVVdGlsLmg6IEFkZGVkIHR3byBuZXcgbWFjcm9zCisgICAgICAgIHRvIGluamVjdCB0aGUg
bmVlZGVkIGNvZGUgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIGVudHJ5IHBvaW50IHRvCisgICAg
ICAgIGFsbG93IGdyYWNlZnVsbHkgZXhpdCB0aG9zZSBmdW5jdGlvbnMgd2hlbiB0aGUgcmVuZGVy
IHRyZWUgaXMKKyAgICAgICAgdW5zdGFibGUuIEluc3BpcmVkIGJ5IGdfcmV0dXJuX2lmX2ZhaWwg
YW5kIGdfcmV0dXJuX3ZhbF9pZl9mYWlsLCB3ZQorICAgICAgICBjYWxsZWQgdGhlbSByZXR1cm5J
Zk9iamVjdElzSW52YWxpZCBhbmQgcmV0dXJuVmFsSWZPYmplY3RJc0ludmFsaWQuCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcDoKKyAg
ICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtBY3Rpb25Eb0FjdGlvbik6IFByb3RlY3Qg
ZW50cnkgcG9pbnQuCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rQWN0aW9uR2V0
TkFjdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtBY3Rp
b25HZXREZXNjcmlwdGlvbik6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVy
bGlua0FjdGlvbkdldEtleWJpbmRpbmcpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2li
bGVIeXBlcmxpbmtBY3Rpb25HZXROYW1lKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3Np
YmxlSHlwZXJsaW5rR2V0VVJJKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlw
ZXJsaW5rR2V0T2JqZWN0KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJs
aW5rR2V0U3RhcnRJbmRleCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVy
bGlua0dldEVuZEluZGV4KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJs
aW5rSXNWYWxpZCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dl
dE5BbmNob3JzKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rSXNT
ZWxlY3RlZExpbmspOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlSW50ZXJmYWNlQWN0aW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVB
Y3Rpb25Eb0FjdGlvbik6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUFjdGlvbkdl
dE5BY3Rpb25zKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlQWN0aW9uR2V0RGVz
Y3JpcHRpb24pOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVBY3Rpb25HZXRLZXli
aW5kaW5nKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlQWN0aW9uR2V0TmFtZSk6
IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VDb21wb25lbnQuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUNvbXBvbmVudFJl
ZkFjY2Vzc2libGVBdFBvaW50KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlQ29t
cG9uZW50R2V0RXh0ZW50cyk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUNvbXBv
bmVudEdyYWJGb2N1cyk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VEb2N1bWVudC5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3Np
YmxlRG9jdW1lbnRHZXRBdHRyaWJ1dGVWYWx1ZSk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNj
ZXNzaWJsZURvY3VtZW50R2V0QXR0cmlidXRlcyk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNj
ZXNzaWJsZURvY3VtZW50R2V0TG9jYWxlKTogRGl0dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUVkaXRhYmxlVGV4dC5jcHA6CisgICAgICAg
ICh3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0U2V0UnVuQXR0cmlidXRlcyk6IERpdHRvLgor
ICAgICAgICAod2Via2l0QWNjZXNzaWJsZUVkaXRhYmxlVGV4dFNldFRleHRDb250ZW50cyk6IERp
dHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUVkaXRhYmxlVGV4dEluc2VydFRleHQpOiBE
aXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVFZGl0YWJsZVRleHRDb3B5VGV4dCk6IERp
dHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUVkaXRhYmxlVGV4dEN1dFRleHQpOiBEaXR0
by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVFZGl0YWJsZVRleHREZWxldGVUZXh0KTogRGl0
dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0UGFzdGVUZXh0KTogRGl0
dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZUh5cGVydGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0R2V0TGlu
ayk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVydGV4dEdldE5MaW5rcyk6
IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVydGV4dEdldExpbmtJbmRleCk6
IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VJbWFnZS5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VHZXRJbWFnZVBv
c2l0aW9uKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VHZXRJbWFnZURl
c2NyaXB0aW9uKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VHZXRJbWFn
ZVNpemUpOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVTZWxl
Y3Rpb25BZGRTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVTZWxl
Y3Rpb25DbGVhclNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVNl
bGVjdGlvblJlZlNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVNl
bGVjdGlvbkdldFNlbGVjdGlvbkNvdW50KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3Np
YmxlU2VsZWN0aW9uSXNDaGlsZFNlbGVjdGVkKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nl
c3NpYmxlU2VsZWN0aW9uUmVtb3ZlU2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRB
Y2Nlc3NpYmxlU2VsZWN0aW9uU2VsZWN0QWxsU2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcDoKKyAg
ICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZVJlZkF0KTogRGl0dG8uCisgICAgICAgICh3ZWJr
aXRBY2Nlc3NpYmxlVGFibGVHZXRJbmRleEF0KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nl
c3NpYmxlVGFibGVHZXRDb2x1bW5BdEluZGV4KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nl
c3NpYmxlVGFibGVHZXRSb3dBdEluZGV4KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3Np
YmxlVGFibGVHZXROQ29sdW1ucyk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRh
YmxlR2V0TlJvd3MpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENv
bHVtbkV4dGVudEF0KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRS
b3dFeHRlbnRBdCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q29s
dW1uSGVhZGVyKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRSb3dI
ZWFkZXIpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENhcHRpb24p
OiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkRlc2NyaXB0
aW9uKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRSb3dEZXNjcmlw
dGlvbik6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVJbnRlcmZhY2VUZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4
dCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXh0QWZ0ZXJPZmZz
ZXQpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dEF0T2Zmc2V0
KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHRCZWZvcmVPZmZz
ZXQpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0Q2hhcmFjdGVyQXRP
ZmZzZXQpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0Q2FyZXRPZmZz
ZXQpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0UnVuQXR0cmlidXRl
cyk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRleHRHZXREZWZhdWx0QXR0cmli
dXRlcyk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRleHRHZXRDaGFyYWN0ZXJF
eHRlbnRzKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFJhbmdlRXh0
ZW50cyk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRleHRHZXRDaGFyYWN0ZXJD
b3VudCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRleHRHZXRPZmZzZXRBdFBv
aW50KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldE5TZWxlY3Rpb25z
KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFNlbGVjdGlvbik6IERp
dHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRleHRBZGRTZWxlY3Rpb24pOiBEaXR0by4K
KyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0U2V0U2VsZWN0aW9uKTogRGl0dG8uCisgICAg
ICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dFJlbW92ZVNlbGVjdGlvbik6IERpdHRvLgorICAgICAg
ICAod2Via2l0QWNjZXNzaWJsZVRleHRTZXRDYXJldE9mZnNldCk6IERpdHRvLgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VWYWx1ZS5jcHA6Cisg
ICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVmFsdWVHZXRDdXJyZW50VmFsdWUpOiBEaXR0by4KKyAg
ICAgICAgKHdlYmtpdEFjY2Vzc2libGVWYWx1ZUdldE1heGltdW1WYWx1ZSk6IERpdHRvLgorICAg
ICAgICAod2Via2l0QWNjZXNzaWJsZVZhbHVlR2V0TWluaW11bVZhbHVlKTogRGl0dG8uCisgICAg
ICAgICh3ZWJraXRBY2Nlc3NpYmxlVmFsdWVTZXRDdXJyZW50VmFsdWUpOiBEaXR0by4KKyAgICAg
ICAgKHdlYmtpdEFjY2Vzc2libGVWYWx1ZUdldE1pbmltdW1JbmNyZW1lbnQpOiBEaXR0by4KKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHA6
CisgICAgICAgIChjb3JlKTogUmVtb3ZlZCwgYXMgaXQncyBub3QgYWN0dWFsbHkgbmVlZGVkLgor
ICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldE5hbWUpOiAgUHJvdGVjdCBlbnRyeSBwb2ludC4K
KyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXREZXNjcmlwdGlvbik6IERpdHRvLgorICAgICAg
ICAod2Via2l0QWNjZXNzaWJsZUdldFBhcmVudCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNj
ZXNzaWJsZUdldE5DaGlsZHJlbik6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVJl
ZkNoaWxkKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0SW5kZXhJblBhcmVu
dCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldEF0dHJpYnV0ZXMpOiBEaXR0
by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXRSb2xlKTogRGl0dG8uCisgICAgICAgICh3
ZWJraXRBY2Nlc3NpYmxlUmVmU3RhdGVTZXQpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vz
c2libGVSZWZSZWxhdGlvblNldCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdl
dE9iamVjdExvY2FsZSk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZURldGFjaCk6
IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUlzRGV0YWNoZWQpOiBOZXcgaGVscGVy
IGZ1bmN0aW9uLCB0byBiZSB1c2VkIGZyb20KKyAgICAgICAgdGhlIG5ld2x5IGFkZGVkIG1hY3Jv
cy4gV2UgbmVlZCB0byBjaGVjayB3aGV0aGVyIHRoZSB3cmFwcGVyIGlzCisgICAgICAgIGRldGFj
aGVkIGFuZCBub3QganVzdCB0aGUgd3JhcHBlciBBY2Nlc3NpYmlsaXR5T2JqZWN0IHNpbmNlIG9u
Y2UKKyAgICAgICAgdGhlIGRldGFjaG1lbnQgaGFwcGVucyB3ZSBjYW4ndCB0cnVzdCBhbnl0aGlu
ZyBidXQgdGhlIEF0a09iamVjdAorICAgICAgICBmcm9tIHRoZSB3cmFwcGVyICh0aGUgQWNjZXNz
aWJpbGl0eU9iamVjdCBtaWdodCBiZSBpbnZhbGlkKS4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5oOgorCisgICAgICAgIEFzc2VydCB0aGF0
IHRoZSByZW5kZXIgdHJlZSBpcyBuZWl0aGVyIGJlaW5nIHVwZGF0ZWQgbm9yIGluIG5lZWQKKyAg
ICAgICAgb2YgYmVpbmcgdXBkYXRlZCBiZWZvcmUgdHJ5aW5nIHRvIGNvbXB1dGUgdGhlIHRleHQg
dW5kZXIgYSBnaXZlbgorICAgICAgICBlbGVtZW50LCBzaW5jZSB0aGF0IG1pZ2h0IGxlYWQgdG8g
Y3Jhc2hlcyBkdWUgdG8gdGhlIGNvbnN0cnVjdG9yCisgICAgICAgIG9mIFRleHRJdGVyYXRvciBj
YWxsaW5nIHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpLgorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCk6IEFzc2Vy
dCB0aGF0CisgICAgICAgIHRoZSByZW5kZXIgdHJlZSBpcyBuZWl0aGVyIGJlaW5nIHVwZGF0ZWQg
bm9yIG5lZWRpbmcgdXBkYXRpbmcuCisKIDIwMTMtMDktMjUgIEFsbGFuIFNhbmRmZWxkIEplbnNl
biAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBGaXggYnVpbGQgd2l0
aCAhRU5BQkxFKEJMT0IpIGFmdGVyIHIxNTYzMzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggY2RjZmZk
ZC4uZDdiZjY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTY4LDYgKzY4LDcgQEAKICNpbmNsdWRl
ICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlByb2dyZXNz
VHJhY2tlci5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50
LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC0xNTgwLDYg
KzE1ODEsMTIgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0ZXh0VW5kZXJFbGVt
ZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW8KICAgICBpZiAobm9kZSAmJiBub2Rl
LT5pc1RleHROb2RlKCkpCiAgICAgICAgIHJldHVybiB0b1RleHQobm9kZSktPndob2xlVGV4dCgp
OwogCisgICAgLy8gVGhlIHJlbmRlciB0cmVlIHNob3VsZCBiZSBzdGFibGUgYmVmb3JlIGdvaW5n
IGFoZWFkLiBPdGhlcndpc2UsIGZ1cnRoZXIgdXNlcyBvZiB0aGUKKyAgICAvLyBUZXh0SXRlcmF0
b3Igd2lsbCBmb3JjZSBhIGxheW91dCB1cGRhdGUsIHBvdGVudGlhbGx5IGFsdGVyaW5nIHRoZSBh
Y2Nlc3NpYmlsaXR5IHRyZWUKKyAgICAvLyBhbmQgbGVhZGluZyB0byBjcmFzaGVzIGluIHRoZSBs
b29wIHRoYXQgY29tcHV0ZXMgdGhlIHJlc3VsdCB0ZXh0IGZyb20gdGhlIGNoaWxkcmVuLgorICAg
IEFTU0VSVCghZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpLT5sYXlvdXRTdGF0ZSgpKTsKKyAgICBB
U1NFUlQoIWRvY3VtZW50KCktPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpKTsKKwogICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkID0g
Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAg
ICAgICBpZiAoIXNob3VsZFVzZUFjY2Vzc2libGl0eU9iamVjdElubmVyVGV4dChjaGlsZCwgbW9k
ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlSHlwZXJsaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCmluZGV4IGZlMzQ1NzcuLmU1OTgzMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVIeXBlcmxpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCkBAIC05NCw2ICs5NCw3IEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rQWN0aW9uRG9BY3Rpb24oQXRrQWN0aW9uKiBh
Y3Rpb24sIGdpbnQKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJM
RV9IWVBFUkxJTksoYWN0aW9uKSwgRkFMU0UpOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLT5wcml2LT5oeXBlcmxpbmtJbXBsLCBG
QUxTRSk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWluZGV4LCBGQUxTRSk7CisgICAgcmV0
dXJuVmFsSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGFjdGlv
biktPnByaXYtPmh5cGVybGlua0ltcGwsIEZBTFNFKTsKIAogICAgIGlmICghQVRLX0lTX0FDVElP
TihXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksoYWN0aW9uKS0+cHJpdi0+aHlwZXJsaW5rSW1w
bCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTEwOSw2ICsxMTAsNyBAQCBzdGF0aWMgZ2lu
dCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rQWN0aW9uR2V0TkFjdGlvbnMoQXRrQWN0aW9uKiBh
Y3Rpb24pCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEVf
SFlQRVJMSU5LKGFjdGlvbiksIDApOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9B
Q0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsKKyAg
ICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTkso
YWN0aW9uKS0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7CiAKICAgICBpZiAoIUFUS19JU19BQ1RJ
T04oV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGFjdGlvbiktPnByaXYtPmh5cGVybGlua0lt
cGwpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEyMSw2ICsxMjMsNyBAQCBzdGF0aWMgY29uc3Qg
Z2NoYXIqIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtBY3Rpb25HZXREZXNjcmlwdGlvbihBdGtB
Y3Rpb24qIGFjdAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19BQ0NFU1NJQkxF
X0hZUEVSTElOSyhhY3Rpb24pLCAwKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
QUNDRVNTSUJMRV9IWVBFUkxJTksoYWN0aW9uKS0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7CiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWluZGV4LCAwKTsKKyAgICByZXR1cm5WYWxJZk9iamVj
dElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksoYWN0aW9uKS0+cHJpdi0+aHlw
ZXJsaW5rSW1wbCwgMCk7CiAKICAgICAvLyBUT0RPOiBOZWVkIGEgd2F5IHRvIHByb3ZpZGUvbG9j
YWxpemUgYWN0aW9uIGRlc2NyaXB0aW9ucy4KICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMTMw
LDEwICsxMzMsMTEgQEAgc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJs
aW5rQWN0aW9uR2V0RGVzY3JpcHRpb24oQXRrQWN0aW9uKiBhY3QKIHN0YXRpYyBjb25zdCBnY2hh
ciogd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkdldEtleWJpbmRpbmcoQXRrQWN0aW9u
KiBhY3Rpb24sIGdpbnQgaW5kZXgpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGFjdGlvbiksIDApOworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLT5wcml2LT5oeXBlcmxp
bmtJbXBsLCAwKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghaW5kZXgsIDApOwogCiAgICAg
V2ViS2l0QWNjZXNzaWJsZUh5cGVybGlua1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfQUNDRVNTSUJM
RV9IWVBFUkxJTksoYWN0aW9uKS0+cHJpdjsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChwcml2
LT5oeXBlcmxpbmtJbXBsLCAwKTsKKyAgICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChwcml2
LT5oeXBlcmxpbmtJbXBsLCAwKTsKIAogICAgIGlmICghQVRLX0lTX0FDVElPTihwcml2LT5oeXBl
cmxpbmtJbXBsKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNDksMTAgKzE1MywxMSBAQCBzdGF0
aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtBY3Rpb25HZXRLZXliaW5k
aW5nKEF0a0FjdGlvbiogYWN0aQogc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxl
SHlwZXJsaW5rQWN0aW9uR2V0TmFtZShBdGtBY3Rpb24qIGFjdGlvbiwgZ2ludCBpbmRleCkKIHsK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRV9IWVBFUkxJTkso
YWN0aW9uKSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0FDQ0VTU0lCTEVf
SFlQRVJMSU5LKGFjdGlvbiktPnByaXYtPmh5cGVybGlua0ltcGwsIDApOwogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKCFpbmRleCwgMCk7CiAKICAgICBXZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5r
UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLT5wcml2
OwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHByaXYtPmh5cGVybGlua0ltcGwsIDApOworICAg
IHJldHVyblZhbElmT2JqZWN0SXNJbnZhbGlkKHByaXYtPmh5cGVybGlua0ltcGwsIDApOwogCiAg
ICAgaWYgKCFBVEtfSVNfQUNUSU9OKHByaXYtPmh5cGVybGlua0ltcGwpKQogICAgICAgICByZXR1
cm4gMDsKQEAgLTE3NywxMCArMTgyLDE0IEBAIHN0YXRpYyB2b2lkIGF0a0FjdGlvbkludGVyZmFj
ZUluaXQoQXRrQWN0aW9uSWZhY2UqIGlmYWNlKQogc3RhdGljIGdjaGFyKiB3ZWJraXRBY2Nlc3Np
YmxlSHlwZXJsaW5rR2V0VVJJKEF0a0h5cGVybGluayogbGluaywgZ2ludCBpbmRleCkKIHsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRV9IWVBFUkxJTksobGlu
ayksIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVS
TElOSyhsaW5rKS0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7CisKICAgICAvLyBGSVhNRTogRG8g
Tk9UIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBpbnN0YW5jZSBvZiBhbiBBdGtPYmplY3QKICAgICAv
LyBpbXBsZW1lbnRpbmcgQXRrSHlwZXJsaW5rSW1wbCBpbiBldmVyeSBpbnN0YW5jZSBvZiBBdGtI
eXBlckxpbmsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghaW5kZXgsIDApOwogCisgICAgcmV0
dXJuVmFsSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmsp
LT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsKKwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
cmVPYmplY3QgPSBjb3JlKGxpbmspOwogICAgIGlmICghY29yZU9iamVjdCB8fCBjb3JlT2JqZWN0
LT51cmwoKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xOTcsNiArMjA2LDggQEAg
c3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldE9iamVjdChBdGtI
eXBlcmxpbmsqIGxpbmssIGdpbnQgaW4KICAgICAvLyBpbXBsZW1lbnRpbmcgQXRrSHlwZXJsaW5r
SW1wbCBpbiBldmVyeSBpbnN0YW5jZSBvZiBBdGtIeXBlckxpbmsKICAgICBnX3JldHVybl92YWxf
aWZfZmFpbCghaW5kZXgsIDApOwogCisgICAgcmV0dXJuVmFsSWZPYmplY3RJc0ludmFsaWQoV0VC
S0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsK
KwogICAgIHJldHVybiBBVEtfT0JKRUNUKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhsaW5r
KS0+cHJpdi0+aHlwZXJsaW5rSW1wbCk7CiB9CiAKQEAgLTIzMCw2ICsyNDEsOCBAQCBzdGF0aWMg
Z2ludCBnZXRSYW5nZUxlbmd0aEZvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIFJh
bmdlKiByYW5nZSkKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRTdGFy
dEluZGV4KEF0a0h5cGVybGluayogbGluaykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayksIDApOworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKS0+cHJpdi0+aHlwZXJs
aW5rSW1wbCwgMCk7CisgICAgcmV0dXJuVmFsSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VT
U0lCTEVfSFlQRVJMSU5LKGxpbmspLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsKIAogICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBjb3JlKGxpbmspOwogICAgIGlmICghY29y
ZU9iamVjdCkKQEAgLTI1NCw2ICsyNjcsOCBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxl
SHlwZXJsaW5rR2V0U3RhcnRJbmRleChBdGtIeXBlcmxpbmsqIGxpbmspCiBzdGF0aWMgZ2ludCB3
ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0RW5kSW5kZXgoQXRrSHlwZXJsaW5rKiBsaW5rKQog
ewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19BQ0NFU1NJQkxFX0hZUEVSTElO
SyhsaW5rKSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0FDQ0VTU0lCTEVf
SFlQRVJMSU5LKGxpbmspLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsKKyAgICByZXR1cm5WYWxJ
Zk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayktPnByaXYt
Pmh5cGVybGlua0ltcGwsIDApOwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVj
dCA9IGNvcmUobGluayk7CiAgICAgaWYgKCFjb3JlT2JqZWN0KQpAQCAtMjc3LDggKzI5Miw5IEBA
IHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRFbmRJbmRleChBdGtIeXBl
cmxpbmsqIGxpbmspCiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5r
SXNWYWxpZChBdGtIeXBlcmxpbmsqIGxpbmspCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLCAwKTsKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayksIEZBTFNFKTsK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGlu
ayktPnByaXYtPmh5cGVybGlua0ltcGwsIEZBTFNFKTsKKyAgICByZXR1cm5WYWxJZk9iamVjdElz
SW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayktPnByaXYtPmh5cGVybGlu
a0ltcGwsIEZBTFNFKTsKIAogICAgIC8vIExpbmsgaXMgdmFsaWQgZm9yIHRoZSB3aG9sZSBvYmpl
Y3QncyBsaWZldGltZQogICAgIHJldHVybiBUUlVFOwpAQCAtMjkwLDExICszMDYsMTcgQEAgc3Rh
dGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldE5BbmNob3JzKEF0a0h5cGVybGlu
ayogbGluaykKICAgICAvLyBpbXBsZW1lbnRpbmcgQXRrSHlwZXJsaW5rSW1wbCBpbiBldmVyeSBp
bnN0YW5jZSBvZiBBdGtIeXBlckxpbmsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayksIDApOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKS0+cHJpdi0+aHlwZXJsaW5rSW1w
bCwgMCk7CisgICAgcmV0dXJuVmFsSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEVf
SFlQRVJMSU5LKGxpbmspLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsKKwogICAgIHJldHVybiAx
OwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0lzU2VsZWN0
ZWRMaW5rKEF0a0h5cGVybGluayopCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZUh5
cGVybGlua0lzU2VsZWN0ZWRMaW5rKEF0a0h5cGVybGluayogbGluaykKIHsKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayksIEZBTFNF
KTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTkso
bGluayktPnByaXYtPmh5cGVybGlua0ltcGwsIEZBTFNFKTsKKyAgICByZXR1cm5WYWxJZk9iamVj
dElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayktPnByaXYtPmh5cGVy
bGlua0ltcGwsIEZBTFNFKTsKKwogICAgIC8vIE5vdCBpbXBsZW1lbnRlZDogdGhpcyBmdW5jdGlv
biBpcyBkZXByZWNhdGVkIGluIEFUSyBub3cKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJl
dHVybiBGQUxTRTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUFjdGlvbi5jcHAKaW5kZXgg
ZWIxOGJlYi4uZTg1MGZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUFjdGlvbi5j
cHAKQEAgLTUxLDE3ICs1MSwyNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZShB
dGtBY3Rpb24qIGFjdGlvbikKIAogc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVBY3Rp
b25Eb0FjdGlvbihBdGtBY3Rpb24qIGFjdGlvbiwgZ2ludCBpbmRleCkKIHsKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChBVEtfSVNfQUNUSU9OKGFjdGlvbiksIEZBTFNFKTsKICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbCghaW5kZXgsIEZBTFNFKTsKKworICAgIHJldHVyblZhbElmT2JqZWN0SXNJ
bnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKGFjdGlvbiksIEZBTFNFKTsKKwogICAgIHJldHVybiBj
b3JlKGFjdGlvbiktPnBlcmZvcm1EZWZhdWx0QWN0aW9uKCk7CiB9CiAKLXN0YXRpYyBnaW50IHdl
YmtpdEFjY2Vzc2libGVBY3Rpb25HZXROQWN0aW9ucyhBdGtBY3Rpb24qKQorc3RhdGljIGdpbnQg
d2Via2l0QWNjZXNzaWJsZUFjdGlvbkdldE5BY3Rpb25zKEF0a0FjdGlvbiogYWN0aW9uKQogewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19JU19BQ1RJT04oYWN0aW9uKSwgMCk7CisgICAg
cmV0dXJuVmFsSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUoYWN0aW9uKSwgMCk7
CisKICAgICByZXR1cm4gMTsKIH0KIAotc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3Np
YmxlQWN0aW9uR2V0RGVzY3JpcHRpb24oQXRrQWN0aW9uKiwgZ2ludCkKK3N0YXRpYyBjb25zdCBn
Y2hhciogd2Via2l0QWNjZXNzaWJsZUFjdGlvbkdldERlc2NyaXB0aW9uKEF0a0FjdGlvbiogYWN0
aW9uLCBnaW50KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19JU19BQ1RJT04oYWN0
aW9uKSwgMCk7CisgICAgcmV0dXJuVmFsSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lC
TEUoYWN0aW9uKSwgMCk7CisKICAgICAvLyBUT0RPOiBOZWVkIGEgd2F5IHRvIHByb3ZpZGUvbG9j
YWxpemUgYWN0aW9uIGRlc2NyaXB0aW9ucy4KICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJl
dHVybiAiIjsKQEAgLTY5LDE0ICs3OSwyMCBAQCBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFj
Y2Vzc2libGVBY3Rpb25HZXREZXNjcmlwdGlvbihBdGtBY3Rpb24qLCBnaW50KQogCiBzdGF0aWMg
Y29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVBY3Rpb25HZXRLZXliaW5kaW5nKEF0a0FjdGlv
biogYWN0aW9uLCBnaW50IGluZGV4KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19J
U19BQ1RJT04oYWN0aW9uKSwgMCk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWluZGV4LCAw
KTsKKyAgICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShhY3Rp
b24pLCAwKTsKKwogICAgIC8vIEZJWE1FOiBDb25zdHJ1Y3QgYSBwcm9wZXIga2V5YmluZGluZyBz
dHJpbmcuCiAgICAgcmV0dXJuIGNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkoQVRLX09CSkVDVChh
Y3Rpb24pLCBBdGtDYWNoZWRBY3Rpb25LZXlCaW5kaW5nLCBjb3JlKGFjdGlvbiktPmFjY2Vzc0tl
eSgpLnN0cmluZygpKTsKIH0KIAogc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxl
QWN0aW9uR2V0TmFtZShBdGtBY3Rpb24qIGFjdGlvbiwgZ2ludCBpbmRleCkKIHsKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChBVEtfSVNfQUNUSU9OKGFjdGlvbiksIDApOwogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKCFpbmRleCwgMCk7CisgICAgcmV0dXJuVmFsSWZPYmplY3RJc0ludmFsaWQo
V0VCS0lUX0FDQ0VTU0lCTEUoYWN0aW9uKSwgMCk7CisKICAgICByZXR1cm4gY2FjaGVBbmRSZXR1
cm5BdGtQcm9wZXJ0eShBVEtfT0JKRUNUKGFjdGlvbiksIEF0a0NhY2hlZEFjdGlvbk5hbWUsIGNv
cmUoYWN0aW9uKS0+YWN0aW9uVmVyYigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUNvbXBvbmVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlQ29tcG9uZW50LmNwcAppbmRleCA3MTAzZWE2Li44YWM1NzJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
Q29tcG9uZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlSW50ZXJmYWNlQ29tcG9uZW50LmNwcApAQCAtNjgsNiArNjgsOSBAQCBzdGF0
aWMgSW50UG9pbnQgYXRrVG9Db250ZW50cyhBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0
LCBBdGtDb29yZFR5cGUgY29vcgogCiBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxl
Q29tcG9uZW50UmVmQWNjZXNzaWJsZUF0UG9pbnQoQXRrQ29tcG9uZW50KiBjb21wb25lbnQsIGdp
bnQgeCwgZ2ludCB5LCBBdGtDb29yZFR5cGUgY29vcmRUeXBlKQogeworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKEFUS19JU19DT01QT05FTlQoY29tcG9uZW50KSwgMCk7CisgICAgcmV0dXJuVmFs
SWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUoY29tcG9uZW50KSwgMCk7CisKICAg
ICBJbnRQb2ludCBwb3MgPSBhdGtUb0NvbnRlbnRzKGNvcmUoY29tcG9uZW50KSwgY29vcmRUeXBl
LCB4LCB5KTsKIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRhcmdldCA9IGNvcmUoY29tcG9u
ZW50KS0+YWNjZXNzaWJpbGl0eUhpdFRlc3QocG9zKTsKQEAgLTc5LDEyICs4MiwxOCBAQCBzdGF0
aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlQ29tcG9uZW50UmVmQWNjZXNzaWJsZUF0UG9p
bnQoQXRrQ29tcG9uZW50KiBjbwogCiBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlQ29tcG9u
ZW50R2V0RXh0ZW50cyhBdGtDb21wb25lbnQqIGNvbXBvbmVudCwgZ2ludCogeCwgZ2ludCogeSwg
Z2ludCogd2lkdGgsIGdpbnQqIGhlaWdodCwgQXRrQ29vcmRUeXBlIGNvb3JkVHlwZSkKIHsKKyAg
ICBnX3JldHVybl9pZl9mYWlsKEFUS19JU19DT01QT05FTlQoY29tcG9uZW50KSk7CisgICAgcmV0
dXJuSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUoY29tcG9uZW50KSk7CisKICAg
ICBJbnRSZWN0IHJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGNvcmUoY29tcG9uZW50KS0+ZWxl
bWVudFJlY3QoKSk7CiAgICAgY29udGVudHNSZWxhdGl2ZVRvQXRrQ29vcmRpbmF0ZVR5cGUoY29y
ZShjb21wb25lbnQpLCBjb29yZFR5cGUsIHJlY3QsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQog
CiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZUNvbXBvbmVudEdyYWJGb2N1cyhBdGtD
b21wb25lbnQqIGNvbXBvbmVudCkKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfSVNf
Q09NUE9ORU5UKGNvbXBvbmVudCksIEZBTFNFKTsKKyAgICByZXR1cm5WYWxJZk9iamVjdElzSW52
YWxpZChXRUJLSVRfQUNDRVNTSUJMRShjb21wb25lbnQpLCBGQUxTRSk7CisKICAgICBjb3JlKGNv
bXBvbmVudCktPnNldEZvY3VzZWQodHJ1ZSk7CiAgICAgcmV0dXJuIGNvcmUoY29tcG9uZW50KS0+
aXNGb2N1c2VkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZURvY3VtZW50LmNw
cAppbmRleCBmMDc0ODQzLi5jZDljNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VEb2N1bWVudC5jcHAKQEAgLTc4LDExICs3OCwxNyBAQCBzdGF0aWMgY29uc3QgZ2NoYXIqIGRv
Y3VtZW50QXR0cmlidXRlVmFsdWUoQXRrRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBnY2hhciog
YQogCiBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVEb2N1bWVudEdldEF0dHJp
YnV0ZVZhbHVlKEF0a0RvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgZ2NoYXIqIGF0dHJpYnV0ZSkK
IHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfSVNfRE9DVU1FTlQoZG9jdW1lbnQpLCAw
KTsKKyAgICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShkb2N1
bWVudCksIDApOworCiAgICAgcmV0dXJuIGRvY3VtZW50QXR0cmlidXRlVmFsdWUoZG9jdW1lbnQs
IGF0dHJpYnV0ZSk7CiB9CiAKIHN0YXRpYyBBdGtBdHRyaWJ1dGVTZXQqIHdlYmtpdEFjY2Vzc2li
bGVEb2N1bWVudEdldEF0dHJpYnV0ZXMoQXRrRG9jdW1lbnQqIGRvY3VtZW50KQogeworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19JU19ET0NVTUVOVChkb2N1bWVudCksIDApOworICAgIHJl
dHVyblZhbElmT2JqZWN0SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKGRvY3VtZW50KSwgMCk7
CisKICAgICBBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZVNldCA9IDA7CiAgICAgY29uc3QgZ2No
YXIqIGF0dHJpYnV0ZXNbXSA9IHsgIkRvY1R5cGUiLCAiRW5jb2RpbmciLCAiVVJJIiB9OwogCkBA
IC05Nyw2ICsxMDMsOSBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiB3ZWJraXRBY2Nlc3NpYmxl
RG9jdW1lbnRHZXRBdHRyaWJ1dGVzKEF0a0RvY3VtZW50KiBkb2N1bQogCiBzdGF0aWMgY29uc3Qg
Z2NoYXIqIHdlYmtpdEFjY2Vzc2libGVEb2N1bWVudEdldExvY2FsZShBdGtEb2N1bWVudCogZG9j
dW1lbnQpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX0lTX0RPQ1VNRU5UKGRvY3Vt
ZW50KSwgMCk7CisgICAgcmV0dXJuVmFsSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lC
TEUoZG9jdW1lbnQpLCAwKTsKKwogICAgIC8vIFRoZSBsb2dpYyB0byByZXNvbHZlIGxvY2FsZSBo
YXMgYmVlbiBtb3ZlZCB0bwogICAgIC8vIEF0a09iamVjdDo6Z2V0X29iamVjdF9sb2NhbGUoKSB2
aXJ0dWFsIG1ldGhvZC4gSG93ZXZlciwgdG8gYXZvaWQgYnJlYWtpbmcKICAgICAvLyBjbGllbnRz
IGV4cGVjdGluZyB0aGUgZGVwcmVjYXRlZCBBdGtEb2N1bWVudElmYWNlOjpnZXRfZG9jdW1lbnRf
bG9jYWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJsZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUVkaXRhYmxlVGV4dC5j
cHAKaW5kZXggYTMzYzU5My4uOGQ0OGNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUVkaXRhYmxlVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZUVkaXRhYmxlVGV4dC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJFZGl0
b3IuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisj
aW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVV0aWwuaCIKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3Np
YmxlV3JhcHBlckF0ay5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUwLDIwICs1
MSwyOSBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZShBdGtFZGl0YWJsZVRleHQq
IHRleHQpCiAgICAgcmV0dXJuIHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0
KFdFQktJVF9BQ0NFU1NJQkxFKHRleHQpKTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdlYmtpdEFj
Y2Vzc2libGVFZGl0YWJsZVRleHRTZXRSdW5BdHRyaWJ1dGVzKEF0a0VkaXRhYmxlVGV4dCosIEF0
a0F0dHJpYnV0ZVNldCosIGdpbnQsIGdpbnQpCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNz
aWJsZUVkaXRhYmxlVGV4dFNldFJ1bkF0dHJpYnV0ZXMoQXRrRWRpdGFibGVUZXh0KiB0ZXh0LCBB
dGtBdHRyaWJ1dGVTZXQqLCBnaW50LCBnaW50KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KEFUS19JU19FRElUQUJMRV9URVhUKHRleHQpLCBGQUxTRSk7CisgICAgcmV0dXJuVmFsSWZPYmpl
Y3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodGV4dCksIEZBTFNFKTsKKwogICAgIG5vdElt
cGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRB
Y2Nlc3NpYmxlRWRpdGFibGVUZXh0U2V0VGV4dENvbnRlbnRzKEF0a0VkaXRhYmxlVGV4dCogdGV4
dCwgY29uc3QgZ2NoYXIqIHN0cmluZykKIHsKKyAgICBnX3JldHVybl9pZl9mYWlsKEFUS19JU19F
RElUQUJMRV9URVhUKHRleHQpKTsKKyAgICByZXR1cm5JZk9iamVjdElzSW52YWxpZChXRUJLSVRf
QUNDRVNTSUJMRSh0ZXh0KSk7CisKICAgICAvLyBGSVhNRTogc3RyaW5nIG51bGxjaGVjaz8KICAg
ICBjb3JlKHRleHQpLT5zZXRWYWx1ZShTdHJpbmc6OmZyb21VVEY4KHN0cmluZykpOwogfQogCiBz
dGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0SW5zZXJ0VGV4dChBdGtFZGl0
YWJsZVRleHQqIHRleHQsIGNvbnN0IGdjaGFyKiBzdHJpbmcsIGdpbnQgbGVuZ3RoLCBnaW50KiBw
b3NpdGlvbikKIHsKKyAgICBnX3JldHVybl9pZl9mYWlsKEFUS19JU19FRElUQUJMRV9URVhUKHRl
eHQpKTsKKyAgICByZXR1cm5JZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRSh0ZXh0
KSk7CisKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuOwogCkBAIC04MywxOCArOTMs
MjcgQEAgc3RhdGljIHZvaWQgd2Via2l0QWNjZXNzaWJsZUVkaXRhYmxlVGV4dEluc2VydFRleHQo
QXRrRWRpdGFibGVUZXh0KiB0ZXh0LCBjb25zdAogICAgICAgICAqcG9zaXRpb24gKz0gbGVuZ3Ro
OwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0Q29weVRleHQo
QXRrRWRpdGFibGVUZXh0KiwgZ2ludCwgZ2ludCkKK3N0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2li
bGVFZGl0YWJsZVRleHRDb3B5VGV4dChBdGtFZGl0YWJsZVRleHQqIHRleHQsIGdpbnQsIGdpbnQp
CiB7CisgICAgZ19yZXR1cm5faWZfZmFpbChBVEtfSVNfRURJVEFCTEVfVEVYVCh0ZXh0KSk7Cisg
ICAgcmV0dXJuSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodGV4dCkpOworCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0QWNjZXNzaWJsZUVk
aXRhYmxlVGV4dEN1dFRleHQoQXRrRWRpdGFibGVUZXh0KiwgZ2ludCwgZ2ludCkKK3N0YXRpYyB2
b2lkIHdlYmtpdEFjY2Vzc2libGVFZGl0YWJsZVRleHRDdXRUZXh0KEF0a0VkaXRhYmxlVGV4dCog
dGV4dCwgZ2ludCwgZ2ludCkKIHsKKyAgICBnX3JldHVybl9pZl9mYWlsKEFUS19JU19FRElUQUJM
RV9URVhUKHRleHQpKTsKKyAgICByZXR1cm5JZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNT
SUJMRSh0ZXh0KSk7CisKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiBzdGF0aWMgdm9pZCB3
ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0RGVsZXRlVGV4dChBdGtFZGl0YWJsZVRleHQqIHRl
eHQsIGdpbnQgc3RhcnRQb3MsIGdpbnQgZW5kUG9zKQogeworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
QVRLX0lTX0VESVRBQkxFX1RFWFQodGV4dCkpOworICAgIHJldHVybklmT2JqZWN0SXNJbnZhbGlk
KFdFQktJVF9BQ0NFU1NJQkxFKHRleHQpKTsKKwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
cmVPYmplY3QgPSBjb3JlKHRleHQpOwogICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQgaW4g
V2ViQ29yZQogICAgIC8vIGNvcmVPYmplY3QtPnNldFNlbGVjdGVkVGV4dFJhbmdlKFBsYWluVGV4
dFJhbmdlKHN0YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBvcykpOwpAQCAtMTA5LDggKzEyOCwxMSBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0RGVsZXRlVGV4dChBdGtF
ZGl0YWJsZVRleHQqIHRleHQsIGdpbnQgcwogICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3Io
KS5wZXJmb3JtRGVsZXRlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVFZGl0
YWJsZVRleHRQYXN0ZVRleHQoQXRrRWRpdGFibGVUZXh0KiwgZ2ludCkKK3N0YXRpYyB2b2lkIHdl
YmtpdEFjY2Vzc2libGVFZGl0YWJsZVRleHRQYXN0ZVRleHQoQXRrRWRpdGFibGVUZXh0KiB0ZXh0
LCBnaW50KQogeworICAgIGdfcmV0dXJuX2lmX2ZhaWwoQVRLX0lTX0VESVRBQkxFX1RFWFQodGV4
dCkpOworICAgIHJldHVybklmT2JqZWN0SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHRleHQp
KTsKKwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZUh5cGVydGV4dC5jcHAKaW5kZXggMGUzMzhkOC4uNTU3Y2RjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZUh5cGVydGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZUludGVyZmFjZUh5cGVydGV4dC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNp
ZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0Lmgi
CisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVV0aWwuaCIKICNpbmNsdWRlICJXZWJLaXRBY2Nl
c3NpYmxlV3JhcHBlckF0ay5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM3LDYg
KzM4LDkgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUoQXRrSHlwZXJ0ZXh0KiBo
eXBlcnRleHQpCiAKIHN0YXRpYyBBdGtIeXBlcmxpbmsqIHdlYmtpdEFjY2Vzc2libGVIeXBlcnRl
eHRHZXRMaW5rKEF0a0h5cGVydGV4dCogaHlwZXJ0ZXh0LCBnaW50IGluZGV4KQogeworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19IWVBFUlRFWFQoaHlwZXJ0ZXh0KSwgMCk7CisgICAgcmV0
dXJuVmFsSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUoaHlwZXJ0ZXh0KSwgMCk7
CisKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
Y2hpbGRyZW4gPSBjb3JlKGh5cGVydGV4dCktPmNoaWxkcmVuKCk7CiAgICAgaWYgKGluZGV4IDwg
MCB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpID49IGNoaWxkcmVuLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC02Miw2ICs2Niw5IEBAIHN0YXRpYyBBdGtIeXBlcmxpbmsqIHdl
YmtpdEFjY2Vzc2libGVIeXBlcnRleHRHZXRMaW5rKEF0a0h5cGVydGV4dCogaHlwZXJ0ZXh0LCBn
CiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcnRleHRHZXROTGlua3MoQXRrSHlw
ZXJ0ZXh0KiBoeXBlcnRleHQpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX0hZUEVS
VEVYVChoeXBlcnRleHQpLCAwKTsKKyAgICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJL
SVRfQUNDRVNTSUJMRShoeXBlcnRleHQpLCAwKTsKKwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IGNvcmUoaHlwZXJ0ZXh0KS0+
Y2hpbGRyZW4oKTsKICAgICBpZiAoIWNoaWxkcmVuLnNpemUoKSkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC04MSw2ICs4OCw5IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcnRleHRH
ZXROTGlua3MoQXRrSHlwZXJ0ZXh0KiBoeXBlcnRleHQpCiAKIHN0YXRpYyBnaW50IHdlYmtpdEFj
Y2Vzc2libGVIeXBlcnRleHRHZXRMaW5rSW5kZXgoQXRrSHlwZXJ0ZXh0KiBoeXBlcnRleHQsIGdp
bnQgY2hhckluZGV4KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19IWVBFUlRFWFQo
aHlwZXJ0ZXh0KSwgLTEpOworICAgIHJldHVyblZhbElmT2JqZWN0SXNJbnZhbGlkKFdFQktJVF9B
Q0NFU1NJQkxFKGh5cGVydGV4dCksIC0xKTsKKwogICAgIHNpemVfdCBsaW5rc0NvdW50ID0gd2Vi
a2l0QWNjZXNzaWJsZUh5cGVydGV4dEdldE5MaW5rcyhoeXBlcnRleHQpOwogICAgIGlmICghbGlu
a3NDb3VudCkKICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VJ
bWFnZS5jcHAKaW5kZXggNmQ3ZGYxMi4uMzZjMzliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlSW1hZ2UuY3BwCkBAIC01MSwxNyArNTEsMjYgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNvcmUoQXRrSW1hZ2UqIGltYWdlKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3Np
YmxlSW1hZ2VHZXRJbWFnZVBvc2l0aW9uKEF0a0ltYWdlKiBpbWFnZSwgZ2ludCogeCwgZ2ludCog
eSwgQXRrQ29vcmRUeXBlIGNvb3JkVHlwZSkKIHsKKyAgICBnX3JldHVybl9pZl9mYWlsKEFUS19J
TUFHRShpbWFnZSkpOworICAgIHJldHVybklmT2JqZWN0SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJ
QkxFKGltYWdlKSk7CisKICAgICBJbnRSZWN0IHJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGNv
cmUoaW1hZ2UpLT5lbGVtZW50UmVjdCgpKTsKICAgICBjb250ZW50c1JlbGF0aXZlVG9BdGtDb29y
ZGluYXRlVHlwZShjb3JlKGltYWdlKSwgY29vcmRUeXBlLCByZWN0LCB4LCB5KTsKIH0KIAogc3Rh
dGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VHZXRJbWFnZURlc2NyaXB0aW9u
KEF0a0ltYWdlKiBpbWFnZSkKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfSU1BR0Uo
aW1hZ2UpLCAwKTsKKyAgICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNT
SUJMRShpbWFnZSksIDApOworCiAgICAgcmV0dXJuIGNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHko
QVRLX09CSkVDVChpbWFnZSksIEF0a0NhY2hlZEltYWdlRGVzY3JpcHRpb24sIGFjY2Vzc2liaWxp
dHlEZXNjcmlwdGlvbihjb3JlKGltYWdlKSkpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nl
c3NpYmxlSW1hZ2VHZXRJbWFnZVNpemUoQXRrSW1hZ2UqIGltYWdlLCBnaW50KiB3aWR0aCwgZ2lu
dCogaGVpZ2h0KQogeworICAgIGdfcmV0dXJuX2lmX2ZhaWwoQVRLX0lNQUdFKGltYWdlKSk7Cisg
ICAgcmV0dXJuSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUoaW1hZ2UpKTsKKwog
ICAgIEludFNpemUgc2l6ZSA9IGNvcmUoaW1hZ2UpLT5waXhlbFNuYXBwZWRTaXplKCk7CiAKICAg
ICBpZiAod2lkdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3Bw
CmluZGV4IDdlMDI0YjAuLmQxOGIxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VTZWxlY3Rpb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eU9iamVjdC5oIgogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVV0aWwuaCIKICNpbmNsdWRl
ICJXZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKQEAgLTEyNyw2ICsxMjgsOSBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogb3B0aW9u
RnJvbVNlbGVjdGlvbihBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZ2ludCBpbgogCiBzdGF0aWMg
Z2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvbkFkZFNlbGVjdGlvbihBdGtTZWxlY3Rp
b24qIHNlbGVjdGlvbiwgZ2ludCBpbmRleCkKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChB
VEtfU0VMRUNUSU9OKHNlbGVjdGlvbiksIEZBTFNFKTsKKyAgICByZXR1cm5WYWxJZk9iamVjdElz
SW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShzZWxlY3Rpb24pLCBGQUxTRSk7CisKICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBjb3JlU2VsZWN0aW9uID0gY29yZShzZWxlY3Rpb24pOwogICAgIGlm
ICghY29yZVNlbGVjdGlvbikKICAgICAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMTQyLDYgKzE0Niw5
IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9uQWRkU2VsZWN0aW9u
KEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnCiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nl
c3NpYmxlU2VsZWN0aW9uQ2xlYXJTZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24pCiB7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX1NFTEVDVElPTihzZWxlY3Rpb24pLCBGQUxT
RSk7CisgICAgcmV0dXJuVmFsSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUoc2Vs
ZWN0aW9uKSwgRkFMU0UpOworCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVNlbGVjdGlv
biA9IGNvcmUoc2VsZWN0aW9uKTsKICAgICBpZiAoIWNvcmVTZWxlY3Rpb24pCiAgICAgICAgIHJl
dHVybiBGQUxTRTsKQEAgLTE1OSw2ICsxNjYsOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNj
ZXNzaWJsZVNlbGVjdGlvbkNsZWFyU2VsZWN0aW9uKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uKQog
CiBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9uUmVmU2VsZWN0aW9u
KEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50IGluZGV4KQogeworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKEFUS19TRUxFQ1RJT04oc2VsZWN0aW9uKSwgMCk7CisgICAgcmV0dXJuVmFsSWZP
YmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUoc2VsZWN0aW9uKSwgMCk7CisKICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvcHRpb24gPSBvcHRpb25Gcm9tU2VsZWN0aW9uKHNlbGVjdGlv
biwgaW5kZXgpOwogICAgIGlmIChvcHRpb24pIHsKICAgICAgICAgQXRrT2JqZWN0KiBjaGlsZCA9
IG9wdGlvbi0+d3JhcHBlcigpOwpAQCAtMTcxLDYgKzE4MSw5IEBAIHN0YXRpYyBBdGtPYmplY3Qq
IHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25SZWZTZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxl
Y3Rpb24sCiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25HZXRTZWxlY3Rp
b25Db3VudChBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbikKIHsKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChBVEtfU0VMRUNUSU9OKHNlbGVjdGlvbiksIDApOworICAgIHJldHVyblZhbElmT2JqZWN0
SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHNlbGVjdGlvbiksIDApOworCiAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogY29yZVNlbGVjdGlvbiA9IGNvcmUoc2VsZWN0aW9uKTsKICAgICBpZiAo
IWNvcmVTZWxlY3Rpb24gfHwgIWNvcmVTZWxlY3Rpb24tPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE5NSw5ICsyMDgsMTIgQEAgc3RhdGljIGdp
bnQgd2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvbkdldFNlbGVjdGlvbkNvdW50KEF0a1NlbGVjdGlv
biogc2VsZWN0aW9uKQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZVNlbGVjdGlv
bklzQ2hpbGRTZWxlY3RlZChBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZ2ludCBpbmRleCkKIHsK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfU0VMRUNUSU9OKHNlbGVjdGlvbiksIEZBTFNF
KTsKKyAgICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShzZWxl
Y3Rpb24pLCBGQUxTRSk7CisKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlU2VsZWN0aW9u
ID0gY29yZShzZWxlY3Rpb24pOwogICAgIGlmICghY29yZVNlbGVjdGlvbikKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9wdGlvbiA9IG9wdGlvbkZyb21MaXN0KHNlbGVjdGlvbiwgaW5kZXgpOwogICAgIGlmIChvcHRp
b24gJiYgKGNvcmVTZWxlY3Rpb24tPmlzTGlzdEJveCgpIHx8IGNvcmVTZWxlY3Rpb24tPmlzTWVu
dUxpc3QoKSkpCkBAIC0yMDgsOSArMjI0LDEyIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nl
c3NpYmxlU2VsZWN0aW9uSXNDaGlsZFNlbGVjdGVkKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uCiAK
IHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9uUmVtb3ZlU2VsZWN0aW9u
KEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50IGluZGV4KQogeworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKEFUS19TRUxFQ1RJT04oc2VsZWN0aW9uKSwgRkFMU0UpOworICAgIHJldHVyblZh
bElmT2JqZWN0SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHNlbGVjdGlvbiksIEZBTFNFKTsK
KwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVTZWxlY3Rpb24gPSBjb3JlKHNlbGVjdGlv
bik7CiAgICAgaWYgKCFjb3JlU2VsZWN0aW9uKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIEZBTFNFOwogCiAgICAgLy8gVE9ETzogVGhpcyBpcyBvbmx5IGdldHRpbmcgY2FsbGVk
IGlmIGkgPT0gMC4gV2hhdCBpcyBwcmV2ZW50aW5nIHRoZSByZXN0PwogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZyb21TZWxlY3Rpb24oc2VsZWN0aW9uLCBpbmRleCk7
CkBAIC0yMjQsNiArMjQzLDkgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVTZWxl
Y3Rpb25SZW1vdmVTZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24KIAogc3RhdGljIGdi
b29sZWFuIHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25TZWxlY3RBbGxTZWxlY3Rpb24oQXRrU2Vs
ZWN0aW9uKiBzZWxlY3Rpb24pCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX1NFTEVD
VElPTihzZWxlY3Rpb24pLCBGQUxTRSk7CisgICAgcmV0dXJuVmFsSWZPYmplY3RJc0ludmFsaWQo
V0VCS0lUX0FDQ0VTU0lCTEUoc2VsZWN0aW9uKSwgRkFMU0UpOworCiAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogY29yZVNlbGVjdGlvbiA9IGNvcmUoc2VsZWN0aW9uKTsKICAgICBpZiAoIWNvcmVT
ZWxlY3Rpb24gfHwgIWNvcmVTZWxlY3Rpb24tPmlzTXVsdGlTZWxlY3RhYmxlKCkpCiAgICAgICAg
IHJldHVybiBGQUxTRTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwCmluZGV4
IDI3NWYzNGIuLjhkNThmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNw
cApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNs
dWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZVRleHQuaCIKKyNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlVXRpbC5oIgogI2luY2x1ZGUgIldl
YktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtOTEsNiArOTIsOSBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogY2VsbEF0SW5k
ZXgoQXRrVGFibGUqIHRhYmxlLCBnaW50IGluZGV4KQogCiBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJr
aXRBY2Nlc3NpYmxlVGFibGVSZWZBdChBdGtUYWJsZSogdGFibGUsIGdpbnQgcm93LCBnaW50IGNv
bHVtbikKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfVEFCTEUodGFibGUpLCAwKTsK
KyAgICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRSh0YWJsZSks
IDApOworCiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogYXhDZWxsID0gY2VsbCh0YWJsZSwg
cm93LCBjb2x1bW4pOwogICAgIGlmICghYXhDZWxsKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEw
Niw2ICsxMTAsOSBAQCBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlVGFibGVSZWZB
dChBdGtUYWJsZSogdGFibGUsIGdpbnQgcm93LCBnaW50IGNvbAogCiBzdGF0aWMgZ2ludCB3ZWJr
aXRBY2Nlc3NpYmxlVGFibGVHZXRJbmRleEF0KEF0a1RhYmxlKiB0YWJsZSwgZ2ludCByb3csIGdp
bnQgY29sdW1uKQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19UQUJMRSh0YWJsZSks
IC0xKTsKKyAgICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRSh0
YWJsZSksIC0xKTsKKwogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGF4Q2VsbCA9IGNlbGwo
dGFibGUsIHJvdywgY29sdW1uKTsKICAgICBBY2Nlc3NpYmlsaXR5VGFibGUqIGF4VGFibGUgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGUqPihjb3JlKHRhYmxlKSk7CiAgICAgcmV0dXJu
IGNlbGxJbmRleChheENlbGwsIGF4VGFibGUpOwpAQCAtMTEzLDYgKzEyMCw5IEBAIHN0YXRpYyBn
aW50IHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldEluZGV4QXQoQXRrVGFibGUqIHRhYmxlLCBnaW50
IHJvdywgZ2ludCBjb2x1CiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENv
bHVtbkF0SW5kZXgoQXRrVGFibGUqIHRhYmxlLCBnaW50IGluZGV4KQogeworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKEFUS19UQUJMRSh0YWJsZSksIC0xKTsKKyAgICByZXR1cm5WYWxJZk9iamVj
dElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRSh0YWJsZSksIC0xKTsKKwogICAgIEFjY2Vzc2li
aWxpdHlUYWJsZUNlbGwqIGF4Q2VsbCA9IGNlbGxBdEluZGV4KHRhYmxlLCBpbmRleCk7CiAgICAg
aWYgKGF4Q2VsbCkgewogICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFu
Z2U7CkBAIC0xMjQsNiArMTM0LDkgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZVRhYmxl
R2V0Q29sdW1uQXRJbmRleChBdGtUYWJsZSogdGFibGUsIGdpbnQgaW5kZXgpCiAKIHN0YXRpYyBn
aW50IHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0F0SW5kZXgoQXRrVGFibGUqIHRhYmxlLCBn
aW50IGluZGV4KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19UQUJMRSh0YWJsZSks
IC0xKTsKKyAgICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRSh0
YWJsZSksIC0xKTsKKwogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGF4Q2VsbCA9IGNlbGxB
dEluZGV4KHRhYmxlLCBpbmRleCk7CiAgICAgaWYgKGF4Q2VsbCkgewogICAgICAgICBwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7CkBAIC0xMzUsNiArMTQ4LDkgQEAgc3RhdGljIGdp
bnQgd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Um93QXRJbmRleChBdGtUYWJsZSogdGFibGUsIGdp
bnQgaW5kZXgpCiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldE5Db2x1bW5z
KEF0a1RhYmxlKiB0YWJsZSkKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfVEFCTEUo
dGFibGUpLCAwKTsKKyAgICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNT
SUJMRSh0YWJsZSksIDApOworCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjVGFibGUgPSBj
b3JlKHRhYmxlKTsKICAgICBpZiAoYWNjVGFibGUtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlKj4oYWNj
VGFibGUpLT5jb2x1bW5Db3VudCgpOwpAQCAtMTQzLDYgKzE1OSw5IEBAIHN0YXRpYyBnaW50IHdl
YmtpdEFjY2Vzc2libGVUYWJsZUdldE5Db2x1bW5zKEF0a1RhYmxlKiB0YWJsZSkKIAogc3RhdGlj
IGdpbnQgd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0TlJvd3MoQXRrVGFibGUqIHRhYmxlKQogewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19UQUJMRSh0YWJsZSksIDApOworICAgIHJldHVy
blZhbElmT2JqZWN0SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHRhYmxlKSwgMCk7CisKICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2NUYWJsZSA9IGNvcmUodGFibGUpOwogICAgIGlmIChh
Y2NUYWJsZS0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGUqPihhY2NUYWJsZSktPnJvd0NvdW50KCk7CkBA
IC0xNTEsNiArMTcwLDkgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0TlJv
d3MoQXRrVGFibGUqIHRhYmxlKQogCiBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlVGFibGVH
ZXRDb2x1bW5FeHRlbnRBdChBdGtUYWJsZSogdGFibGUsIGdpbnQgcm93LCBnaW50IGNvbHVtbikK
IHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfVEFCTEUodGFibGUpLCAwKTsKKyAgICBy
ZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRSh0YWJsZSksIDApOwor
CiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogYXhDZWxsID0gY2VsbCh0YWJsZSwgcm93LCBj
b2x1bW4pOwogICAgIGlmIChheENlbGwpIHsKICAgICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IGNvbHVtblJhbmdlOwpAQCAtMTYyLDYgKzE4NCw5IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFj
Y2Vzc2libGVUYWJsZUdldENvbHVtbkV4dGVudEF0KEF0a1RhYmxlKiB0YWJsZSwgZ2ludCByb3cs
IGdpCiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0V4dGVudEF0KEF0
a1RhYmxlKiB0YWJsZSwgZ2ludCByb3csIGdpbnQgY29sdW1uKQogeworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKEFUS19UQUJMRSh0YWJsZSksIDApOworICAgIHJldHVyblZhbElmT2JqZWN0SXNJ
bnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHRhYmxlKSwgMCk7CisKICAgICBBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsKiBheENlbGwgPSBjZWxsKHRhYmxlLCByb3csIGNvbHVtbik7CiAgICAgaWYgKGF4
Q2VsbCkgewogICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7CkBAIC0x
NzMsNiArMTk4LDkgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Um93RXh0
ZW50QXQoQXRrVGFibGUqIHRhYmxlLCBnaW50IHJvdywgZ2ludAogCiBzdGF0aWMgQXRrT2JqZWN0
KiB3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRDb2x1bW5IZWFkZXIoQXRrVGFibGUqIHRhYmxlLCBn
aW50IGNvbHVtbikKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfVEFCTEUodGFibGUp
LCAwKTsKKyAgICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRSh0
YWJsZSksIDApOworCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjVGFibGUgPSBjb3JlKHRh
YmxlKTsKICAgICBpZiAoYWNjVGFibGUtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKSB7
CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBhbGxDb2x1bW5IZWFkZXJzOwpAQCAtMTkxLDYgKzIxOSw5IEBAIHN0YXRpYyBBdGtPYmplY3Qq
IHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkhlYWRlcihBdGtUYWJsZSogdGFibGUsIGdp
bnQgY29sCiAKIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0hl
YWRlcihBdGtUYWJsZSogdGFibGUsIGdpbnQgcm93KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKEFUS19UQUJMRSh0YWJsZSksIDApOworICAgIHJldHVyblZhbElmT2JqZWN0SXNJbnZhbGlk
KFdFQktJVF9BQ0NFU1NJQkxFKHRhYmxlKSwgMCk7CisKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBhY2NUYWJsZSA9IGNvcmUodGFibGUpOwogICAgIGlmIChhY2NUYWJsZS0+aXNBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0KCkpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFsbFJvd0hlYWRlcnM7CkBAIC0yMDksNiArMjQwLDkgQEAg
c3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Um93SGVhZGVyKEF0a1Rh
YmxlKiB0YWJsZSwgZ2ludCByb3cpCiAKIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdEFjY2Vzc2li
bGVUYWJsZUdldENhcHRpb24oQXRrVGFibGUqIHRhYmxlKQogeworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKEFUS19UQUJMRSh0YWJsZSksIDApOworICAgIHJldHVyblZhbElmT2JqZWN0SXNJbnZh
bGlkKFdFQktJVF9BQ0NFU1NJQkxFKHRhYmxlKSwgMCk7CisKICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBhY2NUYWJsZSA9IGNvcmUodGFibGUpOwogICAgIGlmIChhY2NUYWJsZS0+aXNBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0KCkpIHsKICAgICAgICAgTm9kZSogbm9kZSA9IGFjY1RhYmxlLT5u
b2RlKCk7CkBAIC0yMjMsNiArMjU3LDkgQEAgc3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNz
aWJsZVRhYmxlR2V0Q2FwdGlvbihBdGtUYWJsZSogdGFibGUpCiAKIHN0YXRpYyBjb25zdCBnY2hh
ciogd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q29sdW1uRGVzY3JpcHRpb24oQXRrVGFibGUqIHRh
YmxlLCBnaW50IGNvbHVtbikKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfVEFCTEUo
dGFibGUpLCAwKTsKKyAgICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNT
SUJMRSh0YWJsZSksIDApOworCiAgICAgQXRrT2JqZWN0KiBjb2x1bW5IZWFkZXIgPSBhdGtfdGFi
bGVfZ2V0X2NvbHVtbl9oZWFkZXIodGFibGUsIGNvbHVtbik7CiAgICAgaWYgKGNvbHVtbkhlYWRl
ciAmJiBBVEtfSVNfVEVYVChjb2x1bW5IZWFkZXIpKQogICAgICAgICByZXR1cm4gYXRrX3RleHRf
Z2V0X3RleHQoQVRLX1RFWFQoY29sdW1uSGVhZGVyKSwgMCwgLTEpOwpAQCAtMjMyLDYgKzI2OSw5
IEBAIHN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q29sdW1uRGVz
Y3JpcHRpb24oQXRrVGFibGUqIHRhYmxlLCBnCiAKIHN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0
QWNjZXNzaWJsZVRhYmxlR2V0Um93RGVzY3JpcHRpb24oQXRrVGFibGUqIHRhYmxlLCBnaW50IHJv
dykKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfVEFCTEUodGFibGUpLCAwKTsKKyAg
ICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRSh0YWJsZSksIDAp
OworCiAgICAgQXRrT2JqZWN0KiByb3dIZWFkZXIgPSBhdGtfdGFibGVfZ2V0X3Jvd19oZWFkZXIo
dGFibGUsIHJvdyk7CiAgICAgaWYgKHJvd0hlYWRlciAmJiBBVEtfSVNfVEVYVChyb3dIZWFkZXIp
KQogICAgICAgICByZXR1cm4gYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQocm93SGVhZGVyKSwg
MCwgLTEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCmluZGV4IGYzZTRjY2Uu
LmRjZjc4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKQEAgLTU1MCw2
ICs1NTAsOSBAQCBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KEFjY2Vz
c2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIFZpc2libAogCiBzdGF0aWMgZ2NoYXIqIHdlYmtp
dEFjY2Vzc2libGVUZXh0R2V0VGV4dChBdGtUZXh0KiB0ZXh0LCBnaW50IHN0YXJ0T2Zmc2V0LCBn
aW50IGVuZE9mZnNldCkKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfVEVYVCh0ZXh0
KSwgMCk7CisgICAgcmV0dXJuVmFsSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUo
dGV4dCksIDApOworCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUo
dGV4dCk7CiAKICAgICBpbnQgZW5kID0gZW5kT2Zmc2V0OwpAQCAtMTA3NiwyNyArMTA3OSw0MiBA
QCBzdGF0aWMgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dEZvck9mZnNldChBdGtU
ZXh0KiB0ZXh0LCBnaW50IG9mZnNldCwgQQogCiBzdGF0aWMgZ2NoYXIqIHdlYmtpdEFjY2Vzc2li
bGVUZXh0R2V0VGV4dEFmdGVyT2Zmc2V0KEF0a1RleHQqIHRleHQsIGdpbnQgb2Zmc2V0LCBBdGtU
ZXh0Qm91bmRhcnkgYm91bmRhcnlUeXBlLCBnaW50KiBzdGFydE9mZnNldCwgZ2ludCogZW5kT2Zm
c2V0KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19URVhUKHRleHQpLCAwKTsKKyAg
ICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRSh0ZXh0KSwgMCk7
CisKICAgICByZXR1cm4gd2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXh0Rm9yT2Zmc2V0KHRleHQs
IG9mZnNldCwgYm91bmRhcnlUeXBlLCBHZXRUZXh0UG9zaXRpb25BZnRlciwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCk7CiB9CiAKIHN0YXRpYyBnY2hhciogd2Via2l0QWNjZXNzaWJsZVRleHRHZXRU
ZXh0QXRPZmZzZXQoQXRrVGV4dCogdGV4dCwgZ2ludCBvZmZzZXQsIEF0a1RleHRCb3VuZGFyeSBi
b3VuZGFyeVR5cGUsIGdpbnQqIHN0YXJ0T2Zmc2V0LCBnaW50KiBlbmRPZmZzZXQpCiB7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX1RFWFQodGV4dCksIDApOworICAgIHJldHVyblZhbElm
T2JqZWN0SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHRleHQpLCAwKTsKKwogICAgIHJldHVy
biB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHRGb3JPZmZzZXQodGV4dCwgb2Zmc2V0LCBib3Vu
ZGFyeVR5cGUsIEdldFRleHRQb3NpdGlvbkF0LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKIH0K
IAogc3RhdGljIGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHRCZWZvcmVPZmZzZXQo
QXRrVGV4dCogdGV4dCwgZ2ludCBvZmZzZXQsIEF0a1RleHRCb3VuZGFyeSBib3VuZGFyeVR5cGUs
IGdpbnQqIHN0YXJ0T2Zmc2V0LCBnaW50KiBlbmRPZmZzZXQpCiB7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoQVRLX1RFWFQodGV4dCksIDApOworICAgIHJldHVyblZhbElmT2JqZWN0SXNJbnZh
bGlkKFdFQktJVF9BQ0NFU1NJQkxFKHRleHQpLCAwKTsKKwogICAgIHJldHVybiB3ZWJraXRBY2Nl
c3NpYmxlVGV4dEdldFRleHRGb3JPZmZzZXQodGV4dCwgb2Zmc2V0LCBib3VuZGFyeVR5cGUsIEdl
dFRleHRQb3NpdGlvbkJlZm9yZSwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7CiB9CiAKLXN0YXRp
YyBndW5pY2hhciB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldENoYXJhY3RlckF0T2Zmc2V0KEF0a1Rl
eHQqLCBnaW50KQorc3RhdGljIGd1bmljaGFyIHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0Q2hhcmFj
dGVyQXRPZmZzZXQoQXRrVGV4dCogdGV4dCwgZ2ludCkKIHsKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChBVEtfVEVYVCh0ZXh0KSwgMCk7CisgICAgcmV0dXJuVmFsSWZPYmplY3RJc0ludmFsaWQo
V0VCS0lUX0FDQ0VTU0lCTEUodGV4dCksIDApOworCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAg
ICByZXR1cm4gMDsKIH0KIAogc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZVRleHRHZXRDYXJl
dE9mZnNldChBdGtUZXh0KiB0ZXh0KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19U
RVhUKHRleHQpLCAwKTsKKyAgICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUND
RVNTSUJMRSh0ZXh0KSwgMCk7CisKICAgICAvLyBjb3JlT2JqZWN0IGlzIHRoZSB1bmlnbm9yZWQg
b2JqZWN0IHdob3NlIG9mZnNldCB0aGUgY2FsbGVyIGlzIHJlcXVlc3RpbmcuCiAgICAgLy8gZm9j
dXNlZE9iamVjdCBpcyB0aGUgb2JqZWN0IHdpdGggdGhlIGNhcmV0LiBJdCBpcyBsaWtlbHkgaWdu
b3JlZCAtLSB1bmxlc3MgaXQncyBhIGxpbmsuCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29y
ZU9iamVjdCA9IGNvcmUodGV4dCk7CkBAIC0xMTE4LDYgKzExMzYsOSBAQCBzdGF0aWMgZ2ludCB3
ZWJraXRBY2Nlc3NpYmxlVGV4dEdldENhcmV0T2Zmc2V0KEF0a1RleHQqIHRleHQpCiAKIHN0YXRp
YyBBdGtBdHRyaWJ1dGVTZXQqIHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0UnVuQXR0cmlidXRlcyhB
dGtUZXh0KiB0ZXh0LCBnaW50IG9mZnNldCwgZ2ludCogc3RhcnRPZmZzZXQsIGdpbnQqIGVuZE9m
ZnNldCkKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfVEVYVCh0ZXh0KSwgMCk7Cisg
ICAgcmV0dXJuVmFsSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodGV4dCksIDAp
OworCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUodGV4dCk7CiAg
ICAgQXRrQXR0cmlidXRlU2V0KiByZXN1bHQ7CiAKQEAgLTExNDIsNiArMTE2Myw5IEBAIHN0YXRp
YyBBdGtBdHRyaWJ1dGVTZXQqIHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0UnVuQXR0cmlidXRlcyhB
dGtUZXh0KiB0ZXh0LCBnaW50CiAKIHN0YXRpYyBBdGtBdHRyaWJ1dGVTZXQqIHdlYmtpdEFjY2Vz
c2libGVUZXh0R2V0RGVmYXVsdEF0dHJpYnV0ZXMoQXRrVGV4dCogdGV4dCkKIHsKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChBVEtfVEVYVCh0ZXh0KSwgMCk7CisgICAgcmV0dXJuVmFsSWZPYmpl
Y3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodGV4dCksIDApOworCiAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUodGV4dCk7CiAgICAgaWYgKCFjb3JlT2JqZWN0
IHx8ICFjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0xMTUxLDYgKzExNzUsOSBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiB3
ZWJraXRBY2Nlc3NpYmxlVGV4dEdldERlZmF1bHRBdHRyaWJ1dGVzKEF0a1RleHQqIHRleHQpCiAK
IHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0Q2hhcmFjdGVyRXh0ZW50cyhBdGtU
ZXh0KiB0ZXh0LCBnaW50IG9mZnNldCwgZ2ludCogeCwgZ2ludCogeSwgZ2ludCogd2lkdGgsIGdp
bnQqIGhlaWdodCwgQXRrQ29vcmRUeXBlIGNvb3JkcykKIHsKKyAgICBnX3JldHVybl9pZl9mYWls
KEFUS19URVhUKHRleHQpKTsKKyAgICByZXR1cm5JZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUND
RVNTSUJMRSh0ZXh0KSk7CisKICAgICBJbnRSZWN0IGV4dGVudHMgPSB0ZXh0RXh0ZW50cyh0ZXh0
LCBvZmZzZXQsIDEsIGNvb3Jkcyk7CiAgICAgKnggPSBleHRlbnRzLngoKTsKICAgICAqeSA9IGV4
dGVudHMueSgpOwpAQCAtMTE2MCw2ICsxMTg3LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0QWNjZXNz
aWJsZVRleHRHZXRDaGFyYWN0ZXJFeHRlbnRzKEF0a1RleHQqIHRleHQsIGdpbnQgb2Zmc2V0LAog
CiBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFJhbmdlRXh0ZW50cyhBdGtUZXh0
KiB0ZXh0LCBnaW50IHN0YXJ0T2Zmc2V0LCBnaW50IGVuZE9mZnNldCwgQXRrQ29vcmRUeXBlIGNv
b3JkcywgQXRrVGV4dFJlY3RhbmdsZSogcmVjdCkKIHsKKyAgICBnX3JldHVybl9pZl9mYWlsKEFU
S19URVhUKHRleHQpKTsKKyAgICByZXR1cm5JZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNT
SUJMRSh0ZXh0KSk7CisKICAgICBJbnRSZWN0IGV4dGVudHMgPSB0ZXh0RXh0ZW50cyh0ZXh0LCBz
dGFydE9mZnNldCwgZW5kT2Zmc2V0IC0gc3RhcnRPZmZzZXQsIGNvb3Jkcyk7CiAgICAgcmVjdC0+
eCA9IGV4dGVudHMueCgpOwogICAgIHJlY3QtPnkgPSBleHRlbnRzLnkoKTsKQEAgLTExNjksMTEg
KzExOTksMTcgQEAgc3RhdGljIHZvaWQgd2Via2l0QWNjZXNzaWJsZVRleHRHZXRSYW5nZUV4dGVu
dHMoQXRrVGV4dCogdGV4dCwgZ2ludCBzdGFydE9mZnNldCwKIAogc3RhdGljIGdpbnQgd2Via2l0
QWNjZXNzaWJsZVRleHRHZXRDaGFyYWN0ZXJDb3VudChBdGtUZXh0KiB0ZXh0KQogeworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19URVhUKHRleHQpLCAwKTsKKyAgICByZXR1cm5WYWxJZk9i
amVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRSh0ZXh0KSwgMCk7CisKICAgICByZXR1cm4g
YWNjZXNzaWJpbGl0eU9iamVjdExlbmd0aChjb3JlKHRleHQpKTsKIH0KIAogc3RhdGljIGdpbnQg
d2Via2l0QWNjZXNzaWJsZVRleHRHZXRPZmZzZXRBdFBvaW50KEF0a1RleHQqIHRleHQsIGdpbnQg
eCwgZ2ludCB5LCBBdGtDb29yZFR5cGUpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRL
X1RFWFQodGV4dCksIDApOworICAgIHJldHVyblZhbElmT2JqZWN0SXNJbnZhbGlkKFdFQktJVF9B
Q0NFU1NJQkxFKHRleHQpLCAwKTsKKwogICAgIC8vIEZJWE1FOiBVc2UgdGhlIEF0a0Nvb3JkVHlw
ZQogICAgIC8vIFRPRE86IElzIGl0IGNvcnJlY3QgdG8gaWdub3JlIHJhbmdlLmxlbmd0aD8KICAg
ICBJbnRQb2ludCBwb3MoeCwgeSk7CkBAIC0xMTgzLDYgKzEyMTksOSBAQCBzdGF0aWMgZ2ludCB3
ZWJraXRBY2Nlc3NpYmxlVGV4dEdldE9mZnNldEF0UG9pbnQoQXRrVGV4dCogdGV4dCwgZ2ludCB4
LCBnaW50IHksCiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0TlNlbGVjdGlv
bnMoQXRrVGV4dCogdGV4dCkKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfVEVYVCh0
ZXh0KSwgMCk7CisgICAgcmV0dXJuVmFsSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lC
TEUodGV4dCksIDApOworCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNv
cmUodGV4dCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBjb3JlT2JqZWN0LT5z
ZWxlY3Rpb24oKTsKIApAQCAtMTIwMSw2ICsxMjQwLDkgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNj
ZXNzaWJsZVRleHRHZXROU2VsZWN0aW9ucyhBdGtUZXh0KiB0ZXh0KQogCiBzdGF0aWMgZ2NoYXIq
IHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0U2VsZWN0aW9uKEF0a1RleHQqIHRleHQsIGdpbnQgc2Vs
ZWN0aW9uTnVtLCBnaW50KiBzdGFydE9mZnNldCwgZ2ludCogZW5kT2Zmc2V0KQogeworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19URVhUKHRleHQpLCAwKTsKKyAgICByZXR1cm5WYWxJZk9i
amVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRSh0ZXh0KSwgMCk7CisKICAgICAvLyBXZWJD
b3JlIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgc2VsZWN0aW9uLCBzbyBhbnl0aGluZyBidXQg
MCBkb2VzIG5vdCBtYWtlIHNlbnNlIGZvciBub3cuCiAgICAgaWYgKHNlbGVjdGlvbk51bSkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0xMjE4LDE0ICsxMjYwLDIwIEBAIHN0YXRpYyBnY2hhciogd2Vi
a2l0QWNjZXNzaWJsZVRleHRHZXRTZWxlY3Rpb24oQXRrVGV4dCogdGV4dCwgZ2ludCBzZWxlY3Rp
b25OdW0sCiAgICAgcmV0dXJuIHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dCh0ZXh0LCAqc3Rh
cnRPZmZzZXQsICplbmRPZmZzZXQpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNz
aWJsZVRleHRBZGRTZWxlY3Rpb24oQXRrVGV4dCosIGdpbnQsIGdpbnQpCitzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0QWNjZXNzaWJsZVRleHRBZGRTZWxlY3Rpb24oQXRrVGV4dCogdGV4dCwgZ2ludCwg
Z2ludCkKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfVEVYVCh0ZXh0KSwgRkFMU0Up
OworICAgIHJldHVyblZhbElmT2JqZWN0SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHRleHQp
LCBGQUxTRSk7CisKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBGQUxTRTsKIH0K
IAogc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVUZXh0U2V0U2VsZWN0aW9uKEF0a1Rl
eHQqIHRleHQsIGdpbnQgc2VsZWN0aW9uTnVtLCBnaW50IHN0YXJ0T2Zmc2V0LCBnaW50IGVuZE9m
ZnNldCkKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfVEVYVCh0ZXh0KSwgRkFMU0Up
OworICAgIHJldHVyblZhbElmT2JqZWN0SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHRleHQp
LCBGQUxTRSk7CisKICAgICAvLyBXZWJDb3JlIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgc2Vs
ZWN0aW9uLCBzbyBhbnl0aGluZyBidXQgMCBkb2VzIG5vdCBtYWtlIHNlbnNlIGZvciBub3cuCiAg
ICAgaWYgKHNlbGVjdGlvbk51bSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMTI2Miw2ICsx
MzEwLDkgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVUZXh0U2V0U2VsZWN0aW9u
KEF0a1RleHQqIHRleHQsIGdpbnQgc2VsZWN0aW9uTnUKIAogc3RhdGljIGdib29sZWFuIHdlYmtp
dEFjY2Vzc2libGVUZXh0UmVtb3ZlU2VsZWN0aW9uKEF0a1RleHQqIHRleHQsIGdpbnQgc2VsZWN0
aW9uTnVtKQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19URVhUKHRleHQpLCBGQUxT
RSk7CisgICAgcmV0dXJuVmFsSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodGV4
dCksIEZBTFNFKTsKKwogICAgIC8vIFdlYkNvcmUgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZSBz
ZWxlY3Rpb24sIHNvIGFueXRoaW5nIGJ1dCAwIGRvZXMgbm90IG1ha2Ugc2Vuc2UgZm9yIG5vdy4K
ICAgICBpZiAoc2VsZWN0aW9uTnVtKQogICAgICAgICByZXR1cm4gRkFMU0U7CkBAIC0xMjc4LDgg
KzEzMjksMTAgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVUZXh0UmVtb3ZlU2Vs
ZWN0aW9uKEF0a1RleHQqIHRleHQsIGdpbnQgc2VsZWN0aW8KIAogc3RhdGljIGdib29sZWFuIHdl
YmtpdEFjY2Vzc2libGVUZXh0U2V0Q2FyZXRPZmZzZXQoQXRrVGV4dCogdGV4dCwgZ2ludCBvZmZz
ZXQpCiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUodGV4dCk7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX1RFWFQodGV4dCksIEZBTFNFKTsKKyAgICBy
ZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRSh0ZXh0KSwgRkFMU0Up
OwogCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUodGV4dCk7CiAg
ICAgaWYgKCFjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIEZBTFNFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVZhbHVlLmNwcApp
bmRleCA2YmE3NDI0Li5hZTllY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VWYWx1
ZS5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3Qu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlVXRp
bC5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmgiCiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtMzgsNiArMzksOSBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9i
amVjdCogY29yZShBdGtWYWx1ZSogdmFsdWUpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2li
bGVWYWx1ZUdldEN1cnJlbnRWYWx1ZShBdGtWYWx1ZSogdmFsdWUsIEdWYWx1ZSogZ1ZhbHVlKQog
eworICAgIGdfcmV0dXJuX2lmX2ZhaWwoQVRLX1ZBTFVFKHZhbHVlKSk7CisgICAgcmV0dXJuSWZP
YmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodmFsdWUpKTsKKwogICAgIG1lbXNldChn
VmFsdWUsICAwLCBzaXplb2YoR1ZhbHVlKSk7CiAgICAgZ192YWx1ZV9pbml0KGdWYWx1ZSwgR19U
WVBFX0ZMT0FUKTsKICAgICBnX3ZhbHVlX3NldF9mbG9hdChnVmFsdWUsIGNvcmUodmFsdWUpLT52
YWx1ZUZvclJhbmdlKCkpOwpAQCAtNDUsNiArNDksOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nl
c3NpYmxlVmFsdWVHZXRDdXJyZW50VmFsdWUoQXRrVmFsdWUqIHZhbHVlLCBHVmFsdWUqIGdWYWx1
ZQogCiBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlVmFsdWVHZXRNYXhpbXVtVmFsdWUoQXRr
VmFsdWUqIHZhbHVlLCBHVmFsdWUqIGdWYWx1ZSkKIHsKKyAgICBnX3JldHVybl9pZl9mYWlsKEFU
S19WQUxVRSh2YWx1ZSkpOworICAgIHJldHVybklmT2JqZWN0SXNJbnZhbGlkKFdFQktJVF9BQ0NF
U1NJQkxFKHZhbHVlKSk7CisKICAgICBtZW1zZXQoZ1ZhbHVlLCAgMCwgc2l6ZW9mKEdWYWx1ZSkp
OwogICAgIGdfdmFsdWVfaW5pdChnVmFsdWUsIEdfVFlQRV9GTE9BVCk7CiAgICAgZ192YWx1ZV9z
ZXRfZmxvYXQoZ1ZhbHVlLCBjb3JlKHZhbHVlKS0+bWF4VmFsdWVGb3JSYW5nZSgpKTsKQEAgLTUy
LDYgKzU5LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0QWNjZXNzaWJsZVZhbHVlR2V0TWF4aW11bVZh
bHVlKEF0a1ZhbHVlKiB2YWx1ZSwgR1ZhbHVlKiBnVmFsdWUKIAogc3RhdGljIHZvaWQgd2Via2l0
QWNjZXNzaWJsZVZhbHVlR2V0TWluaW11bVZhbHVlKEF0a1ZhbHVlKiB2YWx1ZSwgR1ZhbHVlKiBn
VmFsdWUpCiB7CisgICAgZ19yZXR1cm5faWZfZmFpbChBVEtfVkFMVUUodmFsdWUpKTsKKyAgICBy
ZXR1cm5JZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRSh2YWx1ZSkpOworCiAgICAg
bWVtc2V0KGdWYWx1ZSwgIDAsIHNpemVvZihHVmFsdWUpKTsKICAgICBnX3ZhbHVlX2luaXQoZ1Zh
bHVlLCBHX1RZUEVfRkxPQVQpOwogICAgIGdfdmFsdWVfc2V0X2Zsb2F0KGdWYWx1ZSwgY29yZSh2
YWx1ZSktPm1pblZhbHVlRm9yUmFuZ2UoKSk7CkBAIC01OSw2ICs2OSw5IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdEFjY2Vzc2libGVWYWx1ZUdldE1pbmltdW1WYWx1ZShBdGtWYWx1ZSogdmFsdWUsIEdW
YWx1ZSogZ1ZhbHVlCiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlVmFsdWVTZXRD
dXJyZW50VmFsdWUoQXRrVmFsdWUqIHZhbHVlLCBjb25zdCBHVmFsdWUqIGdWYWx1ZSkKIHsKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfVkFMVUUodmFsdWUpLCBGQUxTRSk7CisgICAgcmV0
dXJuVmFsSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodmFsdWUpLCBGQUxTRSk7
CisKICAgICBkb3VibGUgbmV3VmFsdWU7CiAgICAgaWYgKEdfVkFMVUVfSE9MRFNfRE9VQkxFKGdW
YWx1ZSkpCiAgICAgICAgIG5ld1ZhbHVlID0gZ192YWx1ZV9nZXRfZG91YmxlKGdWYWx1ZSk7CkBA
IC03Nyw3ICs5MCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlVmFsdWVTZXRD
dXJyZW50VmFsdWUoQXRrVmFsdWUqIHZhbHVlLCBjb25zdCBHVmFsCiAgICAgZWxzZSBpZiAoR19W
QUxVRV9IT0xEU19VSU5UKGdWYWx1ZSkpCiAgICAgICAgIG5ld1ZhbHVlID0gZ192YWx1ZV9nZXRf
dWludChnVmFsdWUpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gRkFMU0U7CiAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29y
ZSh2YWx1ZSk7CiAgICAgaWYgKCFjb3JlT2JqZWN0LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpKQpA
QCAtOTMsNiArMTA2LDkgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVWYWx1ZVNl
dEN1cnJlbnRWYWx1ZShBdGtWYWx1ZSogdmFsdWUsIGNvbnN0IEdWYWwKIAogc3RhdGljIHZvaWQg
d2Via2l0QWNjZXNzaWJsZVZhbHVlR2V0TWluaW11bUluY3JlbWVudChBdGtWYWx1ZSogdmFsdWUs
IEdWYWx1ZSogZ1ZhbHVlKQogeworICAgIGdfcmV0dXJuX2lmX2ZhaWwoQVRLX1ZBTFVFKHZhbHVl
KSk7CisgICAgcmV0dXJuSWZPYmplY3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodmFsdWUp
KTsKKwogICAgIG1lbXNldChnVmFsdWUsICAwLCBzaXplb2YoR1ZhbHVlKSk7CiAgICAgZ192YWx1
ZV9pbml0KGdWYWx1ZSwgR19UWVBFX0ZMT0FUKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmgKaW5kZXggMzVjNzhm
My4uZjhlODkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZVV0aWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5oCkBAIC0zMyw2ICszMywzOCBAQCBjbGFzcyBJbnRS
ZWN0OwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIH0KIAorLy8gQW4gZXhpc3RpbmcgYWNjZXNz
aWJpbGl0eSBvYmplY3QgaXMgY29uc2lkZXJlZCB0byBiZSBpbnZhbGlkIHdoZXRoZXIgaXQncyBh
bHJlYWR5CisvLyBkZXRhY2hlZCBvciBpZiBpdCdzIG5vdCBidXQganVzdCB1cGRhdGluZyB0aGUg
bGF5b3V0IHdpbGwgZGV0YWNoIGl0IGFueXdheS4KKyNkZWZpbmUgcmV0dXJuSWZPYmplY3RJc0lu
dmFsaWQod2Via2l0QWNjZXNzaWJsZSkgR19TVE1UX1NUQVJUIHsgXAorICAgIGlmICghd2Via2l0
QWNjZXNzaWJsZSB8fCB3ZWJraXRBY2Nlc3NpYmxlSXNEZXRhY2hlZCh3ZWJraXRBY2Nlc3NpYmxl
KSkgeyBcCisgICAgICAgIHJldHVybjsgXAorICAgIH0gZWxzZSB7IFwKKyAgICAgICAgd2Via2l0
QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3Qod2Via2l0QWNjZXNzaWJsZSktPnVwZGF0
ZUJhY2tpbmdTdG9yZSgpOyBcCisgICAgICAgIGlmICh3ZWJraXRBY2Nlc3NpYmxlSXNEZXRhY2hl
ZCh3ZWJraXRBY2Nlc3NpYmxlKSkgeyBcCisgICAgICAgICAgICBnX2xvZyhHX0xPR19ET01BSU4s
IFwKKyAgICAgICAgICAgICAgICBHX0xPR19MRVZFTF9DUklUSUNBTCwgXAorICAgICAgICAgICAg
ICAgICJmaWxlICVzOiBsaW5lICVkOiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBkZXRhY2hlZCBhZnRl
ciB1cGRhdGluZyBsYXlvdXQiLCBcCisgICAgICAgICAgICAgICAgX19GSUxFX18sIFwKKyAgICAg
ICAgICAgICAgICBfX0xJTkVfXyk7IFwKKyAgICAgICAgICAgIHJldHVybjsgXAorICAgICAgICB9
IFwKKyAgICB9OyB9R19TVE1UX0VORAorCisjZGVmaW5lIHJldHVyblZhbElmT2JqZWN0SXNJbnZh
bGlkKHdlYmtpdEFjY2Vzc2libGUsIHZhbCkgR19TVE1UX1NUQVJUIHsgXAorICAgIGlmICghd2Vi
a2l0QWNjZXNzaWJsZSB8fCB3ZWJraXRBY2Nlc3NpYmxlSXNEZXRhY2hlZCh3ZWJraXRBY2Nlc3Np
YmxlKSkgeyBcCisgICAgICAgIHJldHVybiAodmFsKTsgXAorICAgIH0gZWxzZSB7IFwKKyAgICAg
ICAgd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3Qod2Via2l0QWNjZXNzaWJs
ZSktPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOyBcCisgICAgICAgIGlmICh3ZWJraXRBY2Nlc3NpYmxl
SXNEZXRhY2hlZCh3ZWJraXRBY2Nlc3NpYmxlKSkgeyBcCisgICAgICAgICAgICBnX2xvZyhHX0xP
R19ET01BSU4sIFwKKyAgICAgICAgICAgICAgICBHX0xPR19MRVZFTF9DUklUSUNBTCwgXAorICAg
ICAgICAgICAgICAgICJmaWxlICVzOiBsaW5lICVkOiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBkZXRh
Y2hlZCBhZnRlciB1cGRhdGluZyBsYXlvdXQiLCBcCisgICAgICAgICAgICAgICAgX19GSUxFX18s
IFwKKyAgICAgICAgICAgICAgICBfX0xJTkVfXyk7IFwKKyAgICAgICAgICAgIHJldHVybiAodmFs
KTsgXAorICAgICAgICB9IFwKKyAgICB9OyB9R19TVE1UX0VORAorCiBBdGtBdHRyaWJ1dGVTZXQq
IGFkZFRvQXRrQXR0cmlidXRlU2V0KEF0a0F0dHJpYnV0ZVNldCosIGNvbnN0IGNoYXIqIG5hbWUs
IGNvbnN0IGNoYXIqIHZhbHVlKTsKIAogdm9pZCBjb250ZW50c1JlbGF0aXZlVG9BdGtDb29yZGlu
YXRlVHlwZShXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQXRrQ29vcmRUeXBlLCBXZWJD
b3JlOjpJbnRSZWN0LCBnaW50KiB4LCBnaW50KiB5LCBnaW50KiB3aWR0aCA9IDAsIGdpbnQqIGhl
aWdodCA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCmluZGV4IGExODY0MmMuLjNk
ZWU5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKQEAgLTk2LDI1ICs5NiwyMSBA
QCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogZmFsbGJhY2tPYmplY3QoKQogICAgIHJldHVy
biBvYmplY3Q7CiB9CiAKLXN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlKFdlYktpdEFj
Y2Vzc2libGUqIGFjY2Vzc2libGUpCi17Ci0gICAgaWYgKCFhY2Nlc3NpYmxlKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIHJldHVybiBhY2Nlc3NpYmxlLT5tX29iamVjdDsKLX0KLQogc3RhdGlj
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUoQXRrT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgaWYg
KCFXRUJLSVRfSVNfQUNDRVNTSUJMRShvYmplY3QpKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IHJldHVybiBjb3JlKFdFQktJVF9BQ0NFU1NJQkxFKG9iamVjdCkpOworICAgIHJldHVybiB3ZWJr
aXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChXRUJLSVRfQUNDRVNTSUJMRShvYmpl
Y3QpKTsKIH0KIAogc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlR2V0TmFtZShB
dGtPYmplY3QqIG9iamVjdCkKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
QUNDRVNTSUJMRShvYmplY3QpLCAwKTsKKyAgICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChX
RUJLSVRfQUNDRVNTSUJMRShvYmplY3QpLCAwKTsKKwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGNvcmVPYmplY3QgPSBjb3JlKG9iamVjdCk7CisKICAgICBpZiAoIWNvcmVPYmplY3QtPmlzQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQogICAgICAgICByZXR1cm4gY2FjaGVBbmRSZXR1cm5B
dGtQcm9wZXJ0eShvYmplY3QsIEF0a0NhY2hlZEFjY2Vzc2libGVOYW1lLCBjb3JlT2JqZWN0LT5z
dHJpbmdWYWx1ZSgpKTsKIApAQCAtMTY5LDYgKzE2NSw5IEBAIHN0YXRpYyBjb25zdCBnY2hhciog
d2Via2l0QWNjZXNzaWJsZUdldE5hbWUoQXRrT2JqZWN0KiBvYmplY3QpCiAKIHN0YXRpYyBjb25z
dCBnY2hhciogd2Via2l0QWNjZXNzaWJsZUdldERlc2NyaXB0aW9uKEF0a09iamVjdCogb2JqZWN0
KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19BQ0NFU1NJQkxFKG9iamVj
dCksIDApOworICAgIHJldHVyblZhbElmT2JqZWN0SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxF
KG9iamVjdCksIDApOworCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNv
cmUob2JqZWN0KTsKICAgICBOb2RlKiBub2RlID0gMDsKICAgICBpZiAoY29yZU9iamVjdC0+aXNB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCkBAIC0yNzIsNiArMjcxLDkgQEAgc3RhdGljIEF0
a09iamVjdCogYXRrUGFyZW50T2ZSb290T2JqZWN0KEF0a09iamVjdCogb2JqZWN0KQogCiBzdGF0
aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlR2V0UGFyZW50KEF0a09iamVjdCogb2JqZWN0
KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19BQ0NFU1NJQkxFKG9iamVj
dCksIDApOworICAgIHJldHVyblZhbElmT2JqZWN0SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxF
KG9iamVjdCksIDApOworCiAgICAgLy8gQ2hlY2sgZmlyc3QgaWYgdGhlIHBhcmVudCBoYXMgYmVl
biBhbHJlYWR5IHNldC4KICAgICBBdGtPYmplY3QqIGFjY2Vzc2libGVQYXJlbnQgPSBBVEtfT0JK
RUNUX0NMQVNTKHdlYmtpdEFjY2Vzc2libGVQYXJlbnRDbGFzcyktPmdldF9wYXJlbnQob2JqZWN0
KTsKICAgICBpZiAoYWNjZXNzaWJsZVBhcmVudCkKQEAgLTMxOSw2ICszMjEsOSBAQCBzdGF0aWMg
Z2ludCBnZXROQ2hpbGRyZW5Gb3JUYWJsZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0
KQogCiBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlR2V0TkNoaWxkcmVuKEF0a09iamVjdCog
b2JqZWN0KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19BQ0NFU1NJQkxF
KG9iamVjdCksIDApOworICAgIHJldHVyblZhbElmT2JqZWN0SXNJbnZhbGlkKFdFQktJVF9BQ0NF
U1NJQkxFKG9iamVjdCksIDApOworCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVj
dCA9IGNvcmUob2JqZWN0KTsKIAogICAgIC8vIFRhYmxlcyBzaG91bGQgYmUgdHJlYXRlZCBpbiBh
IGRpZmZlcmVudCB3YXkgYmVjYXVzZSByb3dzIHNob3VsZApAQCAtMzU2LDYgKzM2MSw5IEBAIHN0
YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBnZXRDaGlsZEZvclRhYmxlKEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNvcmVPYmplY3QsIGdpCiAKIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdEFjY2Vzc2li
bGVSZWZDaGlsZChBdGtPYmplY3QqIG9iamVjdCwgZ2ludCBpbmRleCkKIHsKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRShvYmplY3QpLCAwKTsKKyAgICByZXR1
cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpLCAwKTsKKwog
ICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIHJldHVybiAwOwogCkBAIC00MjAsNiArNDI4LDkg
QEAgc3RhdGljIGdpbnQgZ2V0SW5kZXhJblBhcmVudEZvckNlbGxJblJvdyhBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBjb3JlT2JqZWN0KQogCiBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlR2V0SW5k
ZXhJblBhcmVudChBdGtPYmplY3QqIG9iamVjdCkKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfQUNDRVNTSUJMRShvYmplY3QpLCAtMSk7CisgICAgcmV0dXJuVmFsSWZPYmpl
Y3RJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KSwgLTEpOworCiAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUob2JqZWN0KTsKICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnQgPSBjb3JlT2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsK
IApAQCAtNDUyLDYgKzQ2Myw5IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVHZXRJbmRl
eEluUGFyZW50KEF0a09iamVjdCogb2JqZWN0KQogCiBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiB3
ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlcyhBdGtPYmplY3QqIG9iamVjdCkKIHsKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRShvYmplY3QpLCAwKTsKKyAg
ICByZXR1cm5WYWxJZk9iamVjdElzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpLCAw
KTsKKwogICAgIEF0a0F0dHJpYnV0ZVNldCogYXR0cmlidXRlU2V0ID0gMDsKICNpZiBQTEFURk9S
TShHVEspCiAgICAgYXR0cmlidXRlU2V0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQoYXR0cmlidXRl
U2V0LCAidG9vbGtpdCIsICJXZWJLaXRHdGsiKTsKQEAgLTYyNSw2ICs2MzksOSBAQCBzdGF0aWMg
QXRrUm9sZSBhdGtSb2xlKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCiAKIHN0YXRpYyBBdGtSb2xl
IHdlYmtpdEFjY2Vzc2libGVHZXRSb2xlKEF0a09iamVjdCogb2JqZWN0KQogeworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19BQ0NFU1NJQkxFKG9iamVjdCksIEFUS19ST0xFX1VO
S05PV04pOworICAgIHJldHVyblZhbElmT2JqZWN0SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxF
KG9iamVjdCksIEFUS19ST0xFX1VOS05PV04pOworCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29yZU9iamVjdCA9IGNvcmUob2JqZWN0KTsKIAogICAgIGlmICghY29yZU9iamVjdCkKQEAgLTc2
NSw5ICs3ODIsMTUgQEAgc3RhdGljIHZvaWQgc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVjdChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBdGtTdGEKIAogc3RhdGljIEF0a1N0YXRl
U2V0KiB3ZWJraXRBY2Nlc3NpYmxlUmVmU3RhdGVTZXQoQXRrT2JqZWN0KiBvYmplY3QpCiB7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEUob2JqZWN0KSwgMCk7
CisKICAgICBBdGtTdGF0ZVNldCogc3RhdGVTZXQgPSBBVEtfT0JKRUNUX0NMQVNTKHdlYmtpdEFj
Y2Vzc2libGVQYXJlbnRDbGFzcyktPnJlZl9zdGF0ZV9zZXQob2JqZWN0KTsKICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZShvYmplY3QpOwogCisgICAgLy8gTWFrZSBz
dXJlIHRoZSBsYXlvdXQgaXMgdXBkYXRlZCB0byByZWFsbHkga25vdyB3aGV0aGVyIHRoZSBvYmpl
Y3QKKyAgICAvLyBpcyBkZWZ1bmN0IG9yIG5vdCwgc28gd2UgY2FuIHJldHVybiB0aGUgcHJvcGVy
IHN0YXRlLgorICAgIGNvcmVPYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworCiAgICAgaWYg
KGNvcmVPYmplY3QgPT0gZmFsbGJhY2tPYmplY3QoKSkgewogICAgICAgICBhdGtfc3RhdGVfc2V0
X2FkZF9zdGF0ZShzdGF0ZVNldCwgQVRLX1NUQVRFX0RFRlVOQ1QpOwogICAgICAgICByZXR1cm4g
c3RhdGVTZXQ7CkBAIC03ODQsNiArODA3LDkgQEAgc3RhdGljIEF0a1N0YXRlU2V0KiB3ZWJraXRB
Y2Nlc3NpYmxlUmVmU3RhdGVTZXQoQXRrT2JqZWN0KiBvYmplY3QpCiAKIHN0YXRpYyBBdGtSZWxh
dGlvblNldCogd2Via2l0QWNjZXNzaWJsZVJlZlJlbGF0aW9uU2V0KEF0a09iamVjdCogb2JqZWN0
KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19BQ0NFU1NJQkxFKG9iamVj
dCksIDApOworICAgIHJldHVyblZhbElmT2JqZWN0SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxF
KG9iamVjdCksIDApOworCiAgICAgQXRrUmVsYXRpb25TZXQqIHJlbGF0aW9uU2V0ID0gQVRLX09C
SkVDVF9DTEFTUyh3ZWJraXRBY2Nlc3NpYmxlUGFyZW50Q2xhc3MpLT5yZWZfcmVsYXRpb25fc2V0
KG9iamVjdCk7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUob2Jq
ZWN0KTsKIApAQCAtODA0LDExICs4MzAsMTQgQEAgc3RhdGljIHZvaWQgd2Via2l0QWNjZXNzaWJs
ZUluaXQoQXRrT2JqZWN0KiBvYmplY3QsIGdwb2ludGVyIGRhdGEpCiAKIHN0YXRpYyBjb25zdCBn
Y2hhciogd2Via2l0QWNjZXNzaWJsZUdldE9iamVjdExvY2FsZShBdGtPYmplY3QqIG9iamVjdCkK
IHsKLSAgICBpZiAoQVRLX0lTX0RPQ1VNRU5UKG9iamVjdCkpIHsKLSAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUob2JqZWN0KTsKLSAgICAgICAgaWYgKCFjb3Jl
T2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX0FDQ0VTU0lCTEUob2JqZWN0KSwgMCk7CisgICAgcmV0dXJuVmFsSWZPYmplY3RJ
c0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KSwgMCk7CisKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZShvYmplY3QpOworICAgIGlmICghY29yZU9iamVj
dCkKKyAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBpZiAoQVRLX0lTX0RPQ1VNRU5UKG9iamVjdCkp
IHsKICAgICAgICAgLy8gVE9ETzogU2hvdWxkIHdlIGZhbGwgYmFjayBvbiBsYW5nIHhtbDpsYW5n
IHdoZW4gdGhlIGZvbGxvd2luZyBjb21lcyB1cCBlbXB0eT8KICAgICAgICAgU3RyaW5nIGxhbmd1
YWdlID0gY29yZU9iamVjdC0+bGFuZ3VhZ2UoKTsKICAgICAgICAgaWYgKCFsYW5ndWFnZS5pc0Vt
cHR5KCkpCkBAIC0xMDk1LDcgKzExMjQsNyBAQCB2b2lkIHdlYmtpdEFjY2Vzc2libGVEZXRhY2go
V2ViS2l0QWNjZXNzaWJsZSogYWNjZXNzaWJsZSkKIHsKICAgICBBU1NFUlQoYWNjZXNzaWJsZS0+
bV9vYmplY3QpOwogCi0gICAgaWYgKGNvcmUoYWNjZXNzaWJsZSktPnJvbGVWYWx1ZSgpID09IFdl
YkFyZWFSb2xlKQorICAgIGlmIChhY2Nlc3NpYmxlLT5tX29iamVjdC0+cm9sZVZhbHVlKCkgPT0g
V2ViQXJlYVJvbGUpCiAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShhY2Nlc3NpYmxlLCAi
c3RhdGUtY2hhbmdlIiwgImRlZnVuY3QiLCB0cnVlKTsKIAogICAgIC8vIFdlIHJlcGxhY2UgdGhl
IFdlYkNvcmUgQWNjZXNzaWJpbGl0eU9iamVjdCB3aXRoIGEgZmFsbGJhY2sgb2JqZWN0IHRoYXQK
QEAgLTExMDQsNiArMTEzMywxMiBAQCB2b2lkIHdlYmtpdEFjY2Vzc2libGVEZXRhY2goV2ViS2l0
QWNjZXNzaWJsZSogYWNjZXNzaWJsZSkKICAgICBhY2Nlc3NpYmxlLT5tX29iamVjdCA9IGZhbGxi
YWNrT2JqZWN0KCk7CiB9CiAKK2Jvb2wgd2Via2l0QWNjZXNzaWJsZUlzRGV0YWNoZWQoV2ViS2l0
QWNjZXNzaWJsZSogYWNjZXNzaWJsZSkKK3sKKyAgICBBU1NFUlQoYWNjZXNzaWJsZS0+bV9vYmpl
Y3QpOworICAgIHJldHVybiBhY2Nlc3NpYmxlLT5tX29iamVjdCA9PSBmYWxsYmFja09iamVjdCgp
OworfQorCiBBdGtPYmplY3QqIHdlYmtpdEFjY2Vzc2libGVHZXRGb2N1c2VkRWxlbWVudChXZWJL
aXRBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKQogewogICAgIGlmICghYWNjZXNzaWJsZS0+bV9vYmpl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlV3JhcHBlckF0ay5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaAppbmRleCAzMDgwYWViLi4wZDQ3MzAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
V3JhcHBlckF0ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVXcmFwcGVyQXRrLmgKQEAgLTc3LDYgKzc3LDggQEAgV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdCogd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV2Vi
S2l0QWNjZXMKIAogdm9pZCB3ZWJraXRBY2Nlc3NpYmxlRGV0YWNoKFdlYktpdEFjY2Vzc2libGUq
KTsKIAorYm9vbCB3ZWJraXRBY2Nlc3NpYmxlSXNEZXRhY2hlZChXZWJLaXRBY2Nlc3NpYmxlKik7
CisKIEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZUdldEZvY3VzZWRFbGVtZW50KFdlYktpdEFj
Y2Vzc2libGUqKTsKIAogV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0Rm9jdXNl
ZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqLCBp
bnQmIG9mZnNldCk7Ci0tIAoxLjcuMTAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212695</attachid>
            <date>2013-09-26 05:51:59 -0700</date>
            <delta_ts>2013-09-26 09:20:59 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-Protect-entry-points-in-the-ATK-wrapper-against-outd.patch</filename>
            <type>text/plain</type>
            <size>81140</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA5ZGYzOThiZTI5OWRlYWY4ZGMzOWViMDZjNmU0YmNjNmE5ZDllYTNmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtYXJpby5wcmFkYUBzYW1z
dW5nLmNvbT4KRGF0ZTogVGh1LCAyNiBTZXAgMjAxMyAxMzoyMTo1MCArMDEwMApTdWJqZWN0OiBb
UEFUQ0hdIFByb3RlY3QgZW50cnkgcG9pbnRzIGluIHRoZSBBVEsgd3JhcHBlciBhZ2FpbnN0IG91
dGRhdGVkCiByZW5kZXIgdHJlZXMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMTU1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTb3VyY2UvV2ViQ29yZToK
Ck1ha2Ugc3VyZSB0aGF0IHdlIHByb3RlY3QgZXZlcnkgZW50cnkgcG9pbnQgaW4gdGhlIEFUSyB3
cmFwcGVyCmFnYWluc3Qgb3V0ZGF0ZWQgcmVuZGVyIHRyZWVzLCBiZWZvcmUgdXNpbmcgdGhlIFdl
YkNvcmUncwphY2Nlc3NpYmlsaXR5IEFQSSwgc2luY2UgdGhhdCBtaWdodCBsZWFkIHRvIHByb2Js
ZW1zIChhbmQgY3Jhc2hlcykKaWYgdGhlIHJlbmRlciBhbmQgYWNjZXNzaWJpbGl0eSB0cmVlcyBh
cmUgbm90IHN0YWJsZS4KClRodXMsIGNhbGwgQWNjZXNzaWJpbGl0eU9iamVjdDo6dXBkYXRlQmFj
a2luZ1N0b3JlKCkgaW4gdGhvc2UKZW50cnkgcG9pbnRzIGFuZCBjaGVjayB3aGV0aGVyIHRoZSBB
VEsgd3JhcHBlciBpcyBkZXRhY2hlZCBvciBub3QKYWZ0ZXIgdGhhdCwgdG8gZGVjaWRlIHdoZXRo
ZXIgdG8gY29udGludWUgb3Igbm90LgoKQmVzaWRlcyBwcm92aWRpbmcgYSBuZXcgdGVzdCB0byBj
aGVjayB0aGF0IGl0IFdlYktpdCBkb2VzIG5vdApjcmFzaCBpbiBhIGdpdmVuIHNjZW5hcmlvICh3
aGljaCBhY3R1YWxseSB0cmlnZ2VyZWQgdGhlCmludmVzdGlnYXRpb24gaGVyZSksIHNvbHZpbmcg
dGhpcyBzaXR1YXRpb24gYWxzbyBmaXhlcyBvdGhlciB0ZXN0cwp0aGF0IHdlcmUgcHJldmlvdXNs
eSBmYWlsaW5nIChhcmlhLXVzZWQtb24taW1hZ2UtbWFwcy5odG1sKSBvcgp0aGF0IHdlcmUgcHJp
bnRpbmcgd3JvbmcgcmVzdWx0cywgbm90IGRldGVjdGVkIHVudGlsIG5vdyBkdWUgdG8Kd3Jvbmcg
cGxhdGZvcm0gc3BlY2lmaWMgZXhwZWN0YXRpb25zIChmaWxlLXVwbG9hZC1idXR0b24tc3RyaW5n
dmFsdWUKYW5kIGRlbGV0aW5nLWlmcmFtZS1kZXN0cm95cy1heGNhY2hlKS4KClRlc3Q6IGFjY2Vz
c2liaWxpdHkvaGVhZGluZy1jcmFzaC1hZnRlci1oaWRkZW4uaHRtbAoKKiBhY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5oOiBBZGRlZCB0d28gbmV3IG1hY3Jvcwp0byBpbmpl
Y3QgdGhlIG5lZWRlZCBjb2RlIGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBlbnRyeSBwb2ludCB0
bwphbGxvdyBncmFjZWZ1bGx5IGV4aXQgdGhvc2UgZnVuY3Rpb25zIHdoZW4gdGhlIHJlbmRlciB0
cmVlIGlzCnVuc3RhYmxlLiBJbnNwaXJlZCBieSBnX3JldHVybl9pZl9mYWlsIGFuZCBnX3JldHVy
bl92YWxfaWZfZmFpbCwgd2UKY2FsbGVkIHRoZW0gcmV0dXJuSWZXZWJLaXRBY2Nlc3NpYmxlSXNJ
bnZhbGlkIGFuZCByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQuCgoqIGFjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwOgood2Via2l0QWNjZXNz
aWJsZUh5cGVybGlua0FjdGlvbkRvQWN0aW9uKTogUHJvdGVjdCBlbnRyeSBwb2ludC4KKHdlYmtp
dEFjY2Vzc2libGVIeXBlcmxpbmtBY3Rpb25HZXROQWN0aW9ucyk6IERpdHRvLgood2Via2l0QWNj
ZXNzaWJsZUh5cGVybGlua0FjdGlvbkdldERlc2NyaXB0aW9uKTogRGl0dG8uCih3ZWJraXRBY2Nl
c3NpYmxlSHlwZXJsaW5rQWN0aW9uR2V0S2V5YmluZGluZyk6IERpdHRvLgood2Via2l0QWNjZXNz
aWJsZUh5cGVybGlua0FjdGlvbkdldE5hbWUpOiBEaXR0by4KKHdlYmtpdEFjY2Vzc2libGVIeXBl
cmxpbmtHZXRVUkkpOiBEaXR0by4KKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRPYmplY3Qp
OiBEaXR0by4KKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRTdGFydEluZGV4KTogRGl0dG8u
Cih3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0RW5kSW5kZXgpOiBEaXR0by4KKHdlYmtpdEFj
Y2Vzc2libGVIeXBlcmxpbmtJc1ZhbGlkKTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlSHlwZXJs
aW5rR2V0TkFuY2hvcnMpOiBEaXR0by4KKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJc1NlbGVj
dGVkTGluayk6IERpdHRvLgoqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VBY3Rpb24uY3BwOgood2Via2l0QWNjZXNzaWJsZUFjdGlvbkRvQWN0aW9uKTogRGl0dG8u
Cih3ZWJraXRBY2Nlc3NpYmxlQWN0aW9uR2V0TkFjdGlvbnMpOiBEaXR0by4KKHdlYmtpdEFjY2Vz
c2libGVBY3Rpb25HZXREZXNjcmlwdGlvbik6IERpdHRvLgood2Via2l0QWNjZXNzaWJsZUFjdGlv
bkdldEtleWJpbmRpbmcpOiBEaXR0by4KKHdlYmtpdEFjY2Vzc2libGVBY3Rpb25HZXROYW1lKTog
RGl0dG8uCiogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUNvbXBv
bmVudC5jcHA6Cih3ZWJraXRBY2Nlc3NpYmxlQ29tcG9uZW50UmVmQWNjZXNzaWJsZUF0UG9pbnQp
OiBEaXR0by4KKHdlYmtpdEFjY2Vzc2libGVDb21wb25lbnRHZXRFeHRlbnRzKTogRGl0dG8uCih3
ZWJraXRBY2Nlc3NpYmxlQ29tcG9uZW50R3JhYkZvY3VzKTogRGl0dG8uCiogYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZURvY3VtZW50LmNwcDoKKHdlYmtpdEFjY2Vz
c2libGVEb2N1bWVudEdldEF0dHJpYnV0ZVZhbHVlKTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxl
RG9jdW1lbnRHZXRBdHRyaWJ1dGVzKTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlRG9jdW1lbnRH
ZXRMb2NhbGUpOiBEaXR0by4KKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlRWRpdGFibGVUZXh0LmNwcDoKKHdlYmtpdEFjY2Vzc2libGVFZGl0YWJsZVRleHRTZXRS
dW5BdHRyaWJ1dGVzKTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0U2V0VGV4
dENvbnRlbnRzKTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0SW5zZXJ0VGV4
dCk6IERpdHRvLgood2Via2l0QWNjZXNzaWJsZUVkaXRhYmxlVGV4dENvcHlUZXh0KTogRGl0dG8u
Cih3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0Q3V0VGV4dCk6IERpdHRvLgood2Via2l0QWNj
ZXNzaWJsZUVkaXRhYmxlVGV4dERlbGV0ZVRleHQpOiBEaXR0by4KKHdlYmtpdEFjY2Vzc2libGVF
ZGl0YWJsZVRleHRQYXN0ZVRleHQpOiBEaXR0by4KKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlSW50ZXJmYWNlSHlwZXJ0ZXh0LmNwcDoKKHdlYmtpdEFjY2Vzc2libGVIeXBlcnRl
eHRHZXRMaW5rKTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0R2V0TkxpbmtzKTog
RGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0R2V0TGlua0luZGV4KTogRGl0dG8uCiog
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUltYWdlLmNwcDoKKHdl
YmtpdEFjY2Vzc2libGVJbWFnZUdldEltYWdlUG9zaXRpb24pOiBEaXR0by4KKHdlYmtpdEFjY2Vz
c2libGVJbWFnZUdldEltYWdlRGVzY3JpcHRpb24pOiBEaXR0by4KKHdlYmtpdEFjY2Vzc2libGVJ
bWFnZUdldEltYWdlU2l6ZSk6IERpdHRvLgoqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3BwOgood2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvbkFk
ZFNlbGVjdGlvbik6IERpdHRvLgood2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvbkNsZWFyU2VsZWN0
aW9uKTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9uUmVmU2VsZWN0aW9uKTogRGl0
dG8uCih3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9uR2V0U2VsZWN0aW9uQ291bnQpOiBEaXR0by4K
KHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25Jc0NoaWxkU2VsZWN0ZWQpOiBEaXR0by4KKHdlYmtp
dEFjY2Vzc2libGVTZWxlY3Rpb25SZW1vdmVTZWxlY3Rpb24pOiBEaXR0by4KKHdlYmtpdEFjY2Vz
c2libGVTZWxlY3Rpb25TZWxlY3RBbGxTZWxlY3Rpb24pOiBEaXR0by4KKiBhY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwOgood2Via2l0QWNjZXNzaWJs
ZVRhYmxlUmVmQXQpOiBEaXR0by4KKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldEluZGV4QXQpOiBE
aXR0by4KKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkF0SW5kZXgpOiBEaXR0by4KKHdl
YmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0F0SW5kZXgpOiBEaXR0by4KKHdlYmtpdEFjY2Vzc2li
bGVUYWJsZUdldE5Db2x1bW5zKTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXROUm93
cyk6IERpdHRvLgood2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q29sdW1uRXh0ZW50QXQpOiBEaXR0
by4KKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0V4dGVudEF0KTogRGl0dG8uCih3ZWJraXRB
Y2Nlc3NpYmxlVGFibGVHZXRDb2x1bW5IZWFkZXIpOiBEaXR0by4KKHdlYmtpdEFjY2Vzc2libGVU
YWJsZUdldFJvd0hlYWRlcik6IERpdHRvLgood2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q2FwdGlv
bik6IERpdHRvLgood2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q29sdW1uRGVzY3JpcHRpb24pOiBE
aXR0by4KKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0Rlc2NyaXB0aW9uKTogRGl0dG8uCiog
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwOgood2Vi
a2l0QWNjZXNzaWJsZVRleHRHZXRUZXh0KTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlVGV4dEdl
dFRleHRBZnRlck9mZnNldCk6IERpdHRvLgood2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXh0QXRP
ZmZzZXQpOiBEaXR0by4KKHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dEJlZm9yZU9mZnNldCk6
IERpdHRvLgood2Via2l0QWNjZXNzaWJsZVRleHRHZXRDaGFyYWN0ZXJBdE9mZnNldCk6IERpdHRv
Lgood2Via2l0QWNjZXNzaWJsZVRleHRHZXRDYXJldE9mZnNldCk6IERpdHRvLgood2Via2l0QWNj
ZXNzaWJsZVRleHRHZXRSdW5BdHRyaWJ1dGVzKTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlVGV4
dEdldERlZmF1bHRBdHRyaWJ1dGVzKTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldENo
YXJhY3RlckV4dGVudHMpOiBEaXR0by4KKHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0UmFuZ2VFeHRl
bnRzKTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldENoYXJhY3RlckNvdW50KTogRGl0
dG8uCih3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldE9mZnNldEF0UG9pbnQpOiBEaXR0by4KKHdlYmtp
dEFjY2Vzc2libGVUZXh0R2V0TlNlbGVjdGlvbnMpOiBEaXR0by4KKHdlYmtpdEFjY2Vzc2libGVU
ZXh0R2V0U2VsZWN0aW9uKTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlVGV4dEFkZFNlbGVjdGlv
bik6IERpdHRvLgood2Via2l0QWNjZXNzaWJsZVRleHRTZXRTZWxlY3Rpb24pOiBEaXR0by4KKHdl
YmtpdEFjY2Vzc2libGVUZXh0UmVtb3ZlU2VsZWN0aW9uKTogRGl0dG8uCih3ZWJraXRBY2Nlc3Np
YmxlVGV4dFNldENhcmV0T2Zmc2V0KTogRGl0dG8uCiogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZUludGVyZmFjZVZhbHVlLmNwcDoKKHdlYmtpdEFjY2Vzc2libGVWYWx1ZUdldEN1
cnJlbnRWYWx1ZSk6IERpdHRvLgood2Via2l0QWNjZXNzaWJsZVZhbHVlR2V0TWF4aW11bVZhbHVl
KTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlVmFsdWVHZXRNaW5pbXVtVmFsdWUpOiBEaXR0by4K
KHdlYmtpdEFjY2Vzc2libGVWYWx1ZVNldEN1cnJlbnRWYWx1ZSk6IERpdHRvLgood2Via2l0QWNj
ZXNzaWJsZVZhbHVlR2V0TWluaW11bUluY3JlbWVudCk6IERpdHRvLgoqIGFjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcDoKKGNvcmUpOiBSZW1vdmVkLCBhcyBp
dCdzIG5vdCBhY3R1YWxseSBuZWVkZWQuCih3ZWJraXRBY2Nlc3NpYmxlR2V0TmFtZSk6ICBQcm90
ZWN0IGVudHJ5IHBvaW50Lgood2Via2l0QWNjZXNzaWJsZUdldERlc2NyaXB0aW9uKTogRGl0dG8u
Cih3ZWJraXRBY2Nlc3NpYmxlR2V0UGFyZW50KTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlR2V0
TkNoaWxkcmVuKTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlUmVmQ2hpbGQpOiBEaXR0by4KKHdl
YmtpdEFjY2Vzc2libGVHZXRJbmRleEluUGFyZW50KTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxl
R2V0QXR0cmlidXRlcyk6IERpdHRvLgood2Via2l0QWNjZXNzaWJsZUdldFJvbGUpOiBEaXR0by4K
KHdlYmtpdEFjY2Vzc2libGVSZWZTdGF0ZVNldCk6IERpdHRvLgood2Via2l0QWNjZXNzaWJsZVJl
ZlJlbGF0aW9uU2V0KTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlR2V0T2JqZWN0TG9jYWxlKTog
RGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxlRGV0YWNoKTogRGl0dG8uCih3ZWJraXRBY2Nlc3NpYmxl
SXNEZXRhY2hlZCk6IE5ldyBoZWxwZXIgZnVuY3Rpb24sIHRvIGJlIHVzZWQgZnJvbQp0aGUgbmV3
bHkgYWRkZWQgbWFjcm9zLiBXZSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIHdyYXBwZXIgaXMK
ZGV0YWNoZWQgYW5kIG5vdCBqdXN0IHRoZSB3cmFwcGVyIEFjY2Vzc2liaWxpdHlPYmplY3Qgc2lu
Y2Ugb25jZQp0aGUgZGV0YWNobWVudCBoYXBwZW5zIHdlIGNhbid0IHRydXN0IGFueXRoaW5nIGJ1
dCB0aGUgQXRrT2JqZWN0CmZyb20gdGhlIHdyYXBwZXIgKHRoZSBBY2Nlc3NpYmlsaXR5T2JqZWN0
IG1pZ2h0IGJlIGludmFsaWQpLgoqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVX
cmFwcGVyQXRrLmg6CgpBc3NlcnQgdGhhdCB0aGUgcmVuZGVyIHRyZWUgaXMgbmVpdGhlciBiZWlu
ZyB1cGRhdGVkIG5vciBpbiBuZWVkCm9mIGJlaW5nIHVwZGF0ZWQgYmVmb3JlIHRyeWluZyB0byBj
b21wdXRlIHRoZSB0ZXh0IHVuZGVyIGEgZ2l2ZW4KZWxlbWVudCwgc2luY2UgdGhhdCBtaWdodCBs
ZWFkIHRvIGNyYXNoZXMgZHVlIHRvIHRoZSBjb25zdHJ1Y3RvcgpvZiBUZXh0SXRlcmF0b3IgY2Fs
bGluZyB1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKS4KCiogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCk6IEFzc2VydCB0aGF0CnRoZSByZW5kZXIgdHJl
ZSBpcyBuZWl0aGVyIGJlaW5nIHVwZGF0ZWQgbm9yIG5lZWRpbmcgdXBkYXRpbmcuCgpMYXlvdXRU
ZXN0czoKCkFkZGVkIGEgbmV3IHRlc3QgdG8gY2hlY2sgdGhhdCB3ZSBkbyBub3QgY3Jhc2ggaW4g
Y2VydGFpbgpzY2VuYXJpb3Mgd2hlbiBoaWRpbmcgb2JqZWN0cyBhbmQgcmV0cml2aW5nIGFjY2Vz
c2liaWxpdHkKaW5mb3JtYXRpb24gYWJvdXQgaXQuCgoqIGFjY2Vzc2liaWxpdHkvaGVhZGluZy1j
cmFzaC1hZnRlci1oaWRkZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBhY2Nlc3NpYmlsaXR5L2hl
YWRpbmctY3Jhc2gtYWZ0ZXItaGlkZGVuLmh0bWw6IEFkZGVkLgoKUmViYXNlbGluZWQgZXhwZWN0
YXRpb25zIHRoYXQgd2VyZSB3cm9uZyBiZWZvcmUsIHNpbmNlIHRoZXkgd2VyZQpub3QgcmV0dXJu
aW5nIHRoZSBhY3R1YWwgdmFsdWUgdGhhdCB0aGV5IHNob3VsZCBiZSByZXR1cm5pbmcgd2hlbgpj
YWxsZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUoKS4KCiogcGxhdGZvcm0v
ZWZsLXdrMS9hY2Nlc3NpYmlsaXR5L2ZpbGUtdXBsb2FkLWJ1dHRvbi1zdHJpbmd2YWx1ZS1leHBl
Y3RlZC50eHQ6ClVwZGF0ZWQsIHNpbmNlIHRoZSBhY3R1YWwgdGV4dCBiZWluZyByZXR1cm5lZCBz
aG91bGQgYmUgdGhlIGFjdHVhbAp2YWx1ZSBvZiB0aGUgZmlsZSBjaG9vc2VyIChlLmcuICIoTm9u
ZSkiKSBhbmQgbm90IHRoZSB0ZXh0IGluIHRoZQp1cGxvYWQgYm90dG9uIChlLmcuICJDaG9vc2Ug
ZmlsZXMiKS4KKiBwbGF0Zm9ybS9lZmwtd2syL2FjY2Vzc2liaWxpdHkvZmlsZS11cGxvYWQtYnV0
dG9uLXN0cmluZ3ZhbHVlLWV4cGVjdGVkLnR4dDogRGl0dG8uCiogcGxhdGZvcm0vZ3RrLXdrMi9h
Y2Nlc3NpYmlsaXR5L2ZpbGUtdXBsb2FkLWJ1dHRvbi1zdHJpbmd2YWx1ZS1leHBlY3RlZC50eHQ6
IERpdHRvLi4KKiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1idXR0b24t
c3RyaW5ndmFsdWUtZXhwZWN0ZWQudHh0OiBEaXR0by4KCiogcGxhdGZvcm0vZ3RrL2FjY2Vzc2li
aWxpdHkvZGVsZXRpbmctaWZyYW1lLWRlc3Ryb3lzLWF4Y2FjaGUtZXhwZWN0ZWQudHh0OgpVcGRh
dGVkLCBzaW5jZSB0aGUgaWZyYW1lIHNob3VsZCBiZSBleHBvc2VkIGF0IGFsbCBhZnRlciBkZWxl
dGluZyBpdC4KClJlbW92ZWQgYWNjZXNpYmlsaXR5IHRlc3Qgbm93IHBhc3NpbmcgYWZ0ZXIgZml4
aW5nIHRoaXMgaXNzdWUuCgoqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOiBSZW1vdmVk
IGFjY2Vzc2liaWxpdHkvYXJpYS11c2VkLW9uLWltYWdlLW1hcHMuaHRtbC4KLS0tCiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzMgKysrKysK
IC4uLi9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRlbi1leHBlY3RlZC50eHQgICAgICAgIHwgICAx
MSArKwogLi4uL2FjY2Vzc2liaWxpdHkvaGVhZGluZy1jcmFzaC1hZnRlci1oaWRkZW4uaHRtbCAg
fCAgIDI4ICsrKysKIC4uLi9maWxlLXVwbG9hZC1idXR0b24tc3RyaW5ndmFsdWUtZXhwZWN0ZWQu
dHh0ICAgIHwgICAgNCArLQogLi4uL2ZpbGUtdXBsb2FkLWJ1dHRvbi1zdHJpbmd2YWx1ZS1leHBl
Y3RlZC50eHQgICAgfCAgIDEyICstCiAuLi4vZmlsZS11cGxvYWQtYnV0dG9uLXN0cmluZ3ZhbHVl
LWV4cGVjdGVkLnR4dCAgICB8ICAgMTIgKy0KIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0
RXhwZWN0YXRpb25zICAgICAgICAgIHwgICAgMSAtCiAuLi4vZGVsZXRpbmctaWZyYW1lLWRlc3Ry
b3lzLWF4Y2FjaGUtZXhwZWN0ZWQudHh0ICB8ICAgIDEgLQogLi4uL2ZpbGUtdXBsb2FkLWJ1dHRv
bi1zdHJpbmd2YWx1ZS1leHBlY3RlZC50eHQgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNTIgKysrKysrKysrKysrKysr
KysrKysKIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCAgICAg
IHwgICAgNyArCiAuLi4vYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwICAgICAgICAg
ICAgICB8ICAgMzAgKysrLQogLi4uL2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlQWN0aW9u
LmNwcCAgICAgICAgfCAgIDIwICsrLQogLi4uL2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
Q29tcG9uZW50LmNwcCAgICAgfCAgICA5ICsrCiAuLi4vYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VEb2N1bWVudC5jcHAgICAgICB8ICAgIDkgKysKIC4uLi9hdGsvV2ViS2l0QWNjZXNzaWJs
ZUludGVyZmFjZUVkaXRhYmxlVGV4dC5jcHAgIHwgICAzMCArKystCiAuLi4vYXRrL1dlYktpdEFj
Y2Vzc2libGVJbnRlcmZhY2VIeXBlcnRleHQuY3BwICAgICB8ICAgMTAgKysKIC4uLi9hdGsvV2Vi
S2l0QWNjZXNzaWJsZUludGVyZmFjZUltYWdlLmNwcCAgICAgICAgIHwgICAgOSArKwogLi4uL2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlU2VsZWN0aW9uLmNwcCAgICAgfCAgIDI2ICsrKy0K
IC4uLi9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcCAgICAgICAgIHwgICA0
MCArKysrKysKIC4uLi9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwICAgICAg
ICAgIHwgICA1OSArKysrKysrLQogLi4uL2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVmFs
dWUuY3BwICAgICAgICAgfCAgIDE4ICsrLQogLi4uL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVVdGlsLmggICAgICAgfCAgIDIwICsrKwogLi4uL2F0ay9XZWJLaXRBY2Nlc3NpYmxl
V3JhcHBlckF0ay5jcHAgICAgICAgICAgICAgfCAgIDYzICsrKysrKy0tCiAuLi4vYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaCB8ICAgIDIgKwogMjUgZmlsZXMg
Y2hhbmdlZCwgNTYyIGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg
MTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaGVhZGluZy1jcmFzaC1hZnRlci1oaWRk
ZW4tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRlbi5odG1sCgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU1NTdkY2UuLjA4
OWM3ODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMy0wOS0yNiAgTWFyaW8gU2FuY2hleiBQ
cmFkYSAgPG1hcmlvLnByYWRhQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtBVEtdIFByb3RlY3Qg
ZW50cnkgcG9pbnRzIGluIHRoZSBBVEsgd3JhcHBlciBhZ2FpbnN0IG91dGRhdGVkIHJlbmRlciB0
cmVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIx
NTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgYSBuZXcgdGVzdCB0byBjaGVjayB0aGF0IHdlIGRvIG5vdCBjcmFzaCBpbiBjZXJ0YWluCisg
ICAgICAgIHNjZW5hcmlvcyB3aGVuIGhpZGluZyBvYmplY3RzIGFuZCByZXRyaXZpbmcgYWNjZXNz
aWJpbGl0eQorICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCBpdC4KKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvaGVhZGluZy1jcmFzaC1hZnRlci1oaWRkZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2hlYWRpbmctY3Jhc2gtYWZ0ZXItaGlkZGVuLmh0bWw6
IEFkZGVkLgorCisgICAgICAgIFJlYmFzZWxpbmVkIGV4cGVjdGF0aW9ucyB0aGF0IHdlcmUgd3Jv
bmcgYmVmb3JlLCBzaW5jZSB0aGV5IHdlcmUKKyAgICAgICAgbm90IHJldHVybmluZyB0aGUgYWN0
dWFsIHZhbHVlIHRoYXQgdGhleSBzaG91bGQgYmUgcmV0dXJuaW5nIHdoZW4KKyAgICAgICAgY2Fs
bGVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9lZmwtd2sxL2FjY2Vzc2liaWxpdHkvZmlsZS11cGxvYWQtYnV0dG9uLXN0cmluZ3Zh
bHVlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVXBkYXRlZCwgc2luY2UgdGhlIGFjdHVhbCB0ZXh0
IGJlaW5nIHJldHVybmVkIHNob3VsZCBiZSB0aGUgYWN0dWFsCisgICAgICAgIHZhbHVlIG9mIHRo
ZSBmaWxlIGNob29zZXIgKGUuZy4gIihOb25lKSIpIGFuZCBub3QgdGhlIHRleHQgaW4gdGhlCisg
ICAgICAgIHVwbG9hZCBib3R0b24gKGUuZy4gIkNob29zZSBmaWxlcyIpLgorICAgICAgICAqIHBs
YXRmb3JtL2VmbC13azIvYWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1idXR0b24tc3RyaW5ndmFs
dWUtZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL2FjY2Vz
c2liaWxpdHkvZmlsZS11cGxvYWQtYnV0dG9uLXN0cmluZ3ZhbHVlLWV4cGVjdGVkLnR4dDogRGl0
dG8uLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2ZpbGUtdXBsb2FkLWJ1
dHRvbi1zdHJpbmd2YWx1ZS1leHBlY3RlZC50eHQ6IERpdHRvLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3RrL2FjY2Vzc2liaWxpdHkvZGVsZXRpbmctaWZyYW1lLWRlc3Ryb3lzLWF4Y2FjaGUtZXhw
ZWN0ZWQudHh0OgorICAgICAgICBVcGRhdGVkLCBzaW5jZSB0aGUgaWZyYW1lIHNob3VsZCBiZSBl
eHBvc2VkIGF0IGFsbCBhZnRlciBkZWxldGluZyBpdC4KKworICAgICAgICBSZW1vdmVkIGFjY2Vz
aWJpbGl0eSB0ZXN0IG5vdyBwYXNzaW5nIGFmdGVyIGZpeGluZyB0aGlzIGlzc3VlLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6IFJlbW92ZWQgYWNjZXNzaWJpbGl0
eS9hcmlhLXVzZWQtb24taW1hZ2UtbWFwcy5odG1sLgorCiAyMDEzLTA5LTI2ICBNaWhhaSBNYWVy
ZWFuICA8bW1hZXJlYW5AYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgUmVnaW9uc10gVGhlIGxh
eWVycyBmcm9tIHRoZSBmbG93IHRocmVhZCBzaG91bGQgYmUgY29sbGVjdGVkIHVuZGVyIHRoZSBy
ZWdpb25zJyBsYXllcnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2hl
YWRpbmctY3Jhc2gtYWZ0ZXItaGlkZGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvaGVhZGluZy1jcmFzaC1hZnRlci1oaWRkZW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YjQzNGYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2hlYWRpbmctY3Jhc2gtYWZ0ZXItaGlkZGVuLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUaGlzIHRlc3RzIHRoYXQgd2UgZG9uJ3QgZ2V0IGEg
Y3Jhc2ggd2hlbiB0cnlpbmcgdG8gcmV0cmlldmUgdGV4dHVhbCBpbmZvcm1hdGlvbiBmb3IgYSBo
ZWFkaW5nIGFmdGVyIGhpZGluZyBpdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K0FYVGl0bGU6IFgKK0FYUm9sZTogQVhIZWFkaW5nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRlbi5odG1sIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRlbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyY2EwYjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2hlYWRpbmctY3Jhc2gtYWZ0ZXItaGlkZGVuLmh0bWwKQEAgLTAs
MCArMSwyOCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisKKzxoMSBpZD0iaGVhZGlu
ZyI+WDwvaDE+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2lmICh3aW5k
b3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICBk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHdlIGRvbid0IGdldCBhIGNyYXNoIHdoZW4gdHJ5
aW5nIHRvIHJldHJpZXZlIHRleHR1YWwgaW5mb3JtYXRpb24gZm9yIGEgaGVhZGluZyBhZnRlciBo
aWRpbmcgaXQuIik7CisgICAgdmFyIGhlYWRpbmcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
aGVhZGluZyIpOworICAgIHZhciBheEhlYWRpbmcgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5y
b290RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApOworICAgIGRlYnVnKGF4
SGVhZGluZy50aXRsZSk7CisgICAgZGVidWcoYXhIZWFkaW5nLnJvbGUpOworCisgICAgLy8gSGlk
ZSB0aGUgaGVhZGluZyBub3cuCisgICAgaGVhZGluZy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwor
CisgICAgLy8gRm9yY2luZyBhIHJldHJpZXZhbCBvZiB0ZXh0IGFzc29jaWF0ZWQgdG8gdGhlIG9i
amVjdAorICAgIC8vIHNob3VsZCBub3QgY3Jhc2ggYWZ0ZXIgaGlkaW5nIHRoZSBoZWFkaW5nLgor
ICAgIGF4SGVhZGluZy50aXRsZTsKKyAgICBheEhlYWRpbmcuZGVzY3JpcHRpb247Cit9Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2sxL2FjY2Vzc2liaWxpdHkvZmlsZS11cGxv
YWQtYnV0dG9uLXN0cmluZ3ZhbHVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC13azEvYWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1idXR0b24tc3RyaW5ndmFsdWUtZXhw
ZWN0ZWQudHh0CmluZGV4IDBkMWMxMWMuLjRhNWRlMmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC13azEvYWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1idXR0b24tc3RyaW5n
dmFsdWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azEvYWNj
ZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1idXR0b24tc3RyaW5ndmFsdWUtZXhwZWN0ZWQudHh0CkBA
IC0zLDggKzMsOCBAQCBUaGlzIHRlc3RzIHRoZSB2YWx1ZSBvZiBzdHJpbmdWYWx1ZSBmb3IgYSBz
aW5nbGUgZmlsZS0gYW5kIG11bHRpcGxlIGZpbGVzLTxpbnB1dAogCiAKIERlZmF1bHQgdmFsdWUg
KG5vIGZpbGVzIHNlbGVjdGVkKToKLWFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgic2luZ2xlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiBDaG9v
c2UgRmlsZQotYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJt
dWx0aXBsZUZpbGVVcGxvYWQiKS5zdHJpbmdWYWx1ZTogQVhWYWx1ZTogQ2hvb3NlIEZpbGVzCith
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInNpbmdsZUZpbGVV
cGxvYWQiKS5zdHJpbmdWYWx1ZTogQVhWYWx1ZTogKE5vbmUpCithY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm11bHRpcGxlRmlsZVVwbG9hZCIpLnN0cmluZ1Zh
bHVlOiBBWFZhbHVlOiAoTm9uZSkKIAogRHJhZyBhbmQgZHJvcCBhIHNpbmdsZSBmaWxlOgogYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJzaW5nbGVGaWxlVXBs
b2FkIikuc3RyaW5nVmFsdWU6IEFYVmFsdWU6IGZpbGUxLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9hY2Nlc3NpYmlsaXR5L2ZpbGUtdXBsb2FkLWJ1dHRvbi1z
dHJpbmd2YWx1ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL2Fj
Y2Vzc2liaWxpdHkvZmlsZS11cGxvYWQtYnV0dG9uLXN0cmluZ3ZhbHVlLWV4cGVjdGVkLnR4dApp
bmRleCA2MDE3MTY4Li5jZTdkY2YwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
Zmwtd2syL2FjY2Vzc2liaWxpdHkvZmlsZS11cGxvYWQtYnV0dG9uLXN0cmluZ3ZhbHVlLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL2FjY2Vzc2liaWxpdHkv
ZmlsZS11cGxvYWQtYnV0dG9uLXN0cmluZ3ZhbHVlLWV4cGVjdGVkLnR4dApAQCAtMywxNCArMywx
NCBAQCBUaGlzIHRlc3RzIHRoZSB2YWx1ZSBvZiBzdHJpbmdWYWx1ZSBmb3IgYSBzaW5nbGUgZmls
ZS0gYW5kIG11bHRpcGxlIGZpbGVzLTxpbnB1dAogCiAKIERlZmF1bHQgdmFsdWUgKG5vIGZpbGVz
IHNlbGVjdGVkKToKLWFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgic2luZ2xlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiBDaG9vc2UgRmlsZQot
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtdWx0aXBsZUZp
bGVVcGxvYWQiKS5zdHJpbmdWYWx1ZTogQVhWYWx1ZTogQ2hvb3NlIEZpbGVzCithY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInNpbmdsZUZpbGVVcGxvYWQiKS5z
dHJpbmdWYWx1ZTogQVhWYWx1ZTogKE5vbmUpCithY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoIm11bHRpcGxlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZh
bHVlOiAoTm9uZSkKIAogRHJhZyBhbmQgZHJvcCBhIHNpbmdsZSBmaWxlOgotYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJzaW5nbGVGaWxlVXBsb2FkIikuc3Ry
aW5nVmFsdWU6IEFYVmFsdWU6IENob29zZSBGaWxlCi1hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm11bHRpcGxlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBB
WFZhbHVlOiBDaG9vc2UgRmlsZXMKK2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgic2luZ2xlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiAoTm9u
ZSkKK2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibXVsdGlw
bGVGaWxlVXBsb2FkIikuc3RyaW5nVmFsdWU6IEFYVmFsdWU6IChOb25lKQogCiBEcmFnIGFuZCBk
cm9wIHR3byBmaWxlczoKLWFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgic2luZ2xlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiBDaG9vc2UgRmls
ZQotYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtdWx0aXBs
ZUZpbGVVcGxvYWQiKS5zdHJpbmdWYWx1ZTogQVhWYWx1ZTogQ2hvb3NlIEZpbGVzCithY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInNpbmdsZUZpbGVVcGxvYWQi
KS5zdHJpbmdWYWx1ZTogQVhWYWx1ZTogKE5vbmUpCithY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm11bHRpcGxlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBB
WFZhbHVlOiAoTm9uZSkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdr
Mi9hY2Nlc3NpYmlsaXR5L2ZpbGUtdXBsb2FkLWJ1dHRvbi1zdHJpbmd2YWx1ZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2FjY2Vzc2liaWxpdHkvZmlsZS11cGxv
YWQtYnV0dG9uLXN0cmluZ3ZhbHVlLWV4cGVjdGVkLnR4dAppbmRleCA2MDE3MTY4Li5jZTdkY2Yw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2FjY2Vzc2liaWxpdHkv
ZmlsZS11cGxvYWQtYnV0dG9uLXN0cmluZ3ZhbHVlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGstd2syL2FjY2Vzc2liaWxpdHkvZmlsZS11cGxvYWQtYnV0dG9uLXN0
cmluZ3ZhbHVlLWV4cGVjdGVkLnR4dApAQCAtMywxNCArMywxNCBAQCBUaGlzIHRlc3RzIHRoZSB2
YWx1ZSBvZiBzdHJpbmdWYWx1ZSBmb3IgYSBzaW5nbGUgZmlsZS0gYW5kIG11bHRpcGxlIGZpbGVz
LTxpbnB1dAogCiAKIERlZmF1bHQgdmFsdWUgKG5vIGZpbGVzIHNlbGVjdGVkKToKLWFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgic2luZ2xlRmlsZVVwbG9hZCIp
LnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiBDaG9vc2UgRmlsZQotYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtdWx0aXBsZUZpbGVVcGxvYWQiKS5zdHJpbmdWYWx1
ZTogQVhWYWx1ZTogQ2hvb3NlIEZpbGVzCithY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoInNpbmdsZUZpbGVVcGxvYWQiKS5zdHJpbmdWYWx1ZTogQVhWYWx1ZTog
KE5vbmUpCithY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm11
bHRpcGxlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiAoTm9uZSkKIAogRHJhZyBh
bmQgZHJvcCBhIHNpbmdsZSBmaWxlOgotYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJzaW5nbGVGaWxlVXBsb2FkIikuc3RyaW5nVmFsdWU6IEFYVmFsdWU6IENo
b29zZSBGaWxlCi1hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
Im11bHRpcGxlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiBDaG9vc2UgRmlsZXMK
K2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgic2luZ2xlRmls
ZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiAoTm9uZSkKK2FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibXVsdGlwbGVGaWxlVXBsb2FkIikuc3RyaW5n
VmFsdWU6IEFYVmFsdWU6IChOb25lKQogCiBEcmFnIGFuZCBkcm9wIHR3byBmaWxlczoKLWFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgic2luZ2xlRmlsZVVwbG9h
ZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiBDaG9vc2UgRmlsZQotYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtdWx0aXBsZUZpbGVVcGxvYWQiKS5zdHJpbmdW
YWx1ZTogQVhWYWx1ZTogQ2hvb3NlIEZpbGVzCithY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoInNpbmdsZUZpbGVVcGxvYWQiKS5zdHJpbmdWYWx1ZTogQVhWYWx1
ZTogKE5vbmUpCithY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
Im11bHRpcGxlRmlsZVVwbG9hZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiAoTm9uZSkKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjMWMzYjQ4Li5iYWEz
MTk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODUy
LDcgKzg1Miw2IEBAIHdlYmtpdC5vcmcvYi8xMjE2ODQgYWNjZXNzaWJpbGl0eS9hcmlhLWRlc2Ny
aWJlZGJ5LW9uLWlucHV0Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85ODM1NSBhY2Nl
c3NpYmlsaXR5L2FyaWEtbGluay1zdXBwb3J0cy1wcmVzcy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJr
aXQub3JnL2IvOTgzNTcgYWNjZXNzaWJpbGl0eS9hcmlhLXJlYWRvbmx5Lmh0bWwgWyBGYWlsdXJl
IF0KIHdlYmtpdC5vcmcvYi85ODM1OSBhY2Nlc3NpYmlsaXR5L2FyaWEtdGV4dC1yb2xlLmh0bWwg
WyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85ODM2MCBhY2Nlc3NpYmlsaXR5L2FyaWEtdXNlZC1v
bi1pbWFnZS1tYXBzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85ODM2MSBhY2Nlc3Np
YmlsaXR5L2J1dHRvbi1wcmVzcy1hY3Rpb24uaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9i
Lzk4MzYzIGFjY2Vzc2liaWxpdHkvY2FudmFzLWZhbGxiYWNrLWNvbnRlbnQtMi5odG1sIFsgRmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvOTgzNzEgYWNjZXNzaWJpbGl0eS9sb2FkaW5nLWlmcmFtZS11
cGRhdGVzLWF4dHJlZS5odG1sIFsgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9kZWxldGluZy1pZnJhbWUtZGVzdHJveXMtYXhjYWNo
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9k
ZWxldGluZy1pZnJhbWUtZGVzdHJveXMtYXhjYWNoZS1leHBlY3RlZC50eHQKaW5kZXggNzQyYWJl
MS4uMGZlZTIzNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2li
aWxpdHkvZGVsZXRpbmctaWZyYW1lLWRlc3Ryb3lzLWF4Y2FjaGUtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2RlbGV0aW5nLWlmcmFtZS1k
ZXN0cm95cy1heGNhY2hlLWV4cGVjdGVkLnR4dApAQCAtMjYsNyArMjYsNiBAQCBBZnRlcjoKIEFY
Um9sZTogQVhTY3JvbGxBcmVhIAogICAgIEFYUm9sZTogQVhXZWJBcmVhIAogICAgICAgICBBWFJv
bGU6IEFYUGFyYWdyYXBoIEFYVmFsdWU6IEJlZm9yZQotICAgICAgICBBWFJvbGU6IEFYR3JvdXAg
QVhWYWx1ZTogCiAgICAgICAgIEFYUm9sZTogQVhQYXJhZ3JhcGggQVhWYWx1ZTogQWZ0ZXIKICAg
ICAgICAgQVhSb2xlOiBBWFBhcmFncmFwaCBBWFZhbHVlOiBFbmQgb2YgdGVzdAogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1i
dXR0b24tc3RyaW5ndmFsdWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2FjY2Vzc2liaWxpdHkvZmlsZS11cGxvYWQtYnV0dG9uLXN0cmluZ3ZhbHVlLWV4cGVjdGVkLnR4
dAppbmRleCAwZDFjMTFjLi40YTVkZTJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvYWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1idXR0b24tc3RyaW5ndmFsdWUtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2ZpbGUt
dXBsb2FkLWJ1dHRvbi1zdHJpbmd2YWx1ZS1leHBlY3RlZC50eHQKQEAgLTMsOCArMyw4IEBAIFRo
aXMgdGVzdHMgdGhlIHZhbHVlIG9mIHN0cmluZ1ZhbHVlIGZvciBhIHNpbmdsZSBmaWxlLSBhbmQg
bXVsdGlwbGUgZmlsZXMtPGlucHV0CiAKIAogRGVmYXVsdCB2YWx1ZSAobm8gZmlsZXMgc2VsZWN0
ZWQpOgotYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJzaW5n
bGVGaWxlVXBsb2FkIikuc3RyaW5nVmFsdWU6IEFYVmFsdWU6IENob29zZSBGaWxlCi1hY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm11bHRpcGxlRmlsZVVwbG9h
ZCIpLnN0cmluZ1ZhbHVlOiBBWFZhbHVlOiBDaG9vc2UgRmlsZXMKK2FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgic2luZ2xlRmlsZVVwbG9hZCIpLnN0cmluZ1Zh
bHVlOiBBWFZhbHVlOiAoTm9uZSkKK2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgibXVsdGlwbGVGaWxlVXBsb2FkIikuc3RyaW5nVmFsdWU6IEFYVmFsdWU6IChO
b25lKQogCiBEcmFnIGFuZCBkcm9wIGEgc2luZ2xlIGZpbGU6CiBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInNpbmdsZUZpbGVVcGxvYWQiKS5zdHJpbmdWYWx1
ZTogQVhWYWx1ZTogZmlsZTEudHh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg4MTZjNS4uZDc2MzcwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1NSBAQAorMjAxMy0wOS0yNiAgTWFyaW8gU2FuY2hleiBQcmFk
YSAgPG1hcmlvLnByYWRhQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtBVEtdIFByb3RlY3QgZW50
cnkgcG9pbnRzIGluIHRoZSBBVEsgd3JhcHBlciBhZ2FpbnN0IG91dGRhdGVkIHJlbmRlciB0cmVl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNTU4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBz
dXJlIHRoYXQgd2UgcHJvdGVjdCBldmVyeSBlbnRyeSBwb2ludCBpbiB0aGUgQVRLIHdyYXBwZXIK
KyAgICAgICAgYWdhaW5zdCBvdXRkYXRlZCByZW5kZXIgdHJlZXMsIGJlZm9yZSB1c2luZyB0aGUg
V2ViQ29yZSdzCisgICAgICAgIGFjY2Vzc2liaWxpdHkgQVBJLCBzaW5jZSB0aGF0IG1pZ2h0IGxl
YWQgdG8gcHJvYmxlbXMgKGFuZCBjcmFzaGVzKQorICAgICAgICBpZiB0aGUgcmVuZGVyIGFuZCBh
Y2Nlc3NpYmlsaXR5IHRyZWVzIGFyZSBub3Qgc3RhYmxlLgorCisgICAgICAgIFRodXMsIGNhbGwg
QWNjZXNzaWJpbGl0eU9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkgaW4gdGhvc2UKKyAgICAg
ICAgZW50cnkgcG9pbnRzIGFuZCBjaGVjayB3aGV0aGVyIHRoZSBBVEsgd3JhcHBlciBpcyBkZXRh
Y2hlZCBvciBub3QKKyAgICAgICAgYWZ0ZXIgdGhhdCwgdG8gZGVjaWRlIHdoZXRoZXIgdG8gY29u
dGludWUgb3Igbm90LgorCisgICAgICAgIEJlc2lkZXMgcHJvdmlkaW5nIGEgbmV3IHRlc3QgdG8g
Y2hlY2sgdGhhdCBpdCBXZWJLaXQgZG9lcyBub3QKKyAgICAgICAgY3Jhc2ggaW4gYSBnaXZlbiBz
Y2VuYXJpbyAod2hpY2ggYWN0dWFsbHkgdHJpZ2dlcmVkIHRoZQorICAgICAgICBpbnZlc3RpZ2F0
aW9uIGhlcmUpLCBzb2x2aW5nIHRoaXMgc2l0dWF0aW9uIGFsc28gZml4ZXMgb3RoZXIgdGVzdHMK
KyAgICAgICAgdGhhdCB3ZXJlIHByZXZpb3VzbHkgZmFpbGluZyAoYXJpYS11c2VkLW9uLWltYWdl
LW1hcHMuaHRtbCkgb3IKKyAgICAgICAgdGhhdCB3ZXJlIHByaW50aW5nIHdyb25nIHJlc3VsdHMs
IG5vdCBkZXRlY3RlZCB1bnRpbCBub3cgZHVlIHRvCisgICAgICAgIHdyb25nIHBsYXRmb3JtIHNw
ZWNpZmljIGV4cGVjdGF0aW9ucyAoZmlsZS11cGxvYWQtYnV0dG9uLXN0cmluZ3ZhbHVlCisgICAg
ICAgIGFuZCBkZWxldGluZy1pZnJhbWUtZGVzdHJveXMtYXhjYWNoZSkuCisKKyAgICAgICAgVGVz
dDogYWNjZXNzaWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRlbi5odG1sCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5oOiBBZGRlZCB0d28g
bmV3IG1hY3JvcworICAgICAgICB0byBpbmplY3QgdGhlIG5lZWRlZCBjb2RlIGF0IHRoZSBiZWdp
bm5pbmcgb2YgZWFjaCBlbnRyeSBwb2ludCB0bworICAgICAgICBhbGxvdyBncmFjZWZ1bGx5IGV4
aXQgdGhvc2UgZnVuY3Rpb25zIHdoZW4gdGhlIHJlbmRlciB0cmVlIGlzCisgICAgICAgIHVuc3Rh
YmxlLiBJbnNwaXJlZCBieSBnX3JldHVybl9pZl9mYWlsIGFuZCBnX3JldHVybl92YWxfaWZfZmFp
bCwgd2UKKyAgICAgICAgY2FsbGVkIHRoZW0gcmV0dXJuSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZh
bGlkIGFuZCByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQuCisKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcDoKKyAgICAg
ICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtBY3Rpb25Eb0FjdGlvbik6IFByb3RlY3QgZW50
cnkgcG9pbnQuCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rQWN0aW9uR2V0TkFj
dGlvbnMpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtBY3Rpb25H
ZXREZXNjcmlwdGlvbik6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlu
a0FjdGlvbkdldEtleWJpbmRpbmcpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVI
eXBlcmxpbmtBY3Rpb25HZXROYW1lKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxl
SHlwZXJsaW5rR2V0VVJJKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJs
aW5rR2V0T2JqZWN0KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5r
R2V0U3RhcnRJbmRleCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlu
a0dldEVuZEluZGV4KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5r
SXNWYWxpZCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldE5B
bmNob3JzKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rSXNTZWxl
Y3RlZExpbmspOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlSW50ZXJmYWNlQWN0aW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVBY3Rp
b25Eb0FjdGlvbik6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUFjdGlvbkdldE5B
Y3Rpb25zKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlQWN0aW9uR2V0RGVzY3Jp
cHRpb24pOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVBY3Rpb25HZXRLZXliaW5k
aW5nKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlQWN0aW9uR2V0TmFtZSk6IERp
dHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VDb21wb25lbnQuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUNvbXBvbmVudFJlZkFj
Y2Vzc2libGVBdFBvaW50KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlQ29tcG9u
ZW50R2V0RXh0ZW50cyk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUNvbXBvbmVu
dEdyYWJGb2N1cyk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVJbnRlcmZhY2VEb2N1bWVudC5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxl
RG9jdW1lbnRHZXRBdHRyaWJ1dGVWYWx1ZSk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNz
aWJsZURvY3VtZW50R2V0QXR0cmlidXRlcyk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNz
aWJsZURvY3VtZW50R2V0TG9jYWxlKTogRGl0dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUVkaXRhYmxlVGV4dC5jcHA6CisgICAgICAgICh3
ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0U2V0UnVuQXR0cmlidXRlcyk6IERpdHRvLgorICAg
ICAgICAod2Via2l0QWNjZXNzaWJsZUVkaXRhYmxlVGV4dFNldFRleHRDb250ZW50cyk6IERpdHRv
LgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUVkaXRhYmxlVGV4dEluc2VydFRleHQpOiBEaXR0
by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVFZGl0YWJsZVRleHRDb3B5VGV4dCk6IERpdHRv
LgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUVkaXRhYmxlVGV4dEN1dFRleHQpOiBEaXR0by4K
KyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVFZGl0YWJsZVRleHREZWxldGVUZXh0KTogRGl0dG8u
CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0UGFzdGVUZXh0KTogRGl0dG8u
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUh5
cGVydGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0R2V0TGluayk6
IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVydGV4dEdldE5MaW5rcyk6IERp
dHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVydGV4dEdldExpbmtJbmRleCk6IERp
dHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VJbWFnZS5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VHZXRJbWFnZVBvc2l0
aW9uKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VHZXRJbWFnZURlc2Ny
aXB0aW9uKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VHZXRJbWFnZVNp
emUpOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
SW50ZXJmYWNlU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rp
b25BZGRTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rp
b25DbGVhclNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVNlbGVj
dGlvblJlZlNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVNlbGVj
dGlvbkdldFNlbGVjdGlvbkNvdW50KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxl
U2VsZWN0aW9uSXNDaGlsZFNlbGVjdGVkKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3Np
YmxlU2VsZWN0aW9uUmVtb3ZlU2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nl
c3NpYmxlU2VsZWN0aW9uU2VsZWN0QWxsU2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcDoKKyAgICAg
ICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZVJlZkF0KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRB
Y2Nlc3NpYmxlVGFibGVHZXRJbmRleEF0KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3Np
YmxlVGFibGVHZXRDb2x1bW5BdEluZGV4KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3Np
YmxlVGFibGVHZXRSb3dBdEluZGV4KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxl
VGFibGVHZXROQ29sdW1ucyk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxl
R2V0TlJvd3MpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENvbHVt
bkV4dGVudEF0KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRSb3dF
eHRlbnRBdCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q29sdW1u
SGVhZGVyKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRSb3dIZWFk
ZXIpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENhcHRpb24pOiBE
aXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkRlc2NyaXB0aW9u
KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRSb3dEZXNjcmlwdGlv
bik6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJ
bnRlcmZhY2VUZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dCk6
IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXh0QWZ0ZXJPZmZzZXQp
OiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dEF0T2Zmc2V0KTog
RGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHRCZWZvcmVPZmZzZXQp
OiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0Q2hhcmFjdGVyQXRPZmZz
ZXQpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0Q2FyZXRPZmZzZXQp
OiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0UnVuQXR0cmlidXRlcyk6
IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRleHRHZXREZWZhdWx0QXR0cmlidXRl
cyk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRleHRHZXRDaGFyYWN0ZXJFeHRl
bnRzKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFJhbmdlRXh0ZW50
cyk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRleHRHZXRDaGFyYWN0ZXJDb3Vu
dCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRleHRHZXRPZmZzZXRBdFBvaW50
KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldE5TZWxlY3Rpb25zKTog
RGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFNlbGVjdGlvbik6IERpdHRv
LgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRleHRBZGRTZWxlY3Rpb24pOiBEaXR0by4KKyAg
ICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0U2V0U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAg
ICh3ZWJraXRBY2Nlc3NpYmxlVGV4dFJlbW92ZVNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAo
d2Via2l0QWNjZXNzaWJsZVRleHRTZXRDYXJldE9mZnNldCk6IERpdHRvLgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VWYWx1ZS5jcHA6CisgICAg
ICAgICh3ZWJraXRBY2Nlc3NpYmxlVmFsdWVHZXRDdXJyZW50VmFsdWUpOiBEaXR0by4KKyAgICAg
ICAgKHdlYmtpdEFjY2Vzc2libGVWYWx1ZUdldE1heGltdW1WYWx1ZSk6IERpdHRvLgorICAgICAg
ICAod2Via2l0QWNjZXNzaWJsZVZhbHVlR2V0TWluaW11bVZhbHVlKTogRGl0dG8uCisgICAgICAg
ICh3ZWJraXRBY2Nlc3NpYmxlVmFsdWVTZXRDdXJyZW50VmFsdWUpOiBEaXR0by4KKyAgICAgICAg
KHdlYmtpdEFjY2Vzc2libGVWYWx1ZUdldE1pbmltdW1JbmNyZW1lbnQpOiBEaXR0by4KKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHA6Cisg
ICAgICAgIChjb3JlKTogUmVtb3ZlZCwgYXMgaXQncyBub3QgYWN0dWFsbHkgbmVlZGVkLgorICAg
ICAgICAod2Via2l0QWNjZXNzaWJsZUdldE5hbWUpOiAgUHJvdGVjdCBlbnRyeSBwb2ludC4KKyAg
ICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXREZXNjcmlwdGlvbik6IERpdHRvLgorICAgICAgICAo
d2Via2l0QWNjZXNzaWJsZUdldFBhcmVudCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNz
aWJsZUdldE5DaGlsZHJlbik6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVJlZkNo
aWxkKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0SW5kZXhJblBhcmVudCk6
IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldEF0dHJpYnV0ZXMpOiBEaXR0by4K
KyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXRSb2xlKTogRGl0dG8uCisgICAgICAgICh3ZWJr
aXRBY2Nlc3NpYmxlUmVmU3RhdGVTZXQpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2li
bGVSZWZSZWxhdGlvblNldCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldE9i
amVjdExvY2FsZSk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZURldGFjaCk6IERp
dHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUlzRGV0YWNoZWQpOiBOZXcgaGVscGVyIGZ1
bmN0aW9uLCB0byBiZSB1c2VkIGZyb20KKyAgICAgICAgdGhlIG5ld2x5IGFkZGVkIG1hY3Jvcy4g
V2UgbmVlZCB0byBjaGVjayB3aGV0aGVyIHRoZSB3cmFwcGVyIGlzCisgICAgICAgIGRldGFjaGVk
IGFuZCBub3QganVzdCB0aGUgd3JhcHBlciBBY2Nlc3NpYmlsaXR5T2JqZWN0IHNpbmNlIG9uY2UK
KyAgICAgICAgdGhlIGRldGFjaG1lbnQgaGFwcGVucyB3ZSBjYW4ndCB0cnVzdCBhbnl0aGluZyBi
dXQgdGhlIEF0a09iamVjdAorICAgICAgICBmcm9tIHRoZSB3cmFwcGVyICh0aGUgQWNjZXNzaWJp
bGl0eU9iamVjdCBtaWdodCBiZSBpbnZhbGlkKS4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5oOgorCisgICAgICAgIEFzc2VydCB0aGF0IHRo
ZSByZW5kZXIgdHJlZSBpcyBuZWl0aGVyIGJlaW5nIHVwZGF0ZWQgbm9yIGluIG5lZWQKKyAgICAg
ICAgb2YgYmVpbmcgdXBkYXRlZCBiZWZvcmUgdHJ5aW5nIHRvIGNvbXB1dGUgdGhlIHRleHQgdW5k
ZXIgYSBnaXZlbgorICAgICAgICBlbGVtZW50LCBzaW5jZSB0aGF0IG1pZ2h0IGxlYWQgdG8gY3Jh
c2hlcyBkdWUgdG8gdGhlIGNvbnN0cnVjdG9yCisgICAgICAgIG9mIFRleHRJdGVyYXRvciBjYWxs
aW5nIHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpLgorCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCk6IEFzc2VydCB0
aGF0CisgICAgICAgIHRoZSByZW5kZXIgdHJlZSBpcyBuZWl0aGVyIGJlaW5nIHVwZGF0ZWQgbm9y
IG5lZWRpbmcgdXBkYXRpbmcuCisKIDIwMTMtMDktMjYgIE1paGFpIE1hZXJlYW4gIDxtbWFlcmVh
bkBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBSZWdpb25zXSBUaGUgbGF5ZXJzIGZyb20gdGhl
IGZsb3cgdGhyZWFkIHNob3VsZCBiZSBjb2xsZWN0ZWQgdW5kZXIgdGhlIHJlZ2lvbnMnIGxheWVy
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggY2RjZmZkZC4uZDdiZjY4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5j
cHAKQEAgLTY4LDYgKzY4LDcgQEAKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgorI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
ICNpbmNsdWRlICJUZXh0LmgiCkBAIC0xNTgwLDYgKzE1ODEsMTIgQEAgU3RyaW5nIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJF
bGVtZW50TW8KICAgICBpZiAobm9kZSAmJiBub2RlLT5pc1RleHROb2RlKCkpCiAgICAgICAgIHJl
dHVybiB0b1RleHQobm9kZSktPndob2xlVGV4dCgpOwogCisgICAgLy8gVGhlIHJlbmRlciB0cmVl
IHNob3VsZCBiZSBzdGFibGUgYmVmb3JlIGdvaW5nIGFoZWFkLiBPdGhlcndpc2UsIGZ1cnRoZXIg
dXNlcyBvZiB0aGUKKyAgICAvLyBUZXh0SXRlcmF0b3Igd2lsbCBmb3JjZSBhIGxheW91dCB1cGRh
dGUsIHBvdGVudGlhbGx5IGFsdGVyaW5nIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUKKyAgICAvLyBh
bmQgbGVhZGluZyB0byBjcmFzaGVzIGluIHRoZSBsb29wIHRoYXQgY29tcHV0ZXMgdGhlIHJlc3Vs
dCB0ZXh0IGZyb20gdGhlIGNoaWxkcmVuLgorICAgIEFTU0VSVCghZG9jdW1lbnQoKS0+cmVuZGVy
VmlldygpLT5sYXlvdXRTdGF0ZSgpKTsKKyAgICBBU1NFUlQoIWRvY3VtZW50KCktPmNoaWxkTmVl
ZHNTdHlsZVJlY2FsYygpKTsKKwogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3Ig
KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoIXNob3VsZFVzZUFjY2Vzc2li
bGl0eU9iamVjdElubmVyVGV4dChjaGlsZCwgbW9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsu
Y3BwCmluZGV4IGZlMzQ1NzcuLjU3MjU4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3Bw
CkBAIC05NCw2ICs5NCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJs
aW5rQWN0aW9uRG9BY3Rpb24oQXRrQWN0aW9uKiBhY3Rpb24sIGdpbnQKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRV9IWVBFUkxJTksoYWN0aW9uKSwgRkFMU0Up
OwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhh
Y3Rpb24pLT5wcml2LT5oeXBlcmxpbmtJbXBsLCBGQUxTRSk7CiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoIWluZGV4LCBGQUxTRSk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJ
bnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLT5wcml2LT5oeXBlcmxp
bmtJbXBsLCBGQUxTRSk7CiAKICAgICBpZiAoIUFUS19JU19BQ1RJT04oV0VCS0lUX0FDQ0VTU0lC
TEVfSFlQRVJMSU5LKGFjdGlvbiktPnByaXYtPmh5cGVybGlua0ltcGwpKQogICAgICAgICByZXR1
cm4gRkFMU0U7CkBAIC0xMDksNiArMTEwLDcgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJs
ZUh5cGVybGlua0FjdGlvbkdldE5BY3Rpb25zKEF0a0FjdGlvbiogYWN0aW9uKQogewogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24p
LCAwKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJ
TksoYWN0aW9uKS0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7CisgICAgcmV0dXJuVmFsSWZXZWJL
aXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24p
LT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsKIAogICAgIGlmICghQVRLX0lTX0FDVElPTihXRUJL
SVRfQUNDRVNTSUJMRV9IWVBFUkxJTksoYWN0aW9uKS0+cHJpdi0+aHlwZXJsaW5rSW1wbCkpCiAg
ICAgICAgIHJldHVybiAwOwpAQCAtMTIxLDYgKzEyMyw3IEBAIHN0YXRpYyBjb25zdCBnY2hhciog
d2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkdldERlc2NyaXB0aW9uKEF0a0FjdGlvbiog
YWN0CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQRVJM
SU5LKGFjdGlvbiksIDApOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9BQ0NFU1NJ
QkxFX0hZUEVSTElOSyhhY3Rpb24pLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbCghaW5kZXgsIDApOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNz
aWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksoYWN0aW9uKS0+cHJpdi0+
aHlwZXJsaW5rSW1wbCwgMCk7CiAKICAgICAvLyBUT0RPOiBOZWVkIGEgd2F5IHRvIHByb3ZpZGUv
bG9jYWxpemUgYWN0aW9uIGRlc2NyaXB0aW9ucy4KICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAt
MTMwLDEwICsxMzMsMTEgQEAgc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlSHlw
ZXJsaW5rQWN0aW9uR2V0RGVzY3JpcHRpb24oQXRrQWN0aW9uKiBhY3QKIHN0YXRpYyBjb25zdCBn
Y2hhciogd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkdldEtleWJpbmRpbmcoQXRrQWN0
aW9uKiBhY3Rpb24sIGdpbnQgaW5kZXgpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGFjdGlvbiksIDApOworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLT5wcml2LT5oeXBl
cmxpbmtJbXBsLCAwKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghaW5kZXgsIDApOwogCiAg
ICAgV2ViS2l0QWNjZXNzaWJsZUh5cGVybGlua1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfQUNDRVNT
SUJMRV9IWVBFUkxJTksoYWN0aW9uKS0+cHJpdjsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChw
cml2LT5oeXBlcmxpbmtJbXBsLCAwKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJ
c0ludmFsaWQocHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7CiAKICAgICBpZiAoIUFUS19JU19BQ1RJ
T04ocHJpdi0+aHlwZXJsaW5rSW1wbCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTQ5LDEwICsx
NTMsMTEgQEAgc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rQWN0
aW9uR2V0S2V5YmluZGluZyhBdGtBY3Rpb24qIGFjdGkKIHN0YXRpYyBjb25zdCBnY2hhciogd2Vi
a2l0QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkdldE5hbWUoQXRrQWN0aW9uKiBhY3Rpb24sIGdp
bnQgaW5kZXgpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lC
TEVfSFlQRVJMSU5LKGFjdGlvbiksIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghaW5kZXgsIDApOwogCiAgICAgV2ViS2l0QWNjZXNz
aWJsZUh5cGVybGlua1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTkso
YWN0aW9uKS0+cHJpdjsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChwcml2LT5oeXBlcmxpbmtJ
bXBsLCAwKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQocHJpdi0+
aHlwZXJsaW5rSW1wbCwgMCk7CiAKICAgICBpZiAoIUFUS19JU19BQ1RJT04ocHJpdi0+aHlwZXJs
aW5rSW1wbCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTc3LDEwICsxODIsMTQgQEAgc3RhdGlj
IHZvaWQgYXRrQWN0aW9uSW50ZXJmYWNlSW5pdChBdGtBY3Rpb25JZmFjZSogaWZhY2UpCiBzdGF0
aWMgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRVUkkoQXRrSHlwZXJsaW5rKiBs
aW5rLCBnaW50IGluZGV4KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19B
Q0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAw
KTsKKwogICAgIC8vIEZJWE1FOiBEbyBOT1Qgc3VwcG9ydCBtb3JlIHRoYW4gb25lIGluc3RhbmNl
IG9mIGFuIEF0a09iamVjdAogICAgIC8vIGltcGxlbWVudGluZyBBdGtIeXBlcmxpbmtJbXBsIGlu
IGV2ZXJ5IGluc3RhbmNlIG9mIEF0a0h5cGVyTGluawogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KCFpbmRleCwgMCk7CiAKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQo
V0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAw
KTsKKwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBjb3JlKGxpbmspOwog
ICAgIGlmICghY29yZU9iamVjdCB8fCBjb3JlT2JqZWN0LT51cmwoKS5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC0xOTcsNiArMjA2LDggQEAgc3RhdGljIEF0a09iamVjdCogd2Via2l0
QWNjZXNzaWJsZUh5cGVybGlua0dldE9iamVjdChBdGtIeXBlcmxpbmsqIGxpbmssIGdpbnQgaW4K
ICAgICAvLyBpbXBsZW1lbnRpbmcgQXRrSHlwZXJsaW5rSW1wbCBpbiBldmVyeSBpbnN0YW5jZSBv
ZiBBdGtIeXBlckxpbmsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghaW5kZXgsIDApOwogCisg
ICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxF
X0hZUEVSTElOSyhsaW5rKS0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7CisKICAgICByZXR1cm4g
QVRLX09CSkVDVChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayktPnByaXYtPmh5cGVy
bGlua0ltcGwpOwogfQogCkBAIC0yMzAsNiArMjQxLDggQEAgc3RhdGljIGdpbnQgZ2V0UmFuZ2VM
ZW5ndGhGb3JPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBSYW5nZSogcmFuZ2UpCiBz
dGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0U3RhcnRJbmRleChBdGtIeXBl
cmxpbmsqIGxpbmspCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VT
U0lCTEVfSFlQRVJMSU5LKGxpbmspLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayktPnByaXYtPmh5cGVybGlua0ltcGwsIDApOwor
ICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJM
RV9IWVBFUkxJTksobGluayktPnByaXYtPmh5cGVybGlua0ltcGwsIDApOwogCiAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUobGluayk7CiAgICAgaWYgKCFjb3JlT2Jq
ZWN0KQpAQCAtMjU0LDYgKzI2Nyw4IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBl
cmxpbmtHZXRTdGFydEluZGV4KEF0a0h5cGVybGluayogbGluaykKIHN0YXRpYyBnaW50IHdlYmtp
dEFjY2Vzc2libGVIeXBlcmxpbmtHZXRFbmRJbmRleChBdGtIeXBlcmxpbmsqIGxpbmspCiB7CiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxp
bmspLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfQUNDRVNTSUJMRV9IWVBF
UkxJTksobGluayktPnByaXYtPmh5cGVybGlua0ltcGwsIDApOworICAgIHJldHVyblZhbElmV2Vi
S2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluaykt
PnByaXYtPmh5cGVybGlua0ltcGwsIDApOwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29y
ZU9iamVjdCA9IGNvcmUobGluayk7CiAgICAgaWYgKCFjb3JlT2JqZWN0KQpAQCAtMjc3LDggKzI5
Miw5IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRFbmRJbmRleChB
dGtIeXBlcmxpbmsqIGxpbmspCiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlSHlw
ZXJsaW5rSXNWYWxpZChBdGtIeXBlcmxpbmsqIGxpbmspCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLCAwKTsKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayksIEZB
TFNFKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJ
TksobGluayktPnByaXYtPmh5cGVybGlua0ltcGwsIEZBTFNFKTsKKyAgICByZXR1cm5WYWxJZldl
YktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmsp
LT5wcml2LT5oeXBlcmxpbmtJbXBsLCBGQUxTRSk7CiAKICAgICAvLyBMaW5rIGlzIHZhbGlkIGZv
ciB0aGUgd2hvbGUgb2JqZWN0J3MgbGlmZXRpbWUKICAgICByZXR1cm4gVFJVRTsKQEAgLTI5MCwx
MSArMzA2LDE3IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXROQW5j
aG9ycyhBdGtIeXBlcmxpbmsqIGxpbmspCiAgICAgLy8gaW1wbGVtZW50aW5nIEF0a0h5cGVybGlu
a0ltcGwgaW4gZXZlcnkgaW5zdGFuY2Ugb2YgQXRrSHlwZXJMaW5rCiAgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLCAwKTsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayktPnBy
aXYtPmh5cGVybGlua0ltcGwsIDApOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlz
SW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayktPnByaXYtPmh5cGVybGlu
a0ltcGwsIDApOworCiAgICAgcmV0dXJuIDE7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRB
Y2Nlc3NpYmxlSHlwZXJsaW5rSXNTZWxlY3RlZExpbmsoQXRrSHlwZXJsaW5rKikKK3N0YXRpYyBn
Ym9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rSXNTZWxlY3RlZExpbmsoQXRrSHlwZXJs
aW5rKiBsaW5rKQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19BQ0NFU1NJ
QkxFX0hZUEVSTElOSyhsaW5rKSwgRkFMU0UpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKS0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgRkFM
U0UpOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUND
RVNTSUJMRV9IWVBFUkxJTksobGluayktPnByaXYtPmh5cGVybGlua0ltcGwsIEZBTFNFKTsKKwog
ICAgIC8vIE5vdCBpbXBsZW1lbnRlZDogdGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGluIEFU
SyBub3cKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBGQUxTRTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZUludGVyZmFjZUFjdGlvbi5jcHAKaW5kZXggZWIxOGJlYi4uYzc5YmRjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZUludGVyZmFjZUFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUFjdGlvbi5jcHAKQEAgLTUxLDE3ICs1MSwyNyBA
QCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZShBdGtBY3Rpb24qIGFjdGlvbikKIAog
c3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVBY3Rpb25Eb0FjdGlvbihBdGtBY3Rpb24q
IGFjdGlvbiwgZ2ludCBpbmRleCkKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfSVNf
QUNUSU9OKGFjdGlvbiksIEZBTFNFKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghaW5kZXgs
IEZBTFNFKTsKKworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJL
SVRfQUNDRVNTSUJMRShhY3Rpb24pLCBGQUxTRSk7CisKICAgICByZXR1cm4gY29yZShhY3Rpb24p
LT5wZXJmb3JtRGVmYXVsdEFjdGlvbigpOwogfQogCi1zdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3Np
YmxlQWN0aW9uR2V0TkFjdGlvbnMoQXRrQWN0aW9uKikKK3N0YXRpYyBnaW50IHdlYmtpdEFjY2Vz
c2libGVBY3Rpb25HZXROQWN0aW9ucyhBdGtBY3Rpb24qIGFjdGlvbikKIHsKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChBVEtfSVNfQUNUSU9OKGFjdGlvbiksIDApOworICAgIHJldHVyblZhbElm
V2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShhY3Rpb24pLCAwKTsK
KwogICAgIHJldHVybiAxOwogfQogCi1zdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2li
bGVBY3Rpb25HZXREZXNjcmlwdGlvbihBdGtBY3Rpb24qLCBnaW50KQorc3RhdGljIGNvbnN0IGdj
aGFyKiB3ZWJraXRBY2Nlc3NpYmxlQWN0aW9uR2V0RGVzY3JpcHRpb24oQXRrQWN0aW9uKiBhY3Rp
b24sIGdpbnQpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX0lTX0FDVElPTihhY3Rp
b24pLCAwKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lU
X0FDQ0VTU0lCTEUoYWN0aW9uKSwgMCk7CisKICAgICAvLyBUT0RPOiBOZWVkIGEgd2F5IHRvIHBy
b3ZpZGUvbG9jYWxpemUgYWN0aW9uIGRlc2NyaXB0aW9ucy4KICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiAiIjsKQEAgLTY5LDE0ICs3OSwyMCBAQCBzdGF0aWMgY29uc3QgZ2NoYXIq
IHdlYmtpdEFjY2Vzc2libGVBY3Rpb25HZXREZXNjcmlwdGlvbihBdGtBY3Rpb24qLCBnaW50KQog
CiBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVBY3Rpb25HZXRLZXliaW5kaW5n
KEF0a0FjdGlvbiogYWN0aW9uLCBnaW50IGluZGV4KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKEFUS19JU19BQ1RJT04oYWN0aW9uKSwgMCk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
IWluZGV4LCAwKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VC
S0lUX0FDQ0VTU0lCTEUoYWN0aW9uKSwgMCk7CisKICAgICAvLyBGSVhNRTogQ29uc3RydWN0IGEg
cHJvcGVyIGtleWJpbmRpbmcgc3RyaW5nLgogICAgIHJldHVybiBjYWNoZUFuZFJldHVybkF0a1By
b3BlcnR5KEFUS19PQkpFQ1QoYWN0aW9uKSwgQXRrQ2FjaGVkQWN0aW9uS2V5QmluZGluZywgY29y
ZShhY3Rpb24pLT5hY2Nlc3NLZXkoKS5zdHJpbmcoKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBnY2hh
ciogd2Via2l0QWNjZXNzaWJsZUFjdGlvbkdldE5hbWUoQXRrQWN0aW9uKiBhY3Rpb24sIGdpbnQg
aW5kZXgpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX0lTX0FDVElPTihhY3Rpb24p
LCAwKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghaW5kZXgsIDApOworICAgIHJldHVyblZh
bElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShhY3Rpb24pLCAw
KTsKKwogICAgIHJldHVybiBjYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KEFUS19PQkpFQ1QoYWN0
aW9uKSwgQXRrQ2FjaGVkQWN0aW9uTmFtZSwgY29yZShhY3Rpb24pLT5hY3Rpb25WZXJiKCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlSW50ZXJmYWNlQ29tcG9uZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VDb21wb25lbnQuY3BwCmluZGV4IDcx
MDNlYTYuLmI5M2Q4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VDb21wb25lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VDb21wb25l
bnQuY3BwCkBAIC02OCw2ICs2OCw5IEBAIHN0YXRpYyBJbnRQb2ludCBhdGtUb0NvbnRlbnRzKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIEF0a0Nvb3JkVHlwZSBjb29yCiAKIHN0YXRp
YyBBdGtPYmplY3QqIHdlYmtpdEFjY2Vzc2libGVDb21wb25lbnRSZWZBY2Nlc3NpYmxlQXRQb2lu
dChBdGtDb21wb25lbnQqIGNvbXBvbmVudCwgZ2ludCB4LCBnaW50IHksIEF0a0Nvb3JkVHlwZSBj
b29yZFR5cGUpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX0lTX0NPTVBPTkVOVChj
b21wb25lbnQpLCAwKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQo
V0VCS0lUX0FDQ0VTU0lCTEUoY29tcG9uZW50KSwgMCk7CisKICAgICBJbnRQb2ludCBwb3MgPSBh
dGtUb0NvbnRlbnRzKGNvcmUoY29tcG9uZW50KSwgY29vcmRUeXBlLCB4LCB5KTsKIAogICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHRhcmdldCA9IGNvcmUoY29tcG9uZW50KS0+YWNjZXNzaWJpbGl0
eUhpdFRlc3QocG9zKTsKQEAgLTc5LDEyICs4MiwxOCBAQCBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJr
aXRBY2Nlc3NpYmxlQ29tcG9uZW50UmVmQWNjZXNzaWJsZUF0UG9pbnQoQXRrQ29tcG9uZW50KiBj
bwogCiBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlQ29tcG9uZW50R2V0RXh0ZW50cyhBdGtD
b21wb25lbnQqIGNvbXBvbmVudCwgZ2ludCogeCwgZ2ludCogeSwgZ2ludCogd2lkdGgsIGdpbnQq
IGhlaWdodCwgQXRrQ29vcmRUeXBlIGNvb3JkVHlwZSkKIHsKKyAgICBnX3JldHVybl9pZl9mYWls
KEFUS19JU19DT01QT05FTlQoY29tcG9uZW50KSk7CisgICAgcmV0dXJuSWZXZWJLaXRBY2Nlc3Np
YmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKGNvbXBvbmVudCkpOworCiAgICAgSW50UmVj
dCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChjb3JlKGNvbXBvbmVudCktPmVsZW1lbnRSZWN0
KCkpOwogICAgIGNvbnRlbnRzUmVsYXRpdmVUb0F0a0Nvb3JkaW5hdGVUeXBlKGNvcmUoY29tcG9u
ZW50KSwgY29vcmRUeXBlLCByZWN0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogc3RhdGlj
IGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVDb21wb25lbnRHcmFiRm9jdXMoQXRrQ29tcG9uZW50
KiBjb21wb25lbnQpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX0lTX0NPTVBPTkVO
VChjb21wb25lbnQpLCBGQUxTRSk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJ
bnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKGNvbXBvbmVudCksIEZBTFNFKTsKKwogICAgIGNvcmUo
Y29tcG9uZW50KS0+c2V0Rm9jdXNlZCh0cnVlKTsKICAgICByZXR1cm4gY29yZShjb21wb25lbnQp
LT5pc0ZvY3VzZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlRG9jdW1lbnQu
Y3BwCmluZGV4IGYwNzQ4NDMuLjVhNTJmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VEb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZURvY3VtZW50LmNwcApAQCAtNzgsMTEgKzc4LDE3IEBAIHN0YXRpYyBjb25zdCBnY2hhciog
ZG9jdW1lbnRBdHRyaWJ1dGVWYWx1ZShBdGtEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IGdjaGFy
KiBhCiAKIHN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZURvY3VtZW50R2V0QXR0
cmlidXRlVmFsdWUoQXRrRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBnY2hhciogYXR0cmlidXRl
KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19JU19ET0NVTUVOVChkb2N1bWVudCks
IDApOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUND
RVNTSUJMRShkb2N1bWVudCksIDApOworCiAgICAgcmV0dXJuIGRvY3VtZW50QXR0cmlidXRlVmFs
dWUoZG9jdW1lbnQsIGF0dHJpYnV0ZSk7CiB9CiAKIHN0YXRpYyBBdGtBdHRyaWJ1dGVTZXQqIHdl
YmtpdEFjY2Vzc2libGVEb2N1bWVudEdldEF0dHJpYnV0ZXMoQXRrRG9jdW1lbnQqIGRvY3VtZW50
KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19JU19ET0NVTUVOVChkb2N1bWVudCks
IDApOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUND
RVNTSUJMRShkb2N1bWVudCksIDApOworCiAgICAgQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVT
ZXQgPSAwOwogICAgIGNvbnN0IGdjaGFyKiBhdHRyaWJ1dGVzW10gPSB7ICJEb2NUeXBlIiwgIkVu
Y29kaW5nIiwgIlVSSSIgfTsKIApAQCAtOTcsNiArMTAzLDkgQEAgc3RhdGljIEF0a0F0dHJpYnV0
ZVNldCogd2Via2l0QWNjZXNzaWJsZURvY3VtZW50R2V0QXR0cmlidXRlcyhBdGtEb2N1bWVudCog
ZG9jdW0KIAogc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlRG9jdW1lbnRHZXRM
b2NhbGUoQXRrRG9jdW1lbnQqIGRvY3VtZW50KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KEFUS19JU19ET0NVTUVOVChkb2N1bWVudCksIDApOworICAgIHJldHVyblZhbElmV2ViS2l0QWNj
ZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShkb2N1bWVudCksIDApOworCiAgICAg
Ly8gVGhlIGxvZ2ljIHRvIHJlc29sdmUgbG9jYWxlIGhhcyBiZWVuIG1vdmVkIHRvCiAgICAgLy8g
QXRrT2JqZWN0OjpnZXRfb2JqZWN0X2xvY2FsZSgpIHZpcnR1YWwgbWV0aG9kLiBIb3dldmVyLCB0
byBhdm9pZCBicmVha2luZwogICAgIC8vIGNsaWVudHMgZXhwZWN0aW5nIHRoZSBkZXByZWNhdGVk
IEF0a0RvY3VtZW50SWZhY2U6OmdldF9kb2N1bWVudF9sb2NhbGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUVk
aXRhYmxlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlSW50ZXJmYWNlRWRpdGFibGVUZXh0LmNwcAppbmRleCBhMzNjNTkzLi5hMTJlOTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlSW50ZXJmYWNlRWRpdGFibGVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlRWRpdGFibGVUZXh0LmNwcApA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxl
VXRpbC5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmgiCiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTAsMjAgKzUxLDI5IEBAIHN0YXRpYyBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBjb3JlKEF0a0VkaXRhYmxlVGV4dCogdGV4dCkKICAgICByZXR1cm4gd2Via2l0
QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV0VCS0lUX0FDQ0VTU0lCTEUodGV4dCkp
OwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZUVkaXRhYmxlVGV4dFNldFJ1
bkF0dHJpYnV0ZXMoQXRrRWRpdGFibGVUZXh0KiwgQXRrQXR0cmlidXRlU2V0KiwgZ2ludCwgZ2lu
dCkKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0U2V0UnVuQXR0
cmlidXRlcyhBdGtFZGl0YWJsZVRleHQqIHRleHQsIEF0a0F0dHJpYnV0ZVNldCosIGdpbnQsIGdp
bnQpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX0lTX0VESVRBQkxFX1RFWFQodGV4
dCksIEZBTFNFKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VC
S0lUX0FDQ0VTU0lCTEUodGV4dCksIEZBTFNFKTsKKwogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlRWRpdGFi
bGVUZXh0U2V0VGV4dENvbnRlbnRzKEF0a0VkaXRhYmxlVGV4dCogdGV4dCwgY29uc3QgZ2NoYXIq
IHN0cmluZykKIHsKKyAgICBnX3JldHVybl9pZl9mYWlsKEFUS19JU19FRElUQUJMRV9URVhUKHRl
eHQpKTsKKyAgICByZXR1cm5JZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VT
U0lCTEUodGV4dCkpOworCiAgICAgLy8gRklYTUU6IHN0cmluZyBudWxsY2hlY2s/CiAgICAgY29y
ZSh0ZXh0KS0+c2V0VmFsdWUoU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpKTsKIH0KIAogc3RhdGlj
IHZvaWQgd2Via2l0QWNjZXNzaWJsZUVkaXRhYmxlVGV4dEluc2VydFRleHQoQXRrRWRpdGFibGVU
ZXh0KiB0ZXh0LCBjb25zdCBnY2hhciogc3RyaW5nLCBnaW50IGxlbmd0aCwgZ2ludCogcG9zaXRp
b24pCiB7CisgICAgZ19yZXR1cm5faWZfZmFpbChBVEtfSVNfRURJVEFCTEVfVEVYVCh0ZXh0KSk7
CisgICAgcmV0dXJuSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxF
KHRleHQpKTsKKwogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm47CiAKQEAgLTgzLDE4
ICs5MywyNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0SW5zZXJ0
VGV4dChBdGtFZGl0YWJsZVRleHQqIHRleHQsIGNvbnN0CiAgICAgICAgICpwb3NpdGlvbiArPSBs
ZW5ndGg7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVFZGl0YWJsZVRleHRDb3B5
VGV4dChBdGtFZGl0YWJsZVRleHQqLCBnaW50LCBnaW50KQorc3RhdGljIHZvaWQgd2Via2l0QWNj
ZXNzaWJsZUVkaXRhYmxlVGV4dENvcHlUZXh0KEF0a0VkaXRhYmxlVGV4dCogdGV4dCwgZ2ludCwg
Z2ludCkKIHsKKyAgICBnX3JldHVybl9pZl9mYWlsKEFUS19JU19FRElUQUJMRV9URVhUKHRleHQp
KTsKKyAgICByZXR1cm5JZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lC
TEUodGV4dCkpOworCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotc3RhdGljIHZvaWQgd2Vi
a2l0QWNjZXNzaWJsZUVkaXRhYmxlVGV4dEN1dFRleHQoQXRrRWRpdGFibGVUZXh0KiwgZ2ludCwg
Z2ludCkKK3N0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVFZGl0YWJsZVRleHRDdXRUZXh0KEF0
a0VkaXRhYmxlVGV4dCogdGV4dCwgZ2ludCwgZ2ludCkKIHsKKyAgICBnX3JldHVybl9pZl9mYWls
KEFUS19JU19FRElUQUJMRV9URVhUKHRleHQpKTsKKyAgICByZXR1cm5JZldlYktpdEFjY2Vzc2li
bGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodGV4dCkpOworCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0QWNjZXNzaWJsZUVkaXRhYmxlVGV4dERlbGV0
ZVRleHQoQXRrRWRpdGFibGVUZXh0KiB0ZXh0LCBnaW50IHN0YXJ0UG9zLCBnaW50IGVuZFBvcykK
IHsKKyAgICBnX3JldHVybl9pZl9mYWlsKEFUS19JU19FRElUQUJMRV9URVhUKHRleHQpKTsKKyAg
ICByZXR1cm5JZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodGV4
dCkpOworCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUodGV4dCk7
CiAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJDb3JlCiAgICAgLy8gY29yZU9i
amVjdC0+c2V0U2VsZWN0ZWRUZXh0UmFuZ2UoUGxhaW5UZXh0UmFuZ2Uoc3RhcnRQb3MsIGVuZFBv
cyAtIHN0YXJ0UG9zKSk7CkBAIC0xMDksOCArMTI4LDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdEFj
Y2Vzc2libGVFZGl0YWJsZVRleHREZWxldGVUZXh0KEF0a0VkaXRhYmxlVGV4dCogdGV4dCwgZ2lu
dCBzCiAgICAgZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKIH0K
IAotc3RhdGljIHZvaWQgd2Via2l0QWNjZXNzaWJsZUVkaXRhYmxlVGV4dFBhc3RlVGV4dChBdGtF
ZGl0YWJsZVRleHQqLCBnaW50KQorc3RhdGljIHZvaWQgd2Via2l0QWNjZXNzaWJsZUVkaXRhYmxl
VGV4dFBhc3RlVGV4dChBdGtFZGl0YWJsZVRleHQqIHRleHQsIGdpbnQpCiB7CisgICAgZ19yZXR1
cm5faWZfZmFpbChBVEtfSVNfRURJVEFCTEVfVEVYVCh0ZXh0KSk7CisgICAgcmV0dXJuSWZXZWJL
aXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHRleHQpKTsKKwogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUh5cGVy
dGV4dC5jcHAKaW5kZXggMGUzMzhkOC4uNjcxYjRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUh5cGVydGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZUludGVyZmFjZUh5cGVydGV4dC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpZiBIQVZFKEFDQ0VT
U0lCSUxJVFkpCiAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAi
V2ViS2l0QWNjZXNzaWJsZVV0aWwuaCIKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlV3JhcHBl
ckF0ay5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM3LDYgKzM4LDkgQEAgc3Rh
dGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUoQXRrSHlwZXJ0ZXh0KiBoeXBlcnRleHQpCiAK
IHN0YXRpYyBBdGtIeXBlcmxpbmsqIHdlYmtpdEFjY2Vzc2libGVIeXBlcnRleHRHZXRMaW5rKEF0
a0h5cGVydGV4dCogaHlwZXJ0ZXh0LCBnaW50IGluZGV4KQogeworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKEFUS19IWVBFUlRFWFQoaHlwZXJ0ZXh0KSwgMCk7CisgICAgcmV0dXJuVmFsSWZXZWJL
aXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKGh5cGVydGV4dCksIDApOwor
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNo
aWxkcmVuID0gY29yZShoeXBlcnRleHQpLT5jaGlsZHJlbigpOwogICAgIGlmIChpbmRleCA8IDAg
fHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSA+PSBjaGlsZHJlbi5zaXplKCkpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtNjIsNiArNjYsOSBAQCBzdGF0aWMgQXRrSHlwZXJsaW5rKiB3ZWJr
aXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0R2V0TGluayhBdGtIeXBlcnRleHQqIGh5cGVydGV4dCwgZwog
CiBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0R2V0TkxpbmtzKEF0a0h5cGVy
dGV4dCogaHlwZXJ0ZXh0KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19IWVBFUlRF
WFQoaHlwZXJ0ZXh0KSwgMCk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZh
bGlkKFdFQktJVF9BQ0NFU1NJQkxFKGh5cGVydGV4dCksIDApOworCiAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gY29yZShoeXBl
cnRleHQpLT5jaGlsZHJlbigpOwogICAgIGlmICghY2hpbGRyZW4uc2l6ZSgpKQogICAgICAgICBy
ZXR1cm4gMDsKQEAgLTgxLDYgKzg4LDkgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUh5
cGVydGV4dEdldE5MaW5rcyhBdGtIeXBlcnRleHQqIGh5cGVydGV4dCkKIAogc3RhdGljIGdpbnQg
d2Via2l0QWNjZXNzaWJsZUh5cGVydGV4dEdldExpbmtJbmRleChBdGtIeXBlcnRleHQqIGh5cGVy
dGV4dCwgZ2ludCBjaGFySW5kZXgpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX0hZ
UEVSVEVYVChoeXBlcnRleHQpLCAtMSk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxl
SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKGh5cGVydGV4dCksIC0xKTsKKwogICAgIHNpemVf
dCBsaW5rc0NvdW50ID0gd2Via2l0QWNjZXNzaWJsZUh5cGVydGV4dEdldE5MaW5rcyhoeXBlcnRl
eHQpOwogICAgIGlmICghbGlua3NDb3VudCkKICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVJbnRlcmZhY2VJbWFnZS5jcHAKaW5kZXggNmQ3ZGYxMi4uYmFiNzU5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9X
ZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlSW1hZ2UuY3BwCkBAIC01MSwxNyArNTEsMjYgQEAgc3Rh
dGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUoQXRrSW1hZ2UqIGltYWdlKQogCiBzdGF0aWMg
dm9pZCB3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VHZXRJbWFnZVBvc2l0aW9uKEF0a0ltYWdlKiBpbWFn
ZSwgZ2ludCogeCwgZ2ludCogeSwgQXRrQ29vcmRUeXBlIGNvb3JkVHlwZSkKIHsKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKEFUS19JTUFHRShpbWFnZSkpOworICAgIHJldHVybklmV2ViS2l0QWNjZXNz
aWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShpbWFnZSkpOworCiAgICAgSW50UmVjdCBy
ZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChjb3JlKGltYWdlKS0+ZWxlbWVudFJlY3QoKSk7CiAg
ICAgY29udGVudHNSZWxhdGl2ZVRvQXRrQ29vcmRpbmF0ZVR5cGUoY29yZShpbWFnZSksIGNvb3Jk
VHlwZSwgcmVjdCwgeCwgeSk7CiB9CiAKIHN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNz
aWJsZUltYWdlR2V0SW1hZ2VEZXNjcmlwdGlvbihBdGtJbWFnZSogaW1hZ2UpCiB7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX0lNQUdFKGltYWdlKSwgMCk7CisgICAgcmV0dXJuVmFsSWZX
ZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKGltYWdlKSwgMCk7CisK
ICAgICByZXR1cm4gY2FjaGVBbmRSZXR1cm5BdGtQcm9wZXJ0eShBVEtfT0JKRUNUKGltYWdlKSwg
QXRrQ2FjaGVkSW1hZ2VEZXNjcmlwdGlvbiwgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKGNvcmUo
aW1hZ2UpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVJbWFnZUdldEltYWdl
U2l6ZShBdGtJbWFnZSogaW1hZ2UsIGdpbnQqIHdpZHRoLCBnaW50KiBoZWlnaHQpCiB7CisgICAg
Z19yZXR1cm5faWZfZmFpbChBVEtfSU1BR0UoaW1hZ2UpKTsKKyAgICByZXR1cm5JZldlYktpdEFj
Y2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUoaW1hZ2UpKTsKKwogICAgIEludFNp
emUgc2l6ZSA9IGNvcmUoaW1hZ2UpLT5waXhlbFNuYXBwZWRTaXplKCk7CiAKICAgICBpZiAod2lk
dGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlSW50ZXJmYWNlU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3BwCmluZGV4IDdl
MDI0YjAuLmMxZDNhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rp
b24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5o
IgogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVV0aWwuaCIKICNpbmNsdWRlICJXZWJLaXRB
Y2Nlc3NpYmxlV3JhcHBlckF0ay5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTEy
Nyw2ICsxMjgsOSBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogb3B0aW9uRnJvbVNlbGVj
dGlvbihBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZ2ludCBpbgogCiBzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvbkFkZFNlbGVjdGlvbihBdGtTZWxlY3Rpb24qIHNlbGVj
dGlvbiwgZ2ludCBpbmRleCkKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfU0VMRUNU
SU9OKHNlbGVjdGlvbiksIEZBTFNFKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJ
c0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUoc2VsZWN0aW9uKSwgRkFMU0UpOworCiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogY29yZVNlbGVjdGlvbiA9IGNvcmUoc2VsZWN0aW9uKTsKICAgICBp
ZiAoIWNvcmVTZWxlY3Rpb24pCiAgICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTE0Miw2ICsxNDYs
OSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvbkFkZFNlbGVjdGlv
bihBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZwogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNj
ZXNzaWJsZVNlbGVjdGlvbkNsZWFyU2VsZWN0aW9uKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uKQog
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19TRUxFQ1RJT04oc2VsZWN0aW9uKSwgRkFM
U0UpOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUND
RVNTSUJMRShzZWxlY3Rpb24pLCBGQUxTRSk7CisKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBj
b3JlU2VsZWN0aW9uID0gY29yZShzZWxlY3Rpb24pOwogICAgIGlmICghY29yZVNlbGVjdGlvbikK
ICAgICAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMTU5LDYgKzE2Niw5IEBAIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9uQ2xlYXJTZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBz
ZWxlY3Rpb24pCiAKIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25S
ZWZTZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGdpbnQgaW5kZXgpCiB7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX1NFTEVDVElPTihzZWxlY3Rpb24pLCAwKTsKKyAgICBy
ZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUoc2Vs
ZWN0aW9uKSwgMCk7CisKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvcHRpb24gPSBvcHRpb25G
cm9tU2VsZWN0aW9uKHNlbGVjdGlvbiwgaW5kZXgpOwogICAgIGlmIChvcHRpb24pIHsKICAgICAg
ICAgQXRrT2JqZWN0KiBjaGlsZCA9IG9wdGlvbi0+d3JhcHBlcigpOwpAQCAtMTcxLDYgKzE4MSw5
IEBAIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25SZWZTZWxlY3Rp
b24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sCiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2li
bGVTZWxlY3Rpb25HZXRTZWxlY3Rpb25Db3VudChBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbikKIHsK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfU0VMRUNUSU9OKHNlbGVjdGlvbiksIDApOwor
ICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJM
RShzZWxlY3Rpb24pLCAwKTsKKwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVTZWxlY3Rp
b24gPSBjb3JlKHNlbGVjdGlvbik7CiAgICAgaWYgKCFjb3JlU2VsZWN0aW9uIHx8ICFjb3JlU2Vs
ZWN0aW9uLT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0xOTUsOSArMjA4LDEyIEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rp
b25HZXRTZWxlY3Rpb25Db3VudChBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbikKIAogc3RhdGljIGdi
b29sZWFuIHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25Jc0NoaWxkU2VsZWN0ZWQoQXRrU2VsZWN0
aW9uKiBzZWxlY3Rpb24sIGdpbnQgaW5kZXgpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
QVRLX1NFTEVDVElPTihzZWxlY3Rpb24pLCBGQUxTRSk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRB
Y2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHNlbGVjdGlvbiksIEZBTFNFKTsK
KwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVTZWxlY3Rpb24gPSBjb3JlKHNlbGVjdGlv
bik7CiAgICAgaWYgKCFjb3JlU2VsZWN0aW9uKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIEZBTFNFOwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb3B0aW9uID0gb3B0aW9u
RnJvbUxpc3Qoc2VsZWN0aW9uLCBpbmRleCk7CiAgICAgaWYgKG9wdGlvbiAmJiAoY29yZVNlbGVj
dGlvbi0+aXNMaXN0Qm94KCkgfHwgY29yZVNlbGVjdGlvbi0+aXNNZW51TGlzdCgpKSkKQEAgLTIw
OCw5ICsyMjQsMTIgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25J
c0NoaWxkU2VsZWN0ZWQoQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24KIAogc3RhdGljIGdib29sZWFu
IHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25SZW1vdmVTZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBz
ZWxlY3Rpb24sIGdpbnQgaW5kZXgpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX1NF
TEVDVElPTihzZWxlY3Rpb24pLCBGQUxTRSk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3Np
YmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHNlbGVjdGlvbiksIEZBTFNFKTsKKwogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVTZWxlY3Rpb24gPSBjb3JlKHNlbGVjdGlvbik7CiAg
ICAgaWYgKCFjb3JlU2VsZWN0aW9uKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IEZBTFNFOwogCiAgICAgLy8gVE9ETzogVGhpcyBpcyBvbmx5IGdldHRpbmcgY2FsbGVkIGlmIGkg
PT0gMC4gV2hhdCBpcyBwcmV2ZW50aW5nIHRoZSByZXN0PwogICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9wdGlvbiA9IG9wdGlvbkZyb21TZWxlY3Rpb24oc2VsZWN0aW9uLCBpbmRleCk7CkBAIC0y
MjQsNiArMjQzLDkgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25S
ZW1vdmVTZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24KIAogc3RhdGljIGdib29sZWFu
IHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25TZWxlY3RBbGxTZWxlY3Rpb24oQXRrU2VsZWN0aW9u
KiBzZWxlY3Rpb24pCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX1NFTEVDVElPTihz
ZWxlY3Rpb24pLCBGQUxTRSk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZh
bGlkKFdFQktJVF9BQ0NFU1NJQkxFKHNlbGVjdGlvbiksIEZBTFNFKTsKKwogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGNvcmVTZWxlY3Rpb24gPSBjb3JlKHNlbGVjdGlvbik7CiAgICAgaWYgKCFj
b3JlU2VsZWN0aW9uIHx8ICFjb3JlU2VsZWN0aW9uLT5pc011bHRpU2VsZWN0YWJsZSgpKQogICAg
ICAgICByZXR1cm4gRkFMU0U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcApp
bmRleCAyNzVmMzRiLi43ZGVhZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJs
ZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAj
aW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VUZXh0LmgiCisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVV0aWwuaCIKICNpbmNsdWRl
ICJXZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKQEAgLTkxLDYgKzkyLDkgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGNlbGxB
dEluZGV4KEF0a1RhYmxlKiB0YWJsZSwgZ2ludCBpbmRleCkKIAogc3RhdGljIEF0a09iamVjdCog
d2Via2l0QWNjZXNzaWJsZVRhYmxlUmVmQXQoQXRrVGFibGUqIHRhYmxlLCBnaW50IHJvdywgZ2lu
dCBjb2x1bW4pCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX1RBQkxFKHRhYmxlKSwg
MCk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NF
U1NJQkxFKHRhYmxlKSwgMCk7CisKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBheENlbGwg
PSBjZWxsKHRhYmxlLCByb3csIGNvbHVtbik7CiAgICAgaWYgKCFheENlbGwpCiAgICAgICAgIHJl
dHVybiAwOwpAQCAtMTA2LDYgKzExMCw5IEBAIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdEFjY2Vz
c2libGVUYWJsZVJlZkF0KEF0a1RhYmxlKiB0YWJsZSwgZ2ludCByb3csIGdpbnQgY29sCiAKIHN0
YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldEluZGV4QXQoQXRrVGFibGUqIHRhYmxl
LCBnaW50IHJvdywgZ2ludCBjb2x1bW4pCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRL
X1RBQkxFKHRhYmxlKSwgLTEpOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52
YWxpZChXRUJLSVRfQUNDRVNTSUJMRSh0YWJsZSksIC0xKTsKKwogICAgIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGwqIGF4Q2VsbCA9IGNlbGwodGFibGUsIHJvdywgY29sdW1uKTsKICAgICBBY2Nlc3Np
YmlsaXR5VGFibGUqIGF4VGFibGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGUqPihj
b3JlKHRhYmxlKSk7CiAgICAgcmV0dXJuIGNlbGxJbmRleChheENlbGwsIGF4VGFibGUpOwpAQCAt
MTEzLDYgKzEyMCw5IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldEluZGV4
QXQoQXRrVGFibGUqIHRhYmxlLCBnaW50IHJvdywgZ2ludCBjb2x1CiAKIHN0YXRpYyBnaW50IHdl
YmtpdEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkF0SW5kZXgoQXRrVGFibGUqIHRhYmxlLCBnaW50
IGluZGV4KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19UQUJMRSh0YWJsZSksIC0x
KTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VT
U0lCTEUodGFibGUpLCAtMSk7CisKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBheENlbGwg
PSBjZWxsQXRJbmRleCh0YWJsZSwgaW5kZXgpOwogICAgIGlmIChheENlbGwpIHsKICAgICAgICAg
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwpAQCAtMTI0LDYgKzEzNCw5IEBA
IHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkF0SW5kZXgoQXRrVGFi
bGUqIHRhYmxlLCBnaW50IGluZGV4KQogCiBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlVGFi
bGVHZXRSb3dBdEluZGV4KEF0a1RhYmxlKiB0YWJsZSwgZ2ludCBpbmRleCkKIHsKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChBVEtfVEFCTEUodGFibGUpLCAtMSk7CisgICAgcmV0dXJuVmFsSWZX
ZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHRhYmxlKSwgLTEpOwor
CiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogYXhDZWxsID0gY2VsbEF0SW5kZXgodGFibGUs
IGluZGV4KTsKICAgICBpZiAoYXhDZWxsKSB7CiAgICAgICAgIHBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiByb3dSYW5nZTsKQEAgLTEzNSw2ICsxNDgsOSBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nl
c3NpYmxlVGFibGVHZXRSb3dBdEluZGV4KEF0a1RhYmxlKiB0YWJsZSwgZ2ludCBpbmRleCkKIAog
c3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0TkNvbHVtbnMoQXRrVGFibGUqIHRh
YmxlKQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19UQUJMRSh0YWJsZSksIDApOwor
ICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJM
RSh0YWJsZSksIDApOworCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjVGFibGUgPSBjb3Jl
KHRhYmxlKTsKICAgICBpZiAoYWNjVGFibGUtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgp
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlKj4oYWNjVGFi
bGUpLT5jb2x1bW5Db3VudCgpOwpAQCAtMTQzLDYgKzE1OSw5IEBAIHN0YXRpYyBnaW50IHdlYmtp
dEFjY2Vzc2libGVUYWJsZUdldE5Db2x1bW5zKEF0a1RhYmxlKiB0YWJsZSkKIAogc3RhdGljIGdp
bnQgd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0TlJvd3MoQXRrVGFibGUqIHRhYmxlKQogeworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19UQUJMRSh0YWJsZSksIDApOworICAgIHJldHVyblZh
bElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRSh0YWJsZSksIDAp
OworCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjVGFibGUgPSBjb3JlKHRhYmxlKTsKICAg
ICBpZiAoYWNjVGFibGUtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlKj4oYWNjVGFibGUpLT5yb3dDb3Vu
dCgpOwpAQCAtMTUxLDYgKzE3MCw5IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVUYWJs
ZUdldE5Sb3dzKEF0a1RhYmxlKiB0YWJsZSkKIAogc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJs
ZVRhYmxlR2V0Q29sdW1uRXh0ZW50QXQoQXRrVGFibGUqIHRhYmxlLCBnaW50IHJvdywgZ2ludCBj
b2x1bW4pCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX1RBQkxFKHRhYmxlKSwgMCk7
CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJ
QkxFKHRhYmxlKSwgMCk7CisKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBheENlbGwgPSBj
ZWxsKHRhYmxlLCByb3csIGNvbHVtbik7CiAgICAgaWYgKGF4Q2VsbCkgewogICAgICAgICBwYWly
PHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7CkBAIC0xNjIsNiArMTg0LDkgQEAgc3Rh
dGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q29sdW1uRXh0ZW50QXQoQXRrVGFibGUq
IHRhYmxlLCBnaW50IHJvdywgZ2kKIAogc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZVRhYmxl
R2V0Um93RXh0ZW50QXQoQXRrVGFibGUqIHRhYmxlLCBnaW50IHJvdywgZ2ludCBjb2x1bW4pCiB7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX1RBQkxFKHRhYmxlKSwgMCk7CisgICAgcmV0
dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHRhYmxl
KSwgMCk7CisKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBheENlbGwgPSBjZWxsKHRhYmxl
LCByb3csIGNvbHVtbik7CiAgICAgaWYgKGF4Q2VsbCkgewogICAgICAgICBwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4gcm93UmFuZ2U7CkBAIC0xNzMsNiArMTk4LDkgQEAgc3RhdGljIGdpbnQgd2Vi
a2l0QWNjZXNzaWJsZVRhYmxlR2V0Um93RXh0ZW50QXQoQXRrVGFibGUqIHRhYmxlLCBnaW50IHJv
dywgZ2ludAogCiBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRDb2x1
bW5IZWFkZXIoQXRrVGFibGUqIHRhYmxlLCBnaW50IGNvbHVtbikKIHsKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChBVEtfVEFCTEUodGFibGUpLCAwKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFj
Y2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodGFibGUpLCAwKTsKKwogICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGFjY1RhYmxlID0gY29yZSh0YWJsZSk7CiAgICAgaWYgKGFjY1Rh
YmxlLT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkgewogICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYWxsQ29sdW1uSGVhZGVyczsK
QEAgLTE5MSw2ICsyMTksOSBAQCBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlVGFi
bGVHZXRDb2x1bW5IZWFkZXIoQXRrVGFibGUqIHRhYmxlLCBnaW50IGNvbAogCiBzdGF0aWMgQXRr
T2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRSb3dIZWFkZXIoQXRrVGFibGUqIHRhYmxl
LCBnaW50IHJvdykKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfVEFCTEUodGFibGUp
LCAwKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FD
Q0VTU0lCTEUodGFibGUpLCAwKTsKKwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY1RhYmxl
ID0gY29yZSh0YWJsZSk7CiAgICAgaWYgKGFjY1RhYmxlLT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QoKSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgYWxsUm93SGVhZGVyczsKQEAgLTIwOSw2ICsyNDAsOSBAQCBzdGF0aWMgQXRr
T2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRSb3dIZWFkZXIoQXRrVGFibGUqIHRhYmxl
LCBnaW50IHJvdykKIAogc3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0
Q2FwdGlvbihBdGtUYWJsZSogdGFibGUpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRL
X1RBQkxFKHRhYmxlKSwgMCk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZh
bGlkKFdFQktJVF9BQ0NFU1NJQkxFKHRhYmxlKSwgMCk7CisKICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBhY2NUYWJsZSA9IGNvcmUodGFibGUpOwogICAgIGlmIChhY2NUYWJsZS0+aXNBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0KCkpIHsKICAgICAgICAgTm9kZSogbm9kZSA9IGFjY1RhYmxlLT5u
b2RlKCk7CkBAIC0yMjMsNiArMjU3LDkgQEAgc3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNz
aWJsZVRhYmxlR2V0Q2FwdGlvbihBdGtUYWJsZSogdGFibGUpCiAKIHN0YXRpYyBjb25zdCBnY2hh
ciogd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q29sdW1uRGVzY3JpcHRpb24oQXRrVGFibGUqIHRh
YmxlLCBnaW50IGNvbHVtbikKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfVEFCTEUo
dGFibGUpLCAwKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VC
S0lUX0FDQ0VTU0lCTEUodGFibGUpLCAwKTsKKwogICAgIEF0a09iamVjdCogY29sdW1uSGVhZGVy
ID0gYXRrX3RhYmxlX2dldF9jb2x1bW5faGVhZGVyKHRhYmxlLCBjb2x1bW4pOwogICAgIGlmIChj
b2x1bW5IZWFkZXIgJiYgQVRLX0lTX1RFWFQoY29sdW1uSGVhZGVyKSkKICAgICAgICAgcmV0dXJu
IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGNvbHVtbkhlYWRlciksIDAsIC0xKTsKQEAgLTIz
Miw2ICsyNjksOSBAQCBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVUYWJsZUdl
dENvbHVtbkRlc2NyaXB0aW9uKEF0a1RhYmxlKiB0YWJsZSwgZwogCiBzdGF0aWMgY29uc3QgZ2No
YXIqIHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0Rlc2NyaXB0aW9uKEF0a1RhYmxlKiB0YWJs
ZSwgZ2ludCByb3cpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX1RBQkxFKHRhYmxl
KSwgMCk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9B
Q0NFU1NJQkxFKHRhYmxlKSwgMCk7CisKICAgICBBdGtPYmplY3QqIHJvd0hlYWRlciA9IGF0a190
YWJsZV9nZXRfcm93X2hlYWRlcih0YWJsZSwgcm93KTsKICAgICBpZiAocm93SGVhZGVyICYmIEFU
S19JU19URVhUKHJvd0hlYWRlcikpCiAgICAgICAgIHJldHVybiBhdGtfdGV4dF9nZXRfdGV4dChB
VEtfVEVYVChyb3dIZWFkZXIpLCAwLCAtMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4
dC5jcHAKaW5kZXggZjNlNGNjZS4uN2Y0MTYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcApAQCAtNTUwLDYgKzU1MCw5IEBAIHN0YXRpYyB2b2lkIGdldFNlbGVjdGlvbk9m
ZnNldHNGb3JPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsCiAK
IHN0YXRpYyBnY2hhciogd2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXh0KEF0a1RleHQqIHRleHQs
IGdpbnQgc3RhcnRPZmZzZXQsIGdpbnQgZW5kT2Zmc2V0KQogeworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKEFUS19URVhUKHRleHQpLCAwKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2li
bGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodGV4dCksIDApOworCiAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUodGV4dCk7CiAKICAgICBpbnQgZW5kID0gZW5k
T2Zmc2V0OwpAQCAtMTA3NiwyNyArMTA3OSw0MiBAQCBzdGF0aWMgZ2NoYXIqIHdlYmtpdEFjY2Vz
c2libGVUZXh0R2V0VGV4dEZvck9mZnNldChBdGtUZXh0KiB0ZXh0LCBnaW50IG9mZnNldCwgQQog
CiBzdGF0aWMgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dEFmdGVyT2Zmc2V0KEF0
a1RleHQqIHRleHQsIGdpbnQgb2Zmc2V0LCBBdGtUZXh0Qm91bmRhcnkgYm91bmRhcnlUeXBlLCBn
aW50KiBzdGFydE9mZnNldCwgZ2ludCogZW5kT2Zmc2V0KQogeworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKEFUS19URVhUKHRleHQpLCAwKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2li
bGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodGV4dCksIDApOworCiAgICAgcmV0dXJuIHdl
YmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dEZvck9mZnNldCh0ZXh0LCBvZmZzZXQsIGJvdW5kYXJ5
VHlwZSwgR2V0VGV4dFBvc2l0aW9uQWZ0ZXIsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOwogfQog
CiBzdGF0aWMgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dEF0T2Zmc2V0KEF0a1Rl
eHQqIHRleHQsIGdpbnQgb2Zmc2V0LCBBdGtUZXh0Qm91bmRhcnkgYm91bmRhcnlUeXBlLCBnaW50
KiBzdGFydE9mZnNldCwgZ2ludCogZW5kT2Zmc2V0KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKEFUS19URVhUKHRleHQpLCAwKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJ
c0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodGV4dCksIDApOworCiAgICAgcmV0dXJuIHdlYmtp
dEFjY2Vzc2libGVUZXh0R2V0VGV4dEZvck9mZnNldCh0ZXh0LCBvZmZzZXQsIGJvdW5kYXJ5VHlw
ZSwgR2V0VGV4dFBvc2l0aW9uQXQsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOwogfQogCiBzdGF0
aWMgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dEJlZm9yZU9mZnNldChBdGtUZXh0
KiB0ZXh0LCBnaW50IG9mZnNldCwgQXRrVGV4dEJvdW5kYXJ5IGJvdW5kYXJ5VHlwZSwgZ2ludCog
c3RhcnRPZmZzZXQsIGdpbnQqIGVuZE9mZnNldCkKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChBVEtfVEVYVCh0ZXh0KSwgMCk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJ
bnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHRleHQpLCAwKTsKKwogICAgIHJldHVybiB3ZWJraXRB
Y2Nlc3NpYmxlVGV4dEdldFRleHRGb3JPZmZzZXQodGV4dCwgb2Zmc2V0LCBib3VuZGFyeVR5cGUs
IEdldFRleHRQb3NpdGlvbkJlZm9yZSwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7CiB9CiAKLXN0
YXRpYyBndW5pY2hhciB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldENoYXJhY3RlckF0T2Zmc2V0KEF0
a1RleHQqLCBnaW50KQorc3RhdGljIGd1bmljaGFyIHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0Q2hh
cmFjdGVyQXRPZmZzZXQoQXRrVGV4dCogdGV4dCwgZ2ludCkKIHsKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChBVEtfVEVYVCh0ZXh0KSwgMCk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3Np
YmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHRleHQpLCAwKTsKKwogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2li
bGVUZXh0R2V0Q2FyZXRPZmZzZXQoQXRrVGV4dCogdGV4dCkKIHsKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChBVEtfVEVYVCh0ZXh0KSwgMCk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3Np
YmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHRleHQpLCAwKTsKKwogICAgIC8vIGNvcmVP
YmplY3QgaXMgdGhlIHVuaWdub3JlZCBvYmplY3Qgd2hvc2Ugb2Zmc2V0IHRoZSBjYWxsZXIgaXMg
cmVxdWVzdGluZy4KICAgICAvLyBmb2N1c2VkT2JqZWN0IGlzIHRoZSBvYmplY3Qgd2l0aCB0aGUg
Y2FyZXQuIEl0IGlzIGxpa2VseSBpZ25vcmVkIC0tIHVubGVzcyBpdCdzIGEgbGluay4KICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZSh0ZXh0KTsKQEAgLTExMTgsNiAr
MTEzNiw5IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0Q2FyZXRPZmZzZXQo
QXRrVGV4dCogdGV4dCkKIAogc3RhdGljIEF0a0F0dHJpYnV0ZVNldCogd2Via2l0QWNjZXNzaWJs
ZVRleHRHZXRSdW5BdHRyaWJ1dGVzKEF0a1RleHQqIHRleHQsIGdpbnQgb2Zmc2V0LCBnaW50KiBz
dGFydE9mZnNldCwgZ2ludCogZW5kT2Zmc2V0KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KEFUS19URVhUKHRleHQpLCAwKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0lu
dmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodGV4dCksIDApOworCiAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogY29yZU9iamVjdCA9IGNvcmUodGV4dCk7CiAgICAgQXRrQXR0cmlidXRlU2V0KiByZXN1
bHQ7CiAKQEAgLTExNDIsNiArMTE2Myw5IEBAIHN0YXRpYyBBdGtBdHRyaWJ1dGVTZXQqIHdlYmtp
dEFjY2Vzc2libGVUZXh0R2V0UnVuQXR0cmlidXRlcyhBdGtUZXh0KiB0ZXh0LCBnaW50CiAKIHN0
YXRpYyBBdGtBdHRyaWJ1dGVTZXQqIHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0RGVmYXVsdEF0dHJp
YnV0ZXMoQXRrVGV4dCogdGV4dCkKIHsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfVEVY
VCh0ZXh0KSwgMCk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdF
QktJVF9BQ0NFU1NJQkxFKHRleHQpLCAwKTsKKwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
cmVPYmplY3QgPSBjb3JlKHRleHQpOwogICAgIGlmICghY29yZU9iamVjdCB8fCAhY29yZU9iamVj
dC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
MTE1MSw2ICsxMTc1LDkgQEAgc3RhdGljIEF0a0F0dHJpYnV0ZVNldCogd2Via2l0QWNjZXNzaWJs
ZVRleHRHZXREZWZhdWx0QXR0cmlidXRlcyhBdGtUZXh0KiB0ZXh0KQogCiBzdGF0aWMgdm9pZCB3
ZWJraXRBY2Nlc3NpYmxlVGV4dEdldENoYXJhY3RlckV4dGVudHMoQXRrVGV4dCogdGV4dCwgZ2lu
dCBvZmZzZXQsIGdpbnQqIHgsIGdpbnQqIHksIGdpbnQqIHdpZHRoLCBnaW50KiBoZWlnaHQsIEF0
a0Nvb3JkVHlwZSBjb29yZHMpCiB7CisgICAgZ19yZXR1cm5faWZfZmFpbChBVEtfVEVYVCh0ZXh0
KSk7CisgICAgcmV0dXJuSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJ
QkxFKHRleHQpKTsKKwogICAgIEludFJlY3QgZXh0ZW50cyA9IHRleHRFeHRlbnRzKHRleHQsIG9m
ZnNldCwgMSwgY29vcmRzKTsKICAgICAqeCA9IGV4dGVudHMueCgpOwogICAgICp5ID0gZXh0ZW50
cy55KCk7CkBAIC0xMTYwLDYgKzExODcsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxl
VGV4dEdldENoYXJhY3RlckV4dGVudHMoQXRrVGV4dCogdGV4dCwgZ2ludCBvZmZzZXQsCiAKIHN0
YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0UmFuZ2VFeHRlbnRzKEF0a1RleHQqIHRl
eHQsIGdpbnQgc3RhcnRPZmZzZXQsIGdpbnQgZW5kT2Zmc2V0LCBBdGtDb29yZFR5cGUgY29vcmRz
LCBBdGtUZXh0UmVjdGFuZ2xlKiByZWN0KQogeworICAgIGdfcmV0dXJuX2lmX2ZhaWwoQVRLX1RF
WFQodGV4dCkpOworICAgIHJldHVybklmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRf
QUNDRVNTSUJMRSh0ZXh0KSk7CisKICAgICBJbnRSZWN0IGV4dGVudHMgPSB0ZXh0RXh0ZW50cyh0
ZXh0LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0IC0gc3RhcnRPZmZzZXQsIGNvb3Jkcyk7CiAgICAg
cmVjdC0+eCA9IGV4dGVudHMueCgpOwogICAgIHJlY3QtPnkgPSBleHRlbnRzLnkoKTsKQEAgLTEx
NjksMTEgKzExOTksMTcgQEAgc3RhdGljIHZvaWQgd2Via2l0QWNjZXNzaWJsZVRleHRHZXRSYW5n
ZUV4dGVudHMoQXRrVGV4dCogdGV4dCwgZ2ludCBzdGFydE9mZnNldCwKIAogc3RhdGljIGdpbnQg
d2Via2l0QWNjZXNzaWJsZVRleHRHZXRDaGFyYWN0ZXJDb3VudChBdGtUZXh0KiB0ZXh0KQogewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19URVhUKHRleHQpLCAwKTsKKyAgICByZXR1cm5W
YWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodGV4dCksIDAp
OworCiAgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlPYmplY3RMZW5ndGgoY29yZSh0ZXh0KSk7CiB9
CiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0T2Zmc2V0QXRQb2ludChBdGtU
ZXh0KiB0ZXh0LCBnaW50IHgsIGdpbnQgeSwgQXRrQ29vcmRUeXBlKQogeworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKEFUS19URVhUKHRleHQpLCAwKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFj
Y2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodGV4dCksIDApOworCiAgICAgLy8g
RklYTUU6IFVzZSB0aGUgQXRrQ29vcmRUeXBlCiAgICAgLy8gVE9ETzogSXMgaXQgY29ycmVjdCB0
byBpZ25vcmUgcmFuZ2UubGVuZ3RoPwogICAgIEludFBvaW50IHBvcyh4LCB5KTsKQEAgLTExODMs
NiArMTIxOSw5IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0T2Zmc2V0QXRQ
b2ludChBdGtUZXh0KiB0ZXh0LCBnaW50IHgsIGdpbnQgeSwKIAogc3RhdGljIGdpbnQgd2Via2l0
QWNjZXNzaWJsZVRleHRHZXROU2VsZWN0aW9ucyhBdGtUZXh0KiB0ZXh0KQogeworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKEFUS19URVhUKHRleHQpLCAwKTsKKyAgICByZXR1cm5WYWxJZldlYktp
dEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodGV4dCksIDApOworCiAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUodGV4dCk7CiAgICAgVmlzaWJs
ZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBjb3JlT2JqZWN0LT5zZWxlY3Rpb24oKTsKIApAQCAtMTIw
MSw2ICsxMjQwLDkgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZVRleHRHZXROU2VsZWN0
aW9ucyhBdGtUZXh0KiB0ZXh0KQogCiBzdGF0aWMgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVUZXh0
R2V0U2VsZWN0aW9uKEF0a1RleHQqIHRleHQsIGdpbnQgc2VsZWN0aW9uTnVtLCBnaW50KiBzdGFy
dE9mZnNldCwgZ2ludCogZW5kT2Zmc2V0KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFU
S19URVhUKHRleHQpLCAwKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFs
aWQoV0VCS0lUX0FDQ0VTU0lCTEUodGV4dCksIDApOworCiAgICAgLy8gV2ViQ29yZSBkb2VzIG5v
dCBzdXBwb3J0IG11bHRpcGxlIHNlbGVjdGlvbiwgc28gYW55dGhpbmcgYnV0IDAgZG9lcyBub3Qg
bWFrZSBzZW5zZSBmb3Igbm93LgogICAgIGlmIChzZWxlY3Rpb25OdW0pCiAgICAgICAgIHJldHVy
biAwOwpAQCAtMTIxOCwxNCArMTI2MCwyMCBAQCBzdGF0aWMgZ2NoYXIqIHdlYmtpdEFjY2Vzc2li
bGVUZXh0R2V0U2VsZWN0aW9uKEF0a1RleHQqIHRleHQsIGdpbnQgc2VsZWN0aW9uTnVtLAogICAg
IHJldHVybiB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHQodGV4dCwgKnN0YXJ0T2Zmc2V0LCAq
ZW5kT2Zmc2V0KTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVUZXh0QWRk
U2VsZWN0aW9uKEF0a1RleHQqLCBnaW50LCBnaW50KQorc3RhdGljIGdib29sZWFuIHdlYmtpdEFj
Y2Vzc2libGVUZXh0QWRkU2VsZWN0aW9uKEF0a1RleHQqIHRleHQsIGdpbnQsIGdpbnQpCiB7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX1RFWFQodGV4dCksIEZBTFNFKTsKKyAgICByZXR1
cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodGV4dCks
IEZBTFNFKTsKKwogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIEZBTFNFOwogfQog
CiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZVRleHRTZXRTZWxlY3Rpb24oQXRrVGV4
dCogdGV4dCwgZ2ludCBzZWxlY3Rpb25OdW0sIGdpbnQgc3RhcnRPZmZzZXQsIGdpbnQgZW5kT2Zm
c2V0KQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19URVhUKHRleHQpLCBGQUxTRSk7
CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJ
QkxFKHRleHQpLCBGQUxTRSk7CisKICAgICAvLyBXZWJDb3JlIGRvZXMgbm90IHN1cHBvcnQgbXVs
dGlwbGUgc2VsZWN0aW9uLCBzbyBhbnl0aGluZyBidXQgMCBkb2VzIG5vdCBtYWtlIHNlbnNlIGZv
ciBub3cuCiAgICAgaWYgKHNlbGVjdGlvbk51bSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwpAQCAt
MTI2Miw2ICsxMzEwLDkgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVUZXh0U2V0
U2VsZWN0aW9uKEF0a1RleHQqIHRleHQsIGdpbnQgc2VsZWN0aW9uTnUKIAogc3RhdGljIGdib29s
ZWFuIHdlYmtpdEFjY2Vzc2libGVUZXh0UmVtb3ZlU2VsZWN0aW9uKEF0a1RleHQqIHRleHQsIGdp
bnQgc2VsZWN0aW9uTnVtKQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19URVhUKHRl
eHQpLCBGQUxTRSk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdF
QktJVF9BQ0NFU1NJQkxFKHRleHQpLCBGQUxTRSk7CisKICAgICAvLyBXZWJDb3JlIGRvZXMgbm90
IHN1cHBvcnQgbXVsdGlwbGUgc2VsZWN0aW9uLCBzbyBhbnl0aGluZyBidXQgMCBkb2VzIG5vdCBt
YWtlIHNlbnNlIGZvciBub3cuCiAgICAgaWYgKHNlbGVjdGlvbk51bSkKICAgICAgICAgcmV0dXJu
IEZBTFNFOwpAQCAtMTI3OCw4ICsxMzI5LDEwIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nl
c3NpYmxlVGV4dFJlbW92ZVNlbGVjdGlvbihBdGtUZXh0KiB0ZXh0LCBnaW50IHNlbGVjdGlvCiAK
IHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlVGV4dFNldENhcmV0T2Zmc2V0KEF0a1Rl
eHQqIHRleHQsIGdpbnQgb2Zmc2V0KQogewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVP
YmplY3QgPSBjb3JlKHRleHQpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19URVhUKHRl
eHQpLCBGQUxTRSk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdF
QktJVF9BQ0NFU1NJQkxFKHRleHQpLCBGQUxTRSk7CiAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBjb3JlT2JqZWN0ID0gY29yZSh0ZXh0KTsKICAgICBpZiAoIWNvcmVPYmplY3QtPmlzQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCgpKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlSW50ZXJmYWNlVmFsdWUuY3BwCmluZGV4IDZiYTc0MjQuLmRkNjQ5ODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJ
bnRlcmZhY2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVZhbHVlLmNwcApAQCAtMjQsNiArMjQsNyBAQAogCiAj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgor
I2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVVdGlsLmgiCiAjaW5jbHVkZSAiV2ViS2l0QWNjZXNz
aWJsZVdyYXBwZXJBdGsuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0zOCw2ICsz
OSw5IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlKEF0a1ZhbHVlKiB2YWx1ZSkK
IAogc3RhdGljIHZvaWQgd2Via2l0QWNjZXNzaWJsZVZhbHVlR2V0Q3VycmVudFZhbHVlKEF0a1Zh
bHVlKiB2YWx1ZSwgR1ZhbHVlKiBnVmFsdWUpCiB7CisgICAgZ19yZXR1cm5faWZfZmFpbChBVEtf
VkFMVUUodmFsdWUpKTsKKyAgICByZXR1cm5JZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VC
S0lUX0FDQ0VTU0lCTEUodmFsdWUpKTsKKwogICAgIG1lbXNldChnVmFsdWUsICAwLCBzaXplb2Yo
R1ZhbHVlKSk7CiAgICAgZ192YWx1ZV9pbml0KGdWYWx1ZSwgR19UWVBFX0ZMT0FUKTsKICAgICBn
X3ZhbHVlX3NldF9mbG9hdChnVmFsdWUsIGNvcmUodmFsdWUpLT52YWx1ZUZvclJhbmdlKCkpOwpA
QCAtNDUsNiArNDksOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlVmFsdWVHZXRDdXJy
ZW50VmFsdWUoQXRrVmFsdWUqIHZhbHVlLCBHVmFsdWUqIGdWYWx1ZQogCiBzdGF0aWMgdm9pZCB3
ZWJraXRBY2Nlc3NpYmxlVmFsdWVHZXRNYXhpbXVtVmFsdWUoQXRrVmFsdWUqIHZhbHVlLCBHVmFs
dWUqIGdWYWx1ZSkKIHsKKyAgICBnX3JldHVybl9pZl9mYWlsKEFUS19WQUxVRSh2YWx1ZSkpOwor
ICAgIHJldHVybklmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRSh2
YWx1ZSkpOworCiAgICAgbWVtc2V0KGdWYWx1ZSwgIDAsIHNpemVvZihHVmFsdWUpKTsKICAgICBn
X3ZhbHVlX2luaXQoZ1ZhbHVlLCBHX1RZUEVfRkxPQVQpOwogICAgIGdfdmFsdWVfc2V0X2Zsb2F0
KGdWYWx1ZSwgY29yZSh2YWx1ZSktPm1heFZhbHVlRm9yUmFuZ2UoKSk7CkBAIC01Miw2ICs1OSw5
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVWYWx1ZUdldE1heGltdW1WYWx1ZShBdGtW
YWx1ZSogdmFsdWUsIEdWYWx1ZSogZ1ZhbHVlCiAKIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2li
bGVWYWx1ZUdldE1pbmltdW1WYWx1ZShBdGtWYWx1ZSogdmFsdWUsIEdWYWx1ZSogZ1ZhbHVlKQog
eworICAgIGdfcmV0dXJuX2lmX2ZhaWwoQVRLX1ZBTFVFKHZhbHVlKSk7CisgICAgcmV0dXJuSWZX
ZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHZhbHVlKSk7CisKICAg
ICBtZW1zZXQoZ1ZhbHVlLCAgMCwgc2l6ZW9mKEdWYWx1ZSkpOwogICAgIGdfdmFsdWVfaW5pdChn
VmFsdWUsIEdfVFlQRV9GTE9BVCk7CiAgICAgZ192YWx1ZV9zZXRfZmxvYXQoZ1ZhbHVlLCBjb3Jl
KHZhbHVlKS0+bWluVmFsdWVGb3JSYW5nZSgpKTsKQEAgLTU5LDYgKzY5LDkgQEAgc3RhdGljIHZv
aWQgd2Via2l0QWNjZXNzaWJsZVZhbHVlR2V0TWluaW11bVZhbHVlKEF0a1ZhbHVlKiB2YWx1ZSwg
R1ZhbHVlKiBnVmFsdWUKIAogc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVWYWx1ZVNl
dEN1cnJlbnRWYWx1ZShBdGtWYWx1ZSogdmFsdWUsIGNvbnN0IEdWYWx1ZSogZ1ZhbHVlKQogewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19WQUxVRSh2YWx1ZSksIEZBTFNFKTsKKyAgICBy
ZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUodmFs
dWUpLCBGQUxTRSk7CisKICAgICBkb3VibGUgbmV3VmFsdWU7CiAgICAgaWYgKEdfVkFMVUVfSE9M
RFNfRE9VQkxFKGdWYWx1ZSkpCiAgICAgICAgIG5ld1ZhbHVlID0gZ192YWx1ZV9nZXRfZG91Ymxl
KGdWYWx1ZSk7CkBAIC03Nyw3ICs5MCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3Np
YmxlVmFsdWVTZXRDdXJyZW50VmFsdWUoQXRrVmFsdWUqIHZhbHVlLCBjb25zdCBHVmFsCiAgICAg
ZWxzZSBpZiAoR19WQUxVRV9IT0xEU19VSU5UKGdWYWx1ZSkpCiAgICAgICAgIG5ld1ZhbHVlID0g
Z192YWx1ZV9nZXRfdWludChnVmFsdWUpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3Jl
T2JqZWN0ID0gY29yZSh2YWx1ZSk7CiAgICAgaWYgKCFjb3JlT2JqZWN0LT5jYW5TZXRWYWx1ZUF0
dHJpYnV0ZSgpKQpAQCAtOTMsNiArMTA2LDkgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vz
c2libGVWYWx1ZVNldEN1cnJlbnRWYWx1ZShBdGtWYWx1ZSogdmFsdWUsIGNvbnN0IEdWYWwKIAog
c3RhdGljIHZvaWQgd2Via2l0QWNjZXNzaWJsZVZhbHVlR2V0TWluaW11bUluY3JlbWVudChBdGtW
YWx1ZSogdmFsdWUsIEdWYWx1ZSogZ1ZhbHVlKQogeworICAgIGdfcmV0dXJuX2lmX2ZhaWwoQVRL
X1ZBTFVFKHZhbHVlKSk7CisgICAgcmV0dXJuSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdF
QktJVF9BQ0NFU1NJQkxFKHZhbHVlKSk7CisKICAgICBtZW1zZXQoZ1ZhbHVlLCAgMCwgc2l6ZW9m
KEdWYWx1ZSkpOwogICAgIGdfdmFsdWVfaW5pdChnVmFsdWUsIEdfVFlQRV9GTE9BVCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVVdGlsLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlVXRpbC5oCmluZGV4IDM1Yzc4ZjMuLmJjNzA2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuaApAQCAtMzMs
NiArMzMsMjYgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiB9CiAK
Ky8vIEFuIGV4aXN0aW5nIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdG8gYmUg
aW52YWxpZCB3aGV0aGVyIGl0J3MgYWxyZWFkeQorLy8gZGV0YWNoZWQgb3IgaWYgaXQncyBub3Qg
YnV0IGp1c3QgdXBkYXRpbmcgdGhlIGxheW91dCB3aWxsIGRldGFjaCBpdCBhbnl3YXkuCisjZGVm
aW5lIHJldHVybklmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZCh3ZWJraXRBY2Nlc3NpYmxlKSBH
X1NUTVRfU1RBUlQgeyBcCisgICAgaWYgKCF3ZWJraXRBY2Nlc3NpYmxlIHx8IHdlYmtpdEFjY2Vz
c2libGVJc0RldGFjaGVkKHdlYmtpdEFjY2Vzc2libGUpKSB7IFwKKyAgICAgICAgcmV0dXJuOyBc
CisgICAgfSBlbHNlIHsgXAorICAgICAgICB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0
eU9iamVjdCh3ZWJraXRBY2Nlc3NpYmxlKS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7IFwKKyAgICAg
ICAgaWYgKHdlYmtpdEFjY2Vzc2libGVJc0RldGFjaGVkKHdlYmtpdEFjY2Vzc2libGUpKSBcCisg
ICAgICAgICAgICByZXR1cm47IFwKKyAgICB9OyB9IEdfU1RNVF9FTkQKKworI2RlZmluZSByZXR1
cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQod2Via2l0QWNjZXNzaWJsZSwgdmFsKSBH
X1NUTVRfU1RBUlQgeyBcCisgICAgaWYgKCF3ZWJraXRBY2Nlc3NpYmxlIHx8IHdlYmtpdEFjY2Vz
c2libGVJc0RldGFjaGVkKHdlYmtpdEFjY2Vzc2libGUpKSB7IFwKKyAgICAgICAgcmV0dXJuICh2
YWwpOyBcCisgICAgfSBlbHNlIHsgXAorICAgICAgICB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNz
aWJpbGl0eU9iamVjdCh3ZWJraXRBY2Nlc3NpYmxlKS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7IFwK
KyAgICAgICAgaWYgKHdlYmtpdEFjY2Vzc2libGVJc0RldGFjaGVkKHdlYmtpdEFjY2Vzc2libGUp
KSBcCisgICAgICAgICAgICByZXR1cm4gKHZhbCk7IFwKKyAgICB9OyB9IEdfU1RNVF9FTkQKKwog
QXRrQXR0cmlidXRlU2V0KiBhZGRUb0F0a0F0dHJpYnV0ZVNldChBdGtBdHRyaWJ1dGVTZXQqLCBj
b25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2YWx1ZSk7CiAKIHZvaWQgY29udGVudHNSZWxh
dGl2ZVRvQXRrQ29vcmRpbmF0ZVR5cGUoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCosIEF0
a0Nvb3JkVHlwZSwgV2ViQ29yZTo6SW50UmVjdCwgZ2ludCogeCwgZ2ludCogeSwgZ2ludCogd2lk
dGggPSAwLCBnaW50KiBoZWlnaHQgPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcApp
bmRleCBhMTg2NDJjLi5mMzA2YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCkBA
IC05NiwyNSArOTYsMjEgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZhbGxiYWNrT2Jq
ZWN0KCkKICAgICByZXR1cm4gb2JqZWN0OwogfQogCi1zdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVj
dCogY29yZShXZWJLaXRBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKQotewotICAgIGlmICghYWNjZXNz
aWJsZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gYWNjZXNzaWJsZS0+bV9vYmpl
Y3Q7Ci19Ci0KIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlKEF0a09iamVjdCogb2Jq
ZWN0KQogewogICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEUob2JqZWN0KSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICByZXR1cm4gY29yZShXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpKTsK
KyAgICByZXR1cm4gd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV0VCS0lU
X0FDQ0VTU0lCTEUob2JqZWN0KSk7CiB9CiAKIHN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNj
ZXNzaWJsZUdldE5hbWUoQXRrT2JqZWN0KiBvYmplY3QpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEUob2JqZWN0KSwgMCk7CisgICAgcmV0dXJuVmFsSWZX
ZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKG9iamVjdCksIDApOwor
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUob2JqZWN0KTsKKwog
ICAgIGlmICghY29yZU9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCiAgICAg
ICAgIHJldHVybiBjYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KG9iamVjdCwgQXRrQ2FjaGVkQWNj
ZXNzaWJsZU5hbWUsIGNvcmVPYmplY3QtPnN0cmluZ1ZhbHVlKCkpOwogCkBAIC0xNjksNiArMTY1
LDkgQEAgc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlR2V0TmFtZShBdGtPYmpl
Y3QqIG9iamVjdCkKIAogc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlR2V0RGVz
Y3JpcHRpb24oQXRrT2JqZWN0KiBvYmplY3QpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX0FDQ0VTU0lCTEUob2JqZWN0KSwgMCk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRB
Y2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKG9iamVjdCksIDApOworCiAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUob2JqZWN0KTsKICAgICBOb2Rl
KiBub2RlID0gMDsKICAgICBpZiAoY29yZU9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0KCkpCkBAIC0yNzIsNiArMjcxLDkgQEAgc3RhdGljIEF0a09iamVjdCogYXRrUGFyZW50T2ZS
b290T2JqZWN0KEF0a09iamVjdCogb2JqZWN0KQogCiBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRB
Y2Nlc3NpYmxlR2V0UGFyZW50KEF0a09iamVjdCogb2JqZWN0KQogeworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19BQ0NFU1NJQkxFKG9iamVjdCksIDApOworICAgIHJldHVyblZh
bElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpLCAw
KTsKKwogICAgIC8vIENoZWNrIGZpcnN0IGlmIHRoZSBwYXJlbnQgaGFzIGJlZW4gYWxyZWFkeSBz
ZXQuCiAgICAgQXRrT2JqZWN0KiBhY2Nlc3NpYmxlUGFyZW50ID0gQVRLX09CSkVDVF9DTEFTUyh3
ZWJraXRBY2Nlc3NpYmxlUGFyZW50Q2xhc3MpLT5nZXRfcGFyZW50KG9iamVjdCk7CiAgICAgaWYg
KGFjY2Vzc2libGVQYXJlbnQpCkBAIC0zMTksNiArMzIxLDkgQEAgc3RhdGljIGdpbnQgZ2V0TkNo
aWxkcmVuRm9yVGFibGUoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCkKIAogc3RhdGlj
IGdpbnQgd2Via2l0QWNjZXNzaWJsZUdldE5DaGlsZHJlbihBdGtPYmplY3QqIG9iamVjdCkKIHsK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRShvYmplY3QpLCAw
KTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VT
U0lCTEUob2JqZWN0KSwgMCk7CisKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0
ID0gY29yZShvYmplY3QpOwogCiAgICAgLy8gVGFibGVzIHNob3VsZCBiZSB0cmVhdGVkIGluIGEg
ZGlmZmVyZW50IHdheSBiZWNhdXNlIHJvd3Mgc2hvdWxkCkBAIC0zNTYsNiArMzYxLDkgQEAgc3Rh
dGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldENoaWxkRm9yVGFibGUoQWNjZXNzaWJpbGl0eU9i
amVjdCogY29yZU9iamVjdCwgZ2kKIAogc3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJs
ZVJlZkNoaWxkKEF0a09iamVjdCogb2JqZWN0LCBnaW50IGluZGV4KQogeworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19BQ0NFU1NJQkxFKG9iamVjdCksIDApOworICAgIHJldHVy
blZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShvYmplY3Qp
LCAwKTsKKwogICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIHJldHVybiAwOwogCkBAIC00MjAs
NiArNDI4LDkgQEAgc3RhdGljIGdpbnQgZ2V0SW5kZXhJblBhcmVudEZvckNlbGxJblJvdyhBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0KQogCiBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3Np
YmxlR2V0SW5kZXhJblBhcmVudChBdGtPYmplY3QqIG9iamVjdCkKIHsKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRShvYmplY3QpLCAtMSk7CisgICAgcmV0dXJu
VmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKG9iamVjdCks
IC0xKTsKKwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBjb3JlKG9iamVj
dCk7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gY29yZU9iamVjdC0+cGFyZW50
T2JqZWN0VW5pZ25vcmVkKCk7CiAKQEAgLTQ1Miw2ICs0NjMsOSBAQCBzdGF0aWMgZ2ludCB3ZWJr
aXRBY2Nlc3NpYmxlR2V0SW5kZXhJblBhcmVudChBdGtPYmplY3QqIG9iamVjdCkKIAogc3RhdGlj
IEF0a0F0dHJpYnV0ZVNldCogd2Via2l0QWNjZXNzaWJsZUdldEF0dHJpYnV0ZXMoQXRrT2JqZWN0
KiBvYmplY3QpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lC
TEUob2JqZWN0KSwgMCk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlk
KFdFQktJVF9BQ0NFU1NJQkxFKG9iamVjdCksIDApOworCiAgICAgQXRrQXR0cmlidXRlU2V0KiBh
dHRyaWJ1dGVTZXQgPSAwOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBhdHRyaWJ1dGVTZXQgPSBh
ZGRUb0F0a0F0dHJpYnV0ZVNldChhdHRyaWJ1dGVTZXQsICJ0b29sa2l0IiwgIldlYktpdEd0ayIp
OwpAQCAtNjI1LDYgKzYzOSw5IEBAIHN0YXRpYyBBdGtSb2xlIGF0a1JvbGUoQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZSkKIAogc3RhdGljIEF0a1JvbGUgd2Via2l0QWNjZXNzaWJsZUdldFJvbGUoQXRr
T2JqZWN0KiBvYmplY3QpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FD
Q0VTU0lCTEUob2JqZWN0KSwgQVRLX1JPTEVfVU5LTk9XTik7CisgICAgcmV0dXJuVmFsSWZXZWJL
aXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKG9iamVjdCksIEFUS19ST0xF
X1VOS05PV04pOworCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUo
b2JqZWN0KTsKIAogICAgIGlmICghY29yZU9iamVjdCkKQEAgLTc2NSw5ICs3ODIsMTUgQEAgc3Rh
dGljIHZvaWQgc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBjb3JlT2JqZWN0LCBBdGtTdGEKIAogc3RhdGljIEF0a1N0YXRlU2V0KiB3ZWJraXRBY2Nlc3Np
YmxlUmVmU3RhdGVTZXQoQXRrT2JqZWN0KiBvYmplY3QpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEUob2JqZWN0KSwgMCk7CisKICAgICBBdGtTdGF0ZVNl
dCogc3RhdGVTZXQgPSBBVEtfT0JKRUNUX0NMQVNTKHdlYmtpdEFjY2Vzc2libGVQYXJlbnRDbGFz
cyktPnJlZl9zdGF0ZV9zZXQob2JqZWN0KTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3Jl
T2JqZWN0ID0gY29yZShvYmplY3QpOwogCisgICAgLy8gTWFrZSBzdXJlIHRoZSBsYXlvdXQgaXMg
dXBkYXRlZCB0byByZWFsbHkga25vdyB3aGV0aGVyIHRoZSBvYmplY3QKKyAgICAvLyBpcyBkZWZ1
bmN0IG9yIG5vdCwgc28gd2UgY2FuIHJldHVybiB0aGUgcHJvcGVyIHN0YXRlLgorICAgIGNvcmVP
YmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworCiAgICAgaWYgKGNvcmVPYmplY3QgPT0gZmFs
bGJhY2tPYmplY3QoKSkgewogICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShzdGF0ZVNl
dCwgQVRLX1NUQVRFX0RFRlVOQ1QpOwogICAgICAgICByZXR1cm4gc3RhdGVTZXQ7CkBAIC03ODQs
NiArODA3LDkgQEAgc3RhdGljIEF0a1N0YXRlU2V0KiB3ZWJraXRBY2Nlc3NpYmxlUmVmU3RhdGVT
ZXQoQXRrT2JqZWN0KiBvYmplY3QpCiAKIHN0YXRpYyBBdGtSZWxhdGlvblNldCogd2Via2l0QWNj
ZXNzaWJsZVJlZlJlbGF0aW9uU2V0KEF0a09iamVjdCogb2JqZWN0KQogeworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19BQ0NFU1NJQkxFKG9iamVjdCksIDApOworICAgIHJldHVy
blZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShvYmplY3Qp
LCAwKTsKKwogICAgIEF0a1JlbGF0aW9uU2V0KiByZWxhdGlvblNldCA9IEFUS19PQkpFQ1RfQ0xB
U1Mod2Via2l0QWNjZXNzaWJsZVBhcmVudENsYXNzKS0+cmVmX3JlbGF0aW9uX3NldChvYmplY3Qp
OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBjb3JlKG9iamVjdCk7CiAK
QEAgLTgwNCwxMSArODMwLDE0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVJbml0KEF0
a09iamVjdCogb2JqZWN0LCBncG9pbnRlciBkYXRhKQogCiBzdGF0aWMgY29uc3QgZ2NoYXIqIHdl
YmtpdEFjY2Vzc2libGVHZXRPYmplY3RMb2NhbGUoQXRrT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAg
aWYgKEFUS19JU19ET0NVTUVOVChvYmplY3QpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGNvcmVPYmplY3QgPSBjb3JlKG9iamVjdCk7Ci0gICAgICAgIGlmICghY29yZU9iamVjdCkK
LSAgICAgICAgICAgIHJldHVybiAwOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19BQ0NFU1NJQkxFKG9iamVjdCksIDApOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJs
ZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpLCAwKTsKKworICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBjb3JlKG9iamVjdCk7CisgICAgaWYgKCFjb3JlT2Jq
ZWN0KQorICAgICAgICByZXR1cm4gMDsKIAorICAgIGlmIChBVEtfSVNfRE9DVU1FTlQob2JqZWN0
KSkgewogICAgICAgICAvLyBUT0RPOiBTaG91bGQgd2UgZmFsbCBiYWNrIG9uIGxhbmcgeG1sOmxh
bmcgd2hlbiB0aGUgZm9sbG93aW5nIGNvbWVzIHVwIGVtcHR5PwogICAgICAgICBTdHJpbmcgbGFu
Z3VhZ2UgPSBjb3JlT2JqZWN0LT5sYW5ndWFnZSgpOwogICAgICAgICBpZiAoIWxhbmd1YWdlLmlz
RW1wdHkoKSkKQEAgLTEwOTUsNyArMTEyNCw3IEBAIHZvaWQgd2Via2l0QWNjZXNzaWJsZURldGFj
aChXZWJLaXRBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKQogewogICAgIEFTU0VSVChhY2Nlc3NpYmxl
LT5tX29iamVjdCk7CiAKLSAgICBpZiAoY29yZShhY2Nlc3NpYmxlKS0+cm9sZVZhbHVlKCkgPT0g
V2ViQXJlYVJvbGUpCisgICAgaWYgKGFjY2Vzc2libGUtPm1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9
PSBXZWJBcmVhUm9sZSkKICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGFjY2Vzc2libGUs
ICJzdGF0ZS1jaGFuZ2UiLCAiZGVmdW5jdCIsIHRydWUpOwogCiAgICAgLy8gV2UgcmVwbGFjZSB0
aGUgV2ViQ29yZSBBY2Nlc3NpYmlsaXR5T2JqZWN0IHdpdGggYSBmYWxsYmFjayBvYmplY3QgdGhh
dApAQCAtMTEwNCw2ICsxMTMzLDEyIEBAIHZvaWQgd2Via2l0QWNjZXNzaWJsZURldGFjaChXZWJL
aXRBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKQogICAgIGFjY2Vzc2libGUtPm1fb2JqZWN0ID0gZmFs
bGJhY2tPYmplY3QoKTsKIH0KIAorYm9vbCB3ZWJraXRBY2Nlc3NpYmxlSXNEZXRhY2hlZChXZWJL
aXRBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKQoreworICAgIEFTU0VSVChhY2Nlc3NpYmxlLT5tX29i
amVjdCk7CisgICAgcmV0dXJuIGFjY2Vzc2libGUtPm1fb2JqZWN0ID09IGZhbGxiYWNrT2JqZWN0
KCk7Cit9CisKIEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZUdldEZvY3VzZWRFbGVtZW50KFdl
YktpdEFjY2Vzc2libGUqIGFjY2Vzc2libGUpCiB7CiAgICAgaWYgKCFhY2Nlc3NpYmxlLT5tX29i
amVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVXcmFwcGVyQXRrLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5oCmluZGV4IDMwODBhZWIuLjBkNDczMDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVXcmFwcGVyQXRrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaApAQCAtNzcsNiArNzcsOCBAQCBXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChX
ZWJLaXRBY2NlcwogCiB2b2lkIHdlYmtpdEFjY2Vzc2libGVEZXRhY2goV2ViS2l0QWNjZXNzaWJs
ZSopOwogCitib29sIHdlYmtpdEFjY2Vzc2libGVJc0RldGFjaGVkKFdlYktpdEFjY2Vzc2libGUq
KTsKKwogQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlR2V0Rm9jdXNlZEVsZW1lbnQoV2ViS2l0
QWNjZXNzaWJsZSopOwogCiBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RGb2N1
c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCos
IGludCYgb2Zmc2V0KTsKLS0gCjEuNy4xMC40Cgo=
</data>
<flag name="review"
          id="234941"
          type_id="1"
          status="+"
          setter="cfleizach"
    />
    <flag name="commit-queue"
          id="234946"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>