<?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>136789</bug_id>
          
          <creation_ts>2014-09-12 14:05:16 -0700</creation_ts>
          <short_desc>Rename Node::childNodeCount() to  countChildNodes() and avoid inefficient uses</short_desc>
          <delta_ts>2014-09-16 17:15:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1034944</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-12 14:05:16 -0700</bug_when>
    <thetext>Rename Node::childNodeCount() to  countChildNodes() to make it obvious it is doing computation and not merely returning a cached value.
Node::childNodeCount() is used in a lot of places where more efficient alternatives exist so we should fix those instances as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034946</commentid>
    <comment_count>1</comment_count>
      <attachid>238054</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-12 14:06:27 -0700</bug_when>
    <thetext>Created attachment 238054
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035004</commentid>
    <comment_count>2</comment_count>
      <attachid>238075</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-12 16:42:08 -0700</bug_when>
    <thetext>Created attachment 238075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035012</commentid>
    <comment_count>3</comment_count>
      <attachid>238077</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-12 16:50:33 -0700</bug_when>
    <thetext>Created attachment 238077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035030</commentid>
    <comment_count>4</comment_count>
      <attachid>238077</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-12 17:47:54 -0700</bug_when>
    <thetext>Comment on attachment 238077
Patch

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

If you are renaming childNodeCount for this reason, maybe you should rename nodeIndex for the same reason.

Amazing how many call sites should have been using hasChildNodes!

&gt; Source/WebCore/dom/ContainerNode.cpp:938
&gt; -    Node *n;
&gt; -    for (n = firstChild(); n; n = n-&gt;nextSibling())
&gt; -        count++;
&gt; +    for (Node* n = firstChild(); n; n = n-&gt;nextSibling())
&gt; +        ++count;

Since you are touching this, why not change the variable name from &quot;n&quot; to &quot;child&quot;.

&gt; Source/WebCore/editing/markup.cpp:749
&gt; +    HTMLDivElement&amp; div = toHTMLDivElement(*node);

I think I would call this “element” rather than “div”.

&gt; Source/WebCore/editing/markup.cpp:757
&gt; +    // FIXME: It is inefficient to call countChildNodes() just to check if there are exactly 2 children.
&gt; +    return div.countChildNodes() == 2 &amp;&amp; isTabSpanTextNode(div.firstChild()-&gt;firstChild()) &amp;&amp; div.firstChild()-&gt;nextSibling()-&gt;isTextNode();

Why not rewrite this instead of adding the FIXME? One way is to add a hasTwoChildNodes helper function (doesn’t have to be a member of Node). Another is to write it like this:

    Node* firstChild = div.firstChild();
    if (!firstChild)
        return;

    Node* secondChild = firstChild-&gt;nextSibling();

    if (!secondChild)
        return firstChild-&gt;isTextNode() || firstChild-&gt;firstChild();

    if (secondChild-&gt;nextSibling())
        return false;

    return isTabSpanTextNode(firstChild-&gt;firstChild()) &amp;&amp; secondChild-&gt;isTextNode();

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:-300
&gt; -        Node* child = childNode(i);

Wow, can’t believe anyone was doing this!

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:300
&gt; +    for (auto&amp; element : childrenOfType&lt;Element&gt;(*this)) {

Can be childrenOfType&lt;MediaControlTimeDisplayElement&gt;?

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1153
&gt; +    if (countChildNodes() &lt; activeCues.size())
&gt;          removeChildren();

Even this might need a FIXME. Checking if we have less than a certain number of child nodes doesn’t need to iterate them all. But maybe in practice the number of nodes here is bounded at a small number.

&gt; Source/WebCore/html/track/VTTRegion.cpp:377
&gt; +        if (m_scrollTimer.isActive())
&gt; +            break;

I know this is not new code, but this is a strange way to structure the loop. Seems like we should just break after the call the startTimer, unless it sometimes doesn’t start a timer.

&gt; Source/WebCore/html/track/VTTRegion.cpp:379
&gt; +        float childTop = child.getBoundingClientRect()-&gt;top();
&gt; +        float childBottom = child.getBoundingClientRect()-&gt;bottom();

Quite inefficient to call getBoundingClientRect twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035039</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-12 18:42:46 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 238077 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238077&amp;action=review
&gt; 
&gt; If you are renaming childNodeCount for this reason, maybe you should rename nodeIndex for the same reason.

Good point. I&apos;ll take a look at this in a follow-up patch. Note that I an also planning to rename Node::childNode(index) to Node::traverseToChildAt(index) for the same reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035040</commentid>
    <comment_count>6</comment_count>
      <attachid>238077</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-12 18:46:14 -0700</bug_when>
    <thetext>Comment on attachment 238077
Patch

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

&gt;&gt; Source/WebCore/editing/markup.cpp:757
&gt;&gt; +    return div.countChildNodes() == 2 &amp;&amp; isTabSpanTextNode(div.firstChild()-&gt;firstChild()) &amp;&amp; div.firstChild()-&gt;nextSibling()-&gt;isTextNode();
&gt; 
&gt; Why not rewrite this instead of adding the FIXME? One way is to add a hasTwoChildNodes helper function (doesn’t have to be a member of Node). Another is to write it like this:
&gt; 
&gt;     Node* firstChild = div.firstChild();
&gt;     if (!firstChild)
&gt;         return;
&gt; 
&gt;     Node* secondChild = firstChild-&gt;nextSibling();
&gt; 
&gt;     if (!secondChild)
&gt;         return firstChild-&gt;isTextNode() || firstChild-&gt;firstChild();
&gt; 
&gt;     if (secondChild-&gt;nextSibling())
&gt;         return false;
&gt; 
&gt;     return isTabSpanTextNode(firstChild-&gt;firstChild()) &amp;&amp; secondChild-&gt;isTextNode();

I did that because I was planning to add another helper on Node and the patch was already big. However, since we seem to only do this in one place, I don&apos;t think adding the helper is worth it and your proposal makes more sense. I&apos;ll update accordingly.

&gt;&gt; Source/WebCore/html/track/VTTRegion.cpp:379
&gt;&gt; +        float childBottom = child.getBoundingClientRect()-&gt;bottom();
&gt; 
&gt; Quite inefficient to call getBoundingClientRect twice.

True, I&apos;ll cache it in a variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035087</commentid>
    <comment_count>7</comment_count>
      <attachid>238088</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-13 20:52:48 -0700</bug_when>
    <thetext>Created attachment 238088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035088</commentid>
    <comment_count>8</comment_count>
      <attachid>238077</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-13 20:56:52 -0700</bug_when>
    <thetext>Comment on attachment 238077
Patch

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

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:938
&gt;&gt; +        ++count;
&gt; 
&gt; Since you are touching this, why not change the variable name from &quot;n&quot; to &quot;child&quot;.

Done.

&gt;&gt; Source/WebCore/editing/markup.cpp:749
&gt;&gt; +    HTMLDivElement&amp; div = toHTMLDivElement(*node);
&gt; 
&gt; I think I would call this “element” rather than “div”.

Done.

&gt;&gt;&gt; Source/WebCore/editing/markup.cpp:757
&gt;&gt;&gt; +    return div.countChildNodes() == 2 &amp;&amp; isTabSpanTextNode(div.firstChild()-&gt;firstChild()) &amp;&amp; div.firstChild()-&gt;nextSibling()-&gt;isTextNode();
&gt;&gt; 
&gt;&gt; Why not rewrite this instead of adding the FIXME? One way is to add a hasTwoChildNodes helper function (doesn’t have to be a member of Node). Another is to write it like this:
&gt;&gt; 
&gt;&gt;     Node* firstChild = div.firstChild();
&gt;&gt;     if (!firstChild)
&gt;&gt;         return;
&gt;&gt; 
&gt;&gt;     Node* secondChild = firstChild-&gt;nextSibling();
&gt;&gt; 
&gt;&gt;     if (!secondChild)
&gt;&gt;         return firstChild-&gt;isTextNode() || firstChild-&gt;firstChild();
&gt;&gt; 
&gt;&gt;     if (secondChild-&gt;nextSibling())
&gt;&gt;         return false;
&gt;&gt; 
&gt;&gt;     return isTabSpanTextNode(firstChild-&gt;firstChild()) &amp;&amp; secondChild-&gt;isTextNode();
&gt; 
&gt; I did that because I was planning to add another helper on Node and the patch was already big. However, since we seem to only do this in one place, I don&apos;t think adding the helper is worth it and your proposal makes more sense. I&apos;ll update accordingly.

Done.

&gt;&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:300
&gt;&gt; +    for (auto&amp; element : childrenOfType&lt;Element&gt;(*this)) {
&gt; 
&gt; Can be childrenOfType&lt;MediaControlTimeDisplayElement&gt;?

This actually doesn&apos;t work because there is no isElementOfType() template specialization for MediaControlTimeDisplayElement. It also does not seem there is a method to identify a MediaControlTimeDisplayElement at the moment.

&gt;&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1153
&gt;&gt;          removeChildren();
&gt; 
&gt; Even this might need a FIXME. Checking if we have less than a certain number of child nodes doesn’t need to iterate them all. But maybe in practice the number of nodes here is bounded at a small number.

Done, I added the FIXME.

&gt;&gt; Source/WebCore/html/track/VTTRegion.cpp:377
&gt;&gt; +            break;
&gt; 
&gt; I know this is not new code, but this is a strange way to structure the loop. Seems like we should just break after the call the startTimer, unless it sometimes doesn’t start a timer.

Done. It seems the timer is always started in startTimer(), unless it was already started.

&gt;&gt;&gt; Source/WebCore/html/track/VTTRegion.cpp:379
&gt;&gt;&gt; +        float childBottom = child.getBoundingClientRect()-&gt;bottom();
&gt;&gt; 
&gt;&gt; Quite inefficient to call getBoundingClientRect twice.
&gt; 
&gt; True, I&apos;ll cache it in a variable.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035121</commentid>
    <comment_count>9</comment_count>
      <attachid>238088</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-14 14:18:38 -0700</bug_when>
    <thetext>Comment on attachment 238088
Patch

Clearing flags on attachment: 238088

Committed r173606: &lt;http://trac.webkit.org/changeset/173606&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035122</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-14 14:18:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035161</commentid>
    <comment_count>11</comment_count>
      <attachid>238088</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-14 22:17:32 -0700</bug_when>
    <thetext>Comment on attachment 238088
Patch

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

&gt; Source/WebCore/editing/htmlediting.cpp:348
&gt;      // NOTE: This should preempt the childNodeCount for, e.g., select nodes

Dan, you should have waited to hear from at least one editing expert before rushing to check in a “what does this mean?” comment.

The concept here is that editing allows an offset of 1 to mean “after this element” for elements that act as an atomic unit for editing. That’s a bad design that we should get rid of some day, but this function is implementing that design. The comment means that for an item that is atomic for editing that happens to have child nodes, we should return &quot;1&quot;, not the number of child nodes. A &lt;select&gt; element is such an element, treated as a single unit for editing, but has children. And the writer of that comment thinks that returning 1 for lastOffsetForEditing for that type of element will help other editing code work properly.

The better long term solution is to eliminate the magic offset of &quot;1&quot; to mean after such elements. That project is still worth doing, but probably requires quite a bit of work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035488</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-09-16 10:12:01 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 238088 [details])
&gt; Clearing flags on attachment: 238088
&gt; 
&gt; Committed r173606: &lt;http://trac.webkit.org/changeset/173606&gt;

Committed iOS build fix in &lt;http://trac.webkit.org/changeset/173608&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035493</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-09-16 10:17:51 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 238088 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238088&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/htmlediting.cpp:348
&gt; &gt;      // NOTE: This should preempt the childNodeCount for, e.g., select nodes
&gt; 
&gt; Dan, you should have waited to hear from at least one editing expert before rushing to check in a “what does this mean?” comment.
&gt; 

I&apos;ll keep this in mind moving forward.

&gt; The concept here is that editing allows an offset of 1 to mean “after this element” for elements that act as an atomic unit for editing. That’s a bad design that we should get rid of some day, but this function is implementing that design. The comment means that for an item that is atomic for editing that happens to have child nodes, we should return &quot;1&quot;, not the number of child nodes. A &lt;select&gt; element is such an element, treated as a single unit for editing, but has children. 

Notice that we call editingIgnoresContent() (http://trac.webkit.org/browser/trunk/Source/WebCore/editing/htmlediting.cpp?rev=173608#L349) only if Node::hasChildNodes() (http://trac.webkit.org/browser/trunk/Source/WebCore/editing/htmlediting.cpp?rev=173608#L345) evaluates to false. That is, we hard coded &quot;return 1&quot; for a node n that does not have children and editingIgnoresContent(n) evaluates to true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035627</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-16 17:00:08 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Notice that we call editingIgnoresContent() (http://trac.webkit.org/browser/trunk/Source/WebCore/editing/htmlediting.cpp?rev=173608#L349) only if Node::hasChildNodes() (http://trac.webkit.org/browser/trunk/Source/WebCore/editing/htmlediting.cpp?rev=173608#L345) evaluates to false. That is, we hard coded &quot;return 1&quot; for a node n that does not have children and editingIgnoresContent(n) evaluates to true.

Yes. That behavior, and the possibility that it’s incorrect, is what the comment is calling attention to. The dependency on not having children doesn’t seem right, since editingIgnoresContent means we should ignore children.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035635</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-09-16 17:15:32 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; Notice that we call editingIgnoresContent() (http://trac.webkit.org/browser/trunk/Source/WebCore/editing/htmlediting.cpp?rev=173608#L349) only if Node::hasChildNodes() (http://trac.webkit.org/browser/trunk/Source/WebCore/editing/htmlediting.cpp?rev=173608#L345) evaluates to false. That is, we hard coded &quot;return 1&quot; for a node n that does not have children and editingIgnoresContent(n) evaluates to true.
&gt; 
&gt; Yes. That behavior, and the possibility that it’s incorrect, is what the comment is calling attention to. The dependency on not having children doesn’t seem right, since editingIgnoresContent means we should ignore children.

We use the magic number 1 to indicate the position is after the element in cases where we don&apos;t have children.  See the definition of Position::anchorTypeForLegacyEditingPosition.  It checks if the offset is 0, in which case, it assumes the position is before the anchor node.  Otherwise, it assumes the position is after the anchor node.  In lastOffsetForEditing, we&apos;re being conservative by always returning the greater of 1 or the number of children so that even the code that doesn&apos;t know anything about this magic number will still treat it as the position at the every end of the element.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238054</attachid>
            <date>2014-09-12 14:06:27 -0700</date>
            <delta_ts>2014-09-12 16:42:06 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>countChildNodes_renaming.patch</filename>
            <type>text/plain</type>
            <size>30290</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggOGQxZmQ0MC4uOTRkOWI1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTE2MjUsNyArMTYyNSw3IEBAIF9fWk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjRz
aXplRXYKIF9fWk5LN1dlYkNvcmUxMlRleHRFbmNvZGluZzZkZWNvZGVFUEtjbWJSYgogX19aTks3
V2ViQ29yZTEyVGV4dEl0ZXJhdG9yNG5vZGVFdgogX19aTks3V2ViQ29yZTEyVGV4dEl0ZXJhdG9y
NXJhbmdlRXYKLV9fWk5LN1dlYkNvcmUxM0NvbnRhaW5lck5vZGUxNGNoaWxkTm9kZUNvdW50RXYK
K19fWk5LN1dlYkNvcmUxM0NvbnRhaW5lck5vZGUxNWNvdW50Q2hpbGROb2Rlc0V2CiBfX1pOSzdX
ZWJDb3JlMTNDb250YWluZXJOb2RlOWNoaWxkTm9kZUVqCiBfX1pOSzdXZWJDb3JlMTNHcmFwaGlj
c0xheWVyMThhY2N1bXVsYXRlZE9wYWNpdHlFdgogX19aTks3V2ViQ29yZTEzR3JhcGhpY3NMYXll
cjE4Z2V0RGVidWdCb3JkZXJJbmZvRVJOU181Q29sb3JFUmYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4
IGEzNjAwMmEuLjBiMTc3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3Jk
ZXIKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtMTE2MjIsNyArMTE2MjIs
NyBAQCBfX1pON1dlYkNvcmUyMWpzSFRNTE1ldGFFbGVtZW50TmFtZUVQTjNKU0M5RXhlY1N0YXRl
RU5TMF83SlNWYWx1ZUVOUzBfMTJQcm9wZXJ0eQogX19aTjdXZWJDb3JlMjRqc0hUTUxNZXRhRWxl
bWVudENvbnRlbnRFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFTlMwXzEyUHJvcGVydHlO
YW1lRQogX19aTjdXZWJDb3JlMjZzZXRKU0hUTUxTY3JpcHRFbGVtZW50VGV4dEVQTjNKU0M5RXhl
Y1N0YXRlRVBOUzBfOEpTT2JqZWN0RU5TMF83SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTE3SFRNTFNj
cmlwdEVsZW1lbnQ3c2V0VGV4dEVSS04zV1RGNlN0cmluZ0UKLV9fWk5LN1dlYkNvcmUxM0NvbnRh
aW5lck5vZGUxNGNoaWxkTm9kZUNvdW50RXYKK19fWk5LN1dlYkNvcmUxM0NvbnRhaW5lck5vZGUx
NWNvdW50Q2hpbGROb2Rlc0V2CiBfX1pON1dlYkNvcmUyMGpzSFRNTExpbmtFbGVtZW50UmVsRVBO
M0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRU5TMF8xMlByb3BlcnR5TmFtZUUKIF9fWk43V2Vi
Q29yZTIxanNIVE1MTGlua0VsZW1lbnRIcmVmRVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVl
RU5TMF8xMlByb3BlcnR5TmFtZUUKIF9fWk43V2ViQ29yZTEzTm9kZVRyYXZlcnNhbDM1bmV4dElu
Y2x1ZGluZ1BzZXVkb1NraXBwaW5nQ2hpbGRyZW5FUEtOU180Tm9kZUVTM18KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcAppbmRleCAxYjExNDAyLi42ZGIxMDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC02NTMsNyArNjUzLDcgQEAgdm9pZCBDb250YWluZXJO
b2RlOjpyZW1vdmVDaGlsZHJlbigpCiAgICAgICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNw
ZW5zaW9uU2NvcGUgc3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXM7CiAgICAgICAgIHsKICAg
ICAgICAgICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7
Ci0gICAgICAgICAgICByZW1vdmVkQ2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjaGls
ZE5vZGVDb3VudCgpKTsKKyAgICAgICAgICAgIHJlbW92ZWRDaGlsZHJlbi5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGNvdW50Q2hpbGROb2RlcygpKTsKICAgICAgICAgICAgIHdoaWxlIChSZWZQdHI8
Tm9kZT4gbiA9IG1fZmlyc3RDaGlsZCkgewogICAgICAgICAgICAgICAgIHJlbW92ZWRDaGlsZHJl
bi5hcHBlbmQoKm1fZmlyc3RDaGlsZCk7CiAgICAgICAgICAgICAgICAgcmVtb3ZlQmV0d2Vlbigw
LCBtX2ZpcnN0Q2hpbGQtPm5leHRTaWJsaW5nKCksICptX2ZpcnN0Q2hpbGQpOwpAQCAtOTMxLDEy
ICs5MzEsMTEgQEAgTGF5b3V0UmVjdCBDb250YWluZXJOb2RlOjpib3VuZGluZ0JveCgpIGNvbnN0
CiAgICAgcmV0dXJuIGVuY2xvc2luZ0xheW91dFJlY3QoRmxvYXRSZWN0KHVwcGVyTGVmdCwgbG93
ZXJSaWdodC5leHBhbmRlZFRvKHVwcGVyTGVmdCkgLSB1cHBlckxlZnQpKTsKIH0KIAotdW5zaWdu
ZWQgQ29udGFpbmVyTm9kZTo6Y2hpbGROb2RlQ291bnQoKSBjb25zdAordW5zaWduZWQgQ29udGFp
bmVyTm9kZTo6Y291bnRDaGlsZE5vZGVzKCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBjb3VudCA9
IDA7Ci0gICAgTm9kZSAqbjsKLSAgICBmb3IgKG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT5u
ZXh0U2libGluZygpKQotICAgICAgICBjb3VudCsrOworICAgIGZvciAoTm9kZSogbiA9IGZpcnN0
Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpCisgICAgICAgICsrY291bnQ7CiAgICAg
cmV0dXJuIGNvdW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA2Mzll
ZDI0Li41MTBmYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTg3LDExICs4
NywxMiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHB0cmRpZmZfdCBmaXJzdENoaWxkTWVtb3J5T2Zm
c2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvbnRhaW5lck5vZGUsIG1fZmlyc3RDaGls
ZCk7IH0KICAgICBOb2RlKiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RDaGlsZDsg
fQogICAgIGJvb2wgaGFzQ2hpbGROb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZDsg
fQorICAgIGJvb2wgaGFzT25lQ2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Q2hpbGQgJiYg
IW1fZmlyc3RDaGlsZC0+bmV4dFNpYmxpbmcoKTsgfQogCiAgICAgYm9vbCBkaXJlY3RDaGlsZE5l
ZWRzU3R5bGVSZWNhbGMoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKERpcmVjdENoaWxkTmVlZHNT
dHlsZVJlY2FsY0ZsYWcpOyB9CiAgICAgdm9pZCBzZXREaXJlY3RDaGlsZE5lZWRzU3R5bGVSZWNh
bGMoKSB7IHNldEZsYWcoRGlyZWN0Q2hpbGROZWVkc1N0eWxlUmVjYWxjRmxhZyk7IH0KIAotICAg
IFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNoaWxkTm9kZUNvdW50KCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgdW5zaWduZWQgY291bnRDaGlsZE5vZGVzKCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgTm9kZSogY2hpbGROb2RlKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAogICAgIGJv
b2wgaW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxk
LCBFeGNlcHRpb25Db2RlJiA9IEFTU0VSVF9OT19FWENFUFRJT04pOwpAQCAtMTg0LDExICsxODUs
MTEgQEAgaW5saW5lIENvbnRhaW5lck5vZGU6OkNvbnRhaW5lck5vZGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiB7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBOb2Rl
OjpjaGlsZE5vZGVDb3VudCgpIGNvbnN0CitpbmxpbmUgdW5zaWduZWQgTm9kZTo6Y291bnRDaGls
ZE5vZGVzKCkgY29uc3QKIHsKICAgICBpZiAoIWlzQ29udGFpbmVyTm9kZSgpKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICByZXR1cm4gdG9Db250YWluZXJOb2RlKHRoaXMpLT5jaGlsZE5vZGVDb3Vu
dCgpOworICAgIHJldHVybiB0b0NvbnRhaW5lck5vZGUodGhpcyktPmNvdW50Q2hpbGROb2Rlcygp
OwogfQogCiBpbmxpbmUgTm9kZSogTm9kZTo6Y2hpbGROb2RlKHVuc2lnbmVkIGluZGV4KSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKaW5kZXggZWJiZDhhOS4uZjQ3N2ZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC00MTYs
NyArNDE2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNSZWFkT25seU5vZGUoKSBjb25zdCB7IHJl
dHVybiBub2RlVHlwZSgpID09IEVOVElUWV9SRUZFUkVOQ0VfTk9ERTsgfQogICAgIGJvb2wgaXNE
b2N1bWVudFR5cGVOb2RlKCkgY29uc3QgeyByZXR1cm4gbm9kZVR5cGUoKSA9PSBET0NVTUVOVF9U
WVBFX05PREU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB1bnNpZ25lZCBjaGlsZE5vZGVDb3VudCgpIGNv
bnN0OworICAgIHVuc2lnbmVkIGNvdW50Q2hpbGROb2RlcygpIGNvbnN0OwogICAgIE5vZGUqIGNo
aWxkTm9kZSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKICAgICB2b2lkIGNoZWNrU2V0UHJlZml4
KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uLmNwcAppbmRleCAzYWQ4ZWRhLi5mMmM2OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAKQEAgLTIyNiw3ICsyMjYsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6cGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50KCkgY29uc3QKICAgICB9CiAKICAgICBpZiAoIW1fYW5jaG9yTm9kZS0+b2Zmc2V0
SW5DaGFyYWN0ZXJzKCkKLSAgICAgICAgJiYgKG1fYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzQWZ0
ZXJBbmNob3IgfHwgbV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckNoaWxkcmVuIHx8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCkgPT0gbV9hbmNob3JOb2RlLT5jaGlsZE5vZGVD
b3VudCgpKQorICAgICAgICAmJiAobV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckFuY2hv
ciB8fCBtX2FuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4gfHwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KSA9PSBtX2FuY2hvck5vZGUtPmNvdW50Q2hpbGROb2Rlcygp
KQogICAgICAgICAmJiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkg
fHwgaXNSZW5kZXJlZFRhYmxlKG1fYW5jaG9yTm9kZS5nZXQoKSkpCiAgICAgICAgICYmIGNvbnRh
aW5lck5vZGUoKSkgewogICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZSht
X2FuY2hvck5vZGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAppbmRleCAyOTgxMTdmLi41MWJm
NDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaApAQCAtMjk3LDEwICsyOTcsMTAgQEAgaW5saW5lIFBv
c2l0aW9uIHBvc2l0aW9uQWZ0ZXJOb2RlKE5vZGUqIGFuY2hvck5vZGUpCiAKIGlubGluZSBpbnQg
bGFzdE9mZnNldEluTm9kZShOb2RlKiBub2RlKQogewotICAgIHJldHVybiBub2RlLT5vZmZzZXRJ
bkNoYXJhY3RlcnMoKSA/IG5vZGUtPm1heENoYXJhY3Rlck9mZnNldCgpIDogc3RhdGljX2Nhc3Q8
aW50Pihub2RlLT5jaGlsZE5vZGVDb3VudCgpKTsKKyAgICByZXR1cm4gbm9kZS0+b2Zmc2V0SW5D
aGFyYWN0ZXJzKCkgPyBub2RlLT5tYXhDaGFyYWN0ZXJPZmZzZXQoKSA6IHN0YXRpY19jYXN0PGlu
dD4obm9kZS0+Y291bnRDaGlsZE5vZGVzKCkpOwogfQogCi0vLyBmaXJzdFBvc2l0aW9uSW5Ob2Rl
IGFuZCBsYXN0UG9zaXRpb25Jbk5vZGUgcmV0dXJuIHBhcmVudC1hbmNob3JlZCBwb3NpdGlvbnMs
IGxhc3RQb3NpdGlvbkluTm9kZSBjb25zdHJ1Y3Rpb24gaXMgTyhuKSBkdWUgdG8gY2hpbGROb2Rl
Q291bnQoKQorLy8gZmlyc3RQb3NpdGlvbkluTm9kZSBhbmQgbGFzdFBvc2l0aW9uSW5Ob2RlIHJl
dHVybiBwYXJlbnQtYW5jaG9yZWQgcG9zaXRpb25zLCBsYXN0UG9zaXRpb25Jbk5vZGUgY29uc3Ry
dWN0aW9uIGlzIE8obikgZHVlIHRvIGNvdW50Q2hpbGROb2RlcygpCiBpbmxpbmUgUG9zaXRpb24g
Zmlyc3RQb3NpdGlvbkluTm9kZShOb2RlKiBhbmNob3JOb2RlKQogewogICAgIGlmIChhbmNob3JO
b2RlLT5pc1RleHROb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCBiMGJjMzIwLi5kNjg0ODRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIGxlbmd0aE9mQ29udGVudHNJbk5vZGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5vZGU6
OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgog
ICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgICAgIHJldHVybiBub2Rl
LT5jaGlsZE5vZGVDb3VudCgpOworICAgICAgICByZXR1cm4gbm9kZS0+Y291bnRDaGlsZE5vZGVz
KCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCA1Mzg0YjZm
Li40ZDY3ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmNwcApAQCAtNzc3LDcgKzc3Nyw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5SW5s
aW5lU3R5bGVUb05vZGVSYW5nZShFZGl0aW5nU3R5bGUqIHN0eWxlLCBQYXNzUmVmCiAgICAgICAg
IGlmIChpc0Jsb2NrKG5vZGUuZ2V0KCkpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IAotICAgICAgICBpZiAobm9kZS0+Y2hpbGROb2RlQ291bnQoKSkgeworICAgICAgICBpZiAobm9k
ZS0+aGFzQ2hpbGROb2RlcygpKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y29udGFpbnMocGFz
dEVuZE5vZGUuZ2V0KCkpIHx8IGNvbnRhaW5zTm9uRWRpdGFibGVSZWdpb24obm9kZS5nZXQoKSkg
fHwgIW5vZGUtPnBhcmVudE5vZGUoKS0+aGFzRWRpdGFibGVTdHlsZSgpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKGVkaXRpbmdJZ25vcmVzQ29udGVudChub2Rl
LmdldCgpKSkgewpAQCAtODM1LDcgKzgzNSw3IEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnNo
b3VsZEFwcGx5SW5saW5lU3R5bGVUb1J1bihFZGl0aW5nU3R5bGUqIHN0eWxlLCBOb2RlKiByCiAg
ICAgQVNTRVJUKHN0eWxlICYmIHJ1blN0YXJ0KTsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IHJ1
blN0YXJ0OyBub2RlICYmIG5vZGUgIT0gcGFzdEVuZE5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2Fs
OjpuZXh0KG5vZGUpKSB7Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZE5vZGVDb3VudCgpKQorICAg
ICAgICBpZiAobm9kZS0+aGFzQ2hpbGROb2RlcygpKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIC8vIFdlIGRvbid0IGNvbnNpZGVyIG1faXNJbmxpbmVFbGVtZW50VG9SZW1vdmVGdW5j
dGlvbiBoZXJlIGJlY2F1c2Ugd2UgbmV2ZXIgYXBwbHkgc3R5bGUgd2hlbiBtX2lzSW5saW5lRWxl
bWVudFRvUmVtb3ZlRnVuY3Rpb24gaXMgc3BlY2lmaWVkCiAgICAgICAgIGlmICghc3R5bGUtPnN0
eWxlSXNQcmVzZW50SW5Db21wdXRlZFN0eWxlT2ZOb2RlKG5vZGUpKQpAQCAtMTAwNyw3ICsxMDA3
LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24o
Tm9kZSogbm9kZSwgRWRpdGluZ1N0eWxlKiBzdHkKIAogICAgIC8vIFNpbmNlIGFkZElubGluZVN0
eWxlSWZOZWVkZWQgY2FuJ3QgYWRkIHN0eWxlcyB0byBibG9jay1mbG93IHJlbmRlciBvYmplY3Rz
LCBhZGQgc3R5bGUgYXR0cmlidXRlIGluc3RlYWQuCiAgICAgLy8gRklYTUU6IGFwcGx5SW5saW5l
U3R5bGVUb1JhbmdlIHNob3VsZCBiZSB1c2VkIGhlcmUgaW5zdGVhZC4KLSAgICBpZiAoKG5vZGUt
PnJlbmRlcmVyKCktPmlzUmVuZGVyQmxvY2tGbG93KCkgfHwgbm9kZS0+Y2hpbGROb2RlQ291bnQo
KSkgJiYgbm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7CisgICAgaWYgKChub2RlLT5yZW5kZXJlcigp
LT5pc1JlbmRlckJsb2NrRmxvdygpIHx8IG5vZGUtPmhhc0NoaWxkTm9kZXMoKSkgJiYgbm9kZS0+
aXNIVE1MRWxlbWVudCgpKSB7CiAgICAgICAgIHNldE5vZGVBdHRyaWJ1dGUodG9IVE1MRWxlbWVu
dChub2RlKSwgc3R5bGVBdHRyLCBuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKS0+YXNUZXh0KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTMyNSw3ICsxMzI1LDcgQEAgYm9vbCBBcHBseVN0
eWxlQ29tbWFuZDo6bWVyZ2VFbmRXaXRoTmV4dElmSWRlbnRpY2FsKGNvbnN0IFBvc2l0aW9uJiBz
dGFydCwgY29uc3QKICAgICAgICAgbWVyZ2VJZGVudGljYWxFbGVtZW50cyhlbGVtZW50LCBuZXh0
RWxlbWVudCk7CiAKICAgICAgICAgYm9vbCBzaG91bGRVcGRhdGVTdGFydCA9IHN0YXJ0LmNvbnRh
aW5lck5vZGUoKSA9PSBlbmROb2RlOwotICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gbmV4dENoaWxk
ID8gbmV4dENoaWxkLT5ub2RlSW5kZXgoKSA6IG5leHRFbGVtZW50LT5jaGlsZE5vZGVDb3VudCgp
OworICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gbmV4dENoaWxkID8gbmV4dENoaWxkLT5ub2RlSW5k
ZXgoKSA6IG5leHRFbGVtZW50LT5jb3VudENoaWxkTm9kZXMoKTsKICAgICAgICAgdXBkYXRlU3Rh
cnRFbmQoc2hvdWxkVXBkYXRlU3RhcnQgPyBQb3NpdGlvbihuZXh0RWxlbWVudCwgc3RhcnQub2Zm
c2V0SW5Db250YWluZXJOb2RlKCksIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3Ip
IDogc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uKG5leHRFbGVtZW50LCBl
bmRPZmZzZXQsIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0xNDMzLDcgKzE0MzMsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5k
OjphcHBseUlubGluZVN0eWxlQ2hhbmdlKFBhc3NSZWZQdHI8Tm9kZT4gcGFzc2VkU3RhcnQsIFBh
cwogICAgICAgICBpZiAoY29udGFpbmVyLT5pc0hUTUxFbGVtZW50KCkgJiYgY29udGFpbmVyLT5o
YXNUYWdOYW1lKGZvbnRUYWcpKQogICAgICAgICAgICAgZm9udENvbnRhaW5lciA9IHRvSFRNTEVs
ZW1lbnQoY29udGFpbmVyKTsKICAgICAgICAgYm9vbCBzdHlsZUNvbnRhaW5lcklzTm90U3BhbiA9
ICFzdHlsZUNvbnRhaW5lciB8fCAhc3R5bGVDb250YWluZXItPmhhc1RhZ05hbWUoc3BhblRhZyk7
Ci0gICAgICAgIGlmIChjb250YWluZXItPmlzSFRNTEVsZW1lbnQoKSAmJiAoY29udGFpbmVyLT5o
YXNUYWdOYW1lKHNwYW5UYWcpIHx8IChzdHlsZUNvbnRhaW5lcklzTm90U3BhbiAmJiBjb250YWlu
ZXItPmNoaWxkTm9kZUNvdW50KCkpKSkKKyAgICAgICAgaWYgKGNvbnRhaW5lci0+aXNIVE1MRWxl
bWVudCgpICYmIChjb250YWluZXItPmhhc1RhZ05hbWUoc3BhblRhZykgfHwgKHN0eWxlQ29udGFp
bmVySXNOb3RTcGFuICYmIGNvbnRhaW5lci0+aGFzQ2hpbGROb2RlcygpKSkpCiAgICAgICAgICAg
ICBzdHlsZUNvbnRhaW5lciA9IHRvSFRNTEVsZW1lbnQoY29udGFpbmVyKTsKICAgICAgICAgaWYg
KCFjb250YWluZXItPmZpcnN0Q2hpbGQoKSkKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCmluZGV4IGY0MTA2NWIuLjhjOGRhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKQEAgLTcwNCw3ICs3MDQsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFzQ2hp
bGRPZkVsZW1lbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFbGVtZW50KiBlbGVtKQogICAgIC8vIHNl
dCB0aGUgc2VsZWN0aW9uIHRvIHRoZSBlbmQKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlv
bjsKIAotICAgIFBvc2l0aW9uIHBvcyA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihlbGVt
LCBlbGVtLT5jaGlsZE5vZGVDb3VudCgpKTsKKyAgICBQb3NpdGlvbiBwb3MgPSBjcmVhdGVMZWdh
Y3lFZGl0aW5nUG9zaXRpb24oZWxlbSwgZWxlbS0+Y291bnRDaGlsZE5vZGVzKCkpOwogCiAgICAg
VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MocG9zLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKICAg
ICBpZiAodmlzaWJsZVBvcy5pc051bGwoKSkKQEAgLTMxNjgsNyArMzE2OCw3IEBAIFBhc3NSZWZQ
dHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgUmFu
Z2UqIHJlZmVyZW5jZVJhCiAgICAgUmVmUHRyPE5vZGU+IHNoYWRvd1RyZWVSb290ID0gcmVmZXJl
bmNlUmFuZ2UgJiYgcmVmZXJlbmNlUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPyByZWZlcmVuY2VS
YW5nZS0+c3RhcnRDb250YWluZXIoKS0+bm9uQm91bmRhcnlTaGFkb3dUcmVlUm9vdE5vZGUoKSA6
IDA7CiAgICAgaWYgKHNoYWRvd1RyZWVSb290KSB7CiAgICAgICAgIGlmIChmb3J3YXJkKQotICAg
ICAgICAgICAgc2VhcmNoUmFuZ2UtPnNldEVuZChzaGFkb3dUcmVlUm9vdC5nZXQoKSwgc2hhZG93
VHJlZVJvb3QtPmNoaWxkTm9kZUNvdW50KCkpOworICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNl
dEVuZChzaGFkb3dUcmVlUm9vdC5nZXQoKSwgc2hhZG93VHJlZVJvb3QtPmNvdW50Q2hpbGROb2Rl
cygpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNldFN0YXJ0KHNo
YWRvd1RyZWVSb290LmdldCgpLCAwKTsKICAgICB9CkBAIC0zMTg2LDcgKzMxODYsNyBAQCBQYXNz
UmVmUHRyPFJhbmdlPiBFZGl0b3I6OnJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQs
IFJhbmdlKiByZWZlcmVuY2VSYQogCiAgICAgICAgIGlmIChzaGFkb3dUcmVlUm9vdCkgewogICAg
ICAgICAgICAgaWYgKGZvcndhcmQpCi0gICAgICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNldEVu
ZChzaGFkb3dUcmVlUm9vdC5nZXQoKSwgc2hhZG93VHJlZVJvb3QtPmNoaWxkTm9kZUNvdW50KCkp
OworICAgICAgICAgICAgICAgIHNlYXJjaFJhbmdlLT5zZXRFbmQoc2hhZG93VHJlZVJvb3QuZ2V0
KCksIHNoYWRvd1RyZWVSb290LT5jb3VudENoaWxkTm9kZXMoKSk7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNldFN0YXJ0KHNoYWRvd1RyZWVSb290Lmdl
dCgpLCAwKTsKICAgICAgICAgfQpAQCAtMzI3OSw3ICszMjc5LDcgQEAgdW5zaWduZWQgRWRpdG9y
Ojpjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmFuZ2Us
IEZpbmRPcHQKIAogICAgICAgICBOb2RlKiBzaGFkb3dUcmVlUm9vdCA9IHNlYXJjaFJhbmdlLT5z
aGFkb3dSb290KCk7CiAgICAgICAgIGlmIChzZWFyY2hSYW5nZS0+Y29sbGFwc2VkKElHTk9SRV9F
WENFUFRJT04pICYmIHNoYWRvd1RyZWVSb290KQotICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNl
dEVuZChzaGFkb3dUcmVlUm9vdCwgc2hhZG93VHJlZVJvb3QtPmNoaWxkTm9kZUNvdW50KCksIElH
Tk9SRV9FWENFUFRJT04pOworICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNldEVuZChzaGFkb3dU
cmVlUm9vdCwgc2hhZG93VHJlZVJvb3QtPmNvdW50Q2hpbGROb2RlcygpLCBJR05PUkVfRVhDRVBU
SU9OKTsKICAgICB9IHdoaWxlICh0cnVlKTsKIAogICAgIGlmIChtYXJrTWF0Y2hlcyB8fCBtYXRj
aGVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IGYw
YWMyNzkuLjdiODgxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCkBAIC0yMTk2LDcgKzIxOTYsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBGcmFtZVNlbGVjdGlv
bjo6ZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkgY29uc3QKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBQb3NpdGlvbiBzdGFydFBvcyA9IGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihlbGVtZW50LCAwKTsKLSAgICBQb3NpdGlvbiBlbmRQb3MgPSBjcmVhdGVM
ZWdhY3lFZGl0aW5nUG9zaXRpb24oZWxlbWVudCwgZWxlbWVudC0+Y2hpbGROb2RlQ291bnQoKSk7
CisgICAgUG9zaXRpb24gZW5kUG9zID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGVsZW1l
bnQsIGVsZW1lbnQtPmNvdW50Q2hpbGROb2RlcygpKTsKICAgICAKICAgICBWaXNpYmxlUG9zaXRp
b24gc3RhcnRWaXNpYmxlUG9zKHN0YXJ0UG9zLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKICAgICBW
aXNpYmxlUG9zaXRpb24gZW5kVmlzaWJsZVBvcyhlbmRQb3MsIFZQX0RFRkFVTFRfQUZGSU5JVFkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAppbmRleCAwZWI4OWJiLi5iNDViZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMTQzNyw3ICsxNDM3LDcgQEAg
Tm9kZSogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Omluc2VydEFzTGlzdEl0ZW1zKFBhc3NSZWZQ
dHI8SFRNTEVsZW1lbnQ+IHBycExpc3QKIHsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGxpc3RF
bGVtZW50ID0gcHJwTGlzdEVsZW1lbnQ7CiAKLSAgICB3aGlsZSAobGlzdEVsZW1lbnQtPmhhc0No
aWxkTm9kZXMoKSAmJiBpc0xpc3RFbGVtZW50KGxpc3RFbGVtZW50LT5maXJzdENoaWxkKCkpICYm
IGxpc3RFbGVtZW50LT5jaGlsZE5vZGVDb3VudCgpID09IDEpCisgICAgd2hpbGUgKGxpc3RFbGVt
ZW50LT5oYXNPbmVDaGlsZCgpICYmIGlzTGlzdEVsZW1lbnQobGlzdEVsZW1lbnQtPmZpcnN0Q2hp
bGQoKSkpCiAgICAgICAgIGxpc3RFbGVtZW50ID0gdG9IVE1MRWxlbWVudChsaXN0RWxlbWVudC0+
Zmlyc3RDaGlsZCgpKTsKIAogICAgIGJvb2wgaXNTdGFydCA9IGlzU3RhcnRPZlBhcmFncmFwaChp
bnNlcnRQb3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGY0
MjIxNDguLjA5M2M1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAK
QEAgLTExNDYsMTMgKzExNDYsMTMgQEAgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6
U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSYgcmEKICAgICBpbnQg
ZW5kT2Zmc2V0ID0gcmFuZ2UuZW5kT2Zmc2V0KCk7CiAKICAgICBpZiAoIXN0YXJ0Tm9kZS0+b2Zm
c2V0SW5DaGFyYWN0ZXJzKCkpIHsKLSAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0ID49IDAgJiYgc3Rh
cnRPZmZzZXQgPCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0Tm9kZS0+Y2hpbGROb2RlQ291bnQoKSkp
IHsKKyAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0ID49IDAgJiYgc3RhcnRPZmZzZXQgPCBzdGF0aWNf
Y2FzdDxpbnQ+KHN0YXJ0Tm9kZS0+Y291bnRDaGlsZE5vZGVzKCkpKSB7CiAgICAgICAgICAgICBz
dGFydE5vZGUgPSBzdGFydE5vZGUtPmNoaWxkTm9kZShzdGFydE9mZnNldCk7CiAgICAgICAgICAg
ICBzdGFydE9mZnNldCA9IDA7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFlbmROb2RlLT5v
ZmZzZXRJbkNoYXJhY3RlcnMoKSkgewotICAgICAgICBpZiAoZW5kT2Zmc2V0ID4gMCAmJiBlbmRP
ZmZzZXQgPD0gc3RhdGljX2Nhc3Q8aW50PihlbmROb2RlLT5jaGlsZE5vZGVDb3VudCgpKSkgewor
ICAgICAgICBpZiAoZW5kT2Zmc2V0ID4gMCAmJiBlbmRPZmZzZXQgPD0gc3RhdGljX2Nhc3Q8aW50
PihlbmROb2RlLT5jb3VudENoaWxkTm9kZXMoKSkpIHsKICAgICAgICAgICAgIGVuZE5vZGUgPSBl
bmROb2RlLT5jaGlsZE5vZGUoZW5kT2Zmc2V0IC0gMSk7CiAgICAgICAgICAgICBlbmRPZmZzZXQg
PSBsYXN0T2Zmc2V0SW5Ob2RlKGVuZE5vZGUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggMjBmOTNjYy4uNjRjZTM5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMTM2NCw3ICsxMzY0LDcgQEAgVmlzaWJs
ZVBvc2l0aW9uIGVuZE9mRG9jdW1lbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICAvLyAoQXMgYWJv
dmUsIGluIHN0YXJ0T2ZEb2N1bWVudC4pICBUaGUgY2Fub25pY2FsaXphdGlvbiBjYW4gcmVqZWN0
IHZhbGlkIHZpc2libGUgcG9zaXRpb25zCiAgICAgLy8gd2hlbiBkZXNjZW5kaW5nIGZyb20gdGhl
IHJvb3QgZWxlbWVudCwgc28gd2UgY29uc3RydWN0IHRoZSB2aXNpYmxlIHBvc2l0aW9uIGRpcmVj
dGx5IGZyb20gYQogICAgIC8vIHZhbGlkIGNhbmRpZGF0ZS4KLSAgICBQb3NpdGlvbiBsYXN0UG9z
aXRpb24gPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZS0+ZG9jdW1lbnQoKS5kb2N1
bWVudEVsZW1lbnQoKSwgbm9kZS0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+Y2hpbGRO
b2RlQ291bnQoKSk7CisgICAgUG9zaXRpb24gbGFzdFBvc2l0aW9uID0gY3JlYXRlTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKG5vZGUtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCksIG5vZGUtPmRv
Y3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCktPmNvdW50Q2hpbGROb2RlcygpKTsKICAgICBQb3Np
dGlvbiBsYXN0Q2FuZGlkYXRlID0gcHJldmlvdXNDYW5kaWRhdGUobGFzdFBvc2l0aW9uKTsKICAg
ICBpZiAobGFzdENhbmRpZGF0ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCA1NTVkN2Vl
Li5lNjQ1ZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtMzQz
LDcgKzM0Myw3IEBAIGludCBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhjb25zdCBOb2RlKiBub2RlKQog
ICAgICAgICByZXR1cm4gbm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCk7CiAKICAgICBpZiAobm9k
ZS0+aGFzQ2hpbGROb2RlcygpKQotICAgICAgICByZXR1cm4gbm9kZS0+Y2hpbGROb2RlQ291bnQo
KTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPmNvdW50Q2hpbGROb2RlcygpOwogCiAgICAgLy8gTk9U
RTogVGhpcyBzaG91bGQgcHJlZW1wdCB0aGUgY2hpbGROb2RlQ291bnQgZm9yLCBlLmcuLCBzZWxl
Y3Qgbm9kZXMKICAgICBpZiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG5vZGUpKQpAQCAtNTEzLDcg
KzUxMyw3IEBAIE5vZGUqIGlzTGFzdFBvc2l0aW9uQmVmb3JlVGFibGUoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCiBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9u
QmVmb3JlTm9kZShOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKLSAgICBpZiAobm9k
ZS0+Y2hpbGROb2RlQ291bnQoKSkKKyAgICBpZiAobm9kZS0+aGFzQ2hpbGROb2RlcygpKQogICAg
ICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShu
b2RlKSwgRE9XTlNUUkVBTSk7CiAgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSk7CiAgICAg
QVNTRVJUKCFub2RlLT5wYXJlbnROb2RlKCktPmlzU2hhZG93Um9vdCgpKTsKQEAgLTUyNCw3ICs1
MjQsNyBAQCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uQmVmb3JlTm9kZShOb2RlKiBu
b2RlKQogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkFmdGVyTm9kZShOb2RlKiBub2Rl
KQogewogICAgIEFTU0VSVChub2RlKTsKLSAgICBpZiAobm9kZS0+Y2hpbGROb2RlQ291bnQoKSkK
KyAgICBpZiAobm9kZS0+aGFzQ2hpbGROb2RlcygpKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUobm9kZSksIERPV05TVFJFQU0pOwogICAg
IEFTU0VSVChub2RlLT5wYXJlbnROb2RlKCkpOwogICAgIEFTU0VSVCghbm9kZS0+cGFyZW50Tm9k
ZSgpLT5pc1NoYWRvd1Jvb3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggYWY3
ZmY0ZS4uZTFhYzlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNDMsNiArNDMs
NyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTERpdkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKQEAgLTM5OCw3ICszOTksNyBAQCBOb2Rl
KiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6YXRpb24o
Tm9kZSogc3RhcnROb2RlLCBObwogICAgICAgICAgICAgICAgIGFwcGVuZFN0YXJ0VGFnKCpuKTsK
IAogICAgICAgICAgICAgLy8gSWYgbm9kZSBoYXMgbm8gY2hpbGRyZW4sIGNsb3NlIHRoZSB0YWcg
bm93LgotICAgICAgICAgICAgaWYgKCFuLT5jaGlsZE5vZGVDb3VudCgpKSB7CisgICAgICAgICAg
ICBpZiAoIW4tPmhhc0NoaWxkTm9kZXMoKSkgewogICAgICAgICAgICAgICAgIGlmIChzaG91bGRF
bWl0KQogICAgICAgICAgICAgICAgICAgICBhcHBlbmRFbmRUYWcoKm4pOwogICAgICAgICAgICAg
ICAgIGxhc3RDbG9zZWQgPSBuOwpAQCAtNzQwLDE1ICs3NDEsMjAgQEAgc3RhdGljIHZvaWQgZmls
bENvbnRhaW5lckZyb21TdHJpbmcoQ29udGFpbmVyTm9kZSogcGFyYWdyYXBoLCBjb25zdCBTdHJp
bmcmIHN0cmkKICAgICB9CiB9CiAKLWJvb2wgaXNQbGFpblRleHRNYXJrdXAoTm9kZSAqbm9kZSkK
K2Jvb2wgaXNQbGFpblRleHRNYXJrdXAoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoIW5vZGUtPmlz
RWxlbWVudE5vZGUoKSB8fCAhbm9kZS0+aGFzVGFnTmFtZShkaXZUYWcpIHx8IHRvRWxlbWVudChu
b2RlKS0+aGFzQXR0cmlidXRlcygpKQorICAgIGlmICghbm9kZS0+aGFzVGFnTmFtZShkaXZUYWcp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBIVE1MRGl2RWxlbWVudCYgZGl2ID0gdG9I
VE1MRGl2RWxlbWVudCgqbm9kZSk7CisgICAgaWYgKGRpdi5oYXNBdHRyaWJ1dGVzKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAobm9kZS0+Y2hpbGROb2RlQ291bnQoKSA9
PSAxICYmIChub2RlLT5maXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKSB8fCAobm9kZS0+Zmlyc3RD
aGlsZCgpLT5maXJzdENoaWxkKCkpKSkKKyAgICBpZiAoZGl2Lmhhc09uZUNoaWxkKCkgJiYgKGRp
di5maXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKSB8fCBkaXYuZmlyc3RDaGlsZCgpLT5maXJzdENo
aWxkKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSAgICByZXR1cm4gKG5vZGUtPmNo
aWxkTm9kZUNvdW50KCkgPT0gMiAmJiBpc1RhYlNwYW5UZXh0Tm9kZShub2RlLT5maXJzdENoaWxk
KCktPmZpcnN0Q2hpbGQoKSkgJiYgbm9kZS0+Zmlyc3RDaGlsZCgpLT5uZXh0U2libGluZygpLT5p
c1RleHROb2RlKCkpOworICAgIC8vIEZJWE1FOiBJdCBpcyBpbmVmZmljaWVudCB0byBjYWxsIGNv
dW50Q2hpbGROb2RlcygpIGp1c3QgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGV4YWN0bHkgMiBjaGls
ZHJlbi4KKyAgICByZXR1cm4gZGl2LmNvdW50Q2hpbGROb2RlcygpID09IDIgJiYgaXNUYWJTcGFu
VGV4dE5vZGUoZGl2LmZpcnN0Q2hpbGQoKS0+Zmlyc3RDaGlsZCgpKSAmJiBkaXYuZmlyc3RDaGls
ZCgpLT5uZXh0U2libGluZygpLT5pc1RleHROb2RlKCk7CiB9CiAKIHN0YXRpYyBib29sIGNvbnRl
eHRQcmVzZXJ2ZXNOZXdsaW5lKGNvbnN0IFJhbmdlJiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGl2RWxlbWVudC5oCmluZGV4IGZmODFiOWIuLjFiNWQyMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEaXZFbGVtZW50LmgKQEAgLTQwLDYgKzQwLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3Zl
cnJpZGU7CiB9OwogCitOT0RFX1RZUEVfQ0FTVFMoSFRNTERpdkVsZW1lbnQpCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEhUTUxEaXZFbGVtZW50X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNTgwZTE0ZC4uMzBlM2Q0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKQEAgLTgxLDE0ICs4MSwx
MiBAQCB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyAmdmFsdWUp
CiB7CiAgICAgUmVmPEhUTUxTY3JpcHRFbGVtZW50PiBwcm90ZWN0RnJvbU11dGF0aW9uRXZlbnRz
KCp0aGlzKTsKIAotICAgIGludCBudW1DaGlsZHJlbiA9IGNoaWxkTm9kZUNvdW50KCk7Ci0KLSAg
ICBpZiAobnVtQ2hpbGRyZW4gPT0gMSAmJiBmaXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKSkgewor
ICAgIGlmIChoYXNPbmVDaGlsZCgpICYmIGZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKSB7CiAg
ICAgICAgIHRvVGV4dChmaXJzdENoaWxkKCkpLT5zZXREYXRhKHZhbHVlLCBJR05PUkVfRVhDRVBU
SU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChudW1DaGlsZHJlbiA+IDAp
CisgICAgaWYgKGhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgcmVtb3ZlQ2hpbGRyZW4oKTsKIAog
ICAgIGFwcGVuZENoaWxkKGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUodmFsdWUuaW1wbCgpKSwg
SUdOT1JFX0VYQ0VQVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
aXRsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNw
cAppbmRleCAxNGFlZTM3Li4wMGU2N2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUaXRsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxl
RWxlbWVudC5jcHAKQEAgLTk2LDEwICs5Niw4IEBAIFN0cmluZ1dpdGhEaXJlY3Rpb24gSFRNTFRp
dGxlRWxlbWVudDo6dGV4dFdpdGhEaXJlY3Rpb24oKQogdm9pZCBIVE1MVGl0bGVFbGVtZW50Ojpz
ZXRUZXh0KGNvbnN0IFN0cmluZyAmdmFsdWUpCiB7CiAgICAgUmVmPEhUTUxUaXRsZUVsZW1lbnQ+
IHByb3RlY3RGcm9tTXV0YXRpb25FdmVudHMoKnRoaXMpOwotCi0gICAgaW50IG51bUNoaWxkcmVu
ID0gY2hpbGROb2RlQ291bnQoKTsKICAgICAKLSAgICBpZiAobnVtQ2hpbGRyZW4gPT0gMSAmJiBm
aXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKSkKKyAgICBpZiAoaGFzT25lQ2hpbGQoKSAmJiBmaXJz
dENoaWxkKCktPmlzVGV4dE5vZGUoKSkKICAgICAgICAgdG9UZXh0KGZpcnN0Q2hpbGQoKSktPnNl
dERhdGEodmFsdWUsIElHTk9SRV9FWENFUFRJT04pOwogICAgIGVsc2UgewogICAgICAgICAvLyBX
ZSBtYWtlIGEgY29weSBoZXJlIGJlY2F1c2UgZW50aXR5IG9mICJ2YWx1ZSIgYXJndW1lbnQgY2Fu
IGJlIERvY3VtZW50OjptX3RpdGxlLApAQCAtMTA3LDcgKzEwNSw3IEBAIHZvaWQgSFRNTFRpdGxl
RWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcgJnZhbHVlKQogICAgICAgICAvLyB3aGljaCBj
YXVzZXMgSFRNTFRpdGxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKCksIHdoaWNoIGVuZHMgdXAg
RG9jdW1lbnQ6OnNldFRpdGxlKCkuCiAgICAgICAgIFN0cmluZyB2YWx1ZUNvcHkodmFsdWUpOwog
Ci0gICAgICAgIGlmIChudW1DaGlsZHJlbiA+IDApCisgICAgICAgIGlmIChoYXNDaGlsZE5vZGVz
KCkpCiAgICAgICAgICAgICByZW1vdmVDaGlsZHJlbigpOwogCiAgICAgICAgIGFwcGVuZENoaWxk
KGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUodmFsdWVDb3B5LmltcGwoKSksIElHTk9SRV9FWENF
UFRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCmluZGV4IGIwOWYzOGEuLjgxMDM1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogCiAjaW5jbHVkZSAiRE9N
VG9rZW5MaXN0LmgiCisjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCkBAIC0yOTYsMjAgKzI5NywxNiBAQCBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sVGltZWxp
bmVDb250YWluZXJFbAogCiB2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVu
dDo6c2V0VGltZURpc3BsYXlzSGlkZGVuKGJvb2wgaGlkZGVuKQogewotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBjaGlsZE5vZGVDb3VudCgpOyArK2kpIHsKLSAgICAgICAgTm9kZSogY2hp
bGQgPSBjaGlsZE5vZGUoaSk7Ci0gICAgICAgIGlmICghY2hpbGQgfHwgIWNoaWxkLT5pc0VsZW1l
bnROb2RlKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgRWxlbWVudCogZWxlbWVu
dCA9IHRvRWxlbWVudChjaGlsZCk7Ci0gICAgICAgIGlmIChlbGVtZW50LT5zaGFkb3dQc2V1ZG9J
ZCgpICE9IGdldE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudFNoYWRvd1Bz
ZXVkb0lkKCkKLSAgICAgICAgICAgICYmIGVsZW1lbnQtPnNoYWRvd1BzZXVkb0lkKCkgIT0gZ2V0
TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudFNoYWRvd1BzZXVkb0lkKCkpCisg
ICAgZm9yIChhdXRvJiBlbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4oKnRoaXMpKSB7
CisgICAgICAgIGlmIChlbGVtZW50LnNoYWRvd1BzZXVkb0lkKCkgIT0gZ2V0TWVkaWFDb250cm9s
VGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50U2hhZG93UHNldWRvSWQoKQorICAgICAgICAgICAg
JiYgZWxlbWVudC5zaGFkb3dQc2V1ZG9JZCgpICE9IGdldE1lZGlhQ29udHJvbEN1cnJlbnRUaW1l
RGlzcGxheUVsZW1lbnRTaGFkb3dQc2V1ZG9JZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50KiB0aW1lRGlzcGxheSA9IHN0
YXRpY19jYXN0PE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudCo+KGVsZW1lbnQpOworICAg
ICAgICBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQmIHRpbWVEaXNwbGF5ID0gc3RhdGlj
X2Nhc3Q8TWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50Jj4oZWxlbWVudCk7CiAgICAgICAg
IGlmIChoaWRkZW4pCi0gICAgICAgICAgICB0aW1lRGlzcGxheS0+aGlkZSgpOworICAgICAgICAg
ICAgdGltZURpc3BsYXkuaGlkZSgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aW1lRGlz
cGxheS0+c2hvdygpOworICAgICAgICAgICAgdGltZURpc3BsYXkuc2hvdygpOwogICAgIH0KIH0K
IApAQCAtMTE1Miw3ICsxMTQ5LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWlu
ZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkKICAgICAvLyB3ZSB3aXNoIHRvIHJlbmRlciAoZS5n
Liwgd2UgYXJlIGFkZGluZyBhbm90aGVyIGN1ZSBpbiBhIHNldCBvZiByb2xsLXVwCiAgICAgLy8g
Y3VlcyksIHJlbW92ZSBhbGwgdGhlIGV4aXN0aW5nIENTUyBib3hlcyByZXByZXNlbnRpbmcgdGhl
IGN1ZXMgYW5kIHJlLWFkZAogICAgIC8vIHRoZW0gc28gdGhhdCB0aGUgbmV3IGN1ZSBpcyBhdCB0
aGUgYm90dG9tLgotICAgIGlmIChjaGlsZE5vZGVDb3VudCgpIDwgYWN0aXZlQ3Vlcy5zaXplKCkp
CisgICAgaWYgKGNvdW50Q2hpbGROb2RlcygpIDwgYWN0aXZlQ3Vlcy5zaXplKCkpCiAgICAgICAg
IHJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAvLyBTb3J0IHRoZSBhY3RpdmUgY3VlcyBmb3IgdGhl
IGFwcHJvcHJpYXRlIGRpc3BsYXkgb3JkZXIuIEZvciBleGFtcGxlLCBmb3Igcm9sbC11cApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCmluZGV4IDA3MjcwYzIuLmRkOWQxNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKQEAgLTM2LDYgKzM2LDcg
QEAKIAogI2luY2x1ZGUgIkNsaWVudFJlY3QuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIK
KyNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgpAQCAtMzYxLDcgKzM2Miw3IEBAIHZvaWQgVlRUUmVnaW9uOjpkaXNwbGF5TGFz
dFRleHRUcmFja0N1ZUJveCgpCiAgICAgQVNTRVJUKG1fY3VlQ29udGFpbmVyKTsKIAogICAgIC8v
IFRoZSBjb250YWluZXIgbmVlZHMgdG8gYmUgcmVuZGVyZWQsIGlmIGl0IGlzIG5vdCBlbXB0eSBh
bmQgdGhlIHJlZ2lvbiBpcyBub3QgY3VycmVudGx5IHNjcm9sbGluZy4KLSAgICBpZiAoIW1fY3Vl
Q29udGFpbmVyLT5yZW5kZXJlcigpIHx8ICFtX2N1ZUNvbnRhaW5lci0+Y2hpbGROb2RlQ291bnQo
KSB8fCBtX3Njcm9sbFRpbWVyLmlzQWN0aXZlKCkpCisgICAgaWYgKCFtX2N1ZUNvbnRhaW5lci0+
cmVuZGVyZXIoKSB8fCAhbV9jdWVDb250YWluZXItPmhhc0NoaWxkTm9kZXMoKSB8fCBtX3Njcm9s
bFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIGl0J3MgYSBz
Y3JvbGxpbmcgcmVnaW9uLCBhZGQgdGhlIHNjcm9sbGluZyBjbGFzcy4KQEAgLTM3MSw5ICszNzIs
MTEgQEAgdm9pZCBWVFRSZWdpb246OmRpc3BsYXlMYXN0VGV4dFRyYWNrQ3VlQm94KCkKICAgICBm
bG9hdCByZWdpb25Cb3R0b20gPSBtX3JlZ2lvbkRpc3BsYXlUcmVlLT5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKS0+Ym90dG9tKCk7CiAKICAgICAvLyBGaW5kIGZpcnN0IGN1ZSB0aGF0IGlzIG5vdCBl
bnRpcmVseSBkaXNwbGF5ZWQgYW5kIHNjcm9sbCBpdCB1cHdhcmRzLgotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9jdWVDb250YWluZXItPmNoaWxkTm9kZUNvdW50KCkgJiYgIW1fc2Nyb2xs
VGltZXIuaXNBY3RpdmUoKTsgKytpKSB7Ci0gICAgICAgIGZsb2F0IGNoaWxkVG9wID0gc3RhdGlj
X2Nhc3Q8SFRNTERpdkVsZW1lbnQqPihtX2N1ZUNvbnRhaW5lci0+Y2hpbGROb2RlKGkpKS0+Z2V0
Qm91bmRpbmdDbGllbnRSZWN0KCktPnRvcCgpOwotICAgICAgICBmbG9hdCBjaGlsZEJvdHRvbSA9
IHN0YXRpY19jYXN0PEhUTUxEaXZFbGVtZW50Kj4obV9jdWVDb250YWluZXItPmNoaWxkTm9kZShp
KSktPmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLT5ib3R0b20oKTsKKyAgICBmb3IgKGF1dG8mIGNo
aWxkIDogY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4oKm1fY3VlQ29udGFpbmVyKSkgeworICAgICAg
ICBpZiAobV9zY3JvbGxUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGZsb2F0IGNoaWxkVG9wID0gY2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCktPnRvcCgp
OworICAgICAgICBmbG9hdCBjaGlsZEJvdHRvbSA9IGNoaWxkLmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpLT5ib3R0b20oKTsKIAogICAgICAgICBpZiAocmVnaW9uQm90dG9tID49IGNoaWxkQm90dG9t
KQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAK
aW5kZXggMThjYmE4OC4uNzNkOTc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01TZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNw
cApAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQgRE9NU2VsZWN0aW9uOjpleHRlbmQoTm9kZSogbm9k
ZSwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgPiAobm9kZS0+b2Zmc2V0SW5DaGFyYWN0
ZXJzKCkgPyBjYXJldE1heE9mZnNldChub2RlKSA6IChpbnQpbm9kZS0+Y2hpbGROb2RlQ291bnQo
KSkpIHsKKyAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgPiAobm9kZS0+b2Zmc2V0SW5DaGFy
YWN0ZXJzKCkgPyBjYXJldE1heE9mZnNldChub2RlKSA6IHN0YXRpY19jYXN0PGludD4obm9kZS0+
Y291bnRDaGlsZE5vZGVzKCkpKSkgewogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHZvaWQgRE9NU2VsZWN0aW9u
OjpzZWxlY3RBbGxDaGlsZHJlbihOb2RlKiBuLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gVGhpcyBkb2Vzbid0IChhbmQgc2hvdWxkbid0KSBzZWxlY3QgdGV4
dCBub2RlIGNoYXJhY3RlcnMuCi0gICAgc2V0QmFzZUFuZEV4dGVudChuLCAwLCBuLCBuLT5jaGls
ZE5vZGVDb3VudCgpLCBlYyk7CisgICAgc2V0QmFzZUFuZEV4dGVudChuLCAwLCBuLCBuLT5jb3Vu
dENoaWxkTm9kZXMoKSwgZWMpOwogfQogCiBTdHJpbmcgRE9NU2VsZWN0aW9uOjp0b1N0cmluZygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDA3MjNmZDcu
LjdkMTQ1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBA
IC0yMzgwLDcgKzIzODAsNyBAQCBpbnQgUmVuZGVyT2JqZWN0OjpjYXJldE1pbk9mZnNldCgpIGNv
bnN0CiBpbnQgUmVuZGVyT2JqZWN0OjpjYXJldE1heE9mZnNldCgpIGNvbnN0CiB7CiAgICAgaWYg
KGlzUmVwbGFjZWQoKSkKLSAgICAgICAgcmV0dXJuIG5vZGUoKSA/IHN0ZDo6bWF4KDFVLCBub2Rl
KCktPmNoaWxkTm9kZUNvdW50KCkpIDogMTsKKyAgICAgICAgcmV0dXJuIG5vZGUoKSA/IHN0ZDo6
bWF4KDFVLCBub2RlKCktPmNvdW50Q2hpbGROb2RlcygpKSA6IDE7CiAgICAgaWYgKGlzSFIoKSkK
ICAgICAgICAgcmV0dXJuIDE7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCA0NWUxNzFhLi5hODI3NmQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTU4NSw3ICs1ODUsNyBA
QCBib29sIFJlbmRlclJlcGxhY2VkOjppc1NlbGVjdGVkKCkgY29uc3QKICAgICBpZiAocyA9PSBT
ZWxlY3Rpb25TdGFydCkKICAgICAgICAgcmV0dXJuIHNlbGVjdGlvblN0YXJ0ID09IDA7CiAgICAg
ICAgIAotICAgIGludCBlbmQgPSBlbGVtZW50KCktPmhhc0NoaWxkTm9kZXMoKSA/IGVsZW1lbnQo
KS0+Y2hpbGROb2RlQ291bnQoKSA6IDE7CisgICAgaW50IGVuZCA9IGVsZW1lbnQoKS0+aGFzQ2hp
bGROb2RlcygpID8gZWxlbWVudCgpLT5jb3VudENoaWxkTm9kZXMoKSA6IDE7CiAgICAgaWYgKHMg
PT0gU2VsZWN0aW9uRW5kKQogICAgICAgICByZXR1cm4gc2VsZWN0aW9uRW5kID09IGVuZDsKICAg
ICBpZiAocyA9PSBTZWxlY3Rpb25Cb3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwCmluZGV4IDU5NjllYjQuLjYwYzczYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAKQEAgLTkwNSw3ICs5MDUsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnNwbGl0
U2VsZWN0aW9uQmV0d2VlblN1YnRyZWVzKFJlbmRlck9iamVjdCogc3RhcnQsIGludCBzdGFydFBv
cwogICAgICAgICAgICAgaWYgKG5vZGUgPT0gZW5kTm9kZSkKICAgICAgICAgICAgICAgICBzZWxl
Y3Rpb25EYXRhLnNldFNlbGVjdGlvbkVuZFBvcyhlbmRQb3MpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHNlbGVjdGlvbkRhdGEuc2V0U2VsZWN0aW9uRW5kUG9zKG5vZGUtPm9m
ZnNldEluQ2hhcmFjdGVycygpID8gbm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCkgOiBub2RlLT5j
aGlsZE5vZGVDb3VudCgpKTsKKyAgICAgICAgICAgICAgICBzZWxlY3Rpb25EYXRhLnNldFNlbGVj
dGlvbkVuZFBvcyhub2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSA/IG5vZGUtPm1heENoYXJhY3Rl
ck9mZnNldCgpIDogbm9kZS0+Y291bnRDaGlsZE5vZGVzKCkpOwogCiAgICAgICAgICAgICByZW5k
ZXJTdWJ0cmVlc01hcC5zZXQoJnJvb3QsIHNlbGVjdGlvbkRhdGEpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCBmOWVhYzg5Li41MzJkY2Nj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTY2ODYsNyAr
NjY4Niw3IEBAIHN0YXRpYyBDR0ltYWdlUmVmIHNlbGVjdGlvbkltYWdlKEZyYW1lKiBmcmFtZSwg
Ym9vbCBmb3JjZUJsYWNrVGV4dCkKICAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRT
dHJpbmcgPSBbc2VsZiBfYXR0cmlidXRlU3RyaW5nRnJvbURPTVJhbmdlOltkb2N1bWVudCBfZG9j
dW1lbnRSYW5nZV1dOwogICAgIGlmICghYXR0cmlidXRlZFN0cmluZykgewogICAgICAgICBEb2N1
bWVudCogY29yZURvY3VtZW50ID0gY29yZShkb2N1bWVudCk7Ci0gICAgICAgIGF0dHJpYnV0ZWRT
dHJpbmcgPSBlZGl0aW5nQXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZSgqUmFuZ2U6OmNyZWF0ZSgq
Y29yZURvY3VtZW50LCBjb3JlRG9jdW1lbnQsIDAsIGNvcmVEb2N1bWVudCwgY29yZURvY3VtZW50
LT5jaGlsZE5vZGVDb3VudCgpKSk7CisgICAgICAgIGF0dHJpYnV0ZWRTdHJpbmcgPSBlZGl0aW5n
QXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZSgqUmFuZ2U6OmNyZWF0ZSgqY29yZURvY3VtZW50LCBj
b3JlRG9jdW1lbnQsIDAsIGNvcmVEb2N1bWVudCwgY29yZURvY3VtZW50LT5jb3VudENoaWxkTm9k
ZXMoKSkpOwogICAgIH0KICAgICByZXR1cm4gYXR0cmlidXRlZFN0cmluZzsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L1dlYlBhZ2VDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlBhZ2VDb29yZGluYXRlZEdyYXBoaWNz
LmNwcAppbmRleCA0ZWZlYzU4Li5jYzlmZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJQYWdlQ29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvV2ViUGFnZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC02NCw5ICs2
NCw5IEBAIHZvaWQgV2ViUGFnZTo6ZmluZFpvb21hYmxlQXJlYUZvclBvaW50KGNvbnN0IEludFBv
aW50JiBwb2ludCwgY29uc3QgSW50U2l6ZSYgYXJlCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgLy8gQ2FuZGlkYXRlIGZvdW5kLCBhbmQgaXQgaXMgYSBiZXR0ZXIgY2FuZGlkYXRlIHRo
YW4gaXRzIHBhcmVudC4KLSAgICAgICAgLy8gTkI6IEEgcGFyZW50IGlzIGNvbnNpZGVyZWQgYSBi
ZXR0ZXIgY2FuZGlkYXRlIGlmZiB0aGUgbm9kZSBpcworICAgICAgICAvLyBOQjogQSBwYXJlbnQg
aXMgY29uc2lkZXJlZCBhIGJldHRlciBjYW5kaWRhdGUgaWYgdGhlIG5vZGUgaXMKICAgICAgICAg
Ly8gY29udGFpbmVkIGJ5IGl0IGFuZCBpdCBpcyB0aGUgb25seSBjaGlsZC4KLSAgICAgICAgaWYg
KGZvdW5kICYmICghbm9kZS0+cGFyZW50Tm9kZSgpIHx8IG5vZGUtPnBhcmVudE5vZGUoKS0+Y2hp
bGROb2RlQ291bnQoKSAhPSAxKSkKKyAgICAgICAgaWYgKGZvdW5kICYmICghbm9kZS0+cGFyZW50
Tm9kZSgpIHx8IG5vZGUtPnBhcmVudE5vZGUoKS0+Zmlyc3RDaGlsZCgpICE9IG5vZGUtPnBhcmVu
dE5vZGUoKS0+bGFzdENoaWxkKCkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBub2Rl
ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238075</attachid>
            <date>2014-09-12 16:42:08 -0700</date>
            <delta_ts>2014-09-12 16:50:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136789-20140912164205.patch</filename>
            <type>text/plain</type>
            <size>40713</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTI4NzNiYTJhZjBkN2I2
ZWY0OWU5ZDkzYjZlZmIwMDQ3ZjMxNzU3ZS4uOGU5ZWVkYjVkNDgzYWQzNjQ3NWZlOGZhZmZlZmQx
YjA2NzJhMDc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNiBAQAorMjAxNC0wOS0xMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBOb2RlOjpjaGls
ZE5vZGVDb3VudCgpIHRvIGNvdW50Q2hpbGROb2RlcygpIGFuZCBhdm9pZCBpbmVmZmljaWVudCB1
c2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY3
ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5h
bWUgTm9kZTo6Y2hpbGROb2RlQ291bnQoKSB0byBjb3VudENoaWxkTm9kZXMoKSB0byBtYWtlIGl0
IGNsZWFyZXIKKyAgICAgICAgdGhhdCB0aGUgbWV0aG9kIGFjdHVhbGx5IGNvbXB1dGVzIHRoZSBy
ZXN1bHQgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGEKKyAgICAgICAgY2FjaGVkIHZhbHVlLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VzIGEgbmV3IE5vZGU6Omhhc09uZUNoaWxk
KCkgbWV0aG9kIHRoYXQgaXMKKyAgICAgICAgdXNlZCB0byBjaGVjayBpZiBhIE5vZGUgaGFzIGEg
c2luZ2xlIGNoaWxkLiBUaGlzIGlzIG11Y2ggbW9yZSBlZmZpY2llbnQKKyAgICAgICAgdGhhbiBj
YWxsaW5nIGNvdW50Q2hpbGROb2RlcygpID09IDEuCisKKyAgICAgICAgVGhlIHBhdGNoIGFsc28g
bGV2ZXJhZ2VzIE5vZGU6Omhhc0NoaWxkTm9kZXMoKSBpbiBhIGxvdCBvZiBwbGFjZXMKKyAgICAg
ICAgaW5zdGVhZCBvZiBjYWxsaW5nIGNvdW50Q2hpbGROb2RlcygpLgorCisgICAgICAgIEZpbmFs
bHksIGluIGEgY291cGxlIG9mIHBsYWNlcywgd2Ugbm93IHVzZSBjaGlsZHJlbk9mVHlwZSgpIHRv
IGl0ZXJhdGUKKyAgICAgICAgb3ZlciBjaGlsZHJlbiBtb3JlIGVmZmljaWVudCB0aGFuIHVzaW5n
IGNvdW50Q2hpbGROb2RlcygpIGFuZAorICAgICAgICBjaGlsZE5vZGUoaW5kZXgpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogV2ViQ29y
ZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS5vcmRlcjoKKyAgICAgICAgVXBkYXRlIHRoZSBu
YW1lIG9mIHRoZSBleHBvc2VkIHN5bWJvbCBmb3IgY291bnRDaGlsZE5vZGVzKCkuCisKKyAgICAg
ICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpyZW1vdmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpj
b3VudENoaWxkTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6Y2hpbGRO
b2RlQ291bnQpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgY2hpbGROb2RlQ291bnQoKSB0byBj
b3VudENoaWxkTm9kZXMoKSB0byBtYWtlIGl0IG9idmlvdXMgaXQgaXMKKyAgICAgICAgY29tcHV0
aW5nIHRoZSByZXN1bHQgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGEgY2FjaGVkIHZhbHVlLgorCisg
ICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6Omhhc09uZUNoaWxkKToKKyAgICAgICAgSW50cm9kdWNlIGFuIGVmZmljaWVudCB3YXkg
dG8gY2hlY2sgaW4gYSBDb250YWluZXJOb2RlIGhhcyBhIHNpbmdsZQorICAgICAgICBjaGlsZCBh
cyAiY291bnRDaGlsZE5vZGVzKCkgPT0gMSIgY2FsbHMgd2VyZSBmcmVxdWVudCBhbmQgaW5lZmZp
Y2llbnQuCisKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNvdW50Q2hpbGROb2Rlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpjaGlsZE5vZGVDb3VudCk6IERlbGV0ZWQuCisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgUmVuYW1lIGNoaWxkTm9kZUNvdW50KCkgdG8gY291bnRDaGls
ZE5vZGVzKCkuCisKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UG9zaXRpb246OnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCk6CisgICAgICAgICogZG9tL1Bv
c2l0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpsYXN0T2Zmc2V0SW5Ob2RlKToKKyAgICAgICAg
KiBkb20vUmFuZ2UuY3BwOgorICAgICAgICBNZWNoYW5pY2FsIHJlbmFtaW5nLgorCisgICAgICAg
IChXZWJDb3JlOjpsZW5ndGhPZkNvbnRlbnRzSW5Ob2RlKToKKyAgICAgICAgKiBlZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5k
OjphcHBseUlubGluZVN0eWxlVG9Ob2RlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlT
dHlsZUNvbW1hbmQ6OnNob3VsZEFwcGx5SW5saW5lU3R5bGVUb1J1bik6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24pOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6Om1lcmdlRW5kV2l0aE5leHRJZklkZW50
aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVT
dHlsZUNoYW5nZSk6CisgICAgICAgIENhbGwgaGFzQ2hpbGROb2RlcygpIHJhdGhlciB0aGFuIGNv
dW50Q2hpbGROb2RlcygpIGFzIGl0IGlzIGEgbG90IG1vcmUKKyAgICAgICAgZWZmaWNpZW50Lgor
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpzZXRUZXh0QXNDaGlsZE9mRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJh
bmdlT2ZTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb3VudE1hdGNoZXNGb3JU
ZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lU2VsZWN0aW9uOjplbGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rp
b24pOgorICAgICAgICBNZWNoYW5pY2FsIHJlbmFtaW5nLgorCisgICAgICAgICogZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6aW5zZXJ0QXNMaXN0SXRlbXMpOgorICAgICAgICBDYWxsIGhhc09uZUNo
aWxkKCkgaW5zdGVhZCBvZiBjb3VudENoaWxkTm9kZXMoKSA9PSAxLiBBbHNvIHJlbW92ZQorICAg
ICAgICByZWR1bmRhbnQgbGlzdEVsZW1lbnQtPmhhc0NoaWxkTm9kZXMoKSBjaGVjayBhcyBoYXNP
bmVDaGlsZCgpIHRha2VzCisgICAgICAgIGNhcmUgb2YgdGhpcyBhbHJlYWR5LgorCisgICAgICAg
ICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmll
ZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcik6
CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZW5kT2ZEb2N1bWVudCk6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpsYXN0T2Zmc2V0Rm9yRWRpdGluZyk6CisgICAgICAgIE1lY2hhbmljYWwg
cmVuYW1pbmcuCisKKyAgICAgICAgKFdlYkNvcmU6OnZpc2libGVQb3NpdGlvbkJlZm9yZU5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6dmlzaWJsZVBvc2l0aW9uQWZ0ZXJOb2RlKToKKyAgICAgICAg
Q2FsbCBoYXNDaGlsZE5vZGVzKCkgaW5zdGVhZCBvZiBjb252ZXJ0aW5nIGNvdW50Q2hpbGROb2Rl
cygpIHRvIGEKKyAgICAgICAgYm9vbGVhbi4KKworICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0cmF2ZXJzZU5v
ZGVzRm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIENhbGwgIWhhc0NoaWxkTm9kZXMoKSBpbnN0
ZWFkIG9mICFjb3VudENoaWxkTm9kZXMoKS4KKworICAgICAgICAoV2ViQ29yZTo6aXNQbGFpblRl
eHRNYXJrdXApOgorICAgICAgICAtIERyb3AgIW5vZGUtPmlzRWxlbWVudE5vZGUoKSBjaGVjayBh
cyAhbm9kZS0+aGFzVGFnTmFtZShkaXZUYWcpIHRha2VzCisgICAgICAgICAgY2FyZSBvZiBkaXNj
YXJkaW5nIG5vbi1FbGVtZW50IE5vZGVzIGFscmVhZHkuCisgICAgICAgIC0gQ2FzdCB0aGUgTm9k
ZSB0byBhbiBIVE1MRGl2RWxlbWVudCBhcyBzb29uIGFzIHBvc3NpYmxlIHRvIGF2b2lkCisgICAg
ICAgICAgY2FsbGluZyBjYWxsaW5nIHRoZSBzbG93ZXIgTm9kZSBBUElzIGluIHNldmVyYWwgY2Fz
ZXMuCisgICAgICAgIC0gQ2FsbCBoYXNPbmVDaGlsZCgpIGluc3RlYWQgb2YgY291bnRDaGlsZE5v
ZGVzKCkgPT0gMS4KKworICAgICAgICAqIGh0bWwvSFRNTERpdkVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxUYWdOYW1lcy5pbjoKKyAgICAgICAgR2VuZXJhdGUgY2FzdGluZyBoZWxwZXJz
IGFzIEkgdXNlIHRoZW0gaW4gV2ViQ29yZTo6aXNQbGFpblRleHRNYXJrdXAoKS4KKworICAgICAg
ICAqIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNj
cmlwdEVsZW1lbnQ6OnNldFRleHQpOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50OjpzZXRUZXh0KToKKyAgICAg
ICAgQ2FsbCBoYXNPbmVDaGlsZCgpIC8gaGFzQ2hpbGROb2RlcygpIGluc3RlYWQgb2YgY291bnRD
aGlsZE5vZGVzKCkuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVs
ZW1lbnQ6OnNldFRpbWVEaXNwbGF5c0hpZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KToKKyAgICAgICAg
VXNlIGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCkgdG8gaXRlcmF0ZSBvZiBjaGlsZCBFbGVtZW50
cyBpbnN0ZWFkIG9mCisgICAgICAgIHNsb3dlciBjaGlsZE5vZGVDb3VudCgpICsgY2hpbGROb2Rl
KGluZGV4KSArIGlzRWxlbWVudE5vZGUoKS4gQWxzbywKKyAgICAgICAgY2hpbGROb2RlQ291bnQo
KSB3YXMgbm90IGV2ZW4gY2FjaGVkIGJlZm9yZSB0aGUgbG9vcC4KKworICAgICAgICAqIGh0bWwv
dHJhY2svVlRUUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6ZGlzcGxh
eUxhc3RUZXh0VHJhY2tDdWVCb3gpOgorICAgICAgICBVc2UgY2hpbGRyZW5PZlR5cGU8RWxlbWVu
dD4oKSB0byBpdGVyYXRlIG9mIGNoaWxkIEVsZW1lbnRzLCB0aHVzCisgICAgICAgIGF2b2lkaW5n
IGNhbGxpbmcgY2hpbGROb2RlQ291bnQoKSArIGNoaWxkTm9kZShpbmRleCkuCisKKyAgICAgICAg
KiBwYWdlL0RPTVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246
OmV4dGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OnNlbGVjdEFsbENoaWxk
cmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6Y2FyZXRNYXhPZmZzZXQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6
aXNTZWxlY3RlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c3BsaXRTZWxlY3Rpb25CZXR3ZWVuU3VidHJlZXMpOgor
ICAgICAgICBNZWNoYW5pY2FsIHJlbmFtaW5nLgorCiAyMDE0LTA5LTEyICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxNzM0
NDEpOiBbR1RLXSBBbGwgYnV0dG9ucyBhcHBlYXIgaW5zZW5zaXRpdmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpp
bmRleCBkZWE0ZWE0MjE4MjljZGY5YTZlNTc5NmE3MjY3ZDAwYTI4NjI0NjI1Li4zZDdmNDAyNWIz
Y2Q3MWUwNjY3ZTM2NzNjNGVjMTY0NzRlZjhiYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTQtMDktMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW5hbWUgTm9kZTo6Y2hpbGROb2RlQ291bnQoKSB0byBjb3VudENoaWxkTm9kZXMo
KSBhbmQgYXZvaWQgaW5lZmZpY2llbnQgdXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2Nzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIGNoaWxkTm9kZUNvdW50KCkgdG8gY291bnRDaGls
ZE5vZGVzKCkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJIVE1MVmlldyBhdHRyaWJ1dGVkU3RyaW5nXSk6CisKIDIwMTQtMDktMTEgIEJlYXIgVHJh
dmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgRm9udCBMb2FkaW5nXSBF
bmFibGUgQ1NTIEZvbnQgTG9hZGluZyBvbiBNYWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3ZjcyMzc5NTc3MzZk
MWMwMjc3NmEyMjg3YTY2YjgwOGRkMjA1ZDY0Li5mYjQ2NTVkYTA4MzIxMmZjOTU0MmQyYzFlZGQx
NjUxM2FiNDI4OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTQtMDktMTIgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9kZTo6Y2hp
bGROb2RlQ291bnQoKSB0byBjb3VudENoaWxkTm9kZXMoKSBhbmQgYXZvaWQgaW5lZmZpY2llbnQg
dXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2
Nzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXZv
aWQgY2FsbGluZyBzbG93IE5vZGU6OmNvdW50Q2hpbGROb2RlcygpLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViUGFnZUNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmaW5kWm9vbWFibGVBcmVhRm9y
UG9pbnQpOgorICAgICAgICBBdm9pZCBjYWxsIHRvICJub2RlLT5wYXJlbnROb2RlKCktPmNoaWxk
Tm9kZUNvdW50KCkgIT0gMSIgd2hpY2ggd2FzCisgICAgICAgIGluZWZmaWNpZW50bHkgY2hlY2tp
bmcgaWYgdGhlIHBhcmVudE5vZGUgaGFzIG90aGVyIGNoaWxkcmVuIHRoYW4gbm9kZQorICAgICAg
ICAoaS5lLiBtb3JlIHRoYW4gMSBjaGlsZCkuIE5vdGUgdGhhdCB0aGUgcGFyZW50IE5vZGUgaGFz
IGF0IGxlYXN0IDEKKyAgICAgICAgY2hpbGQgbm9kZSAodGhlIG9uZSBpbiB0aGUgfG5vZGV8IHZh
cmlhYmxlKS4KKyAgICAgICAgVGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgY2FsbCB3aXRoICIhbm9k
ZS0+cGFyZW50Tm9kZSgpLT5oYXNPbmVDaGlsZCgpIi4KKyAgICAgICAgSXQgaXMgZXF1aXZhbGVu
dCBzaW5jZSB0aGUgInBhcmVudCBoYXMgbm90IGNoaWxkIiBjYXNlIGlzIG5vdCBwb3NzaWJsZS4K
KwogMjAxNC0wOS0xMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
W1dlYktpdDJdIFdLSW1hZ2VDcmVhdGVDR0ltYWdlIGNyYXNoZXMgd2hlbiBwYXNzZWQgYSBudWxs
IFdLSW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggOGQxZmQ0MDZmZmRjNGY5NWNiZTAwYmZi
ZmNmYWVmNTJlOGM4MmE4OS4uOTRkOWI1MzllZDQxY2ZkYjUxNzcxNGQxNDA4YjAyYzQ0NWM2M2Fi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE2MjUsNyArMTYyNSw3IEBAIF9fWk5LN1dlYkNv
cmUxMlNoYXJlZEJ1ZmZlcjRzaXplRXYKIF9fWk5LN1dlYkNvcmUxMlRleHRFbmNvZGluZzZkZWNv
ZGVFUEtjbWJSYgogX19aTks3V2ViQ29yZTEyVGV4dEl0ZXJhdG9yNG5vZGVFdgogX19aTks3V2Vi
Q29yZTEyVGV4dEl0ZXJhdG9yNXJhbmdlRXYKLV9fWk5LN1dlYkNvcmUxM0NvbnRhaW5lck5vZGUx
NGNoaWxkTm9kZUNvdW50RXYKK19fWk5LN1dlYkNvcmUxM0NvbnRhaW5lck5vZGUxNWNvdW50Q2hp
bGROb2Rlc0V2CiBfX1pOSzdXZWJDb3JlMTNDb250YWluZXJOb2RlOWNoaWxkTm9kZUVqCiBfX1pO
SzdXZWJDb3JlMTNHcmFwaGljc0xheWVyMThhY2N1bXVsYXRlZE9wYWNpdHlFdgogX19aTks3V2Vi
Q29yZTEzR3JhcGhpY3NMYXllcjE4Z2V0RGVidWdCb3JkZXJJbmZvRVJOU181Q29sb3JFUmYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLm9yZGVyCmluZGV4IGEzNjAwMmFhMWVlMDJmOTI2ZjZlMThiMDk5NjYyMGI2YzIzM2Rh
MTkuLjBiMTc3OTYwMjE2YTJlM2Q0ZTgxZDBjYjUxY2U1ZDc2ODhiNDI4NDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5vcmRlcgpAQCAtMTE2MjIsNyArMTE2MjIsNyBAQCBfX1pON1dlYkNvcmUyMWpzSFRNTE1ldGFF
bGVtZW50TmFtZUVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVOUzBfMTJQcm9wZXJ0eQog
X19aTjdXZWJDb3JlMjRqc0hUTUxNZXRhRWxlbWVudENvbnRlbnRFUE4zSlNDOUV4ZWNTdGF0ZUVO
UzBfN0pTVmFsdWVFTlMwXzEyUHJvcGVydHlOYW1lRQogX19aTjdXZWJDb3JlMjZzZXRKU0hUTUxT
Y3JpcHRFbGVtZW50VGV4dEVQTjNKU0M5RXhlY1N0YXRlRVBOUzBfOEpTT2JqZWN0RU5TMF83SlNW
YWx1ZUUKIF9fWk43V2ViQ29yZTE3SFRNTFNjcmlwdEVsZW1lbnQ3c2V0VGV4dEVSS04zV1RGNlN0
cmluZ0UKLV9fWk5LN1dlYkNvcmUxM0NvbnRhaW5lck5vZGUxNGNoaWxkTm9kZUNvdW50RXYKK19f
Wk5LN1dlYkNvcmUxM0NvbnRhaW5lck5vZGUxNWNvdW50Q2hpbGROb2Rlc0V2CiBfX1pON1dlYkNv
cmUyMGpzSFRNTExpbmtFbGVtZW50UmVsRVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRU5T
MF8xMlByb3BlcnR5TmFtZUUKIF9fWk43V2ViQ29yZTIxanNIVE1MTGlua0VsZW1lbnRIcmVmRVBO
M0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRU5TMF8xMlByb3BlcnR5TmFtZUUKIF9fWk43V2Vi
Q29yZTEzTm9kZVRyYXZlcnNhbDM1bmV4dEluY2x1ZGluZ1BzZXVkb1NraXBwaW5nQ2hpbGRyZW5F
UEtOU180Tm9kZUVTM18KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCAxYjEx
NDAyYmFmMjE3MmE1ZWZlNmFmY2E0YjczYmU3ZDk1ZDRkYzUyLi42ZGIxMDQ5MzRlZGY1YWEzOGRh
MTU1OTRkMjIyNGNiZGY0ZmM2MzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CkBAIC02NTMsNyArNjUzLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbigp
CiAgICAgICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUgc3VzcGVuZFdp
ZGdldEhpZXJhcmNoeVVwZGF0ZXM7CiAgICAgICAgIHsKICAgICAgICAgICAgIE5vRXZlbnREaXNw
YXRjaEFzc2VydGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7Ci0gICAgICAgICAgICByZW1vdmVk
Q2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjaGlsZE5vZGVDb3VudCgpKTsKKyAgICAg
ICAgICAgIHJlbW92ZWRDaGlsZHJlbi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50Q2hpbGRO
b2RlcygpKTsKICAgICAgICAgICAgIHdoaWxlIChSZWZQdHI8Tm9kZT4gbiA9IG1fZmlyc3RDaGls
ZCkgewogICAgICAgICAgICAgICAgIHJlbW92ZWRDaGlsZHJlbi5hcHBlbmQoKm1fZmlyc3RDaGls
ZCk7CiAgICAgICAgICAgICAgICAgcmVtb3ZlQmV0d2VlbigwLCBtX2ZpcnN0Q2hpbGQtPm5leHRT
aWJsaW5nKCksICptX2ZpcnN0Q2hpbGQpOwpAQCAtOTMxLDEyICs5MzEsMTEgQEAgTGF5b3V0UmVj
dCBDb250YWluZXJOb2RlOjpib3VuZGluZ0JveCgpIGNvbnN0CiAgICAgcmV0dXJuIGVuY2xvc2lu
Z0xheW91dFJlY3QoRmxvYXRSZWN0KHVwcGVyTGVmdCwgbG93ZXJSaWdodC5leHBhbmRlZFRvKHVw
cGVyTGVmdCkgLSB1cHBlckxlZnQpKTsKIH0KIAotdW5zaWduZWQgQ29udGFpbmVyTm9kZTo6Y2hp
bGROb2RlQ291bnQoKSBjb25zdAordW5zaWduZWQgQ29udGFpbmVyTm9kZTo6Y291bnRDaGlsZE5v
ZGVzKCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgTm9kZSAqbjsKLSAg
ICBmb3IgKG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKQotICAgICAg
ICBjb3VudCsrOworICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5l
eHRTaWJsaW5nKCkpCisgICAgICAgICsrY291bnQ7CiAgICAgcmV0dXJuIGNvdW50OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA2MzllZDI0NjA0MzgwZjQyNTViMzg0ZDAy
ODY0Nzc5Y2ViOWFhZDRiLi41MTBmYTA0YTFhYmYzZmI3NTU0M2IxMGI0YjE3M2M0Nzc4NmNiOGE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTg3LDExICs4NywxMiBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHB0cmRpZmZfdCBmaXJzdENoaWxkTWVtb3J5T2Zmc2V0KCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKENvbnRhaW5lck5vZGUsIG1fZmlyc3RDaGlsZCk7IH0KICAgICBO
b2RlKiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RDaGlsZDsgfQogICAgIGJvb2wg
aGFzQ2hpbGROb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZDsgfQorICAgIGJvb2wg
aGFzT25lQ2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Q2hpbGQgJiYgIW1fZmlyc3RDaGls
ZC0+bmV4dFNpYmxpbmcoKTsgfQogCiAgICAgYm9vbCBkaXJlY3RDaGlsZE5lZWRzU3R5bGVSZWNh
bGMoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKERpcmVjdENoaWxkTmVlZHNTdHlsZVJlY2FsY0Zs
YWcpOyB9CiAgICAgdm9pZCBzZXREaXJlY3RDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSB7IHNldEZs
YWcoRGlyZWN0Q2hpbGROZWVkc1N0eWxlUmVjYWxjRmxhZyk7IH0KIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHVuc2lnbmVkIGNoaWxkTm9kZUNvdW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
dW5zaWduZWQgY291bnRDaGlsZE5vZGVzKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgTm9k
ZSogY2hpbGROb2RlKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAogICAgIGJvb2wgaW5zZXJ0QmVm
b3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlcHRpb25D
b2RlJiA9IEFTU0VSVF9OT19FWENFUFRJT04pOwpAQCAtMTg0LDExICsxODUsMTEgQEAgaW5saW5l
IENvbnRhaW5lck5vZGU6OkNvbnRhaW5lck5vZGUoRG9jdW1lbnQmIGRvY3VtZW50LCBDb25zdHJ1
Y3Rpb25UeXBlIHR5cGUpCiB7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBOb2RlOjpjaGlsZE5vZGVD
b3VudCgpIGNvbnN0CitpbmxpbmUgdW5zaWduZWQgTm9kZTo6Y291bnRDaGlsZE5vZGVzKCkgY29u
c3QKIHsKICAgICBpZiAoIWlzQ29udGFpbmVyTm9kZSgpKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICByZXR1cm4gdG9Db250YWluZXJOb2RlKHRoaXMpLT5jaGlsZE5vZGVDb3VudCgpOworICAgIHJl
dHVybiB0b0NvbnRhaW5lck5vZGUodGhpcyktPmNvdW50Q2hpbGROb2RlcygpOwogfQogCiBpbmxp
bmUgTm9kZSogTm9kZTo6Y2hpbGROb2RlKHVuc2lnbmVkIGluZGV4KSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
aW5kZXggZWJiZDhhOTBiMzBmMjBhOGEwNDliMmFmZjJkZWE0NTA2YjkzMzhiNS4uZjQ3N2ZmM2Ew
YTJkODE4MmY0MTBiNTU2YmRmZjdiNjM5NDU2NzM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC00MTYsNyAr
NDE2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNSZWFkT25seU5vZGUoKSBjb25zdCB7IHJldHVy
biBub2RlVHlwZSgpID09IEVOVElUWV9SRUZFUkVOQ0VfTk9ERTsgfQogICAgIGJvb2wgaXNEb2N1
bWVudFR5cGVOb2RlKCkgY29uc3QgeyByZXR1cm4gbm9kZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBF
X05PREU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB1bnNpZ25lZCBjaGlsZE5vZGVDb3VudCgpIGNvbnN0
OworICAgIHVuc2lnbmVkIGNvdW50Q2hpbGROb2RlcygpIGNvbnN0OwogICAgIE5vZGUqIGNoaWxk
Tm9kZSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKICAgICB2b2lkIGNoZWNrU2V0UHJlZml4KGNv
bnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmNwcAppbmRleCAzYWQ4ZWRhZTdkOWYzZTk4YmMzZmJkY2FmYmE0ZDM4ZTJkZmQzZDZjLi5m
MmM2OTFlM2IwYmM1MGEzNzA5ZjUxMmUzZDJmNzMxMWY4YjI3MDlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5jcHAKQEAgLTIyNiw3ICsyMjYsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6cGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCkgY29uc3QKICAgICB9CiAKICAgICBpZiAoIW1fYW5jaG9yTm9kZS0+
b2Zmc2V0SW5DaGFyYWN0ZXJzKCkKLSAgICAgICAgJiYgKG1fYW5jaG9yVHlwZSA9PSBQb3NpdGlv
bklzQWZ0ZXJBbmNob3IgfHwgbV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckNoaWxkcmVu
IHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCkgPT0gbV9hbmNob3JOb2RlLT5jaGls
ZE5vZGVDb3VudCgpKQorICAgICAgICAmJiAobV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRl
ckFuY2hvciB8fCBtX2FuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4gfHwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KSA9PSBtX2FuY2hvck5vZGUtPmNvdW50Q2hpbGRO
b2RlcygpKQogICAgICAgICAmJiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5n
ZXQoKSkgfHwgaXNSZW5kZXJlZFRhYmxlKG1fYW5jaG9yTm9kZS5nZXQoKSkpCiAgICAgICAgICYm
IGNvbnRhaW5lck5vZGUoKSkgewogICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEFmdGVy
Tm9kZShtX2FuY2hvck5vZGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAppbmRleCAyOTgxMTdm
MDVkZTc0YjYzOGIyOTMyZjdhNjFmNWJiYzUwMTNhNjE2Li41MWJmNDcyNjJiYjM5NWY2NTk1MjFj
MjI3NjdlNmJiMDg0YTkwMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaApAQCAtMjk3LDEwICsyOTcs
MTAgQEAgaW5saW5lIFBvc2l0aW9uIHBvc2l0aW9uQWZ0ZXJOb2RlKE5vZGUqIGFuY2hvck5vZGUp
CiAKIGlubGluZSBpbnQgbGFzdE9mZnNldEluTm9kZShOb2RlKiBub2RlKQogewotICAgIHJldHVy
biBub2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSA/IG5vZGUtPm1heENoYXJhY3Rlck9mZnNldCgp
IDogc3RhdGljX2Nhc3Q8aW50Pihub2RlLT5jaGlsZE5vZGVDb3VudCgpKTsKKyAgICByZXR1cm4g
bm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkgPyBub2RlLT5tYXhDaGFyYWN0ZXJPZmZzZXQoKSA6
IHN0YXRpY19jYXN0PGludD4obm9kZS0+Y291bnRDaGlsZE5vZGVzKCkpOwogfQogCi0vLyBmaXJz
dFBvc2l0aW9uSW5Ob2RlIGFuZCBsYXN0UG9zaXRpb25Jbk5vZGUgcmV0dXJuIHBhcmVudC1hbmNo
b3JlZCBwb3NpdGlvbnMsIGxhc3RQb3NpdGlvbkluTm9kZSBjb25zdHJ1Y3Rpb24gaXMgTyhuKSBk
dWUgdG8gY2hpbGROb2RlQ291bnQoKQorLy8gZmlyc3RQb3NpdGlvbkluTm9kZSBhbmQgbGFzdFBv
c2l0aW9uSW5Ob2RlIHJldHVybiBwYXJlbnQtYW5jaG9yZWQgcG9zaXRpb25zLCBsYXN0UG9zaXRp
b25Jbk5vZGUgY29uc3RydWN0aW9uIGlzIE8obikgZHVlIHRvIGNvdW50Q2hpbGROb2RlcygpCiBp
bmxpbmUgUG9zaXRpb24gZmlyc3RQb3NpdGlvbkluTm9kZShOb2RlKiBhbmNob3JOb2RlKQogewog
ICAgIGlmIChhbmNob3JOb2RlLT5pc1RleHROb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCBi
MGJjMzIwMWRmYTBlMjI5MzA0MjdiMjExNDRmNThkODQzZWUzZjA5Li5kNjg0ODRmY2YxN2NiODdj
NTE0MDljNGNkZTE3MzExYzlhOTgwZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTY3Miw3ICs2
NzIsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mQ29udGVudHNJbk5vZGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CiAgICAgY2Fz
ZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05P
REU6Ci0gICAgICAgIHJldHVybiBub2RlLT5jaGlsZE5vZGVDb3VudCgpOworICAgICAgICByZXR1
cm4gbm9kZS0+Y291bnRDaGlsZE5vZGVzKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
cHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcAppbmRleCA1Mzg0YjZmMjgxY2Y1ZDQwZGExYmFmYzQyNDhkMzdjZDc5YmRhZjFk
Li40ZDY3ZGM5M2MzYmUyOGVhZjkzMGIyMzE4MTRlODZjMzQ1ZThjODk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAtNzc3LDcgKzc3Nyw3IEBA
IHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGVUb05vZGVSYW5nZShFZGl0
aW5nU3R5bGUqIHN0eWxlLCBQYXNzUmVmCiAgICAgICAgIGlmIChpc0Jsb2NrKG5vZGUuZ2V0KCkp
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBpZiAobm9kZS0+Y2hp
bGROb2RlQ291bnQoKSkgeworICAgICAgICBpZiAobm9kZS0+aGFzQ2hpbGROb2RlcygpKSB7CiAg
ICAgICAgICAgICBpZiAobm9kZS0+Y29udGFpbnMocGFzdEVuZE5vZGUuZ2V0KCkpIHx8IGNvbnRh
aW5zTm9uRWRpdGFibGVSZWdpb24obm9kZS5nZXQoKSkgfHwgIW5vZGUtPnBhcmVudE5vZGUoKS0+
aGFzRWRpdGFibGVTdHlsZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgaWYgKGVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlLmdldCgpKSkgewpAQCAtODM1LDcgKzgz
NSw3IEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnNob3VsZEFwcGx5SW5saW5lU3R5bGVUb1J1
bihFZGl0aW5nU3R5bGUqIHN0eWxlLCBOb2RlKiByCiAgICAgQVNTRVJUKHN0eWxlICYmIHJ1blN0
YXJ0KTsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IHJ1blN0YXJ0OyBub2RlICYmIG5vZGUgIT0g
cGFzdEVuZE5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUpKSB7Ci0gICAgICAg
IGlmIChub2RlLT5jaGlsZE5vZGVDb3VudCgpKQorICAgICAgICBpZiAobm9kZS0+aGFzQ2hpbGRO
b2RlcygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIC8vIFdlIGRvbid0IGNvbnNp
ZGVyIG1faXNJbmxpbmVFbGVtZW50VG9SZW1vdmVGdW5jdGlvbiBoZXJlIGJlY2F1c2Ugd2UgbmV2
ZXIgYXBwbHkgc3R5bGUgd2hlbiBtX2lzSW5saW5lRWxlbWVudFRvUmVtb3ZlRnVuY3Rpb24gaXMg
c3BlY2lmaWVkCiAgICAgICAgIGlmICghc3R5bGUtPnN0eWxlSXNQcmVzZW50SW5Db21wdXRlZFN0
eWxlT2ZOb2RlKG5vZGUpKQpAQCAtMTAwNyw3ICsxMDA3LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29t
bWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24oTm9kZSogbm9kZSwgRWRpdGluZ1N0eWxl
KiBzdHkKIAogICAgIC8vIFNpbmNlIGFkZElubGluZVN0eWxlSWZOZWVkZWQgY2FuJ3QgYWRkIHN0
eWxlcyB0byBibG9jay1mbG93IHJlbmRlciBvYmplY3RzLCBhZGQgc3R5bGUgYXR0cmlidXRlIGlu
c3RlYWQuCiAgICAgLy8gRklYTUU6IGFwcGx5SW5saW5lU3R5bGVUb1JhbmdlIHNob3VsZCBiZSB1
c2VkIGhlcmUgaW5zdGVhZC4KLSAgICBpZiAoKG5vZGUtPnJlbmRlcmVyKCktPmlzUmVuZGVyQmxv
Y2tGbG93KCkgfHwgbm9kZS0+Y2hpbGROb2RlQ291bnQoKSkgJiYgbm9kZS0+aXNIVE1MRWxlbWVu
dCgpKSB7CisgICAgaWYgKChub2RlLT5yZW5kZXJlcigpLT5pc1JlbmRlckJsb2NrRmxvdygpIHx8
IG5vZGUtPmhhc0NoaWxkTm9kZXMoKSkgJiYgbm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7CiAgICAg
ICAgIHNldE5vZGVBdHRyaWJ1dGUodG9IVE1MRWxlbWVudChub2RlKSwgc3R5bGVBdHRyLCBuZXdJ
bmxpbmVTdHlsZS0+c3R5bGUoKS0+YXNUZXh0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMTMyNSw3ICsxMzI1LDcgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6bWVyZ2VFbmRXaXRo
TmV4dElmSWRlbnRpY2FsKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QKICAgICAgICAgbWVy
Z2VJZGVudGljYWxFbGVtZW50cyhlbGVtZW50LCBuZXh0RWxlbWVudCk7CiAKICAgICAgICAgYm9v
bCBzaG91bGRVcGRhdGVTdGFydCA9IHN0YXJ0LmNvbnRhaW5lck5vZGUoKSA9PSBlbmROb2RlOwot
ICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gbmV4dENoaWxkID8gbmV4dENoaWxkLT5ub2RlSW5kZXgo
KSA6IG5leHRFbGVtZW50LT5jaGlsZE5vZGVDb3VudCgpOworICAgICAgICBpbnQgZW5kT2Zmc2V0
ID0gbmV4dENoaWxkID8gbmV4dENoaWxkLT5ub2RlSW5kZXgoKSA6IG5leHRFbGVtZW50LT5jb3Vu
dENoaWxkTm9kZXMoKTsKICAgICAgICAgdXBkYXRlU3RhcnRFbmQoc2hvdWxkVXBkYXRlU3RhcnQg
PyBQb3NpdGlvbihuZXh0RWxlbWVudCwgc3RhcnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCksIFBv
c2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpIDogc3RhcnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgIFBvc2l0aW9uKG5leHRFbGVtZW50LCBlbmRPZmZzZXQsIFBvc2l0aW9uOjpQb3Np
dGlvbklzT2Zmc2V0SW5BbmNob3IpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDMzLDcg
KzE0MzMsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlQ2hhbmdl
KFBhc3NSZWZQdHI8Tm9kZT4gcGFzc2VkU3RhcnQsIFBhcwogICAgICAgICBpZiAoY29udGFpbmVy
LT5pc0hUTUxFbGVtZW50KCkgJiYgY29udGFpbmVyLT5oYXNUYWdOYW1lKGZvbnRUYWcpKQogICAg
ICAgICAgICAgZm9udENvbnRhaW5lciA9IHRvSFRNTEVsZW1lbnQoY29udGFpbmVyKTsKICAgICAg
ICAgYm9vbCBzdHlsZUNvbnRhaW5lcklzTm90U3BhbiA9ICFzdHlsZUNvbnRhaW5lciB8fCAhc3R5
bGVDb250YWluZXItPmhhc1RhZ05hbWUoc3BhblRhZyk7Ci0gICAgICAgIGlmIChjb250YWluZXIt
PmlzSFRNTEVsZW1lbnQoKSAmJiAoY29udGFpbmVyLT5oYXNUYWdOYW1lKHNwYW5UYWcpIHx8IChz
dHlsZUNvbnRhaW5lcklzTm90U3BhbiAmJiBjb250YWluZXItPmNoaWxkTm9kZUNvdW50KCkpKSkK
KyAgICAgICAgaWYgKGNvbnRhaW5lci0+aXNIVE1MRWxlbWVudCgpICYmIChjb250YWluZXItPmhh
c1RhZ05hbWUoc3BhblRhZykgfHwgKHN0eWxlQ29udGFpbmVySXNOb3RTcGFuICYmIGNvbnRhaW5l
ci0+aGFzQ2hpbGROb2RlcygpKSkpCiAgICAgICAgICAgICBzdHlsZUNvbnRhaW5lciA9IHRvSFRN
TEVsZW1lbnQoY29udGFpbmVyKTsKICAgICAgICAgaWYgKCFjb250YWluZXItPmZpcnN0Q2hpbGQo
KSkKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGY0
MTA2NWJmOTM5MzE1NGM2YzlhZWEyOGFmNjU2ZTkxZGY4NDM3ZWIuLjhjOGRhZGM0YzYxMTcwNmQ1
OWNkNDAwOWU4NmJkNzBmZDUxMTgxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAg
LTcwNCw3ICs3MDQsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFzQ2hpbGRPZkVsZW1lbnQoY29u
c3QgU3RyaW5nJiB0ZXh0LCBFbGVtZW50KiBlbGVtKQogICAgIC8vIHNldCB0aGUgc2VsZWN0aW9u
IHRvIHRoZSBlbmQKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbjsKIAotICAgIFBvc2l0
aW9uIHBvcyA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihlbGVtLCBlbGVtLT5jaGlsZE5v
ZGVDb3VudCgpKTsKKyAgICBQb3NpdGlvbiBwb3MgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRp
b24oZWxlbSwgZWxlbS0+Y291bnRDaGlsZE5vZGVzKCkpOwogCiAgICAgVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVQb3MocG9zLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKICAgICBpZiAodmlzaWJsZVBv
cy5pc051bGwoKSkKQEAgLTMxNjgsNyArMzE2OCw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IEVkaXRv
cjo6cmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgUmFuZ2UqIHJlZmVyZW5jZVJh
CiAgICAgUmVmUHRyPE5vZGU+IHNoYWRvd1RyZWVSb290ID0gcmVmZXJlbmNlUmFuZ2UgJiYgcmVm
ZXJlbmNlUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPyByZWZlcmVuY2VSYW5nZS0+c3RhcnRDb250
YWluZXIoKS0+bm9uQm91bmRhcnlTaGFkb3dUcmVlUm9vdE5vZGUoKSA6IDA7CiAgICAgaWYgKHNo
YWRvd1RyZWVSb290KSB7CiAgICAgICAgIGlmIChmb3J3YXJkKQotICAgICAgICAgICAgc2VhcmNo
UmFuZ2UtPnNldEVuZChzaGFkb3dUcmVlUm9vdC5nZXQoKSwgc2hhZG93VHJlZVJvb3QtPmNoaWxk
Tm9kZUNvdW50KCkpOworICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNldEVuZChzaGFkb3dUcmVl
Um9vdC5nZXQoKSwgc2hhZG93VHJlZVJvb3QtPmNvdW50Q2hpbGROb2RlcygpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNldFN0YXJ0KHNoYWRvd1RyZWVSb290Lmdl
dCgpLCAwKTsKICAgICB9CkBAIC0zMTg2LDcgKzMxODYsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBF
ZGl0b3I6OnJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFJhbmdlKiByZWZlcmVu
Y2VSYQogCiAgICAgICAgIGlmIChzaGFkb3dUcmVlUm9vdCkgewogICAgICAgICAgICAgaWYgKGZv
cndhcmQpCi0gICAgICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNldEVuZChzaGFkb3dUcmVlUm9v
dC5nZXQoKSwgc2hhZG93VHJlZVJvb3QtPmNoaWxkTm9kZUNvdW50KCkpOworICAgICAgICAgICAg
ICAgIHNlYXJjaFJhbmdlLT5zZXRFbmQoc2hhZG93VHJlZVJvb3QuZ2V0KCksIHNoYWRvd1RyZWVS
b290LT5jb3VudENoaWxkTm9kZXMoKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgc2VhcmNoUmFuZ2UtPnNldFN0YXJ0KHNoYWRvd1RyZWVSb290LmdldCgpLCAwKTsKICAgICAg
ICAgfQpAQCAtMzI3OSw3ICszMjc5LDcgQEAgdW5zaWduZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNG
b3JUZXh0KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmFuZ2UsIEZpbmRPcHQKIAogICAg
ICAgICBOb2RlKiBzaGFkb3dUcmVlUm9vdCA9IHNlYXJjaFJhbmdlLT5zaGFkb3dSb290KCk7CiAg
ICAgICAgIGlmIChzZWFyY2hSYW5nZS0+Y29sbGFwc2VkKElHTk9SRV9FWENFUFRJT04pICYmIHNo
YWRvd1RyZWVSb290KQotICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNldEVuZChzaGFkb3dUcmVl
Um9vdCwgc2hhZG93VHJlZVJvb3QtPmNoaWxkTm9kZUNvdW50KCksIElHTk9SRV9FWENFUFRJT04p
OworICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNldEVuZChzaGFkb3dUcmVlUm9vdCwgc2hhZG93
VHJlZVJvb3QtPmNvdW50Q2hpbGROb2RlcygpLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICB9IHdo
aWxlICh0cnVlKTsKIAogICAgIGlmIChtYXJrTWF0Y2hlcyB8fCBtYXRjaGVzKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IGYwYWMyNzlhODdjMGY3YjI0
ZTgzYWY3NWZkNTBjNjgxZDIwNzYzNmQuLjdiODgxNTFjMzJiZjczNDM0NWYyMzY5NjM0ZWMyOTA4
YzEyMTA1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBA
IC0yMTk2LDcgKzIxOTYsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBGcmFtZVNlbGVjdGlvbjo6ZWxl
bWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkgY29uc3QKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBQb3NpdGlvbiBzdGFydFBvcyA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihlbGVtZW50LCAwKTsKLSAgICBQb3NpdGlvbiBlbmRQb3MgPSBjcmVhdGVMZWdhY3lF
ZGl0aW5nUG9zaXRpb24oZWxlbWVudCwgZWxlbWVudC0+Y2hpbGROb2RlQ291bnQoKSk7CisgICAg
UG9zaXRpb24gZW5kUG9zID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGVsZW1lbnQsIGVs
ZW1lbnQtPmNvdW50Q2hpbGROb2RlcygpKTsKICAgICAKICAgICBWaXNpYmxlUG9zaXRpb24gc3Rh
cnRWaXNpYmxlUG9zKHN0YXJ0UG9zLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKICAgICBWaXNpYmxl
UG9zaXRpb24gZW5kVmlzaWJsZVBvcyhlbmRQb3MsIFZQX0RFRkFVTFRfQUZGSU5JVFkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApp
bmRleCAwZWI4OWJiZWJmYTkxYTEzNGYyNzA4MDgxMDA4YjhiMTk1NzU3NTA4Li5iNDViZTVkYjQ1
Y2U2YjRlM2YxMmJiMGU3NzU1ZjcxOWFlOWJmZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMTQzNyw3ICsxNDM3LDcg
QEAgTm9kZSogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Omluc2VydEFzTGlzdEl0ZW1zKFBhc3NS
ZWZQdHI8SFRNTEVsZW1lbnQ+IHBycExpc3QKIHsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGxp
c3RFbGVtZW50ID0gcHJwTGlzdEVsZW1lbnQ7CiAKLSAgICB3aGlsZSAobGlzdEVsZW1lbnQtPmhh
c0NoaWxkTm9kZXMoKSAmJiBpc0xpc3RFbGVtZW50KGxpc3RFbGVtZW50LT5maXJzdENoaWxkKCkp
ICYmIGxpc3RFbGVtZW50LT5jaGlsZE5vZGVDb3VudCgpID09IDEpCisgICAgd2hpbGUgKGxpc3RF
bGVtZW50LT5oYXNPbmVDaGlsZCgpICYmIGlzTGlzdEVsZW1lbnQobGlzdEVsZW1lbnQtPmZpcnN0
Q2hpbGQoKSkpCiAgICAgICAgIGxpc3RFbGVtZW50ID0gdG9IVE1MRWxlbWVudChsaXN0RWxlbWVu
dC0+Zmlyc3RDaGlsZCgpKTsKIAogICAgIGJvb2wgaXNTdGFydCA9IGlzU3RhcnRPZlBhcmFncmFw
aChpbnNlcnRQb3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4
IGY0MjIxNDhhNzRmZDM2NmE5MTA3NmI4OWY1YWUyYTlhZjAwZWI0OTkuLjA5M2M1NDhmMzIwMjZj
ZDNkNTE4NjA0ZDk0MDBmMTM1MmY5MTYxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAKQEAgLTExNDYsMTMgKzExNDYsMTMgQEAgU2ltcGxpZmllZEJhY2t3YXJkc1Rl
eHRJdGVyYXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSYg
cmEKICAgICBpbnQgZW5kT2Zmc2V0ID0gcmFuZ2UuZW5kT2Zmc2V0KCk7CiAKICAgICBpZiAoIXN0
YXJ0Tm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkpIHsKLSAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0
ID49IDAgJiYgc3RhcnRPZmZzZXQgPCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0Tm9kZS0+Y2hpbGRO
b2RlQ291bnQoKSkpIHsKKyAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0ID49IDAgJiYgc3RhcnRPZmZz
ZXQgPCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0Tm9kZS0+Y291bnRDaGlsZE5vZGVzKCkpKSB7CiAg
ICAgICAgICAgICBzdGFydE5vZGUgPSBzdGFydE5vZGUtPmNoaWxkTm9kZShzdGFydE9mZnNldCk7
CiAgICAgICAgICAgICBzdGFydE9mZnNldCA9IDA7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYg
KCFlbmROb2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSkgewotICAgICAgICBpZiAoZW5kT2Zmc2V0
ID4gMCAmJiBlbmRPZmZzZXQgPD0gc3RhdGljX2Nhc3Q8aW50PihlbmROb2RlLT5jaGlsZE5vZGVD
b3VudCgpKSkgeworICAgICAgICBpZiAoZW5kT2Zmc2V0ID4gMCAmJiBlbmRPZmZzZXQgPD0gc3Rh
dGljX2Nhc3Q8aW50PihlbmROb2RlLT5jb3VudENoaWxkTm9kZXMoKSkpIHsKICAgICAgICAgICAg
IGVuZE5vZGUgPSBlbmROb2RlLT5jaGlsZE5vZGUoZW5kT2Zmc2V0IC0gMSk7CiAgICAgICAgICAg
ICBlbmRPZmZzZXQgPSBsYXN0T2Zmc2V0SW5Ob2RlKGVuZE5vZGUpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggMjBmOTNjY2Y1NDlhYWI4MTc2
MjJkZWEyZmE3NzEwMzlmZDcwOWUzZC4uNjRjZTM5MDU0ZmQyZmZmY2VhOTQ5ZjZiYzc3MjMxZDMx
ODM2MzExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMTM2
NCw3ICsxMzY0LDcgQEAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mRG9jdW1lbnQoY29uc3QgTm9kZSog
bm9kZSkKICAgICAvLyAoQXMgYWJvdmUsIGluIHN0YXJ0T2ZEb2N1bWVudC4pICBUaGUgY2Fub25p
Y2FsaXphdGlvbiBjYW4gcmVqZWN0IHZhbGlkIHZpc2libGUgcG9zaXRpb25zCiAgICAgLy8gd2hl
biBkZXNjZW5kaW5nIGZyb20gdGhlIHJvb3QgZWxlbWVudCwgc28gd2UgY29uc3RydWN0IHRoZSB2
aXNpYmxlIHBvc2l0aW9uIGRpcmVjdGx5IGZyb20gYQogICAgIC8vIHZhbGlkIGNhbmRpZGF0ZS4K
LSAgICBQb3NpdGlvbiBsYXN0UG9zaXRpb24gPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
bm9kZS0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSwgbm9kZS0+ZG9jdW1lbnQoKS5kb2N1
bWVudEVsZW1lbnQoKS0+Y2hpbGROb2RlQ291bnQoKSk7CisgICAgUG9zaXRpb24gbGFzdFBvc2l0
aW9uID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUtPmRvY3VtZW50KCkuZG9jdW1l
bnRFbGVtZW50KCksIG5vZGUtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCktPmNvdW50Q2hp
bGROb2RlcygpKTsKICAgICBQb3NpdGlvbiBsYXN0Q2FuZGlkYXRlID0gcHJldmlvdXNDYW5kaWRh
dGUobGFzdFBvc2l0aW9uKTsKICAgICBpZiAobGFzdENhbmRpZGF0ZS5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0
aW5nLmNwcAppbmRleCA1NTVkN2VlYzA3MTliZmUwMzg0MTNiOTFiMTQxMTAxYWJhMDdhNGVjLi5l
NjQ1ZWNhZWI2NjM3ZTBjNzAyMTQ1ZjRjNmZmNzk5YjhkZTc4MTUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIGludCBsYXN0T2Zmc2V0
Rm9yRWRpdGluZyhjb25zdCBOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gbm9kZS0+bWF4Q2hh
cmFjdGVyT2Zmc2V0KCk7CiAKICAgICBpZiAobm9kZS0+aGFzQ2hpbGROb2RlcygpKQotICAgICAg
ICByZXR1cm4gbm9kZS0+Y2hpbGROb2RlQ291bnQoKTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPmNv
dW50Q2hpbGROb2RlcygpOwogCiAgICAgLy8gTk9URTogVGhpcyBzaG91bGQgcHJlZW1wdCB0aGUg
Y2hpbGROb2RlQ291bnQgZm9yLCBlLmcuLCBzZWxlY3Qgbm9kZXMKICAgICBpZiAoZWRpdGluZ0ln
bm9yZXNDb250ZW50KG5vZGUpKQpAQCAtNTEzLDcgKzUxMyw3IEBAIE5vZGUqIGlzTGFzdFBvc2l0
aW9uQmVmb3JlVGFibGUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCiBW
aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uQmVmb3JlTm9kZShOb2RlKiBub2RlKQogewog
ICAgIEFTU0VSVChub2RlKTsKLSAgICBpZiAobm9kZS0+Y2hpbGROb2RlQ291bnQoKSkKKyAgICBp
ZiAobm9kZS0+aGFzQ2hpbGROb2RlcygpKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2RlKSwgRE9XTlNUUkVBTSk7CiAgICAgQVNT
RVJUKG5vZGUtPnBhcmVudE5vZGUoKSk7CiAgICAgQVNTRVJUKCFub2RlLT5wYXJlbnROb2RlKCkt
PmlzU2hhZG93Um9vdCgpKTsKQEAgLTUyNCw3ICs1MjQsNyBAQCBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uQmVmb3JlTm9kZShOb2RlKiBub2RlKQogVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3NpdGlvbkFmdGVyTm9kZShOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKLSAg
ICBpZiAobm9kZS0+Y2hpbGROb2RlQ291bnQoKSkKKyAgICBpZiAobm9kZS0+aGFzQ2hpbGROb2Rl
cygpKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGxhc3RQb3NpdGlvbkluT3JBZnRl
ck5vZGUobm9kZSksIERPV05TVFJFQU0pOwogICAgIEFTU0VSVChub2RlLT5wYXJlbnROb2RlKCkp
OwogICAgIEFTU0VSVCghbm9kZS0+cGFyZW50Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggYWY3ZmY0ZTdlMmU2YjRmNmJjMDU1ZDM0OTAxNjdk
MmExZTgwNWExZC4uN2E4NjQ0ZmRkZjkyZDcwMzQwMGIxOWM2N2E0NDY1NjMxZjhjMzlkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
SFRNTEJvZHlFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxU
YWJsZUVsZW1lbnQuaCIKQEAgLTM5OCw3ICszOTksNyBAQCBOb2RlKiBTdHlsZWRNYXJrdXBBY2N1
bXVsYXRvcjo6dHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6YXRpb24oTm9kZSogc3RhcnROb2RlLCBO
bwogICAgICAgICAgICAgICAgIGFwcGVuZFN0YXJ0VGFnKCpuKTsKIAogICAgICAgICAgICAgLy8g
SWYgbm9kZSBoYXMgbm8gY2hpbGRyZW4sIGNsb3NlIHRoZSB0YWcgbm93LgotICAgICAgICAgICAg
aWYgKCFuLT5jaGlsZE5vZGVDb3VudCgpKSB7CisgICAgICAgICAgICBpZiAoIW4tPmhhc0NoaWxk
Tm9kZXMoKSkgewogICAgICAgICAgICAgICAgIGlmIChzaG91bGRFbWl0KQogICAgICAgICAgICAg
ICAgICAgICBhcHBlbmRFbmRUYWcoKm4pOwogICAgICAgICAgICAgICAgIGxhc3RDbG9zZWQgPSBu
OwpAQCAtNzQwLDE1ICs3NDEsMjAgQEAgc3RhdGljIHZvaWQgZmlsbENvbnRhaW5lckZyb21TdHJp
bmcoQ29udGFpbmVyTm9kZSogcGFyYWdyYXBoLCBjb25zdCBTdHJpbmcmIHN0cmkKICAgICB9CiB9
CiAKLWJvb2wgaXNQbGFpblRleHRNYXJrdXAoTm9kZSAqbm9kZSkKK2Jvb2wgaXNQbGFpblRleHRN
YXJrdXAoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSB8fCAh
bm9kZS0+aGFzVGFnTmFtZShkaXZUYWcpIHx8IHRvRWxlbWVudChub2RlKS0+aGFzQXR0cmlidXRl
cygpKQorICAgIGlmICghaXNIVE1MRGl2RWxlbWVudChub2RlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgSFRNTERpdkVsZW1lbnQmIGRpdiA9IHRvSFRNTERpdkVsZW1lbnQoKm5vZGUp
OworICAgIGlmIChkaXYuaGFzQXR0cmlidXRlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgCi0gICAgaWYgKG5vZGUtPmNoaWxkTm9kZUNvdW50KCkgPT0gMSAmJiAobm9kZS0+Zmlyc3RD
aGlsZCgpLT5pc1RleHROb2RlKCkgfHwgKG5vZGUtPmZpcnN0Q2hpbGQoKS0+Zmlyc3RDaGlsZCgp
KSkpCisgICAgaWYgKGRpdi5oYXNPbmVDaGlsZCgpICYmIChkaXYuZmlyc3RDaGlsZCgpLT5pc1Rl
eHROb2RlKCkgfHwgZGl2LmZpcnN0Q2hpbGQoKS0+Zmlyc3RDaGlsZCgpKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgCi0gICAgcmV0dXJuIChub2RlLT5jaGlsZE5vZGVDb3VudCgpID09IDIg
JiYgaXNUYWJTcGFuVGV4dE5vZGUobm9kZS0+Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxkKCkpICYm
IG5vZGUtPmZpcnN0Q2hpbGQoKS0+bmV4dFNpYmxpbmcoKS0+aXNUZXh0Tm9kZSgpKTsKKyAgICAv
LyBGSVhNRTogSXQgaXMgaW5lZmZpY2llbnQgdG8gY2FsbCBjb3VudENoaWxkTm9kZXMoKSBqdXN0
IHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBleGFjdGx5IDIgY2hpbGRyZW4uCisgICAgcmV0dXJuIGRp
di5jb3VudENoaWxkTm9kZXMoKSA9PSAyICYmIGlzVGFiU3BhblRleHROb2RlKGRpdi5maXJzdENo
aWxkKCktPmZpcnN0Q2hpbGQoKSkgJiYgZGl2LmZpcnN0Q2hpbGQoKS0+bmV4dFNpYmxpbmcoKS0+
aXNUZXh0Tm9kZSgpOwogfQogCiBzdGF0aWMgYm9vbCBjb250ZXh0UHJlc2VydmVzTmV3bGluZShj
b25zdCBSYW5nZSYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERpdkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaAppbmRl
eCBmZjgxYjliODJjYWJmNzZmMWRlMjA0N2Q0ZjU4MTFjNWRhYzViZjBlLi4xYjVkMjBhZDg4MjNm
ZjFmY2FjMzFlZGViNjg4ZTRiZThiODgyNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEaXZFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxl
bWVudC5oCkBAIC00MCw2ICs0MCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbGxl
Y3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwogfTsK
IAorTk9ERV9UWVBFX0NBU1RTKEhUTUxEaXZFbGVtZW50KQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBIVE1MRGl2RWxlbWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDU4MGUxNGQ3MzRhOWIxNDIyODJkZjcyMDhhNzkzMGQ4
OWY1NDRkYzIuLjMwZTNkNDZkZDYzZGM3ZjE0ZTgzNjMwNjIxM2Q0NWVlZTYxMGNjN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCkBAIC04MSwxNCArODEsMTIg
QEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcgJnZhbHVlKQog
ewogICAgIFJlZjxIVE1MU2NyaXB0RWxlbWVudD4gcHJvdGVjdEZyb21NdXRhdGlvbkV2ZW50cygq
dGhpcyk7CiAKLSAgICBpbnQgbnVtQ2hpbGRyZW4gPSBjaGlsZE5vZGVDb3VudCgpOwotCi0gICAg
aWYgKG51bUNoaWxkcmVuID09IDEgJiYgZmlyc3RDaGlsZCgpLT5pc1RleHROb2RlKCkpIHsKKyAg
ICBpZiAoaGFzT25lQ2hpbGQoKSAmJiBmaXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKSkgewogICAg
ICAgICB0b1RleHQoZmlyc3RDaGlsZCgpKS0+c2V0RGF0YSh2YWx1ZSwgSUdOT1JFX0VYQ0VQVElP
Tik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobnVtQ2hpbGRyZW4gPiAwKQor
ICAgIGlmIChoYXNDaGlsZE5vZGVzKCkpCiAgICAgICAgIHJlbW92ZUNoaWxkcmVuKCk7CiAKICAg
ICBhcHBlbmRDaGlsZChkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKHZhbHVlLmltcGwoKSksIElH
Tk9SRV9FWENFUFRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFn
TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgppbmRleCA3NGQ0
YjFjOWUzMWQ3MzQ1NWZlYTIwYzM1NWZlMDY3NTM1MmNhZDI2Li5lY2EyNWVlMzAyZjYxYzllMDNi
YjQ2Yjk2ZjZkNzEyODNlOWQ5MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWdOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgpA
QCAtMzgsNyArMzgsNyBAQCBkZWwgaW50ZXJmYWNlTmFtZT1IVE1MTW9kRWxlbWVudAogZGV0YWls
cyBjb25kaXRpb25hbD1ERVRBSUxTX0VMRU1FTlQsIGdlbmVyYXRlVHlwZUhlbHBlcnMgCiBkZm4g
aW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAogZGlyIGludGVyZmFjZU5hbWU9SFRNTERpcmVjdG9y
eUVsZW1lbnQKLWRpdgorZGl2IGdlbmVyYXRlVHlwZUhlbHBlcnMKIGRsIGludGVyZmFjZU5hbWU9
SFRNTERMaXN0RWxlbWVudAogZHQgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAogZW0gaW50ZXJm
YWNlTmFtZT1IVE1MRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGl0bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5j
cHAKaW5kZXggMTRhZWUzN2QyMTBkZDFmYjFhNjA5OGE2MTY5ZGVkZjlmNDI0YWNmNy4uMDBlNjdi
MzJlMTAyYjE0YzkyMzViMWMwYjg2YmQ3OWJmM2Y3YTA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUaXRsZUVsZW1lbnQuY3BwCkBAIC05NiwxMCArOTYsOCBAQCBTdHJpbmdXaXRoRGlyZWN0
aW9uIEhUTUxUaXRsZUVsZW1lbnQ6OnRleHRXaXRoRGlyZWN0aW9uKCkKIHZvaWQgSFRNTFRpdGxl
RWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcgJnZhbHVlKQogewogICAgIFJlZjxIVE1MVGl0
bGVFbGVtZW50PiBwcm90ZWN0RnJvbU11dGF0aW9uRXZlbnRzKCp0aGlzKTsKLQotICAgIGludCBu
dW1DaGlsZHJlbiA9IGNoaWxkTm9kZUNvdW50KCk7CiAgICAgCi0gICAgaWYgKG51bUNoaWxkcmVu
ID09IDEgJiYgZmlyc3RDaGlsZCgpLT5pc1RleHROb2RlKCkpCisgICAgaWYgKGhhc09uZUNoaWxk
KCkgJiYgZmlyc3RDaGlsZCgpLT5pc1RleHROb2RlKCkpCiAgICAgICAgIHRvVGV4dChmaXJzdENo
aWxkKCkpLT5zZXREYXRhKHZhbHVlLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICBlbHNlIHsKICAg
ICAgICAgLy8gV2UgbWFrZSBhIGNvcHkgaGVyZSBiZWNhdXNlIGVudGl0eSBvZiAidmFsdWUiIGFy
Z3VtZW50IGNhbiBiZSBEb2N1bWVudDo6bV90aXRsZSwKQEAgLTEwNyw3ICsxMDUsNyBAQCB2b2lk
IEhUTUxUaXRsZUVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nICZ2YWx1ZSkKICAgICAgICAg
Ly8gd2hpY2ggY2F1c2VzIEhUTUxUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpLCB3aGlj
aCBlbmRzIHVwIERvY3VtZW50OjpzZXRUaXRsZSgpLgogICAgICAgICBTdHJpbmcgdmFsdWVDb3B5
KHZhbHVlKTsKIAotICAgICAgICBpZiAobnVtQ2hpbGRyZW4gPiAwKQorICAgICAgICBpZiAoaGFz
Q2hpbGROb2RlcygpKQogICAgICAgICAgICAgcmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAgICAgICBh
cHBlbmRDaGlsZChkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKHZhbHVlQ29weS5pbXBsKCkpLCBJ
R05PUkVfRVhDRVBUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCBiMDlmMzhhM2MyMjI2ODEyNTM0NjAyZThkODRi
MmNiYTZiNzc3ZWEzLi44MTAzNTgxMDUwNGM5YWRjNGI1YTdhMGU2NDU5YWU4Y2Q3Mzc2YmMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMu
aCIKIAogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgorI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgpAQCAtMjk2LDIwICsy
OTcsMTYgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+
IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWwKIAogdm9pZCBNZWRpYUNvbnRyb2xUaW1l
bGluZUNvbnRhaW5lckVsZW1lbnQ6OnNldFRpbWVEaXNwbGF5c0hpZGRlbihib29sIGhpZGRlbikK
IHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hpbGROb2RlQ291bnQoKTsgKytpKSB7
Ci0gICAgICAgIE5vZGUqIGNoaWxkID0gY2hpbGROb2RlKGkpOwotICAgICAgICBpZiAoIWNoaWxk
IHx8ICFjaGlsZC0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQoY2hpbGQpOwotICAgICAgICBpZiAoZWxl
bWVudC0+c2hhZG93UHNldWRvSWQoKSAhPSBnZXRNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlz
cGxheUVsZW1lbnRTaGFkb3dQc2V1ZG9JZCgpCi0gICAgICAgICAgICAmJiBlbGVtZW50LT5zaGFk
b3dQc2V1ZG9JZCgpICE9IGdldE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnRT
aGFkb3dQc2V1ZG9JZCgpKQorICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBl
PEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAoZWxlbWVudC5zaGFkb3dQc2V1ZG9JZCgp
ICE9IGdldE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudFNoYWRvd1BzZXVk
b0lkKCkKKyAgICAgICAgICAgICYmIGVsZW1lbnQuc2hhZG93UHNldWRvSWQoKSAhPSBnZXRNZWRp
YUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50U2hhZG93UHNldWRvSWQoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVu
dCogdGltZURpc3BsYXkgPSBzdGF0aWNfY2FzdDxNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1l
bnQqPihlbGVtZW50KTsKKyAgICAgICAgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50JiB0
aW1lRGlzcGxheSA9IHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudCY+
KGVsZW1lbnQpOwogICAgICAgICBpZiAoaGlkZGVuKQotICAgICAgICAgICAgdGltZURpc3BsYXkt
PmhpZGUoKTsKKyAgICAgICAgICAgIHRpbWVEaXNwbGF5LmhpZGUoKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgdGltZURpc3BsYXktPnNob3coKTsKKyAgICAgICAgICAgIHRpbWVEaXNwbGF5
LnNob3coKTsKICAgICB9CiB9CiAKQEAgLTExNTIsNyArMTE0OSw3IEBAIHZvaWQgTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlRGlzcGxheSgpCiAgICAgLy8gd2Ug
d2lzaCB0byByZW5kZXIgKGUuZy4sIHdlIGFyZSBhZGRpbmcgYW5vdGhlciBjdWUgaW4gYSBzZXQg
b2Ygcm9sbC11cAogICAgIC8vIGN1ZXMpLCByZW1vdmUgYWxsIHRoZSBleGlzdGluZyBDU1MgYm94
ZXMgcmVwcmVzZW50aW5nIHRoZSBjdWVzIGFuZCByZS1hZGQKICAgICAvLyB0aGVtIHNvIHRoYXQg
dGhlIG5ldyBjdWUgaXMgYXQgdGhlIGJvdHRvbS4KLSAgICBpZiAoY2hpbGROb2RlQ291bnQoKSA8
IGFjdGl2ZUN1ZXMuc2l6ZSgpKQorICAgIGlmIChjb3VudENoaWxkTm9kZXMoKSA8IGFjdGl2ZUN1
ZXMuc2l6ZSgpKQogICAgICAgICByZW1vdmVDaGlsZHJlbigpOwogCiAgICAgLy8gU29ydCB0aGUg
YWN0aXZlIGN1ZXMgZm9yIHRoZSBhcHByb3ByaWF0ZSBkaXNwbGF5IG9yZGVyLiBGb3IgZXhhbXBs
ZSwgZm9yIHJvbGwtdXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRU
UmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcAppbmRl
eCAwNzI3MGMyYjdiYmE0NmY3NGI1MzMzOGUxMmQ4MDU2Yjg0MmQwY2Q4Li5kZDlkMTRkMGZmN2Q2
NTA5ZmU0MDE4NDUzYTAxYzRhYzg5OWU4MDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
VFRSZWdpb24uY3BwCkBAIC0zNiw2ICszNiw3IEBACiAKICNpbmNsdWRlICJDbGllbnRSZWN0Lmgi
CiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCisjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0
b3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJI
VE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTM2MSw3ICszNjIsNyBA
QCB2b2lkIFZUVFJlZ2lvbjo6ZGlzcGxheUxhc3RUZXh0VHJhY2tDdWVCb3goKQogICAgIEFTU0VS
VChtX2N1ZUNvbnRhaW5lcik7CiAKICAgICAvLyBUaGUgY29udGFpbmVyIG5lZWRzIHRvIGJlIHJl
bmRlcmVkLCBpZiBpdCBpcyBub3QgZW1wdHkgYW5kIHRoZSByZWdpb24gaXMgbm90IGN1cnJlbnRs
eSBzY3JvbGxpbmcuCi0gICAgaWYgKCFtX2N1ZUNvbnRhaW5lci0+cmVuZGVyZXIoKSB8fCAhbV9j
dWVDb250YWluZXItPmNoaWxkTm9kZUNvdW50KCkgfHwgbV9zY3JvbGxUaW1lci5pc0FjdGl2ZSgp
KQorICAgIGlmICghbV9jdWVDb250YWluZXItPnJlbmRlcmVyKCkgfHwgIW1fY3VlQ29udGFpbmVy
LT5oYXNDaGlsZE5vZGVzKCkgfHwgbV9zY3JvbGxUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBJZiBpdCdzIGEgc2Nyb2xsaW5nIHJlZ2lvbiwgYWRkIHRoZSBzY3Jv
bGxpbmcgY2xhc3MuCkBAIC0zNzEsOSArMzcyLDExIEBAIHZvaWQgVlRUUmVnaW9uOjpkaXNwbGF5
TGFzdFRleHRUcmFja0N1ZUJveCgpCiAgICAgZmxvYXQgcmVnaW9uQm90dG9tID0gbV9yZWdpb25E
aXNwbGF5VHJlZS0+Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCktPmJvdHRvbSgpOwogCiAgICAgLy8g
RmluZCBmaXJzdCBjdWUgdGhhdCBpcyBub3QgZW50aXJlbHkgZGlzcGxheWVkIGFuZCBzY3JvbGwg
aXQgdXB3YXJkcy4KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY3VlQ29udGFpbmVyLT5j
aGlsZE5vZGVDb3VudCgpICYmICFtX3Njcm9sbFRpbWVyLmlzQWN0aXZlKCk7ICsraSkgewotICAg
ICAgICBmbG9hdCBjaGlsZFRvcCA9IHN0YXRpY19jYXN0PEhUTUxEaXZFbGVtZW50Kj4obV9jdWVD
b250YWluZXItPmNoaWxkTm9kZShpKSktPmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLT50b3AoKTsK
LSAgICAgICAgZmxvYXQgY2hpbGRCb3R0b20gPSBzdGF0aWNfY2FzdDxIVE1MRGl2RWxlbWVudCo+
KG1fY3VlQ29udGFpbmVyLT5jaGlsZE5vZGUoaSkpLT5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS0+
Ym90dG9tKCk7CisgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+
KCptX2N1ZUNvbnRhaW5lcikpIHsKKyAgICAgICAgaWYgKG1fc2Nyb2xsVGltZXIuaXNBY3RpdmUo
KSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBmbG9hdCBjaGlsZFRvcCA9IGNoaWxkLmdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpLT50b3AoKTsKKyAgICAgICAgZmxvYXQgY2hpbGRCb3R0b20g
PSBjaGlsZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS0+Ym90dG9tKCk7CiAKICAgICAgICAgaWYg
KHJlZ2lvbkJvdHRvbSA+PSBjaGlsZEJvdHRvbSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCmluZGV4IDE4Y2JhODgwY2Q3Y2M4NTU3ZjI1NGZk
YzM2OTI4ZmJjZjU0MGJhNmMuLjczZDk3OTU5ZGNmMjJjY2ZlY2M5M2FhNzViZDE4NWY2Y2ZmOTIw
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKQEAgLTMzNyw3ICszMzcsNyBA
QCB2b2lkIERPTVNlbGVjdGlvbjo6ZXh0ZW5kKE5vZGUqIG5vZGUsIGludCBvZmZzZXQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG9mZnNldCA8
IDAgfHwgb2Zmc2V0ID4gKG5vZGUtPm9mZnNldEluQ2hhcmFjdGVycygpID8gY2FyZXRNYXhPZmZz
ZXQobm9kZSkgOiAoaW50KW5vZGUtPmNoaWxkTm9kZUNvdW50KCkpKSB7CisgICAgaWYgKG9mZnNl
dCA8IDAgfHwgb2Zmc2V0ID4gKG5vZGUtPm9mZnNldEluQ2hhcmFjdGVycygpID8gY2FyZXRNYXhP
ZmZzZXQobm9kZSkgOiBzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmNvdW50Q2hpbGROb2RlcygpKSkp
IHsKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTQ4MSw3ICs0ODEsNyBAQCB2b2lkIERPTVNlbGVjdGlvbjo6c2VsZWN0QWxsQ2hpbGRyZW4o
Tm9kZSogbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRo
aXMgZG9lc24ndCAoYW5kIHNob3VsZG4ndCkgc2VsZWN0IHRleHQgbm9kZSBjaGFyYWN0ZXJzLgot
ICAgIHNldEJhc2VBbmRFeHRlbnQobiwgMCwgbiwgbi0+Y2hpbGROb2RlQ291bnQoKSwgZWMpOwor
ICAgIHNldEJhc2VBbmRFeHRlbnQobiwgMCwgbiwgbi0+Y291bnRDaGlsZE5vZGVzKCksIGVjKTsK
IH0KIAogU3RyaW5nIERPTVNlbGVjdGlvbjo6dG9TdHJpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAwNzIzZmQ3Yzc3NGMwM2ViYWFkMzU5N2UxMjBm
ODUyYzFkZDA3Y2QxLi43ZDE0NTY2MjhlMzRiMmJhYjI5MTQ2MzBlMGUzMjUyOTUxMDI5MTA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMjM4MCw3ICsy
MzgwLDcgQEAgaW50IFJlbmRlck9iamVjdDo6Y2FyZXRNaW5PZmZzZXQoKSBjb25zdAogaW50IFJl
bmRlck9iamVjdDo6Y2FyZXRNYXhPZmZzZXQoKSBjb25zdAogewogICAgIGlmIChpc1JlcGxhY2Vk
KCkpCi0gICAgICAgIHJldHVybiBub2RlKCkgPyBzdGQ6Om1heCgxVSwgbm9kZSgpLT5jaGlsZE5v
ZGVDb3VudCgpKSA6IDE7CisgICAgICAgIHJldHVybiBub2RlKCkgPyBzdGQ6Om1heCgxVSwgbm9k
ZSgpLT5jb3VudENoaWxkTm9kZXMoKSkgOiAxOwogICAgIGlmIChpc0hSKCkpCiAgICAgICAgIHJl
dHVybiAxOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5jcHAKaW5kZXggNDVlMTcxYTY0ZThkNjA2ZTRjY2RlZjQxMWJmOWU5MjlmOGU3YTcx
NC4uYTgyNzZkNzNjYmViYTVjNmFkMDQ4NGYxMDFjOWEzM2IxYmE4ZTliNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAg
Ym9vbCBSZW5kZXJSZXBsYWNlZDo6aXNTZWxlY3RlZCgpIGNvbnN0CiAgICAgaWYgKHMgPT0gU2Vs
ZWN0aW9uU3RhcnQpCiAgICAgICAgIHJldHVybiBzZWxlY3Rpb25TdGFydCA9PSAwOwogICAgICAg
ICAKLSAgICBpbnQgZW5kID0gZWxlbWVudCgpLT5oYXNDaGlsZE5vZGVzKCkgPyBlbGVtZW50KCkt
PmNoaWxkTm9kZUNvdW50KCkgOiAxOworICAgIGludCBlbmQgPSBlbGVtZW50KCktPmhhc0NoaWxk
Tm9kZXMoKSA/IGVsZW1lbnQoKS0+Y291bnRDaGlsZE5vZGVzKCkgOiAxOwogICAgIGlmIChzID09
IFNlbGVjdGlvbkVuZCkKICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbkVuZCA9PSBlbmQ7CiAgICAg
aWYgKHMgPT0gU2VsZWN0aW9uQm90aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcAppbmRleCA1OTY5ZWI0MzYxNjQ2OWMyY2QwZTJhOGQxYTBhZjk5ZmZhMDM5ZDYxLi42MGM3
M2E0YzRiYzEwNTVkMTQ3OTJmZjc5Y2E4ZmMzMDQyYjBhNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC05MDUsNyArOTA1LDcgQEAgdm9pZCBSZW5kZXJWaWV3
OjpzcGxpdFNlbGVjdGlvbkJldHdlZW5TdWJ0cmVlcyhSZW5kZXJPYmplY3QqIHN0YXJ0LCBpbnQg
c3RhcnRQb3MKICAgICAgICAgICAgIGlmIChub2RlID09IGVuZE5vZGUpCiAgICAgICAgICAgICAg
ICAgc2VsZWN0aW9uRGF0YS5zZXRTZWxlY3Rpb25FbmRQb3MoZW5kUG9zKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBzZWxlY3Rpb25EYXRhLnNldFNlbGVjdGlvbkVuZFBvcyhu
b2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSA/IG5vZGUtPm1heENoYXJhY3Rlck9mZnNldCgpIDog
bm9kZS0+Y2hpbGROb2RlQ291bnQoKSk7CisgICAgICAgICAgICAgICAgc2VsZWN0aW9uRGF0YS5z
ZXRTZWxlY3Rpb25FbmRQb3Mobm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkgPyBub2RlLT5tYXhD
aGFyYWN0ZXJPZmZzZXQoKSA6IG5vZGUtPmNvdW50Q2hpbGROb2RlcygpKTsKIAogICAgICAgICAg
ICAgcmVuZGVyU3VidHJlZXNNYXAuc2V0KCZyb290LCBzZWxlY3Rpb25EYXRhKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggZjllYWM4OWEz
MjdiZDBjM2E1ZmRiMzhkMTgxZGNmNjFkODA5ZmQ2Mi4uNTMyZGNjYzcwM2YxNTZiYjA2NWRmZmVk
ZjlkZWM1OTVkODM2MmVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCkBAIC02Njg2LDcgKzY2ODYsNyBAQCBzdGF0aWMgQ0dJbWFnZVJlZiBzZWxlY3Rpb25JbWFn
ZShGcmFtZSogZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCiAgICAgTlNBdHRyaWJ1dGVkU3Ry
aW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW3NlbGYgX2F0dHJpYnV0ZVN0cmluZ0Zyb21ET01SYW5n
ZTpbZG9jdW1lbnQgX2RvY3VtZW50UmFuZ2VdXTsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcp
IHsKICAgICAgICAgRG9jdW1lbnQqIGNvcmVEb2N1bWVudCA9IGNvcmUoZG9jdW1lbnQpOwotICAg
ICAgICBhdHRyaWJ1dGVkU3RyaW5nID0gZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2Uo
KlJhbmdlOjpjcmVhdGUoKmNvcmVEb2N1bWVudCwgY29yZURvY3VtZW50LCAwLCBjb3JlRG9jdW1l
bnQsIGNvcmVEb2N1bWVudC0+Y2hpbGROb2RlQ291bnQoKSkpOworICAgICAgICBhdHRyaWJ1dGVk
U3RyaW5nID0gZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UoKlJhbmdlOjpjcmVhdGUo
KmNvcmVEb2N1bWVudCwgY29yZURvY3VtZW50LCAwLCBjb3JlRG9jdW1lbnQsIGNvcmVEb2N1bWVu
dC0+Y291bnRDaGlsZE5vZGVzKCkpKTsKICAgICB9CiAgICAgcmV0dXJuIGF0dHJpYnV0ZWRTdHJp
bmc7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XZWJQYWdlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJQYWdlQ29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggNGVmZWM1ODkzM2Q2OTBkMWI3Yzg4ZTdmZWVkMDQ3
MTJlZDgyNTZlNC4uNjgwM2FlMjM1NzlkNTU3MDg4ODE1ZTdhMzYyMmNlNjI3Y2U0MzY3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViUGFnZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlBhZ2VDb29yZGluYXRl
ZEdyYXBoaWNzLmNwcApAQCAtNjQsOSArNjQsOSBAQCB2b2lkIFdlYlBhZ2U6OmZpbmRab29tYWJs
ZUFyZWFGb3JQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0IEludFNpemUmIGFyZQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIENhbmRpZGF0ZSBmb3VuZCwgYW5kIGl0
IGlzIGEgYmV0dGVyIGNhbmRpZGF0ZSB0aGFuIGl0cyBwYXJlbnQuCi0gICAgICAgIC8vIE5COiBB
IHBhcmVudCBpcyBjb25zaWRlcmVkIGEgYmV0dGVyIGNhbmRpZGF0ZSBpZmYgdGhlIG5vZGUgaXMK
KyAgICAgICAgLy8gTkI6IEEgcGFyZW50IGlzIGNvbnNpZGVyZWQgYSBiZXR0ZXIgY2FuZGlkYXRl
IGlmIHRoZSBub2RlIGlzCiAgICAgICAgIC8vIGNvbnRhaW5lZCBieSBpdCBhbmQgaXQgaXMgdGhl
IG9ubHkgY2hpbGQuCi0gICAgICAgIGlmIChmb3VuZCAmJiAoIW5vZGUtPnBhcmVudE5vZGUoKSB8
fCBub2RlLT5wYXJlbnROb2RlKCktPmNoaWxkTm9kZUNvdW50KCkgIT0gMSkpCisgICAgICAgIGlm
IChmb3VuZCAmJiAoIW5vZGUtPnBhcmVudE5vZGUoKSB8fCAhbm9kZS0+cGFyZW50Tm9kZSgpLT5o
YXNPbmVDaGlsZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgbm9kZSA9IG5vZGUt
PnBhcmVudE5vZGUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238077</attachid>
            <date>2014-09-12 16:50:33 -0700</date>
            <delta_ts>2014-09-13 20:56:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136789-20140912165031.patch</filename>
            <type>text/plain</type>
            <size>40432</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTI4NzNiYTJhZjBkN2I2
ZWY0OWU5ZDkzYjZlZmIwMDQ3ZjMxNzU3ZS4uOGU5ZWVkYjVkNDgzYWQzNjQ3NWZlOGZhZmZlZmQx
YjA2NzJhMDc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNiBAQAorMjAxNC0wOS0xMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBOb2RlOjpjaGls
ZE5vZGVDb3VudCgpIHRvIGNvdW50Q2hpbGROb2RlcygpIGFuZCBhdm9pZCBpbmVmZmljaWVudCB1
c2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY3
ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5h
bWUgTm9kZTo6Y2hpbGROb2RlQ291bnQoKSB0byBjb3VudENoaWxkTm9kZXMoKSB0byBtYWtlIGl0
IGNsZWFyZXIKKyAgICAgICAgdGhhdCB0aGUgbWV0aG9kIGFjdHVhbGx5IGNvbXB1dGVzIHRoZSBy
ZXN1bHQgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGEKKyAgICAgICAgY2FjaGVkIHZhbHVlLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VzIGEgbmV3IE5vZGU6Omhhc09uZUNoaWxk
KCkgbWV0aG9kIHRoYXQgaXMKKyAgICAgICAgdXNlZCB0byBjaGVjayBpZiBhIE5vZGUgaGFzIGEg
c2luZ2xlIGNoaWxkLiBUaGlzIGlzIG11Y2ggbW9yZSBlZmZpY2llbnQKKyAgICAgICAgdGhhbiBj
YWxsaW5nIGNvdW50Q2hpbGROb2RlcygpID09IDEuCisKKyAgICAgICAgVGhlIHBhdGNoIGFsc28g
bGV2ZXJhZ2VzIE5vZGU6Omhhc0NoaWxkTm9kZXMoKSBpbiBhIGxvdCBvZiBwbGFjZXMKKyAgICAg
ICAgaW5zdGVhZCBvZiBjYWxsaW5nIGNvdW50Q2hpbGROb2RlcygpLgorCisgICAgICAgIEZpbmFs
bHksIGluIGEgY291cGxlIG9mIHBsYWNlcywgd2Ugbm93IHVzZSBjaGlsZHJlbk9mVHlwZSgpIHRv
IGl0ZXJhdGUKKyAgICAgICAgb3ZlciBjaGlsZHJlbiBtb3JlIGVmZmljaWVudCB0aGFuIHVzaW5n
IGNvdW50Q2hpbGROb2RlcygpIGFuZAorICAgICAgICBjaGlsZE5vZGUoaW5kZXgpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogV2ViQ29y
ZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS5vcmRlcjoKKyAgICAgICAgVXBkYXRlIHRoZSBu
YW1lIG9mIHRoZSBleHBvc2VkIHN5bWJvbCBmb3IgY291bnRDaGlsZE5vZGVzKCkuCisKKyAgICAg
ICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpyZW1vdmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpj
b3VudENoaWxkTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6Y2hpbGRO
b2RlQ291bnQpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgY2hpbGROb2RlQ291bnQoKSB0byBj
b3VudENoaWxkTm9kZXMoKSB0byBtYWtlIGl0IG9idmlvdXMgaXQgaXMKKyAgICAgICAgY29tcHV0
aW5nIHRoZSByZXN1bHQgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGEgY2FjaGVkIHZhbHVlLgorCisg
ICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6Omhhc09uZUNoaWxkKToKKyAgICAgICAgSW50cm9kdWNlIGFuIGVmZmljaWVudCB3YXkg
dG8gY2hlY2sgaW4gYSBDb250YWluZXJOb2RlIGhhcyBhIHNpbmdsZQorICAgICAgICBjaGlsZCBh
cyAiY291bnRDaGlsZE5vZGVzKCkgPT0gMSIgY2FsbHMgd2VyZSBmcmVxdWVudCBhbmQgaW5lZmZp
Y2llbnQuCisKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNvdW50Q2hpbGROb2Rlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpjaGlsZE5vZGVDb3VudCk6IERlbGV0ZWQuCisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgUmVuYW1lIGNoaWxkTm9kZUNvdW50KCkgdG8gY291bnRDaGls
ZE5vZGVzKCkuCisKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UG9zaXRpb246OnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCk6CisgICAgICAgICogZG9tL1Bv
c2l0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpsYXN0T2Zmc2V0SW5Ob2RlKToKKyAgICAgICAg
KiBkb20vUmFuZ2UuY3BwOgorICAgICAgICBNZWNoYW5pY2FsIHJlbmFtaW5nLgorCisgICAgICAg
IChXZWJDb3JlOjpsZW5ndGhPZkNvbnRlbnRzSW5Ob2RlKToKKyAgICAgICAgKiBlZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5k
OjphcHBseUlubGluZVN0eWxlVG9Ob2RlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlT
dHlsZUNvbW1hbmQ6OnNob3VsZEFwcGx5SW5saW5lU3R5bGVUb1J1bik6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24pOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6Om1lcmdlRW5kV2l0aE5leHRJZklkZW50
aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVT
dHlsZUNoYW5nZSk6CisgICAgICAgIENhbGwgaGFzQ2hpbGROb2RlcygpIHJhdGhlciB0aGFuIGNv
dW50Q2hpbGROb2RlcygpIGFzIGl0IGlzIGEgbG90IG1vcmUKKyAgICAgICAgZWZmaWNpZW50Lgor
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpzZXRUZXh0QXNDaGlsZE9mRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJh
bmdlT2ZTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb3VudE1hdGNoZXNGb3JU
ZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lU2VsZWN0aW9uOjplbGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rp
b24pOgorICAgICAgICBNZWNoYW5pY2FsIHJlbmFtaW5nLgorCisgICAgICAgICogZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6aW5zZXJ0QXNMaXN0SXRlbXMpOgorICAgICAgICBDYWxsIGhhc09uZUNo
aWxkKCkgaW5zdGVhZCBvZiBjb3VudENoaWxkTm9kZXMoKSA9PSAxLiBBbHNvIHJlbW92ZQorICAg
ICAgICByZWR1bmRhbnQgbGlzdEVsZW1lbnQtPmhhc0NoaWxkTm9kZXMoKSBjaGVjayBhcyBoYXNP
bmVDaGlsZCgpIHRha2VzCisgICAgICAgIGNhcmUgb2YgdGhpcyBhbHJlYWR5LgorCisgICAgICAg
ICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmll
ZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcik6
CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZW5kT2ZEb2N1bWVudCk6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpsYXN0T2Zmc2V0Rm9yRWRpdGluZyk6CisgICAgICAgIE1lY2hhbmljYWwg
cmVuYW1pbmcuCisKKyAgICAgICAgKFdlYkNvcmU6OnZpc2libGVQb3NpdGlvbkJlZm9yZU5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6dmlzaWJsZVBvc2l0aW9uQWZ0ZXJOb2RlKToKKyAgICAgICAg
Q2FsbCBoYXNDaGlsZE5vZGVzKCkgaW5zdGVhZCBvZiBjb252ZXJ0aW5nIGNvdW50Q2hpbGROb2Rl
cygpIHRvIGEKKyAgICAgICAgYm9vbGVhbi4KKworICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0cmF2ZXJzZU5v
ZGVzRm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIENhbGwgIWhhc0NoaWxkTm9kZXMoKSBpbnN0
ZWFkIG9mICFjb3VudENoaWxkTm9kZXMoKS4KKworICAgICAgICAoV2ViQ29yZTo6aXNQbGFpblRl
eHRNYXJrdXApOgorICAgICAgICAtIERyb3AgIW5vZGUtPmlzRWxlbWVudE5vZGUoKSBjaGVjayBh
cyAhbm9kZS0+aGFzVGFnTmFtZShkaXZUYWcpIHRha2VzCisgICAgICAgICAgY2FyZSBvZiBkaXNj
YXJkaW5nIG5vbi1FbGVtZW50IE5vZGVzIGFscmVhZHkuCisgICAgICAgIC0gQ2FzdCB0aGUgTm9k
ZSB0byBhbiBIVE1MRGl2RWxlbWVudCBhcyBzb29uIGFzIHBvc3NpYmxlIHRvIGF2b2lkCisgICAg
ICAgICAgY2FsbGluZyBjYWxsaW5nIHRoZSBzbG93ZXIgTm9kZSBBUElzIGluIHNldmVyYWwgY2Fz
ZXMuCisgICAgICAgIC0gQ2FsbCBoYXNPbmVDaGlsZCgpIGluc3RlYWQgb2YgY291bnRDaGlsZE5v
ZGVzKCkgPT0gMS4KKworICAgICAgICAqIGh0bWwvSFRNTERpdkVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxUYWdOYW1lcy5pbjoKKyAgICAgICAgR2VuZXJhdGUgY2FzdGluZyBoZWxwZXJz
IGFzIEkgdXNlIHRoZW0gaW4gV2ViQ29yZTo6aXNQbGFpblRleHRNYXJrdXAoKS4KKworICAgICAg
ICAqIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNj
cmlwdEVsZW1lbnQ6OnNldFRleHQpOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50OjpzZXRUZXh0KToKKyAgICAg
ICAgQ2FsbCBoYXNPbmVDaGlsZCgpIC8gaGFzQ2hpbGROb2RlcygpIGluc3RlYWQgb2YgY291bnRD
aGlsZE5vZGVzKCkuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVs
ZW1lbnQ6OnNldFRpbWVEaXNwbGF5c0hpZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KToKKyAgICAgICAg
VXNlIGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCkgdG8gaXRlcmF0ZSBvZiBjaGlsZCBFbGVtZW50
cyBpbnN0ZWFkIG9mCisgICAgICAgIHNsb3dlciBjaGlsZE5vZGVDb3VudCgpICsgY2hpbGROb2Rl
KGluZGV4KSArIGlzRWxlbWVudE5vZGUoKS4gQWxzbywKKyAgICAgICAgY2hpbGROb2RlQ291bnQo
KSB3YXMgbm90IGV2ZW4gY2FjaGVkIGJlZm9yZSB0aGUgbG9vcC4KKworICAgICAgICAqIGh0bWwv
dHJhY2svVlRUUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6ZGlzcGxh
eUxhc3RUZXh0VHJhY2tDdWVCb3gpOgorICAgICAgICBVc2UgY2hpbGRyZW5PZlR5cGU8RWxlbWVu
dD4oKSB0byBpdGVyYXRlIG9mIGNoaWxkIEVsZW1lbnRzLCB0aHVzCisgICAgICAgIGF2b2lkaW5n
IGNhbGxpbmcgY2hpbGROb2RlQ291bnQoKSArIGNoaWxkTm9kZShpbmRleCkuCisKKyAgICAgICAg
KiBwYWdlL0RPTVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246
OmV4dGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OnNlbGVjdEFsbENoaWxk
cmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6Y2FyZXRNYXhPZmZzZXQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6
aXNTZWxlY3RlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c3BsaXRTZWxlY3Rpb25CZXR3ZWVuU3VidHJlZXMpOgor
ICAgICAgICBNZWNoYW5pY2FsIHJlbmFtaW5nLgorCiAyMDE0LTA5LTEyICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxNzM0
NDEpOiBbR1RLXSBBbGwgYnV0dG9ucyBhcHBlYXIgaW5zZW5zaXRpdmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpp
bmRleCBkZWE0ZWE0MjE4MjljZGY5YTZlNTc5NmE3MjY3ZDAwYTI4NjI0NjI1Li4zZDdmNDAyNWIz
Y2Q3MWUwNjY3ZTM2NzNjNGVjMTY0NzRlZjhiYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTQtMDktMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW5hbWUgTm9kZTo6Y2hpbGROb2RlQ291bnQoKSB0byBjb3VudENoaWxkTm9kZXMo
KSBhbmQgYXZvaWQgaW5lZmZpY2llbnQgdXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2Nzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIGNoaWxkTm9kZUNvdW50KCkgdG8gY291bnRDaGls
ZE5vZGVzKCkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJIVE1MVmlldyBhdHRyaWJ1dGVkU3RyaW5nXSk6CisKIDIwMTQtMDktMTEgIEJlYXIgVHJh
dmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgRm9udCBMb2FkaW5nXSBF
bmFibGUgQ1NTIEZvbnQgTG9hZGluZyBvbiBNYWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3ZjcyMzc5NTc3MzZk
MWMwMjc3NmEyMjg3YTY2YjgwOGRkMjA1ZDY0Li4wZGNkYzIzNDk2Yzk5NWI5N2VhODVjMzU4M2Q2
YTI1ZDM3OTkxMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTQtMDktMTIgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9kZTo6Y2hp
bGROb2RlQ291bnQoKSB0byBjb3VudENoaWxkTm9kZXMoKSBhbmQgYXZvaWQgaW5lZmZpY2llbnQg
dXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2
Nzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXZv
aWQgY2FsbGluZyBzbG93IE5vZGU6OmNvdW50Q2hpbGROb2RlcygpLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViUGFnZUNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmaW5kWm9vbWFibGVBcmVhRm9y
UG9pbnQpOgorICAgICAgICBSZXBsYWNlIGNhbGwgdG8gIm5vZGUtPnBhcmVudE5vZGUoKS0+Y2hp
bGROb2RlQ291bnQoKSAhPSAxIiBieQorICAgICAgICAiIW5vZGUtPnBhcmVudE5vZGUoKS0+aGFz
T25lQ2hpbGQoKSIgd2hpY2ggaXMgZXF1aXZhbGVudCBidXQgbW9yZQorICAgICAgICBlZmZpY2ll
bnQuCisKIDIwMTQtMDktMTEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtXZWJLaXQyXSBXS0ltYWdlQ3JlYXRlQ0dJbWFnZSBjcmFzaGVzIHdoZW4gcGFzc2VkIGEg
bnVsbCBXS0ltYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDhkMWZkNDA2ZmZkYzRmOTVjYmUw
MGJmYmZjZmFlZjUyZThjODJhODkuLjk0ZDliNTM5ZWQ0MWNmZGI1MTc3MTRkMTQwOGIwMmM0NDVj
NjNhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNjI1LDcgKzE2MjUsNyBAQCBfX1pOSzdX
ZWJDb3JlMTJTaGFyZWRCdWZmZXI0c2l6ZUV2CiBfX1pOSzdXZWJDb3JlMTJUZXh0RW5jb2Rpbmc2
ZGVjb2RlRVBLY21iUmIKIF9fWk5LN1dlYkNvcmUxMlRleHRJdGVyYXRvcjRub2RlRXYKIF9fWk5L
N1dlYkNvcmUxMlRleHRJdGVyYXRvcjVyYW5nZUV2Ci1fX1pOSzdXZWJDb3JlMTNDb250YWluZXJO
b2RlMTRjaGlsZE5vZGVDb3VudEV2CitfX1pOSzdXZWJDb3JlMTNDb250YWluZXJOb2RlMTVjb3Vu
dENoaWxkTm9kZXNFdgogX19aTks3V2ViQ29yZTEzQ29udGFpbmVyTm9kZTljaGlsZE5vZGVFagog
X19aTks3V2ViQ29yZTEzR3JhcGhpY3NMYXllcjE4YWNjdW11bGF0ZWRPcGFjaXR5RXYKIF9fWk5L
N1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXIxOGdldERlYnVnQm9yZGVySW5mb0VSTlNfNUNvbG9yRVJm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5vcmRlcgppbmRleCBhMzYwMDJhYTFlZTAyZjkyNmY2ZTE4YjA5OTY2MjBiNmMy
MzNkYTE5Li4wYjE3Nzk2MDIxNmEyZTNkNGU4MWQwY2I1MWNlNWQ3Njg4YjQyODQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUub3JkZXIKQEAgLTExNjIyLDcgKzExNjIyLDcgQEAgX19aTjdXZWJDb3JlMjFqc0hUTUxN
ZXRhRWxlbWVudE5hbWVFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFTlMwXzEyUHJvcGVy
dHkKIF9fWk43V2ViQ29yZTI0anNIVE1MTWV0YUVsZW1lbnRDb250ZW50RVBOM0pTQzlFeGVjU3Rh
dGVFTlMwXzdKU1ZhbHVlRU5TMF8xMlByb3BlcnR5TmFtZUUKIF9fWk43V2ViQ29yZTI2c2V0SlNI
VE1MU2NyaXB0RWxlbWVudFRleHRFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMwXzhKU09iamVjdEVOUzBf
N0pTVmFsdWVFCiBfX1pON1dlYkNvcmUxN0hUTUxTY3JpcHRFbGVtZW50N3NldFRleHRFUktOM1dU
RjZTdHJpbmdFCi1fX1pOSzdXZWJDb3JlMTNDb250YWluZXJOb2RlMTRjaGlsZE5vZGVDb3VudEV2
CitfX1pOSzdXZWJDb3JlMTNDb250YWluZXJOb2RlMTVjb3VudENoaWxkTm9kZXNFdgogX19aTjdX
ZWJDb3JlMjBqc0hUTUxMaW5rRWxlbWVudFJlbEVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1
ZUVOUzBfMTJQcm9wZXJ0eU5hbWVFCiBfX1pON1dlYkNvcmUyMWpzSFRNTExpbmtFbGVtZW50SHJl
ZkVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVOUzBfMTJQcm9wZXJ0eU5hbWVFCiBfX1pO
N1dlYkNvcmUxM05vZGVUcmF2ZXJzYWwzNW5leHRJbmNsdWRpbmdQc2V1ZG9Ta2lwcGluZ0NoaWxk
cmVuRVBLTlNfNE5vZGVFUzNfCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXgg
MWIxMTQwMmJhZjIxNzJhNWVmZTZhZmNhNGI3M2JlN2Q5NWQ0ZGM1Mi4uNmRiMTA0OTM0ZWRmNWFh
MzhkYTE1NTk0ZDIyMjRjYmRmNGZjNjM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcApAQCAtNjUzLDcgKzY1Myw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRy
ZW4oKQogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3Bl
bmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgICAgICB7CiAgICAgICAgICAgICBOb0V2ZW50
RGlzcGF0Y2hBc3NlcnRpb24gYXNzZXJ0Tm9FdmVudERpc3BhdGNoOwotICAgICAgICAgICAgcmVt
b3ZlZENoaWxkcmVuLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2hpbGROb2RlQ291bnQoKSk7Cisg
ICAgICAgICAgICByZW1vdmVkQ2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudENo
aWxkTm9kZXMoKSk7CiAgICAgICAgICAgICB3aGlsZSAoUmVmUHRyPE5vZGU+IG4gPSBtX2ZpcnN0
Q2hpbGQpIHsKICAgICAgICAgICAgICAgICByZW1vdmVkQ2hpbGRyZW4uYXBwZW5kKCptX2ZpcnN0
Q2hpbGQpOwogICAgICAgICAgICAgICAgIHJlbW92ZUJldHdlZW4oMCwgbV9maXJzdENoaWxkLT5u
ZXh0U2libGluZygpLCAqbV9maXJzdENoaWxkKTsKQEAgLTkzMSwxMiArOTMxLDExIEBAIExheW91
dFJlY3QgQ29udGFpbmVyTm9kZTo6Ym91bmRpbmdCb3goKSBjb25zdAogICAgIHJldHVybiBlbmNs
b3NpbmdMYXlvdXRSZWN0KEZsb2F0UmVjdCh1cHBlckxlZnQsIGxvd2VyUmlnaHQuZXhwYW5kZWRU
byh1cHBlckxlZnQpIC0gdXBwZXJMZWZ0KSk7CiB9CiAKLXVuc2lnbmVkIENvbnRhaW5lck5vZGU6
OmNoaWxkTm9kZUNvdW50KCkgY29uc3QKK3Vuc2lnbmVkIENvbnRhaW5lck5vZGU6OmNvdW50Q2hp
bGROb2RlcygpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgY291bnQgPSAwOwotICAgIE5vZGUgKm47
Ci0gICAgZm9yIChuID0gZmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkKLSAg
ICAgICAgY291bnQrKzsKKyAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBu
LT5uZXh0U2libGluZygpKQorICAgICAgICArK2NvdW50OwogICAgIHJldHVybiBjb3VudDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggNjM5ZWQyNDYwNDM4MGY0MjU1YjM4
NGQwMjg2NDc3OWNlYjlhYWQ0Yi4uNTEwZmEwNGExYWJmM2ZiNzU1NDNiMTBiNGIxNzNjNDc3ODZj
YjhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC04NywxMSArODcsMTIgQEAg
cHVibGljOgogICAgIHN0YXRpYyBwdHJkaWZmX3QgZmlyc3RDaGlsZE1lbW9yeU9mZnNldCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb250YWluZXJOb2RlLCBtX2ZpcnN0Q2hpbGQpOyB9CiAg
ICAgTm9kZSogbGFzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0Q2hpbGQ7IH0KICAgICBi
b29sIGhhc0NoaWxkTm9kZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0KKyAgICBi
b29sIGhhc09uZUNoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdENoaWxkICYmICFtX2ZpcnN0
Q2hpbGQtPm5leHRTaWJsaW5nKCk7IH0KIAogICAgIGJvb2wgZGlyZWN0Q2hpbGROZWVkc1N0eWxl
UmVjYWxjKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhEaXJlY3RDaGlsZE5lZWRzU3R5bGVSZWNh
bGNGbGFnKTsgfQogICAgIHZvaWQgc2V0RGlyZWN0Q2hpbGROZWVkc1N0eWxlUmVjYWxjKCkgeyBz
ZXRGbGFnKERpcmVjdENoaWxkTmVlZHNTdHlsZVJlY2FsY0ZsYWcpOyB9CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB1bnNpZ25lZCBjaGlsZE5vZGVDb3VudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHVuc2lnbmVkIGNvdW50Q2hpbGROb2RlcygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IE5vZGUqIGNoaWxkTm9kZSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKICAgICBib29sIGluc2Vy
dEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZXB0
aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKQEAgLTE4NCwxMSArMTg1LDExIEBAIGlu
bGluZSBDb250YWluZXJOb2RlOjpDb250YWluZXJOb2RlKERvY3VtZW50JiBkb2N1bWVudCwgQ29u
c3RydWN0aW9uVHlwZSB0eXBlKQogewogfQogCi1pbmxpbmUgdW5zaWduZWQgTm9kZTo6Y2hpbGRO
b2RlQ291bnQoKSBjb25zdAoraW5saW5lIHVuc2lnbmVkIE5vZGU6OmNvdW50Q2hpbGROb2Rlcygp
IGNvbnN0CiB7CiAgICAgaWYgKCFpc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgcmV0dXJuIHRvQ29udGFpbmVyTm9kZSh0aGlzKS0+Y2hpbGROb2RlQ291bnQoKTsKKyAg
ICByZXR1cm4gdG9Db250YWluZXJOb2RlKHRoaXMpLT5jb3VudENoaWxkTm9kZXMoKTsKIH0KIAog
aW5saW5lIE5vZGUqIE5vZGU6OmNoaWxkTm9kZSh1bnNpZ25lZCBpbmRleCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCmluZGV4IGViYmQ4YTkwYjMwZjIwYThhMDQ5YjJhZmYyZGVhNDUwNmI5MzM4YjUuLmY0Nzdm
ZjNhMGEyZDgxODJmNDEwYjU1NmJkZmY3YjYzOTQ1NjczNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNDE2
LDcgKzQxNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzUmVhZE9ubHlOb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbm9kZVR5cGUoKSA9PSBFTlRJVFlfUkVGRVJFTkNFX05PREU7IH0KICAgICBib29sIGlz
RG9jdW1lbnRUeXBlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRf
VFlQRV9OT0RFOyB9CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdW5zaWduZWQgY2hpbGROb2RlQ291bnQoKSBj
b25zdDsKKyAgICB1bnNpZ25lZCBjb3VudENoaWxkTm9kZXMoKSBjb25zdDsKICAgICBOb2RlKiBj
aGlsZE5vZGUodW5zaWduZWQgaW5kZXgpIGNvbnN0OwogCiAgICAgdm9pZCBjaGVja1NldFByZWZp
eChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5jcHAKaW5kZXggM2FkOGVkYWU3ZDlmM2U5OGJjM2ZiZGNhZmJhNGQzOGUyZGZkM2Q2
Yy4uZjJjNjkxZTNiMGJjNTBhMzcwOWY1MTJlM2QyZjczMTFmOGIyNzA5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb24uY3BwCkBAIC0yMjYsNyArMjI2LDcgQEAgUG9zaXRpb24gUG9zaXRpb246OnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpIGNvbnN0CiAgICAgfQogCiAgICAgaWYgKCFtX2FuY2hvck5v
ZGUtPm9mZnNldEluQ2hhcmFjdGVycygpCi0gICAgICAgICYmIChtX2FuY2hvclR5cGUgPT0gUG9z
aXRpb25Jc0FmdGVyQW5jaG9yIHx8IG1fYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzQWZ0ZXJDaGls
ZHJlbiB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQpID09IG1fYW5jaG9yTm9kZS0+
Y2hpbGROb2RlQ291bnQoKSkKKyAgICAgICAgJiYgKG1fYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklz
QWZ0ZXJBbmNob3IgfHwgbV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckNoaWxkcmVuIHx8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCkgPT0gbV9hbmNob3JOb2RlLT5jb3VudENo
aWxkTm9kZXMoKSkKICAgICAgICAgJiYgKGVkaXRpbmdJZ25vcmVzQ29udGVudChtX2FuY2hvck5v
ZGUuZ2V0KCkpIHx8IGlzUmVuZGVyZWRUYWJsZShtX2FuY2hvck5vZGUuZ2V0KCkpKQogICAgICAg
ICAmJiBjb250YWluZXJOb2RlKCkpIHsKICAgICAgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRB
ZnRlck5vZGUobV9hbmNob3JOb2RlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5kZXggMjk4
MTE3ZjA1ZGU3NGI2MzhiMjkzMmY3YTYxZjViYmM1MDEzYTYxNi4uNTFiZjQ3MjYyYmIzOTVmNjU5
NTIxYzIyNzY3ZTZiYjA4NGE5MDFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTI5NywxMCAr
Mjk3LDEwIEBAIGlubGluZSBQb3NpdGlvbiBwb3NpdGlvbkFmdGVyTm9kZShOb2RlKiBhbmNob3JO
b2RlKQogCiBpbmxpbmUgaW50IGxhc3RPZmZzZXRJbk5vZGUoTm9kZSogbm9kZSkKIHsKLSAgICBy
ZXR1cm4gbm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkgPyBub2RlLT5tYXhDaGFyYWN0ZXJPZmZz
ZXQoKSA6IHN0YXRpY19jYXN0PGludD4obm9kZS0+Y2hpbGROb2RlQ291bnQoKSk7CisgICAgcmV0
dXJuIG5vZGUtPm9mZnNldEluQ2hhcmFjdGVycygpID8gbm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0
KCkgOiBzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmNvdW50Q2hpbGROb2RlcygpKTsKIH0KIAotLy8g
Zmlyc3RQb3NpdGlvbkluTm9kZSBhbmQgbGFzdFBvc2l0aW9uSW5Ob2RlIHJldHVybiBwYXJlbnQt
YW5jaG9yZWQgcG9zaXRpb25zLCBsYXN0UG9zaXRpb25Jbk5vZGUgY29uc3RydWN0aW9uIGlzIE8o
bikgZHVlIHRvIGNoaWxkTm9kZUNvdW50KCkKKy8vIGZpcnN0UG9zaXRpb25Jbk5vZGUgYW5kIGxh
c3RQb3NpdGlvbkluTm9kZSByZXR1cm4gcGFyZW50LWFuY2hvcmVkIHBvc2l0aW9ucywgbGFzdFBv
c2l0aW9uSW5Ob2RlIGNvbnN0cnVjdGlvbiBpcyBPKG4pIGR1ZSB0byBjb3VudENoaWxkTm9kZXMo
KQogaW5saW5lIFBvc2l0aW9uIGZpcnN0UG9zaXRpb25Jbk5vZGUoTm9kZSogYW5jaG9yTm9kZSkK
IHsKICAgICBpZiAoYW5jaG9yTm9kZS0+aXNUZXh0Tm9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5k
ZXggYjBiYzMyMDFkZmEwZTIyOTMwNDI3YjIxMTQ0ZjU4ZDg0M2VlM2YwOS4uZDY4NDg0ZmNmMTdj
Yjg3YzUxNDA5YzRjZGUxNzMxMWM5YTk4MGQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC02NzIs
NyArNjcyLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsZW5ndGhPZkNvbnRlbnRzSW5Ob2Rl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAg
IGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFD
RV9OT0RFOgotICAgICAgICByZXR1cm4gbm9kZS0+Y2hpbGROb2RlQ291bnQoKTsKKyAgICAgICAg
cmV0dXJuIG5vZGUtPmNvdW50Q2hpbGROb2RlcygpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0
eWxlQ29tbWFuZC5jcHAKaW5kZXggNTM4NGI2ZjI4MWNmNWQ0MGRhMWJhZmM0MjQ4ZDM3Y2Q3OWJk
YWYxZC4uNGQ2N2RjOTNjM2JlMjhlYWY5MzBiMjMxODE0ZTg2YzM0NWU4Yzg5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTc3Nyw3ICs3Nzcs
NyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlVG9Ob2RlUmFuZ2Uo
RWRpdGluZ1N0eWxlKiBzdHlsZSwgUGFzc1JlZgogICAgICAgICBpZiAoaXNCbG9jayhub2RlLmdl
dCgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKLSAgICAgICAgaWYgKG5vZGUt
PmNoaWxkTm9kZUNvdW50KCkpIHsKKyAgICAgICAgaWYgKG5vZGUtPmhhc0NoaWxkTm9kZXMoKSkg
ewogICAgICAgICAgICAgaWYgKG5vZGUtPmNvbnRhaW5zKHBhc3RFbmROb2RlLmdldCgpKSB8fCBj
b250YWluc05vbkVkaXRhYmxlUmVnaW9uKG5vZGUuZ2V0KCkpIHx8ICFub2RlLT5wYXJlbnROb2Rl
KCktPmhhc0VkaXRhYmxlU3R5bGUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIGlmIChlZGl0aW5nSWdub3Jlc0NvbnRlbnQobm9kZS5nZXQoKSkpIHsKQEAgLTgzNSw3
ICs4MzUsNyBAQCBib29sIEFwcGx5U3R5bGVDb21tYW5kOjpzaG91bGRBcHBseUlubGluZVN0eWxl
VG9SdW4oRWRpdGluZ1N0eWxlKiBzdHlsZSwgTm9kZSogcgogICAgIEFTU0VSVChzdHlsZSAmJiBy
dW5TdGFydCk7CiAKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBydW5TdGFydDsgbm9kZSAmJiBub2Rl
ICE9IHBhc3RFbmROb2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlKSkgewotICAg
ICAgICBpZiAobm9kZS0+Y2hpbGROb2RlQ291bnQoKSkKKyAgICAgICAgaWYgKG5vZGUtPmhhc0No
aWxkTm9kZXMoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAvLyBXZSBkb24ndCBj
b25zaWRlciBtX2lzSW5saW5lRWxlbWVudFRvUmVtb3ZlRnVuY3Rpb24gaGVyZSBiZWNhdXNlIHdl
IG5ldmVyIGFwcGx5IHN0eWxlIHdoZW4gbV9pc0lubGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9u
IGlzIHNwZWNpZmllZAogICAgICAgICBpZiAoIXN0eWxlLT5zdHlsZUlzUHJlc2VudEluQ29tcHV0
ZWRTdHlsZU9mTm9kZShub2RlKSkKQEAgLTEwMDcsNyArMTAwNyw3IEBAIHZvaWQgQXBwbHlTdHls
ZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGVUb1B1c2hEb3duKE5vZGUqIG5vZGUsIEVkaXRpbmdT
dHlsZSogc3R5CiAKICAgICAvLyBTaW5jZSBhZGRJbmxpbmVTdHlsZUlmTmVlZGVkIGNhbid0IGFk
ZCBzdHlsZXMgdG8gYmxvY2stZmxvdyByZW5kZXIgb2JqZWN0cywgYWRkIHN0eWxlIGF0dHJpYnV0
ZSBpbnN0ZWFkLgogICAgIC8vIEZJWE1FOiBhcHBseUlubGluZVN0eWxlVG9SYW5nZSBzaG91bGQg
YmUgdXNlZCBoZXJlIGluc3RlYWQuCi0gICAgaWYgKChub2RlLT5yZW5kZXJlcigpLT5pc1JlbmRl
ckJsb2NrRmxvdygpIHx8IG5vZGUtPmNoaWxkTm9kZUNvdW50KCkpICYmIG5vZGUtPmlzSFRNTEVs
ZW1lbnQoKSkgeworICAgIGlmICgobm9kZS0+cmVuZGVyZXIoKS0+aXNSZW5kZXJCbG9ja0Zsb3co
KSB8fCBub2RlLT5oYXNDaGlsZE5vZGVzKCkpICYmIG5vZGUtPmlzSFRNTEVsZW1lbnQoKSkgewog
ICAgICAgICBzZXROb2RlQXR0cmlidXRlKHRvSFRNTEVsZW1lbnQobm9kZSksIHN0eWxlQXR0ciwg
bmV3SW5saW5lU3R5bGUtPnN0eWxlKCktPmFzVGV4dCgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTEzMjUsNyArMTMyNSw3IEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6Om1lcmdlRW5k
V2l0aE5leHRJZklkZW50aWNhbChjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0CiAgICAgICAg
IG1lcmdlSWRlbnRpY2FsRWxlbWVudHMoZWxlbWVudCwgbmV4dEVsZW1lbnQpOwogCiAgICAgICAg
IGJvb2wgc2hvdWxkVXBkYXRlU3RhcnQgPSBzdGFydC5jb250YWluZXJOb2RlKCkgPT0gZW5kTm9k
ZTsKLSAgICAgICAgaW50IGVuZE9mZnNldCA9IG5leHRDaGlsZCA/IG5leHRDaGlsZC0+bm9kZUlu
ZGV4KCkgOiBuZXh0RWxlbWVudC0+Y2hpbGROb2RlQ291bnQoKTsKKyAgICAgICAgaW50IGVuZE9m
ZnNldCA9IG5leHRDaGlsZCA/IG5leHRDaGlsZC0+bm9kZUluZGV4KCkgOiBuZXh0RWxlbWVudC0+
Y291bnRDaGlsZE5vZGVzKCk7CiAgICAgICAgIHVwZGF0ZVN0YXJ0RW5kKHNob3VsZFVwZGF0ZVN0
YXJ0ID8gUG9zaXRpb24obmV4dEVsZW1lbnQsIHN0YXJ0Lm9mZnNldEluQ29udGFpbmVyTm9kZSgp
LCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKSA6IHN0YXJ0LAogICAgICAgICAg
ICAgICAgICAgICAgICBQb3NpdGlvbihuZXh0RWxlbWVudCwgZW5kT2Zmc2V0LCBQb3NpdGlvbjo6
UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQz
Myw3ICsxNDMzLDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZUNo
YW5nZShQYXNzUmVmUHRyPE5vZGU+IHBhc3NlZFN0YXJ0LCBQYXMKICAgICAgICAgaWYgKGNvbnRh
aW5lci0+aXNIVE1MRWxlbWVudCgpICYmIGNvbnRhaW5lci0+aGFzVGFnTmFtZShmb250VGFnKSkK
ICAgICAgICAgICAgIGZvbnRDb250YWluZXIgPSB0b0hUTUxFbGVtZW50KGNvbnRhaW5lcik7CiAg
ICAgICAgIGJvb2wgc3R5bGVDb250YWluZXJJc05vdFNwYW4gPSAhc3R5bGVDb250YWluZXIgfHwg
IXN0eWxlQ29udGFpbmVyLT5oYXNUYWdOYW1lKHNwYW5UYWcpOwotICAgICAgICBpZiAoY29udGFp
bmVyLT5pc0hUTUxFbGVtZW50KCkgJiYgKGNvbnRhaW5lci0+aGFzVGFnTmFtZShzcGFuVGFnKSB8
fCAoc3R5bGVDb250YWluZXJJc05vdFNwYW4gJiYgY29udGFpbmVyLT5jaGlsZE5vZGVDb3VudCgp
KSkpCisgICAgICAgIGlmIChjb250YWluZXItPmlzSFRNTEVsZW1lbnQoKSAmJiAoY29udGFpbmVy
LT5oYXNUYWdOYW1lKHNwYW5UYWcpIHx8IChzdHlsZUNvbnRhaW5lcklzTm90U3BhbiAmJiBjb250
YWluZXItPmhhc0NoaWxkTm9kZXMoKSkpKQogICAgICAgICAgICAgc3R5bGVDb250YWluZXIgPSB0
b0hUTUxFbGVtZW50KGNvbnRhaW5lcik7CiAgICAgICAgIGlmICghY29udGFpbmVyLT5maXJzdENo
aWxkKCkpCiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRl
eCBmNDEwNjViZjkzOTMxNTRjNmM5YWVhMjhhZjY1NmU5MWRmODQzN2ViLi44YzhkYWRjNGM2MTE3
MDZkNTljZDQwMDllODZiZDcwZmQ1MTE4MWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CkBAIC03MDQsNyArNzA0LDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBc0NoaWxkT2ZFbGVtZW50
KGNvbnN0IFN0cmluZyYgdGV4dCwgRWxlbWVudCogZWxlbSkKICAgICAvLyBzZXQgdGhlIHNlbGVj
dGlvbiB0byB0aGUgZW5kCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb247CiAKLSAgICBQ
b3NpdGlvbiBwb3MgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oZWxlbSwgZWxlbS0+Y2hp
bGROb2RlQ291bnQoKSk7CisgICAgUG9zaXRpb24gcG9zID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKGVsZW0sIGVsZW0tPmNvdW50Q2hpbGROb2RlcygpKTsKIAogICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlUG9zKHBvcywgVlBfREVGQVVMVF9BRkZJTklUWSk7CiAgICAgaWYgKHZpc2li
bGVQb3MuaXNOdWxsKCkpCkBAIC0zMTY4LDcgKzMxNjgsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBF
ZGl0b3I6OnJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFJhbmdlKiByZWZlcmVu
Y2VSYQogICAgIFJlZlB0cjxOb2RlPiBzaGFkb3dUcmVlUm9vdCA9IHJlZmVyZW5jZVJhbmdlICYm
IHJlZmVyZW5jZVJhbmdlLT5zdGFydENvbnRhaW5lcigpID8gcmVmZXJlbmNlUmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCktPm5vbkJvdW5kYXJ5U2hhZG93VHJlZVJvb3ROb2RlKCkgOiAwOwogICAgIGlm
IChzaGFkb3dUcmVlUm9vdCkgewogICAgICAgICBpZiAoZm9yd2FyZCkKLSAgICAgICAgICAgIHNl
YXJjaFJhbmdlLT5zZXRFbmQoc2hhZG93VHJlZVJvb3QuZ2V0KCksIHNoYWRvd1RyZWVSb290LT5j
aGlsZE5vZGVDb3VudCgpKTsKKyAgICAgICAgICAgIHNlYXJjaFJhbmdlLT5zZXRFbmQoc2hhZG93
VHJlZVJvb3QuZ2V0KCksIHNoYWRvd1RyZWVSb290LT5jb3VudENoaWxkTm9kZXMoKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHNlYXJjaFJhbmdlLT5zZXRTdGFydChzaGFkb3dUcmVlUm9v
dC5nZXQoKSwgMCk7CiAgICAgfQpAQCAtMzE4Niw3ICszMTg2LDcgQEAgUGFzc1JlZlB0cjxSYW5n
ZT4gRWRpdG9yOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmVm
ZXJlbmNlUmEKIAogICAgICAgICBpZiAoc2hhZG93VHJlZVJvb3QpIHsKICAgICAgICAgICAgIGlm
IChmb3J3YXJkKQotICAgICAgICAgICAgICAgIHNlYXJjaFJhbmdlLT5zZXRFbmQoc2hhZG93VHJl
ZVJvb3QuZ2V0KCksIHNoYWRvd1RyZWVSb290LT5jaGlsZE5vZGVDb3VudCgpKTsKKyAgICAgICAg
ICAgICAgICBzZWFyY2hSYW5nZS0+c2V0RW5kKHNoYWRvd1RyZWVSb290LmdldCgpLCBzaGFkb3dU
cmVlUm9vdC0+Y291bnRDaGlsZE5vZGVzKCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIHNlYXJjaFJhbmdlLT5zZXRTdGFydChzaGFkb3dUcmVlUm9vdC5nZXQoKSwgMCk7CiAg
ICAgICAgIH0KQEAgLTMyNzksNyArMzI3OSw3IEBAIHVuc2lnbmVkIEVkaXRvcjo6Y291bnRNYXRj
aGVzRm9yVGV4dChjb25zdCBTdHJpbmcmIHRhcmdldCwgUmFuZ2UqIHJhbmdlLCBGaW5kT3B0CiAK
ICAgICAgICAgTm9kZSogc2hhZG93VHJlZVJvb3QgPSBzZWFyY2hSYW5nZS0+c2hhZG93Um9vdCgp
OwogICAgICAgICBpZiAoc2VhcmNoUmFuZ2UtPmNvbGxhcHNlZChJR05PUkVfRVhDRVBUSU9OKSAm
JiBzaGFkb3dUcmVlUm9vdCkKLSAgICAgICAgICAgIHNlYXJjaFJhbmdlLT5zZXRFbmQoc2hhZG93
VHJlZVJvb3QsIHNoYWRvd1RyZWVSb290LT5jaGlsZE5vZGVDb3VudCgpLCBJR05PUkVfRVhDRVBU
SU9OKTsKKyAgICAgICAgICAgIHNlYXJjaFJhbmdlLT5zZXRFbmQoc2hhZG93VHJlZVJvb3QsIHNo
YWRvd1RyZWVSb290LT5jb3VudENoaWxkTm9kZXMoKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAg
fSB3aGlsZSAodHJ1ZSk7CiAKICAgICBpZiAobWFya01hdGNoZXMgfHwgbWF0Y2hlcykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCBmMGFjMjc5YTg3YzBm
N2IyNGU4M2FmNzVmZDUwYzY4MWQyMDc2MzZkLi43Yjg4MTUxYzMyYmY3MzQzNDVmMjM2OTYzNGVj
MjkwOGMxMjEwNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cApAQCAtMjE5Niw3ICsyMTk2LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gRnJhbWVTZWxlY3Rpb246
OmVsZW1lbnRSYW5nZUNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgUG9zaXRpb24gc3RhcnRQb3MgPSBjcmVhdGVMZWdhY3lFZGl0
aW5nUG9zaXRpb24oZWxlbWVudCwgMCk7Ci0gICAgUG9zaXRpb24gZW5kUG9zID0gY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKGVsZW1lbnQsIGVsZW1lbnQtPmNoaWxkTm9kZUNvdW50KCkpOwor
ICAgIFBvc2l0aW9uIGVuZFBvcyA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihlbGVtZW50
LCBlbGVtZW50LT5jb3VudENoaWxkTm9kZXMoKSk7CiAgICAgCiAgICAgVmlzaWJsZVBvc2l0aW9u
IHN0YXJ0VmlzaWJsZVBvcyhzdGFydFBvcywgVlBfREVGQVVMVF9BRkZJTklUWSk7CiAgICAgVmlz
aWJsZVBvc2l0aW9uIGVuZFZpc2libGVQb3MoZW5kUG9zLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAKaW5kZXggMGViODliYmViZmE5MWExMzRmMjcwODA4MTAwOGI4YjE5NTc1NzUwOC4uYjQ1YmU1
ZGI0NWNlNmI0ZTNmMTJiYjBlNzc1NWY3MTlhZTliZmU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTE0MzcsNyArMTQz
Nyw3IEBAIE5vZGUqIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjppbnNlcnRBc0xpc3RJdGVtcyhQ
YXNzUmVmUHRyPEhUTUxFbGVtZW50PiBwcnBMaXN0CiB7CiAgICAgUmVmUHRyPEhUTUxFbGVtZW50
PiBsaXN0RWxlbWVudCA9IHBycExpc3RFbGVtZW50OwogCi0gICAgd2hpbGUgKGxpc3RFbGVtZW50
LT5oYXNDaGlsZE5vZGVzKCkgJiYgaXNMaXN0RWxlbWVudChsaXN0RWxlbWVudC0+Zmlyc3RDaGls
ZCgpKSAmJiBsaXN0RWxlbWVudC0+Y2hpbGROb2RlQ291bnQoKSA9PSAxKQorICAgIHdoaWxlIChs
aXN0RWxlbWVudC0+aGFzT25lQ2hpbGQoKSAmJiBpc0xpc3RFbGVtZW50KGxpc3RFbGVtZW50LT5m
aXJzdENoaWxkKCkpKQogICAgICAgICBsaXN0RWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobGlzdEVs
ZW1lbnQtPmZpcnN0Q2hpbGQoKSk7CiAKICAgICBib29sIGlzU3RhcnQgPSBpc1N0YXJ0T2ZQYXJh
Z3JhcGgoaW5zZXJ0UG9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApp
bmRleCBmNDIyMTQ4YTc0ZmQzNjZhOTEwNzZiODlmNWFlMmE5YWYwMGViNDk5Li4wOTNjNTQ4ZjMy
MDI2Y2QzZDUxODYwNGQ5NDAwZjEzNTJmOTE2MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuY3BwCkBAIC0xMTQ2LDEzICsxMTQ2LDEzIEBAIFNpbXBsaWZpZWRCYWNrd2Fy
ZHNUZXh0SXRlcmF0b3I6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFu
Z2UmIHJhCiAgICAgaW50IGVuZE9mZnNldCA9IHJhbmdlLmVuZE9mZnNldCgpOwogCiAgICAgaWYg
KCFzdGFydE5vZGUtPm9mZnNldEluQ2hhcmFjdGVycygpKSB7Ci0gICAgICAgIGlmIChzdGFydE9m
ZnNldCA+PSAwICYmIHN0YXJ0T2Zmc2V0IDwgc3RhdGljX2Nhc3Q8aW50PihzdGFydE5vZGUtPmNo
aWxkTm9kZUNvdW50KCkpKSB7CisgICAgICAgIGlmIChzdGFydE9mZnNldCA+PSAwICYmIHN0YXJ0
T2Zmc2V0IDwgc3RhdGljX2Nhc3Q8aW50PihzdGFydE5vZGUtPmNvdW50Q2hpbGROb2RlcygpKSkg
ewogICAgICAgICAgICAgc3RhcnROb2RlID0gc3RhcnROb2RlLT5jaGlsZE5vZGUoc3RhcnRPZmZz
ZXQpOwogICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSAwOwogICAgICAgICB9CiAgICAgfQogICAg
IGlmICghZW5kTm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkpIHsKLSAgICAgICAgaWYgKGVuZE9m
ZnNldCA+IDAgJiYgZW5kT2Zmc2V0IDw9IHN0YXRpY19jYXN0PGludD4oZW5kTm9kZS0+Y2hpbGRO
b2RlQ291bnQoKSkpIHsKKyAgICAgICAgaWYgKGVuZE9mZnNldCA+IDAgJiYgZW5kT2Zmc2V0IDw9
IHN0YXRpY19jYXN0PGludD4oZW5kTm9kZS0+Y291bnRDaGlsZE5vZGVzKCkpKSB7CiAgICAgICAg
ICAgICBlbmROb2RlID0gZW5kTm9kZS0+Y2hpbGROb2RlKGVuZE9mZnNldCAtIDEpOwogICAgICAg
ICAgICAgZW5kT2Zmc2V0ID0gbGFzdE9mZnNldEluTm9kZShlbmROb2RlKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IDIwZjkzY2NmNTQ5YWFi
ODE3NjIyZGVhMmZhNzcxMDM5ZmQ3MDllM2QuLjY0Y2UzOTA1NGZkMmZmZmNlYTk0OWY2YmM3NzIz
MWQzMTgzNjMxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVu
aXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAg
LTEzNjQsNyArMTM2NCw3IEBAIFZpc2libGVQb3NpdGlvbiBlbmRPZkRvY3VtZW50KGNvbnN0IE5v
ZGUqIG5vZGUpCiAgICAgLy8gKEFzIGFib3ZlLCBpbiBzdGFydE9mRG9jdW1lbnQuKSAgVGhlIGNh
bm9uaWNhbGl6YXRpb24gY2FuIHJlamVjdCB2YWxpZCB2aXNpYmxlIHBvc2l0aW9ucwogICAgIC8v
IHdoZW4gZGVzY2VuZGluZyBmcm9tIHRoZSByb290IGVsZW1lbnQsIHNvIHdlIGNvbnN0cnVjdCB0
aGUgdmlzaWJsZSBwb3NpdGlvbiBkaXJlY3RseSBmcm9tIGEKICAgICAvLyB2YWxpZCBjYW5kaWRh
dGUuCi0gICAgUG9zaXRpb24gbGFzdFBvc2l0aW9uID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKG5vZGUtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCksIG5vZGUtPmRvY3VtZW50KCku
ZG9jdW1lbnRFbGVtZW50KCktPmNoaWxkTm9kZUNvdW50KCkpOworICAgIFBvc2l0aW9uIGxhc3RQ
b3NpdGlvbiA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLT5kb2N1bWVudCgpLmRv
Y3VtZW50RWxlbWVudCgpLCBub2RlLT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLT5jb3Vu
dENoaWxkTm9kZXMoKSk7CiAgICAgUG9zaXRpb24gbGFzdENhbmRpZGF0ZSA9IHByZXZpb3VzQ2Fu
ZGlkYXRlKGxhc3RQb3NpdGlvbik7CiAgICAgaWYgKGxhc3RDYW5kaWRhdGUuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1s
ZWRpdGluZy5jcHAKaW5kZXggNTU1ZDdlZWMwNzE5YmZlMDM4NDEzYjkxYjE0MTEwMWFiYTA3YTRl
Yy4uZTY0NWVjYWViNjYzN2UwYzcwMjE0NWY0YzZmZjc5OWI4ZGU3ODE1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCBpbnQgbGFzdE9m
ZnNldEZvckVkaXRpbmcoY29uc3QgTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIG5vZGUtPm1h
eENoYXJhY3Rlck9mZnNldCgpOwogCiAgICAgaWYgKG5vZGUtPmhhc0NoaWxkTm9kZXMoKSkKLSAg
ICAgICAgcmV0dXJuIG5vZGUtPmNoaWxkTm9kZUNvdW50KCk7CisgICAgICAgIHJldHVybiBub2Rl
LT5jb3VudENoaWxkTm9kZXMoKTsKIAogICAgIC8vIE5PVEU6IFRoaXMgc2hvdWxkIHByZWVtcHQg
dGhlIGNoaWxkTm9kZUNvdW50IGZvciwgZS5nLiwgc2VsZWN0IG5vZGVzCiAgICAgaWYgKGVkaXRp
bmdJZ25vcmVzQ29udGVudChub2RlKSkKQEAgLTUxMyw3ICs1MTMsNyBAQCBOb2RlKiBpc0xhc3RQ
b3NpdGlvbkJlZm9yZVRhYmxlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9u
KQogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkJlZm9yZU5vZGUoTm9kZSogbm9kZSkK
IHsKICAgICBBU1NFUlQobm9kZSk7Ci0gICAgaWYgKG5vZGUtPmNoaWxkTm9kZUNvdW50KCkpCisg
ICAgaWYgKG5vZGUtPmhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSksIERPV05TVFJFQU0pOwogICAg
IEFTU0VSVChub2RlLT5wYXJlbnROb2RlKCkpOwogICAgIEFTU0VSVCghbm9kZS0+cGFyZW50Tm9k
ZSgpLT5pc1NoYWRvd1Jvb3QoKSk7CkBAIC01MjQsNyArNTI0LDcgQEAgVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVQb3NpdGlvbkJlZm9yZU5vZGUoTm9kZSogbm9kZSkKIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlUG9zaXRpb25BZnRlck5vZGUoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSk7
Ci0gICAgaWYgKG5vZGUtPmNoaWxkTm9kZUNvdW50KCkpCisgICAgaWYgKG5vZGUtPmhhc0NoaWxk
Tm9kZXMoKSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihsYXN0UG9zaXRpb25Jbk9y
QWZ0ZXJOb2RlKG5vZGUpLCBET1dOU1RSRUFNKTsKICAgICBBU1NFUlQobm9kZS0+cGFyZW50Tm9k
ZSgpKTsKICAgICBBU1NFUlQoIW5vZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IGFmN2ZmNGU3ZTJlNmI0ZjZiYzA1NWQzNDkw
MTY3ZDJhMWU4MDVhMWQuLjdhODY0NGZkZGY5MmQ3MDM0MDBiMTljNjdhNDQ2NTYzMWY4YzM5ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJI
VE1MVGFibGVFbGVtZW50LmgiCkBAIC0zOTgsNyArMzk5LDcgQEAgTm9kZSogU3R5bGVkTWFya3Vw
QWNjdW11bGF0b3I6OnRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9uKE5vZGUqIHN0YXJ0Tm9k
ZSwgTm8KICAgICAgICAgICAgICAgICBhcHBlbmRTdGFydFRhZygqbik7CiAKICAgICAgICAgICAg
IC8vIElmIG5vZGUgaGFzIG5vIGNoaWxkcmVuLCBjbG9zZSB0aGUgdGFnIG5vdy4KLSAgICAgICAg
ICAgIGlmICghbi0+Y2hpbGROb2RlQ291bnQoKSkgeworICAgICAgICAgICAgaWYgKCFuLT5oYXND
aGlsZE5vZGVzKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKICAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kRW5kVGFnKCpuKTsKICAgICAgICAgICAgICAgICBsYXN0Q2xvc2Vk
ID0gbjsKQEAgLTc0MCwxNSArNzQxLDIwIEBAIHN0YXRpYyB2b2lkIGZpbGxDb250YWluZXJGcm9t
U3RyaW5nKENvbnRhaW5lck5vZGUqIHBhcmFncmFwaCwgY29uc3QgU3RyaW5nJiBzdHJpCiAgICAg
fQogfQogCi1ib29sIGlzUGxhaW5UZXh0TWFya3VwKE5vZGUgKm5vZGUpCitib29sIGlzUGxhaW5U
ZXh0TWFya3VwKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkg
fHwgIW5vZGUtPmhhc1RhZ05hbWUoZGl2VGFnKSB8fCB0b0VsZW1lbnQobm9kZSktPmhhc0F0dHJp
YnV0ZXMoKSkKKyAgICBpZiAoIWlzSFRNTERpdkVsZW1lbnQobm9kZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIEhUTUxEaXZFbGVtZW50JiBkaXYgPSB0b0hUTUxEaXZFbGVtZW50KCpu
b2RlKTsKKyAgICBpZiAoZGl2Lmhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAotICAgIGlmIChub2RlLT5jaGlsZE5vZGVDb3VudCgpID09IDEgJiYgKG5vZGUtPmZp
cnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpIHx8IChub2RlLT5maXJzdENoaWxkKCktPmZpcnN0Q2hp
bGQoKSkpKQorICAgIGlmIChkaXYuaGFzT25lQ2hpbGQoKSAmJiAoZGl2LmZpcnN0Q2hpbGQoKS0+
aXNUZXh0Tm9kZSgpIHx8IGRpdi5maXJzdENoaWxkKCktPmZpcnN0Q2hpbGQoKSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIAotICAgIHJldHVybiAobm9kZS0+Y2hpbGROb2RlQ291bnQoKSA9
PSAyICYmIGlzVGFiU3BhblRleHROb2RlKG5vZGUtPmZpcnN0Q2hpbGQoKS0+Zmlyc3RDaGlsZCgp
KSAmJiBub2RlLT5maXJzdENoaWxkKCktPm5leHRTaWJsaW5nKCktPmlzVGV4dE5vZGUoKSk7Cisg
ICAgLy8gRklYTUU6IEl0IGlzIGluZWZmaWNpZW50IHRvIGNhbGwgY291bnRDaGlsZE5vZGVzKCkg
anVzdCB0byBjaGVjayBpZiB0aGVyZSBhcmUgZXhhY3RseSAyIGNoaWxkcmVuLgorICAgIHJldHVy
biBkaXYuY291bnRDaGlsZE5vZGVzKCkgPT0gMiAmJiBpc1RhYlNwYW5UZXh0Tm9kZShkaXYuZmly
c3RDaGlsZCgpLT5maXJzdENoaWxkKCkpICYmIGRpdi5maXJzdENoaWxkKCktPm5leHRTaWJsaW5n
KCktPmlzVGV4dE5vZGUoKTsKIH0KIAogc3RhdGljIGJvb2wgY29udGV4dFByZXNlcnZlc05ld2xp
bmUoY29uc3QgUmFuZ2UmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEaXZFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmgK
aW5kZXggZmY4MWI5YjgyY2FiZjc2ZjFkZTIwNDdkNGY1ODExYzVkYWM1YmYwZS4uMWI1ZDIwYWQ4
ODIzZmYxZmNhYzMxZWRlYjY4OGU0YmU4Yjg4MjQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGl2RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERp
dkVsZW1lbnQuaApAQCAtNDAsNiArNDAsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBj
b2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsK
IH07CiAKK05PREVfVFlQRV9DQVNUUyhIVE1MRGl2RWxlbWVudCkKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gSFRNTERpdkVsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTY3JpcHRFbGVtZW50LmNwcAppbmRleCA1ODBlMTRkNzM0YTliMTQyMjgyZGY3MjA4YTc5
MzBkODlmNTQ0ZGMyLi4zMGUzZDQ2ZGQ2M2RjN2YxNGU4MzYzMDYyMTNkNDVlZWU2MTBjYzdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcApAQCAtODEsMTQgKzgx
LDEyIEBAIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nICZ2YWx1
ZSkKIHsKICAgICBSZWY8SFRNTFNjcmlwdEVsZW1lbnQ+IHByb3RlY3RGcm9tTXV0YXRpb25FdmVu
dHMoKnRoaXMpOwogCi0gICAgaW50IG51bUNoaWxkcmVuID0gY2hpbGROb2RlQ291bnQoKTsKLQot
ICAgIGlmIChudW1DaGlsZHJlbiA9PSAxICYmIGZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKSB7
CisgICAgaWYgKGhhc09uZUNoaWxkKCkgJiYgZmlyc3RDaGlsZCgpLT5pc1RleHROb2RlKCkpIHsK
ICAgICAgICAgdG9UZXh0KGZpcnN0Q2hpbGQoKSktPnNldERhdGEodmFsdWUsIElHTk9SRV9FWENF
UFRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG51bUNoaWxkcmVuID4g
MCkKKyAgICBpZiAoaGFzQ2hpbGROb2RlcygpKQogICAgICAgICByZW1vdmVDaGlsZHJlbigpOwog
CiAgICAgYXBwZW5kQ2hpbGQoZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9kZSh2YWx1ZS5pbXBsKCkp
LCBJR05PUkVfRVhDRVBUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhZ05hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4KaW5kZXgg
NzRkNGIxYzllMzFkNzM0NTVmZWEyMGMzNTVmZTA2NzUzNTJjYWQyNi4uZWNhMjVlZTMwMmY2MWM5
ZTAzYmI0NmI5NmY2ZDcxMjgzZTlkOTM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFnTmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMu
aW4KQEAgLTM4LDcgKzM4LDcgQEAgZGVsIGludGVyZmFjZU5hbWU9SFRNTE1vZEVsZW1lbnQKIGRl
dGFpbHMgY29uZGl0aW9uYWw9REVUQUlMU19FTEVNRU5ULCBnZW5lcmF0ZVR5cGVIZWxwZXJzIAog
ZGZuIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIGRpciBpbnRlcmZhY2VOYW1lPUhUTUxEaXJl
Y3RvcnlFbGVtZW50Ci1kaXYKK2RpdiBnZW5lcmF0ZVR5cGVIZWxwZXJzCiBkbCBpbnRlcmZhY2VO
YW1lPUhUTUxETGlzdEVsZW1lbnQKIGR0IGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIGVtIGlu
dGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRpdGxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1l
bnQuY3BwCmluZGV4IDE0YWVlMzdkMjEwZGQxZmIxYTYwOThhNjE2OWRlZGY5ZjQyNGFjZjcuLjAw
ZTY3YjMyZTEwMmIxNGM5MjM1YjFjMGI4NmJkNzliZjNmN2EwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcApAQCAtOTYsMTAgKzk2LDggQEAgU3RyaW5nV2l0aERp
cmVjdGlvbiBIVE1MVGl0bGVFbGVtZW50Ojp0ZXh0V2l0aERpcmVjdGlvbigpCiB2b2lkIEhUTUxU
aXRsZUVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nICZ2YWx1ZSkKIHsKICAgICBSZWY8SFRN
TFRpdGxlRWxlbWVudD4gcHJvdGVjdEZyb21NdXRhdGlvbkV2ZW50cygqdGhpcyk7Ci0KLSAgICBp
bnQgbnVtQ2hpbGRyZW4gPSBjaGlsZE5vZGVDb3VudCgpOwogICAgIAotICAgIGlmIChudW1DaGls
ZHJlbiA9PSAxICYmIGZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKQorICAgIGlmIChoYXNPbmVD
aGlsZCgpICYmIGZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKQogICAgICAgICB0b1RleHQoZmly
c3RDaGlsZCgpKS0+c2V0RGF0YSh2YWx1ZSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgZWxzZSB7
CiAgICAgICAgIC8vIFdlIG1ha2UgYSBjb3B5IGhlcmUgYmVjYXVzZSBlbnRpdHkgb2YgInZhbHVl
IiBhcmd1bWVudCBjYW4gYmUgRG9jdW1lbnQ6Om1fdGl0bGUsCkBAIC0xMDcsNyArMTA1LDcgQEAg
dm9pZCBIVE1MVGl0bGVFbGVtZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyAmdmFsdWUpCiAgICAg
ICAgIC8vIHdoaWNoIGNhdXNlcyBIVE1MVGl0bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoKSwg
d2hpY2ggZW5kcyB1cCBEb2N1bWVudDo6c2V0VGl0bGUoKS4KICAgICAgICAgU3RyaW5nIHZhbHVl
Q29weSh2YWx1ZSk7CiAKLSAgICAgICAgaWYgKG51bUNoaWxkcmVuID4gMCkKKyAgICAgICAgaWYg
KGhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgICAgIHJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAg
ICAgYXBwZW5kQ2hpbGQoZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9kZSh2YWx1ZUNvcHkuaW1wbCgp
KSwgSUdOT1JFX0VYQ0VQVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggYjA5ZjM4YTNjMjIyNjgxMjUzNDYwMmU4
ZDg0YjJjYmE2Yjc3N2VhMy4uODEwMzU4MTA1MDRjOWFkYzRiNWE3YTBlNjQ1OWFlOGNkNzM3NmJj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1l
bnRzLmgiCiAKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKKyNpbmNsdWRlICJFbGVtZW50Q2hp
bGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKQEAgLTI5Niwy
MCArMjk3LDE2IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVt
ZW50PiBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsCiAKIHZvaWQgTWVkaWFDb250cm9s
VGltZWxpbmVDb250YWluZXJFbGVtZW50OjpzZXRUaW1lRGlzcGxheXNIaWRkZW4oYm9vbCBoaWRk
ZW4pCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkTm9kZUNvdW50KCk7ICsr
aSkgewotICAgICAgICBOb2RlKiBjaGlsZCA9IGNoaWxkTm9kZShpKTsKLSAgICAgICAgaWYgKCFj
aGlsZCB8fCAhY2hpbGQtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KGNoaWxkKTsKLSAgICAgICAgaWYg
KGVsZW1lbnQtPnNoYWRvd1BzZXVkb0lkKCkgIT0gZ2V0TWVkaWFDb250cm9sVGltZVJlbWFpbmlu
Z0Rpc3BsYXlFbGVtZW50U2hhZG93UHNldWRvSWQoKQotICAgICAgICAgICAgJiYgZWxlbWVudC0+
c2hhZG93UHNldWRvSWQoKSAhPSBnZXRNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVt
ZW50U2hhZG93UHNldWRvSWQoKSkKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBjaGlsZHJlbk9m
VHlwZTxFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuc2hhZG93UHNldWRv
SWQoKSAhPSBnZXRNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnRTaGFkb3dQ
c2V1ZG9JZCgpCisgICAgICAgICAgICAmJiBlbGVtZW50LnNoYWRvd1BzZXVkb0lkKCkgIT0gZ2V0
TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudFNoYWRvd1BzZXVkb0lkKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVs
ZW1lbnQqIHRpbWVEaXNwbGF5ID0gc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9sVGltZURpc3BsYXlF
bGVtZW50Kj4oZWxlbWVudCk7CisgICAgICAgIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVu
dCYgdGltZURpc3BsYXkgPSBzdGF0aWNfY2FzdDxNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1l
bnQmPihlbGVtZW50KTsKICAgICAgICAgaWYgKGhpZGRlbikKLSAgICAgICAgICAgIHRpbWVEaXNw
bGF5LT5oaWRlKCk7CisgICAgICAgICAgICB0aW1lRGlzcGxheS5oaWRlKCk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHRpbWVEaXNwbGF5LT5zaG93KCk7CisgICAgICAgICAgICB0aW1lRGlz
cGxheS5zaG93KCk7CiAgICAgfQogfQogCkBAIC0xMTUyLDcgKzExNDksNyBAQCB2b2lkIE1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogICAgIC8v
IHdlIHdpc2ggdG8gcmVuZGVyIChlLmcuLCB3ZSBhcmUgYWRkaW5nIGFub3RoZXIgY3VlIGluIGEg
c2V0IG9mIHJvbGwtdXAKICAgICAvLyBjdWVzKSwgcmVtb3ZlIGFsbCB0aGUgZXhpc3RpbmcgQ1NT
IGJveGVzIHJlcHJlc2VudGluZyB0aGUgY3VlcyBhbmQgcmUtYWRkCiAgICAgLy8gdGhlbSBzbyB0
aGF0IHRoZSBuZXcgY3VlIGlzIGF0IHRoZSBib3R0b20uCi0gICAgaWYgKGNoaWxkTm9kZUNvdW50
KCkgPCBhY3RpdmVDdWVzLnNpemUoKSkKKyAgICBpZiAoY291bnRDaGlsZE5vZGVzKCkgPCBhY3Rp
dmVDdWVzLnNpemUoKSkKICAgICAgICAgcmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAgIC8vIFNvcnQg
dGhlIGFjdGl2ZSBjdWVzIGZvciB0aGUgYXBwcm9wcmlhdGUgZGlzcGxheSBvcmRlci4gRm9yIGV4
YW1wbGUsIGZvciByb2xsLXVwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZUVFJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAK
aW5kZXggMDcyNzBjMmI3YmJhNDZmNzRiNTMzMzhlMTJkODA1NmI4NDJkMGNkOC4uZGQ5ZDE0ZDBm
ZjdkNjUwOWZlNDAxODQ1M2EwMWM0YWM4OTllODAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVlRUUmVnaW9uLmNwcApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiQ2xpZW50UmVj
dC5oIgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgorI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVk
ZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0zNjEsNyArMzYy
LDcgQEAgdm9pZCBWVFRSZWdpb246OmRpc3BsYXlMYXN0VGV4dFRyYWNrQ3VlQm94KCkKICAgICBB
U1NFUlQobV9jdWVDb250YWluZXIpOwogCiAgICAgLy8gVGhlIGNvbnRhaW5lciBuZWVkcyB0byBi
ZSByZW5kZXJlZCwgaWYgaXQgaXMgbm90IGVtcHR5IGFuZCB0aGUgcmVnaW9uIGlzIG5vdCBjdXJy
ZW50bHkgc2Nyb2xsaW5nLgotICAgIGlmICghbV9jdWVDb250YWluZXItPnJlbmRlcmVyKCkgfHwg
IW1fY3VlQ29udGFpbmVyLT5jaGlsZE5vZGVDb3VudCgpIHx8IG1fc2Nyb2xsVGltZXIuaXNBY3Rp
dmUoKSkKKyAgICBpZiAoIW1fY3VlQ29udGFpbmVyLT5yZW5kZXJlcigpIHx8ICFtX2N1ZUNvbnRh
aW5lci0+aGFzQ2hpbGROb2RlcygpIHx8IG1fc2Nyb2xsVGltZXIuaXNBY3RpdmUoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gSWYgaXQncyBhIHNjcm9sbGluZyByZWdpb24sIGFkZCB0aGUg
c2Nyb2xsaW5nIGNsYXNzLgpAQCAtMzcxLDkgKzM3MiwxMSBAQCB2b2lkIFZUVFJlZ2lvbjo6ZGlz
cGxheUxhc3RUZXh0VHJhY2tDdWVCb3goKQogICAgIGZsb2F0IHJlZ2lvbkJvdHRvbSA9IG1fcmVn
aW9uRGlzcGxheVRyZWUtPmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLT5ib3R0b20oKTsKIAogICAg
IC8vIEZpbmQgZmlyc3QgY3VlIHRoYXQgaXMgbm90IGVudGlyZWx5IGRpc3BsYXllZCBhbmQgc2Ny
b2xsIGl0IHVwd2FyZHMuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2N1ZUNvbnRhaW5l
ci0+Y2hpbGROb2RlQ291bnQoKSAmJiAhbV9zY3JvbGxUaW1lci5pc0FjdGl2ZSgpOyArK2kpIHsK
LSAgICAgICAgZmxvYXQgY2hpbGRUb3AgPSBzdGF0aWNfY2FzdDxIVE1MRGl2RWxlbWVudCo+KG1f
Y3VlQ29udGFpbmVyLT5jaGlsZE5vZGUoaSkpLT5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS0+dG9w
KCk7Ci0gICAgICAgIGZsb2F0IGNoaWxkQm90dG9tID0gc3RhdGljX2Nhc3Q8SFRNTERpdkVsZW1l
bnQqPihtX2N1ZUNvbnRhaW5lci0+Y2hpbGROb2RlKGkpKS0+Z2V0Qm91bmRpbmdDbGllbnRSZWN0
KCktPmJvdHRvbSgpOworICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxFbGVt
ZW50PigqbV9jdWVDb250YWluZXIpKSB7CisgICAgICAgIGlmIChtX3Njcm9sbFRpbWVyLmlzQWN0
aXZlKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZmxvYXQgY2hpbGRUb3AgPSBjaGls
ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS0+dG9wKCk7CisgICAgICAgIGZsb2F0IGNoaWxkQm90
dG9tID0gY2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCktPmJvdHRvbSgpOwogCiAgICAgICAg
IGlmIChyZWdpb25Cb3R0b20gPj0gY2hpbGRCb3R0b20pCiAgICAgICAgICAgICBjb250aW51ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCAxOGNiYTg4MGNkN2NjODU1N2Yy
NTRmZGMzNjkyOGZiY2Y1NDBiYTZjLi43M2Q5Nzk1OWRjZjIyY2NmZWNjOTNhYTc1YmQxODVmNmNm
ZjkyMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC0zMzcsNyArMzM3
LDcgQEAgdm9pZCBET01TZWxlY3Rpb246OmV4dGVuZChOb2RlKiBub2RlLCBpbnQgb2Zmc2V0LCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChvZmZz
ZXQgPCAwIHx8IG9mZnNldCA+IChub2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSA/IGNhcmV0TWF4
T2Zmc2V0KG5vZGUpIDogKGludClub2RlLT5jaGlsZE5vZGVDb3VudCgpKSkgeworICAgIGlmIChv
ZmZzZXQgPCAwIHx8IG9mZnNldCA+IChub2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSA/IGNhcmV0
TWF4T2Zmc2V0KG5vZGUpIDogc3RhdGljX2Nhc3Q8aW50Pihub2RlLT5jb3VudENoaWxkTm9kZXMo
KSkpKSB7CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC00ODEsNyArNDgxLDcgQEAgdm9pZCBET01TZWxlY3Rpb246OnNlbGVjdEFsbENoaWxk
cmVuKE5vZGUqIG4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBUaGlzIGRvZXNuJ3QgKGFuZCBzaG91bGRuJ3QpIHNlbGVjdCB0ZXh0IG5vZGUgY2hhcmFjdGVy
cy4KLSAgICBzZXRCYXNlQW5kRXh0ZW50KG4sIDAsIG4sIG4tPmNoaWxkTm9kZUNvdW50KCksIGVj
KTsKKyAgICBzZXRCYXNlQW5kRXh0ZW50KG4sIDAsIG4sIG4tPmNvdW50Q2hpbGROb2RlcygpLCBl
Yyk7CiB9CiAKIFN0cmluZyBET01TZWxlY3Rpb246OnRvU3RyaW5nKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMDcyM2ZkN2M3NzRjMDNlYmFhZDM1OTdl
MTIwZjg1MmMxZGQwN2NkMS4uN2QxNDU2NjI4ZTM0YjJiYWIyOTE0NjMwZTBlMzI1Mjk1MTAyOTEw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTIzODAs
NyArMjM4MCw3IEBAIGludCBSZW5kZXJPYmplY3Q6OmNhcmV0TWluT2Zmc2V0KCkgY29uc3QKIGlu
dCBSZW5kZXJPYmplY3Q6OmNhcmV0TWF4T2Zmc2V0KCkgY29uc3QKIHsKICAgICBpZiAoaXNSZXBs
YWNlZCgpKQotICAgICAgICByZXR1cm4gbm9kZSgpID8gc3RkOjptYXgoMVUsIG5vZGUoKS0+Y2hp
bGROb2RlQ291bnQoKSkgOiAxOworICAgICAgICByZXR1cm4gbm9kZSgpID8gc3RkOjptYXgoMVUs
IG5vZGUoKS0+Y291bnRDaGlsZE5vZGVzKCkpIDogMTsKICAgICBpZiAoaXNIUigpKQogICAgICAg
ICByZXR1cm4gMTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwCmluZGV4IDQ1ZTE3MWE2NGU4ZDYwNmU0Y2NkZWY0MTFiZjllOTI5Zjhl
N2E3MTQuLmE4Mjc2ZDczY2JlYmE1YzZhZDA0ODRmMTAxYzlhMzNiMWJhOGU5YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtNTg1LDcgKzU4NSw3
IEBAIGJvb2wgUmVuZGVyUmVwbGFjZWQ6OmlzU2VsZWN0ZWQoKSBjb25zdAogICAgIGlmIChzID09
IFNlbGVjdGlvblN0YXJ0KQogICAgICAgICByZXR1cm4gc2VsZWN0aW9uU3RhcnQgPT0gMDsKICAg
ICAgICAgCi0gICAgaW50IGVuZCA9IGVsZW1lbnQoKS0+aGFzQ2hpbGROb2RlcygpID8gZWxlbWVu
dCgpLT5jaGlsZE5vZGVDb3VudCgpIDogMTsKKyAgICBpbnQgZW5kID0gZWxlbWVudCgpLT5oYXND
aGlsZE5vZGVzKCkgPyBlbGVtZW50KCktPmNvdW50Q2hpbGROb2RlcygpIDogMTsKICAgICBpZiAo
cyA9PSBTZWxlY3Rpb25FbmQpCiAgICAgICAgIHJldHVybiBzZWxlY3Rpb25FbmQgPT0gZW5kOwog
ICAgIGlmIChzID09IFNlbGVjdGlvbkJvdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAKaW5kZXggNTk2OWViNDM2MTY0NjljMmNkMGUyYThkMWEwYWY5OWZmYTAzOWQ2MS4u
NjBjNzNhNGM0YmMxMDU1ZDE0NzkyZmY3OWNhOGZjMzA0MmIwYTUyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtOTA1LDcgKzkwNSw3IEBAIHZvaWQgUmVuZGVy
Vmlldzo6c3BsaXRTZWxlY3Rpb25CZXR3ZWVuU3VidHJlZXMoUmVuZGVyT2JqZWN0KiBzdGFydCwg
aW50IHN0YXJ0UG9zCiAgICAgICAgICAgICBpZiAobm9kZSA9PSBlbmROb2RlKQogICAgICAgICAg
ICAgICAgIHNlbGVjdGlvbkRhdGEuc2V0U2VsZWN0aW9uRW5kUG9zKGVuZFBvcyk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2VsZWN0aW9uRGF0YS5zZXRTZWxlY3Rpb25FbmRQ
b3Mobm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkgPyBub2RlLT5tYXhDaGFyYWN0ZXJPZmZzZXQo
KSA6IG5vZGUtPmNoaWxkTm9kZUNvdW50KCkpOworICAgICAgICAgICAgICAgIHNlbGVjdGlvbkRh
dGEuc2V0U2VsZWN0aW9uRW5kUG9zKG5vZGUtPm9mZnNldEluQ2hhcmFjdGVycygpID8gbm9kZS0+
bWF4Q2hhcmFjdGVyT2Zmc2V0KCkgOiBub2RlLT5jb3VudENoaWxkTm9kZXMoKSk7CiAKICAgICAg
ICAgICAgIHJlbmRlclN1YnRyZWVzTWFwLnNldCgmcm9vdCwgc2VsZWN0aW9uRGF0YSk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IGY5ZWFj
ODlhMzI3YmQwYzNhNWZkYjM4ZDE4MWRjZjYxZDgwOWZkNjIuLjUzMmRjY2M3MDNmMTU2YmIwNjVk
ZmZlZGY5ZGVjNTk1ZDgzNjJlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQpAQCAtNjY4Niw3ICs2Njg2LDcgQEAgc3RhdGljIENHSW1hZ2VSZWYgc2VsZWN0aW9u
SW1hZ2UoRnJhbWUqIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQogICAgIE5TQXR0cmlidXRl
ZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtzZWxmIF9hdHRyaWJ1dGVTdHJpbmdGcm9tRE9N
UmFuZ2U6W2RvY3VtZW50IF9kb2N1bWVudFJhbmdlXV07CiAgICAgaWYgKCFhdHRyaWJ1dGVkU3Ry
aW5nKSB7CiAgICAgICAgIERvY3VtZW50KiBjb3JlRG9jdW1lbnQgPSBjb3JlKGRvY3VtZW50KTsK
LSAgICAgICAgYXR0cmlidXRlZFN0cmluZyA9IGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nRnJvbVJh
bmdlKCpSYW5nZTo6Y3JlYXRlKCpjb3JlRG9jdW1lbnQsIGNvcmVEb2N1bWVudCwgMCwgY29yZURv
Y3VtZW50LCBjb3JlRG9jdW1lbnQtPmNoaWxkTm9kZUNvdW50KCkpKTsKKyAgICAgICAgYXR0cmli
dXRlZFN0cmluZyA9IGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKCpSYW5nZTo6Y3Jl
YXRlKCpjb3JlRG9jdW1lbnQsIGNvcmVEb2N1bWVudCwgMCwgY29yZURvY3VtZW50LCBjb3JlRG9j
dW1lbnQtPmNvdW50Q2hpbGROb2RlcygpKSk7CiAgICAgfQogICAgIHJldHVybiBhdHRyaWJ1dGVk
U3RyaW5nOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViUGFnZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViUGFn
ZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IDRlZmVjNTg5MzNkNjkwZDFiN2M4OGU3ZmVl
ZDA0NzEyZWQ4MjU2ZTQuLjY4MDNhZTIzNTc5ZDU1NzA4ODgxNWU3YTM2MjJjZTYyN2NlNDM2NzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL1dlYlBhZ2VDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJQYWdlQ29vcmRp
bmF0ZWRHcmFwaGljcy5jcHAKQEAgLTY0LDkgKzY0LDkgQEAgdm9pZCBXZWJQYWdlOjpmaW5kWm9v
bWFibGVBcmVhRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50LCBjb25zdCBJbnRTaXplJiBh
cmUKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBDYW5kaWRhdGUgZm91bmQsIGFu
ZCBpdCBpcyBhIGJldHRlciBjYW5kaWRhdGUgdGhhbiBpdHMgcGFyZW50LgotICAgICAgICAvLyBO
QjogQSBwYXJlbnQgaXMgY29uc2lkZXJlZCBhIGJldHRlciBjYW5kaWRhdGUgaWZmIHRoZSBub2Rl
IGlzCisgICAgICAgIC8vIE5COiBBIHBhcmVudCBpcyBjb25zaWRlcmVkIGEgYmV0dGVyIGNhbmRp
ZGF0ZSBpZiB0aGUgbm9kZSBpcwogICAgICAgICAvLyBjb250YWluZWQgYnkgaXQgYW5kIGl0IGlz
IHRoZSBvbmx5IGNoaWxkLgotICAgICAgICBpZiAoZm91bmQgJiYgKCFub2RlLT5wYXJlbnROb2Rl
KCkgfHwgbm9kZS0+cGFyZW50Tm9kZSgpLT5jaGlsZE5vZGVDb3VudCgpICE9IDEpKQorICAgICAg
ICBpZiAoZm91bmQgJiYgKCFub2RlLT5wYXJlbnROb2RlKCkgfHwgIW5vZGUtPnBhcmVudE5vZGUo
KS0+aGFzT25lQ2hpbGQoKSkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIG5vZGUgPSBu
b2RlLT5wYXJlbnROb2RlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238088</attachid>
            <date>2014-09-13 20:52:48 -0700</date>
            <delta_ts>2014-09-14 22:17:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136789-20140913205245.patch</filename>
            <type>text/plain</type>
            <size>40759</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzYyNzdjZjY3Mzg3NzQ5
MTU4YTFkODJmYzNiOWM2YTQ1YWQ4OWQ4My4uYWNkY2UyOGI1YzYyZTBiNmRjNzRhOWVjYjljZmVl
NGUxYjAwZmZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNiBAQAorMjAxNC0wOS0xMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBOb2RlOjpjaGls
ZE5vZGVDb3VudCgpIHRvIGNvdW50Q2hpbGROb2RlcygpIGFuZCBhdm9pZCBpbmVmZmljaWVudCB1
c2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY3
ODkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZW5hbWUg
Tm9kZTo6Y2hpbGROb2RlQ291bnQoKSB0byBjb3VudENoaWxkTm9kZXMoKSB0byBtYWtlIGl0IGNs
ZWFyZXIKKyAgICAgICAgdGhhdCB0aGUgbWV0aG9kIGFjdHVhbGx5IGNvbXB1dGVzIHRoZSByZXN1
bHQgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGEKKyAgICAgICAgY2FjaGVkIHZhbHVlLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VzIGEgbmV3IE5vZGU6Omhhc09uZUNoaWxkKCkg
bWV0aG9kIHRoYXQgaXMKKyAgICAgICAgdXNlZCB0byBjaGVjayBpZiBhIE5vZGUgaGFzIGEgc2lu
Z2xlIGNoaWxkLiBUaGlzIGlzIG11Y2ggbW9yZSBlZmZpY2llbnQKKyAgICAgICAgdGhhbiBjYWxs
aW5nIGNvdW50Q2hpbGROb2RlcygpID09IDEuCisKKyAgICAgICAgVGhlIHBhdGNoIGFsc28gbGV2
ZXJhZ2VzIE5vZGU6Omhhc0NoaWxkTm9kZXMoKSBpbiBhIGxvdCBvZiBwbGFjZXMKKyAgICAgICAg
aW5zdGVhZCBvZiBjYWxsaW5nIGNvdW50Q2hpbGROb2RlcygpLgorCisgICAgICAgIEZpbmFsbHks
IGluIGEgY291cGxlIG9mIHBsYWNlcywgd2Ugbm93IHVzZSBjaGlsZHJlbk9mVHlwZSgpIHRvIGl0
ZXJhdGUKKyAgICAgICAgb3ZlciBjaGlsZHJlbiBtb3JlIGVmZmljaWVudCB0aGFuIHVzaW5nIGNv
dW50Q2hpbGROb2RlcygpIGFuZAorICAgICAgICBjaGlsZE5vZGUoaW5kZXgpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogV2ViQ29yZS5l
eHAuaW46CisgICAgICAgICogV2ViQ29yZS5vcmRlcjoKKyAgICAgICAgVXBkYXRlIHRoZSBuYW1l
IG9mIHRoZSBleHBvc2VkIHN5bWJvbCBmb3IgY291bnRDaGlsZE5vZGVzKCkuCisKKyAgICAgICAg
KiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2Rl
OjpyZW1vdmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpjb3Vu
dENoaWxkTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6Y2hpbGROb2Rl
Q291bnQpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgY2hpbGROb2RlQ291bnQoKSB0byBjb3Vu
dENoaWxkTm9kZXMoKSB0byBtYWtlIGl0IG9idmlvdXMgaXQgaXMKKyAgICAgICAgY29tcHV0aW5n
IHRoZSByZXN1bHQgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGEgY2FjaGVkIHZhbHVlLgorCisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5v
ZGU6Omhhc09uZUNoaWxkKToKKyAgICAgICAgSW50cm9kdWNlIGFuIGVmZmljaWVudCB3YXkgdG8g
Y2hlY2sgaW4gYSBDb250YWluZXJOb2RlIGhhcyBhIHNpbmdsZQorICAgICAgICBjaGlsZCBhcyAi
Y291bnRDaGlsZE5vZGVzKCkgPT0gMSIgY2FsbHMgd2VyZSBmcmVxdWVudCBhbmQgaW5lZmZpY2ll
bnQuCisKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNvdW50Q2hpbGROb2Rlcyk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpjaGlsZE5vZGVDb3VudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9t
L05vZGUuaDoKKyAgICAgICAgUmVuYW1lIGNoaWxkTm9kZUNvdW50KCkgdG8gY291bnRDaGlsZE5v
ZGVzKCkuCisKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UG9zaXRpb246OnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCk6CisgICAgICAgICogZG9tL1Bvc2l0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpsYXN0T2Zmc2V0SW5Ob2RlKToKKyAgICAgICAgKiBk
b20vUmFuZ2UuY3BwOgorICAgICAgICBNZWNoYW5pY2FsIHJlbmFtaW5nLgorCisgICAgICAgIChX
ZWJDb3JlOjpsZW5ndGhPZkNvbnRlbnRzSW5Ob2RlKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjph
cHBseUlubGluZVN0eWxlVG9Ob2RlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHls
ZUNvbW1hbmQ6OnNob3VsZEFwcGx5SW5saW5lU3R5bGVUb1J1bik6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24pOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6Om1lcmdlRW5kV2l0aE5leHRJZklkZW50aWNh
bCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHls
ZUNoYW5nZSk6CisgICAgICAgIENhbGwgaGFzQ2hpbGROb2RlcygpIHJhdGhlciB0aGFuIGNvdW50
Q2hpbGROb2RlcygpIGFzIGl0IGlzIGEgbG90IG1vcmUKKyAgICAgICAgZWZmaWNpZW50LgorCisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpz
ZXRUZXh0QXNDaGlsZE9mRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJhbmdl
T2ZTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0
KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjplbGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24p
OgorICAgICAgICBNZWNoYW5pY2FsIHJlbmFtaW5nLgorCisgICAgICAgICogZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6aW5zZXJ0QXNMaXN0SXRlbXMpOgorICAgICAgICBDYWxsIGhhc09uZUNoaWxk
KCkgaW5zdGVhZCBvZiBjb3VudENoaWxkTm9kZXMoKSA9PSAxLiBBbHNvIHJlbW92ZQorICAgICAg
ICByZWR1bmRhbnQgbGlzdEVsZW1lbnQtPmhhc0NoaWxkTm9kZXMoKSBjaGVjayBhcyBoYXNPbmVD
aGlsZCgpIHRha2VzCisgICAgICAgIGNhcmUgb2YgdGhpcyBhbHJlYWR5LgorCisgICAgICAgICog
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJh
Y2t3YXJkc1RleHRJdGVyYXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcik6Cisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5k
T2ZEb2N1bWVudCk6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpsYXN0T2Zmc2V0Rm9yRWRpdGluZyk6CisgICAgICAgIE1lY2hhbmljYWwgcmVu
YW1pbmcuCisKKyAgICAgICAgKFdlYkNvcmU6OnZpc2libGVQb3NpdGlvbkJlZm9yZU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6dmlzaWJsZVBvc2l0aW9uQWZ0ZXJOb2RlKToKKyAgICAgICAgQ2Fs
bCBoYXNDaGlsZE5vZGVzKCkgaW5zdGVhZCBvZiBjb252ZXJ0aW5nIGNvdW50Q2hpbGROb2Rlcygp
IHRvIGEKKyAgICAgICAgYm9vbGVhbi4KKworICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0cmF2ZXJzZU5vZGVz
Rm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIENhbGwgIWhhc0NoaWxkTm9kZXMoKSBpbnN0ZWFk
IG9mICFjb3VudENoaWxkTm9kZXMoKS4KKworICAgICAgICAoV2ViQ29yZTo6aXNQbGFpblRleHRN
YXJrdXApOgorICAgICAgICAtIERyb3AgIW5vZGUtPmlzRWxlbWVudE5vZGUoKSBjaGVjayBhcyAh
bm9kZS0+aGFzVGFnTmFtZShkaXZUYWcpIHRha2VzCisgICAgICAgICAgY2FyZSBvZiBkaXNjYXJk
aW5nIG5vbi1FbGVtZW50IE5vZGVzIGFscmVhZHkuCisgICAgICAgIC0gQ2FzdCB0aGUgTm9kZSB0
byBhbiBIVE1MRGl2RWxlbWVudCBhcyBzb29uIGFzIHBvc3NpYmxlIHRvIGF2b2lkCisgICAgICAg
ICAgY2FsbGluZyBjYWxsaW5nIHRoZSBzbG93ZXIgTm9kZSBBUElzIGluIHNldmVyYWwgY2FzZXMu
CisgICAgICAgIC0gQ2FsbCBoYXNPbmVDaGlsZCgpIGluc3RlYWQgb2YgY291bnRDaGlsZE5vZGVz
KCkgPT0gMS4KKworICAgICAgICAqIGh0bWwvSFRNTERpdkVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxUYWdOYW1lcy5pbjoKKyAgICAgICAgR2VuZXJhdGUgY2FzdGluZyBoZWxwZXJzIGFz
IEkgdXNlIHRoZW0gaW4gV2ViQ29yZTo6aXNQbGFpblRleHRNYXJrdXAoKS4KKworICAgICAgICAq
IGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlw
dEVsZW1lbnQ6OnNldFRleHQpOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50OjpzZXRUZXh0KToKKyAgICAgICAg
Q2FsbCBoYXNPbmVDaGlsZCgpIC8gaGFzQ2hpbGROb2RlcygpIGluc3RlYWQgb2YgY291bnRDaGls
ZE5vZGVzKCkuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1l
bnQ6OnNldFRpbWVEaXNwbGF5c0hpZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KToKKyAgICAgICAgVXNl
IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCkgdG8gaXRlcmF0ZSBvZiBjaGlsZCBFbGVtZW50cyBp
bnN0ZWFkIG9mCisgICAgICAgIHNsb3dlciBjaGlsZE5vZGVDb3VudCgpICsgY2hpbGROb2RlKGlu
ZGV4KSArIGlzRWxlbWVudE5vZGUoKS4gQWxzbywKKyAgICAgICAgY2hpbGROb2RlQ291bnQoKSB3
YXMgbm90IGV2ZW4gY2FjaGVkIGJlZm9yZSB0aGUgbG9vcC4KKworICAgICAgICAqIGh0bWwvdHJh
Y2svVlRUUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6ZGlzcGxheUxh
c3RUZXh0VHJhY2tDdWVCb3gpOgorICAgICAgICBVc2UgY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4o
KSB0byBpdGVyYXRlIG9mIGNoaWxkIEVsZW1lbnRzLCB0aHVzCisgICAgICAgIGF2b2lkaW5nIGNh
bGxpbmcgY2hpbGROb2RlQ291bnQoKSArIGNoaWxkTm9kZShpbmRleCkuCisKKyAgICAgICAgKiBw
YWdlL0RPTVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmV4
dGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OnNlbGVjdEFsbENoaWxkcmVu
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6Y2FyZXRNYXhPZmZzZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6aXNT
ZWxlY3RlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVmlldzo6c3BsaXRTZWxlY3Rpb25CZXR3ZWVuU3VidHJlZXMpOgorICAg
ICAgICBNZWNoYW5pY2FsIHJlbmFtaW5nLgorCiAyMDE0LTA5LTEyICBKb24gSG9uZXljdXR0ICA8
amhvbmV5Y3V0dEBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4IHdpdGggUkVRVUVTVF9B
VVRPQ09NUExFVEUgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGRhNTYwMzFmNjhhYmVkODMw
ZTIzNjA0ZmYyNWEyNjk5NTAxYjljYTcuLjdjOWFmYTgyYzhjMTM1NTdjZGNmYzM2MDFkNWJjNzFi
NTNmZTYwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wOS0xMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBOb2RlOjpj
aGlsZE5vZGVDb3VudCgpIHRvIGNvdW50Q2hpbGROb2RlcygpIGFuZCBhdm9pZCBpbmVmZmljaWVu
dCB1c2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzY3ODkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZW5h
bWUgY2hpbGROb2RlQ291bnQoKSB0byBjb3VudENoaWxkTm9kZXMoKS4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGF0dHJpYnV0ZWRT
dHJpbmddKToKKwogMjAxNC0wOS0xMCAgSm9uIEhvbmV5Y3V0dCAgPGpob25leWN1dHRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlLWFkZCB0aGUgcmVxdWVzdCBhdXRvY29tcGxldGUgZmVhdHVyZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IGVjNWEyOWQzZmNiNjRkODM2ZmMzMWY5Y2I5NmVlNWI3Y2Q2Y2Y0MzkuLjhi
MWRlNzQzYWM4N2RlMWY4MjJmNDk1NjI2NDIzYTFjN2Q1OWRlMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNC0wOS0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbmFtZSBOb2RlOjpjaGlsZE5vZGVDb3VudCgpIHRvIGNvdW50Q2hpbGROb2Rl
cygpIGFuZCBhdm9pZCBpbmVmZmljaWVudCB1c2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY3ODkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICBBdm9pZCBjYWxsaW5nIHNsb3cgTm9kZTo6Y291bnRDaGlsZE5v
ZGVzKCkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XZWJQYWdlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmZpbmRab29tYWJsZUFyZWFGb3JQb2ludCk6CisgICAgICAgIFJlcGxhY2UgY2FsbCB0byAi
bm9kZS0+cGFyZW50Tm9kZSgpLT5jaGlsZE5vZGVDb3VudCgpICE9IDEiIGJ5CisgICAgICAgICIh
bm9kZS0+cGFyZW50Tm9kZSgpLT5oYXNPbmVDaGlsZCgpIiB3aGljaCBpcyBlcXVpdmFsZW50IGJ1
dCBtb3JlCisgICAgICAgIGVmZmljaWVudC4KKwogMjAxNC0wOS0xMCAgSm9uIEhvbmV5Y3V0dCAg
PGpob25leWN1dHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlLWFkZCB0aGUgcmVxdWVzdCBhdXRv
Y29tcGxldGUgZmVhdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA4ZDFmZDQwNmZmZGM0Zjk1
Y2JlMDBiZmJmY2ZhZWY1MmU4YzgyYTg5Li45NGQ5YjUzOWVkNDFjZmRiNTE3NzE0ZDE0MDhiMDJj
NDQ1YzYzYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTYyNSw3ICsxNjI1LDcgQEAgX19a
Tks3V2ViQ29yZTEyU2hhcmVkQnVmZmVyNHNpemVFdgogX19aTks3V2ViQ29yZTEyVGV4dEVuY29k
aW5nNmRlY29kZUVQS2NtYlJiCiBfX1pOSzdXZWJDb3JlMTJUZXh0SXRlcmF0b3I0bm9kZUV2CiBf
X1pOSzdXZWJDb3JlMTJUZXh0SXRlcmF0b3I1cmFuZ2VFdgotX19aTks3V2ViQ29yZTEzQ29udGFp
bmVyTm9kZTE0Y2hpbGROb2RlQ291bnRFdgorX19aTks3V2ViQ29yZTEzQ29udGFpbmVyTm9kZTE1
Y291bnRDaGlsZE5vZGVzRXYKIF9fWk5LN1dlYkNvcmUxM0NvbnRhaW5lck5vZGU5Y2hpbGROb2Rl
RWoKIF9fWk5LN1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXIxOGFjY3VtdWxhdGVkT3BhY2l0eUV2CiBf
X1pOSzdXZWJDb3JlMTNHcmFwaGljc0xheWVyMThnZXREZWJ1Z0JvcmRlckluZm9FUk5TXzVDb2xv
ckVSZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggYTM2MDAyYWExZWUwMmY5MjZmNmUxOGIwOTk2NjIw
YjZjMjMzZGExOS4uMGIxNzc5NjAyMTZhMmUzZDRlODFkMGNiNTFjZTVkNzY4OGI0Mjg0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyCkBAIC0xMTYyMiw3ICsxMTYyMiw3IEBAIF9fWk43V2ViQ29yZTIxanNI
VE1MTWV0YUVsZW1lbnROYW1lRVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRU5TMF8xMlBy
b3BlcnR5CiBfX1pON1dlYkNvcmUyNGpzSFRNTE1ldGFFbGVtZW50Q29udGVudEVQTjNKU0M5RXhl
Y1N0YXRlRU5TMF83SlNWYWx1ZUVOUzBfMTJQcm9wZXJ0eU5hbWVFCiBfX1pON1dlYkNvcmUyNnNl
dEpTSFRNTFNjcmlwdEVsZW1lbnRUZXh0RVBOM0pTQzlFeGVjU3RhdGVFUE5TMF84SlNPYmplY3RF
TlMwXzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTdIVE1MU2NyaXB0RWxlbWVudDdzZXRUZXh0RVJL
TjNXVEY2U3RyaW5nRQotX19aTks3V2ViQ29yZTEzQ29udGFpbmVyTm9kZTE0Y2hpbGROb2RlQ291
bnRFdgorX19aTks3V2ViQ29yZTEzQ29udGFpbmVyTm9kZTE1Y291bnRDaGlsZE5vZGVzRXYKIF9f
Wk43V2ViQ29yZTIwanNIVE1MTGlua0VsZW1lbnRSZWxFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pT
VmFsdWVFTlMwXzEyUHJvcGVydHlOYW1lRQogX19aTjdXZWJDb3JlMjFqc0hUTUxMaW5rRWxlbWVu
dEhyZWZFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFTlMwXzEyUHJvcGVydHlOYW1lRQog
X19aTjdXZWJDb3JlMTNOb2RlVHJhdmVyc2FsMzVuZXh0SW5jbHVkaW5nUHNldWRvU2tpcHBpbmdD
aGlsZHJlbkVQS05TXzROb2RlRVMzXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmlu
ZGV4IDFiMTE0MDJiYWYyMTcyYTVlZmU2YWZjYTRiNzNiZTdkOTVkNGRjNTIuLjY1YjdlZThmMzhj
NjUxYTBjZTQ3MGVjZGY0N2MyY2VkZmU5YmRlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKQEAgLTY1Myw3ICs2NTMsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUNo
aWxkcmVuKCkKICAgICAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBz
dXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlczsKICAgICAgICAgewogICAgICAgICAgICAgTm9F
dmVudERpc3BhdGNoQXNzZXJ0aW9uIGFzc2VydE5vRXZlbnREaXNwYXRjaDsKLSAgICAgICAgICAg
IHJlbW92ZWRDaGlsZHJlbi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNoaWxkTm9kZUNvdW50KCkp
OworICAgICAgICAgICAgcmVtb3ZlZENoaWxkcmVuLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291
bnRDaGlsZE5vZGVzKCkpOwogICAgICAgICAgICAgd2hpbGUgKFJlZlB0cjxOb2RlPiBuID0gbV9m
aXJzdENoaWxkKSB7CiAgICAgICAgICAgICAgICAgcmVtb3ZlZENoaWxkcmVuLmFwcGVuZCgqbV9m
aXJzdENoaWxkKTsKICAgICAgICAgICAgICAgICByZW1vdmVCZXR3ZWVuKDAsIG1fZmlyc3RDaGls
ZC0+bmV4dFNpYmxpbmcoKSwgKm1fZmlyc3RDaGlsZCk7CkBAIC05MzEsMTIgKzkzMSwxMSBAQCBM
YXlvdXRSZWN0IENvbnRhaW5lck5vZGU6OmJvdW5kaW5nQm94KCkgY29uc3QKICAgICByZXR1cm4g
ZW5jbG9zaW5nTGF5b3V0UmVjdChGbG9hdFJlY3QodXBwZXJMZWZ0LCBsb3dlclJpZ2h0LmV4cGFu
ZGVkVG8odXBwZXJMZWZ0KSAtIHVwcGVyTGVmdCkpOwogfQogCi11bnNpZ25lZCBDb250YWluZXJO
b2RlOjpjaGlsZE5vZGVDb3VudCgpIGNvbnN0Cit1bnNpZ25lZCBDb250YWluZXJOb2RlOjpjb3Vu
dENoaWxkTm9kZXMoKSBjb25zdAogewogICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKLSAgICBOb2Rl
ICpuOwotICAgIGZvciAobiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkp
Ci0gICAgICAgIGNvdW50Kys7CisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgICsrY291bnQ7CiAg
ICAgcmV0dXJuIGNvdW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA2
MzllZDI0NjA0MzgwZjQyNTViMzg0ZDAyODY0Nzc5Y2ViOWFhZDRiLi41MTBmYTA0YTFhYmYzZmI3
NTU0M2IxMGI0YjE3M2M0Nzc4NmNiOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgK
QEAgLTg3LDExICs4NywxMiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHB0cmRpZmZfdCBmaXJzdENo
aWxkTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvbnRhaW5lck5vZGUs
IG1fZmlyc3RDaGlsZCk7IH0KICAgICBOb2RlKiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBt
X2xhc3RDaGlsZDsgfQogICAgIGJvb2wgaGFzQ2hpbGROb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1f
Zmlyc3RDaGlsZDsgfQorICAgIGJvb2wgaGFzT25lQ2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2Zp
cnN0Q2hpbGQgJiYgIW1fZmlyc3RDaGlsZC0+bmV4dFNpYmxpbmcoKTsgfQogCiAgICAgYm9vbCBk
aXJlY3RDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKERpcmVj
dENoaWxkTmVlZHNTdHlsZVJlY2FsY0ZsYWcpOyB9CiAgICAgdm9pZCBzZXREaXJlY3RDaGlsZE5l
ZWRzU3R5bGVSZWNhbGMoKSB7IHNldEZsYWcoRGlyZWN0Q2hpbGROZWVkc1N0eWxlUmVjYWxjRmxh
Zyk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNoaWxkTm9kZUNvdW50KCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgY291bnRDaGlsZE5vZGVzKCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgTm9kZSogY2hpbGROb2RlKHVuc2lnbmVkIGluZGV4KSBjb25z
dDsKIAogICAgIGJvb2wgaW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5v
ZGUqIHJlZkNoaWxkLCBFeGNlcHRpb25Db2RlJiA9IEFTU0VSVF9OT19FWENFUFRJT04pOwpAQCAt
MTg0LDExICsxODUsMTEgQEAgaW5saW5lIENvbnRhaW5lck5vZGU6OkNvbnRhaW5lck5vZGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiB7CiB9CiAKLWlubGluZSB1
bnNpZ25lZCBOb2RlOjpjaGlsZE5vZGVDb3VudCgpIGNvbnN0CitpbmxpbmUgdW5zaWduZWQgTm9k
ZTo6Y291bnRDaGlsZE5vZGVzKCkgY29uc3QKIHsKICAgICBpZiAoIWlzQ29udGFpbmVyTm9kZSgp
KQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gdG9Db250YWluZXJOb2RlKHRoaXMpLT5j
aGlsZE5vZGVDb3VudCgpOworICAgIHJldHVybiB0b0NvbnRhaW5lck5vZGUodGhpcyktPmNvdW50
Q2hpbGROb2RlcygpOwogfQogCiBpbmxpbmUgTm9kZSogTm9kZTo6Y2hpbGROb2RlKHVuc2lnbmVk
IGluZGV4KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggZWJiZDhhOTBiMzBmMjBhOGEwNDliMmFmZjJk
ZWE0NTA2YjkzMzhiNS4uZjQ3N2ZmM2EwYTJkODE4MmY0MTBiNTU2YmRmZjdiNjM5NDU2NzM1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCkBAIC00MTYsNyArNDE2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNSZWFk
T25seU5vZGUoKSBjb25zdCB7IHJldHVybiBub2RlVHlwZSgpID09IEVOVElUWV9SRUZFUkVOQ0Vf
Tk9ERTsgfQogICAgIGJvb2wgaXNEb2N1bWVudFR5cGVOb2RlKCkgY29uc3QgeyByZXR1cm4gbm9k
ZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBFX05PREU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRU
eXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB1bnNpZ25l
ZCBjaGlsZE5vZGVDb3VudCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGNvdW50Q2hpbGROb2Rlcygp
IGNvbnN0OwogICAgIE5vZGUqIGNoaWxkTm9kZSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKICAg
ICB2b2lkIGNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBFeGNlcHRp
b25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCAzYWQ4ZWRhZTdkOWYzZTk4YmMz
ZmJkY2FmYmE0ZDM4ZTJkZmQzZDZjLi5mMmM2OTFlM2IwYmM1MGEzNzA5ZjUxMmUzZDJmNzMxMWY4
YjI3MDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTIyNiw3ICsyMjYsNyBAQCBQb3Np
dGlvbiBQb3NpdGlvbjo6cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkgY29uc3QKICAgICB9CiAK
ICAgICBpZiAoIW1fYW5jaG9yTm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkKLSAgICAgICAgJiYg
KG1fYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzQWZ0ZXJBbmNob3IgfHwgbV9hbmNob3JUeXBlID09
IFBvc2l0aW9uSXNBZnRlckNoaWxkcmVuIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNl
dCkgPT0gbV9hbmNob3JOb2RlLT5jaGlsZE5vZGVDb3VudCgpKQorICAgICAgICAmJiAobV9hbmNo
b3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckFuY2hvciB8fCBtX2FuY2hvclR5cGUgPT0gUG9zaXRp
b25Jc0FmdGVyQ2hpbGRyZW4gfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KSA9PSBt
X2FuY2hvck5vZGUtPmNvdW50Q2hpbGROb2RlcygpKQogICAgICAgICAmJiAoZWRpdGluZ0lnbm9y
ZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkgfHwgaXNSZW5kZXJlZFRhYmxlKG1fYW5jaG9y
Tm9kZS5nZXQoKSkpCiAgICAgICAgICYmIGNvbnRhaW5lck5vZGUoKSkgewogICAgICAgICByZXR1
cm4gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShtX2FuY2hvck5vZGUuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb24uaAppbmRleCAyOTgxMTdmMDVkZTc0YjYzOGIyOTMyZjdhNjFmNWJiYzUwMTNhNjE2
Li41MWJmNDcyNjJiYjM5NWY2NTk1MjFjMjI3NjdlNmJiMDg0YTkwMWMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uaApAQCAtMjk3LDEwICsyOTcsMTAgQEAgaW5saW5lIFBvc2l0aW9uIHBvc2l0aW9uQWZ0
ZXJOb2RlKE5vZGUqIGFuY2hvck5vZGUpCiAKIGlubGluZSBpbnQgbGFzdE9mZnNldEluTm9kZShO
b2RlKiBub2RlKQogewotICAgIHJldHVybiBub2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSA/IG5v
ZGUtPm1heENoYXJhY3Rlck9mZnNldCgpIDogc3RhdGljX2Nhc3Q8aW50Pihub2RlLT5jaGlsZE5v
ZGVDb3VudCgpKTsKKyAgICByZXR1cm4gbm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkgPyBub2Rl
LT5tYXhDaGFyYWN0ZXJPZmZzZXQoKSA6IHN0YXRpY19jYXN0PGludD4obm9kZS0+Y291bnRDaGls
ZE5vZGVzKCkpOwogfQogCi0vLyBmaXJzdFBvc2l0aW9uSW5Ob2RlIGFuZCBsYXN0UG9zaXRpb25J
bk5vZGUgcmV0dXJuIHBhcmVudC1hbmNob3JlZCBwb3NpdGlvbnMsIGxhc3RQb3NpdGlvbkluTm9k
ZSBjb25zdHJ1Y3Rpb24gaXMgTyhuKSBkdWUgdG8gY2hpbGROb2RlQ291bnQoKQorLy8gZmlyc3RQ
b3NpdGlvbkluTm9kZSBhbmQgbGFzdFBvc2l0aW9uSW5Ob2RlIHJldHVybiBwYXJlbnQtYW5jaG9y
ZWQgcG9zaXRpb25zLCBsYXN0UG9zaXRpb25Jbk5vZGUgY29uc3RydWN0aW9uIGlzIE8obikgZHVl
IHRvIGNvdW50Q2hpbGROb2RlcygpCiBpbmxpbmUgUG9zaXRpb24gZmlyc3RQb3NpdGlvbkluTm9k
ZShOb2RlKiBhbmNob3JOb2RlKQogewogICAgIGlmIChhbmNob3JOb2RlLT5pc1RleHROb2RlKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1JhbmdlLmNwcAppbmRleCBiMGJjMzIwMWRmYTBlMjI5MzA0MjdiMjExNDRmNThkODQz
ZWUzZjA5Li5kNjg0ODRmY2YxN2NiODdjNTE0MDljNGNkZTE3MzExYzlhOTgwZDk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxl
bmd0aE9mQ29udGVudHNJbk5vZGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5U
X0ZSQUdNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgIGNhc2Ug
Tm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgICAgIHJldHVybiBub2RlLT5jaGlsZE5v
ZGVDb3VudCgpOworICAgICAgICByZXR1cm4gbm9kZS0+Y291bnRDaGlsZE5vZGVzKCk7CiAgICAg
fQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCA1Mzg0YjZmMjgxY2Y1ZDQw
ZGExYmFmYzQyNDhkMzdjZDc5YmRhZjFkLi40ZDY3ZGM5M2MzYmUyOGVhZjkzMGIyMzE4MTRlODZj
MzQ1ZThjODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmNwcApAQCAtNzc3LDcgKzc3Nyw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5SW5s
aW5lU3R5bGVUb05vZGVSYW5nZShFZGl0aW5nU3R5bGUqIHN0eWxlLCBQYXNzUmVmCiAgICAgICAg
IGlmIChpc0Jsb2NrKG5vZGUuZ2V0KCkpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IAotICAgICAgICBpZiAobm9kZS0+Y2hpbGROb2RlQ291bnQoKSkgeworICAgICAgICBpZiAobm9k
ZS0+aGFzQ2hpbGROb2RlcygpKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y29udGFpbnMocGFz
dEVuZE5vZGUuZ2V0KCkpIHx8IGNvbnRhaW5zTm9uRWRpdGFibGVSZWdpb24obm9kZS5nZXQoKSkg
fHwgIW5vZGUtPnBhcmVudE5vZGUoKS0+aGFzRWRpdGFibGVTdHlsZSgpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKGVkaXRpbmdJZ25vcmVzQ29udGVudChub2Rl
LmdldCgpKSkgewpAQCAtODM1LDcgKzgzNSw3IEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnNo
b3VsZEFwcGx5SW5saW5lU3R5bGVUb1J1bihFZGl0aW5nU3R5bGUqIHN0eWxlLCBOb2RlKiByCiAg
ICAgQVNTRVJUKHN0eWxlICYmIHJ1blN0YXJ0KTsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IHJ1
blN0YXJ0OyBub2RlICYmIG5vZGUgIT0gcGFzdEVuZE5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2Fs
OjpuZXh0KG5vZGUpKSB7Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZE5vZGVDb3VudCgpKQorICAg
ICAgICBpZiAobm9kZS0+aGFzQ2hpbGROb2RlcygpKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIC8vIFdlIGRvbid0IGNvbnNpZGVyIG1faXNJbmxpbmVFbGVtZW50VG9SZW1vdmVGdW5j
dGlvbiBoZXJlIGJlY2F1c2Ugd2UgbmV2ZXIgYXBwbHkgc3R5bGUgd2hlbiBtX2lzSW5saW5lRWxl
bWVudFRvUmVtb3ZlRnVuY3Rpb24gaXMgc3BlY2lmaWVkCiAgICAgICAgIGlmICghc3R5bGUtPnN0
eWxlSXNQcmVzZW50SW5Db21wdXRlZFN0eWxlT2ZOb2RlKG5vZGUpKQpAQCAtMTAwNyw3ICsxMDA3
LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24o
Tm9kZSogbm9kZSwgRWRpdGluZ1N0eWxlKiBzdHkKIAogICAgIC8vIFNpbmNlIGFkZElubGluZVN0
eWxlSWZOZWVkZWQgY2FuJ3QgYWRkIHN0eWxlcyB0byBibG9jay1mbG93IHJlbmRlciBvYmplY3Rz
LCBhZGQgc3R5bGUgYXR0cmlidXRlIGluc3RlYWQuCiAgICAgLy8gRklYTUU6IGFwcGx5SW5saW5l
U3R5bGVUb1JhbmdlIHNob3VsZCBiZSB1c2VkIGhlcmUgaW5zdGVhZC4KLSAgICBpZiAoKG5vZGUt
PnJlbmRlcmVyKCktPmlzUmVuZGVyQmxvY2tGbG93KCkgfHwgbm9kZS0+Y2hpbGROb2RlQ291bnQo
KSkgJiYgbm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7CisgICAgaWYgKChub2RlLT5yZW5kZXJlcigp
LT5pc1JlbmRlckJsb2NrRmxvdygpIHx8IG5vZGUtPmhhc0NoaWxkTm9kZXMoKSkgJiYgbm9kZS0+
aXNIVE1MRWxlbWVudCgpKSB7CiAgICAgICAgIHNldE5vZGVBdHRyaWJ1dGUodG9IVE1MRWxlbWVu
dChub2RlKSwgc3R5bGVBdHRyLCBuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKS0+YXNUZXh0KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTMyNSw3ICsxMzI1LDcgQEAgYm9vbCBBcHBseVN0
eWxlQ29tbWFuZDo6bWVyZ2VFbmRXaXRoTmV4dElmSWRlbnRpY2FsKGNvbnN0IFBvc2l0aW9uJiBz
dGFydCwgY29uc3QKICAgICAgICAgbWVyZ2VJZGVudGljYWxFbGVtZW50cyhlbGVtZW50LCBuZXh0
RWxlbWVudCk7CiAKICAgICAgICAgYm9vbCBzaG91bGRVcGRhdGVTdGFydCA9IHN0YXJ0LmNvbnRh
aW5lck5vZGUoKSA9PSBlbmROb2RlOwotICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gbmV4dENoaWxk
ID8gbmV4dENoaWxkLT5ub2RlSW5kZXgoKSA6IG5leHRFbGVtZW50LT5jaGlsZE5vZGVDb3VudCgp
OworICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gbmV4dENoaWxkID8gbmV4dENoaWxkLT5ub2RlSW5k
ZXgoKSA6IG5leHRFbGVtZW50LT5jb3VudENoaWxkTm9kZXMoKTsKICAgICAgICAgdXBkYXRlU3Rh
cnRFbmQoc2hvdWxkVXBkYXRlU3RhcnQgPyBQb3NpdGlvbihuZXh0RWxlbWVudCwgc3RhcnQub2Zm
c2V0SW5Db250YWluZXJOb2RlKCksIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3Ip
IDogc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uKG5leHRFbGVtZW50LCBl
bmRPZmZzZXQsIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0xNDMzLDcgKzE0MzMsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5k
OjphcHBseUlubGluZVN0eWxlQ2hhbmdlKFBhc3NSZWZQdHI8Tm9kZT4gcGFzc2VkU3RhcnQsIFBh
cwogICAgICAgICBpZiAoY29udGFpbmVyLT5pc0hUTUxFbGVtZW50KCkgJiYgY29udGFpbmVyLT5o
YXNUYWdOYW1lKGZvbnRUYWcpKQogICAgICAgICAgICAgZm9udENvbnRhaW5lciA9IHRvSFRNTEVs
ZW1lbnQoY29udGFpbmVyKTsKICAgICAgICAgYm9vbCBzdHlsZUNvbnRhaW5lcklzTm90U3BhbiA9
ICFzdHlsZUNvbnRhaW5lciB8fCAhc3R5bGVDb250YWluZXItPmhhc1RhZ05hbWUoc3BhblRhZyk7
Ci0gICAgICAgIGlmIChjb250YWluZXItPmlzSFRNTEVsZW1lbnQoKSAmJiAoY29udGFpbmVyLT5o
YXNUYWdOYW1lKHNwYW5UYWcpIHx8IChzdHlsZUNvbnRhaW5lcklzTm90U3BhbiAmJiBjb250YWlu
ZXItPmNoaWxkTm9kZUNvdW50KCkpKSkKKyAgICAgICAgaWYgKGNvbnRhaW5lci0+aXNIVE1MRWxl
bWVudCgpICYmIChjb250YWluZXItPmhhc1RhZ05hbWUoc3BhblRhZykgfHwgKHN0eWxlQ29udGFp
bmVySXNOb3RTcGFuICYmIGNvbnRhaW5lci0+aGFzQ2hpbGROb2RlcygpKSkpCiAgICAgICAgICAg
ICBzdHlsZUNvbnRhaW5lciA9IHRvSFRNTEVsZW1lbnQoY29udGFpbmVyKTsKICAgICAgICAgaWYg
KCFjb250YWluZXItPmZpcnN0Q2hpbGQoKSkKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCmluZGV4IGY0MTA2NWJmOTM5MzE1NGM2YzlhZWEyOGFmNjU2ZTkxZGY4
NDM3ZWIuLjhjOGRhZGM0YzYxMTcwNmQ1OWNkNDAwOWU4NmJkNzBmZDUxMTgxYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTcwNCw3ICs3MDQsNyBAQCB2b2lkIEVkaXRvcjo6c2V0
VGV4dEFzQ2hpbGRPZkVsZW1lbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFbGVtZW50KiBlbGVtKQog
ICAgIC8vIHNldCB0aGUgc2VsZWN0aW9uIHRvIHRoZSBlbmQKICAgICBWaXNpYmxlU2VsZWN0aW9u
IHNlbGVjdGlvbjsKIAotICAgIFBvc2l0aW9uIHBvcyA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihlbGVtLCBlbGVtLT5jaGlsZE5vZGVDb3VudCgpKTsKKyAgICBQb3NpdGlvbiBwb3MgPSBj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oZWxlbSwgZWxlbS0+Y291bnRDaGlsZE5vZGVzKCkp
OwogCiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MocG9zLCBWUF9ERUZBVUxUX0FGRklO
SVRZKTsKICAgICBpZiAodmlzaWJsZVBvcy5pc051bGwoKSkKQEAgLTMxNjgsNyArMzE2OCw3IEBA
IFBhc3NSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmIHRh
cmdldCwgUmFuZ2UqIHJlZmVyZW5jZVJhCiAgICAgUmVmUHRyPE5vZGU+IHNoYWRvd1RyZWVSb290
ID0gcmVmZXJlbmNlUmFuZ2UgJiYgcmVmZXJlbmNlUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPyBy
ZWZlcmVuY2VSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+bm9uQm91bmRhcnlTaGFkb3dUcmVlUm9v
dE5vZGUoKSA6IDA7CiAgICAgaWYgKHNoYWRvd1RyZWVSb290KSB7CiAgICAgICAgIGlmIChmb3J3
YXJkKQotICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNldEVuZChzaGFkb3dUcmVlUm9vdC5nZXQo
KSwgc2hhZG93VHJlZVJvb3QtPmNoaWxkTm9kZUNvdW50KCkpOworICAgICAgICAgICAgc2VhcmNo
UmFuZ2UtPnNldEVuZChzaGFkb3dUcmVlUm9vdC5nZXQoKSwgc2hhZG93VHJlZVJvb3QtPmNvdW50
Q2hpbGROb2RlcygpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNl
dFN0YXJ0KHNoYWRvd1RyZWVSb290LmdldCgpLCAwKTsKICAgICB9CkBAIC0zMTg2LDcgKzMxODYs
NyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBFZGl0b3I6OnJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5n
JiB0YXJnZXQsIFJhbmdlKiByZWZlcmVuY2VSYQogCiAgICAgICAgIGlmIChzaGFkb3dUcmVlUm9v
dCkgewogICAgICAgICAgICAgaWYgKGZvcndhcmQpCi0gICAgICAgICAgICAgICAgc2VhcmNoUmFu
Z2UtPnNldEVuZChzaGFkb3dUcmVlUm9vdC5nZXQoKSwgc2hhZG93VHJlZVJvb3QtPmNoaWxkTm9k
ZUNvdW50KCkpOworICAgICAgICAgICAgICAgIHNlYXJjaFJhbmdlLT5zZXRFbmQoc2hhZG93VHJl
ZVJvb3QuZ2V0KCksIHNoYWRvd1RyZWVSb290LT5jb3VudENoaWxkTm9kZXMoKSk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNldFN0YXJ0KHNoYWRvd1Ry
ZWVSb290LmdldCgpLCAwKTsKICAgICAgICAgfQpAQCAtMzI3OSw3ICszMjc5LDcgQEAgdW5zaWdu
ZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5n
ZSogcmFuZ2UsIEZpbmRPcHQKIAogICAgICAgICBOb2RlKiBzaGFkb3dUcmVlUm9vdCA9IHNlYXJj
aFJhbmdlLT5zaGFkb3dSb290KCk7CiAgICAgICAgIGlmIChzZWFyY2hSYW5nZS0+Y29sbGFwc2Vk
KElHTk9SRV9FWENFUFRJT04pICYmIHNoYWRvd1RyZWVSb290KQotICAgICAgICAgICAgc2VhcmNo
UmFuZ2UtPnNldEVuZChzaGFkb3dUcmVlUm9vdCwgc2hhZG93VHJlZVJvb3QtPmNoaWxkTm9kZUNv
dW50KCksIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNldEVu
ZChzaGFkb3dUcmVlUm9vdCwgc2hhZG93VHJlZVJvb3QtPmNvdW50Q2hpbGROb2RlcygpLCBJR05P
UkVfRVhDRVBUSU9OKTsKICAgICB9IHdoaWxlICh0cnVlKTsKIAogICAgIGlmIChtYXJrTWF0Y2hl
cyB8fCBtYXRjaGVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
CmluZGV4IGYwYWMyNzlhODdjMGY3YjI0ZTgzYWY3NWZkNTBjNjgxZDIwNzYzNmQuLjdiODgxNTFj
MzJiZjczNDM0NWYyMzY5NjM0ZWMyOTA4YzEyMTA1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0yMTk2LDcgKzIxOTYsNyBAQCBQYXNzUmVmUHRyPFJh
bmdlPiBGcmFtZVNlbGVjdGlvbjo6ZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9u
KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBQb3NpdGlvbiBzdGFydFBv
cyA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihlbGVtZW50LCAwKTsKLSAgICBQb3NpdGlv
biBlbmRQb3MgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oZWxlbWVudCwgZWxlbWVudC0+
Y2hpbGROb2RlQ291bnQoKSk7CisgICAgUG9zaXRpb24gZW5kUG9zID0gY3JlYXRlTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKGVsZW1lbnQsIGVsZW1lbnQtPmNvdW50Q2hpbGROb2RlcygpKTsKICAgICAK
ICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRWaXNpYmxlUG9zKHN0YXJ0UG9zLCBWUF9ERUZBVUxU
X0FGRklOSVRZKTsKICAgICBWaXNpYmxlUG9zaXRpb24gZW5kVmlzaWJsZVBvcyhlbmRQb3MsIFZQ
X0RFRkFVTFRfQUZGSU5JVFkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCAwZWI4OWJiZWJmYTkxYTEzNGYyNzA4MDgxMDA4
YjhiMTk1NzU3NTA4Li5iNDViZTVkYjQ1Y2U2YjRlM2YxMmJiMGU3NzU1ZjcxOWFlOWJmZTkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcApAQCAtMTQzNyw3ICsxNDM3LDcgQEAgTm9kZSogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
Omluc2VydEFzTGlzdEl0ZW1zKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IHBycExpc3QKIHsKICAg
ICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGxpc3RFbGVtZW50ID0gcHJwTGlzdEVsZW1lbnQ7CiAKLSAg
ICB3aGlsZSAobGlzdEVsZW1lbnQtPmhhc0NoaWxkTm9kZXMoKSAmJiBpc0xpc3RFbGVtZW50KGxp
c3RFbGVtZW50LT5maXJzdENoaWxkKCkpICYmIGxpc3RFbGVtZW50LT5jaGlsZE5vZGVDb3VudCgp
ID09IDEpCisgICAgd2hpbGUgKGxpc3RFbGVtZW50LT5oYXNPbmVDaGlsZCgpICYmIGlzTGlzdEVs
ZW1lbnQobGlzdEVsZW1lbnQtPmZpcnN0Q2hpbGQoKSkpCiAgICAgICAgIGxpc3RFbGVtZW50ID0g
dG9IVE1MRWxlbWVudChsaXN0RWxlbWVudC0+Zmlyc3RDaGlsZCgpKTsKIAogICAgIGJvb2wgaXNT
dGFydCA9IGlzU3RhcnRPZlBhcmFncmFwaChpbnNlcnRQb3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGY0MjIxNDhhNzRmZDM2NmE5MTA3NmI4OWY1YWUyYTlh
ZjAwZWI0OTkuLjA5M2M1NDhmMzIwMjZjZDNkNTE4NjA0ZDk0MDBmMTM1MmY5MTYxZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTExNDYsMTMgKzExNDYsMTMg
QEAgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1Rl
eHRJdGVyYXRvcihjb25zdCBSYW5nZSYgcmEKICAgICBpbnQgZW5kT2Zmc2V0ID0gcmFuZ2UuZW5k
T2Zmc2V0KCk7CiAKICAgICBpZiAoIXN0YXJ0Tm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkpIHsK
LSAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0ID49IDAgJiYgc3RhcnRPZmZzZXQgPCBzdGF0aWNfY2Fz
dDxpbnQ+KHN0YXJ0Tm9kZS0+Y2hpbGROb2RlQ291bnQoKSkpIHsKKyAgICAgICAgaWYgKHN0YXJ0
T2Zmc2V0ID49IDAgJiYgc3RhcnRPZmZzZXQgPCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0Tm9kZS0+
Y291bnRDaGlsZE5vZGVzKCkpKSB7CiAgICAgICAgICAgICBzdGFydE5vZGUgPSBzdGFydE5vZGUt
PmNoaWxkTm9kZShzdGFydE9mZnNldCk7CiAgICAgICAgICAgICBzdGFydE9mZnNldCA9IDA7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFlbmROb2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSkg
ewotICAgICAgICBpZiAoZW5kT2Zmc2V0ID4gMCAmJiBlbmRPZmZzZXQgPD0gc3RhdGljX2Nhc3Q8
aW50PihlbmROb2RlLT5jaGlsZE5vZGVDb3VudCgpKSkgeworICAgICAgICBpZiAoZW5kT2Zmc2V0
ID4gMCAmJiBlbmRPZmZzZXQgPD0gc3RhdGljX2Nhc3Q8aW50PihlbmROb2RlLT5jb3VudENoaWxk
Tm9kZXMoKSkpIHsKICAgICAgICAgICAgIGVuZE5vZGUgPSBlbmROb2RlLT5jaGlsZE5vZGUoZW5k
T2Zmc2V0IC0gMSk7CiAgICAgICAgICAgICBlbmRPZmZzZXQgPSBsYXN0T2Zmc2V0SW5Ob2RlKGVu
ZE5vZGUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAK
aW5kZXggMjBmOTNjY2Y1NDlhYWI4MTc2MjJkZWEyZmE3NzEwMzlmZDcwOWUzZC4uNjRjZTM5MDU0
ZmQyZmZmY2VhOTQ5ZjZiYzc3MjMxZDMxODM2MzExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVVuaXRzLmNwcApAQCAtMTM2NCw3ICsxMzY0LDcgQEAgVmlzaWJsZVBvc2l0aW9uIGVu
ZE9mRG9jdW1lbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICAvLyAoQXMgYWJvdmUsIGluIHN0YXJ0
T2ZEb2N1bWVudC4pICBUaGUgY2Fub25pY2FsaXphdGlvbiBjYW4gcmVqZWN0IHZhbGlkIHZpc2li
bGUgcG9zaXRpb25zCiAgICAgLy8gd2hlbiBkZXNjZW5kaW5nIGZyb20gdGhlIHJvb3QgZWxlbWVu
dCwgc28gd2UgY29uc3RydWN0IHRoZSB2aXNpYmxlIHBvc2l0aW9uIGRpcmVjdGx5IGZyb20gYQog
ICAgIC8vIHZhbGlkIGNhbmRpZGF0ZS4KLSAgICBQb3NpdGlvbiBsYXN0UG9zaXRpb24gPSBjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZS0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQo
KSwgbm9kZS0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+Y2hpbGROb2RlQ291bnQoKSk7
CisgICAgUG9zaXRpb24gbGFzdFBvc2l0aW9uID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KG5vZGUtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCksIG5vZGUtPmRvY3VtZW50KCkuZG9j
dW1lbnRFbGVtZW50KCktPmNvdW50Q2hpbGROb2RlcygpKTsKICAgICBQb3NpdGlvbiBsYXN0Q2Fu
ZGlkYXRlID0gcHJldmlvdXNDYW5kaWRhdGUobGFzdFBvc2l0aW9uKTsKICAgICBpZiAobGFzdENh
bmRpZGF0ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCA1NTVkN2VlYzA3MTliZmUwMzg0
MTNiOTFiMTQxMTAxYWJhMDdhNGVjLi5lNjQ1ZWNhZWI2NjM3ZTBjNzAyMTQ1ZjRjNmZmNzk5Yjhk
ZTc4MTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtMzQzLDcg
KzM0Myw3IEBAIGludCBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhjb25zdCBOb2RlKiBub2RlKQogICAg
ICAgICByZXR1cm4gbm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCk7CiAKICAgICBpZiAobm9kZS0+
aGFzQ2hpbGROb2RlcygpKQotICAgICAgICByZXR1cm4gbm9kZS0+Y2hpbGROb2RlQ291bnQoKTsK
KyAgICAgICAgcmV0dXJuIG5vZGUtPmNvdW50Q2hpbGROb2RlcygpOwogCiAgICAgLy8gTk9URTog
VGhpcyBzaG91bGQgcHJlZW1wdCB0aGUgY2hpbGROb2RlQ291bnQgZm9yLCBlLmcuLCBzZWxlY3Qg
bm9kZXMKICAgICBpZiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG5vZGUpKQpAQCAtNTEzLDcgKzUx
Myw3IEBAIE5vZGUqIGlzTGFzdFBvc2l0aW9uQmVmb3JlVGFibGUoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiB2aXNpYmxlUG9zaXRpb24pCiBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uQmVm
b3JlTm9kZShOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKLSAgICBpZiAobm9kZS0+
Y2hpbGROb2RlQ291bnQoKSkKKyAgICBpZiAobm9kZS0+aGFzQ2hpbGROb2RlcygpKQogICAgICAg
ICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2Rl
KSwgRE9XTlNUUkVBTSk7CiAgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSk7CiAgICAgQVNT
RVJUKCFub2RlLT5wYXJlbnROb2RlKCktPmlzU2hhZG93Um9vdCgpKTsKQEAgLTUyNCw3ICs1MjQs
NyBAQCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uQmVmb3JlTm9kZShOb2RlKiBub2Rl
KQogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkFmdGVyTm9kZShOb2RlKiBub2RlKQog
ewogICAgIEFTU0VSVChub2RlKTsKLSAgICBpZiAobm9kZS0+Y2hpbGROb2RlQ291bnQoKSkKKyAg
ICBpZiAobm9kZS0+aGFzQ2hpbGROb2RlcygpKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uKGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUobm9kZSksIERPV05TVFJFQU0pOwogICAgIEFT
U0VSVChub2RlLT5wYXJlbnROb2RlKCkpOwogICAgIEFTU0VSVCghbm9kZS0+cGFyZW50Tm9kZSgp
LT5pc1NoYWRvd1Jvb3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggYWY3ZmY0
ZTdlMmU2YjRmNmJjMDU1ZDM0OTAxNjdkMmExZTgwNWExZC4uNmMyMmJmZTI4YTEwNGViYWYxNTQ2
MDFkZmU4Yzk4ODliMmYyMWVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNDMs
NiArNDMsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TERpdkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKQEAgLTM5OCw3ICszOTksNyBA
QCBOb2RlKiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6
YXRpb24oTm9kZSogc3RhcnROb2RlLCBObwogICAgICAgICAgICAgICAgIGFwcGVuZFN0YXJ0VGFn
KCpuKTsKIAogICAgICAgICAgICAgLy8gSWYgbm9kZSBoYXMgbm8gY2hpbGRyZW4sIGNsb3NlIHRo
ZSB0YWcgbm93LgotICAgICAgICAgICAgaWYgKCFuLT5jaGlsZE5vZGVDb3VudCgpKSB7CisgICAg
ICAgICAgICBpZiAoIW4tPmhhc0NoaWxkTm9kZXMoKSkgewogICAgICAgICAgICAgICAgIGlmIChz
aG91bGRFbWl0KQogICAgICAgICAgICAgICAgICAgICBhcHBlbmRFbmRUYWcoKm4pOwogICAgICAg
ICAgICAgICAgIGxhc3RDbG9zZWQgPSBuOwpAQCAtNzQwLDE1ICs3NDEsMjcgQEAgc3RhdGljIHZv
aWQgZmlsbENvbnRhaW5lckZyb21TdHJpbmcoQ29udGFpbmVyTm9kZSogcGFyYWdyYXBoLCBjb25z
dCBTdHJpbmcmIHN0cmkKICAgICB9CiB9CiAKLWJvb2wgaXNQbGFpblRleHRNYXJrdXAoTm9kZSAq
bm9kZSkKK2Jvb2wgaXNQbGFpblRleHRNYXJrdXAoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoIW5v
ZGUtPmlzRWxlbWVudE5vZGUoKSB8fCAhbm9kZS0+aGFzVGFnTmFtZShkaXZUYWcpIHx8IHRvRWxl
bWVudChub2RlKS0+aGFzQXR0cmlidXRlcygpKQorICAgIGlmICghaXNIVE1MRGl2RWxlbWVudChu
b2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSFRNTERpdkVsZW1lbnQmIGVsZW1l
bnQgPSB0b0hUTUxEaXZFbGVtZW50KCpub2RlKTsKKyAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1
dGVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE5vZGUqIGZpcnN0Q2hpbGQgPSBl
bGVtZW50LmZpcnN0Q2hpbGQoKTsKKyAgICBpZiAoIWZpcnN0Q2hpbGQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIE5vZGUqIHNlY29uZENoaWxkID0gZmlyc3RDaGlsZC0+bmV4dFNpYmxp
bmcoKTsKKyAgICBpZiAoIXNlY29uZENoaWxkKQorICAgICAgICByZXR1cm4gZmlyc3RDaGlsZC0+
aXNUZXh0Tm9kZSgpIHx8IGZpcnN0Q2hpbGQtPmZpcnN0Q2hpbGQoKTsKICAgICAKLSAgICBpZiAo
bm9kZS0+Y2hpbGROb2RlQ291bnQoKSA9PSAxICYmIChub2RlLT5maXJzdENoaWxkKCktPmlzVGV4
dE5vZGUoKSB8fCAobm9kZS0+Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxkKCkpKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKHNlY29uZENoaWxkLT5uZXh0U2libGluZygpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuIChub2RlLT5jaGlsZE5vZGVDb3VudCgp
ID09IDIgJiYgaXNUYWJTcGFuVGV4dE5vZGUobm9kZS0+Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxk
KCkpICYmIG5vZGUtPmZpcnN0Q2hpbGQoKS0+bmV4dFNpYmxpbmcoKS0+aXNUZXh0Tm9kZSgpKTsK
KyAgICByZXR1cm4gaXNUYWJTcGFuVGV4dE5vZGUoZmlyc3RDaGlsZC0+Zmlyc3RDaGlsZCgpKSAm
JiBzZWNvbmRDaGlsZC0+aXNUZXh0Tm9kZSgpOwogfQogCiBzdGF0aWMgYm9vbCBjb250ZXh0UHJl
c2VydmVzTmV3bGluZShjb25zdCBSYW5nZSYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERp
dkVsZW1lbnQuaAppbmRleCBmZjgxYjliODJjYWJmNzZmMWRlMjA0N2Q0ZjU4MTFjNWRhYzViZjBl
Li4xYjVkMjBhZDg4MjNmZjFmY2FjMzFlZGViNjg4ZTRiZThiODgyNDRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRGl2RWxlbWVudC5oCkBAIC00MCw2ICs0MCw4IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYp
IG92ZXJyaWRlOwogfTsKIAorTk9ERV9UWVBFX0NBU1RTKEhUTUxEaXZFbGVtZW50KQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBIVE1MRGl2RWxlbWVudF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDU4MGUxNGQ3MzRhOWIxNDIy
ODJkZjcyMDhhNzkzMGQ4OWY1NDRkYzIuLjMwZTNkNDZkZDYzZGM3ZjE0ZTgzNjMwNjIxM2Q0NWVl
ZTYxMGNjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCkBA
IC04MSwxNCArODEsMTIgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0VGV4dChjb25zdCBT
dHJpbmcgJnZhbHVlKQogewogICAgIFJlZjxIVE1MU2NyaXB0RWxlbWVudD4gcHJvdGVjdEZyb21N
dXRhdGlvbkV2ZW50cygqdGhpcyk7CiAKLSAgICBpbnQgbnVtQ2hpbGRyZW4gPSBjaGlsZE5vZGVD
b3VudCgpOwotCi0gICAgaWYgKG51bUNoaWxkcmVuID09IDEgJiYgZmlyc3RDaGlsZCgpLT5pc1Rl
eHROb2RlKCkpIHsKKyAgICBpZiAoaGFzT25lQ2hpbGQoKSAmJiBmaXJzdENoaWxkKCktPmlzVGV4
dE5vZGUoKSkgewogICAgICAgICB0b1RleHQoZmlyc3RDaGlsZCgpKS0+c2V0RGF0YSh2YWx1ZSwg
SUdOT1JFX0VYQ0VQVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobnVt
Q2hpbGRyZW4gPiAwKQorICAgIGlmIChoYXNDaGlsZE5vZGVzKCkpCiAgICAgICAgIHJlbW92ZUNo
aWxkcmVuKCk7CiAKICAgICBhcHBlbmRDaGlsZChkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKHZh
bHVlLmltcGwoKSksIElHTk9SRV9FWENFUFRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1l
cy5pbgppbmRleCA3NGQ0YjFjOWUzMWQ3MzQ1NWZlYTIwYzM1NWZlMDY3NTM1MmNhZDI2Li5lY2Ey
NWVlMzAyZjYxYzllMDNiYjQ2Yjk2ZjZkNzEyODNlOWQ5MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWdOYW1lcy5pbgpAQCAtMzgsNyArMzgsNyBAQCBkZWwgaW50ZXJmYWNlTmFtZT1IVE1MTW9k
RWxlbWVudAogZGV0YWlscyBjb25kaXRpb25hbD1ERVRBSUxTX0VMRU1FTlQsIGdlbmVyYXRlVHlw
ZUhlbHBlcnMgCiBkZm4gaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAogZGlyIGludGVyZmFjZU5h
bWU9SFRNTERpcmVjdG9yeUVsZW1lbnQKLWRpdgorZGl2IGdlbmVyYXRlVHlwZUhlbHBlcnMKIGRs
IGludGVyZmFjZU5hbWU9SFRNTERMaXN0RWxlbWVudAogZHQgaW50ZXJmYWNlTmFtZT1IVE1MRWxl
bWVudAogZW0gaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRpdGxlRWxlbWVudC5jcHAKaW5kZXggMTRhZWUzN2QyMTBkZDFmYjFhNjA5OGE2MTY5ZGVkZjlm
NDI0YWNmNy4uMDBlNjdiMzJlMTAyYjE0YzkyMzViMWMwYjg2YmQ3OWJmM2Y3YTA1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCkBAIC05NiwxMCArOTYsOCBAQCBT
dHJpbmdXaXRoRGlyZWN0aW9uIEhUTUxUaXRsZUVsZW1lbnQ6OnRleHRXaXRoRGlyZWN0aW9uKCkK
IHZvaWQgSFRNTFRpdGxlRWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcgJnZhbHVlKQogewog
ICAgIFJlZjxIVE1MVGl0bGVFbGVtZW50PiBwcm90ZWN0RnJvbU11dGF0aW9uRXZlbnRzKCp0aGlz
KTsKLQotICAgIGludCBudW1DaGlsZHJlbiA9IGNoaWxkTm9kZUNvdW50KCk7CiAgICAgCi0gICAg
aWYgKG51bUNoaWxkcmVuID09IDEgJiYgZmlyc3RDaGlsZCgpLT5pc1RleHROb2RlKCkpCisgICAg
aWYgKGhhc09uZUNoaWxkKCkgJiYgZmlyc3RDaGlsZCgpLT5pc1RleHROb2RlKCkpCiAgICAgICAg
IHRvVGV4dChmaXJzdENoaWxkKCkpLT5zZXREYXRhKHZhbHVlLCBJR05PUkVfRVhDRVBUSU9OKTsK
ICAgICBlbHNlIHsKICAgICAgICAgLy8gV2UgbWFrZSBhIGNvcHkgaGVyZSBiZWNhdXNlIGVudGl0
eSBvZiAidmFsdWUiIGFyZ3VtZW50IGNhbiBiZSBEb2N1bWVudDo6bV90aXRsZSwKQEAgLTEwNyw3
ICsxMDUsNyBAQCB2b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nICZ2
YWx1ZSkKICAgICAgICAgLy8gd2hpY2ggY2F1c2VzIEhUTUxUaXRsZUVsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZCgpLCB3aGljaCBlbmRzIHVwIERvY3VtZW50OjpzZXRUaXRsZSgpLgogICAgICAgICBT
dHJpbmcgdmFsdWVDb3B5KHZhbHVlKTsKIAotICAgICAgICBpZiAobnVtQ2hpbGRyZW4gPiAwKQor
ICAgICAgICBpZiAoaGFzQ2hpbGROb2RlcygpKQogICAgICAgICAgICAgcmVtb3ZlQ2hpbGRyZW4o
KTsKIAogICAgICAgICBhcHBlbmRDaGlsZChkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKHZhbHVl
Q29weS5pbXBsKCkpLCBJR05PUkVfRVhDRVBUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCBiMDlmMzhhM2MyMjI2
ODEyNTM0NjAyZThkODRiMmNiYTZiNzc3ZWEzLi4zNjZiOTVhZjg2MGNjM2I2NmE5YWU1OTA5MjA5
ODI3ZjcyMzcyNzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTWVkaWFD
b250cm9sRWxlbWVudHMuaCIKIAogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgorI2luY2x1ZGUg
IkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5o
IgpAQCAtMjk2LDIwICsyOTcsMTYgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNv
bnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWwKIAogdm9pZCBN
ZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OnNldFRpbWVEaXNwbGF5c0hpZGRl
bihib29sIGhpZGRlbikKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hpbGROb2Rl
Q291bnQoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUqIGNoaWxkID0gY2hpbGROb2RlKGkpOwotICAg
ICAgICBpZiAoIWNoaWxkIHx8ICFjaGlsZC0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQoY2hpbGQpOwot
ICAgICAgICBpZiAoZWxlbWVudC0+c2hhZG93UHNldWRvSWQoKSAhPSBnZXRNZWRpYUNvbnRyb2xU
aW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnRTaGFkb3dQc2V1ZG9JZCgpCi0gICAgICAgICAgICAm
JiBlbGVtZW50LT5zaGFkb3dQc2V1ZG9JZCgpICE9IGdldE1lZGlhQ29udHJvbEN1cnJlbnRUaW1l
RGlzcGxheUVsZW1lbnRTaGFkb3dQc2V1ZG9JZCgpKQorICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAoZWxlbWVudC5z
aGFkb3dQc2V1ZG9JZCgpICE9IGdldE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxl
bWVudFNoYWRvd1BzZXVkb0lkKCkKKyAgICAgICAgICAgICYmIGVsZW1lbnQuc2hhZG93UHNldWRv
SWQoKSAhPSBnZXRNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50U2hhZG93UHNl
dWRvSWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE1lZGlhQ29udHJvbFRp
bWVEaXNwbGF5RWxlbWVudCogdGltZURpc3BsYXkgPSBzdGF0aWNfY2FzdDxNZWRpYUNvbnRyb2xU
aW1lRGlzcGxheUVsZW1lbnQqPihlbGVtZW50KTsKKyAgICAgICAgTWVkaWFDb250cm9sVGltZURp
c3BsYXlFbGVtZW50JiB0aW1lRGlzcGxheSA9IHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbFRpbWVE
aXNwbGF5RWxlbWVudCY+KGVsZW1lbnQpOwogICAgICAgICBpZiAoaGlkZGVuKQotICAgICAgICAg
ICAgdGltZURpc3BsYXktPmhpZGUoKTsKKyAgICAgICAgICAgIHRpbWVEaXNwbGF5LmhpZGUoKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGltZURpc3BsYXktPnNob3coKTsKKyAgICAgICAg
ICAgIHRpbWVEaXNwbGF5LnNob3coKTsKICAgICB9CiB9CiAKQEAgLTExNTIsNyArMTE0OSw5IEBA
IHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlRGlzcGxh
eSgpCiAgICAgLy8gd2Ugd2lzaCB0byByZW5kZXIgKGUuZy4sIHdlIGFyZSBhZGRpbmcgYW5vdGhl
ciBjdWUgaW4gYSBzZXQgb2Ygcm9sbC11cAogICAgIC8vIGN1ZXMpLCByZW1vdmUgYWxsIHRoZSBl
eGlzdGluZyBDU1MgYm94ZXMgcmVwcmVzZW50aW5nIHRoZSBjdWVzIGFuZCByZS1hZGQKICAgICAv
LyB0aGVtIHNvIHRoYXQgdGhlIG5ldyBjdWUgaXMgYXQgdGhlIGJvdHRvbS4KLSAgICBpZiAoY2hp
bGROb2RlQ291bnQoKSA8IGFjdGl2ZUN1ZXMuc2l6ZSgpKQorICAgIC8vIEZJWE1FOiBDYWxsaW5n
IGNvdW50Q2hpbGROb2RlcygpIGhlcmUgaXMgaW5lZmZpY2llbnQuIFdlIGRvbid0IG5lZWQgdG8K
KyAgICAvLyB0cmF2ZXJzZSBhbGwgY2hpbGRyZW4ganVzdCB0byBjaGVjayBpZiB0aGVyZSBhcmUg
bGVzcyBjaGlsZHJlbiB0aGFuIGN1ZXMuCisgICAgaWYgKGNvdW50Q2hpbGROb2RlcygpIDwgYWN0
aXZlQ3Vlcy5zaXplKCkpCiAgICAgICAgIHJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAvLyBTb3J0
IHRoZSBhY3RpdmUgY3VlcyBmb3IgdGhlIGFwcHJvcHJpYXRlIGRpc3BsYXkgb3JkZXIuIEZvciBl
eGFtcGxlLCBmb3Igcm9sbC11cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRSZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3Bw
CmluZGV4IDA3MjcwYzJiN2JiYTQ2Zjc0YjUzMzM4ZTEyZDgwNTZiODQyZDBjZDguLmUwOWJiZTU5
NGI2MTg1YjRkNWRjOWJjOGJmOGJjZjdlOGUzMWFjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZUVFJlZ2lvbi5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkNsaWVudFJl
Y3QuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKKyNpbmNsdWRlICJFbGVtZW50Q2hpbGRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1
ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtMzYxLDcgKzM2
Miw3IEBAIHZvaWQgVlRUUmVnaW9uOjpkaXNwbGF5TGFzdFRleHRUcmFja0N1ZUJveCgpCiAgICAg
QVNTRVJUKG1fY3VlQ29udGFpbmVyKTsKIAogICAgIC8vIFRoZSBjb250YWluZXIgbmVlZHMgdG8g
YmUgcmVuZGVyZWQsIGlmIGl0IGlzIG5vdCBlbXB0eSBhbmQgdGhlIHJlZ2lvbiBpcyBub3QgY3Vy
cmVudGx5IHNjcm9sbGluZy4KLSAgICBpZiAoIW1fY3VlQ29udGFpbmVyLT5yZW5kZXJlcigpIHx8
ICFtX2N1ZUNvbnRhaW5lci0+Y2hpbGROb2RlQ291bnQoKSB8fCBtX3Njcm9sbFRpbWVyLmlzQWN0
aXZlKCkpCisgICAgaWYgKCFtX2N1ZUNvbnRhaW5lci0+cmVuZGVyZXIoKSB8fCAhbV9jdWVDb250
YWluZXItPmhhc0NoaWxkTm9kZXMoKSB8fCBtX3Njcm9sbFRpbWVyLmlzQWN0aXZlKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIElmIGl0J3MgYSBzY3JvbGxpbmcgcmVnaW9uLCBhZGQgdGhl
IHNjcm9sbGluZyBjbGFzcy4KQEAgLTM3MSw5ICszNzIsMTAgQEAgdm9pZCBWVFRSZWdpb246OmRp
c3BsYXlMYXN0VGV4dFRyYWNrQ3VlQm94KCkKICAgICBmbG9hdCByZWdpb25Cb3R0b20gPSBtX3Jl
Z2lvbkRpc3BsYXlUcmVlLT5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS0+Ym90dG9tKCk7CiAKICAg
ICAvLyBGaW5kIGZpcnN0IGN1ZSB0aGF0IGlzIG5vdCBlbnRpcmVseSBkaXNwbGF5ZWQgYW5kIHNj
cm9sbCBpdCB1cHdhcmRzLgotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdWVDb250YWlu
ZXItPmNoaWxkTm9kZUNvdW50KCkgJiYgIW1fc2Nyb2xsVGltZXIuaXNBY3RpdmUoKTsgKytpKSB7
Ci0gICAgICAgIGZsb2F0IGNoaWxkVG9wID0gc3RhdGljX2Nhc3Q8SFRNTERpdkVsZW1lbnQqPiht
X2N1ZUNvbnRhaW5lci0+Y2hpbGROb2RlKGkpKS0+Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCktPnRv
cCgpOwotICAgICAgICBmbG9hdCBjaGlsZEJvdHRvbSA9IHN0YXRpY19jYXN0PEhUTUxEaXZFbGVt
ZW50Kj4obV9jdWVDb250YWluZXItPmNoaWxkTm9kZShpKSktPmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpLT5ib3R0b20oKTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5cGU8RWxl
bWVudD4oKm1fY3VlQ29udGFpbmVyKSkgeworICAgICAgICBSZWZQdHI8Q2xpZW50UmVjdD4gcmVj
dCA9IGNoaWxkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBmbG9hdCBjaGlsZFRv
cCA9IHJlY3QtPnRvcCgpOworICAgICAgICBmbG9hdCBjaGlsZEJvdHRvbSA9IHJlY3QtPmJvdHRv
bSgpOwogCiAgICAgICAgIGlmIChyZWdpb25Cb3R0b20gPj0gY2hpbGRCb3R0b20pCiAgICAgICAg
ICAgICBjb250aW51ZTsKQEAgLTM4NCw2ICszODYsNyBAQCB2b2lkIFZUVFJlZ2lvbjo6ZGlzcGxh
eUxhc3RUZXh0VHJhY2tDdWVCb3goKQogICAgICAgICBtX2N1ZUNvbnRhaW5lci0+c2V0SW5saW5l
U3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgbV9jdXJyZW50VG9wLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BYKTsKIAogICAgICAgICBzdGFydFRpbWVyKCk7CisgICAgICAgIGJyZWFrOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCmluZGV4IDE4Y2JhODgw
Y2Q3Y2M4NTU3ZjI1NGZkYzM2OTI4ZmJjZjU0MGJhNmMuLjczZDk3OTU5ZGNmMjJjY2ZlY2M5M2Fh
NzViZDE4NWY2Y2ZmOTIwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2Vs
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKQEAg
LTMzNyw3ICszMzcsNyBAQCB2b2lkIERPTVNlbGVjdGlvbjo6ZXh0ZW5kKE5vZGUqIG5vZGUsIGlu
dCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ID4gKG5vZGUtPm9mZnNldEluQ2hhcmFjdGVycygp
ID8gY2FyZXRNYXhPZmZzZXQobm9kZSkgOiAoaW50KW5vZGUtPmNoaWxkTm9kZUNvdW50KCkpKSB7
CisgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ID4gKG5vZGUtPm9mZnNldEluQ2hhcmFjdGVy
cygpID8gY2FyZXRNYXhPZmZzZXQobm9kZSkgOiBzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmNvdW50
Q2hpbGROb2RlcygpKSkpIHsKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTQ4MSw3ICs0ODEsNyBAQCB2b2lkIERPTVNlbGVjdGlvbjo6c2Vs
ZWN0QWxsQ2hpbGRyZW4oTm9kZSogbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIFRoaXMgZG9lc24ndCAoYW5kIHNob3VsZG4ndCkgc2VsZWN0IHRleHQgbm9k
ZSBjaGFyYWN0ZXJzLgotICAgIHNldEJhc2VBbmRFeHRlbnQobiwgMCwgbiwgbi0+Y2hpbGROb2Rl
Q291bnQoKSwgZWMpOworICAgIHNldEJhc2VBbmRFeHRlbnQobiwgMCwgbiwgbi0+Y291bnRDaGls
ZE5vZGVzKCksIGVjKTsKIH0KIAogU3RyaW5nIERPTVNlbGVjdGlvbjo6dG9TdHJpbmcoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAwNzIzZmQ3Yzc3NGMw
M2ViYWFkMzU5N2UxMjBmODUyYzFkZDA3Y2QxLi43ZDE0NTY2MjhlMzRiMmJhYjI5MTQ2MzBlMGUz
MjUyOTUxMDI5MTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cApAQCAtMjM4MCw3ICsyMzgwLDcgQEAgaW50IFJlbmRlck9iamVjdDo6Y2FyZXRNaW5PZmZzZXQo
KSBjb25zdAogaW50IFJlbmRlck9iamVjdDo6Y2FyZXRNYXhPZmZzZXQoKSBjb25zdAogewogICAg
IGlmIChpc1JlcGxhY2VkKCkpCi0gICAgICAgIHJldHVybiBub2RlKCkgPyBzdGQ6Om1heCgxVSwg
bm9kZSgpLT5jaGlsZE5vZGVDb3VudCgpKSA6IDE7CisgICAgICAgIHJldHVybiBub2RlKCkgPyBz
dGQ6Om1heCgxVSwgbm9kZSgpLT5jb3VudENoaWxkTm9kZXMoKSkgOiAxOwogICAgIGlmIChpc0hS
KCkpCiAgICAgICAgIHJldHVybiAxOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggNDVlMTcxYTY0ZThkNjA2ZTRjY2RlZjQx
MWJmOWU5MjlmOGU3YTcxNC4uYTgyNzZkNzNjYmViYTVjNmFkMDQ4NGYxMDFjOWEzM2IxYmE4ZTli
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC01
ODUsNyArNTg1LDcgQEAgYm9vbCBSZW5kZXJSZXBsYWNlZDo6aXNTZWxlY3RlZCgpIGNvbnN0CiAg
ICAgaWYgKHMgPT0gU2VsZWN0aW9uU3RhcnQpCiAgICAgICAgIHJldHVybiBzZWxlY3Rpb25TdGFy
dCA9PSAwOwogICAgICAgICAKLSAgICBpbnQgZW5kID0gZWxlbWVudCgpLT5oYXNDaGlsZE5vZGVz
KCkgPyBlbGVtZW50KCktPmNoaWxkTm9kZUNvdW50KCkgOiAxOworICAgIGludCBlbmQgPSBlbGVt
ZW50KCktPmhhc0NoaWxkTm9kZXMoKSA/IGVsZW1lbnQoKS0+Y291bnRDaGlsZE5vZGVzKCkgOiAx
OwogICAgIGlmIChzID09IFNlbGVjdGlvbkVuZCkKICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbkVu
ZCA9PSBlbmQ7CiAgICAgaWYgKHMgPT0gU2VsZWN0aW9uQm90aCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA1OTY5ZWI0MzYxNjQ2OWMyY2QwZTJhOGQxYTBhZjk5
ZmZhMDM5ZDYxLi42MGM3M2E0YzRiYzEwNTVkMTQ3OTJmZjc5Y2E4ZmMzMDQyYjBhNTJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC05MDUsNyArOTA1LDcgQEAg
dm9pZCBSZW5kZXJWaWV3OjpzcGxpdFNlbGVjdGlvbkJldHdlZW5TdWJ0cmVlcyhSZW5kZXJPYmpl
Y3QqIHN0YXJ0LCBpbnQgc3RhcnRQb3MKICAgICAgICAgICAgIGlmIChub2RlID09IGVuZE5vZGUp
CiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uRGF0YS5zZXRTZWxlY3Rpb25FbmRQb3MoZW5kUG9z
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzZWxlY3Rpb25EYXRhLnNldFNl
bGVjdGlvbkVuZFBvcyhub2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSA/IG5vZGUtPm1heENoYXJh
Y3Rlck9mZnNldCgpIDogbm9kZS0+Y2hpbGROb2RlQ291bnQoKSk7CisgICAgICAgICAgICAgICAg
c2VsZWN0aW9uRGF0YS5zZXRTZWxlY3Rpb25FbmRQb3Mobm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJz
KCkgPyBub2RlLT5tYXhDaGFyYWN0ZXJPZmZzZXQoKSA6IG5vZGUtPmNvdW50Q2hpbGROb2Rlcygp
KTsKIAogICAgICAgICAgICAgcmVuZGVyU3VidHJlZXNNYXAuc2V0KCZyb290LCBzZWxlY3Rpb25E
YXRhKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
aW5kZXggZjllYWM4OWEzMjdiZDBjM2E1ZmRiMzhkMTgxZGNmNjFkODA5ZmQ2Mi4uNTMyZGNjYzcw
M2YxNTZiYjA2NWRmZmVkZjlkZWM1OTVkODM2MmVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC02Njg2LDcgKzY2ODYsNyBAQCAtIChOU0F0dHJpYnV0ZWRT
dHJpbmcgKilhdHRyaWJ1dGVkU3RyaW5nCiAgICAgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1
dGVkU3RyaW5nID0gW3NlbGYgX2F0dHJpYnV0ZVN0cmluZ0Zyb21ET01SYW5nZTpbZG9jdW1lbnQg
X2RvY3VtZW50UmFuZ2VdXTsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcpIHsKICAgICAgICAg
RG9jdW1lbnQqIGNvcmVEb2N1bWVudCA9IGNvcmUoZG9jdW1lbnQpOwotICAgICAgICBhdHRyaWJ1
dGVkU3RyaW5nID0gZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UoKlJhbmdlOjpjcmVh
dGUoKmNvcmVEb2N1bWVudCwgY29yZURvY3VtZW50LCAwLCBjb3JlRG9jdW1lbnQsIGNvcmVEb2N1
bWVudC0+Y2hpbGROb2RlQ291bnQoKSkpOworICAgICAgICBhdHRyaWJ1dGVkU3RyaW5nID0gZWRp
dGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UoKlJhbmdlOjpjcmVhdGUoKmNvcmVEb2N1bWVu
dCwgY29yZURvY3VtZW50LCAwLCBjb3JlRG9jdW1lbnQsIGNvcmVEb2N1bWVudC0+Y291bnRDaGls
ZE5vZGVzKCkpKTsKICAgICB9CiAgICAgcmV0dXJuIGF0dHJpYnV0ZWRTdHJpbmc7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJQYWdlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJQYWdlQ29vcmRpbmF0ZWRHcmFw
aGljcy5jcHAKaW5kZXggNGVmZWM1ODkzM2Q2OTBkMWI3Yzg4ZTdmZWVkMDQ3MTJlZDgyNTZlNC4u
ZDhiZmU4ODcxMzYxZjQ3MmI3NDdmZDcwYjA3NmZlZGUwZDI3MGY5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViUGFn
ZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlBhZ2VDb29yZGluYXRlZEdyYXBoaWNzLmNw
cApAQCAtNjQsOSArNjQsOSBAQCB2b2lkIFdlYlBhZ2U6OmZpbmRab29tYWJsZUFyZWFGb3JQb2lu
dChjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0IEludFNpemUmIGFyZQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIC8vIENhbmRpZGF0ZSBmb3VuZCwgYW5kIGl0IGlzIGEgYmV0dGVy
IGNhbmRpZGF0ZSB0aGFuIGl0cyBwYXJlbnQuCi0gICAgICAgIC8vIE5COiBBIHBhcmVudCBpcyBj
b25zaWRlcmVkIGEgYmV0dGVyIGNhbmRpZGF0ZSBpZmYgdGhlIG5vZGUgaXMKKyAgICAgICAgLy8g
TkI6IEEgcGFyZW50IGlzIGNvbnNpZGVyZWQgYSBiZXR0ZXIgY2FuZGlkYXRlIGlmIHRoZSBub2Rl
IGlzCiAgICAgICAgIC8vIGNvbnRhaW5lZCBieSBpdCBhbmQgaXQgaXMgdGhlIG9ubHkgY2hpbGQu
Ci0gICAgICAgIGlmIChmb3VuZCAmJiAoIW5vZGUtPnBhcmVudE5vZGUoKSB8fCBub2RlLT5wYXJl
bnROb2RlKCktPmNoaWxkTm9kZUNvdW50KCkgIT0gMSkpCisgICAgICAgIGlmIChmb3VuZCAmJiAo
IW5vZGUtPnBhcmVudE5vZGUoKSB8fCAhbm9kZS0+cGFyZW50Tm9kZSgpLT5oYXNPbmVDaGlsZCgp
KSkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2Rl
KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>