<?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>77800</bug_id>
          
          <creation_ts>2012-02-03 19:51:19 -0800</creation_ts>
          <short_desc>Provide more attribute methods in Element</short_desc>
          <delta_ts>2012-03-07 19:57:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          <blocked>75069</blocked>
    
    <blocked>77674</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Marcelo de Oliveira Filho">cmarcelo</reporter>
          <assigned_to name="Caio Marcelo de Oliveira Filho">cmarcelo</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>kling</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>549332</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-02-03 19:51:19 -0800</bug_when>
    <thetext>Provide more attribute methods in Element</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549335</commentid>
    <comment_count>1</comment_count>
      <attachid>125468</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-02-03 19:56:52 -0800</bug_when>
    <thetext>Created attachment 125468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549340</commentid>
    <comment_count>2</comment_count>
      <attachid>125470</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-02-03 20:03:18 -0800</bug_when>
    <thetext>Created attachment 125470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549347</commentid>
    <comment_count>3</comment_count>
      <attachid>125470</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-03 20:29:39 -0800</bug_when>
    <thetext>Comment on attachment 125470
Patch

Attachment 125470 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11420609</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549349</commentid>
    <comment_count>4</comment_count>
      <attachid>125470</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-03 20:34:09 -0800</bug_when>
    <thetext>Comment on attachment 125470
Patch

Attachment 125470 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11418636</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549350</commentid>
    <comment_count>5</comment_count>
      <attachid>125470</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-03 20:34:42 -0800</bug_when>
    <thetext>Comment on attachment 125470
Patch

Attachment 125470 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11420610</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549352</commentid>
    <comment_count>6</comment_count>
      <attachid>125470</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-02-03 20:36:11 -0800</bug_when>
    <thetext>Comment on attachment 125470
Patch

Gathered some feedback on IRC. WIll make an updated version of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549354</commentid>
    <comment_count>7</comment_count>
      <attachid>125470</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-02-03 20:37:41 -0800</bug_when>
    <thetext>Comment on attachment 125470
Patch

Attachment 125470 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11419595</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549372</commentid>
    <comment_count>8</comment_count>
      <attachid>125480</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-02-03 21:52:57 -0800</bug_when>
    <thetext>Created attachment 125480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549378</commentid>
    <comment_count>9</comment_count>
      <attachid>125480</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-03 22:43:00 -0800</bug_when>
    <thetext>Comment on attachment 125480
Patch

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

&gt; Source/WebCore/ChangeLog:20
&gt; +        No new tests. (OOPS!)

Nit: Remove this line.

&gt; Source/WebCore/editing/EditingStyle.cpp:836
&gt; +    // FIXME: Can it really ignore invalid style or animation svg attributes?
&gt; +    if (!element-&gt;hasAttributesWithoutUpdate())

This is definitely not right. Could you just change it to hasAttributes()?

&gt; Source/WebCore/editing/markup.cpp:109
&gt; +            unsigned length = e-&gt;attributeCount();

Isn&apos;t e-&gt;attributeCount() inlined now? Maybe we don&apos;t this local variable anymore.

&gt; Source/WebCore/html/parser/HTMLFormattingElementList.cpp:43
&gt; +static inline size_t safeAttributeCount(Element* element)

I don&apos;t think &quot;safe&quot; is appropriate adjective here. I&apos;d call this function attributeCountWithoutUpdate instead.

&gt; Source/WebCore/inspector/DOMEditor.cpp:165
&gt; +            while (oldElement-&gt;attributeCount())
&gt; +                oldElement-&gt;removeAttribute(0);

We don&apos;t have some method to remove all attributes? This looks like the most inefficient thing we can do here.

&gt; Source/WebCore/inspector/DOMEditor.cpp:173
&gt; +            size_t numAttrs = newElement-&gt;attributeCount();
&gt;              for (size_t i = 0; i &lt; numAttrs; ++i) {
&gt; -                const Attribute* attribute = newAttributeMap-&gt;attributeItem(i);
&gt; +                const Attribute* attribute = newElement-&gt;attributeItem(i);
&gt;                  oldElement-&gt;setAttribute(attribute-&gt;name(), attribute-&gt;value());
&gt;              }

We should have an Element method for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549605</commentid>
    <comment_count>10</comment_count>
      <attachid>125480</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-02-05 12:38:37 -0800</bug_when>
    <thetext>Comment on attachment 125480
Patch

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

Thanks for the comments Rniwa. I have some questions:

&gt;&gt; Source/WebCore/editing/markup.cpp:109
&gt;&gt; +            unsigned length = e-&gt;attributeCount();
&gt; 
&gt; Isn&apos;t e-&gt;attributeCount() inlined now? Maybe we don&apos;t this local variable anymore.

Should I inline other similar cases in this patch as well?

&gt;&gt; Source/WebCore/inspector/DOMEditor.cpp:165
&gt;&gt; +                oldElement-&gt;removeAttribute(0);
&gt; 
&gt; We don&apos;t have some method to remove all attributes? This looks like the most inefficient thing we can do here.

Could the will/didModifyAttribute calls affect the number of attributes (lead to another attribute addition or removal)? In this case this approach is less worse than you think. I worked with this assumption since I wasn&apos;t familiar with the code underneat.

Regardless of that, I do agree we can wrap this in a function and at least improve to be equivalent to: &quot;while (hasAttributes) removeAttribute(attributeCount() -1);&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549606</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-05 12:43:38 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 125480 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125480&amp;action=review
&gt; &gt;&gt; Source/WebCore/editing/markup.cpp:109
&gt; &gt;&gt; +            unsigned length = e-&gt;attributeCount();
&gt; &gt; 
&gt; &gt; Isn&apos;t e-&gt;attributeCount() inlined now? Maybe we don&apos;t this local variable anymore.
&gt; 
&gt; Should I inline other similar cases in this patch as well?

Maybe. It&apos;s your call.

&gt; &gt;&gt; Source/WebCore/inspector/DOMEditor.cpp:165
&gt; &gt;&gt; +                oldElement-&gt;removeAttribute(0);
&gt; &gt; 
&gt; &gt; We don&apos;t have some method to remove all attributes? This looks like the most inefficient thing we can do here.
&gt; 
&gt; Could the will/didModifyAttribute calls affect the number of attributes (lead to another attribute addition or removal)? In this case this approach is less worse than you think. I worked with this assumption since I wasn&apos;t familiar with the code underneat.

That&apos;s a good point.

&gt; Regardless of that, I do agree we can wrap this in a function and at least improve to be equivalent to: &quot;while (hasAttributes) removeAttribute(attributeCount() -1);&quot;.

Yeah, wrapping these logics in some helper function will help us understand various assumptions in a more centralized way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549607</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-05 12:44:16 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Yeah, wrapping these logics in some helper function will help us understand various assumptions in a more centralized way.

Note I&apos;m just suggesting this for a follow up, not to be merged with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549630</commentid>
    <comment_count>13</comment_count>
      <attachid>125541</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-02-05 16:30:51 -0800</bug_when>
    <thetext>Created attachment 125541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549634</commentid>
    <comment_count>14</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-02-05 16:39:15 -0800</bug_when>
    <thetext>Rebased version incorporating some of rniwa suggestions. Let&apos;s see if the EWS are fine with it.

Regarding the attributeCount(), I think is a bit soon to assume this function will be always just an accessor to a member variable. Since &quot;attribute count&quot; conceptually depends on lazily updated data (the invalid attributes), we may want in the future to make attributeCount() make sure the data is updated.

Ryosuke, could you take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549650</commentid>
    <comment_count>15</comment_count>
      <attachid>125541</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-05 17:34:39 -0800</bug_when>
    <thetext>Comment on attachment 125541
Patch

Attachment 125541 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11432078

New failing tests:
inspector/elements/set-outer-html-2.html
inspector/elements/set-outer-html.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549946</commentid>
    <comment_count>16</comment_count>
      <attachid>125628</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-02-06 06:24:07 -0800</bug_when>
    <thetext>Created attachment 125628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549949</commentid>
    <comment_count>17</comment_count>
      <attachid>125630</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-02-06 06:30:43 -0800</bug_when>
    <thetext>Created attachment 125630
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549950</commentid>
    <comment_count>18</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-02-06 06:31:08 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 125541 [details])
&gt; Attachment 125541 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/11432078
&gt; 
&gt; New failing tests:
&gt; inspector/elements/set-outer-html-2.html
&gt; inspector/elements/set-outer-html.html

I&apos;ve tried to reuse existing logic of Element::setAttributesFromElement() to avoid manually copying, but its code inside NamedNodeMap doesn&apos;t take Inspector into account (will/didModifyAttribute). I prefer to handle this as a separate change too. So the current patch includes a FIXME for this case too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550111</commentid>
    <comment_count>19</comment_count>
      <attachid>125630</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-06 11:03:21 -0800</bug_when>
    <thetext>Comment on attachment 125630
Patch

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

&gt; Source/WebCore/dom/Element.h:135
&gt; +    // This variant will not update the potentially invalid attributes. To be used when not interested
&gt; +    // in style attribute or one of the SVG animation attributes.
&gt; +    bool hasAttributesWithoutUpdate() const;

Instead of adding comments, should we rename the function to hasAttributesWithoutUpdatingStyleAndSVGAnimations()?

&gt; Source/WebCore/dom/Element.h:160
&gt; +    // Internal methods that assume the existence of attribute storage, one should use hasAttributes()
&gt; +    // before calling them.
&gt; +    size_t attributeCount() const;
&gt; +    Attribute* attributeItem(unsigned index) const;
&gt; +    Attribute* getAttributeItem(const QualifiedName&amp;) const;
&gt; +    void removeAttribute(unsigned index);

Can we eventually make them private/protected?

&gt; Source/WebCore/xml/XPathNodeSet.cpp:216
&gt; +        Element* e = toElement(n);

Please spell-out element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550209</commentid>
    <comment_count>20</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-02-06 12:50:41 -0800</bug_when>
    <thetext>Committed r106833: &lt;http://trac.webkit.org/changeset/106833&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550213</commentid>
    <comment_count>21</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-02-06 12:53:04 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 125630 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125630&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Element.h:135
&gt; &gt; +    // This variant will not update the potentially invalid attributes. To be used when not interested
&gt; &gt; +    // in style attribute or one of the SVG animation attributes.
&gt; &gt; +    bool hasAttributesWithoutUpdate() const;
&gt; 
&gt; Instead of adding comments, should we rename the function to hasAttributesWithoutUpdatingStyleAndSVGAnimations()?

We had a follow up discussion in IRC and I created bug 77892, adding Darin to the CC.


&gt; &gt; Source/WebCore/dom/Element.h:160
&gt; &gt; +    // Internal methods that assume the existence of attribute storage, one should use hasAttributes()
&gt; &gt; +    // before calling them.
&gt; &gt; +    size_t attributeCount() const;
&gt; &gt; +    Attribute* attributeItem(unsigned index) const;
&gt; &gt; +    Attribute* getAttributeItem(const QualifiedName&amp;) const;
&gt; &gt; +    void removeAttribute(unsigned index);
&gt; 
&gt; Can we eventually make them private/protected?

Ack. I&apos;ll keep this in mind.


&gt; &gt; Source/WebCore/xml/XPathNodeSet.cpp:216
&gt; &gt; +        Element* e = toElement(n);
&gt; 
&gt; Please spell-out element.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550972</commentid>
    <comment_count>22</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-07 07:36:03 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Committed r106833: &lt;http://trac.webkit.org/changeset/106833&gt;

Reopen, because it broke the Mac builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550984</commentid>
    <comment_count>23</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-07 07:59:25 -0800</bug_when>
    <thetext>Sorry, but it is absolutely innocent, r106932 is the culprit.
( r106932 and r106833 are so similar and they modified the problematic file :) )</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125468</attachid>
            <date>2012-02-03 19:56:52 -0800</date>
            <delta_ts>2012-02-03 20:03:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77800-20120204005649.patch</filename>
            <type>text/plain</type>
            <size>46845</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhjMGZlYmVmOTk0YWFh
NjIzY2FhNDY1YTZkNjUwYzBiZmNkYWQzNi4uNmI1MzEzMTlkODE0ZjNkZjE1ZjJmMThiYTNjZjYy
NDk3NDRlOGI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTAyLTAzICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgUHJvdmlkZSBtb3JlIGF0dHJpYnV0ZSBtZXRob2RzIGluIEVsZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHRoZSBj
bGllbnRzIG9mIE5hbWVkTm9kZU1hcC4gVGhpcyB3aWxsIG1ha2UgZWFzaWVyIHRvIGNoYW5nZSB0
aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2Ygb3VyIGF0dHJpYnV0ZSBzdG9yYWdlLiBUaGUg
Y2xpZW50cyBub3cgdXNlIEVsZW1lbnQgbWV0aG9kcworICAgICAgICB0aGF0IGV4cG9zZSBBdHRy
aWJ1dGUqIGFjY2Vzc29ycy4KKworICAgICAgICBBdmFpbGFiaWxpdHkgb2YgYXR0cmlidXRlcyBu
b3cgaXMgY2hlY2tlZCB3aXRoIGhhc0F0dHJpYnV0ZXMoKSBhbmQKKyAgICAgICAgZmFzdEhhc0F0
dHJpYnV0ZXMoKS4gQWZ0ZXIgdGhhdCwgaWYgdGhlcmUgYXJlIGF0dHJpYnV0ZXMsIHRoZXkgY2Fu
IGJlIGFjY2Vzc2VkIGJ5CisgICAgICAgIGluZGV4IHZpYSBhdHRyaWJ1dGVDb3VudCgpL2F0dHJp
YnV0ZUl0ZW0oKSwgYXMgd2VsbCBhcyBieSBRdWFsaWZpZWROYW1lLiBUaG9zZQorICAgICAgICBh
Y2Nlc3NvcnMgYXNzdW1lIHRoZXJlIGFyZSBhbiBhdHRyaWJ1dGUgc3RvcmFnZSBhbmQgd2lsbCBh
c3NlcnQgb3RoZXJ3aXNlLgorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hBbGxSdWxlcyk6CisgICAg
ICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphbnlBdHRy
aWJ1dGVNYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKToKKyAgICAgICAg
KiBkb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhc2V0
RE9NU3RyaW5nTWFwOjpnZXROYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhc2V0RE9NU3Ry
aW5nTWFwOjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6OmNv
bnRhaW5zKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmltcG9ydE5vZGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAg
IChFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZhc3RIYXNBdHRyaWJ1dGVz
KTogY2hlY2sgYXR0cmlidXRlCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmF0dHJpYnV0ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0
dHJpYnV0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0QXR0cmlidXRlSXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRGVmYXVsdE5hbWVz
cGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpsb29rdXBOYW1lc3BhY2VVUkkpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6bG9va3VwTmFtZXNwYWNlUHJlZml4KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKToKKyAgICAgICAgKiBlZGl0aW5n
L01hcmt1cEFjY3VtdWxhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxh
dG9yOjphcHBlbmRFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb21wbGV0ZVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFy
a3VwQWNjdW11bGF0b3I6OmFwcGVuZEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVk
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50OjpwYXJhbWV0
ZXJzRm9yUGx1Z2luKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgICog
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0
RWxlbWVudDo6cGFyYW1ldGVyc0ZvclBsdWdpbik6CisgICAgICAgICogaHRtbC9IVE1MUGFyYW1F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJhbUVsZW1lbnQ6OmlzVVJMQXR0
cmlidXRlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNhZmVBdHRyaWJ1dGVDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0Ojp0cnlUb0Vuc3VyZU5vYWhzQXJrQ29u
ZGl0aW9uUXVpY2tseSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybWF0dGluZ0VsZW1lbnRM
aXN0OjplbnN1cmVOb2Foc0Fya0NvbmRpdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL0RPTUVk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OmlubmVyUGF0Y2hOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6Y3JlYXRlRGlnZXN0KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JBdHRyaWJ1dGVTdHlsZXMpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJjaCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBw
YWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2hhcnNldFNwZWNp
ZnlpbmdOb2RlKToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgor
ICAgICAgICAqIHhtbC9YUGF0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0
aDo6RnVuTGFuZzo6ZXZhbHVhdGUpOgorICAgICAgICAqIHhtbC9YUGF0aE5vZGVTZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5vZGVTZXQ6OnRyYXZlcnNhbFNvcnQpOgorICAgICAg
ICAqIHhtbC9YUGF0aFN0ZXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlN0ZXA6Om5v
ZGVzSW5BeGlzKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1s
Mi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQ
YXJzZXIpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MVHJlZUJ1aWxkZXI6OlhNTFRyZWVCdWlsZGVyKToKKwogMjAxMi0wMi0w
MyAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCBidWlsZCBmaXggYXR0ZW1wdCBhZnRlciByMTA2Njk1LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBhOTY3NjFiZWY0ZDQ4MThlZDliMTM5ODk0ZjI5YzI3M2ZhYzJmMTA4Li44
YWNlYzQ3MzNjNzNmMzU0MTNjNDQ1NTIyODZlNGNmMGZhMDI4ODRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAyLTAzICBDYWlvIE1hcmNlbG8gZGUg
T2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAg
UHJvdmlkZSBtb3JlIGF0dHJpYnV0ZSBtZXRob2RzIGluIEVsZW1lbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODAwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViUGFnZVNlcmlhbGl6ZXJJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVNlcmlhbGl6ZXJJbXBsOjpvcGVuVGFn
VG9TdHJpbmcpOiBhY2Nlc3MgYXR0cmlidXRlcyB2aWEgRWxlbWVudCBpbnRlcmZhY2UuCisKIDIw
MTItMDItMDMgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzY5MQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRl
eCBkOTUyMTIwZTdhMzBkOGEzOGFhMTFhMmVlYjZkZTZmMTQ4ZjNmYTIwLi45NDIyMTViZTI2MzEz
ZjExMjZjY2NjMjRjYTliZDZmNmMxYzdkYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDEyLTAyLTAzICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9s
aXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUHJvdmlkZSBtb3JlIGF0dHJpYnV0ZSBt
ZXRob2RzIGluIEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc3ODAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmF0
dHJpYnV0ZU5hbWVzKTogYWNjZXNzIGF0dHJpYnV0ZXMgdmlhIEVsZW1lbnQgaW50ZXJmYWNlLgor
CiAyMDEyLTAyLTAzICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW5hbWUgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaC8uY3BwIHRvIFN0eWxlUHJvcGVy
dHlTZXQuaC8uY3BwIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4
IDE2OWU1ZmRmZDA5MDQ4MTMyMDY4MDNlZjhlNTRkNjc4ODFlNzZjNzYuLjIyMWIxMWRiOTU5YzQz
NjBhOTE4YTkyZGQ1ZTZkMzQ4MmE2NzI1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAKQEAgLTk5NiwxMCArOTk2LDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
bWF0Y2hBbGxSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0KQogICAgICAgICAKICAgICAvLyBOb3cg
Y2hlY2sgYXV0aG9yIHJ1bGVzLCBiZWdpbm5pbmcgZmlyc3Qgd2l0aCBwcmVzZW50YXRpb25hbCBh
dHRyaWJ1dGVzIG1hcHBlZCBmcm9tIEhUTUwuCiAgICAgaWYgKG1fc3R5bGVkRWxlbWVudCkgewot
ICAgICAgICBpZiAoY29uc3QgTmFtZWROb2RlTWFwKiBtYXAgPSBtX3N0eWxlZEVsZW1lbnQtPmF0
dHJpYnV0ZU1hcCgpKSB7CisgICAgICAgIGlmIChtX3N0eWxlZEVsZW1lbnQtPmZhc3RIYXNBdHRy
aWJ1dGVzKCkpIHsKICAgICAgICAgICAgIC8vIFdhbGsgdGhlIGVsZW1lbnQncyBhdHRyaWJ1dGUg
bWFwIGFuZCBhZGQgYWxsIG1hcHBlZCBhdHRyaWJ1dGUgZGVjbGFyYXRpb25zLgotICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hcC0+bGVuZ3RoKCk7ICsraSkgewotICAgICAg
ICAgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gbWFwLT5hdHRyaWJ1dGVJdGVtKGkpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc3R5bGVkRWxlbWVudC0+YXR0
cmlidXRlQ291bnQoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1
dGUgPSBtX3N0eWxlZEVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgICAgICAgICAg
aWYgKCFhdHRyaWJ1dGUtPmRlY2woKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZS0+aXNNYXBwZWRBdHRyaWJ1dGUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDU4Njc3NDY0N2EwODdkM2Ew
YzJkN2YyODJjYjNiYjAzMzZmOTQ0MDUuLjhhNzQzODA1MjlkMWMwOWJmMWNkMTNmNTkzNDNhNGNm
NmYzMTUxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC02NzEs
MTAgKzY3MSwxMSBAQCBzdGF0aWMgYm9vbCBhdHRyaWJ1dGVWYWx1ZU1hdGNoZXMoQXR0cmlidXRl
KiBhdHRyaWJ1dGVJdGVtLCBDU1NTZWxlY3Rvcjo6TWF0Y2ggbQogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGF0aWMgYm9vbCBhbnlBdHRyaWJ1dGVNYXRjaGVzKE5hbWVkTm9kZU1hcCogYXR0cmli
dXRlcywgQ1NTU2VsZWN0b3I6Ok1hdGNoIG1hdGNoLCBjb25zdCBRdWFsaWZpZWROYW1lJiBzZWxl
Y3RvckF0dHIsIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0b3JWYWx1ZSwgYm9vbCBjYXNlU2Vu
c2l0aXZlKQorc3RhdGljIGJvb2wgYW55QXR0cmlidXRlTWF0Y2hlcyhFbGVtZW50KiBlbGVtZW50
LCBDU1NTZWxlY3Rvcjo6TWF0Y2ggbWF0Y2gsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9y
QXR0ciwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3RvclZhbHVlLCBib29sIGNhc2VTZW5zaXRp
dmUpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLT5sZW5ndGgoKTsg
KytpKSB7Ci0gICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlSXRlbSA9IGF0dHJpYnV0ZXMtPmF0
dHJpYnV0ZUl0ZW0oaSk7CisgICAgQVNTRVJUKGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGVzKCkp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsg
KytpKSB7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlSXRlbSA9IGVsZW1lbnQtPmF0dHJp
YnV0ZUl0ZW0oaSk7CiAKICAgICAgICAgaWYgKCFTZWxlY3RvckNoZWNrZXI6OmF0dHJpYnV0ZU5h
bWVNYXRjaGVzKGF0dHJpYnV0ZUl0ZW0sIHNlbGVjdG9yQXR0cikpCiAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTcwMSwxMyArNzAyLDEyIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGUsIFBzZXVkb0lkJiBkCiAgICAg
aWYgKHNlbC0+aXNBdHRyaWJ1dGVTZWxlY3RvcigpKSB7CiAgICAgICAgIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHIgPSBzZWwtPmF0dHJpYnV0ZSgpOwogCi0gICAgICAgIE5hbWVkTm9kZU1hcCog
YXR0cmlidXRlcyA9IGUtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIGlmICghYXR0cmli
dXRlcykKKyAgICAgICAgaWYgKCFlLT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gIW1fZG9jdW1lbnRJc0hU
TUwgfHwgIWh0bWxBdHRyaWJ1dGVIYXNDYXNlSW5zZW5zaXRpdmVWYWx1ZShhdHRyKTsKIAotICAg
ICAgICBpZiAoIWFueUF0dHJpYnV0ZU1hdGNoZXMoYXR0cmlidXRlcywgc3RhdGljX2Nhc3Q8Q1NT
U2VsZWN0b3I6Ok1hdGNoPihzZWwtPm1fbWF0Y2gpLCBhdHRyLCBzZWwtPnZhbHVlKCksIGNhc2VT
ZW5zaXRpdmUpKQorICAgICAgICBpZiAoIWFueUF0dHJpYnV0ZU1hdGNoZXMoZSwgc3RhdGljX2Nh
c3Q8Q1NTU2VsZWN0b3I6Ok1hdGNoPihzZWwtPm1fbWF0Y2gpLCBhdHRyLCBzZWwtPnZhbHVlKCks
IGNhc2VTZW5zaXRpdmUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDNmOTQ2OWU1ZDc5YjA5YzlhYjg0MmU3
NDJkODVmYWQ3MTdiOTQ3MWYuLjVjZDhjNzczZTNkYzYwYTk5MjM5OGJkOGE1Y2NkOTgzYzc4OThl
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTE4NSwxMiArMTg1LDEx
IEBAIGlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6YXR0cmlidXRlTmFtZU1hdGNoZXMoY29u
c3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUsIGNvCiAKIGlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tl
cjo6Y2hlY2tFeGFjdEF0dHJpYnV0ZShjb25zdCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFs
aWZpZWROYW1lJiBzZWxlY3RvckF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwq
IHZhbHVlKQogewotICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFwID0gZWxlbWVudC0+YXR0
cmlidXRlTWFwKCk7Ci0gICAgaWYgKCFhdHRyaWJ1dGVNYXApCisgICAgaWYgKCFlbGVtZW50LT5m
YXN0SGFzQXR0cmlidXRlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQg
c2l6ZSA9IGF0dHJpYnV0ZU1hcC0+bGVuZ3RoKCk7CisgICAgdW5zaWduZWQgc2l6ZSA9IGVsZW1l
bnQtPmF0dHJpYnV0ZUNvdW50KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewotICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZU1hcC0+YXR0
cmlidXRlSXRlbShpKTsKKyAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlbGVtZW50LT5h
dHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICBpZiAoYXR0cmlidXRlTmFtZU1hdGNoZXMoYXR0cmli
dXRlLCBzZWxlY3RvckF0dHJpYnV0ZU5hbWUpICYmICghdmFsdWUgfHwgYXR0cmlidXRlLT52YWx1
ZSgpLmltcGwoKSA9PSB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAKaW5kZXggZGZmMGFkNzUw
NzIwNjdlNTU2Y2UxZTI4NjE0NTEyNDI3ZTEzMGMwMy4uMzgyMDIyZWNkYzNhMGM0ODRjMTJjOTk1
MjQxMzQ2OWY4YTVlYTkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRE
T01TdHJpbmdNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5n
TWFwLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiTmFt
ZWROb2RlTWFwLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE0MiwyNyArMTQxLDI3IEBAIHZvaWQgRGF0YXNl
dERPTVN0cmluZ01hcDo6ZGVyZWYoKQogCiB2b2lkIERhdGFzZXRET01TdHJpbmdNYXA6OmdldE5h
bWVzKFZlY3RvcjxTdHJpbmc+JiBuYW1lcykKIHsKLSAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0
ZU1hcCA9IG1fZWxlbWVudC0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAoYXR0cmlidXRl
TWFwKSB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGF0dHJpYnV0ZU1hcC0+bGVuZ3RoKCk7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAg
ICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVNYXAtPmF0dHJpYnV0ZUl0ZW0o
aSk7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZEF0dHJpYnV0ZU5hbWUoYXR0cmlidXRlLT5sb2Nh
bE5hbWUoKSkpCi0gICAgICAgICAgICAgICAgbmFtZXMuYXBwZW5kKGNvbnZlcnRBdHRyaWJ1dGVO
YW1lVG9Qcm9wZXJ0eU5hbWUoYXR0cmlidXRlLT5sb2NhbE5hbWUoKSkpOwotICAgICAgICB9Cisg
ICAgaWYgKCFtX2VsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgdW5zaWduZWQgbGVuZ3RoID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBBdHRyaWJ1dGUq
IGF0dHJpYnV0ZSA9IG1fZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYgKGlz
VmFsaWRBdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkpKQorICAgICAgICAgICAg
bmFtZXMuYXBwZW5kKGNvbnZlcnRBdHRyaWJ1dGVOYW1lVG9Qcm9wZXJ0eU5hbWUoYXR0cmlidXRl
LT5sb2NhbE5hbWUoKSkpOwogICAgIH0KIH0KIAogU3RyaW5nIERhdGFzZXRET01TdHJpbmdNYXA6
Oml0ZW0oY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRl
TWFwID0gbV9lbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmIChhdHRyaWJ1dGVN
YXApIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmlidXRlTWFwLT5sZW5ndGgoKTsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAg
ICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShp
KTsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWVNYXRjaGVzQXR0cmlidXRlTmFtZShuYW1l
LCBhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYXR0cmli
dXRlLT52YWx1ZSgpOwotICAgICAgICB9CisgICAgaWYgKCFtX2VsZW1lbnQtPmhhc0F0dHJpYnV0
ZXMoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0g
bV9lbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7IGkrKykgeworICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IG1fZWxlbWVu
dC0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZU1hdGNoZXNBdHRy
aWJ1dGVOYW1lKG5hbWUsIGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkpKQorICAgICAgICAgICAgcmV0
dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKICAgICB9CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CkBA
IC0xNzAsMTUgKzE2OSwxNiBAQCBTdHJpbmcgRGF0YXNldERPTVN0cmluZ01hcDo6aXRlbShjb25z
dCBTdHJpbmcmIG5hbWUpCiAKIGJvb2wgRGF0YXNldERPTVN0cmluZ01hcDo6Y29udGFpbnMoY29u
c3QgU3RyaW5nJiBuYW1lKQogewotICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFwID0gbV9l
bGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmIChhdHRyaWJ1dGVNYXApIHsKLSAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmlidXRlTWFwLT5sZW5ndGgoKTsKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBBdHRy
aWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpKTsKLSAgICAg
ICAgICAgIGlmIChwcm9wZXJ0eU5hbWVNYXRjaGVzQXR0cmlidXRlTmFtZShuYW1lLCBhdHRyaWJ1
dGUtPmxvY2FsTmFtZSgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fQorICAgIGlmICghbV9lbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fZWxlbWVudC0+YXR0cmlidXRlQ291bnQo
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
QXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAg
ICAgIGlmIChwcm9wZXJ0eU5hbWVNYXRjaGVzQXR0cmlidXRlTmFtZShuYW1lLCBhdHRyaWJ1dGUt
PmxvY2FsTmFtZSgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZWRiYmNkZDNkNWYy
MjUzZTYyODlkOWY1YjljNDU2ODVhNzY4NTJkZi4uYzM5NWNiNDQxODA2M2ViNTUyN2IyYTZiMmMy
N2EzZTM4MGY2OWFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC04NTAsMTEgKzg1MCwx
MCBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUqIGltcG9ydGVk
Tm9kZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25DbwogICAgICAgICBpZiAoZWMpCiAgICAgICAgICAg
ICByZXR1cm4gMDsKIAotICAgICAgICBOYW1lZE5vZGVNYXAqIGF0dHJzID0gb2xkRWxlbWVudC0+
dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICAgICAgaWYgKGF0dHJzKSB7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBsZW5ndGggPSBhdHRycy0+bGVuZ3RoKCk7CisgICAgICAgIGlmIChvbGRFbGVtZW50
LT5oYXNBdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IG9sZEVs
ZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBh
dHRycy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIg
PSBvbGRFbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgICAgIG5ld0VsZW1l
bnQtPnNldEF0dHJpYnV0ZShhdHRyLT5uYW1lKCksIGF0dHItPnZhbHVlKCkuaW1wbCgpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggM2MyNzY1OTY1ZTIy
ZmU2NDdlY2UxZWJmZWUxY2MzNmE2NGZkYTA2MS4uOWVhOWNjN2U1NGY0NDQwOTAzMWJlYjMwZDY3
MTI5YWU0ZDIyN2JhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0xMjMsNiArMTIzLDcgQEAgcHVi
bGljOgogCiAgICAgLy8gQ2FsbCB0aGlzIHRvIGdldCB0aGUgdmFsdWUgb2YgYW4gYXR0cmlidXRl
IHRoYXQgaXMga25vd24gbm90IHRvIGJlIHRoZSBzdHlsZQogICAgIC8vIGF0dHJpYnV0ZSBvciBv
bmUgb2YgdGhlIFNWRyBhbmltYXRhYmxlIGF0dHJpYnV0ZXMuCisgICAgYm9vbCBmYXN0SGFzQXR0
cmlidXRlcygpIGNvbnN0OwogICAgIGJvb2wgZmFzdEhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmYXN0R2V0QXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICNpZm5kZWYgTkRFQlVHCkBAIC0xNDksNiAr
MTUwLDEyIEBAIHB1YmxpYzoKICAgICAvLyBzbyB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBzdWl0YWJs
ZSBmb3Igbm9uLXN0eWxlIHVzZXMuCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZEZvclN0eWxl
UmVzb2x1dGlvbigpIGNvbnN0OwogCisgICAgLy8gSW50ZXJuYWwgbWV0aG9kcyB0aGF0IGFzc3Vt
ZSB0aGUgRWxlbWVudCBoYXMgYXR0cmlidXRlcy4KKyAgICBzaXplX3QgYXR0cmlidXRlQ291bnQo
KSBjb25zdDsKKyAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZUl0ZW0odW5zaWduZWQgaW5kZXgpIGNv
bnN0OworICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1l
JikgY29uc3Q7CisgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUodW5zaWduZWQgaW5kZXgpOworCiAg
ICAgdm9pZCBzY3JvbGxJbnRvVmlldyhib29sIGFsaWduVG9Ub3AgPSB0cnVlKTsKICAgICB2b2lk
IHNjcm9sbEludG9WaWV3SWZOZWVkZWQoYm9vbCBjZW50ZXJJZk5lZWRlZCA9IHRydWUpOwogCkBA
IC01NzYsNiArNTgzLDExIEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OndpbGxSZW1vdmVBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljCiAgICAgICAgIHdpbGxN
b2RpZnlBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIG51bGxBdG9tKTsKIH0KIAoraW5saW5lIGJvb2wg
RWxlbWVudDo6ZmFzdEhhc0F0dHJpYnV0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2F0dHJp
YnV0ZU1hcCAmJiAhbV9hdHRyaWJ1dGVNYXAtPmlzRW1wdHkoKTsKK30KKwogaW5saW5lIGJvb2wg
RWxlbWVudDo6ZmFzdEhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25z
dAogewogICAgIEFTU0VSVChmYXN0QXR0cmlidXRlTG9va3VwQWxsb3dlZChuYW1lKSk7CkBAIC02
MTcsNiArNjI5LDMwIEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OnNldElkQXR0cmlidXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUpCiAgICAgc2V0QXR0cmlidXRlKGRvY3VtZW50KCktPmlkQXR0
cmlidXRlTmFtZSgpLCB2YWx1ZSk7CiB9CiAKK2lubGluZSBzaXplX3QgRWxlbWVudDo6YXR0cmli
dXRlQ291bnQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2F0dHJpYnV0ZU1hcCk7CisgICAgcmV0
dXJuIG1fYXR0cmlidXRlTWFwLT5sZW5ndGgoKTsKK30KKworaW5saW5lIEF0dHJpYnV0ZSogRWxl
bWVudDo6YXR0cmlidXRlSXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
bV9hdHRyaWJ1dGVNYXApOworICAgIHJldHVybiBtX2F0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRl
bShpbmRleCk7Cit9CisKK2lubGluZSBBdHRyaWJ1dGUqIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZUl0
ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9hdHRy
aWJ1dGVNYXApOworICAgIHJldHVybiBtX2F0dHJpYnV0ZU1hcC0+Z2V0QXR0cmlidXRlSXRlbShu
YW1lKTsKK30KKworaW5saW5lIHZvaWQgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKHVuc2lnbmVk
IGluZGV4KQoreworICAgIEFTU0VSVChtX2F0dHJpYnV0ZU1hcCk7CisgICAgbV9hdHRyaWJ1dGVN
YXAtPnJlbW92ZUF0dHJpYnV0ZShpbmRleCk7Cit9CisKIGlubGluZSBOYW1lZE5vZGVNYXAqIEVs
ZW1lbnQ6OmVuc3VyZUF0dHJpYnV0ZU1hcCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2F0dHJpYnV0
ZU1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA3MzgwMDBmZWNkMzE0YWUwZGNiZWY3YTJhOWNkODEx
ZjU4MjUzNTNmLi5iODRhYTFlZWI0YTZlMzU5YzJkODAxM2E2ZjRlNGNmZTgzMmJmMTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCkBAIC0xODMxLDkgKzE4MzEsOSBAQCBib29sIE5vZGU6OmlzRGVmYXVsdE5h
bWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSU1heWJlRW1wdHkpIGNvbnN0
CiAgICAgICAgICAgICBpZiAoZWxlbS0+cHJlZml4KCkuaXNOdWxsKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVsZW0tPm5hbWVzcGFjZVVSSSgpID09IG5hbWVzcGFjZVVSSTsKIAotICAgICAg
ICAgICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cnMgPSBlbGVtLT51cGRhdGVkQXR0cmlidXRlcygp
KSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJzLT5sZW5n
dGgoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IGF0dHJz
LT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICAgICAgaWYgKGVsZW0tPmhhc0F0dHJpYnV0ZXMo
KSkgeworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtLT5hdHRy
aWJ1dGVDb3VudCgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRy
ID0gZWxlbS0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChhdHRyLT5sb2NhbE5hbWUoKSA9PSB4bWxuc0F0b20pCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gYXR0ci0+dmFsdWUoKSA9PSBuYW1lc3BhY2VVUkk7CkBA
IC0xOTE3LDkgKzE5MTcsOSBAQCBTdHJpbmcgTm9kZTo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0
IFN0cmluZyAmcHJlZml4KSBjb25zdAogICAgICAgICAgICAgaWYgKCFlbGVtLT5uYW1lc3BhY2VV
UkkoKS5pc051bGwoKSAmJiBlbGVtLT5wcmVmaXgoKSA9PSBwcmVmaXgpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVsZW0tPm5hbWVzcGFjZVVSSSgpOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBpZiAoTmFtZWROb2RlTWFwKiBhdHRycyA9IGVsZW0tPnVwZGF0ZWRBdHRyaWJ1dGVzKCkpIHsK
LSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cnMtPmxlbmd0aCgp
OyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlICphdHRyID0gYXR0cnMtPmF0
dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAgICBpZiAoZWxlbS0+aGFzQXR0cmlidXRlcygpKSB7
CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW0tPmF0dHJpYnV0
ZUNvdW50KCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBl
bGVtLT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGF0dHItPnByZWZpeCgpID09IHhtbG5zQXRvbSAmJiBhdHRyLT5sb2NhbE5h
bWUoKSA9PSBwcmVmaXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYXR0ci0+dmFs
dWUoKS5pc0VtcHR5KCkpCkBAIC0xOTcxLDkgKzE5NzEsMTEgQEAgU3RyaW5nIE5vZGU6Omxvb2t1
cE5hbWVzcGFjZVByZWZpeChjb25zdCBBdG9taWNTdHJpbmcgJl9uYW1lc3BhY2VVUkksIGNvbnN0
IEVsZW0KICAgICBpZiAob3JpZ2luYWxFbGVtZW50LT5sb29rdXBOYW1lc3BhY2VVUkkocHJlZml4
KCkpID09IF9uYW1lc3BhY2VVUkkpCiAgICAgICAgIHJldHVybiBwcmVmaXgoKTsKICAgICAKLSAg
ICBpZiAoTmFtZWROb2RlTWFwKiBhdHRycyA9IHRvRWxlbWVudCh0aGlzKS0+dXBkYXRlZEF0dHJp
YnV0ZXMoKSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cnMtPmxlbmd0
aCgpOyBpKyspIHsKLSAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IGF0dHJzLT5hdHRyaWJ1
dGVJdGVtKGkpOworICAgIEFTU0VSVChpc0VsZW1lbnROb2RlKCkpOworICAgIGNvbnN0IEVsZW1l
bnQqIHRoaXNFbGVtZW50ID0gdG9FbGVtZW50KHRoaXMpOworICAgIGlmICh0aGlzRWxlbWVudC0+
aGFzQXR0cmlidXRlcygpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlz
RWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsgaSsrKSB7CisgICAgICAgICAgICBBdHRyaWJ1dGUq
IGF0dHIgPSB0aGlzRWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKGF0dHItPnByZWZpeCgpID09IHhtbG5zQXRvbSAmJiBhdHRyLT52YWx1ZSgp
ID09IF9uYW1lc3BhY2VVUkkKICAgICAgICAgICAgICAgICAgICAgJiYgb3JpZ2luYWxFbGVtZW50
LT5sb29rdXBOYW1lc3BhY2VVUkkoYXR0ci0+bG9jYWxOYW1lKCkpID09IF9uYW1lc3BhY2VVUkkp
CkBAIC0yMTE0LDE3ICsyMTE2LDE3IEBAIHVuc2lnbmVkIHNob3J0IE5vZGU6OmNvbXBhcmVEb2N1
bWVudFBvc2l0aW9uKE5vZGUqIG90aGVyTm9kZSkKICAgICAgICAgY2hhaW4yLmFwcGVuZChhdHRy
Mik7CiAgICAgCiAgICAgaWYgKGF0dHIxICYmIGF0dHIyICYmIHN0YXJ0MSA9PSBzdGFydDIgJiYg
c3RhcnQxKSB7Ci0gICAgICAgIC8vIFdlIGFyZSBjb21wYXJpbmcgdHdvIGF0dHJpYnV0ZXMgb24g
dGhlIHNhbWUgbm9kZS4gIENyYXdsIG91ciBhdHRyaWJ1dGUgbWFwCi0gICAgICAgIC8vIGFuZCBz
ZWUgd2hpY2ggb25lIHdlIGhpdCBmaXJzdC4KLSAgICAgICAgTmFtZWROb2RlTWFwKiBtYXAgPSBh
dHRyMS0+b3duZXJFbGVtZW50KCktPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIHVuc2ln
bmVkIGxlbmd0aCA9IG1hcC0+bGVuZ3RoKCk7CisgICAgICAgIC8vIFdlIGFyZSBjb21wYXJpbmcg
dHdvIGF0dHJpYnV0ZXMgb24gdGhlIHNhbWUgbm9kZS4gQ3Jhd2wgb3VyIGF0dHJpYnV0ZSBtYXAg
YW5kIHNlZSB3aGljaCBvbmUgd2UgaGl0IGZpcnN0LgorICAgICAgICBFbGVtZW50KiBvd25lcjEg
PSBhdHRyMS0+b3duZXJFbGVtZW50KCk7CisgICAgICAgIG93bmVyMS0+dXBkYXRlZEF0dHJpYnV0
ZXMoKTsgLy8gRm9yY2UgdXBkYXRlIGludmFsaWQgYXR0cmlidXRlcy4KKyAgICAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gb3duZXIxLT5hdHRyaWJ1dGVDb3VudCgpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIC8vIElmIG5laXRoZXIg
b2YgdGhlIHR3byBkZXRlcm1pbmluZyBub2RlcyBpcyBhIGNoaWxkIG5vZGUgYW5kIG5vZGVUeXBl
IGlzIHRoZSBzYW1lIGZvciBib3RoIGRldGVybWluaW5nIG5vZGVzLCB0aGVuIGFuIAogICAgICAg
ICAgICAgLy8gaW1wbGVtZW50YXRpb24tZGVwZW5kZW50IG9yZGVyIGJldHdlZW4gdGhlIGRldGVy
bWluaW5nIG5vZGVzIGlzIHJldHVybmVkLiBUaGlzIG9yZGVyIGlzIHN0YWJsZSBhcyBsb25nIGFz
IG5vIG5vZGVzIG9mCiAgICAgICAgICAgICAvLyB0aGUgc2FtZSBub2RlVHlwZSBhcmUgaW5zZXJ0
ZWQgaW50byBvciByZW1vdmVkIGZyb20gdGhlIGRpcmVjdCBjb250YWluZXIuIFRoaXMgd291bGQg
YmUgdGhlIGNhc2UsIGZvciBleGFtcGxlLCAKICAgICAgICAgICAgIC8vIHdoZW4gY29tcGFyaW5n
IHR3byBhdHRyaWJ1dGVzIG9mIHRoZSBzYW1lIGVsZW1lbnQsIGFuZCBpbnNlcnRpbmcgb3IgcmVt
b3ZpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIG1pZ2h0IGNoYW5nZSAKICAgICAgICAgICAgIC8v
IHRoZSBvcmRlciBiZXR3ZWVuIGV4aXN0aW5nIGF0dHJpYnV0ZXMuCi0gICAgICAgICAgICBBdHRy
aWJ1dGUqIGF0dHIgPSBtYXAtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAgICBBdHRyaWJ1
dGUqIGF0dHIgPSBvd25lcjEtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgICAgICBpZiAoYXR0
cjEtPmF0dHIoKSA9PSBhdHRyKQogICAgICAgICAgICAgICAgIHJldHVybiBET0NVTUVOVF9QT1NJ
VElPTl9JTVBMRU1FTlRBVElPTl9TUEVDSUZJQyB8IERPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lO
RzsKICAgICAgICAgICAgIGlmIChhdHRyMi0+YXR0cigpID09IGF0dHIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCmluZGV4IDUyMjZiMjE0YzI1ODExNzYw
OTM1YzU2Njk2NGU3NjMwZjAyZjlkMTguLjMwNmE4NDY1NThlNmJjMmExNmRhODY3ZjJhMjBjODc2
ZDYyMmUzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11
bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3Iu
Y3BwCkBAIC0zNDksMTEgKzM0OSwxMCBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRF
bGVtZW50KFN0cmluZ0J1aWxkZXImIG91dCwgRWxlbWVudCogZWxlbWVudCwgTmFtZQogewogICAg
IGFwcGVuZE9wZW5UYWcob3V0LCBlbGVtZW50LCBuYW1lc3BhY2VzKTsKIAotICAgIE5hbWVkTm9k
ZU1hcCogYXR0cmlidXRlcyA9IGVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYg
KGF0dHJpYnV0ZXMpIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmlidXRlcy0+bGVu
Z3RoKCk7CisgICAgaWYgKGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICB1bnNp
Z25lZCBsZW5ndGggPSBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQotICAgICAgICAgICAgYXBwZW5kQXR0
cmlidXRlKG91dCwgZWxlbWVudCwgKmF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0ZW0oaSksIG5hbWVz
cGFjZXMpOworICAgICAgICAgICAgYXBwZW5kQXR0cmlidXRlKG91dCwgZWxlbWVudCwgKmVsZW1l
bnQtPmF0dHJpYnV0ZUl0ZW0oaSksIG5hbWVzcGFjZXMpOwogICAgIH0KIAogICAgIC8vIEdpdmUg
YW4gb3Bwb3J0dW5pdHkgdG8gc3ViY2xhc3NlcyB0byBhZGQgdGhlaXIgb3duIGF0dHJpYnV0ZXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggOWIxOTA5MDkxYTEwNWMxMzY1ZWM3MTJm
YjkwNWM3YjIxNDkxMTA5Yy4uYzlhMGU3OGRkMTk2ZWRhOWYyMDBjNmFjZmU0ZDNjZTQzN2VmMWYz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTA0LDEyICsxMDQsMTEgQEAgc3Rh
dGljIHZvaWQgY29tcGxldGVVUkxzKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCkK
ICAgICBmb3IgKE5vZGUqIG4gPSBub2RlOyBuICE9IGVuZDsgbiA9IG4tPnRyYXZlcnNlTmV4dE5v
ZGUoKSkgewogICAgICAgICBpZiAobi0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICBF
bGVtZW50KiBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgTmFtZWRO
b2RlTWFwKiBhdHRyaWJ1dGVzID0gZS0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICAgICAgICAg
IGlmICghYXR0cmlidXRlcykKKyAgICAgICAgICAgIGlmICghZS0+aGFzQXR0cmlidXRlcygpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0g
YXR0cmlidXRlcy0+bGVuZ3RoKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBlLT5h
dHRyaWJ1dGVDb3VudCgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRy
aWJ1dGVzLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0
cmlidXRlID0gZS0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgICAgICAgICBpZiAoZS0+aXNV
UkxBdHRyaWJ1dGUoYXR0cmlidXRlKSkKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5hcHBl
bmQoQXR0cmlidXRlQ2hhbmdlKGUsIGF0dHJpYnV0ZS0+bmFtZSgpLCBLVVJMKHBhcnNlZEJhc2VV
UkwsIGF0dHJpYnV0ZS0+dmFsdWUoKSkuc3RyaW5nKCkpKTsKICAgICAgICAgICAgIH0KQEAgLTI4
OSwxMiArMjg4LDExIEBAIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEVsZW1l
bnQoU3RyaW5nQnVpbGRlciYgb3V0LCBFbGVtZW50KiBlbGVtZW50CiAgICAgY29uc3QgYm9vbCBk
b2N1bWVudElzSFRNTCA9IGVsZW1lbnQtPmRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCk7CiAg
ICAgYXBwZW5kT3BlblRhZyhvdXQsIGVsZW1lbnQsIDApOwogCi0gICAgTmFtZWROb2RlTWFwKiBh
dHRyaWJ1dGVzID0gZWxlbWVudC0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICBjb25zdCB1bnNp
Z25lZCBsZW5ndGggPSBhdHRyaWJ1dGVzID8gYXR0cmlidXRlcy0+bGVuZ3RoKCkgOiAwOworICAg
IGNvbnN0IHVuc2lnbmVkIGxlbmd0aCA9IGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSA/IGVsZW1l
bnQtPmF0dHJpYnV0ZUNvdW50KCkgOiAwOwogICAgIGNvbnN0IGJvb2wgc2hvdWxkQW5ub3RhdGVP
ckZvcmNlSW5saW5lID0gZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmIChzaG91bGRBbm5vdGF0
ZSgpIHx8IGFkZERpc3BsYXlJbmxpbmUpOwogICAgIGNvbnN0IGJvb2wgc2hvdWxkT3ZlcnJpZGVT
dHlsZUF0dHIgPSBzaG91bGRBbm5vdGF0ZU9yRm9yY2VJbmxpbmUgfHwgc2hvdWxkQXBwbHlXcmFw
cGluZ1N0eWxlKGVsZW1lbnQpOwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKLSAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLT5h
dHRyaWJ1dGVJdGVtKGkpOworICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnQt
PmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgIC8vIFdlJ2xsIGhhbmRsZSB0aGUgc3R5bGUgYXR0
cmlidXRlIHNlcGFyYXRlbHksIGJlbG93LgogICAgICAgICBpZiAoYXR0cmlidXRlLT5uYW1lKCkg
PT0gc3R5bGVBdHRyICYmIHNob3VsZE92ZXJyaWRlU3R5bGVBdHRyKQogICAgICAgICAgICAgY29u
dGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCAzMDlh
YWZlMDU1YTNhMWJmNGY0NWIxNWVmOTJiMTI3NDUxODhmMDRlLi5hNjZkMTVmZTI3NWZiOGVkNDEy
NDhiZmE0YTU2ODU0ZWE4MGVmMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5jcHAKQEAgLTExNywxMiArMTE3LDExIEBAIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogCiB2b2lkIEhUTUxFbWJlZEVsZW1l
bnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKLSAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMg
PSB1cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmICghYXR0cmlidXRlcykKKyAgICBpZiAoIWhh
c0F0dHJpYnV0ZXMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGF0dHJpYnV0ZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgQXR0cmlidXRlKiBp
dCA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGF0dHJpYnV0ZUNvdW50KCk7ICsraSkgeworICAgICAgICBBdHRyaWJ1dGUqIGl0ID0g
YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgcGFyYW1OYW1lcy5hcHBlbmQoaXQtPmxvY2FsTmFt
ZSgpLnN0cmluZygpKTsKICAgICAgICAgcGFyYW1WYWx1ZXMuYXBwZW5kKGl0LT52YWx1ZSgpLnN0
cmluZygpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApp
bmRleCA0MTNjMTI3N2NjMTEzODkzNDQyYWRhNWI2Yzk4MTE2Y2YxODBmZTdkLi4yOGVhMTBiMTdk
ZTg0ODFhMjlhM2UwMTkwMjAxMTBkZmE0MzQxYzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKQEAgLTU0NSwxMyArNTQ1LDEyIEBAIHZvaWQgSFRNTElucHV0RWxl
bWVudDo6dXBkYXRlVHlwZSgpCiAgICAgICAgIHJlZ2lzdGVyRm9yU3VzcGVuc2lvbkNhbGxiYWNr
SWZOZWVkZWQoKTsKIAogICAgIGlmIChkaWRSZXNwZWN0SGVpZ2h0QW5kV2lkdGggIT0gbV9pbnB1
dFR5cGUtPnNob3VsZFJlc3BlY3RIZWlnaHRBbmRXaWR0aEF0dHJpYnV0ZXMoKSkgewotICAgICAg
ICBOYW1lZE5vZGVNYXAqIG1hcCA9IGF0dHJpYnV0ZU1hcCgpOwotICAgICAgICBBU1NFUlQobWFw
KTsKLSAgICAgICAgaWYgKEF0dHJpYnV0ZSogaGVpZ2h0ID0gbWFwLT5nZXRBdHRyaWJ1dGVJdGVt
KGhlaWdodEF0dHIpKQorICAgICAgICBBU1NFUlQoYXR0cmlidXRlTWFwKCkpOworICAgICAgICBp
ZiAoQXR0cmlidXRlKiBoZWlnaHQgPSBnZXRBdHRyaWJ1dGVJdGVtKGhlaWdodEF0dHIpKQogICAg
ICAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChoZWlnaHQsIGZhbHNlKTsKLSAgICAgICAgaWYgKEF0
dHJpYnV0ZSogd2lkdGggPSBtYXAtPmdldEF0dHJpYnV0ZUl0ZW0od2lkdGhBdHRyKSkKKyAgICAg
ICAgaWYgKEF0dHJpYnV0ZSogd2lkdGggPSBnZXRBdHRyaWJ1dGVJdGVtKHdpZHRoQXR0cikpCiAg
ICAgICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKHdpZHRoLCBmYWxzZSk7Ci0gICAgICAgIGlmIChB
dHRyaWJ1dGUqIGFsaWduID0gbWFwLT5nZXRBdHRyaWJ1dGVJdGVtKGFsaWduQXR0cikpCisgICAg
ICAgIGlmIChBdHRyaWJ1dGUqIGFsaWduID0gZ2V0QXR0cmlidXRlSXRlbShhbGlnbkF0dHIpKQog
ICAgICAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChhbGlnbiwgZmFsc2UpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCA1OTBkNjliOThiMjRj
OTZiNzA3NDExY2I1ZDg3MDIzYTNlOTg5YzIzLi41NDZkYzFjMGI3YmE0NmRiMTc1MzU1OWEyMTI5
N2FmM2E2OTEzMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cApAQCAtMTc3LDEwICsxNzcsOSBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJz
Rm9yUGx1Z2luKFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8UwogICAgIH0KICAg
ICAKICAgICAvLyBUdXJuIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSA8b2JqZWN0PiBlbGVtZW50IGlu
dG8gYXJyYXlzLCBidXQgZG9uJ3Qgb3ZlcnJpZGUgPHBhcmFtPiB2YWx1ZXMuCi0gICAgTmFtZWRO
b2RlTWFwKiBhdHRyaWJ1dGVzID0gdXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAoYXR0cmli
dXRlcykgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRlcy0+bGVu
Z3RoKCk7ICsraSkgewotICAgICAgICAgICAgQXR0cmlidXRlKiBpdCA9IGF0dHJpYnV0ZXMtPmF0
dHJpYnV0ZUl0ZW0oaSk7CisgICAgaWYgKGhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRlQ291bnQoKTsgKytpKSB7CisgICAgICAgICAg
ICBBdHRyaWJ1dGUqIGl0ID0gYXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSA9IGl0LT5uYW1lKCkubG9jYWxOYW1lKCk7CiAgICAgICAgICAgICBp
ZiAoIXVuaXF1ZVBhcmFtTmFtZXMuY29udGFpbnMobmFtZS5pbXBsKCkpKSB7CiAgICAgICAgICAg
ICAgICAgcGFyYW1OYW1lcy5hcHBlbmQobmFtZS5zdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGFyYW1FbGVtZW50LmNwcAppbmRleCBhYTIyOGJjMzE2NjNhYjA4MmEzMjAyMmI4NGUx
Y2UzZWIwOWJmYWMxLi45MDcyNDIxMTE5MWY2OTc2NTNjODE3ZmM5NjViODk3ZDMxMjhmYzk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAKQEAgLTY2LDcgKzY2LDcg
QEAgdm9pZCBIVE1MUGFyYW1FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
IGF0dHIpCiBib29sIEhUTUxQYXJhbUVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSog
YXR0cikgY29uc3QKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHZhbHVlQXR0ciAmJiBoYXNB
dHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgQXR0cmlidXRlKiBuYW1lQXR0cmlidXRlID0gYXR0cmli
dXRlTWFwKCktPmdldEF0dHJpYnV0ZUl0ZW0obmFtZUF0dHIpOworICAgICAgICBBdHRyaWJ1dGUq
IG5hbWVBdHRyaWJ1dGUgPSBnZXRBdHRyaWJ1dGVJdGVtKG5hbWVBdHRyKTsKICAgICAgICAgaWYg
KG5hbWVBdHRyaWJ1dGUpIHsKICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUg
PSBuYW1lQXR0cmlidXRlLT52YWx1ZSgpOwogICAgICAgICAgICAgaWYgKGlzVVJMUGFyYW1ldGVy
KHZhbHVlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZv
cm1hdHRpbmdFbGVtZW50TGlzdC5jcHAKaW5kZXggZjMzMWFmN2U3MGI2YjVkYzVkMTlhODE0N2Jl
N2EyODRiM2U2MjlkZS4uN2EwNzUxMDg3MjMyZDk1NThhNGIxYjFiOTIyZjY0NzA2MWVkZWMyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVt
ZW50TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRp
bmdFbGVtZW50TGlzdC5jcHAKQEAgLTQwLDkgKzQwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Ly8gTm9haCdzIEFyayBvZiBGb3JtYXR0aW5nIEVsZW1lbnRzIGNhbiBmaXQgdGhyZWUgb2YgZWFj
aCBlbGVtZW50Lgogc3RhdGljIGNvbnN0IHNpemVfdCBrTm9haHNBcmtDYXBhY2l0eSA9IDM7CiAK
LXN0YXRpYyBpbmxpbmUgc2l6ZV90IGF0dHJpYnV0ZUNvdW50KEVsZW1lbnQqIGVsZW1lbnQpCitz
dGF0aWMgaW5saW5lIHNpemVfdCBzYWZlQXR0cmlidXRlQ291bnQoRWxlbWVudCogZWxlbWVudCkK
IHsKLSAgICByZXR1cm4gZWxlbWVudC0+YXR0cmlidXRlTWFwKCkgPyBlbGVtZW50LT5hdHRyaWJ1
dGVNYXAoKS0+bGVuZ3RoKCkgOiAwOworICAgIHJldHVybiBlbGVtZW50LT5mYXN0SGFzQXR0cmli
dXRlcygpID8gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKSA6IDA7CiB9CiAKIEhUTUxGb3JtYXR0
aW5nRWxlbWVudExpc3Q6OkhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QoKQpAQCAtMTQyLDcgKzE0
Miw3IEBAIHZvaWQgSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6dHJ5VG9FbnN1cmVOb2Foc0Fy
a0NvbmRpdGlvblF1aWNrbHkoRWxlbWVudCogbmV3CiAgICAgLy8gb2YgYSBxdWlja2x5IGVuc3Vy
aW5nIHRoZSBjb25kaXRpb24uCiAgICAgVmVjdG9yPEVsZW1lbnQqLCAxMD4gY2FuZGlkYXRlczsK
IAotICAgIHNpemVfdCBuZXdFbGVtZW50QXR0cmlidXRlQ291bnQgPSBhdHRyaWJ1dGVDb3VudChu
ZXdFbGVtZW50KTsKKyAgICBzaXplX3QgbmV3RWxlbWVudEF0dHJpYnV0ZUNvdW50ID0gc2FmZUF0
dHJpYnV0ZUNvdW50KG5ld0VsZW1lbnQpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IG1fZW50cmll
cy5zaXplKCk7IGk7ICkgewogICAgICAgICAtLWk7CkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBI
VE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0Ojp0cnlUb0Vuc3VyZU5vYWhzQXJrQ29uZGl0aW9uUXVp
Y2tseShFbGVtZW50KiBuZXcKICAgICAgICAgRWxlbWVudCogY2FuZGlkYXRlID0gZW50cnkuZWxl
bWVudCgpOwogICAgICAgICBpZiAobmV3RWxlbWVudC0+dGFnUU5hbWUoKSAhPSBjYW5kaWRhdGUt
PnRhZ1FOYW1lKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKGF0dHJpYnV0
ZUNvdW50KGNhbmRpZGF0ZSkgIT0gbmV3RWxlbWVudEF0dHJpYnV0ZUNvdW50KQorICAgICAgICBp
ZiAoc2FmZUF0dHJpYnV0ZUNvdW50KGNhbmRpZGF0ZSkgIT0gbmV3RWxlbWVudEF0dHJpYnV0ZUNv
dW50KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgY2FuZGlkYXRlcy5hcHBlbmQo
Y2FuZGlkYXRlKTsKQEAgLTE3OCwxOCArMTc4LDE2IEBAIHZvaWQgSFRNTEZvcm1hdHRpbmdFbGVt
ZW50TGlzdDo6ZW5zdXJlTm9haHNBcmtDb25kaXRpb24oRWxlbWVudCogbmV3RWxlbWVudCkKICAg
ICBWZWN0b3I8RWxlbWVudCo+IHJlbWFpbmluZ0NhbmRpZGF0ZXM7CiAgICAgcmVtYWluaW5nQ2Fu
ZGlkYXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNhbmRpZGF0ZXMuc2l6ZSgpKTsKIAotICAg
IE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFwID0gbmV3RWxlbWVudC0+YXR0cmlidXRlTWFwKCk7
Ci0gICAgc2l6ZV90IG5ld0VsZW1lbnRBdHRyaWJ1dGVDb3VudCA9IGF0dHJpYnV0ZUNvdW50KG5l
d0VsZW1lbnQpOworICAgIHNpemVfdCBuZXdFbGVtZW50QXR0cmlidXRlQ291bnQgPSBzYWZlQXR0
cmlidXRlQ291bnQobmV3RWxlbWVudCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5l
d0VsZW1lbnRBdHRyaWJ1dGVDb3VudDsgKytpKSB7Ci0gICAgICAgIFF1YWxpZmllZE5hbWUgYXR0
cmlidXRlTmFtZSA9IGF0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpKS0+bmFtZSgpOwotICAg
ICAgICBBdG9taWNTdHJpbmcgYXR0cmlidXRlVmFsdWUgPSBuZXdFbGVtZW50LT5mYXN0R2V0QXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IG5l
d0VsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAKICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7
IGogPCBjYW5kaWRhdGVzLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICBFbGVtZW50KiBjYW5k
aWRhdGUgPSBjYW5kaWRhdGVzW2pdOwogCiAgICAgICAgICAgICAvLyBUaGVzZSBwcm9wZXJ0aWVz
IHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBjaGVja2VkIGJ5IHRyeVRvRW5zdXJlTm9haHNBcmtD
b25kaXRpb25RdWlja2x5LgotICAgICAgICAgICAgQVNTRVJUKG5ld0VsZW1lbnQtPmF0dHJpYnV0
ZU1hcCgpLT5sZW5ndGgoKSA9PSBjYW5kaWRhdGUtPmF0dHJpYnV0ZU1hcCgpLT5sZW5ndGgoKSk7
CisgICAgICAgICAgICBBU1NFUlQobmV3RWxlbWVudC0+YXR0cmlidXRlQ291bnQoKSA9PSBjYW5k
aWRhdGUtPmF0dHJpYnV0ZUNvdW50KCkpOwogICAgICAgICAgICAgQVNTRVJUKG5ld0VsZW1lbnQt
PnRhZ1FOYW1lKCkgPT0gY2FuZGlkYXRlLT50YWdRTmFtZSgpKTsKIAogICAgICAgICAgICAgLy8g
RklYTUU6IFRlY2huaWNhbGx5IHdlIHNob3VsZG4ndCByZWFkIHRoaXMgaW5mb3JtYXRpb24gYmFj
ayBmcm9tCkBAIC0xOTksNyArMTk3LDcgQEAgdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0
OjplbnN1cmVOb2Foc0Fya0NvbmRpdGlvbihFbGVtZW50KiBuZXdFbGVtZW50KQogICAgICAgICAg
ICAgLy8gdGhhdCBpbXBsZW1lbnRhdGlvbnMgY2FuIHJ1biBvZmYgdGhlIG1haW4gdGhyZWFkLiBJ
ZiBKYXZhU2NyaXB0CiAgICAgICAgICAgICAvLyBjaGFuZ2VzIHRoZSBhdHRyaWJ1dGVzIHZhbHVl
cywgd2UgY291bGQgZ2V0IGEgc2xpZ2h0bHkgd3JvbmcKICAgICAgICAgICAgIC8vIG91dHB1dCBo
ZXJlLgotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+ZmFzdEdldEF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKSA9PSBhdHRyaWJ1dGVWYWx1ZSkKKyAgICAgICAgICAgIGlmIChjYW5kaWRhdGUtPmZh
c3RHZXRBdHRyaWJ1dGUoYXR0cmlidXRlLT5uYW1lKCkpID09IGF0dHJpYnV0ZS0+dmFsdWUoKSkK
ICAgICAgICAgICAgICAgICByZW1haW5pbmdDYW5kaWRhdGVzLmFwcGVuZChjYW5kaWRhdGUpOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKaW5kZXggM2M5
ZDg5YjVkZDFjZmJhM2FiNDJlMDI1OTRjMTViNDcwMjQwM2Y1NC4uMzZiMjM5MDBmMDZjZTZkODk5
OThkYWUzMDhmNmNhOGU0MTY2YTAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTUVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRv
ci5jcHAKQEAgLTE2MCwxNiArMTYwLDE1IEBAIHZvaWQgRE9NRWRpdG9yOjppbm5lclBhdGNoTm9k
ZShEaWdlc3QqIG9sZERpZ2VzdCwgRGlnZXN0KiBuZXdEaWdlc3QsIEV4Y2VwdGlvbkNvCiAgICAg
RWxlbWVudCogb2xkRWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihvbGROb2RlKTsKICAg
ICBFbGVtZW50KiBuZXdFbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5ld05vZGUpOwog
ICAgIGlmIChvbGREaWdlc3QtPm1fYXR0cnNTSEExICE9IG5ld0RpZ2VzdC0+bV9hdHRyc1NIQTEp
IHsKLSAgICAgICAgTmFtZWROb2RlTWFwKiBvbGRBdHRyaWJ1dGVNYXAgPSBvbGRFbGVtZW50LT5h
dHRyaWJ1dGVNYXAoKTsKLQotICAgICAgICB3aGlsZSAob2xkQXR0cmlidXRlTWFwICYmIG9sZEF0
dHJpYnV0ZU1hcC0+bGVuZ3RoKCkpCi0gICAgICAgICAgICBvbGRBdHRyaWJ1dGVNYXAtPnJlbW92
ZUF0dHJpYnV0ZSgwKTsKKyAgICAgICAgaWYgKG9sZEVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGVz
KCkpIHsKKyAgICAgICAgICAgIHdoaWxlIChvbGRFbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpKQor
ICAgICAgICAgICAgICAgIG9sZEVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZSgwKTsKKyAgICAgICAg
fQogCi0gICAgICAgIE5hbWVkTm9kZU1hcCogbmV3QXR0cmlidXRlTWFwID0gbmV3RWxlbWVudC0+
YXR0cmlidXRlTWFwKCk7Ci0gICAgICAgIGlmIChuZXdBdHRyaWJ1dGVNYXApIHsKLSAgICAgICAg
ICAgIHNpemVfdCBudW1BdHRycyA9IG5ld0F0dHJpYnV0ZU1hcC0+bGVuZ3RoKCk7CisgICAgICAg
IGlmIChuZXdFbGVtZW50LT5mYXN0SGFzQXR0cmlidXRlcygpKSB7CisgICAgICAgICAgICBzaXpl
X3QgbnVtQXR0cnMgPSBuZXdFbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOwogICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1BdHRyczsgKytpKSB7Ci0gICAgICAgICAgICAgICAg
Y29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBuZXdBdHRyaWJ1dGVNYXAtPmF0dHJpYnV0ZUl0
ZW0oaSk7CisgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBuZXdF
bGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgICAgIG9sZEVsZW1lbnQtPnNl
dEF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSwgYXR0cmlidXRlLT52YWx1ZSgpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtMzg0LDEyICszODMsMTEgQEAgUGFzc093blB0cjxET01F
ZGl0b3I6OkRpZ2VzdD4gRE9NRWRpdG9yOjpjcmVhdGVEaWdlc3QoTm9kZSogbm9kZSwgVW51c2Vk
Tm9kZXNNYXAKICAgICAgICAgfQogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG5vZGUpOwogCi0gICAgICAgIE5hbWVkTm9kZU1hcCogYXR0ck1hcCA9IGVs
ZW1lbnQtPmF0dHJpYnV0ZU1hcCgpOwotICAgICAgICBpZiAoYXR0ck1hcCAmJiBhdHRyTWFwLT5s
ZW5ndGgoKSkgewotICAgICAgICAgICAgc2l6ZV90IG51bUF0dHJzID0gYXR0ck1hcC0+bGVuZ3Ro
KCk7CisgICAgICAgIGlmIChlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRlcygpKSB7CisgICAgICAg
ICAgICBzaXplX3QgbnVtQXR0cnMgPSBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOwogICAgICAg
ICAgICAgU0hBMSBhdHRyc1NIQTE7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bUF0dHJzOyArK2kpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJp
YnV0ZSA9IGF0dHJNYXAtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAgICAgICAgY29uc3Qg
QXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAg
ICAgICAgICAgIGFkZFN0cmluZ1RvU0hBMShhdHRyc1NIQTEsIGF0dHJpYnV0ZS0+bmFtZSgpLnRv
U3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGFkZFN0cmluZ1RvU0hBMShhdHRyc1NIQTEsIGF0
dHJpYnV0ZS0+dmFsdWUoKSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA0MDA4YTQyMGNmMGRiZGY5ZjY3MzM1
Y2E4YTlhZDAzODdlMGY1MjA3Li4xNWE4N2Q0OGMyNTA1YjIzMjRkZGJlNTNjYTJmZDE0MGVhMzM0
ZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKQEAgLTcxNywxMiArNzE3LDExIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3Bl
Y3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqCiBQYXNzUmVm
UHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvckF0dHJp
YnV0ZVN0eWxlcyhFbGVtZW50KiBlbGVtZW50KQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gYXR0clN0eWxlcyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKLSAgICBOYW1lZE5vZGVN
YXAqIGF0dHJpYnV0ZXMgPSBlbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmICgh
YXR0cmlidXRlcykKKyAgICBpZiAoIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAg
cmV0dXJuIGF0dHJTdHlsZXMucmVsZWFzZSgpOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
YXR0cmlidXRlcyAmJiBpIDwgYXR0cmlidXRlcy0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICBB
dHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7ICsraSkg
eworICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0o
aSk7CiAgICAgICAgIGlmICghYXR0cmlidXRlLT5kZWNsKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYXR0clN0eWxlT2JqZWN0ID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDNhN2EyMGVkOGFlMTFlNGNkMmU1MjgzM2NiMWFmZGQy
ODAyYjVjZmUuLjliMjM3MDA5ZGU3YWM2Zjg5NDJiM2NmNWI2NmE5NjgyYWViMTU1MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNTMw
LDE3ICs1MzAsMTcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4
dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBlbGVtZW4KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGNvbnN0IE5hbWVkTm9kZU1hcCogYXR0ck1hcCA9IHRvSFRNTEVsZW1lbnQo
Y2hpbGQpLT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmICghYXR0ck1hcCAmJiBuYW1lKSB7
CisgICAgRWxlbWVudCogY2hpbGRFbGVtZW50ID0gdG9FbGVtZW50KGNoaWxkKTsKKyAgICBpZiAo
IWNoaWxkRWxlbWVudC0+aGFzQXR0cmlidXRlcygpICYmIG5hbWUpIHsKICAgICAgICAgZWxlbWVu
dC0+cmVtb3ZlQXR0cmlidXRlKCpuYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IGJvb2wgZm91bmRPcmlnaW5hbEF0dHJpYnV0ZSA9IGZhbHNlOwotICAgIHVuc2lnbmVkIG51bUF0
dHJzID0gYXR0ck1hcC0+bGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbnVtQXR0cnMgPSBjaGlsZEVs
ZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bUF0dHJzOyArK2kpIHsKICAgICAgICAgLy8gQWRkIGF0dHJpYnV0ZSBwYWlyCi0gICAgICAgIGNv
bnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0ck1hcC0+YXR0cmlidXRlSXRlbShpKTsKKyAg
ICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBjaGlsZEVsZW1lbnQtPmF0dHJpYnV0
ZUl0ZW0oaSk7CiAgICAgICAgIGZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUgPSBmb3VuZE9yaWdpbmFs
QXR0cmlidXRlIHx8IChuYW1lICYmIGF0dHJpYnV0ZS0+bmFtZSgpLnRvU3RyaW5nKCkgPT0gKm5h
bWUpOwogICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLT5uYW1lKCksIGF0
dHJpYnV0ZS0+dmFsdWUoKSk7CiAgICAgfQpAQCAtNzgxLDE0ICs3ODEsMTQgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
d2hpdGVzcGFjZVRyaW0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIC8vIEdvIHRocm91Z2ggYWxsIGF0dHJpYnV0ZXMgYW5kIHNl
cmlhbGl6ZSB0aGVtLgotICAgICAgICAgICAgICAgIGNvbnN0IE5hbWVkTm9kZU1hcCogYXR0ck1h
cCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIWF0dHJNYXApCisgICAgICAgICAgICAgICAgY29uc3QgRWxlbWVu
dCogZWxlbWVudCA9IHRvRWxlbWVudChub2RlKTsKKyAgICAgICAgICAgICAgICBpZiAoIWVsZW1l
bnQtPmhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBudW1BdHRycyA9IGF0dHJNYXAtPmxlbmd0aCgpOworICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIG51bUF0dHJzID0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsK
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQXR0cnM7ICsraSkg
ewogICAgICAgICAgICAgICAgICAgICAvLyBBZGQgYXR0cmlidXRlIHBhaXIKLSAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyTWFwLT5hdHRyaWJ1dGVJ
dGVtKGkpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9
IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRy
aWJ1dGUtPmxvY2FsTmFtZSgpLmZpbmQod2hpdGVzcGFjZVRyaW1tZWRRdWVyeSkgIT0gbm90Rm91
bmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdENvbGxlY3Rvci5hZGQobm9kZSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExNTksMTMgKzExNTksMTIgQEAg
UGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlG
b3JFbGVtZW50QXR0cmlidXRlcyhFbGUKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGF0
dHJpYnV0ZXNWYWx1ZSA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKICAgICAvLyBHbyB0aHJv
dWdoIGFsbCBhdHRyaWJ1dGVzIGFuZCBzZXJpYWxpemUgdGhlbS4KLSAgICBjb25zdCBOYW1lZE5v
ZGVNYXAqIGF0dHJNYXAgPSBlbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmICgh
YXR0ck1hcCkKKyAgICBpZiAoIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAgcmV0
dXJuIGF0dHJpYnV0ZXNWYWx1ZS5yZWxlYXNlKCk7Ci0gICAgdW5zaWduZWQgbnVtQXR0cnMgPSBh
dHRyTWFwLT5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBudW1BdHRycyA9IGVsZW1lbnQtPmF0dHJp
YnV0ZUNvdW50KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUF0dHJzOyArK2kp
IHsKICAgICAgICAgLy8gQWRkIGF0dHJpYnV0ZSBwYWlyCi0gICAgICAgIGNvbnN0IEF0dHJpYnV0
ZSogYXR0cmlidXRlID0gYXR0ck1hcC0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgY29uc3Qg
QXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAg
ICBhdHRyaWJ1dGVzVmFsdWUtPnB1c2hTdHJpbmcoYXR0cmlidXRlLT5uYW1lKCkudG9TdHJpbmco
KSk7CiAgICAgICAgIGF0dHJpYnV0ZXNWYWx1ZS0+cHVzaFN0cmluZyhhdHRyaWJ1dGUtPnZhbHVl
KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMDU5
ODY0ZWVhOWVmYmQ5N2E5NDBhOWJjOTliM2JiODVlOGFlYWM3Yy4uNjRkOTAxYjdhMzgwOGE2Nzg2
N2E4NDEzOWQ4ZmZhMzM2MzliZjQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAKQEAgLTY5LDkgKzY5LDkgQEAgc3RhdGljIGJvb2wgaXNDaGFyc2V0U3BlY2lmeWluZ05v
ZGUoTm9kZSogbm9kZSkKICAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpt
ZXRhVGFnKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEhUTUxNZXRhQ2hhcnNldFBhcnNl
cjo6QXR0cmlidXRlTGlzdCBhdHRyaWJ1dGVzOwotICAgIGlmIChjb25zdCBOYW1lZE5vZGVNYXAq
IGF0dHJpYnV0ZXNNYXAgPSBlbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpKSB7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzTWFwLT5sZW5ndGgoKTsgKytpKSB7
Ci0gICAgICAgICAgICBBdHRyaWJ1dGUqIGl0ZW0gPSBhdHRyaWJ1dGVzTWFwLT5hdHRyaWJ1dGVJ
dGVtKGkpOworICAgIGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7ICsraSkgewor
ICAgICAgICAgICAgQXR0cmlidXRlKiBpdGVtID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZGVhbCBhcHByb3ByaWF0ZWx5IHdpdGgg
dGhlIGF0dHJpYnV0ZSBpZiB0aGV5IGhhdmUgYSBuYW1lc3BhY2UuCiAgICAgICAgICAgICBhdHRy
aWJ1dGVzLmFwcGVuZChtYWtlX3BhaXIoaXRlbS0+bmFtZSgpLnRvU3RyaW5nKCksIGl0ZW0tPnZh
bHVlKCkuc3RyaW5nKCkpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVs
ZW1lbnQuY3BwCmluZGV4IDYyNjY5YzhiYTE5OGJiZmE1NGU1NDMwNDFlZjJlMzkzMTEzYTIzZDUu
LmEyZWY1M2JkNmJhNDdiYmNmYmIyZDViNDI5MzMxZjA1ZDBhNGU5ZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKQEAgLTQxNywxMSArNDE3LDExIEBAIHZvaWQgU1ZH
U3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2Rl
KiBiZWZvcmVDaGFuZ2UsCiAKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IFNWR1N0eWxlZEVsZW1lbnQ6
OmdldFByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgaWYg
KCFhdHRyaWJ1dGVNYXAoKSkKKyAgICBpZiAoIWZhc3RIYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1dGVOYW1lKG51bGxBdG9tLCBu
YW1lLCBudWxsQXRvbSk7Ci0gICAgQXR0cmlidXRlKiBhdHRyID0gYXR0cmlidXRlTWFwKCktPmdl
dEF0dHJpYnV0ZUl0ZW0oYXR0cmlidXRlTmFtZSk7CisgICAgQXR0cmlidXRlKiBhdHRyID0gZ2V0
QXR0cmlidXRlSXRlbShhdHRyaWJ1dGVOYW1lKTsKICAgICBpZiAoIWF0dHIgfHwgIWF0dHItPmlz
TWFwcGVkQXR0cmlidXRlKCkgfHwgIWF0dHItPm1hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKCkp
CiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcApp
bmRleCAyODM1ODNkNzgzYWZhNmVmMTBlYTc3OTJjYjIwOWNkNTEzNDMzNWNmLi4xNTRiNjdlOTJk
MzJjN2QxNzZiY2I4MTA5MGU4ZGY0MTk4YjRiMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1
bmN0aW9ucy5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJYUGF0aEZ1bmN0aW9ucy5o
IgogCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgogI2lu
Y2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIlRyZWVTY29wZS5oIgog
I2luY2x1ZGUgIlhNTE5hbWVzLmgiCkBAIC01OTIsOCArNTkxLDkgQEAgVmFsdWUgRnVuTGFuZzo6
ZXZhbHVhdGUoKSBjb25zdAogICAgIE5vZGUqIG5vZGUgPSBldmFsdWF0aW9uQ29udGV4dCgpLm5v
ZGUuZ2V0KCk7CiAgICAgd2hpbGUgKG5vZGUpIHsKICAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVu
dE5vZGUoKSkgewotICAgICAgICAgICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IHRv
RWxlbWVudChub2RlKS0+dXBkYXRlZEF0dHJpYnV0ZXMoKSkKLSAgICAgICAgICAgICAgICBsYW5n
dWFnZUF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMtPmdldEF0dHJpYnV0ZUl0ZW0oWE1MTmFtZXM6Omxh
bmdBdHRyKTsKKyAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7
CisgICAgICAgICAgICBpZiAoZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQorICAgICAgICAgICAg
ICAgIGxhbmd1YWdlQXR0cmlidXRlID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlSXRlbShYTUxOYW1l
czo6bGFuZ0F0dHIpOwogICAgICAgICB9CiAgICAgICAgIGlmIChsYW5ndWFnZUF0dHJpYnV0ZSkK
ICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
Tm9kZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmNwcAppbmRleCA4
ZWVmYzU3M2ZmNDQ3OTQyNTIxZmJkMDc3YWRmMTUyMWQyYTM5YWY3Li40YzQ1NGU0Njc1OGUwZjA2
NDQ3NWY1NjkyYzBmMDdkMzAzMmY0ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhOb2RlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmNw
cApAQCAtMjEzLDEzICsyMTMsMTMgQEAgdm9pZCBOb2RlU2V0Ojp0cmF2ZXJzYWxTb3J0KCkgY29u
c3QKICAgICAgICAgaWYgKCFjb250YWluc0F0dHJpYnV0ZU5vZGVzIHx8ICFuLT5pc0VsZW1lbnRO
b2RlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBOYW1lZE5vZGVNYXAqIGF0
dHJpYnV0ZXMgPSB0b0VsZW1lbnQobiktPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIGlm
ICghYXR0cmlidXRlcykKKyAgICAgICAgRWxlbWVudCogZSA9IHRvRWxlbWVudChuKTsKKyAgICAg
ICAgaWYgKCFlLT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVDb3VudCA9IGF0dHJpYnV0ZXMtPmxlbmd0aCgpOwotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRlQ291bnQ7ICsraSkgewotICAg
ICAgICAgICAgQXR0ciogYXR0cmlidXRlID0gYXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKS0+
YXR0cigpOworICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVDb3VudCA9IGUtPmF0dHJpYnV0ZUNv
dW50KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlLT5hdHRyaWJ1dGVDb3Vu
dDsgKytpKSB7CisgICAgICAgICAgICBBdHRyKiBhdHRyaWJ1dGUgPSBlLT5hdHRyaWJ1dGVJdGVt
KGkpLT5hdHRyKCk7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlICYmIG5vZGVzLmNvbnRhaW5z
KGF0dHJpYnV0ZSkpCiAgICAgICAgICAgICAgICAgc29ydGVkTm9kZXMuYXBwZW5kKGF0dHJpYnV0
ZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAKaW5kZXggMTJmMzk0ZjJjYTBi
NDQ1NmE4MWQxMDg5ODNiNzkyNGQ1YzRkODc1ZC4uZmY3ZTY4NWQ5MTE3MzdlYmNkMWRmMjE5M2Vl
YzMxNzkzOWZjZTRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoU3RlcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAKQEAgLTMxLDcgKzMxLDYg
QEAKICNpbmNsdWRlICJBdHRyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
bGVtZW50LmgiCi0jaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSAiWE1MTlNOYW1l
cy5oIgogI2luY2x1ZGUgIlhQYXRoUGFyc2VyLmgiCiAjaW5jbHVkZSAiWFBhdGhVdGlsLmgiCkBA
IC0zNDMsMTIgKzM0MiwxMSBAQCB2b2lkIFN0ZXA6Om5vZGVzSW5BeGlzKE5vZGUqIGNvbnRleHQs
IE5vZGVTZXQmIG5vZGVzKSBjb25zdAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgTmFtZWROb2RlTWFwKiBhdHRycyA9IGNv
bnRleHRFbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgICAgICAgICAgaWYgKCFhdHRy
cykKKyAgICAgICAgICAgIGlmICghY29udGV4dEVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBhdHRycy0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBdHRy
PiBhdHRyID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0oaSktPmNyZWF0ZUF0dHJJZk5lZWRlZChzdGF0
aWNfY2FzdDxFbGVtZW50Kj4oY29udGV4dCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGNvbnRleHRFbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGNvbnRleHRFbGVtZW50LT5hdHRyaWJ1dGVJ
dGVtKGkpLT5jcmVhdGVBdHRySWZOZWVkZWQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGNvbnRleHQp
KTsKICAgICAgICAgICAgICAgICBpZiAobm9kZU1hdGNoZXMoYXR0ci5nZXQoKSwgQXR0cmlidXRl
QXhpcywgbV9ub2RlVGVzdCkpCiAgICAgICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChhdHRy
LnJlbGVhc2UoKSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggNGUxZDQ5ZWVmZDA0
YmZlZjY4NmUwYTJjNWNlMmI2MGMxZDhkODdjMC4uM2EzNmQ5OGUxMjU2YzRkZGVkNTc3NmFlZjA2
MjQ2MjE2N2YwMzk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNTk5LDkgKzU5OSw5IEBAIFhNTERvY3Vt
ZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwg
RWxlbWVudCogcGFyZW50CiAKICAgICBmb3IgKDsgIWVsZW1TdGFjay5pc0VtcHR5KCk7IGVsZW1T
dGFjay5yZW1vdmVMYXN0KCkpIHsKICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1TdGFj
ay5sYXN0KCk7Ci0gICAgICAgIGlmIChOYW1lZE5vZGVNYXAqIGF0dHJzID0gZWxlbWVudC0+dXBk
YXRlZEF0dHJpYnV0ZXMoKSkgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGF0dHJzLT5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRy
ID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgIGlmIChlbGVtZW50LT5oYXNBdHRy
aWJ1dGVzKCkpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50
LT5hdHRyaWJ1dGVDb3VudCgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0
dHIgPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgICAgIGlmIChhdHRy
LT5sb2NhbE5hbWUoKSA9PSB4bWxuc0F0b20pCiAgICAgICAgICAgICAgICAgICAgIG1fZGVmYXVs
dE5hbWVzcGFjZVVSSSA9IGF0dHItPnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
YXR0ci0+cHJlZml4KCkgPT0geG1sbnNBdG9tKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTFRyZWVCdWlsZGVyLmNwcAppbmRleCA4ZGUxYTA4MTdhNGU0ZGYxYmE4YTgwOGFjOTM5Njc1
YTdhZWEwMzM1Li4wYzJiMmQ2YTBjNzlmNDhjYjZmZDNmNDcwMjY2ZGZlODkxY2I4YjNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRyZWVCdWlsZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRyZWVCdWlsZGVyLmNwcApAQCAtODAsOSAr
ODAsOSBAQCBYTUxUcmVlQnVpbGRlcjo6WE1MVHJlZUJ1aWxkZXIoTmV3WE1MRG9jdW1lbnRQYXJz
ZXIqIHBhcnNlciwgRG9jdW1lbnRGcmFnbWVudCogZgogCiAgICAgZm9yIChFbGVtZW50KiBlbGVt
ZW50OyAhbm9kZVN0YWNrLmlzRW1wdHkoKTsgbm9kZVN0YWNrLnJlbW92ZUxhc3QoKSkgewogICAg
ICAgICBlbGVtZW50ID0gbm9kZVN0YWNrLmxhc3QoKTsKLSAgICAgICAgaWYgKE5hbWVkTm9kZU1h
cCogYXR0cnMgPSBlbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpKSB7Ci0gICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dHJzLT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgICAg
ICAgICAgQXR0cmlidXRlKiBhdHRyID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAg
IGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsgKytpKSB7CisgICAgICAgICAg
ICAgICAgQXR0cmlidXRlKiBhdHRyID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAg
ICAgICAgICAgICBpZiAoYXR0ci0+bG9jYWxOYW1lKCkgPT0geG1sbnNBdG9tKQogICAgICAgICAg
ICAgICAgICAgICBzdGFja0l0ZW0uc2V0TmFtZXNwYWNlVVJJKGF0dHItPnZhbHVlKCkpOwogICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGF0dHItPnByZWZpeCgpID09IHhtbG5zQXRvbSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3Bw
CmluZGV4IGRhMGUzMjU1NWVjN2NiODQzOGFiODAyM2E5OGJiNjJjZWVlYjUzYjUuLmNhMDU4MzQ4
ODkwZmYxMzMwNjRlMWMwODk4MDcwNjBmN2IwODkzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcApAQCAtMzA3LDEzICsz
MDcsMTIgQEAgdm9pZCBXZWJQYWdlU2VyaWFsaXplckltcGw6Om9wZW5UYWdUb1N0cmluZyhFbGVt
ZW50KiBlbGVtZW50LAogICAgIC8vIEFkZCBvcGVuIHRhZwogICAgIHJlc3VsdCArPSAiPCIgKyBl
bGVtZW50LT5ub2RlTmFtZSgpLmxvd2VyKCk7CiAgICAgLy8gR28gdGhyb3VnaCBhbGwgYXR0cmli
dXRlcyBhbmQgc2VyaWFsaXplIHRoZW0uCi0gICAgY29uc3QgTmFtZWROb2RlTWFwICphdHRyTWFw
ID0gZWxlbWVudC0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAoYXR0ck1hcCkgewotICAg
ICAgICB1bnNpZ25lZCBudW1BdHRycyA9IGF0dHJNYXAtPmxlbmd0aCgpOworICAgIGlmIChlbGVt
ZW50LT5oYXNBdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgdW5zaWduZWQgbnVtQXR0cnMgPSBlbGVt
ZW50LT5hdHRyaWJ1dGVDb3VudCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtQXR0cnM7IGkrKykgewogICAgICAgICAgICAgcmVzdWx0ICs9ICIgIjsKICAgICAgICAgICAg
IC8vIEFkZCBhdHRyaWJ1dGUgcGFpcgotICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlICphdHRy
aWJ1dGUgPSBhdHRyTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICAgICAgY29uc3QgQXR0
cmlidXRlICphdHRyaWJ1dGUgPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAg
ICAgcmVzdWx0ICs9IGF0dHJpYnV0ZS0+bmFtZSgpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBy
ZXN1bHQgKz0gIj1cIiI7CiAgICAgICAgICAgICBpZiAoIWF0dHJpYnV0ZS0+dmFsdWUoKS5pc0Vt
cHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAppbmRleCAwZDg1ZGE5MmU2
NzU5ODQzNzgwODcwODQ4NDE3Yjg4NjdmNTI1NjI5Li4xNzhjNzBlNWI3Nzg4MjdiNzUwM2M4Nzk2
YzM1MDY3Nzc0NTI0NzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCkBAIC01
MDMsMTIgKzUwMywxMSBAQCBRU3RyaW5nTGlzdCBRV2ViRWxlbWVudDo6YXR0cmlidXRlTmFtZXMo
Y29uc3QgUVN0cmluZyYgbmFtZXNwYWNlVXJpKSBjb25zdAogICAgICAgICByZXR1cm4gUVN0cmlu
Z0xpc3QoKTsKIAogICAgIFFTdHJpbmdMaXN0IGF0dHJpYnV0ZU5hbWVMaXN0OwotICAgIGNvbnN0
IE5hbWVkTm9kZU1hcCogY29uc3QgYXR0cnMgPSBtX2VsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVz
KCk7Ci0gICAgaWYgKGF0dHJzKSB7CisgICAgaWYgKG1fZWxlbWVudC0+aGFzQXR0cmlidXRlcygp
KSB7CiAgICAgICAgIGNvbnN0IFN0cmluZyBuYW1lc3BhY2VVcmlTdHJpbmcobmFtZXNwYWNlVXJp
KTsgLy8gY29udmVydCBRU3RyaW5nIC0+IFN0cmluZyBvbmNlCi0gICAgICAgIGNvbnN0IHVuc2ln
bmVkIGF0dHJzQ291bnQgPSBhdHRycy0+bGVuZ3RoKCk7CisgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGF0dHJzQ291bnQgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyc0NvdW50OyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0
IEF0dHJpYnV0ZSogY29uc3QgYXR0cmlidXRlID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0oaSk7Cisg
ICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGNvbnN0IGF0dHJpYnV0ZSA9IG1fZWxlbWVudC0+
YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgICAgIGlmIChuYW1lc3BhY2VVcmlTdHJpbmcgPT0g
YXR0cmlidXRlLT5uYW1lc3BhY2VVUkkoKSkKICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1l
TGlzdC5hcHBlbmQoYXR0cmlidXRlLT5sb2NhbE5hbWUoKSk7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125470</attachid>
            <date>2012-02-03 20:03:18 -0800</date>
            <delta_ts>2012-02-03 21:52:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77800-20120204010315.patch</filename>
            <type>text/plain</type>
            <size>46924</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhjMGZlYmVmOTk0YWFh
NjIzY2FhNDY1YTZkNjUwYzBiZmNkYWQzNi4uYTVhMDYyZGE4YWU5Yzg5NTg4ZGRlNmFhODc1YTBh
ZmVmNTY0Y2NiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEyLTAyLTAzICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgUHJvdmlkZSBtb3JlIGF0dHJpYnV0ZSBtZXRob2RzIGluIEVsZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHRoZSBj
bGllbnRzIG9mIE5hbWVkTm9kZU1hcC4gVGhpcyB3aWxsIG1ha2UgZWFzaWVyIHRvIGNoYW5nZSB0
aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2Ygb3VyIGF0dHJpYnV0ZSBzdG9yYWdlLiBUaGUg
Y2xpZW50cyBub3cgdXNlIEVsZW1lbnQgbWV0aG9kcworICAgICAgICB0aGF0IGV4cG9zZSBBdHRy
aWJ1dGUqIGFjY2Vzc29ycy4KKworICAgICAgICBBdmFpbGFiaWxpdHkgb2YgYXR0cmlidXRlcyBu
b3cgaXMgY2hlY2tlZCB3aXRoIGhhc0F0dHJpYnV0ZXMoKSBhbmQKKyAgICAgICAgZmFzdEhhc0F0
dHJpYnV0ZXMoKS4gQWZ0ZXIgdGhhdCwgaWYgdGhlcmUgYXJlIGF0dHJpYnV0ZXMsIHRoZXkgY2Fu
IGJlIGFjY2Vzc2VkIGJ5CisgICAgICAgIGluZGV4IHZpYSBhdHRyaWJ1dGVDb3VudCgpL2F0dHJp
YnV0ZUl0ZW0oKSwgYXMgd2VsbCBhcyBieSBRdWFsaWZpZWROYW1lLiBUaG9zZQorICAgICAgICBh
Y2Nlc3NvcnMgYXNzdW1lIHRoZXJlIGFyZSBhbiBhdHRyaWJ1dGUgc3RvcmFnZSBhbmQgd2lsbCBh
c3NlcnQgb3RoZXJ3aXNlLgorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hBbGxSdWxlcyk6CisgICAg
ICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphbnlBdHRy
aWJ1dGVNYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKToKKyAgICAgICAg
KiBkb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhc2V0
RE9NU3RyaW5nTWFwOjpnZXROYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhc2V0RE9NU3Ry
aW5nTWFwOjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6OmNv
bnRhaW5zKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmltcG9ydE5vZGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAg
IChFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZhc3RIYXNBdHRyaWJ1dGVz
KTogY2hlY2sgYXR0cmlidXRlCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmF0dHJpYnV0ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0
dHJpYnV0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0QXR0cmlidXRlSXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRGVmYXVsdE5hbWVz
cGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpsb29rdXBOYW1lc3BhY2VVUkkpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6bG9va3VwTmFtZXNwYWNlUHJlZml4KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKToKKyAgICAgICAgKiBlZGl0aW5n
L01hcmt1cEFjY3VtdWxhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxh
dG9yOjphcHBlbmRFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb21wbGV0ZVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFy
a3VwQWNjdW11bGF0b3I6OmFwcGVuZEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVk
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50OjpwYXJhbWV0
ZXJzRm9yUGx1Z2luKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgICog
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0
RWxlbWVudDo6cGFyYW1ldGVyc0ZvclBsdWdpbik6CisgICAgICAgICogaHRtbC9IVE1MUGFyYW1F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJhbUVsZW1lbnQ6OmlzVVJMQXR0
cmlidXRlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNhZmVBdHRyaWJ1dGVDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0Ojp0cnlUb0Vuc3VyZU5vYWhzQXJrQ29u
ZGl0aW9uUXVpY2tseSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybWF0dGluZ0VsZW1lbnRM
aXN0OjplbnN1cmVOb2Foc0Fya0NvbmRpdGlvbik6IFN0b3JlIEF0dHJpYnV0ZSoKKyAgICAgICAg
dG8gYXZvaWQgbG9va2luZyB1cCB0aGUgcmlnaHQgZWxlbWVudCBhZ2FpbiBieSBuYW1lLgorICAg
ICAgICAqIGluc3BlY3Rvci9ET01FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRp
dG9yOjppbm5lclBhdGNoTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OmNyZWF0
ZURpZ2VzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yQXR0cmlidXRl
U3R5bGVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2gpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0
cmlidXRlcyk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc0NoYXJzZXRTcGVjaWZ5aW5nTm9kZSk6CisgICAgICAgICogc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6Z2V0UHJl
c2VudGF0aW9uQXR0cmlidXRlKToKKyAgICAgICAgKiB4bWwvWFBhdGhGdW5jdGlvbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1bkxhbmc6OmV2YWx1YXRlKToKKyAgICAgICAgKiB4
bWwvWFBhdGhOb2RlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpOb2RlU2V0Ojp0
cmF2ZXJzYWxTb3J0KToKKyAgICAgICAgKiB4bWwvWFBhdGhTdGVwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlhQYXRoOjpTdGVwOjpub2Rlc0luQXhpcyk6CisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1l
bnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTFRy
ZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRyZWVCdWlsZGVyOjpYTUxUcmVl
QnVpbGRlcik6CisKIDIwMTItMDItMDMgIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21la2xpbmdAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGF0dGVtcHQgYWZ0ZXIgcjEw
NjY5NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYTk2NzYxYmVmNGQ0ODE4ZWQ5YjEz
OTg5NGYyOWMyNzNmYWMyZjEwOC4uOGFjZWM0NzMzYzczZjM1NDEzYzQ0NTUyMjg2ZTRjZjBmYTAy
ODg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0w
Mi0wMyAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVu
Ym9zc2Eub3JnPgorCisgICAgICAgIFByb3ZpZGUgbW9yZSBhdHRyaWJ1dGUgbWV0aG9kcyBpbiBF
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NzgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VT
ZXJpYWxpemVySW1wbDo6b3BlblRhZ1RvU3RyaW5nKTogYWNjZXNzIGF0dHJpYnV0ZXMgdmlhIEVs
ZW1lbnQgaW50ZXJmYWNlLgorCiAyMDEyLTAyLTAzICBCZXRoIERha2luICA8YmRha2luQGFwcGxl
LmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Nzc2OTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZDk1MjEyMGU3YTMwZDhhMzhhYTExYTJlZWI2ZGU2ZjE0
OGYzZmEyMC4uOTQyMjE1YmUyNjMxM2YxMTI2Y2NjYzI0Y2E5YmQ2ZjZjMWM3ZGE5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMi0wMyAgQ2FpbyBNYXJjZWxvIGRlIE9s
aXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFBy
b3ZpZGUgbW9yZSBhdHRyaWJ1dGUgbWV0aG9kcyBpbiBFbGVtZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzgwMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAg
ICAgICAgKFFXZWJFbGVtZW50OjphdHRyaWJ1dGVOYW1lcyk6IGFjY2VzcyBhdHRyaWJ1dGVzIHZp
YSBFbGVtZW50IGludGVyZmFjZS4KKwogMjAxMi0wMi0wMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
LmgvLmNwcCB0byBTdHlsZVByb3BlcnR5U2V0LmgvLmNwcCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAppbmRleCAxNjllNWZkZmQwOTA0ODEzMjA2ODAzZWY4ZTU0ZDY3ODgx
ZTc2Yzc2Li4yMjFiMTFkYjk1OWM0MzYwYTkxOGE5MmRkNWU2ZDM0ODJhNjcyNWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC05OTYsMTAgKzk5NiwxMCBAQCB2
b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoQWxsUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCkK
ICAgICAgICAgCiAgICAgLy8gTm93IGNoZWNrIGF1dGhvciBydWxlcywgYmVnaW5uaW5nIGZpcnN0
IHdpdGggcHJlc2VudGF0aW9uYWwgYXR0cmlidXRlcyBtYXBwZWQgZnJvbSBIVE1MLgogICAgIGlm
IChtX3N0eWxlZEVsZW1lbnQpIHsKLSAgICAgICAgaWYgKGNvbnN0IE5hbWVkTm9kZU1hcCogbWFw
ID0gbV9zdHlsZWRFbGVtZW50LT5hdHRyaWJ1dGVNYXAoKSkgeworICAgICAgICBpZiAobV9zdHls
ZWRFbGVtZW50LT5mYXN0SGFzQXR0cmlidXRlcygpKSB7CiAgICAgICAgICAgICAvLyBXYWxrIHRo
ZSBlbGVtZW50J3MgYXR0cmlidXRlIG1hcCBhbmQgYWRkIGFsbCBtYXBwZWQgYXR0cmlidXRlIGRl
Y2xhcmF0aW9ucy4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXAtPmxl
bmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IG1h
cC0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX3N0eWxlZEVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7ICsraSkgeworICAgICAgICAgICAg
ICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gbV9zdHlsZWRFbGVtZW50LT5hdHRyaWJ1dGVJdGVt
KGkpOwogICAgICAgICAgICAgICAgIGlmICghYXR0cmlidXRlLT5kZWNsKCkpCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIEFTU0VSVChhdHRyaWJ1dGUtPmlz
TWFwcGVkQXR0cmlidXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVj
dG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApp
bmRleCA1ODY3NzQ2NDdhMDg3ZDNhMGMyZDdmMjgyY2IzYmIwMzM2Zjk0NDA1Li44YTc0MzgwNTI5
ZDFjMDliZjFjZDEzZjU5MzQzYTRjZjZmMzE1MTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyLmNwcApAQCAtNjcxLDEwICs2NzEsMTEgQEAgc3RhdGljIGJvb2wgYXR0cmlidXRl
VmFsdWVNYXRjaGVzKEF0dHJpYnV0ZSogYXR0cmlidXRlSXRlbSwgQ1NTU2VsZWN0b3I6Ok1hdGNo
IG0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgYW55QXR0cmlidXRlTWF0Y2hl
cyhOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMsIENTU1NlbGVjdG9yOjpNYXRjaCBtYXRjaCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgc2VsZWN0b3JBdHRyLCBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVj
dG9yVmFsdWUsIGJvb2wgY2FzZVNlbnNpdGl2ZSkKK3N0YXRpYyBib29sIGFueUF0dHJpYnV0ZU1h
dGNoZXMoRWxlbWVudCogZWxlbWVudCwgQ1NTU2VsZWN0b3I6Ok1hdGNoIG1hdGNoLCBjb25zdCBR
dWFsaWZpZWROYW1lJiBzZWxlY3RvckF0dHIsIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0b3JW
YWx1ZSwgYm9vbCBjYXNlU2Vuc2l0aXZlKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YXR0cmlidXRlcy0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0
ZUl0ZW0gPSBhdHRyaWJ1dGVzLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgIEFTU0VSVChlbGVtZW50
LT5mYXN0SGFzQXR0cmlidXRlcygpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1l
bnQtPmF0dHJpYnV0ZUNvdW50KCk7ICsraSkgeworICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0
ZUl0ZW0gPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogCiAgICAgICAgIGlmICghU2VsZWN0
b3JDaGVja2VyOjphdHRyaWJ1dGVOYW1lTWF0Y2hlcyhhdHRyaWJ1dGVJdGVtLCBzZWxlY3RvckF0
dHIpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC03MDEsMTMgKzcwMiwxMiBAQCBib29sIFNl
bGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50
KiBlLCBQc2V1ZG9JZCYgZAogICAgIGlmIChzZWwtPmlzQXR0cmlidXRlU2VsZWN0b3IoKSkgewog
ICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyID0gc2VsLT5hdHRyaWJ1dGUoKTsKIAot
ICAgICAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMgPSBlLT51cGRhdGVkQXR0cmlidXRlcygp
OwotICAgICAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAgICAgIGlmICghZS0+aGFzQXR0cmlidXRl
cygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGJvb2wgY2FzZVNlbnNp
dGl2ZSA9ICFtX2RvY3VtZW50SXNIVE1MIHx8ICFodG1sQXR0cmlidXRlSGFzQ2FzZUluc2Vuc2l0
aXZlVmFsdWUoYXR0cik7CiAKLSAgICAgICAgaWYgKCFhbnlBdHRyaWJ1dGVNYXRjaGVzKGF0dHJp
YnV0ZXMsIHN0YXRpY19jYXN0PENTU1NlbGVjdG9yOjpNYXRjaD4oc2VsLT5tX21hdGNoKSwgYXR0
ciwgc2VsLT52YWx1ZSgpLCBjYXNlU2Vuc2l0aXZlKSkKKyAgICAgICAgaWYgKCFhbnlBdHRyaWJ1
dGVNYXRjaGVzKGUsIHN0YXRpY19jYXN0PENTU1NlbGVjdG9yOjpNYXRjaD4oc2VsLT5tX21hdGNo
KSwgYXR0ciwgc2VsLT52YWx1ZSgpLCBjYXNlU2Vuc2l0aXZlKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3Rv
ckNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCAz
Zjk0NjllNWQ3OWIwOWM5YWI4NDJlNzQyZDg1ZmFkNzE3Yjk0NzFmLi41Y2Q4Yzc3M2UzZGM2MGE5
OTIzOThiZDhhNWNjZDk4M2M3ODk4ZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5oCkBAIC0xODUsMTIgKzE4NSwxMSBAQCBpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmF0
dHJpYnV0ZU5hbWVNYXRjaGVzKGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlLCBjbwogCiBpbmxp
bmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrRXhhY3RBdHRyaWJ1dGUoY29uc3QgRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLCBj
b25zdCBBdG9taWNTdHJpbmdJbXBsKiB2YWx1ZSkKIHsKLSAgICBOYW1lZE5vZGVNYXAqIGF0dHJp
YnV0ZU1hcCA9IGVsZW1lbnQtPmF0dHJpYnV0ZU1hcCgpOwotICAgIGlmICghYXR0cmlidXRlTWFw
KQorICAgIGlmICghZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHVuc2lnbmVkIHNpemUgPSBhdHRyaWJ1dGVNYXAtPmxlbmd0aCgpOworICAg
IHVuc2lnbmVkIHNpemUgPSBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1
dGUgPSBhdHRyaWJ1dGVNYXAtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgIEF0dHJpYnV0ZSog
YXR0cmlidXRlID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgaWYgKGF0dHJp
YnV0ZU5hbWVNYXRjaGVzKGF0dHJpYnV0ZSwgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lKSAmJiAoIXZh
bHVlIHx8IGF0dHJpYnV0ZS0+dmFsdWUoKS5pbXBsKCkgPT0gdmFsdWUpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFz
ZXRET01TdHJpbmdNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdN
YXAuY3BwCmluZGV4IGRmZjBhZDc1MDcyMDY3ZTU1NmNlMWUyODYxNDUxMjQyN2UxMzBjMDMuLjM4
MjAyMmVjZGMzYTBjNDg0YzEyYzk5NTI0MTM0NjlmOGE1ZWE5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRl
ICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgotI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNU
eXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0xNDIsMjcg
KzE0MSwyNyBAQCB2b2lkIERhdGFzZXRET01TdHJpbmdNYXA6OmRlcmVmKCkKIAogdm9pZCBEYXRh
c2V0RE9NU3RyaW5nTWFwOjpnZXROYW1lcyhWZWN0b3I8U3RyaW5nPiYgbmFtZXMpCiB7Ci0gICAg
TmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAgPSBtX2VsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVz
KCk7Ci0gICAgaWYgKGF0dHJpYnV0ZU1hcCkgewotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBh
dHRyaWJ1dGVNYXAtPmxlbmd0aCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0cmli
dXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOwotICAgICAgICAgICAgaWYgKGlzVmFsaWRBdHRyaWJ1
dGVOYW1lKGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkpKQotICAgICAgICAgICAgICAgIG5hbWVzLmFw
cGVuZChjb252ZXJ0QXR0cmlidXRlTmFtZVRvUHJvcGVydHlOYW1lKGF0dHJpYnV0ZS0+bG9jYWxO
YW1lKCkpKTsKLSAgICAgICAgfQorICAgIGlmICghbV9lbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fZWxlbWVudC0+YXR0
cmlidXRlQ291bnQoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZUl0
ZW0oaSk7CisgICAgICAgIGlmIChpc1ZhbGlkQXR0cmlidXRlTmFtZShhdHRyaWJ1dGUtPmxvY2Fs
TmFtZSgpKSkKKyAgICAgICAgICAgIG5hbWVzLmFwcGVuZChjb252ZXJ0QXR0cmlidXRlTmFtZVRv
UHJvcGVydHlOYW1lKGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkpKTsKICAgICB9CiB9CiAKIFN0cmlu
ZyBEYXRhc2V0RE9NU3RyaW5nTWFwOjppdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBO
YW1lZE5vZGVNYXAqIGF0dHJpYnV0ZU1hcCA9IG1fZWxlbWVudC0+dXBkYXRlZEF0dHJpYnV0ZXMo
KTsKLSAgICBpZiAoYXR0cmlidXRlTWFwKSB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGF0
dHJpYnV0ZU1hcC0+bGVuZ3RoKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7IGkrKykgewotICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1
dGVNYXAtPmF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAgICAgICAgICBpZiAocHJvcGVydHlOYW1lTWF0
Y2hlc0F0dHJpYnV0ZU5hbWUobmFtZSwgYXR0cmlidXRlLT5sb2NhbE5hbWUoKSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKLSAgICAgICAgfQorICAgIGlmICgh
bV9lbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKwor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgQXR0cmlidXRl
KiBhdHRyaWJ1dGUgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgIGlmIChw
cm9wZXJ0eU5hbWVNYXRjaGVzQXR0cmlidXRlTmFtZShuYW1lLCBhdHRyaWJ1dGUtPmxvY2FsTmFt
ZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGUtPnZhbHVlKCk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMTcwLDE1ICsxNjksMTYgQEAgU3RyaW5nIERhdGFzZXRE
T01TdHJpbmdNYXA6Oml0ZW0oY29uc3QgU3RyaW5nJiBuYW1lKQogCiBib29sIERhdGFzZXRET01T
dHJpbmdNYXA6OmNvbnRhaW5zKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBOYW1lZE5vZGVN
YXAqIGF0dHJpYnV0ZU1hcCA9IG1fZWxlbWVudC0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICBp
ZiAoYXR0cmlidXRlTWFwKSB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGF0dHJpYnV0ZU1h
cC0+bGVuZ3RoKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkr
KykgewotICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVNYXAtPmF0
dHJpYnV0ZUl0ZW0oaSk7Ci0gICAgICAgICAgICBpZiAocHJvcGVydHlOYW1lTWF0Y2hlc0F0dHJp
YnV0ZU5hbWUobmFtZSwgYXR0cmlidXRlLT5sb2NhbE5hbWUoKSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICBpZiAoIW1fZWxlbWVudC0+aGFzQXR0cmlidXRl
cygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2Vs
ZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgaSsrKSB7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gbV9lbGVtZW50LT5h
dHRyaWJ1dGVJdGVtKGkpOworICAgICAgICBpZiAocHJvcGVydHlOYW1lTWF0Y2hlc0F0dHJpYnV0
ZU5hbWUobmFtZSwgYXR0cmlidXRlLT5sb2NhbE5hbWUoKSkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IGVkYmJjZGQzZDVmMjI1M2U2Mjg5ZDlmNWI5YzQ1Njg1YTc2ODUyZGYuLmMzOTVj
YjQ0MTgwNjNlYjU1MjdiMmE2YjJjMjdhM2UzODBmNjlhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcApAQCAtODUwLDExICs4NTAsMTAgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6aW1w
b3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0aW9uQ28KICAgICAg
ICAgaWYgKGVjKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgTmFtZWROb2RlTWFw
KiBhdHRycyA9IG9sZEVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIGlmIChh
dHRycykgewotICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cnMtPmxlbmd0aCgpOwor
ICAgICAgICBpZiAob2xkRWxlbWVudC0+aGFzQXR0cmlidXRlcygpKSB7CisgICAgICAgICAgICB1
bnNpZ25lZCBsZW5ndGggPSBvbGRFbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOwogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAg
ICAgQXR0cmlidXRlKiBhdHRyID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAg
ICAgICAgQXR0cmlidXRlKiBhdHRyID0gb2xkRWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKICAg
ICAgICAgICAgICAgICBuZXdFbGVtZW50LT5zZXRBdHRyaWJ1dGUoYXR0ci0+bmFtZSgpLCBhdHRy
LT52YWx1ZSgpLmltcGwoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCmluZGV4IDNjMjc2NTk2NWUyMmZlNjQ3ZWNlMWViZmVlMWNjMzZhNjRmZGEwNjEuLjllYTlj
YzdlNTRmNDQ0MDkwMzFiZWIzMGQ2NzEyOWFlNGQyMjdiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApA
QCAtMTIzLDYgKzEyMyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGwgdGhpcyB0byBnZXQgdGhl
IHZhbHVlIG9mIGFuIGF0dHJpYnV0ZSB0aGF0IGlzIGtub3duIG5vdCB0byBiZSB0aGUgc3R5bGUK
ICAgICAvLyBhdHRyaWJ1dGUgb3Igb25lIG9mIHRoZSBTVkcgYW5pbWF0YWJsZSBhdHRyaWJ1dGVz
LgorICAgIGJvb2wgZmFzdEhhc0F0dHJpYnV0ZXMoKSBjb25zdDsKICAgICBib29sIGZhc3RIYXNB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgZmFzdEdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAjaWZu
ZGVmIE5ERUJVRwpAQCAtMTQ5LDYgKzE1MCwxMiBAQCBwdWJsaWM6CiAgICAgLy8gc28gdGhpcyBm
dW5jdGlvbiBpcyBub3Qgc3VpdGFibGUgZm9yIG5vbi1zdHlsZSB1c2VzLgogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgaWRGb3JTdHlsZVJlc29sdXRpb24oKSBjb25zdDsKIAorICAgIC8vIEludGVy
bmFsIG1ldGhvZHMgdGhhdCBhc3N1bWUgdGhlIEVsZW1lbnQgaGFzIGF0dHJpYnV0ZXMuCisgICAg
c2l6ZV90IGF0dHJpYnV0ZUNvdW50KCkgY29uc3Q7CisgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGVJ
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0
ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRl
KHVuc2lnbmVkIGluZGV4KTsKKwogICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXcoYm9vbCBhbGlnblRv
VG9wID0gdHJ1ZSk7CiAgICAgdm9pZCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkKGJvb2wgY2VudGVy
SWZOZWVkZWQgPSB0cnVlKTsKIApAQCAtNTc2LDYgKzU4MywxMSBAQCBpbmxpbmUgdm9pZCBFbGVt
ZW50Ojp3aWxsUmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pYwogICAgICAgICB3aWxsTW9kaWZ5QXR0cmlidXRlKG5hbWUsIHZhbHVlLCBudWxsQXRv
bSk7CiB9CiAKK2lubGluZSBib29sIEVsZW1lbnQ6OmZhc3RIYXNBdHRyaWJ1dGVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9hdHRyaWJ1dGVNYXAgJiYgIW1fYXR0cmlidXRlTWFwLT5pc0VtcHR5
KCk7Cit9CisKIGlubGluZSBib29sIEVsZW1lbnQ6OmZhc3RIYXNBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZmFzdEF0dHJpYnV0ZUxvb2t1
cEFsbG93ZWQobmFtZSkpOwpAQCAtNjE3LDYgKzYyOSwzMCBAQCBpbmxpbmUgdm9pZCBFbGVtZW50
OjpzZXRJZEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogICAgIHNldEF0dHJp
YnV0ZShkb2N1bWVudCgpLT5pZEF0dHJpYnV0ZU5hbWUoKSwgdmFsdWUpOwogfQogCitpbmxpbmUg
c2l6ZV90IEVsZW1lbnQ6OmF0dHJpYnV0ZUNvdW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9h
dHRyaWJ1dGVNYXApOworICAgIHJldHVybiBtX2F0dHJpYnV0ZU1hcC0+bGVuZ3RoKCk7Cit9CisK
K2lubGluZSBBdHRyaWJ1dGUqIEVsZW1lbnQ6OmF0dHJpYnV0ZUl0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKG1fYXR0cmlidXRlTWFwKTsKKyAgICByZXR1cm4gbV9hdHRy
aWJ1dGVNYXAtPmF0dHJpYnV0ZUl0ZW0oaW5kZXgpOworfQorCitpbmxpbmUgQXR0cmlidXRlKiBF
bGVtZW50OjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0
Cit7CisgICAgQVNTRVJUKG1fYXR0cmlidXRlTWFwKTsKKyAgICByZXR1cm4gbV9hdHRyaWJ1dGVN
YXAtPmdldEF0dHJpYnV0ZUl0ZW0obmFtZSk7Cit9CisKK2lubGluZSB2b2lkIEVsZW1lbnQ6OnJl
bW92ZUF0dHJpYnV0ZSh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBBU1NFUlQobV9hdHRyaWJ1dGVN
YXApOworICAgIG1fYXR0cmlidXRlTWFwLT5yZW1vdmVBdHRyaWJ1dGUoaW5kZXgpOworfQorCiBp
bmxpbmUgTmFtZWROb2RlTWFwKiBFbGVtZW50OjplbnN1cmVBdHRyaWJ1dGVNYXAoKSBjb25zdAog
ewogICAgIGlmICghbV9hdHRyaWJ1dGVNYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNzM4MDAwZmVj
ZDMxNGFlMGRjYmVmN2EyYTljZDgxMWY1ODI1MzUzZi4uYjg0YWExZWViNGE2ZTM1OWMyZDgwMTNh
NmY0ZTRjZmU4MzJiZjE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTgzMSw5ICsxODMxLDkgQEAg
Ym9vbCBOb2RlOjppc0RlZmF1bHROYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3Bh
Y2VVUklNYXliZUVtcHR5KSBjb25zdAogICAgICAgICAgICAgaWYgKGVsZW0tPnByZWZpeCgpLmlz
TnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLT5uYW1lc3BhY2VVUkkoKSA9PSBu
YW1lc3BhY2VVUkk7CiAKLSAgICAgICAgICAgIGlmIChOYW1lZE5vZGVNYXAqIGF0dHJzID0gZWxl
bS0+dXBkYXRlZEF0dHJpYnV0ZXMoKSkgewotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBhdHRycy0+bGVuZ3RoKCk7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBB
dHRyaWJ1dGUqIGF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgICAgIGlm
IChlbGVtLT5oYXNBdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZWxlbS0+YXR0cmlidXRlQ291bnQoKTsgaSsrKSB7CisgICAgICAgICAgICAg
ICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IGVsZW0tPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAoYXR0ci0+bG9jYWxOYW1lKCkg
PT0geG1sbnNBdG9tKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHItPnZhbHVl
KCkgPT0gbmFtZXNwYWNlVVJJOwpAQCAtMTkxNyw5ICsxOTE3LDkgQEAgU3RyaW5nIE5vZGU6Omxv
b2t1cE5hbWVzcGFjZVVSSShjb25zdCBTdHJpbmcgJnByZWZpeCkgY29uc3QKICAgICAgICAgICAg
IGlmICghZWxlbS0+bmFtZXNwYWNlVVJJKCkuaXNOdWxsKCkgJiYgZWxlbS0+cHJlZml4KCkgPT0g
cHJlZml4KQogICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLT5uYW1lc3BhY2VVUkkoKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cnMgPSBlbGVtLT51
cGRhdGVkQXR0cmlidXRlcygpKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGF0dHJzLT5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIEF0dHJp
YnV0ZSAqYXR0ciA9IGF0dHJzLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICAgICAgaWYgKGVs
ZW0tPmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBlbGVtLT5hdHRyaWJ1dGVDb3VudCgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICAg
ICAgQXR0cmlidXRlKiBhdHRyID0gZWxlbS0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyLT5wcmVmaXgoKSA9PSB4bWxu
c0F0b20gJiYgYXR0ci0+bG9jYWxOYW1lKCkgPT0gcHJlZml4KSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKQpAQCAtMTk3MSw5ICsxOTcxLDEx
IEBAIFN0cmluZyBOb2RlOjpsb29rdXBOYW1lc3BhY2VQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5n
ICZfbmFtZXNwYWNlVVJJLCBjb25zdCBFbGVtCiAgICAgaWYgKG9yaWdpbmFsRWxlbWVudC0+bG9v
a3VwTmFtZXNwYWNlVVJJKHByZWZpeCgpKSA9PSBfbmFtZXNwYWNlVVJJKQogICAgICAgICByZXR1
cm4gcHJlZml4KCk7CiAgICAgCi0gICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cnMgPSB0b0VsZW1l
bnQodGhpcyktPnVwZGF0ZWRBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGF0dHJzLT5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgICAgICAgICBBdHRyaWJ1dGUq
IGF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICBBU1NFUlQoaXNFbGVtZW50Tm9k
ZSgpKTsKKyAgICBjb25zdCBFbGVtZW50KiB0aGlzRWxlbWVudCA9IHRvRWxlbWVudCh0aGlzKTsK
KyAgICBpZiAodGhpc0VsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdGhpc0VsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7IGkrKykgewor
ICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyID0gdGhpc0VsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0o
aSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChhdHRyLT5wcmVmaXgoKSA9PSB4bWxu
c0F0b20gJiYgYXR0ci0+dmFsdWUoKSA9PSBfbmFtZXNwYWNlVVJJCiAgICAgICAgICAgICAgICAg
ICAgICYmIG9yaWdpbmFsRWxlbWVudC0+bG9va3VwTmFtZXNwYWNlVVJJKGF0dHItPmxvY2FsTmFt
ZSgpKSA9PSBfbmFtZXNwYWNlVVJJKQpAQCAtMjExNCwxNyArMjExNiwxNyBAQCB1bnNpZ25lZCBz
aG9ydCBOb2RlOjpjb21wYXJlRG9jdW1lbnRQb3NpdGlvbihOb2RlKiBvdGhlck5vZGUpCiAgICAg
ICAgIGNoYWluMi5hcHBlbmQoYXR0cjIpOwogICAgIAogICAgIGlmIChhdHRyMSAmJiBhdHRyMiAm
JiBzdGFydDEgPT0gc3RhcnQyICYmIHN0YXJ0MSkgewotICAgICAgICAvLyBXZSBhcmUgY29tcGFy
aW5nIHR3byBhdHRyaWJ1dGVzIG9uIHRoZSBzYW1lIG5vZGUuICBDcmF3bCBvdXIgYXR0cmlidXRl
IG1hcAotICAgICAgICAvLyBhbmQgc2VlIHdoaWNoIG9uZSB3ZSBoaXQgZmlyc3QuCi0gICAgICAg
IE5hbWVkTm9kZU1hcCogbWFwID0gYXR0cjEtPm93bmVyRWxlbWVudCgpLT51cGRhdGVkQXR0cmli
dXRlcygpOwotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBtYXAtPmxlbmd0aCgpOworICAgICAg
ICAvLyBXZSBhcmUgY29tcGFyaW5nIHR3byBhdHRyaWJ1dGVzIG9uIHRoZSBzYW1lIG5vZGUuIENy
YXdsIG91ciBhdHRyaWJ1dGUgbWFwIGFuZCBzZWUgd2hpY2ggb25lIHdlIGhpdCBmaXJzdC4KKyAg
ICAgICAgRWxlbWVudCogb3duZXIxID0gYXR0cjEtPm93bmVyRWxlbWVudCgpOworICAgICAgICBv
d25lcjEtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7IC8vIEZvcmNlIHVwZGF0ZSBpbnZhbGlkIGF0dHJp
YnV0ZXMuCisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IG93bmVyMS0+YXR0cmlidXRlQ291bnQo
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAg
ICAgICAgICAvLyBJZiBuZWl0aGVyIG9mIHRoZSB0d28gZGV0ZXJtaW5pbmcgbm9kZXMgaXMgYSBj
aGlsZCBub2RlIGFuZCBub2RlVHlwZSBpcyB0aGUgc2FtZSBmb3IgYm90aCBkZXRlcm1pbmluZyBu
b2RlcywgdGhlbiBhbiAKICAgICAgICAgICAgIC8vIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudCBv
cmRlciBiZXR3ZWVuIHRoZSBkZXRlcm1pbmluZyBub2RlcyBpcyByZXR1cm5lZC4gVGhpcyBvcmRl
ciBpcyBzdGFibGUgYXMgbG9uZyBhcyBubyBub2RlcyBvZgogICAgICAgICAgICAgLy8gdGhlIHNh
bWUgbm9kZVR5cGUgYXJlIGluc2VydGVkIGludG8gb3IgcmVtb3ZlZCBmcm9tIHRoZSBkaXJlY3Qg
Y29udGFpbmVyLiBUaGlzIHdvdWxkIGJlIHRoZSBjYXNlLCBmb3IgZXhhbXBsZSwgCiAgICAgICAg
ICAgICAvLyB3aGVuIGNvbXBhcmluZyB0d28gYXR0cmlidXRlcyBvZiB0aGUgc2FtZSBlbGVtZW50
LCBhbmQgaW5zZXJ0aW5nIG9yIHJlbW92aW5nIGFkZGl0aW9uYWwgYXR0cmlidXRlcyBtaWdodCBj
aGFuZ2UgCiAgICAgICAgICAgICAvLyB0aGUgb3JkZXIgYmV0d2VlbiBleGlzdGluZyBhdHRyaWJ1
dGVzLgotICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyID0gbWFwLT5hdHRyaWJ1dGVJdGVtKGkp
OworICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyID0gb3duZXIxLT5hdHRyaWJ1dGVJdGVtKGkp
OwogICAgICAgICAgICAgaWYgKGF0dHIxLT5hdHRyKCkgPT0gYXR0cikKICAgICAgICAgICAgICAg
ICByZXR1cm4gRE9DVU1FTlRfUE9TSVRJT05fSU1QTEVNRU5UQVRJT05fU1BFQ0lGSUMgfCBET0NV
TUVOVF9QT1NJVElPTl9GT0xMT1dJTkc7CiAgICAgICAgICAgICBpZiAoYXR0cjItPmF0dHIoKSA9
PSBhdHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVs
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApp
bmRleCA1MjI2YjIxNGMyNTgxMTc2MDkzNWM1NjY5NjRlNzYzMGYwMmY5ZDE4Li4zMDZhODQ2NTU4
ZTZiYzJhMTZkYTg2N2YyYTIwYzg3NmQ2MjJlMzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtMzQ5LDExICszNDksMTAgQEAgdm9pZCBNYXJr
dXBBY2N1bXVsYXRvcjo6YXBwZW5kRWxlbWVudChTdHJpbmdCdWlsZGVyJiBvdXQsIEVsZW1lbnQq
IGVsZW1lbnQsIE5hbWUKIHsKICAgICBhcHBlbmRPcGVuVGFnKG91dCwgZWxlbWVudCwgbmFtZXNw
YWNlcyk7CiAKLSAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMgPSBlbGVtZW50LT51cGRhdGVk
QXR0cmlidXRlcygpOwotICAgIGlmIChhdHRyaWJ1dGVzKSB7Ci0gICAgICAgIHVuc2lnbmVkIGxl
bmd0aCA9IGF0dHJpYnV0ZXMtPmxlbmd0aCgpOworICAgIGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1
dGVzKCkpIHsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gZWxlbWVudC0+YXR0cmlidXRlQ291
bnQoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykK
LSAgICAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZShvdXQsIGVsZW1lbnQsICphdHRyaWJ1dGVzLT5h
dHRyaWJ1dGVJdGVtKGkpLCBuYW1lc3BhY2VzKTsKKyAgICAgICAgICAgIGFwcGVuZEF0dHJpYnV0
ZShvdXQsIGVsZW1lbnQsICplbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpLCBuYW1lc3BhY2VzKTsK
ICAgICB9CiAKICAgICAvLyBHaXZlIGFuIG9wcG9ydHVuaXR5IHRvIHN1YmNsYXNzZXMgdG8gYWRk
IHRoZWlyIG93biBhdHRyaWJ1dGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDli
MTkwOTA5MWExMDVjMTM2NWVjNzEyZmI5MDVjN2IyMTQ5MTEwOWMuLmM5YTBlNzhkZDE5NmVkYTlm
MjAwYzZhY2ZlNGQzY2U0MzdlZjFmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAg
LTEwNCwxMiArMTA0LDExIEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlVVJMcyhOb2RlKiBub2RlLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkwpCiAgICAgZm9yIChOb2RlKiBuID0gbm9kZTsgbiAhPSBlbmQ7
IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKICAgICAgICAgaWYgKG4tPmlzRWxlbWVudE5v
ZGUoKSkgewogICAgICAgICAgICAgRWxlbWVudCogZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihu
KTsKLSAgICAgICAgICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IGUtPnVwZGF0ZWRBdHRy
aWJ1dGVzKCk7Ci0gICAgICAgICAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAgICAgICAgICBpZiAo
IWUtPmhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGF0dHJpYnV0ZXMtPmxlbmd0aCgpOworICAgICAgICAgICAg
dW5zaWduZWQgbGVuZ3RoID0gZS0+YXR0cmlidXRlQ291bnQoKTsKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIEF0dHJp
YnV0ZSogYXR0cmlidXRlID0gYXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAg
ICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGUtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAg
ICAgICAgICAgICAgaWYgKGUtPmlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSkpCiAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZXMuYXBwZW5kKEF0dHJpYnV0ZUNoYW5nZShlLCBhdHRyaWJ1dGUtPm5h
bWUoKSwgS1VSTChwYXJzZWRCYXNlVVJMLCBhdHRyaWJ1dGUtPnZhbHVlKCkpLnN0cmluZygpKSk7
CiAgICAgICAgICAgICB9CkBAIC0yODksMTIgKzI4OCwxMSBAQCB2b2lkIFN0eWxlZE1hcmt1cEFj
Y3VtdWxhdG9yOjphcHBlbmRFbGVtZW50KFN0cmluZ0J1aWxkZXImIG91dCwgRWxlbWVudCogZWxl
bWVudAogICAgIGNvbnN0IGJvb2wgZG9jdW1lbnRJc0hUTUwgPSBlbGVtZW50LT5kb2N1bWVudCgp
LT5pc0hUTUxEb2N1bWVudCgpOwogICAgIGFwcGVuZE9wZW5UYWcob3V0LCBlbGVtZW50LCAwKTsK
IAotICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IGVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1
dGVzKCk7Ci0gICAgY29uc3QgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmlidXRlcyA/IGF0dHJpYnV0
ZXMtPmxlbmd0aCgpIDogMDsKKyAgICBjb25zdCB1bnNpZ25lZCBsZW5ndGggPSBlbGVtZW50LT5o
YXNBdHRyaWJ1dGVzKCkgPyBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpIDogMDsKICAgICBjb25z
dCBib29sIHNob3VsZEFubm90YXRlT3JGb3JjZUlubGluZSA9IGVsZW1lbnQtPmlzSFRNTEVsZW1l
bnQoKSAmJiAoc2hvdWxkQW5ub3RhdGUoKSB8fCBhZGREaXNwbGF5SW5saW5lKTsKICAgICBjb25z
dCBib29sIHNob3VsZE92ZXJyaWRlU3R5bGVBdHRyID0gc2hvdWxkQW5ub3RhdGVPckZvcmNlSW5s
aW5lIHx8IHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZShlbGVtZW50KTsKICAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIEF0dHJpYnV0ZSogYXR0
cmlidXRlID0gYXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgQXR0cmlidXRl
KiBhdHRyaWJ1dGUgPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAvLyBXZSds
bCBoYW5kbGUgdGhlIHN0eWxlIGF0dHJpYnV0ZSBzZXBhcmF0ZWx5LCBiZWxvdy4KICAgICAgICAg
aWYgKGF0dHJpYnV0ZS0+bmFtZSgpID09IHN0eWxlQXR0ciAmJiBzaG91bGRPdmVycmlkZVN0eWxl
QXR0cikKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVk
RWxlbWVudC5jcHAKaW5kZXggMzA5YWFmZTA1NWEzYTFiZjRmNDViMTVlZjkyYjEyNzQ1MTg4ZjA0
ZS4uYTY2ZDE1ZmUyNzVmYjhlZDQxMjQ4YmZhNGE1Njg1NGVhODBlZjFlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC0xMTcsMTIgKzExNywxMSBAQCB2b2lk
IEhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikK
IAogdm9pZCBIVE1MRW1iZWRFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKFZlY3RvcjxTdHJp
bmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7Ci0gICAgTmFt
ZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gdXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAoIWF0
dHJpYnV0ZXMpCisgICAgaWYgKCFoYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLT5sZW5ndGgoKTsgKytpKSB7
Ci0gICAgICAgIEF0dHJpYnV0ZSogaXQgPSBhdHRyaWJ1dGVzLT5hdHRyaWJ1dGVJdGVtKGkpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVDb3VudCgpOyArK2kpIHsKKyAg
ICAgICAgQXR0cmlidXRlKiBpdCA9IGF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgIHBhcmFtTmFt
ZXMuYXBwZW5kKGl0LT5sb2NhbE5hbWUoKS5zdHJpbmcoKSk7CiAgICAgICAgIHBhcmFtVmFsdWVz
LmFwcGVuZChpdC0+dmFsdWUoKS5zdHJpbmcoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNDEzYzEyNzdjYzExMzg5MzQ0MmFkYTViNmM5ODEx
NmNmMTgwZmU3ZC4uMjhlYTEwYjE3ZGU4NDgxYTI5YTNlMDE5MDIwMTEwZGZhNDM0MWMzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC01NDUsMTMgKzU0NSwx
MiBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUoKQogICAgICAgICByZWdpc3Rl
ckZvclN1c3BlbnNpb25DYWxsYmFja0lmTmVlZGVkKCk7CiAKICAgICBpZiAoZGlkUmVzcGVjdEhl
aWdodEFuZFdpZHRoICE9IG1faW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0SGVpZ2h0QW5kV2lkdGhB
dHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgTmFtZWROb2RlTWFwKiBtYXAgPSBhdHRyaWJ1dGVNYXAo
KTsKLSAgICAgICAgQVNTRVJUKG1hcCk7Ci0gICAgICAgIGlmIChBdHRyaWJ1dGUqIGhlaWdodCA9
IG1hcC0+Z2V0QXR0cmlidXRlSXRlbShoZWlnaHRBdHRyKSkKKyAgICAgICAgQVNTRVJUKGF0dHJp
YnV0ZU1hcCgpKTsKKyAgICAgICAgaWYgKEF0dHJpYnV0ZSogaGVpZ2h0ID0gZ2V0QXR0cmlidXRl
SXRlbShoZWlnaHRBdHRyKSkKICAgICAgICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQoaGVpZ2h0LCBm
YWxzZSk7Ci0gICAgICAgIGlmIChBdHRyaWJ1dGUqIHdpZHRoID0gbWFwLT5nZXRBdHRyaWJ1dGVJ
dGVtKHdpZHRoQXR0cikpCisgICAgICAgIGlmIChBdHRyaWJ1dGUqIHdpZHRoID0gZ2V0QXR0cmli
dXRlSXRlbSh3aWR0aEF0dHIpKQogICAgICAgICAgICAgYXR0cmlidXRlQ2hhbmdlZCh3aWR0aCwg
ZmFsc2UpOwotICAgICAgICBpZiAoQXR0cmlidXRlKiBhbGlnbiA9IG1hcC0+Z2V0QXR0cmlidXRl
SXRlbShhbGlnbkF0dHIpKQorICAgICAgICBpZiAoQXR0cmlidXRlKiBhbGlnbiA9IGdldEF0dHJp
YnV0ZUl0ZW0oYWxpZ25BdHRyKSkKICAgICAgICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQoYWxpZ24s
IGZhbHNlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5j
cHAKaW5kZXggNTkwZDY5Yjk4YjI0Yzk2YjcwNzQxMWNiNWQ4NzAyM2EzZTk4OWMyMy4uNTQ2ZGMx
YzBiN2JhNDZkYjE3NTM1NTlhMjEyOTdhZjNhNjkxMzIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTE3NywxMCArMTc3LDkgQEAgdm9pZCBIVE1MT2Jq
ZWN0RWxlbWVudDo6cGFyYW1ldGVyc0ZvclBsdWdpbihWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1l
cywgVmVjdG9yPFMKICAgICB9CiAgICAgCiAgICAgLy8gVHVybiB0aGUgYXR0cmlidXRlcyBvZiB0
aGUgPG9iamVjdD4gZWxlbWVudCBpbnRvIGFycmF5cywgYnV0IGRvbid0IG92ZXJyaWRlIDxwYXJh
bT4gdmFsdWVzLgotICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IHVwZGF0ZWRBdHRyaWJ1
dGVzKCk7Ci0gICAgaWYgKGF0dHJpYnV0ZXMpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGF0dHJpYnV0ZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgIEF0dHJpYnV0
ZSogaXQgPSBhdHRyaWJ1dGVzLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgIGlmIChoYXNBdHRyaWJ1
dGVzKCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZUNvdW50
KCk7ICsraSkgeworICAgICAgICAgICAgQXR0cmlidXRlKiBpdCA9IGF0dHJpYnV0ZUl0ZW0oaSk7
CiAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBpdC0+bmFtZSgpLmxvY2Fs
TmFtZSgpOwogICAgICAgICAgICAgaWYgKCF1bmlxdWVQYXJhbU5hbWVzLmNvbnRhaW5zKG5hbWUu
aW1wbCgpKSkgewogICAgICAgICAgICAgICAgIHBhcmFtTmFtZXMuYXBwZW5kKG5hbWUuc3RyaW5n
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAKaW5kZXggYWEyMjhi
YzMxNjYzYWIwODJhMzIwMjJiODRlMWNlM2ViMDliZmFjMS4uOTA3MjQyMTExOTFmNjk3NjUzYzgx
N2ZjOTY1Yjg5N2QzMTI4ZmM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGFyYW1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1l
bnQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgSFRNTFBhcmFtRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogYm9vbCBIVE1MUGFyYW1FbGVtZW50Ojppc1VS
TEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpIGNvbnN0CiB7CiAgICAgaWYgKGF0dHItPm5hbWUo
KSA9PSB2YWx1ZUF0dHIgJiYgaGFzQXR0cmlidXRlcygpKSB7Ci0gICAgICAgIEF0dHJpYnV0ZSog
bmFtZUF0dHJpYnV0ZSA9IGF0dHJpYnV0ZU1hcCgpLT5nZXRBdHRyaWJ1dGVJdGVtKG5hbWVBdHRy
KTsKKyAgICAgICAgQXR0cmlidXRlKiBuYW1lQXR0cmlidXRlID0gZ2V0QXR0cmlidXRlSXRlbShu
YW1lQXR0cik7CiAgICAgICAgIGlmIChuYW1lQXR0cmlidXRlKSB7CiAgICAgICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlID0gbmFtZUF0dHJpYnV0ZS0+dmFsdWUoKTsKICAgICAgICAg
ICAgIGlmIChpc1VSTFBhcmFtZXRlcih2YWx1ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCmluZGV4IGYzMzFh
ZjdlNzBiNmI1ZGM1ZDE5YTgxNDdiZTdhMjg0YjNlNjI5ZGUuLjdhMDc1MTA4NzIzMmQ5NTU4YTRi
MWIxYjkyMmY2NDcwNjFlZGVjMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCkBAIC00MCw5ICs0MCw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIE5vYWgncyBBcmsgb2YgRm9ybWF0dGluZyBFbGVtZW50
cyBjYW4gZml0IHRocmVlIG9mIGVhY2ggZWxlbWVudC4KIHN0YXRpYyBjb25zdCBzaXplX3Qga05v
YWhzQXJrQ2FwYWNpdHkgPSAzOwogCi1zdGF0aWMgaW5saW5lIHNpemVfdCBhdHRyaWJ1dGVDb3Vu
dChFbGVtZW50KiBlbGVtZW50KQorc3RhdGljIGlubGluZSBzaXplX3Qgc2FmZUF0dHJpYnV0ZUNv
dW50KEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGVsZW1lbnQtPmF0dHJpYnV0ZU1h
cCgpID8gZWxlbWVudC0+YXR0cmlidXRlTWFwKCktPmxlbmd0aCgpIDogMDsKKyAgICByZXR1cm4g
ZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZXMoKSA/IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCkg
OiAwOwogfQogCiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjpIVE1MRm9ybWF0dGluZ0VsZW1l
bnRMaXN0KCkKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVudExp
c3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KEVsZW1lbnQqIG5ldwogICAg
IC8vIG9mIGEgcXVpY2tseSBlbnN1cmluZyB0aGUgY29uZGl0aW9uLgogICAgIFZlY3RvcjxFbGVt
ZW50KiwgMTA+IGNhbmRpZGF0ZXM7CiAKLSAgICBzaXplX3QgbmV3RWxlbWVudEF0dHJpYnV0ZUNv
dW50ID0gYXR0cmlidXRlQ291bnQobmV3RWxlbWVudCk7CisgICAgc2l6ZV90IG5ld0VsZW1lbnRB
dHRyaWJ1dGVDb3VudCA9IHNhZmVBdHRyaWJ1dGVDb3VudChuZXdFbGVtZW50KTsKIAogICAgIGZv
ciAoc2l6ZV90IGkgPSBtX2VudHJpZXMuc2l6ZSgpOyBpOyApIHsKICAgICAgICAgLS1pOwpAQCAt
MTU0LDcgKzE1NCw3IEBAIHZvaWQgSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6dHJ5VG9FbnN1
cmVOb2Foc0Fya0NvbmRpdGlvblF1aWNrbHkoRWxlbWVudCogbmV3CiAgICAgICAgIEVsZW1lbnQq
IGNhbmRpZGF0ZSA9IGVudHJ5LmVsZW1lbnQoKTsKICAgICAgICAgaWYgKG5ld0VsZW1lbnQtPnRh
Z1FOYW1lKCkgIT0gY2FuZGlkYXRlLT50YWdRTmFtZSgpKQogICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVDb3VudChjYW5kaWRhdGUpICE9IG5ld0VsZW1lbnRBdHRy
aWJ1dGVDb3VudCkKKyAgICAgICAgaWYgKHNhZmVBdHRyaWJ1dGVDb3VudChjYW5kaWRhdGUpICE9
IG5ld0VsZW1lbnRBdHRyaWJ1dGVDb3VudCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIGNhbmRpZGF0ZXMuYXBwZW5kKGNhbmRpZGF0ZSk7CkBAIC0xNzgsMTggKzE3OCwxNiBAQCB2
b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Q6OmVuc3VyZU5vYWhzQXJrQ29uZGl0aW9uKEVs
ZW1lbnQqIG5ld0VsZW1lbnQpCiAgICAgVmVjdG9yPEVsZW1lbnQqPiByZW1haW5pbmdDYW5kaWRh
dGVzOwogICAgIHJlbWFpbmluZ0NhbmRpZGF0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjYW5k
aWRhdGVzLnNpemUoKSk7CiAKLSAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZU1hcCA9IG5ld0Vs
ZW1lbnQtPmF0dHJpYnV0ZU1hcCgpOwotICAgIHNpemVfdCBuZXdFbGVtZW50QXR0cmlidXRlQ291
bnQgPSBhdHRyaWJ1dGVDb3VudChuZXdFbGVtZW50KTsKKyAgICBzaXplX3QgbmV3RWxlbWVudEF0
dHJpYnV0ZUNvdW50ID0gc2FmZUF0dHJpYnV0ZUNvdW50KG5ld0VsZW1lbnQpOwogCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBuZXdFbGVtZW50QXR0cmlidXRlQ291bnQ7ICsraSkgewotICAg
ICAgICBRdWFsaWZpZWROYW1lIGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGVNYXAtPmF0dHJpYnV0
ZUl0ZW0oaSktPm5hbWUoKTsKLSAgICAgICAgQXRvbWljU3RyaW5nIGF0dHJpYnV0ZVZhbHVlID0g
bmV3RWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgQXR0
cmlidXRlKiBhdHRyaWJ1dGUgPSBuZXdFbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogCiAgICAg
ICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgY2FuZGlkYXRlcy5zaXplKCk7ICsraikgewogICAg
ICAgICAgICAgRWxlbWVudCogY2FuZGlkYXRlID0gY2FuZGlkYXRlc1tqXTsKIAogICAgICAgICAg
ICAgLy8gVGhlc2UgcHJvcGVydGllcyBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gY2hlY2tlZCBi
eSB0cnlUb0Vuc3VyZU5vYWhzQXJrQ29uZGl0aW9uUXVpY2tseS4KLSAgICAgICAgICAgIEFTU0VS
VChuZXdFbGVtZW50LT5hdHRyaWJ1dGVNYXAoKS0+bGVuZ3RoKCkgPT0gY2FuZGlkYXRlLT5hdHRy
aWJ1dGVNYXAoKS0+bGVuZ3RoKCkpOworICAgICAgICAgICAgQVNTRVJUKG5ld0VsZW1lbnQtPmF0
dHJpYnV0ZUNvdW50KCkgPT0gY2FuZGlkYXRlLT5hdHRyaWJ1dGVDb3VudCgpKTsKICAgICAgICAg
ICAgIEFTU0VSVChuZXdFbGVtZW50LT50YWdRTmFtZSgpID09IGNhbmRpZGF0ZS0+dGFnUU5hbWUo
KSk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBUZWNobmljYWxseSB3ZSBzaG91bGRuJ3QgcmVh
ZCB0aGlzIGluZm9ybWF0aW9uIGJhY2sgZnJvbQpAQCAtMTk5LDcgKzE5Nyw3IEBAIHZvaWQgSFRN
TEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6ZW5zdXJlTm9haHNBcmtDb25kaXRpb24oRWxlbWVudCog
bmV3RWxlbWVudCkKICAgICAgICAgICAgIC8vIHRoYXQgaW1wbGVtZW50YXRpb25zIGNhbiBydW4g
b2ZmIHRoZSBtYWluIHRocmVhZC4gSWYgSmF2YVNjcmlwdAogICAgICAgICAgICAgLy8gY2hhbmdl
cyB0aGUgYXR0cmlidXRlcyB2YWx1ZXMsIHdlIGNvdWxkIGdldCBhIHNsaWdodGx5IHdyb25nCiAg
ICAgICAgICAgICAvLyBvdXRwdXQgaGVyZS4KLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGUtPmZh
c3RHZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgPT0gYXR0cmlidXRlVmFsdWUpCisgICAgICAg
ICAgICBpZiAoY2FuZGlkYXRlLT5mYXN0R2V0QXR0cmlidXRlKGF0dHJpYnV0ZS0+bmFtZSgpKSA9
PSBhdHRyaWJ1dGUtPnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgcmVtYWluaW5nQ2FuZGlkYXRl
cy5hcHBlbmQoY2FuZGlkYXRlKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9E
T01FZGl0b3IuY3BwCmluZGV4IDNjOWQ4OWI1ZGQxY2ZiYTNhYjQyZTAyNTk0YzE1YjQ3MDI0MDNm
NTQuLjM2YjIzOTAwZjA2Y2U2ZDg5OTk4ZGFlMzA4ZjZjYThlNDE2NmEwMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCkBAIC0xNjAsMTYgKzE2MCwxNSBAQCB2b2lkIERP
TUVkaXRvcjo6aW5uZXJQYXRjaE5vZGUoRGlnZXN0KiBvbGREaWdlc3QsIERpZ2VzdCogbmV3RGln
ZXN0LCBFeGNlcHRpb25DbwogICAgIEVsZW1lbnQqIG9sZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4ob2xkTm9kZSk7CiAgICAgRWxlbWVudCogbmV3RWxlbWVudCA9IHN0YXRpY19jYXN0
PEVsZW1lbnQqPihuZXdOb2RlKTsKICAgICBpZiAob2xkRGlnZXN0LT5tX2F0dHJzU0hBMSAhPSBu
ZXdEaWdlc3QtPm1fYXR0cnNTSEExKSB7Ci0gICAgICAgIE5hbWVkTm9kZU1hcCogb2xkQXR0cmli
dXRlTWFwID0gb2xkRWxlbWVudC0+YXR0cmlidXRlTWFwKCk7Ci0KLSAgICAgICAgd2hpbGUgKG9s
ZEF0dHJpYnV0ZU1hcCAmJiBvbGRBdHRyaWJ1dGVNYXAtPmxlbmd0aCgpKQotICAgICAgICAgICAg
b2xkQXR0cmlidXRlTWFwLT5yZW1vdmVBdHRyaWJ1dGUoMCk7CisgICAgICAgIGlmIChvbGRFbGVt
ZW50LT5mYXN0SGFzQXR0cmlidXRlcygpKSB7CisgICAgICAgICAgICB3aGlsZSAob2xkRWxlbWVu
dC0+YXR0cmlidXRlQ291bnQoKSkKKyAgICAgICAgICAgICAgICBvbGRFbGVtZW50LT5yZW1vdmVB
dHRyaWJ1dGUoMCk7CisgICAgICAgIH0KIAotICAgICAgICBOYW1lZE5vZGVNYXAqIG5ld0F0dHJp
YnV0ZU1hcCA9IG5ld0VsZW1lbnQtPmF0dHJpYnV0ZU1hcCgpOwotICAgICAgICBpZiAobmV3QXR0
cmlidXRlTWFwKSB7Ci0gICAgICAgICAgICBzaXplX3QgbnVtQXR0cnMgPSBuZXdBdHRyaWJ1dGVN
YXAtPmxlbmd0aCgpOworICAgICAgICBpZiAobmV3RWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZXMo
KSkgeworICAgICAgICAgICAgc2l6ZV90IG51bUF0dHJzID0gbmV3RWxlbWVudC0+YXR0cmlidXRl
Q291bnQoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQXR0cnM7ICsr
aSkgewotICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gbmV3QXR0
cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJp
YnV0ZSogYXR0cmlidXRlID0gbmV3RWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAg
ICAgICAgICBvbGRFbGVtZW50LT5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLT5uYW1lKCksIGF0dHJp
YnV0ZS0+dmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM4NCwxMiArMzgz
LDExIEBAIFBhc3NPd25QdHI8RE9NRWRpdG9yOjpEaWdlc3Q+IERPTUVkaXRvcjo6Y3JlYXRlRGln
ZXN0KE5vZGUqIG5vZGUsIFVudXNlZE5vZGVzTWFwCiAgICAgICAgIH0KICAgICAgICAgRWxlbWVu
dCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKIAotICAgICAgICBOYW1l
ZE5vZGVNYXAqIGF0dHJNYXAgPSBlbGVtZW50LT5hdHRyaWJ1dGVNYXAoKTsKLSAgICAgICAgaWYg
KGF0dHJNYXAgJiYgYXR0ck1hcC0+bGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIHNpemVfdCBudW1B
dHRycyA9IGF0dHJNYXAtPmxlbmd0aCgpOworICAgICAgICBpZiAoZWxlbWVudC0+ZmFzdEhhc0F0
dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAgc2l6ZV90IG51bUF0dHJzID0gZWxlbWVudC0+YXR0
cmlidXRlQ291bnQoKTsKICAgICAgICAgICAgIFNIQTEgYXR0cnNTSEExOwogICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1BdHRyczsgKytpKSB7Ci0gICAgICAgICAgICAgICAg
Y29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOwor
ICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxlbWVudC0+YXR0
cmlidXRlSXRlbShpKTsKICAgICAgICAgICAgICAgICBhZGRTdHJpbmdUb1NIQTEoYXR0cnNTSEEx
LCBhdHRyaWJ1dGUtPm5hbWUoKS50b1N0cmluZygpKTsKICAgICAgICAgICAgICAgICBhZGRTdHJp
bmdUb1NIQTEoYXR0cnNTSEExLCBhdHRyaWJ1dGUtPnZhbHVlKCkpOwogICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXgg
NDAwOGE0MjBjZjBkYmRmOWY2NzMzNWNhOGE5YWQwMzg3ZTBmNTIwNy4uMTVhODdkNDhjMjUwNWIy
MzI0ZGRiZTUzY2EyZmQxNDBlYTMzNGViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC03MTcsMTIgKzcxNywxMSBAQCBQYXNzUmVmUHRy
PEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0
KENTU1J1bGVMaXN0KgogUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQ1NTQWdl
bnQ6OmJ1aWxkQXJyYXlGb3JBdHRyaWJ1dGVTdHlsZXMoRWxlbWVudCogZWxlbWVudCkKIHsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGF0dHJTdHlsZXMgPSBJbnNwZWN0b3JBcnJheTo6Y3Jl
YXRlKCk7Ci0gICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gZWxlbWVudC0+dXBkYXRlZEF0
dHJpYnV0ZXMoKTsKLSAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAgaWYgKCFlbGVtZW50LT5oYXNB
dHRyaWJ1dGVzKCkpCiAgICAgICAgIHJldHVybiBhdHRyU3R5bGVzLnJlbGVhc2UoKTsKIAotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGF0dHJpYnV0ZXMgJiYgaSA8IGF0dHJpYnV0ZXMtPmxlbmd0
aCgpOyArK2kpIHsKLSAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLT5h
dHRyaWJ1dGVJdGVtKGkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50LT5h
dHRyaWJ1dGVDb3VudCgpOyArK2kpIHsKKyAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBl
bGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICBpZiAoIWF0dHJpYnV0ZS0+ZGVjbCgp
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGF0dHJTdHlsZU9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAzYTdhMjBlZDhh
ZTExZTRjZDJlNTI4MzNjYjFhZmRkMjgwMmI1Y2ZlLi45YjIzNzAwOWRlN2FjNmY4OTQyYjNjZjVi
NjZhOTY4MmFlYjE1NTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAKQEAgLTUzMCwxNyArNTMwLDE3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZWxl
bWVuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBOYW1lZE5vZGVNYXAqIGF0
dHJNYXAgPSB0b0hUTUxFbGVtZW50KGNoaWxkKS0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICBp
ZiAoIWF0dHJNYXAgJiYgbmFtZSkgeworICAgIEVsZW1lbnQqIGNoaWxkRWxlbWVudCA9IHRvRWxl
bWVudChjaGlsZCk7CisgICAgaWYgKCFjaGlsZEVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSAmJiBu
YW1lKSB7CiAgICAgICAgIGVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZSgqbmFtZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBib29sIGZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUgPSBmYWxz
ZTsKLSAgICB1bnNpZ25lZCBudW1BdHRycyA9IGF0dHJNYXAtPmxlbmd0aCgpOworICAgIHVuc2ln
bmVkIG51bUF0dHJzID0gY2hpbGRFbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1BdHRyczsgKytpKSB7CiAgICAgICAgIC8vIEFkZCBhdHRy
aWJ1dGUgcGFpcgotICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJNYXAt
PmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0g
Y2hpbGRFbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICBmb3VuZE9yaWdpbmFsQXR0
cmlidXRlID0gZm91bmRPcmlnaW5hbEF0dHJpYnV0ZSB8fCAobmFtZSAmJiBhdHRyaWJ1dGUtPm5h
bWUoKS50b1N0cmluZygpID09ICpuYW1lKTsKICAgICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRl
KGF0dHJpYnV0ZS0+bmFtZSgpLCBhdHRyaWJ1dGUtPnZhbHVlKCkpOwogICAgIH0KQEAgLTc4MSwx
NCArNzgxLDE0IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2goRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvLyBHbyB0aHJvdWdo
IGFsbCBhdHRyaWJ1dGVzIGFuZCBzZXJpYWxpemUgdGhlbS4KLSAgICAgICAgICAgICAgICBjb25z
dCBOYW1lZE5vZGVNYXAqIGF0dHJNYXAgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSktPnVw
ZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFhdHRyTWFwKQorICAgICAg
ICAgICAgICAgIGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7CisgICAg
ICAgICAgICAgICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtQXR0cnMgPSBhdHRy
TWFwLT5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1BdHRycyA9IGVsZW1l
bnQtPmF0dHJpYnV0ZUNvdW50KCk7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bUF0dHJzOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIGF0dHJp
YnV0ZSBwYWlyCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRl
ID0gYXR0ck1hcC0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qg
QXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlLT5sb2NhbE5hbWUoKS5maW5kKHdoaXRlc3BhY2VU
cmltbWVkUXVlcnkpICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHRDb2xsZWN0b3IuYWRkKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMTU5LDEzICsxMTU5LDEyIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlCiB7CiAgICAgUmVm
UHRyPEluc3BlY3RvckFycmF5PiBhdHRyaWJ1dGVzVmFsdWUgPSBJbnNwZWN0b3JBcnJheTo6Y3Jl
YXRlKCk7CiAgICAgLy8gR28gdGhyb3VnaCBhbGwgYXR0cmlidXRlcyBhbmQgc2VyaWFsaXplIHRo
ZW0uCi0gICAgY29uc3QgTmFtZWROb2RlTWFwKiBhdHRyTWFwID0gZWxlbWVudC0+dXBkYXRlZEF0
dHJpYnV0ZXMoKTsKLSAgICBpZiAoIWF0dHJNYXApCisgICAgaWYgKCFlbGVtZW50LT5oYXNBdHRy
aWJ1dGVzKCkpCiAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzVmFsdWUucmVsZWFzZSgpOwotICAg
IHVuc2lnbmVkIG51bUF0dHJzID0gYXR0ck1hcC0+bGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbnVt
QXR0cnMgPSBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1BdHRyczsgKytpKSB7CiAgICAgICAgIC8vIEFkZCBhdHRyaWJ1dGUgcGFpcgot
ICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJNYXAtPmF0dHJpYnV0ZUl0
ZW0oaSk7CisgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxlbWVudC0+YXR0
cmlidXRlSXRlbShpKTsKICAgICAgICAgYXR0cmlidXRlc1ZhbHVlLT5wdXNoU3RyaW5nKGF0dHJp
YnV0ZS0+bmFtZSgpLnRvU3RyaW5nKCkpOwogICAgICAgICBhdHRyaWJ1dGVzVmFsdWUtPnB1c2hT
dHJpbmcoYXR0cmlidXRlLT52YWx1ZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwCmluZGV4IDA1OTg2NGVlYTllZmJkOTdhOTQwYTliYzk5YjNiYjg1ZThhZWFj
N2MuLjY0ZDkwMWI3YTM4MDhhNjc4NjdhODQxMzlkOGZmYTMzNjM5YmY0MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC02OSw5ICs2OSw5IEBAIHN0YXRpYyBib29s
IGlzQ2hhcnNldFNwZWNpZnlpbmdOb2RlKE5vZGUqIG5vZGUpCiAgICAgaWYgKCFlbGVtZW50LT5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6bWV0YVRhZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OkF0dHJpYnV0ZUxpc3QgYXR0cmlidXRlczsKLSAgICBp
ZiAoY29uc3QgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzTWFwID0gZWxlbWVudC0+dXBkYXRlZEF0
dHJpYnV0ZXMoKSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRl
c01hcC0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICAgICAgQXR0cmlidXRlKiBpdGVtID0gYXR0
cmlidXRlc01hcC0+YXR0cmlidXRlSXRlbShpKTsKKyAgICBpZiAoZWxlbWVudC0+aGFzQXR0cmli
dXRlcygpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50LT5hdHRy
aWJ1dGVDb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZSogaXRlbSA9IGVsZW1l
bnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRl
YWwgYXBwcm9wcmlhdGVseSB3aXRoIHRoZSBhdHRyaWJ1dGUgaWYgdGhleSBoYXZlIGEgbmFtZXNw
YWNlLgogICAgICAgICAgICAgYXR0cmlidXRlcy5hcHBlbmQobWFrZV9wYWlyKGl0ZW0tPm5hbWUo
KS50b1N0cmluZygpLCBpdGVtLT52YWx1ZSgpLnN0cmluZygpKSk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCA2MjY2OWM4YmExOThiYmZhNTRl
NTQzMDQxZWYyZTM5MzExM2EyM2Q1Li5hMmVmNTNiZDZiYTQ3YmJjZmJiMmQ1YjQyOTMzMWYwNWQw
YTRlOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC00MTcs
MTEgKzQxNywxMSBAQCB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29s
IGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLAogCiBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBTVkdTdHlsZWRFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgU3Ry
aW5nJiBuYW1lKQogewotICAgIGlmICghYXR0cmlidXRlTWFwKCkpCisgICAgaWYgKCFmYXN0SGFz
QXR0cmlidXRlcygpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFF1YWxpZmllZE5hbWUgYXR0
cmlidXRlTmFtZShudWxsQXRvbSwgbmFtZSwgbnVsbEF0b20pOwotICAgIEF0dHJpYnV0ZSogYXR0
ciA9IGF0dHJpYnV0ZU1hcCgpLT5nZXRBdHRyaWJ1dGVJdGVtKGF0dHJpYnV0ZU5hbWUpOworICAg
IEF0dHJpYnV0ZSogYXR0ciA9IGdldEF0dHJpYnV0ZUl0ZW0oYXR0cmlidXRlTmFtZSk7CiAgICAg
aWYgKCFhdHRyIHx8ICFhdHRyLT5pc01hcHBlZEF0dHJpYnV0ZSgpIHx8ICFhdHRyLT5tYXBwZWRB
dHRyaWJ1dGVEZWNsYXJhdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEZ1bmN0aW9ucy5jcHAKaW5kZXggMjgzNTgzZDc4M2FmYTZlZjEwZWE3NzkyY2IyMDlj
ZDUxMzQzMzVjZi4uMTU0YjY3ZTkyZDMyYzdkMTc2YmNiODEwOTBlOGRmNDE5OGI0YjAwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5j
bHVkZSAiWFBhdGhGdW5jdGlvbnMuaCIKIAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRl
ICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNp
bmNsdWRlICJUcmVlU2NvcGUuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgpAQCAtNTkyLDggKzU5
MSw5IEBAIFZhbHVlIEZ1bkxhbmc6OmV2YWx1YXRlKCkgY29uc3QKICAgICBOb2RlKiBub2RlID0g
ZXZhbHVhdGlvbkNvbnRleHQoKS5ub2RlLmdldCgpOwogICAgIHdoaWxlIChub2RlKSB7CiAgICAg
ICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAgICAgIGlmIChOYW1lZE5v
ZGVNYXAqIGF0dHJpYnV0ZXMgPSB0b0VsZW1lbnQobm9kZSktPnVwZGF0ZWRBdHRyaWJ1dGVzKCkp
Ci0gICAgICAgICAgICAgICAgbGFuZ3VhZ2VBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLT5nZXRBdHRy
aWJ1dGVJdGVtKFhNTE5hbWVzOjpsYW5nQXR0cik7CisgICAgICAgICAgICBFbGVtZW50KiBlbGVt
ZW50ID0gdG9FbGVtZW50KG5vZGUpOworICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc0F0dHJp
YnV0ZXMoKSkKKyAgICAgICAgICAgICAgICBsYW5ndWFnZUF0dHJpYnV0ZSA9IGVsZW1lbnQtPmdl
dEF0dHJpYnV0ZUl0ZW0oWE1MTmFtZXM6OmxhbmdBdHRyKTsKICAgICAgICAgfQogICAgICAgICBp
ZiAobGFuZ3VhZ2VBdHRyaWJ1dGUpCiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoTm9kZVNldC5jcHAKaW5kZXggOGVlZmM1NzNmZjQ0Nzk0MjUyMWZiZDA3N2FkZjE1MjFkMmEz
OWFmNy4uNGM0NTRlNDY3NThlMGYwNjQ0NzVmNTY5MmMwZjA3ZDMwMzJmNDgwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hQYXRoTm9kZVNldC5jcHAKQEAgLTIxMywxMyArMjEzLDEzIEBAIHZvaWQgTm9kZVNl
dDo6dHJhdmVyc2FsU29ydCgpIGNvbnN0CiAgICAgICAgIGlmICghY29udGFpbnNBdHRyaWJ1dGVO
b2RlcyB8fCAhbi0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gdG9FbGVtZW50KG4pLT51cGRhdGVkQXR0
cmlidXRlcygpOwotICAgICAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAgICAgIEVsZW1lbnQqIGUg
PSB0b0VsZW1lbnQobik7CisgICAgICAgIGlmICghZS0+aGFzQXR0cmlidXRlcygpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlQ291bnQgPSBhdHRy
aWJ1dGVzLT5sZW5ndGgoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJp
YnV0ZUNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIEF0dHIqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0
ZXMtPmF0dHJpYnV0ZUl0ZW0oaSktPmF0dHIoKTsKKyAgICAgICAgdW5zaWduZWQgYXR0cmlidXRl
Q291bnQgPSBlLT5hdHRyaWJ1dGVDb3VudCgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZS0+YXR0cmlidXRlQ291bnQ7ICsraSkgeworICAgICAgICAgICAgQXR0ciogYXR0cmli
dXRlID0gZS0+YXR0cmlidXRlSXRlbShpKS0+YXR0cigpOwogICAgICAgICAgICAgaWYgKGF0dHJp
YnV0ZSAmJiBub2Rlcy5jb250YWlucyhhdHRyaWJ1dGUpKQogICAgICAgICAgICAgICAgIHNvcnRl
ZE5vZGVzLmFwcGVuZChhdHRyaWJ1dGUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAu
Y3BwCmluZGV4IDEyZjM5NGYyY2EwYjQ0NTZhODFkMTA4OTgzYjc5MjRkNWM0ZDg3NWQuLmZmN2U2
ODVkOTExNzM3ZWJjZDFkZjIxOTNlZWMzMTc5MzlmY2U0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0
ZXAuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQXR0ci5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5o
IgogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKICNpbmNsdWRlICJYUGF0aFBhcnNlci5oIgogI2lu
Y2x1ZGUgIlhQYXRoVXRpbC5oIgpAQCAtMzQzLDEyICszNDIsMTEgQEAgdm9pZCBTdGVwOjpub2Rl
c0luQXhpcyhOb2RlKiBjb250ZXh0LCBOb2RlU2V0JiBub2RlcykgY29uc3QKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIE5h
bWVkTm9kZU1hcCogYXR0cnMgPSBjb250ZXh0RWxlbWVudC0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsK
LSAgICAgICAgICAgIGlmICghYXR0cnMpCisgICAgICAgICAgICBpZiAoIWNvbnRleHRFbGVtZW50
LT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cnMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGF0dHJzLT5hdHRyaWJ1dGVJdGVtKGkpLT5j
cmVhdGVBdHRySWZOZWVkZWQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGNvbnRleHQpKTsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250ZXh0RWxlbWVudC0+YXR0cmlidXRl
Q291bnQoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPEF0dHI+IGF0dHIgPSBjb250
ZXh0RWxlbWVudC0+YXR0cmlidXRlSXRlbShpKS0+Y3JlYXRlQXR0cklmTmVlZGVkKHN0YXRpY19j
YXN0PEVsZW1lbnQqPihjb250ZXh0KSk7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGVNYXRjaGVz
KGF0dHIuZ2V0KCksIEF0dHJpYnV0ZUF4aXMsIG1fbm9kZVRlc3QpKQogICAgICAgICAgICAgICAg
ICAgICBub2Rlcy5hcHBlbmQoYXR0ci5yZWxlYXNlKCkpOwogICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwCmluZGV4IDRlMWQ0OWVlZmQwNGJmZWY2ODZlMGEyYzVjZTJiNjBjMWQ4ZDg3YzAuLjNhMzZk
OThlMTI1NmM0ZGRlZDU3NzZhZWYwNjI0NjIxNjdmMDM5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTU5
OSw5ICs1OTksOSBAQCBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1l
bnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIHBhcmVudAogCiAgICAgZm9yICg7ICFlbGVt
U3RhY2suaXNFbXB0eSgpOyBlbGVtU3RhY2sucmVtb3ZlTGFzdCgpKSB7CiAgICAgICAgIEVsZW1l
bnQqIGVsZW1lbnQgPSBlbGVtU3RhY2subGFzdCgpOwotICAgICAgICBpZiAoTmFtZWROb2RlTWFw
KiBhdHRycyA9IGVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRycy0+bGVuZ3RoKCk7IGkrKykgewotICAgICAgICAg
ICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IGF0dHJzLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAg
ICBpZiAoZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKSB7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsgaSsrKSB7CisgICAgICAg
ICAgICAgICAgQXR0cmlidXRlKiBhdHRyID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKICAg
ICAgICAgICAgICAgICBpZiAoYXR0ci0+bG9jYWxOYW1lKCkgPT0geG1sbnNBdG9tKQogICAgICAg
ICAgICAgICAgICAgICBtX2RlZmF1bHROYW1lc3BhY2VVUkkgPSBhdHRyLT52YWx1ZSgpOwogICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGF0dHItPnByZWZpeCgpID09IHhtbG5zQXRvbSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggOGRlMWEwODE3
YTRlNGRmMWJhOGE4MDhhYzkzOTY3NWE3YWVhMDMzNS4uMGMyYjJkNmEwYzc5ZjQ4Y2I2ZmQzZjQ3
MDI2NmRmZTg5MWNiOGIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUcmVl
QnVpbGRlci5jcHAKQEAgLTgwLDkgKzgwLDkgQEAgWE1MVHJlZUJ1aWxkZXI6OlhNTFRyZWVCdWls
ZGVyKE5ld1hNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIsIERvY3VtZW50RnJhZ21lbnQqIGYKIAog
ICAgIGZvciAoRWxlbWVudCogZWxlbWVudDsgIW5vZGVTdGFjay5pc0VtcHR5KCk7IG5vZGVTdGFj
ay5yZW1vdmVMYXN0KCkpIHsKICAgICAgICAgZWxlbWVudCA9IG5vZGVTdGFjay5sYXN0KCk7Ci0g
ICAgICAgIGlmIChOYW1lZE5vZGVNYXAqIGF0dHJzID0gZWxlbWVudC0+dXBkYXRlZEF0dHJpYnV0
ZXMoKSkgewotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRycy0+bGVuZ3Ro
KCk7ICsraSkgewotICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IGF0dHJzLT5hdHRy
aWJ1dGVJdGVtKGkpOworICAgICAgICBpZiAoZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKSB7Cisg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50
KCk7ICsraSkgeworICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IGVsZW1lbnQtPmF0
dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHItPmxvY2FsTmFtZSgpID09
IHhtbG5zQXRvbSkKICAgICAgICAgICAgICAgICAgICAgc3RhY2tJdGVtLnNldE5hbWVzcGFjZVVS
SShhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRyLT5wcmVmaXgo
KSA9PSB4bWxuc0F0b20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJQYWdlU2VyaWFsaXplckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UGFnZVNlcmlhbGl6ZXJJbXBsLmNwcAppbmRleCBkYTBlMzI1NTVlYzdjYjg0MzhhYjgwMjNhOThi
YjYyY2VlZWI1M2I1Li5jYTA1ODM0ODg5MGZmMTMzMDY0ZTFjMDg5ODA3MDYwZjdiMDg5M2U1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplcklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVy
SW1wbC5jcHAKQEAgLTMwNywxMyArMzA3LDEyIEBAIHZvaWQgV2ViUGFnZVNlcmlhbGl6ZXJJbXBs
OjpvcGVuVGFnVG9TdHJpbmcoRWxlbWVudCogZWxlbWVudCwKICAgICAvLyBBZGQgb3BlbiB0YWcK
ICAgICByZXN1bHQgKz0gIjwiICsgZWxlbWVudC0+bm9kZU5hbWUoKS5sb3dlcigpOwogICAgIC8v
IEdvIHRocm91Z2ggYWxsIGF0dHJpYnV0ZXMgYW5kIHNlcmlhbGl6ZSB0aGVtLgotICAgIGNvbnN0
IE5hbWVkTm9kZU1hcCAqYXR0ck1hcCA9IGVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0g
ICAgaWYgKGF0dHJNYXApIHsKLSAgICAgICAgdW5zaWduZWQgbnVtQXR0cnMgPSBhdHRyTWFwLT5s
ZW5ndGgoKTsKKyAgICBpZiAoZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKSB7CisgICAgICAgIHVu
c2lnbmVkIG51bUF0dHJzID0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUF0dHJzOyBpKyspIHsKICAgICAgICAgICAgIHJlc3Vs
dCArPSAiICI7CiAgICAgICAgICAgICAvLyBBZGQgYXR0cmlidXRlIHBhaXIKLSAgICAgICAgICAg
IGNvbnN0IEF0dHJpYnV0ZSAqYXR0cmlidXRlID0gYXR0ck1hcC0+YXR0cmlidXRlSXRlbShpKTsK
KyAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSAqYXR0cmlidXRlID0gZWxlbWVudC0+YXR0cmli
dXRlSXRlbShpKTsKICAgICAgICAgICAgIHJlc3VsdCArPSBhdHRyaWJ1dGUtPm5hbWUoKS50b1N0
cmluZygpOwogICAgICAgICAgICAgcmVzdWx0ICs9ICI9XCIiOwogICAgICAgICAgICAgaWYgKCFh
dHRyaWJ1dGUtPnZhbHVlKCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVu
dC5jcHAKaW5kZXggMGQ4NWRhOTJlNjc1OTg0Mzc4MDg3MDg0ODQxN2I4ODY3ZjUyNTYyOS4uMTc4
YzcwZTViNzc4ODI3Yjc1MDNjODc5NmMzNTA2Nzc3NDUyNDc2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJlbGVtZW50LmNwcApAQCAtNTAzLDEyICs1MDMsMTEgQEAgUVN0cmluZ0xpc3QgUVdlYkVs
ZW1lbnQ6OmF0dHJpYnV0ZU5hbWVzKGNvbnN0IFFTdHJpbmcmIG5hbWVzcGFjZVVyaSkgY29uc3QK
ICAgICAgICAgcmV0dXJuIFFTdHJpbmdMaXN0KCk7CiAKICAgICBRU3RyaW5nTGlzdCBhdHRyaWJ1
dGVOYW1lTGlzdDsKLSAgICBjb25zdCBOYW1lZE5vZGVNYXAqIGNvbnN0IGF0dHJzID0gbV9lbGVt
ZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmIChhdHRycykgeworICAgIGlmIChtX2Vs
ZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkgewogICAgICAgICBjb25zdCBTdHJpbmcgbmFtZXNwYWNl
VXJpU3RyaW5nKG5hbWVzcGFjZVVyaSk7IC8vIGNvbnZlcnQgUVN0cmluZyAtPiBTdHJpbmcgb25j
ZQotICAgICAgICBjb25zdCB1bnNpZ25lZCBhdHRyc0NvdW50ID0gYXR0cnMtPmxlbmd0aCgpOwor
ICAgICAgICBjb25zdCB1bnNpZ25lZCBhdHRyc0NvdW50ID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVD
b3VudCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cnNDb3VudDsgKytp
KSB7Ci0gICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGNvbnN0IGF0dHJpYnV0ZSA9IGF0dHJz
LT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlKiBjb25zdCBh
dHRyaWJ1dGUgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgICAgICBpZiAo
bmFtZXNwYWNlVXJpU3RyaW5nID09IGF0dHJpYnV0ZS0+bmFtZXNwYWNlVVJJKCkpCiAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlTmFtZUxpc3QuYXBwZW5kKGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkp
OwogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125480</attachid>
            <date>2012-02-03 21:52:57 -0800</date>
            <delta_ts>2012-02-05 16:30:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77800-20120204025253.patch</filename>
            <type>text/plain</type>
            <size>51671</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhjMGZlYmVmOTk0YWFh
NjIzY2FhNDY1YTZkNjUwYzBiZmNkYWQzNi4uZGJhY2E0MzNiN2RhZDMzNmM4YTRkNjU1MmEwYWM5
OGJmN2UwN2UwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTAyLTAzICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgUHJvdmlkZSBtb3JlIGF0dHJpYnV0ZSBtZXRob2RzIGluIEVsZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHRoZSBj
bGllbnRzIG9mIE5hbWVkTm9kZU1hcC4gVGhpcyB3aWxsIG1ha2UgZWFzaWVyIHRvIGNoYW5nZSB0
aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2Ygb3VyIGF0dHJpYnV0ZSBzdG9yYWdlLiBUaGUg
Y2xpZW50cyBub3cgdXNlIEVsZW1lbnQgbWV0aG9kcworICAgICAgICB0aGF0IGV4cG9zZSBBdHRy
aWJ1dGUqIGFjY2Vzc29ycy4KKworICAgICAgICBJbnN0ZWFkIG9mIGNoZWNraW5nIHRoZSBleGlz
dGVuY2Ugb2YgTmFtZWROb2RlTWFwLCBjbGllbnRzIGNhbiBjYWxsCisgICAgICAgIGhhc0F0dHJp
YnV0ZXMoKSBvciBoYXNBdHRyaWJ1dGVzV2l0aG91dFVwZGF0ZSgpICh0aGF0IHNraXBzIHVwZGF0
aW5nIGludmFsaWQKKyAgICAgICAgc3R5bGUgb3IgYW5pbWF0aW9uIHN2ZyBhdHRyaWJ1dGVzKS4K
KworICAgICAgICBJZiB0aGVyZSBhcmUgYXR0cmlidXRlcywgdGhleSBjYW4gYmUgYWNjZXNzZWQg
YnkgaW5kZXggdmlhIGF0dHJpYnV0ZUNvdW50KCkgLworICAgICAgICBhdHRyaWJ1dGVJdGVtKCks
IGFzIHdlbGwgYXMgYnkgUXVhbGlmaWVkTmFtZS4gVGhvc2UgYWNjZXNzb3JzIGFzc3VtZSB0aGVy
ZSBhcmUgYW4KKyAgICAgICAgYXR0cmlidXRlIHN0b3JhZ2UuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXRjaEFsbFJ1bGVzKToKKyAgICAgICAg
KiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFueUF0dHJpYnV0
ZU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNl
bGVjdG9yKToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrRXhhY3RBdHRyaWJ1dGUpOgorICAgICAgICAqIGRv
bS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01T
dHJpbmdNYXA6OmdldE5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdN
YXA6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YXNldERPTVN0cmluZ01hcDo6Y29udGFp
bnMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6aW1wb3J0Tm9kZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzQXR0cmlidXRlc1dpdGhvdXRV
cGRhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojph
dHRyaWJ1dGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVJdGVt
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEF0dHJpYnV0ZUl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0RlZmF1bHROYW1lc3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6Omxvb2t1cE5hbWVzcGFjZVByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
Ojpjb21wYXJlRG9jdW1lbnRQb3NpdGlvbik6CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxl
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNOb0F0dHJpYnV0ZU9yT25seVN0eWxl
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRW1wdHlGb250VGFnKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5
bGU6OmVsZW1lbnRJc1N0eWxlZFNwYW5PckhUTUxFcXVpdmFsZW50KToKKyAgICAgICAgKiBlZGl0
aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aGlnaGVzdFZpc3VhbGx5RXF1aXZhbGVudERpdkJlbG93Um9vdCk6CisgICAgICAgICogZWRp
dGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1
bXVsYXRvcjo6YXBwZW5kRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcGxldGVVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
ZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxF
bWJlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6cGFy
YW1ldGVyc0ZvclBsdWdpbik6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUpOgorICAgICAg
ICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9i
amVjdEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4pOgorICAgICAgICAqIGh0bWwvSFRNTFBh
cmFtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyYW1FbGVtZW50Ojppc1VS
TEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzYWZlQXR0cmlidXRlQ291bnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6dHJ5VG9FbnN1cmVOb2Foc0Fy
a0NvbmRpdGlvblF1aWNrbHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1hdHRpbmdFbGVt
ZW50TGlzdDo6ZW5zdXJlTm9haHNBcmtDb25kaXRpb24pOiBTdG9yZSBBdHRyaWJ1dGUqCisgICAg
ICAgIHRvIGF2b2lkIGxvb2tpbmcgdXAgdGhlIHJpZ2h0IGVsZW1lbnQgYWdhaW4gYnkgbmFtZS4K
KyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TUVkaXRvcjo6aW5uZXJQYXRjaE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpj
cmVhdGVEaWdlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvckF0dHJp
YnV0ZVN0eWxlcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRBdHRyaWJ1dGVzQXNUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVu
dEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aXNDaGFyc2V0U3BlY2lmeWluZ05vZGUpOgorICAgICAgICAqIHN2Zy9TVkdT
dHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6Omdl
dFByZXNlbnRhdGlvbkF0dHJpYnV0ZSk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rpb25zLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5MYW5nOjpldmFsdWF0ZSk6CisgICAgICAg
ICogeG1sL1hQYXRoTm9kZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6Tm9kZVNl
dDo6dHJhdmVyc2FsU29ydCk6CisgICAgICAgICogeG1sL1hQYXRoU3RlcC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYUGF0aDo6U3RlcDo6bm9kZXNJbkF4aXMpOgorICAgICAgICAqIHhtbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERv
Y3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcik6CisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxUcmVlQnVpbGRlcjo6WE1M
VHJlZUJ1aWxkZXIpOgorCiAyMDEyLTAyLTAzICBBbmRyZWFzIEtsaW5nICA8YXdlc29tZWtsaW5n
QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhdHRlbXB0IGFmdGVy
IHIxMDY2OTUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGE5Njc2MWJlZjRkNDgxOGVk
OWIxMzk4OTRmMjljMjczZmFjMmYxMDguLjhhY2VjNDczM2M3M2YzNTQxM2M0NDU1MjI4NmU0Y2Yw
ZmEwMjg4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTItMDItMDMgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFA
b3BlbmJvc3NhLm9yZz4KKworICAgICAgICBQcm92aWRlIG1vcmUgYXR0cmlidXRlIG1ldGhvZHMg
aW4gRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Nzc4MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHNyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlU2VyaWFsaXplckltcGw6Om9wZW5UYWdUb1N0cmluZyk6IGFjY2VzcyBhdHRyaWJ1dGVzIHZp
YSBFbGVtZW50IGludGVyZmFjZS4KKwogMjAxMi0wMi0wMyAgQmV0aCBEYWtpbiAgPGJkYWtpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc3NjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGQ5NTIxMjBlN2EzMGQ4YTM4YWExMWEyZWViNmRl
NmYxNDhmM2ZhMjAuLjk0MjIxNWJlMjYzMTNmMTEyNmNjY2MyNGNhOWJkNmY2YzFjN2RhOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDItMDMgIENhaW8gTWFyY2VsbyBk
ZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAg
ICBQcm92aWRlIG1vcmUgYXR0cmlidXRlIG1ldGhvZHMgaW4gRWxlbWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6
CisgICAgICAgIChRV2ViRWxlbWVudDo6YXR0cmlidXRlTmFtZXMpOiBhY2Nlc3MgYXR0cmlidXRl
cyB2aWEgRWxlbWVudCBpbnRlcmZhY2UuCisKIDIwMTItMDItMDMgIEFudHRpIEtvaXZpc3RvICA8
YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbi5oLy5jcHAgdG8gU3R5bGVQcm9wZXJ0eVNldC5oLy5jcHAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggMTY5ZTVmZGZkMDkwNDgxMzIwNjgwM2VmOGU1NGQ2
Nzg4MWU3NmM3Ni4uMzI0NTNiNzM1ZDhiYzdlNWNlNTVjZWE5MTQxZGFjZDZjYjIwN2RlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtOTk2LDEwICs5OTYsMTAg
QEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaEFsbFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1
bHQpCiAgICAgICAgIAogICAgIC8vIE5vdyBjaGVjayBhdXRob3IgcnVsZXMsIGJlZ2lubmluZyBm
aXJzdCB3aXRoIHByZXNlbnRhdGlvbmFsIGF0dHJpYnV0ZXMgbWFwcGVkIGZyb20gSFRNTC4KICAg
ICBpZiAobV9zdHlsZWRFbGVtZW50KSB7Ci0gICAgICAgIGlmIChjb25zdCBOYW1lZE5vZGVNYXAq
IG1hcCA9IG1fc3R5bGVkRWxlbWVudC0+YXR0cmlidXRlTWFwKCkpIHsKKyAgICAgICAgaWYgKG1f
c3R5bGVkRWxlbWVudC0+aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSkgewogICAgICAgICAg
ICAgLy8gV2FsayB0aGUgZWxlbWVudCdzIGF0dHJpYnV0ZSBtYXAgYW5kIGFkZCBhbGwgbWFwcGVk
IGF0dHJpYnV0ZSBkZWNsYXJhdGlvbnMuCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbWFwLT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgQXR0cmlidXRlKiBh
dHRyaWJ1dGUgPSBtYXAtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9zdHlsZWRFbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOyArK2kpIHsK
KyAgICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IG1fc3R5bGVkRWxlbWVudC0+
YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgICAgICAgICBpZiAoIWF0dHJpYnV0ZS0+ZGVjbCgp
KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBBU1NFUlQo
YXR0cmlidXRlLT5pc01hcHBlZEF0dHJpYnV0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlci5jcHAKaW5kZXggNTg2Nzc0NjQ3YTA4N2QzYTBjMmQ3ZjI4MmNiM2JiMDMzNmY5NDQw
NS4uYmM4MjRlMWMwN2QxYzdhN2IyNDU1MWY1ZjE1ZGFjM2I3ZTBmZDI5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTY3MSwxMCArNjcxLDExIEBAIHN0YXRpYyBi
b29sIGF0dHJpYnV0ZVZhbHVlTWF0Y2hlcyhBdHRyaWJ1dGUqIGF0dHJpYnV0ZUl0ZW0sIENTU1Nl
bGVjdG9yOjpNYXRjaCBtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGFueUF0
dHJpYnV0ZU1hdGNoZXMoTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzLCBDU1NTZWxlY3Rvcjo6TWF0
Y2ggbWF0Y2gsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0ciwgY29uc3QgQXRvbWlj
U3RyaW5nJiBzZWxlY3RvclZhbHVlLCBib29sIGNhc2VTZW5zaXRpdmUpCitzdGF0aWMgYm9vbCBh
bnlBdHRyaWJ1dGVNYXRjaGVzKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpNYXRjaCBt
YXRjaCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgc2VsZWN0b3JBdHRyLCBjb25zdCBBdG9taWNTdHJp
bmcmIHNlbGVjdG9yVmFsdWUsIGJvb2wgY2FzZVNlbnNpdGl2ZSkKIHsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgQXR0cmli
dXRlKiBhdHRyaWJ1dGVJdGVtID0gYXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICBB
U1NFUlQoZWxlbWVudC0+aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOyArK2kpIHsKKyAgICAg
ICAgQXR0cmlidXRlKiBhdHRyaWJ1dGVJdGVtID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsK
IAogICAgICAgICBpZiAoIVNlbGVjdG9yQ2hlY2tlcjo6YXR0cmlidXRlTmFtZU1hdGNoZXMoYXR0
cmlidXRlSXRlbSwgc2VsZWN0b3JBdHRyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNzAx
LDEzICs3MDIsMTIgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NT
U2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgUHNldWRvSWQmIGQKICAgICBpZiAoc2VsLT5pc0F0
dHJpYnV0ZVNlbGVjdG9yKCkpIHsKICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ciA9
IHNlbC0+YXR0cmlidXRlKCk7CiAKLSAgICAgICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0g
ZS0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICAgICAgaWYgKCFhdHRyaWJ1dGVzKQorICAgICAg
ICBpZiAoIWUtPmhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgICAgICBib29sIGNhc2VTZW5zaXRpdmUgPSAhbV9kb2N1bWVudElzSFRNTCB8fCAhaHRtbEF0
dHJpYnV0ZUhhc0Nhc2VJbnNlbnNpdGl2ZVZhbHVlKGF0dHIpOwogCi0gICAgICAgIGlmICghYW55
QXR0cmlidXRlTWF0Y2hlcyhhdHRyaWJ1dGVzLCBzdGF0aWNfY2FzdDxDU1NTZWxlY3Rvcjo6TWF0
Y2g+KHNlbC0+bV9tYXRjaCksIGF0dHIsIHNlbC0+dmFsdWUoKSwgY2FzZVNlbnNpdGl2ZSkpCisg
ICAgICAgIGlmICghYW55QXR0cmlidXRlTWF0Y2hlcyhlLCBzdGF0aWNfY2FzdDxDU1NTZWxlY3Rv
cjo6TWF0Y2g+KHNlbC0+bV9tYXRjaCksIGF0dHIsIHNlbC0+dmFsdWUoKSwgY2FzZVNlbnNpdGl2
ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmgKaW5kZXggM2Y5NDY5ZTVkNzliMDljOWFiODQyZTc0MmQ4NWZhZDcxN2I5
NDcxZi4uNDg3Mjg0NzM2NGY2YzU1MDYyZWIyNTY3YzliZGFjZjFkMzgxYjg5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAtMTg1LDEyICsxODUsMTEgQEAgaW5saW5lIGJv
b2wgU2VsZWN0b3JDaGVja2VyOjphdHRyaWJ1dGVOYW1lTWF0Y2hlcyhjb25zdCBBdHRyaWJ1dGUq
IGF0dHJpYnV0ZSwgY28KIAogaW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0
QXR0cmlidXRlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNl
bGVjdG9yQXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nSW1wbCogdmFsdWUpCiB7Ci0g
ICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAgPSBlbGVtZW50LT5hdHRyaWJ1dGVNYXAoKTsK
LSAgICBpZiAoIWF0dHJpYnV0ZU1hcCkKKyAgICBpZiAoIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZXNX
aXRob3V0VXBkYXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25lZCBzaXpl
ID0gYXR0cmlidXRlTWFwLT5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBzaXplID0gZWxlbWVudC0+
YXR0cmlidXRlQ291bnQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7Ci0gICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0cmlidXRlTWFwLT5hdHRyaWJ1
dGVJdGVtKGkpOworICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnQtPmF0dHJp
YnV0ZUl0ZW0oaSk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVOYW1lTWF0Y2hlcyhhdHRyaWJ1dGUs
IHNlbGVjdG9yQXR0cmlidXRlTmFtZSkgJiYgKCF2YWx1ZSB8fCBhdHRyaWJ1dGUtPnZhbHVlKCku
aW1wbCgpID09IHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcAppbmRleCBkZmYwYWQ3NTA3MjA2
N2U1NTZjZTFlMjg2MTQ1MTI0MjdlMTMwYzAzLi4zODIwMjJlY2RjM2EwYzQ4NGMxMmM5OTUyNDEz
NDY5ZjhhNWVhOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0
cmluZ01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAu
Y3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAi
RWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJOYW1lZE5v
ZGVNYXAuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtMTQyLDI3ICsxNDEsMjcgQEAgdm9pZCBEYXRhc2V0RE9N
U3RyaW5nTWFwOjpkZXJlZigpCiAKIHZvaWQgRGF0YXNldERPTVN0cmluZ01hcDo6Z2V0TmFtZXMo
VmVjdG9yPFN0cmluZz4mIG5hbWVzKQogewotICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFw
ID0gbV9lbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmIChhdHRyaWJ1dGVNYXAp
IHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmlidXRlTWFwLT5sZW5ndGgoKTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAg
ICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpKTsK
LSAgICAgICAgICAgIGlmIChpc1ZhbGlkQXR0cmlidXRlTmFtZShhdHRyaWJ1dGUtPmxvY2FsTmFt
ZSgpKSkKLSAgICAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoY29udmVydEF0dHJpYnV0ZU5hbWVU
b1Byb3BlcnR5TmFtZShhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpKSk7Ci0gICAgICAgIH0KKyAgICBp
ZiAoIW1fZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQorICAgICAgICByZXR1cm47CisKKyAgICB1
bnNpZ25lZCBsZW5ndGggPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0
cmlidXRlID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICBpZiAoaXNWYWxp
ZEF0dHJpYnV0ZU5hbWUoYXR0cmlidXRlLT5sb2NhbE5hbWUoKSkpCisgICAgICAgICAgICBuYW1l
cy5hcHBlbmQoY29udmVydEF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5TmFtZShhdHRyaWJ1dGUtPmxv
Y2FsTmFtZSgpKSk7CiAgICAgfQogfQogCiBTdHJpbmcgRGF0YXNldERPTVN0cmluZ01hcDo6aXRl
bShjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAg
PSBtX2VsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKGF0dHJpYnV0ZU1hcCkg
ewotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRyaWJ1dGVNYXAtPmxlbmd0aCgpOwotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAg
IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOwot
ICAgICAgICAgICAgaWYgKHByb3BlcnR5TmFtZU1hdGNoZXNBdHRyaWJ1dGVOYW1lKG5hbWUsIGF0
dHJpYnV0ZS0+bG9jYWxOYW1lKCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGUt
PnZhbHVlKCk7Ci0gICAgICAgIH0KKyAgICBpZiAoIW1fZWxlbWVudC0+aGFzQXR0cmlidXRlcygp
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2Vs
ZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgaSsrKSB7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gbV9lbGVtZW50LT5h
dHRyaWJ1dGVJdGVtKGkpOworICAgICAgICBpZiAocHJvcGVydHlOYW1lTWF0Y2hlc0F0dHJpYnV0
ZU5hbWUobmFtZSwgYXR0cmlidXRlLT5sb2NhbE5hbWUoKSkpCisgICAgICAgICAgICByZXR1cm4g
YXR0cmlidXRlLT52YWx1ZSgpOwogICAgIH0KIAogICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTE3
MCwxNSArMTY5LDE2IEBAIFN0cmluZyBEYXRhc2V0RE9NU3RyaW5nTWFwOjppdGVtKGNvbnN0IFN0
cmluZyYgbmFtZSkKIAogYm9vbCBEYXRhc2V0RE9NU3RyaW5nTWFwOjpjb250YWlucyhjb25zdCBT
dHJpbmcmIG5hbWUpCiB7Ci0gICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAgPSBtX2VsZW1l
bnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKGF0dHJpYnV0ZU1hcCkgewotICAgICAg
ICB1bnNpZ25lZCBsZW5ndGggPSBhdHRyaWJ1dGVNYXAtPmxlbmd0aCgpOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIEF0dHJpYnV0
ZSogYXR0cmlidXRlID0gYXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOwotICAgICAgICAg
ICAgaWYgKHByb3BlcnR5TmFtZU1hdGNoZXNBdHRyaWJ1dGVOYW1lKG5hbWUsIGF0dHJpYnV0ZS0+
bG9jYWxOYW1lKCkpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Cisg
ICAgaWYgKCFtX2VsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBBdHRy
aWJ1dGUqIGF0dHJpYnV0ZSA9IG1fZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAg
aWYgKHByb3BlcnR5TmFtZU1hdGNoZXNBdHRyaWJ1dGVOYW1lKG5hbWUsIGF0dHJpYnV0ZS0+bG9j
YWxOYW1lKCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlZGJiY2RkM2Q1ZjIyNTNl
NjI4OWQ5ZjViOWM0NTY4NWE3Njg1MmRmLi5jMzk1Y2I0NDE4MDYzZWI1NTI3YjJhNmIyYzI3YTNl
MzgwZjY5YWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTg1MCwxMSArODUwLDEwIEBA
IFBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmltcG9ydE5vZGUoTm9kZSogaW1wb3J0ZWROb2Rl
LCBib29sIGRlZXAsIEV4Y2VwdGlvbkNvCiAgICAgICAgIGlmIChlYykKICAgICAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgICAgIE5hbWVkTm9kZU1hcCogYXR0cnMgPSBvbGRFbGVtZW50LT51cGRh
dGVkQXR0cmlidXRlcygpOwotICAgICAgICBpZiAoYXR0cnMpIHsKLSAgICAgICAgICAgIHVuc2ln
bmVkIGxlbmd0aCA9IGF0dHJzLT5sZW5ndGgoKTsKKyAgICAgICAgaWYgKG9sZEVsZW1lbnQtPmhh
c0F0dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gb2xkRWxlbWVu
dC0+YXR0cmlidXRlQ291bnQoKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IGF0dHJz
LT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IG9s
ZEVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgICAgICAgICAgbmV3RWxlbWVudC0+
c2V0QXR0cmlidXRlKGF0dHItPm5hbWUoKSwgYXR0ci0+dmFsdWUoKS5pbXBsKCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAzYzI3NjU5NjVlMjJmZTY0
N2VjZTFlYmZlZTFjYzM2YTY0ZmRhMDYxLi44ODc2YmZmMmJkMzUzNzBmZTczMWI0ZDM5MDBjMjJj
NjNkYWVlOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTEzMCw2ICsxMzAsOSBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogICAgIGJvb2wgaGFzQXR0cmlidXRlcygpIGNvbnN0OworICAgIC8vIFRoaXMg
dmFyaWFudCB3aWxsIG5vdCB1cGRhdGUgdGhlIHBvdGVudGlhbGx5IGludmFsaWQgYXR0cmlidXRl
cy4gVG8gYmUgdXNlZCB3aGVuIG5vdCBpbnRlcmVzdGVkCisgICAgLy8gaW4gc3R5bGUgYXR0cmli
dXRlIG9yIG9uZSBvZiB0aGUgU1ZHIGFuaW1hdGlvbiBhdHRyaWJ1dGVzLgorICAgIGJvb2wgaGFz
QXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzQXR0cmlidXRl
KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgYm9vbCBoYXNBdHRyaWJ1dGVOUyhjb25z
dCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0OwpA
QCAtMTQ5LDYgKzE1MiwxMyBAQCBwdWJsaWM6CiAgICAgLy8gc28gdGhpcyBmdW5jdGlvbiBpcyBu
b3Qgc3VpdGFibGUgZm9yIG5vbi1zdHlsZSB1c2VzLgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
aWRGb3JTdHlsZVJlc29sdXRpb24oKSBjb25zdDsKIAorICAgIC8vIEludGVybmFsIG1ldGhvZHMg
dGhhdCBhc3N1bWUgdGhlIGV4aXN0ZW5jZSBvZiBhdHRyaWJ1dGUgc3RvcmFnZSwgb25lIHNob3Vs
ZCB1c2UgaGFzQXR0cmlidXRlcygpCisgICAgLy8gYmVmb3JlIGNhbGxpbmcgdGhlbS4KKyAgICBz
aXplX3QgYXR0cmlidXRlQ291bnQoKSBjb25zdDsKKyAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZUl0
ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRl
bShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CisgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUo
dW5zaWduZWQgaW5kZXgpOworCiAgICAgdm9pZCBzY3JvbGxJbnRvVmlldyhib29sIGFsaWduVG9U
b3AgPSB0cnVlKTsKICAgICB2b2lkIHNjcm9sbEludG9WaWV3SWZOZWVkZWQoYm9vbCBjZW50ZXJJ
Zk5lZWRlZCA9IHRydWUpOwogCkBAIC01OTIsNiArNjAyLDExIEBAIGlubGluZSBjb25zdCBBdG9t
aWNTdHJpbmcmIEVsZW1lbnQ6OmZhc3RHZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSkKICAgICByZXR1cm4gbnVsbEF0b207CiB9CiAKK2lubGluZSBib29sIEVsZW1lbnQ6Omhh
c0F0dHJpYnV0ZXNXaXRob3V0VXBkYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hdHRyaWJ1
dGVNYXAgJiYgIW1fYXR0cmlidXRlTWFwLT5pc0VtcHR5KCk7Cit9CisKIGlubGluZSBjb25zdCBB
dG9taWNTdHJpbmcmIEVsZW1lbnQ6OmlkRm9yU3R5bGVSZXNvbHV0aW9uKCkgY29uc3QKIHsKICAg
ICBBU1NFUlQoaGFzSUQoKSk7CkBAIC02MTcsNiArNjMyLDMwIEBAIGlubGluZSB2b2lkIEVsZW1l
bnQ6OnNldElkQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAgICAgc2V0QXR0
cmlidXRlKGRvY3VtZW50KCktPmlkQXR0cmlidXRlTmFtZSgpLCB2YWx1ZSk7CiB9CiAKK2lubGlu
ZSBzaXplX3QgRWxlbWVudDo6YXR0cmlidXRlQ291bnQoKSBjb25zdAoreworICAgIEFTU0VSVCht
X2F0dHJpYnV0ZU1hcCk7CisgICAgcmV0dXJuIG1fYXR0cmlidXRlTWFwLT5sZW5ndGgoKTsKK30K
KworaW5saW5lIEF0dHJpYnV0ZSogRWxlbWVudDo6YXR0cmlidXRlSXRlbSh1bnNpZ25lZCBpbmRl
eCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9hdHRyaWJ1dGVNYXApOworICAgIHJldHVybiBtX2F0
dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpbmRleCk7Cit9CisKK2lubGluZSBBdHRyaWJ1dGUq
IEVsZW1lbnQ6OmdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV9hdHRyaWJ1dGVNYXApOworICAgIHJldHVybiBtX2F0dHJpYnV0
ZU1hcC0+Z2V0QXR0cmlidXRlSXRlbShuYW1lKTsKK30KKworaW5saW5lIHZvaWQgRWxlbWVudDo6
cmVtb3ZlQXR0cmlidXRlKHVuc2lnbmVkIGluZGV4KQoreworICAgIEFTU0VSVChtX2F0dHJpYnV0
ZU1hcCk7CisgICAgbV9hdHRyaWJ1dGVNYXAtPnJlbW92ZUF0dHJpYnV0ZShpbmRleCk7Cit9CisK
IGlubGluZSBOYW1lZE5vZGVNYXAqIEVsZW1lbnQ6OmVuc3VyZUF0dHJpYnV0ZU1hcCgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2F0dHJpYnV0ZU1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA3MzgwMDBm
ZWNkMzE0YWUwZGNiZWY3YTJhOWNkODExZjU4MjUzNTNmLi5iODRhYTFlZWI0YTZlMzU5YzJkODAx
M2E2ZjRlNGNmZTgzMmJmMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xODMxLDkgKzE4MzEsOSBA
QCBib29sIE5vZGU6OmlzRGVmYXVsdE5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVz
cGFjZVVSSU1heWJlRW1wdHkpIGNvbnN0CiAgICAgICAgICAgICBpZiAoZWxlbS0+cHJlZml4KCku
aXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0tPm5hbWVzcGFjZVVSSSgpID09
IG5hbWVzcGFjZVVSSTsKIAotICAgICAgICAgICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cnMgPSBl
bGVtLT51cGRhdGVkQXR0cmlidXRlcygpKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGF0dHJzLT5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAg
IEF0dHJpYnV0ZSogYXR0ciA9IGF0dHJzLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICAgICAg
aWYgKGVsZW0tPmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBlbGVtLT5hdHRyaWJ1dGVDb3VudCgpOyBpKyspIHsKKyAgICAgICAgICAg
ICAgICAgICAgQXR0cmlidXRlKiBhdHRyID0gZWxlbS0+YXR0cmlidXRlSXRlbShpKTsKICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyLT5sb2NhbE5hbWUo
KSA9PSB4bWxuc0F0b20pCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXR0ci0+dmFs
dWUoKSA9PSBuYW1lc3BhY2VVUkk7CkBAIC0xOTE3LDkgKzE5MTcsOSBAQCBTdHJpbmcgTm9kZTo6
bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyAmcHJlZml4KSBjb25zdAogICAgICAgICAg
ICAgaWYgKCFlbGVtLT5uYW1lc3BhY2VVUkkoKS5pc051bGwoKSAmJiBlbGVtLT5wcmVmaXgoKSA9
PSBwcmVmaXgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0tPm5hbWVzcGFjZVVSSSgpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoTmFtZWROb2RlTWFwKiBhdHRycyA9IGVsZW0t
PnVwZGF0ZWRBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgYXR0cnMtPmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgQXR0
cmlidXRlICphdHRyID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAgICBpZiAo
ZWxlbS0+aGFzQXR0cmlidXRlcygpKSB7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGVsZW0tPmF0dHJpYnV0ZUNvdW50KCk7IGkrKykgeworICAgICAgICAgICAgICAg
ICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBlbGVtLT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHItPnByZWZpeCgpID09IHht
bG5zQXRvbSAmJiBhdHRyLT5sb2NhbE5hbWUoKSA9PSBwcmVmaXgpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpCkBAIC0xOTcxLDkgKzE5NzEs
MTEgQEAgU3RyaW5nIE5vZGU6Omxvb2t1cE5hbWVzcGFjZVByZWZpeChjb25zdCBBdG9taWNTdHJp
bmcgJl9uYW1lc3BhY2VVUkksIGNvbnN0IEVsZW0KICAgICBpZiAob3JpZ2luYWxFbGVtZW50LT5s
b29rdXBOYW1lc3BhY2VVUkkocHJlZml4KCkpID09IF9uYW1lc3BhY2VVUkkpCiAgICAgICAgIHJl
dHVybiBwcmVmaXgoKTsKICAgICAKLSAgICBpZiAoTmFtZWROb2RlTWFwKiBhdHRycyA9IHRvRWxl
bWVudCh0aGlzKS0+dXBkYXRlZEF0dHJpYnV0ZXMoKSkgewotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgYXR0cnMtPmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgICAgIEF0dHJpYnV0
ZSogYXR0ciA9IGF0dHJzLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgIEFTU0VSVChpc0VsZW1lbnRO
b2RlKCkpOworICAgIGNvbnN0IEVsZW1lbnQqIHRoaXNFbGVtZW50ID0gdG9FbGVtZW50KHRoaXMp
OworICAgIGlmICh0aGlzRWxlbWVudC0+aGFzQXR0cmlidXRlcygpKSB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzRWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsgaSsrKSB7
CisgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSB0aGlzRWxlbWVudC0+YXR0cmlidXRlSXRl
bShpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGF0dHItPnByZWZpeCgpID09IHht
bG5zQXRvbSAmJiBhdHRyLT52YWx1ZSgpID09IF9uYW1lc3BhY2VVUkkKICAgICAgICAgICAgICAg
ICAgICAgJiYgb3JpZ2luYWxFbGVtZW50LT5sb29rdXBOYW1lc3BhY2VVUkkoYXR0ci0+bG9jYWxO
YW1lKCkpID09IF9uYW1lc3BhY2VVUkkpCkBAIC0yMTE0LDE3ICsyMTE2LDE3IEBAIHVuc2lnbmVk
IHNob3J0IE5vZGU6OmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKE5vZGUqIG90aGVyTm9kZSkKICAg
ICAgICAgY2hhaW4yLmFwcGVuZChhdHRyMik7CiAgICAgCiAgICAgaWYgKGF0dHIxICYmIGF0dHIy
ICYmIHN0YXJ0MSA9PSBzdGFydDIgJiYgc3RhcnQxKSB7Ci0gICAgICAgIC8vIFdlIGFyZSBjb21w
YXJpbmcgdHdvIGF0dHJpYnV0ZXMgb24gdGhlIHNhbWUgbm9kZS4gIENyYXdsIG91ciBhdHRyaWJ1
dGUgbWFwCi0gICAgICAgIC8vIGFuZCBzZWUgd2hpY2ggb25lIHdlIGhpdCBmaXJzdC4KLSAgICAg
ICAgTmFtZWROb2RlTWFwKiBtYXAgPSBhdHRyMS0+b3duZXJFbGVtZW50KCktPnVwZGF0ZWRBdHRy
aWJ1dGVzKCk7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1hcC0+bGVuZ3RoKCk7CisgICAg
ICAgIC8vIFdlIGFyZSBjb21wYXJpbmcgdHdvIGF0dHJpYnV0ZXMgb24gdGhlIHNhbWUgbm9kZS4g
Q3Jhd2wgb3VyIGF0dHJpYnV0ZSBtYXAgYW5kIHNlZSB3aGljaCBvbmUgd2UgaGl0IGZpcnN0Lgor
ICAgICAgICBFbGVtZW50KiBvd25lcjEgPSBhdHRyMS0+b3duZXJFbGVtZW50KCk7CisgICAgICAg
IG93bmVyMS0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsgLy8gRm9yY2UgdXBkYXRlIGludmFsaWQgYXR0
cmlidXRlcy4KKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gb3duZXIxLT5hdHRyaWJ1dGVDb3Vu
dCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgICAgIC8vIElmIG5laXRoZXIgb2YgdGhlIHR3byBkZXRlcm1pbmluZyBub2RlcyBpcyBh
IGNoaWxkIG5vZGUgYW5kIG5vZGVUeXBlIGlzIHRoZSBzYW1lIGZvciBib3RoIGRldGVybWluaW5n
IG5vZGVzLCB0aGVuIGFuIAogICAgICAgICAgICAgLy8gaW1wbGVtZW50YXRpb24tZGVwZW5kZW50
IG9yZGVyIGJldHdlZW4gdGhlIGRldGVybWluaW5nIG5vZGVzIGlzIHJldHVybmVkLiBUaGlzIG9y
ZGVyIGlzIHN0YWJsZSBhcyBsb25nIGFzIG5vIG5vZGVzIG9mCiAgICAgICAgICAgICAvLyB0aGUg
c2FtZSBub2RlVHlwZSBhcmUgaW5zZXJ0ZWQgaW50byBvciByZW1vdmVkIGZyb20gdGhlIGRpcmVj
dCBjb250YWluZXIuIFRoaXMgd291bGQgYmUgdGhlIGNhc2UsIGZvciBleGFtcGxlLCAKICAgICAg
ICAgICAgIC8vIHdoZW4gY29tcGFyaW5nIHR3byBhdHRyaWJ1dGVzIG9mIHRoZSBzYW1lIGVsZW1l
bnQsIGFuZCBpbnNlcnRpbmcgb3IgcmVtb3ZpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIG1pZ2h0
IGNoYW5nZSAKICAgICAgICAgICAgIC8vIHRoZSBvcmRlciBiZXR3ZWVuIGV4aXN0aW5nIGF0dHJp
YnV0ZXMuCi0gICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBtYXAtPmF0dHJpYnV0ZUl0ZW0o
aSk7CisgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBvd25lcjEtPmF0dHJpYnV0ZUl0ZW0o
aSk7CiAgICAgICAgICAgICBpZiAoYXR0cjEtPmF0dHIoKSA9PSBhdHRyKQogICAgICAgICAgICAg
ICAgIHJldHVybiBET0NVTUVOVF9QT1NJVElPTl9JTVBMRU1FTlRBVElPTl9TUEVDSUZJQyB8IERP
Q1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORzsKICAgICAgICAgICAgIGlmIChhdHRyMi0+YXR0cigp
ID09IGF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3Bw
CmluZGV4IGE1MWRkZDVjZmVlMmY0Y2FjNWUwNGQyZTliMTA5MzdkMGI0ZmE3M2YuLjFhZGRlMTBj
ZmMxZTUwZTJjYTk4YjE2Y2JjODkyMDM1YmY3NjhkY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC03Myw4ICs3Myw3IEBAIGJvb2wgaXNMZWdh
Y3lBcHBsZVN0eWxlU3Bhbihjb25zdCBOb2RlICpub2RlKQogZW51bSBTaG91bGRTdHlsZUF0dHJp
YnV0ZUJlRW1wdHkgeyBBbGxvd05vbkVtcHR5U3R5bGVBdHRyaWJ1dGUsIFN0eWxlQXR0cmlidXRl
U2hvdWxkQmVFbXB0eSB9Owogc3RhdGljIGJvb2wgaGFzTm9BdHRyaWJ1dGVPck9ubHlTdHlsZUF0
dHJpYnV0ZShjb25zdCBTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBTaG91bGRTdHlsZUF0dHJpYnV0
ZUJlRW1wdHkgc2hvdWxkU3R5bGVBdHRyaWJ1dGVCZUVtcHR5KQogewotICAgIE5hbWVkTm9kZU1h
cCogbWFwID0gZWxlbWVudC0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAoIW1hcCB8fCBt
YXAtPmlzRW1wdHkoKSkKKyAgICBpZiAoIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICB1bnNpZ25lZCBtYXRjaGVkQXR0cmlidXRlcyA9IDA7CkBA
IC04NCw4ICs4Myw4IEBAIHN0YXRpYyBib29sIGhhc05vQXR0cmlidXRlT3JPbmx5U3R5bGVBdHRy
aWJ1dGUoY29uc3QgU3R5bGVkRWxlbWVudCogZWxlbWVudCwgU2hvCiAgICAgICAgIHx8ICFlbGVt
ZW50LT5pbmxpbmVTdHlsZURlY2woKSB8fCBlbGVtZW50LT5pbmxpbmVTdHlsZURlY2woKS0+aXNF
bXB0eSgpKSkKICAgICAgICAgbWF0Y2hlZEF0dHJpYnV0ZXMrKzsKIAotICAgIEFTU0VSVChtYXRj
aGVkQXR0cmlidXRlcyA8PSBtYXAtPmxlbmd0aCgpKTsKLSAgICByZXR1cm4gbWF0Y2hlZEF0dHJp
YnV0ZXMgPT0gbWFwLT5sZW5ndGgoKTsKKyAgICBBU1NFUlQobWF0Y2hlZEF0dHJpYnV0ZXMgPD0g
ZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKSk7CisgICAgcmV0dXJuIG1hdGNoZWRBdHRyaWJ1dGVz
ID09IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7CiB9CiAKIGJvb2wgaXNTdHlsZVNwYW5PclNw
YW5XaXRoT25seVN0eWxlQXR0cmlidXRlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCkBAIC0xMDgs
MTAgKzEwNyw5IEBAIHN0YXRpYyBib29sIGlzRW1wdHlGb250VGFnKGNvbnN0IE5vZGUgKm5vZGUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNvbnN0IEVsZW1lbnQgKmVsZW0gPSBzdGF0
aWNfY2FzdDxjb25zdCBFbGVtZW50ICo+KG5vZGUpOwotICAgIE5hbWVkTm9kZU1hcCogbWFwID0g
ZWxlbS0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAoIW1hcCkKKyAgICBpZiAoIWVsZW0t
Pmhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1hcC0+
aXNFbXB0eSgpIHx8IChtYXAtPmxlbmd0aCgpID09IDEgJiYgZWxlbS0+Z2V0QXR0cmlidXRlKGNs
YXNzQXR0cikgPT0gc3R5bGVTcGFuQ2xhc3NTdHJpbmcoKSk7CisgICAgcmV0dXJuIGVsZW0tPmF0
dHJpYnV0ZUNvdW50KCkgPT0gMSAmJiBlbGVtLT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKSA9PSBz
dHlsZVNwYW5DbGFzc1N0cmluZygpOwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxFbGVtZW50PiBj
cmVhdGVGb250RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggZTYyMTgxNTY2N2RhNTdjNjYwOGVkMTY3YWZmM2FiNzBk
NDc0NmEzZS4uZjU1M2Q1MDJhMzAyZDhmNzUwOTU4MTBhMDU2MmJmY2QzNzM5YWNjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtODMyLDggKzgzMiw4IEBAIGJv
b2wgRWRpdGluZ1N0eWxlOjplbGVtZW50SXNTdHlsZWRTcGFuT3JIVE1MRXF1aXZhbGVudChjb25z
dCBIVE1MRWxlbWVudCogZWxlbWVuCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjb25zdCBOYW1l
ZE5vZGVNYXAqIGF0dHJpYnV0ZU1hcCA9IGVsZW1lbnQtPmF0dHJpYnV0ZU1hcCgpOwotICAgIGlm
ICghYXR0cmlidXRlTWFwIHx8IGF0dHJpYnV0ZU1hcC0+aXNFbXB0eSgpKQorICAgIC8vIEZJWE1F
OiBDYW4gaXQgcmVhbGx5IGlnbm9yZSBpbnZhbGlkIHN0eWxlIG9yIGFuaW1hdGlvbiBzdmcgYXR0
cmlidXRlcz8KKyAgICBpZiAoIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZXNXaXRob3V0VXBkYXRlKCkp
CiAgICAgICAgIHJldHVybiBlbGVtZW50SXNTcGFuT3JFbGVtZW50RXF1aXZhbGVudDsgLy8gc3Bh
biwgYiwgZXRjLi4uIHdpdGhvdXQgYW55IGF0dHJpYnV0ZXMKIAogICAgIHVuc2lnbmVkIG1hdGNo
ZWRBdHRyaWJ1dGVzID0gMDsKQEAgLTg2MSw4ICs4NjEsOCBAQCBib29sIEVkaXRpbmdTdHlsZTo6
ZWxlbWVudElzU3R5bGVkU3Bhbk9ySFRNTEVxdWl2YWxlbnQoY29uc3QgSFRNTEVsZW1lbnQqIGVs
ZW1lbgogICAgIH0KIAogICAgIC8vIGZvbnQgd2l0aCBjb2xvciBhdHRyaWJ1dGUsIHNwYW4gd2l0
aCBzdHlsZSBhdHRyaWJ1dGUsIGV0Yy4uLgotICAgIEFTU0VSVChtYXRjaGVkQXR0cmlidXRlcyA8
PSBhdHRyaWJ1dGVNYXAtPmxlbmd0aCgpKTsKLSAgICByZXR1cm4gbWF0Y2hlZEF0dHJpYnV0ZXMg
Pj0gYXR0cmlidXRlTWFwLT5sZW5ndGgoKTsKKyAgICBBU1NFUlQobWF0Y2hlZEF0dHJpYnV0ZXMg
PD0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKSk7CisgICAgcmV0dXJuIG1hdGNoZWRBdHRyaWJ1
dGVzID49IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7CiB9CiAKIHZvaWQgRWRpdGluZ1N0eWxl
OjpwcmVwYXJlVG9BcHBseUF0KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgU2hvdWxkUHJlc2Vy
dmVXcml0aW5nRGlyZWN0aW9uIHNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRv
ckNvbW1hbmQuY3BwCmluZGV4IGU2NDZiNTFmMjJhYWVhODFkN2NmMDdkMzczZTk4OGJkNjkxMzU2
NjkuLjRhZWM0MTlhMTFkOWI5M2U4M2IxMTU2Mjg2NjFlOTgzZjUyYWZmZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JD
b21tYW5kLmNwcApAQCAtNTEsOCArNTEsNyBAQCBzdGF0aWMgRWxlbWVudCogaGlnaGVzdFZpc3Vh
bGx5RXF1aXZhbGVudERpdkJlbG93Um9vdChFbGVtZW50KiBzdGFydEJsb2NrKQogICAgIC8vIFdl
IGRvbid0IHdhbnQgdG8gcmV0dXJuIGEgcm9vdCBub2RlIChpZiBpdCBoYXBwZW5zIHRvIGJlIGEg
ZGl2LCBlLmcuLCBpbiBhIGRvY3VtZW50IGZyYWdtZW50KSBiZWNhdXNlIHRoZXJlIGFyZSBubwog
ICAgIC8vIHNpYmxpbmdzIGZvciB1cyB0byBhcHBlbmQgdG8uCiAgICAgd2hpbGUgKCFjdXJCbG9j
ay0+bmV4dFNpYmxpbmcoKSAmJiBjdXJCbG9jay0+cGFyZW50RWxlbWVudCgpLT5oYXNUYWdOYW1l
KGRpdlRhZykgJiYgY3VyQmxvY2stPnBhcmVudEVsZW1lbnQoKS0+cGFyZW50RWxlbWVudCgpKSB7
Ci0gICAgICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IGN1ckJsb2NrLT5wYXJlbnRFbGVt
ZW50KCktPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzICYmICFh
dHRyaWJ1dGVzLT5pc0VtcHR5KCkpCisgICAgICAgIGlmIChjdXJCbG9jay0+cGFyZW50RWxlbWVu
dCgpLT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY3VyQmxv
Y2sgPSBjdXJCbG9jay0+cGFyZW50RWxlbWVudCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKaW5kZXggNTIyNmIyMTRjMjU4MTE3NjA5MzVj
NTY2OTY0ZTc2MzBmMDJmOWQxOC4uMzA2YTg0NjU1OGU2YmMyYTE2ZGE4NjdmMmEyMGM4NzZkNjIy
ZTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAK
QEAgLTM0OSwxMSArMzQ5LDEwIEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEVsZW1l
bnQoU3RyaW5nQnVpbGRlciYgb3V0LCBFbGVtZW50KiBlbGVtZW50LCBOYW1lCiB7CiAgICAgYXBw
ZW5kT3BlblRhZyhvdXQsIGVsZW1lbnQsIG5hbWVzcGFjZXMpOwogCi0gICAgTmFtZWROb2RlTWFw
KiBhdHRyaWJ1dGVzID0gZWxlbWVudC0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAoYXR0
cmlidXRlcykgewotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRyaWJ1dGVzLT5sZW5ndGgo
KTsKKyAgICBpZiAoZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKSB7CisgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCA9IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCi0gICAgICAgICAgICBhcHBlbmRBdHRyaWJ1
dGUob3V0LCBlbGVtZW50LCAqYXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKSwgbmFtZXNwYWNl
cyk7CisgICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGUob3V0LCBlbGVtZW50LCAqZWxlbWVudC0+
YXR0cmlidXRlSXRlbShpKSwgbmFtZXNwYWNlcyk7CiAgICAgfQogCiAgICAgLy8gR2l2ZSBhbiBv
cHBvcnR1bml0eSB0byBzdWJjbGFzc2VzIHRvIGFkZCB0aGVpciBvd24gYXR0cmlidXRlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA5YjE5MDkwOTFhMTA1YzEzNjVlYzcxMmZiOTA1
YzdiMjE0OTExMDljLi5jOWEwZTc4ZGQxOTZlZGE5ZjIwMGM2YWNmZTRkM2NlNDM3ZWYxZjMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0xMDQsMTIgKzEwNCwxMSBAQCBzdGF0aWMg
dm9pZCBjb21wbGV0ZVVSTHMoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMKQogICAg
IGZvciAoTm9kZSogbiA9IG5vZGU7IG4gIT0gZW5kOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZSgp
KSB7CiAgICAgICAgIGlmIChuLT5pc0VsZW1lbnROb2RlKCkpIHsKICAgICAgICAgICAgIEVsZW1l
bnQqIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICBOYW1lZE5vZGVN
YXAqIGF0dHJpYnV0ZXMgPSBlLT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgICAgICAgICAgaWYg
KCFhdHRyaWJ1dGVzKQorICAgICAgICAgICAgaWYgKCFlLT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRy
aWJ1dGVzLT5sZW5ndGgoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGUtPmF0dHJp
YnV0ZUNvdW50KCk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspIHsKLSAgICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0
ZXMtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1
dGUgPSBlLT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgICAgIGlmIChlLT5pc1VSTEF0
dHJpYnV0ZShhdHRyaWJ1dGUpKQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzLmFwcGVuZChB
dHRyaWJ1dGVDaGFuZ2UoZSwgYXR0cmlidXRlLT5uYW1lKCksIEtVUkwocGFyc2VkQmFzZVVSTCwg
YXR0cmlidXRlLT52YWx1ZSgpKS5zdHJpbmcoKSkpOwogICAgICAgICAgICAgfQpAQCAtMjg5LDEy
ICsyODgsMTEgQEAgdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kRWxlbWVudChT
dHJpbmdCdWlsZGVyJiBvdXQsIEVsZW1lbnQqIGVsZW1lbnQKICAgICBjb25zdCBib29sIGRvY3Vt
ZW50SXNIVE1MID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKTsKICAgICBh
cHBlbmRPcGVuVGFnKG91dCwgZWxlbWVudCwgMCk7CiAKLSAgICBOYW1lZE5vZGVNYXAqIGF0dHJp
YnV0ZXMgPSBlbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGNvbnN0IHVuc2lnbmVk
IGxlbmd0aCA9IGF0dHJpYnV0ZXMgPyBhdHRyaWJ1dGVzLT5sZW5ndGgoKSA6IDA7CisgICAgY29u
c3QgdW5zaWduZWQgbGVuZ3RoID0gZWxlbWVudC0+aGFzQXR0cmlidXRlcygpID8gZWxlbWVudC0+
YXR0cmlidXRlQ291bnQoKSA6IDA7CiAgICAgY29uc3QgYm9vbCBzaG91bGRBbm5vdGF0ZU9yRm9y
Y2VJbmxpbmUgPSBlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgKHNob3VsZEFubm90YXRlKCkg
fHwgYWRkRGlzcGxheUlubGluZSk7CiAgICAgY29uc3QgYm9vbCBzaG91bGRPdmVycmlkZVN0eWxl
QXR0ciA9IHNob3VsZEFubm90YXRlT3JGb3JjZUlubGluZSB8fCBzaG91bGRBcHBseVdyYXBwaW5n
U3R5bGUoZWxlbWVudCk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykgewotICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMtPmF0dHJp
YnV0ZUl0ZW0oaSk7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxlbWVudC0+YXR0
cmlidXRlSXRlbShpKTsKICAgICAgICAgLy8gV2UnbGwgaGFuZGxlIHRoZSBzdHlsZSBhdHRyaWJ1
dGUgc2VwYXJhdGVseSwgYmVsb3cuCiAgICAgICAgIGlmIChhdHRyaWJ1dGUtPm5hbWUoKSA9PSBz
dHlsZUF0dHIgJiYgc2hvdWxkT3ZlcnJpZGVTdHlsZUF0dHIpCiAgICAgICAgICAgICBjb250aW51
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCmluZGV4IDMwOWFhZmUw
NTVhM2ExYmY0ZjQ1YjE1ZWY5MmIxMjc0NTE4OGYwNGUuLmE2NmQxNWZlMjc1ZmI4ZWQ0MTI0OGJm
YTRhNTY4NTRlYTgwZWYxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVt
YmVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50
LmNwcApAQCAtMTE3LDEyICsxMTcsMTEgQEAgdm9pZCBIVE1MRW1iZWRFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAKIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6
cGFyYW1ldGVyc0ZvclBsdWdpbihWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgVmVjdG9yPFN0
cmluZz4mIHBhcmFtVmFsdWVzKQogewotICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IHVw
ZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKCFhdHRyaWJ1dGVzKQorICAgIGlmICghaGFzQXR0
cmlidXRlcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYXR0cmlidXRlcy0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICBBdHRyaWJ1dGUqIGl0ID0g
YXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYXR0cmlidXRlQ291bnQoKTsgKytpKSB7CisgICAgICAgIEF0dHJpYnV0ZSogaXQgPSBhdHRy
aWJ1dGVJdGVtKGkpOwogICAgICAgICBwYXJhbU5hbWVzLmFwcGVuZChpdC0+bG9jYWxOYW1lKCku
c3RyaW5nKCkpOwogICAgICAgICBwYXJhbVZhbHVlcy5hcHBlbmQoaXQtPnZhbHVlKCkuc3RyaW5n
KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4
IDQxM2MxMjc3Y2MxMTM4OTM0NDJhZGE1YjZjOTgxMTZjZjE4MGZlN2QuLjI4ZWExMGIxN2RlODQ4
MWEyOWEzZTAxOTAyMDExMGRmYTQzNDFjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcApAQCAtNTQ1LDEzICs1NDUsMTIgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50
Ojp1cGRhdGVUeXBlKCkKICAgICAgICAgcmVnaXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5l
ZWRlZCgpOwogCiAgICAgaWYgKGRpZFJlc3BlY3RIZWlnaHRBbmRXaWR0aCAhPSBtX2lucHV0VHlw
ZS0+c2hvdWxkUmVzcGVjdEhlaWdodEFuZFdpZHRoQXR0cmlidXRlcygpKSB7Ci0gICAgICAgIE5h
bWVkTm9kZU1hcCogbWFwID0gYXR0cmlidXRlTWFwKCk7Ci0gICAgICAgIEFTU0VSVChtYXApOwot
ICAgICAgICBpZiAoQXR0cmlidXRlKiBoZWlnaHQgPSBtYXAtPmdldEF0dHJpYnV0ZUl0ZW0oaGVp
Z2h0QXR0cikpCisgICAgICAgIEFTU0VSVChhdHRyaWJ1dGVNYXAoKSk7CisgICAgICAgIGlmIChB
dHRyaWJ1dGUqIGhlaWdodCA9IGdldEF0dHJpYnV0ZUl0ZW0oaGVpZ2h0QXR0cikpCiAgICAgICAg
ICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGhlaWdodCwgZmFsc2UpOwotICAgICAgICBpZiAoQXR0cmli
dXRlKiB3aWR0aCA9IG1hcC0+Z2V0QXR0cmlidXRlSXRlbSh3aWR0aEF0dHIpKQorICAgICAgICBp
ZiAoQXR0cmlidXRlKiB3aWR0aCA9IGdldEF0dHJpYnV0ZUl0ZW0od2lkdGhBdHRyKSkKICAgICAg
ICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQod2lkdGgsIGZhbHNlKTsKLSAgICAgICAgaWYgKEF0dHJp
YnV0ZSogYWxpZ24gPSBtYXAtPmdldEF0dHJpYnV0ZUl0ZW0oYWxpZ25BdHRyKSkKKyAgICAgICAg
aWYgKEF0dHJpYnV0ZSogYWxpZ24gPSBnZXRBdHRyaWJ1dGVJdGVtKGFsaWduQXR0cikpCiAgICAg
ICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGFsaWduLCBmYWxzZSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDU5MGQ2OWI5OGIyNGM5NmI3
MDc0MTFjYjVkODcwMjNhM2U5ODljMjMuLjU0NmRjMWMwYjdiYTQ2ZGIxNzUzNTU5YTIxMjk3YWYz
YTY5MTMyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBA
IC0xNzcsMTAgKzE3Nyw5IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQ
bHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxTCiAgICAgfQogICAgIAog
ICAgIC8vIFR1cm4gdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIDxvYmplY3Q+IGVsZW1lbnQgaW50byBh
cnJheXMsIGJ1dCBkb24ndCBvdmVycmlkZSA8cGFyYW0+IHZhbHVlcy4KLSAgICBOYW1lZE5vZGVN
YXAqIGF0dHJpYnV0ZXMgPSB1cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmIChhdHRyaWJ1dGVz
KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLT5sZW5ndGgo
KTsgKytpKSB7Ci0gICAgICAgICAgICBBdHRyaWJ1dGUqIGl0ID0gYXR0cmlidXRlcy0+YXR0cmli
dXRlSXRlbShpKTsKKyAgICBpZiAoaGFzQXR0cmlidXRlcygpKSB7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVDb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgIEF0
dHJpYnV0ZSogaXQgPSBhdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lID0gaXQtPm5hbWUoKS5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgIGlmICgh
dW5pcXVlUGFyYW1OYW1lcy5jb250YWlucyhuYW1lLmltcGwoKSkpIHsKICAgICAgICAgICAgICAg
ICBwYXJhbU5hbWVzLmFwcGVuZChuYW1lLnN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQYXJhbUVsZW1lbnQuY3BwCmluZGV4IGFhMjI4YmMzMTY2M2FiMDgyYTMyMDIyYjg0ZTFjZTNl
YjA5YmZhYzEuLjkwNzI0MjExMTkxZjY5NzY1M2M4MTdmYzk2NWI4OTdkMzEyOGZjOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcApAQCAtNjYsNyArNjYsNyBAQCB2
b2lkIEhUTUxQYXJhbUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0
cikKIGJvb2wgSFRNTFBhcmFtRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRy
KSBjb25zdAogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gdmFsdWVBdHRyICYmIGhhc0F0dHJp
YnV0ZXMoKSkgewotICAgICAgICBBdHRyaWJ1dGUqIG5hbWVBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVN
YXAoKS0+Z2V0QXR0cmlidXRlSXRlbShuYW1lQXR0cik7CisgICAgICAgIEF0dHJpYnV0ZSogbmFt
ZUF0dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZUl0ZW0obmFtZUF0dHIpOwogICAgICAgICBpZiAobmFt
ZUF0dHJpYnV0ZSkgewogICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IG5h
bWVBdHRyaWJ1dGUtPnZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoaXNVUkxQYXJhbWV0ZXIodmFs
dWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRp
bmdFbGVtZW50TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0
dGluZ0VsZW1lbnRMaXN0LmNwcAppbmRleCBmMzMxYWY3ZTcwYjZiNWRjNWQxOWE4MTQ3YmU3YTI4
NGIzZTYyOWRlLi44YmVhYWE3NTQ5ZDczMGYwZTgxMDYyMTBkOTFkZjIxZGY1YTYxMzkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRM
aXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0Vs
ZW1lbnRMaXN0LmNwcApAQCAtNDAsOSArNDAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBO
b2FoJ3MgQXJrIG9mIEZvcm1hdHRpbmcgRWxlbWVudHMgY2FuIGZpdCB0aHJlZSBvZiBlYWNoIGVs
ZW1lbnQuCiBzdGF0aWMgY29uc3Qgc2l6ZV90IGtOb2Foc0Fya0NhcGFjaXR5ID0gMzsKIAotc3Rh
dGljIGlubGluZSBzaXplX3QgYXR0cmlidXRlQ291bnQoRWxlbWVudCogZWxlbWVudCkKK3N0YXRp
YyBpbmxpbmUgc2l6ZV90IHNhZmVBdHRyaWJ1dGVDb3VudChFbGVtZW50KiBlbGVtZW50KQogewot
ICAgIHJldHVybiBlbGVtZW50LT5hdHRyaWJ1dGVNYXAoKSA/IGVsZW1lbnQtPmF0dHJpYnV0ZU1h
cCgpLT5sZW5ndGgoKSA6IDA7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXNXaXRo
b3V0VXBkYXRlKCkgPyBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpIDogMDsKIH0KIAogSFRNTEZv
cm1hdHRpbmdFbGVtZW50TGlzdDo6SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdCgpCkBAIC0xNDIs
NyArMTQyLDcgQEAgdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0Ojp0cnlUb0Vuc3VyZU5v
YWhzQXJrQ29uZGl0aW9uUXVpY2tseShFbGVtZW50KiBuZXcKICAgICAvLyBvZiBhIHF1aWNrbHkg
ZW5zdXJpbmcgdGhlIGNvbmRpdGlvbi4KICAgICBWZWN0b3I8RWxlbWVudCosIDEwPiBjYW5kaWRh
dGVzOwogCi0gICAgc2l6ZV90IG5ld0VsZW1lbnRBdHRyaWJ1dGVDb3VudCA9IGF0dHJpYnV0ZUNv
dW50KG5ld0VsZW1lbnQpOworICAgIHNpemVfdCBuZXdFbGVtZW50QXR0cmlidXRlQ291bnQgPSBz
YWZlQXR0cmlidXRlQ291bnQobmV3RWxlbWVudCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gbV9l
bnRyaWVzLnNpemUoKTsgaTsgKSB7CiAgICAgICAgIC0taTsKQEAgLTE1NCw3ICsxNTQsNyBAQCB2
b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRp
b25RdWlja2x5KEVsZW1lbnQqIG5ldwogICAgICAgICBFbGVtZW50KiBjYW5kaWRhdGUgPSBlbnRy
eS5lbGVtZW50KCk7CiAgICAgICAgIGlmIChuZXdFbGVtZW50LT50YWdRTmFtZSgpICE9IGNhbmRp
ZGF0ZS0+dGFnUU5hbWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoYXR0
cmlidXRlQ291bnQoY2FuZGlkYXRlKSAhPSBuZXdFbGVtZW50QXR0cmlidXRlQ291bnQpCisgICAg
ICAgIGlmIChzYWZlQXR0cmlidXRlQ291bnQoY2FuZGlkYXRlKSAhPSBuZXdFbGVtZW50QXR0cmli
dXRlQ291bnQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjYW5kaWRhdGVzLmFw
cGVuZChjYW5kaWRhdGUpOwpAQCAtMTc4LDE4ICsxNzgsMTYgQEAgdm9pZCBIVE1MRm9ybWF0dGlu
Z0VsZW1lbnRMaXN0OjplbnN1cmVOb2Foc0Fya0NvbmRpdGlvbihFbGVtZW50KiBuZXdFbGVtZW50
KQogICAgIFZlY3RvcjxFbGVtZW50Kj4gcmVtYWluaW5nQ2FuZGlkYXRlczsKICAgICByZW1haW5p
bmdDYW5kaWRhdGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2FuZGlkYXRlcy5zaXplKCkpOwog
Ci0gICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAgPSBuZXdFbGVtZW50LT5hdHRyaWJ1dGVN
YXAoKTsKLSAgICBzaXplX3QgbmV3RWxlbWVudEF0dHJpYnV0ZUNvdW50ID0gYXR0cmlidXRlQ291
bnQobmV3RWxlbWVudCk7CisgICAgc2l6ZV90IG5ld0VsZW1lbnRBdHRyaWJ1dGVDb3VudCA9IHNh
ZmVBdHRyaWJ1dGVDb3VudChuZXdFbGVtZW50KTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbmV3RWxlbWVudEF0dHJpYnV0ZUNvdW50OyArK2kpIHsKLSAgICAgICAgUXVhbGlmaWVkTmFt
ZSBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGkpLT5uYW1lKCk7
Ci0gICAgICAgIEF0b21pY1N0cmluZyBhdHRyaWJ1dGVWYWx1ZSA9IG5ld0VsZW1lbnQtPmZhc3RH
ZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRl
ID0gbmV3RWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKIAogICAgICAgICBmb3IgKHNpemVfdCBq
ID0gMDsgaiA8IGNhbmRpZGF0ZXMuc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgIEVsZW1lbnQq
IGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZXNbal07CiAKICAgICAgICAgICAgIC8vIFRoZXNlIHByb3Bl
cnRpZXMgc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGNoZWNrZWQgYnkgdHJ5VG9FbnN1cmVOb2Fo
c0Fya0NvbmRpdGlvblF1aWNrbHkuCi0gICAgICAgICAgICBBU1NFUlQobmV3RWxlbWVudC0+YXR0
cmlidXRlTWFwKCktPmxlbmd0aCgpID09IGNhbmRpZGF0ZS0+YXR0cmlidXRlTWFwKCktPmxlbmd0
aCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdFbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpID09
IGNhbmRpZGF0ZS0+YXR0cmlidXRlQ291bnQoKSk7CiAgICAgICAgICAgICBBU1NFUlQobmV3RWxl
bWVudC0+dGFnUU5hbWUoKSA9PSBjYW5kaWRhdGUtPnRhZ1FOYW1lKCkpOwogCiAgICAgICAgICAg
ICAvLyBGSVhNRTogVGVjaG5pY2FsbHkgd2Ugc2hvdWxkbid0IHJlYWQgdGhpcyBpbmZvcm1hdGlv
biBiYWNrIGZyb20KQEAgLTE5OSw3ICsxOTcsNyBAQCB2b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVu
dExpc3Q6OmVuc3VyZU5vYWhzQXJrQ29uZGl0aW9uKEVsZW1lbnQqIG5ld0VsZW1lbnQpCiAgICAg
ICAgICAgICAvLyB0aGF0IGltcGxlbWVudGF0aW9ucyBjYW4gcnVuIG9mZiB0aGUgbWFpbiB0aHJl
YWQuIElmIEphdmFTY3JpcHQKICAgICAgICAgICAgIC8vIGNoYW5nZXMgdGhlIGF0dHJpYnV0ZXMg
dmFsdWVzLCB3ZSBjb3VsZCBnZXQgYSBzbGlnaHRseSB3cm9uZwogICAgICAgICAgICAgLy8gb3V0
cHV0IGhlcmUuCi0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlLT5mYXN0R2V0QXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpID09IGF0dHJpYnV0ZVZhbHVlKQorICAgICAgICAgICAgaWYgKGNhbmRpZGF0
ZS0+ZmFzdEdldEF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSkgPT0gYXR0cmlidXRlLT52YWx1
ZSgpKQogICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NhbmRpZGF0ZXMuYXBwZW5kKGNhbmRpZGF0
ZSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TUVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRl
eCAzYzlkODliNWRkMWNmYmEzYWI0MmUwMjU5NGMxNWI0NzAyNDAzZjU0Li4xOTUyOTkwYWY2MGUy
NWRiNTk5MDBhZTFmYTlmMDQzOWYwZTY3MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRE9NRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
RWRpdG9yLmNwcApAQCAtMTYwLDE2ICsxNjAsMTUgQEAgdm9pZCBET01FZGl0b3I6OmlubmVyUGF0
Y2hOb2RlKERpZ2VzdCogb2xkRGlnZXN0LCBEaWdlc3QqIG5ld0RpZ2VzdCwgRXhjZXB0aW9uQ28K
ICAgICBFbGVtZW50KiBvbGRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG9sZE5vZGUp
OwogICAgIEVsZW1lbnQqIG5ld0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obmV3Tm9k
ZSk7CiAgICAgaWYgKG9sZERpZ2VzdC0+bV9hdHRyc1NIQTEgIT0gbmV3RGlnZXN0LT5tX2F0dHJz
U0hBMSkgewotICAgICAgICBOYW1lZE5vZGVNYXAqIG9sZEF0dHJpYnV0ZU1hcCA9IG9sZEVsZW1l
bnQtPmF0dHJpYnV0ZU1hcCgpOwotCi0gICAgICAgIHdoaWxlIChvbGRBdHRyaWJ1dGVNYXAgJiYg
b2xkQXR0cmlidXRlTWFwLT5sZW5ndGgoKSkKLSAgICAgICAgICAgIG9sZEF0dHJpYnV0ZU1hcC0+
cmVtb3ZlQXR0cmlidXRlKDApOworICAgICAgICBpZiAob2xkRWxlbWVudC0+aGFzQXR0cmlidXRl
c1dpdGhvdXRVcGRhdGUoKSkgeworICAgICAgICAgICAgd2hpbGUgKG9sZEVsZW1lbnQtPmF0dHJp
YnV0ZUNvdW50KCkpCisgICAgICAgICAgICAgICAgb2xkRWxlbWVudC0+cmVtb3ZlQXR0cmlidXRl
KDApOworICAgICAgICB9CiAKLSAgICAgICAgTmFtZWROb2RlTWFwKiBuZXdBdHRyaWJ1dGVNYXAg
PSBuZXdFbGVtZW50LT5hdHRyaWJ1dGVNYXAoKTsKLSAgICAgICAgaWYgKG5ld0F0dHJpYnV0ZU1h
cCkgewotICAgICAgICAgICAgc2l6ZV90IG51bUF0dHJzID0gbmV3QXR0cmlidXRlTWFwLT5sZW5n
dGgoKTsKKyAgICAgICAgaWYgKG5ld0VsZW1lbnQtPmhhc0F0dHJpYnV0ZXNXaXRob3V0VXBkYXRl
KCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBudW1BdHRycyA9IG5ld0VsZW1lbnQtPmF0dHJpYnV0
ZUNvdW50KCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUF0dHJzOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IG5ld0F0
dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgICAgICAgICBjb25zdCBBdHRy
aWJ1dGUqIGF0dHJpYnV0ZSA9IG5ld0VsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAg
ICAgICAgICAgb2xkRWxlbWVudC0+c2V0QXR0cmlidXRlKGF0dHJpYnV0ZS0+bmFtZSgpLCBhdHRy
aWJ1dGUtPnZhbHVlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zODQsMTIgKzM4
MywxMSBAQCBQYXNzT3duUHRyPERPTUVkaXRvcjo6RGlnZXN0PiBET01FZGl0b3I6OmNyZWF0ZURp
Z2VzdChOb2RlKiBub2RlLCBVbnVzZWROb2Rlc01hcAogICAgICAgICB9CiAgICAgICAgIEVsZW1l
bnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7CiAKLSAgICAgICAgTmFt
ZWROb2RlTWFwKiBhdHRyTWFwID0gZWxlbWVudC0+YXR0cmlidXRlTWFwKCk7Ci0gICAgICAgIGlm
IChhdHRyTWFwICYmIGF0dHJNYXAtPmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBzaXplX3QgbnVt
QXR0cnMgPSBhdHRyTWFwLT5sZW5ndGgoKTsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmhhc0F0dHJp
YnV0ZXNXaXRob3V0VXBkYXRlKCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBudW1BdHRycyA9IGVs
ZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7CiAgICAgICAgICAgICBTSEExIGF0dHJzU0hBMTsKICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQXR0cnM7ICsraSkgewotICAgICAg
ICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0ck1hcC0+YXR0cmlidXRl
SXRlbShpKTsKKyAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVs
ZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgICAgICAgICAgYWRkU3RyaW5nVG9TSEEx
KGF0dHJzU0hBMSwgYXR0cmlidXRlLT5uYW1lKCkudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICAg
ICAgYWRkU3RyaW5nVG9TSEExKGF0dHJzU0hBMSwgYXR0cmlidXRlLT52YWx1ZSgpKTsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCmluZGV4IDQwMDhhNDIwY2YwZGJkZjlmNjczMzVjYThhOWFkMDM4N2UwZjUyMDcuLjE1YTg3
ZDQ4YzI1MDViMjMyNGRkYmU1M2NhMmZkMTQwZWEzMzRlYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNzE3LDEyICs3MTcsMTEgQEAg
UGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlG
b3JSdWxlTGlzdChDU1NSdWxlTGlzdCoKIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3Bl
Y3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yQXR0cmlidXRlU3R5bGVzKEVsZW1lbnQqIGVsZW1l
bnQpCiB7CiAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhdHRyU3R5bGVzID0gSW5zcGVjdG9y
QXJyYXk6OmNyZWF0ZSgpOwotICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IGVsZW1lbnQt
PnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKCFhdHRyaWJ1dGVzKQorICAgIGlmICghZWxl
bWVudC0+aGFzQXR0cmlidXRlcygpKQogICAgICAgICByZXR1cm4gYXR0clN0eWxlcy5yZWxlYXNl
KCk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBhdHRyaWJ1dGVzICYmIGkgPCBhdHRyaWJ1
dGVzLT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0
cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsgKytpKSB7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0
cmlidXRlID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgaWYgKCFhdHRyaWJ1
dGUtPmRlY2woKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBhdHRyU3R5bGVPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXgg
M2E3YTIwZWQ4YWUxMWU0Y2QyZTUyODMzY2IxYWZkZDI4MDJiNWNmZS4uOWIyMzcwMDlkZTdhYzZm
ODk0MmIzY2Y1YjY2YTk2ODJhZWIxNTUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01MzAsMTcgKzUzMCwxNyBAQCB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpzZXRBdHRyaWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgaW50IGVsZW1lbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgTmFtZWRO
b2RlTWFwKiBhdHRyTWFwID0gdG9IVE1MRWxlbWVudChjaGlsZCktPnVwZGF0ZWRBdHRyaWJ1dGVz
KCk7Ci0gICAgaWYgKCFhdHRyTWFwICYmIG5hbWUpIHsKKyAgICBFbGVtZW50KiBjaGlsZEVsZW1l
bnQgPSB0b0VsZW1lbnQoY2hpbGQpOworICAgIGlmICghY2hpbGRFbGVtZW50LT5oYXNBdHRyaWJ1
dGVzKCkgJiYgbmFtZSkgewogICAgICAgICBlbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoKm5hbWUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYm9vbCBmb3VuZE9yaWdpbmFsQXR0cmli
dXRlID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgbnVtQXR0cnMgPSBhdHRyTWFwLT5sZW5ndGgoKTsK
KyAgICB1bnNpZ25lZCBudW1BdHRycyA9IGNoaWxkRWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQXR0cnM7ICsraSkgewogICAgICAgICAv
LyBBZGQgYXR0cmlidXRlIHBhaXIKLSAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUg
PSBhdHRyTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0
dHJpYnV0ZSA9IGNoaWxkRWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgZm91bmRP
cmlnaW5hbEF0dHJpYnV0ZSA9IGZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUgfHwgKG5hbWUgJiYgYXR0
cmlidXRlLT5uYW1lKCkudG9TdHJpbmcoKSA9PSAqbmFtZSk7CiAgICAgICAgIGVsZW1lbnQtPnNl
dEF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSwgYXR0cmlidXRlLT52YWx1ZSgpKTsKICAgICB9
CkBAIC03ODEsMTQgKzc4MSwxNCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2Vh
cmNoKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbQogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLy8g
R28gdGhyb3VnaCBhbGwgYXR0cmlidXRlcyBhbmQgc2VyaWFsaXplIHRoZW0uCi0gICAgICAgICAg
ICAgICAgY29uc3QgTmFtZWROb2RlTWFwKiBhdHRyTWFwID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KG5vZGUpLT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgICAgICAgICAgICAgIGlmICghYXR0ck1h
cCkKKyAgICAgICAgICAgICAgICBjb25zdCBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG5v
ZGUpOworICAgICAgICAgICAgICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bUF0
dHJzID0gYXR0ck1hcC0+bGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtQXR0
cnMgPSBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOwogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1BdHRyczsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8v
IEFkZCBhdHRyaWJ1dGUgcGFpcgotICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUq
IGF0dHJpYnV0ZSA9IGF0dHJNYXAtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShp
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkuZmluZCh3
aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KSAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0Q29sbGVjdG9yLmFkZChub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTE1OSwxMyArMTE1OSwxMiBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZQog
ewogICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXR0cmlidXRlc1ZhbHVlID0gSW5zcGVjdG9y
QXJyYXk6OmNyZWF0ZSgpOwogICAgIC8vIEdvIHRocm91Z2ggYWxsIGF0dHJpYnV0ZXMgYW5kIHNl
cmlhbGl6ZSB0aGVtLgotICAgIGNvbnN0IE5hbWVkTm9kZU1hcCogYXR0ck1hcCA9IGVsZW1lbnQt
PnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKCFhdHRyTWFwKQorICAgIGlmICghZWxlbWVu
dC0+aGFzQXR0cmlidXRlcygpKQogICAgICAgICByZXR1cm4gYXR0cmlidXRlc1ZhbHVlLnJlbGVh
c2UoKTsKLSAgICB1bnNpZ25lZCBudW1BdHRycyA9IGF0dHJNYXAtPmxlbmd0aCgpOworICAgIHVu
c2lnbmVkIG51bUF0dHJzID0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtQXR0cnM7ICsraSkgewogICAgICAgICAvLyBBZGQgYXR0cmli
dXRlIHBhaXIKLSAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyTWFwLT5h
dHRyaWJ1dGVJdGVtKGkpOworICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVs
ZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgIGF0dHJpYnV0ZXNWYWx1ZS0+cHVzaFN0
cmluZyhhdHRyaWJ1dGUtPm5hbWUoKS50b1N0cmluZygpKTsKICAgICAgICAgYXR0cmlidXRlc1Zh
bHVlLT5wdXNoU3RyaW5nKGF0dHJpYnV0ZS0+dmFsdWUoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAwNTk4NjRlZWE5ZWZiZDk3YTk0MGE5YmM5OWIz
YmI4NWU4YWVhYzdjLi42NGQ5MDFiN2EzODA4YTY3ODY3YTg0MTM5ZDhmZmEzMzYzOWJmNDBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtNjksOSArNjksOSBAQCBz
dGF0aWMgYm9vbCBpc0NoYXJzZXRTcGVjaWZ5aW5nTm9kZShOb2RlKiBub2RlKQogICAgIGlmICgh
ZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om1ldGFUYWcpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgSFRNTE1ldGFDaGFyc2V0UGFyc2VyOjpBdHRyaWJ1dGVMaXN0IGF0dHJpYnV0
ZXM7Ci0gICAgaWYgKGNvbnN0IE5hbWVkTm9kZU1hcCogYXR0cmlidXRlc01hcCA9IGVsZW1lbnQt
PnVwZGF0ZWRBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGF0dHJpYnV0ZXNNYXAtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgIEF0dHJpYnV0ZSog
aXRlbSA9IGF0dHJpYnV0ZXNNYXAtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgaWYgKGVsZW1lbnQt
Pmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxl
bWVudC0+YXR0cmlidXRlQ291bnQoKTsgKytpKSB7CisgICAgICAgICAgICBBdHRyaWJ1dGUqIGl0
ZW0gPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBkZWFsIGFwcHJvcHJpYXRlbHkgd2l0aCB0aGUgYXR0cmlidXRlIGlmIHRoZXkgaGF2
ZSBhIG5hbWVzcGFjZS4KICAgICAgICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKG1ha2VfcGFpcihp
dGVtLT5uYW1lKCkudG9TdHJpbmcoKSwgaXRlbS0+dmFsdWUoKS5zdHJpbmcoKSkpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggNjI2NjljOGJh
MTk4YmJmYTU0ZTU0MzA0MWVmMmUzOTMxMTNhMjNkNS4uN2VjMDdkOTE1NzQ5ZDE0MTEyMmQ0MGQz
N2NkYzExZWRkNTFhZDFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNw
cApAQCAtNDE3LDExICs0MTcsMTEgQEAgdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwKIAogUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5bGVkRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBpZiAoIWF0dHJpYnV0ZU1hcCgpKQorICAgIGlm
ICghaGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICBRdWFsaWZpZWROYW1lIGF0dHJpYnV0ZU5hbWUobnVsbEF0b20sIG5hbWUsIG51bGxBdG9tKTsK
LSAgICBBdHRyaWJ1dGUqIGF0dHIgPSBhdHRyaWJ1dGVNYXAoKS0+Z2V0QXR0cmlidXRlSXRlbShh
dHRyaWJ1dGVOYW1lKTsKKyAgICBBdHRyaWJ1dGUqIGF0dHIgPSBnZXRBdHRyaWJ1dGVJdGVtKGF0
dHJpYnV0ZU5hbWUpOwogICAgIGlmICghYXR0ciB8fCAhYXR0ci0+aXNNYXBwZWRBdHRyaWJ1dGUo
KSB8fCAhYXR0ci0+bWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4IDI4MzU4M2Q3ODNh
ZmE2ZWYxMGVhNzc5MmNiMjA5Y2Q1MTM0MzM1Y2YuLjE1NGI2N2U5MmQzMmM3ZDE3NmJjYjgxMDkw
ZThkZjQxOThiNGIwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0
aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcApAQCAt
MjksNyArMjksNiBAQAogI2luY2x1ZGUgIlhQYXRoRnVuY3Rpb25zLmgiCiAKICNpbmNsdWRlICJF
bGVtZW50LmgiCi0jaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVkZSAiWE1MTmFt
ZXMuaCIKQEAgLTU5Miw4ICs1OTEsOSBAQCBWYWx1ZSBGdW5MYW5nOjpldmFsdWF0ZSgpIGNvbnN0
CiAgICAgTm9kZSogbm9kZSA9IGV2YWx1YXRpb25Db250ZXh0KCkubm9kZS5nZXQoKTsKICAgICB3
aGlsZSAobm9kZSkgewogICAgICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAg
ICAgICAgICBpZiAoTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gdG9FbGVtZW50KG5vZGUpLT51
cGRhdGVkQXR0cmlidXRlcygpKQotICAgICAgICAgICAgICAgIGxhbmd1YWdlQXR0cmlidXRlID0g
YXR0cmlidXRlcy0+Z2V0QXR0cmlidXRlSXRlbShYTUxOYW1lczo6bGFuZ0F0dHIpOworICAgICAg
ICAgICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudChub2RlKTsKKyAgICAgICAgICAgIGlm
IChlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCisgICAgICAgICAgICAgICAgbGFuZ3VhZ2VBdHRy
aWJ1dGUgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGVJdGVtKFhNTE5hbWVzOjpsYW5nQXR0cik7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGxhbmd1YWdlQXR0cmlidXRlKQogICAgICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwCmluZGV4IDhlZWZjNTczZmY0NDc5NDI1
MjFmYmQwNzdhZGYxNTIxZDJhMzlhZjcuLjY4ODFkMzg1NTU1NTI5OWViNDRhODE0ZWNkNGIyNzcw
MGMyMWE0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwCkBAIC0yMTMsMTMgKzIx
MywxMyBAQCB2b2lkIE5vZGVTZXQ6OnRyYXZlcnNhbFNvcnQoKSBjb25zdAogICAgICAgICBpZiAo
IWNvbnRhaW5zQXR0cmlidXRlTm9kZXMgfHwgIW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IHRvRWxl
bWVudChuKS0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICAgICAgaWYgKCFhdHRyaWJ1dGVzKQor
ICAgICAgICBFbGVtZW50KiBlID0gdG9FbGVtZW50KG4pOworICAgICAgICBpZiAoIWUtPmhhc0F0
dHJpYnV0ZXMoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZUNvdW50ID0gYXR0cmlidXRlcy0+bGVuZ3RoKCk7CisgICAgICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZUNvdW50ID0gZS0+YXR0cmlidXRlQ291bnQoKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGF0dHJpYnV0ZUNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIEF0dHIqIGF0
dHJpYnV0ZSA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0ZW0oaSktPmF0dHIoKTsKKyAgICAgICAg
ICAgIEF0dHIqIGF0dHJpYnV0ZSA9IGUtPmF0dHJpYnV0ZUl0ZW0oaSktPmF0dHIoKTsKICAgICAg
ICAgICAgIGlmIChhdHRyaWJ1dGUgJiYgbm9kZXMuY29udGFpbnMoYXR0cmlidXRlKSkKICAgICAg
ICAgICAgICAgICBzb3J0ZWROb2Rlcy5hcHBlbmQoYXR0cmlidXRlKTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFBhdGhTdGVwLmNwcAppbmRleCAxMmYzOTRmMmNhMGI0NDU2YTgxZDEwODk4M2I3OTI0
ZDVjNGQ4NzVkLi5mZjdlNjg1ZDkxMTczN2ViY2QxZGYyMTkzZWVjMzE3OTM5ZmNlNGQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhTdGVwLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkF0dHIu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRl
ICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCiAjaW5jbHVkZSAiWFBh
dGhQYXJzZXIuaCIKICNpbmNsdWRlICJYUGF0aFV0aWwuaCIKQEAgLTM0MywxMiArMzQyLDExIEBA
IHZvaWQgU3RlcDo6bm9kZXNJbkF4aXMoTm9kZSogY29udGV4dCwgTm9kZVNldCYgbm9kZXMpIGNv
bnN0CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBOYW1lZE5vZGVNYXAqIGF0dHJzID0gY29udGV4dEVsZW1lbnQtPnVwZGF0
ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgICAgICBpZiAoIWF0dHJzKQorICAgICAgICAgICAgaWYg
KCFjb250ZXh0RWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJzLT5sZW5ndGgo
KTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEF0dHI+IGF0dHIgPSBhdHRycy0+YXR0
cmlidXRlSXRlbShpKS0+Y3JlYXRlQXR0cklmTmVlZGVkKHN0YXRpY19jYXN0PEVsZW1lbnQqPihj
b250ZXh0KSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29udGV4dEVs
ZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7ICsraSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxB
dHRyPiBhdHRyID0gY29udGV4dEVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSktPmNyZWF0ZUF0dHJJ
Zk5lZWRlZChzdGF0aWNfY2FzdDxFbGVtZW50Kj4oY29udGV4dCkpOwogICAgICAgICAgICAgICAg
IGlmIChub2RlTWF0Y2hlcyhhdHRyLmdldCgpLCBBdHRyaWJ1dGVBeGlzLCBtX25vZGVUZXN0KSkK
ICAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGF0dHIucmVsZWFzZSgpKTsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCA0ZTFkNDllZWZkMDRiZmVmNjg2ZTBhMmM1Y2UyYjYw
YzFkOGQ4N2MwLi4zYTM2ZDk4ZTEyNTZjNGRkZWQ1Nzc2YWVmMDYyNDYyMTY3ZjAzOTUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1s
Mi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwCkBAIC01OTksOSArNTk5LDkgQEAgWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3Vt
ZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBwYXJlbnQKIAog
ICAgIGZvciAoOyAhZWxlbVN0YWNrLmlzRW1wdHkoKTsgZWxlbVN0YWNrLnJlbW92ZUxhc3QoKSkg
ewogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbVN0YWNrLmxhc3QoKTsKLSAgICAgICAg
aWYgKE5hbWVkTm9kZU1hcCogYXR0cnMgPSBlbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpKSB7
Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cnMtPmxlbmd0aCgpOyBp
KyspIHsKLSAgICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBhdHRycy0+YXR0cmlidXRl
SXRlbShpKTsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7
IGkrKykgeworICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IGVsZW1lbnQtPmF0dHJp
YnV0ZUl0ZW0oaSk7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHItPmxvY2FsTmFtZSgpID09IHht
bG5zQXRvbSkKICAgICAgICAgICAgICAgICAgICAgbV9kZWZhdWx0TmFtZXNwYWNlVVJJID0gYXR0
ci0+dmFsdWUoKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRyLT5wcmVmaXgoKSA9PSB4
bWxuc0F0b20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRyZWVC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3Bw
CmluZGV4IDhkZTFhMDgxN2E0ZTRkZjFiYThhODA4YWM5Mzk2NzVhN2FlYTAzMzUuLjBjMmIyZDZh
MGM3OWY0OGNiNmZkM2Y0NzAyNjZkZmU4OTFjYjhiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC04MCw5ICs4MCw5IEBAIFhNTFRyZWVCdWls
ZGVyOjpYTUxUcmVlQnVpbGRlcihOZXdYTUxEb2N1bWVudFBhcnNlciogcGFyc2VyLCBEb2N1bWVu
dEZyYWdtZW50KiBmCiAKICAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQ7ICFub2RlU3RhY2suaXNF
bXB0eSgpOyBub2RlU3RhY2sucmVtb3ZlTGFzdCgpKSB7CiAgICAgICAgIGVsZW1lbnQgPSBub2Rl
U3RhY2subGFzdCgpOwotICAgICAgICBpZiAoTmFtZWROb2RlTWFwKiBhdHRycyA9IGVsZW1lbnQt
PnVwZGF0ZWRBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYXR0cnMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0
dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmhhc0F0
dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbGVtZW50
LT5hdHRyaWJ1dGVDb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0
dHIgPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgICAgIGlmIChhdHRy
LT5sb2NhbE5hbWUoKSA9PSB4bWxuc0F0b20pCiAgICAgICAgICAgICAgICAgICAgIHN0YWNrSXRl
bS5zZXROYW1lc3BhY2VVUkkoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoYXR0ci0+cHJlZml4KCkgPT0geG1sbnNBdG9tKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5jcHAKaW5kZXggZGEwZTMyNTU1ZWM3
Y2I4NDM4YWI4MDIzYTk4YmI2MmNlZWViNTNiNS4uY2EwNTgzNDg4OTBmZjEzMzA2NGUxYzA4OTgw
NzA2MGY3YjA4OTNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UGFnZVNlcmlhbGl6ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJQYWdlU2VyaWFsaXplckltcGwuY3BwCkBAIC0zMDcsMTMgKzMwNywxMiBAQCB2b2lkIFdlYlBh
Z2VTZXJpYWxpemVySW1wbDo6b3BlblRhZ1RvU3RyaW5nKEVsZW1lbnQqIGVsZW1lbnQsCiAgICAg
Ly8gQWRkIG9wZW4gdGFnCiAgICAgcmVzdWx0ICs9ICI8IiArIGVsZW1lbnQtPm5vZGVOYW1lKCku
bG93ZXIoKTsKICAgICAvLyBHbyB0aHJvdWdoIGFsbCBhdHRyaWJ1dGVzIGFuZCBzZXJpYWxpemUg
dGhlbS4KLSAgICBjb25zdCBOYW1lZE5vZGVNYXAgKmF0dHJNYXAgPSBlbGVtZW50LT51cGRhdGVk
QXR0cmlidXRlcygpOwotICAgIGlmIChhdHRyTWFwKSB7Ci0gICAgICAgIHVuc2lnbmVkIG51bUF0
dHJzID0gYXR0ck1hcC0+bGVuZ3RoKCk7CisgICAgaWYgKGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMo
KSkgeworICAgICAgICB1bnNpZ25lZCBudW1BdHRycyA9IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50
KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BdHRyczsgaSsrKSB7CiAg
ICAgICAgICAgICByZXN1bHQgKz0gIiAiOwogICAgICAgICAgICAgLy8gQWRkIGF0dHJpYnV0ZSBw
YWlyCi0gICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUgKmF0dHJpYnV0ZSA9IGF0dHJNYXAtPmF0
dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUgKmF0dHJpYnV0ZSA9
IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgICAgICByZXN1bHQgKz0gYXR0cmli
dXRlLT5uYW1lKCkudG9TdHJpbmcoKTsKICAgICAgICAgICAgIHJlc3VsdCArPSAiPVwiIjsKICAg
ICAgICAgICAgIGlmICghYXR0cmlidXRlLT52YWx1ZSgpLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYmVsZW1lbnQuY3BwCmluZGV4IDBkODVkYTkyZTY3NTk4NDM3ODA4NzA4NDg0MTdi
ODg2N2Y1MjU2MjkuLjE3OGM3MGU1Yjc3ODgyN2I3NTAzYzg3OTZjMzUwNjc3NzQ1MjQ3NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAKQEAgLTUwMywxMiArNTAzLDExIEBAIFFT
dHJpbmdMaXN0IFFXZWJFbGVtZW50OjphdHRyaWJ1dGVOYW1lcyhjb25zdCBRU3RyaW5nJiBuYW1l
c3BhY2VVcmkpIGNvbnN0CiAgICAgICAgIHJldHVybiBRU3RyaW5nTGlzdCgpOwogCiAgICAgUVN0
cmluZ0xpc3QgYXR0cmlidXRlTmFtZUxpc3Q7Ci0gICAgY29uc3QgTmFtZWROb2RlTWFwKiBjb25z
dCBhdHRycyA9IG1fZWxlbWVudC0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAoYXR0cnMp
IHsKKyAgICBpZiAobV9lbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpIHsKICAgICAgICAgY29uc3Qg
U3RyaW5nIG5hbWVzcGFjZVVyaVN0cmluZyhuYW1lc3BhY2VVcmkpOyAvLyBjb252ZXJ0IFFTdHJp
bmcgLT4gU3RyaW5nIG9uY2UKLSAgICAgICAgY29uc3QgdW5zaWduZWQgYXR0cnNDb3VudCA9IGF0
dHJzLT5sZW5ndGgoKTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgYXR0cnNDb3VudCA9IG1fZWxl
bWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGF0dHJzQ291bnQ7ICsraSkgewotICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlKiBjb25zdCBh
dHRyaWJ1dGUgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgICAgIGNvbnN0IEF0
dHJpYnV0ZSogY29uc3QgYXR0cmlidXRlID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwog
ICAgICAgICAgICAgaWYgKG5hbWVzcGFjZVVyaVN0cmluZyA9PSBhdHRyaWJ1dGUtPm5hbWVzcGFj
ZVVSSSgpKQogICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWVMaXN0LmFwcGVuZChhdHRyaWJ1
dGUtPmxvY2FsTmFtZSgpKTsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125541</attachid>
            <date>2012-02-05 16:30:51 -0800</date>
            <delta_ts>2012-02-06 06:23:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77800-20120205213048.patch</filename>
            <type>text/plain</type>
            <size>50042</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM4MDFkZjkxOGU0YWNm
MTI4Mzk4MTM2NjAxZDQzNWVlNDk4MjQzNy4uMGJkZjRlZWMxMGJlMjRmZTU1MjM5ZTVlMDA1NTkw
ZjZlNmQ1YzI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTAyLTA1ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgUHJvdmlkZSBtb3JlIGF0dHJpYnV0ZSBtZXRob2RzIGluIEVsZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHRoZSBj
bGllbnRzIG9mIE5hbWVkTm9kZU1hcC4gVGhpcyB3aWxsIG1ha2UgZWFzaWVyIHRvIGNoYW5nZSB0
aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2Ygb3VyIGF0dHJpYnV0ZSBzdG9yYWdlLiBUaGUg
Y2xpZW50cyBub3cgdXNlIEVsZW1lbnQgbWV0aG9kcworICAgICAgICB0aGF0IGV4cG9zZSBBdHRy
aWJ1dGUqIGFjY2Vzc29ycy4KKworICAgICAgICBJbnN0ZWFkIG9mIGNoZWNraW5nIHRoZSBleGlz
dGVuY2Ugb2YgTmFtZWROb2RlTWFwLCBjbGllbnRzIGNhbiBjYWxsCisgICAgICAgIGhhc0F0dHJp
YnV0ZXMoKSBvciBoYXNBdHRyaWJ1dGVzV2l0aG91dFVwZGF0ZSgpICh0aGF0IHNraXBzIHVwZGF0
aW5nIGludmFsaWQKKyAgICAgICAgc3R5bGUgb3IgYW5pbWF0aW9uIHN2ZyBhdHRyaWJ1dGVzKS4K
KworICAgICAgICBJZiB0aGVyZSBhcmUgYXR0cmlidXRlcywgdGhleSBjYW4gYmUgYWNjZXNzZWQg
YnkgaW5kZXggdmlhIGF0dHJpYnV0ZUNvdW50KCkgLworICAgICAgICBhdHRyaWJ1dGVJdGVtKCks
IGFzIHdlbGwgYXMgYnkgUXVhbGlmaWVkTmFtZS4gVGhvc2UgYWNjZXNzb3JzIGFzc3VtZSB0aGVy
ZSBhcmUgYW4KKyAgICAgICAgYXR0cmlidXRlIHN0b3JhZ2UuCisKKyAgICAgICAgKiBjc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFueUF0dHJpYnV0ZU1hdGNoZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKToK
KyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrRXhhY3RBdHRyaWJ1dGUpOgorICAgICAgICAqIGRvbS9EYXRhc2V0
RE9NU3RyaW5nTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6
OmdldE5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6Oml0ZW0p
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YXNldERPTVN0cmluZ01hcDo6Y29udGFpbnMpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1w
b3J0Tm9kZSk6IHVzZSBzZXRBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoKSBpbnN0ZWFkIG9mIG1hbnVh
bGx5IGNvcHlpbmcuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRlc0Zyb21FbGVtZW50V2l0
aG91dFVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6Omhhc0F0dHJpYnV0ZXNXaXRob3V0VXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmF0dHJpYnV0ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0
ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0QXR0cmlidXRlSXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRGVmYXVsdE5hbWVzcGFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpsb29rdXBOYW1lc3BhY2VVUkkpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6bG9va3VwTmFtZXNwYWNlUHJlZml4KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc05vQXR0cmlidXRlT3JPbmx5
U3R5bGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNFbXB0eUZvbnRUYWcpOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRp
bmdTdHlsZTo6ZWxlbWVudElzU3R5bGVkU3Bhbk9ySFRNTEVxdWl2YWxlbnQpOgorICAgICAgICAq
IGVkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpoaWdoZXN0VmlzdWFsbHlFcXVpdmFsZW50RGl2QmVsb3dSb290KToKKyAgICAgICAg
KiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1
cEFjY3VtdWxhdG9yOjphcHBlbmRFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wbGV0ZVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwv
SFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50
OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MT2JqZWN0RWxlbWVudDo6cGFyYW1ldGVyc0ZvclBsdWdpbik6CisgICAgICAgICogaHRtbC9I
VE1MUGFyYW1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJhbUVsZW1lbnQ6
OmlzVVJMQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0Vs
ZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmF0dHJpYnV0ZUNvdW50V2l0aG91dFVw
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0Ojp0cnlU
b0Vuc3VyZU5vYWhzQXJrQ29uZGl0aW9uUXVpY2tseSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Rm9ybWF0dGluZ0VsZW1lbnRMaXN0OjplbnN1cmVOb2Foc0Fya0NvbmRpdGlvbik6IFN0b3JlIEF0
dHJpYnV0ZSoKKyAgICAgICAgdG8gYXZvaWQgbG9va2luZyB1cCB0aGUgcmlnaHQgZWxlbWVudCBh
Z2FpbiBieSBuYW1lLgorICAgICAgICAqIGluc3BlY3Rvci9ET01FZGl0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRWRpdG9yOjppbm5lclBhdGNoTm9kZSk6IHVzZSBzZXRBdHRyaWJ1dGVz
RnJvbUVsZW1lbnRXaXRob3V0VXBkYXRlKCkKKyAgICAgICAgaW5zdGVhZCBvZiBtYW51YWxseSBj
b3B5aW5nLgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpjcmVhdGVEaWdlc3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2hh
cnNldFNwZWNpZnlpbmdOb2RlKToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRy
aWJ1dGUpOgorICAgICAgICAqIHhtbC9YUGF0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYUGF0aDo6RnVuTGFuZzo6ZXZhbHVhdGUpOgorICAgICAgICAqIHhtbC9YUGF0aE5vZGVT
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5vZGVTZXQ6OnRyYXZlcnNhbFNvcnQp
OgorICAgICAgICAqIHhtbC9YUGF0aFN0ZXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6
OlN0ZXA6Om5vZGVzSW5BeGlzKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6WE1M
RG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZUJ1aWxkZXI6OlhNTFRyZWVCdWlsZGVyKToKKwog
MjAxMi0wMi0wNSAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIG1hcHBlZCB2cyBub24tbWFwcGVkIGF0dHJpYnV0ZSBkaXN0aW5jdGlvbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNGZiYWZmZGRjZmRlMTJlMmJkODA1MGY0Yjdl
NmNjODQwMmQwMGZmNy4uY2RjYzM5NzZlYmIyMGY5NDcyYjkyMGNlMDhmMzAzMjA2MzMzZTM4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMi0wNSAg
Q2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eu
b3JnPgorCisgICAgICAgIFByb3ZpZGUgbW9yZSBhdHRyaWJ1dGUgbWV0aG9kcyBpbiBFbGVtZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzgwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dl
YlBhZ2VTZXJpYWxpemVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VTZXJpYWxp
emVySW1wbDo6b3BlblRhZ1RvU3RyaW5nKTogYWNjZXNzIGF0dHJpYnV0ZXMgdmlhIEVsZW1lbnQg
aW50ZXJmYWNlLgorCiAyMDEyLTAyLTA0ICBTaGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIHN1cHBvcnQgdG8gZm9yY2UgZnVsbCBk
YW1hZ2UgaW4gQ0NEYW1hZ2VUcmFja2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGQ5NTIxMjBlN2EzMGQ4
YTM4YWExMWEyZWViNmRlNmYxNDhmM2ZhMjAuLmI2OTFlYWQ0MGQyNTE3MzUzYWU5M2I2YTQ3YjI2
OGMxM2RiNjAzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDItMDUg
IENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3Nh
Lm9yZz4KKworICAgICAgICBQcm92aWRlIG1vcmUgYXR0cmlidXRlIG1ldGhvZHMgaW4gRWxlbWVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4MDAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFwaS9x
d2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6YXR0cmlidXRlTmFtZXMpOiBh
Y2Nlc3MgYXR0cmlidXRlcyB2aWEgRWxlbWVudCBpbnRlcmZhY2UuCisKIDIwMTItMDItMDMgIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbi5oLy5jcHAgdG8gU3R5bGVQcm9wZXJ0eVNldC5oLy5jcHAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDU4Njc3NDY0N2EwODdkM2Ew
YzJkN2YyODJjYjNiYjAzMzZmOTQ0MDUuLmJjODI0ZTFjMDdkMWM3YTdiMjQ1NTFmNWYxNWRhYzNi
N2UwZmQyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC02NzEs
MTAgKzY3MSwxMSBAQCBzdGF0aWMgYm9vbCBhdHRyaWJ1dGVWYWx1ZU1hdGNoZXMoQXR0cmlidXRl
KiBhdHRyaWJ1dGVJdGVtLCBDU1NTZWxlY3Rvcjo6TWF0Y2ggbQogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGF0aWMgYm9vbCBhbnlBdHRyaWJ1dGVNYXRjaGVzKE5hbWVkTm9kZU1hcCogYXR0cmli
dXRlcywgQ1NTU2VsZWN0b3I6Ok1hdGNoIG1hdGNoLCBjb25zdCBRdWFsaWZpZWROYW1lJiBzZWxl
Y3RvckF0dHIsIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0b3JWYWx1ZSwgYm9vbCBjYXNlU2Vu
c2l0aXZlKQorc3RhdGljIGJvb2wgYW55QXR0cmlidXRlTWF0Y2hlcyhFbGVtZW50KiBlbGVtZW50
LCBDU1NTZWxlY3Rvcjo6TWF0Y2ggbWF0Y2gsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9y
QXR0ciwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3RvclZhbHVlLCBib29sIGNhc2VTZW5zaXRp
dmUpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLT5sZW5ndGgoKTsg
KytpKSB7Ci0gICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlSXRlbSA9IGF0dHJpYnV0ZXMtPmF0
dHJpYnV0ZUl0ZW0oaSk7CisgICAgQVNTRVJUKGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXNXaXRob3V0
VXBkYXRlKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudC0+YXR0cmlidXRl
Q291bnQoKTsgKytpKSB7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlSXRlbSA9IGVsZW1l
bnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAKICAgICAgICAgaWYgKCFTZWxlY3RvckNoZWNrZXI6OmF0
dHJpYnV0ZU5hbWVNYXRjaGVzKGF0dHJpYnV0ZUl0ZW0sIHNlbGVjdG9yQXR0cikpCiAgICAgICAg
ICAgICBjb250aW51ZTsKQEAgLTcwMSwxMyArNzAyLDEyIEBAIGJvb2wgU2VsZWN0b3JDaGVja2Vy
OjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGUsIFBzZXVkb0lk
JiBkCiAgICAgaWYgKHNlbC0+aXNBdHRyaWJ1dGVTZWxlY3RvcigpKSB7CiAgICAgICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHIgPSBzZWwtPmF0dHJpYnV0ZSgpOwogCi0gICAgICAgIE5hbWVk
Tm9kZU1hcCogYXR0cmlidXRlcyA9IGUtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIGlm
ICghYXR0cmlidXRlcykKKyAgICAgICAgaWYgKCFlLT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gIW1fZG9j
dW1lbnRJc0hUTUwgfHwgIWh0bWxBdHRyaWJ1dGVIYXNDYXNlSW5zZW5zaXRpdmVWYWx1ZShhdHRy
KTsKIAotICAgICAgICBpZiAoIWFueUF0dHJpYnV0ZU1hdGNoZXMoYXR0cmlidXRlcywgc3RhdGlj
X2Nhc3Q8Q1NTU2VsZWN0b3I6Ok1hdGNoPihzZWwtPm1fbWF0Y2gpLCBhdHRyLCBzZWwtPnZhbHVl
KCksIGNhc2VTZW5zaXRpdmUpKQorICAgICAgICBpZiAoIWFueUF0dHJpYnV0ZU1hdGNoZXMoZSwg
c3RhdGljX2Nhc3Q8Q1NTU2VsZWN0b3I6Ok1hdGNoPihzZWwtPm1fbWF0Y2gpLCBhdHRyLCBzZWwt
PnZhbHVlKCksIGNhc2VTZW5zaXRpdmUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDNmOTQ2OWU1ZDc5YjA5
YzlhYjg0MmU3NDJkODVmYWQ3MTdiOTQ3MWYuLjQ4NzI4NDczNjRmNmM1NTA2MmViMjU2N2M5YmRh
Y2YxZDM4MWI4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNr
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTE4NSwx
MiArMTg1LDExIEBAIGlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6YXR0cmlidXRlTmFtZU1h
dGNoZXMoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUsIGNvCiAKIGlubGluZSBib29sIFNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tFeGFjdEF0dHJpYnV0ZShjb25zdCBFbGVtZW50KiBlbGVtZW50LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBzZWxlY3RvckF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZ0ltcGwqIHZhbHVlKQogewotICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFwID0gZWxl
bWVudC0+YXR0cmlidXRlTWFwKCk7Ci0gICAgaWYgKCFhdHRyaWJ1dGVNYXApCisgICAgaWYgKCFl
bGVtZW50LT5oYXNBdHRyaWJ1dGVzV2l0aG91dFVwZGF0ZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgdW5zaWduZWQgc2l6ZSA9IGF0dHJpYnV0ZU1hcC0+bGVuZ3RoKCk7CisgICAgdW5z
aWduZWQgc2l6ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9
IGF0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgQXR0cmlidXRlKiBhdHRy
aWJ1dGUgPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICBpZiAoYXR0cmlidXRl
TmFtZU1hdGNoZXMoYXR0cmlidXRlLCBzZWxlY3RvckF0dHJpYnV0ZU5hbWUpICYmICghdmFsdWUg
fHwgYXR0cmlidXRlLT52YWx1ZSgpLmltcGwoKSA9PSB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERP
TVN0cmluZ01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5j
cHAKaW5kZXggZGZmMGFkNzUwNzIwNjdlNTU2Y2UxZTI4NjE0NTEyNDI3ZTEzMGMwMy4uMzgyMDIy
ZWNkYzNhMGM0ODRjMTJjOTk1MjQxMzQ2OWY4YTVlYTkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkF0
dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCi0jaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE0MiwyNyArMTQx
LDI3IEBAIHZvaWQgRGF0YXNldERPTVN0cmluZ01hcDo6ZGVyZWYoKQogCiB2b2lkIERhdGFzZXRE
T01TdHJpbmdNYXA6OmdldE5hbWVzKFZlY3RvcjxTdHJpbmc+JiBuYW1lcykKIHsKLSAgICBOYW1l
ZE5vZGVNYXAqIGF0dHJpYnV0ZU1hcCA9IG1fZWxlbWVudC0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsK
LSAgICBpZiAoYXR0cmlidXRlTWFwKSB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGF0dHJp
YnV0ZU1hcC0+bGVuZ3RoKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7IGkrKykgewotICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVN
YXAtPmF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZEF0dHJpYnV0ZU5h
bWUoYXR0cmlidXRlLT5sb2NhbE5hbWUoKSkpCi0gICAgICAgICAgICAgICAgbmFtZXMuYXBwZW5k
KGNvbnZlcnRBdHRyaWJ1dGVOYW1lVG9Qcm9wZXJ0eU5hbWUoYXR0cmlidXRlLT5sb2NhbE5hbWUo
KSkpOwotICAgICAgICB9CisgICAgaWYgKCFtX2VsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gbV9lbGVtZW50LT5hdHRyaWJ1
dGVDb3VudCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewor
ICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IG1fZWxlbWVudC0+YXR0cmlidXRlSXRlbShp
KTsKKyAgICAgICAgaWYgKGlzVmFsaWRBdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZS0+bG9jYWxOYW1l
KCkpKQorICAgICAgICAgICAgbmFtZXMuYXBwZW5kKGNvbnZlcnRBdHRyaWJ1dGVOYW1lVG9Qcm9w
ZXJ0eU5hbWUoYXR0cmlidXRlLT5sb2NhbE5hbWUoKSkpOwogICAgIH0KIH0KIAogU3RyaW5nIERh
dGFzZXRET01TdHJpbmdNYXA6Oml0ZW0oY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIE5hbWVk
Tm9kZU1hcCogYXR0cmlidXRlTWFwID0gbV9lbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwot
ICAgIGlmIChhdHRyaWJ1dGVNYXApIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmli
dXRlTWFwLT5sZW5ndGgoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7Ci0gICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZU1h
cC0+YXR0cmlidXRlSXRlbShpKTsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWVNYXRjaGVz
QXR0cmlidXRlTmFtZShuYW1lLCBhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gYXR0cmlidXRlLT52YWx1ZSgpOwotICAgICAgICB9CisgICAgaWYgKCFtX2Vs
ZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAg
dW5zaWduZWQgbGVuZ3RoID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBBdHRyaWJ1dGUqIGF0
dHJpYnV0ZSA9IG1fZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYgKHByb3Bl
cnR5TmFtZU1hdGNoZXNBdHRyaWJ1dGVOYW1lKG5hbWUsIGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkp
KQorICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gU3RyaW5nKCk7CkBAIC0xNzAsMTUgKzE2OSwxNiBAQCBTdHJpbmcgRGF0YXNldERPTVN0
cmluZ01hcDo6aXRlbShjb25zdCBTdHJpbmcmIG5hbWUpCiAKIGJvb2wgRGF0YXNldERPTVN0cmlu
Z01hcDo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIE5hbWVkTm9kZU1hcCog
YXR0cmlidXRlTWFwID0gbV9lbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmIChh
dHRyaWJ1dGVNYXApIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmlidXRlTWFwLT5s
ZW5ndGgoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
Ci0gICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZU1hcC0+YXR0cmli
dXRlSXRlbShpKTsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWVNYXRjaGVzQXR0cmlidXRl
TmFtZShuYW1lLCBhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgIGlmICghbV9lbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fZWxlbWVu
dC0+YXR0cmlidXRlQ291bnQoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspIHsKKyAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBtX2VsZW1lbnQtPmF0dHJp
YnV0ZUl0ZW0oaSk7CisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWVNYXRjaGVzQXR0cmlidXRlTmFt
ZShuYW1lLCBhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggYjFlOGFjNDFkMTczNzU1YjEzNjg5ZDlkN2YxYWNhMzEzY2I2YWQ2OC4uYmI0YmRhMjg5
MzBkZTQ2NDBmZDc1OTkxNjA1YTRiM2UwYjU0MjA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC04NTAsMTUgKzg1MCw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmltcG9ydE5v
ZGUoTm9kZSogaW1wb3J0ZWROb2RlLCBib29sIGRlZXAsIEV4Y2VwdGlvbkNvCiAgICAgICAgIGlm
IChlYykKICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIE5hbWVkTm9kZU1hcCogYXR0
cnMgPSBvbGRFbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgICAgICBpZiAoYXR0cnMp
IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGF0dHJzLT5sZW5ndGgoKTsKLSAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICAg
ICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IGF0dHJzLT5hdHRyaWJ1dGVJdGVtKGkpOwotICAgICAg
ICAgICAgICAgIG5ld0VsZW1lbnQtPnNldEF0dHJpYnV0ZShhdHRyLT5uYW1lKCksIGF0dHItPnZh
bHVlKCkuaW1wbCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCisgICAgICAgIG5ld0Vs
ZW1lbnQtPnNldEF0dHJpYnV0ZXNGcm9tRWxlbWVudCgqb2xkRWxlbWVudCk7CiAgICAgICAgIG5l
d0VsZW1lbnQtPmNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKG9sZEVsZW1lbnQpOwogCiAgICAg
ICAgIGlmIChkZWVwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBhYzI4MWM1NDEyYjBjOTQ2N2E3
NmE5NmY3ZjYyZTQxNzYzMDczZTgxLi45YzkxNThhODEyYTI2MDU1MTQzOWNkZTdhOWQwNTJhYjMx
MjVjYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTEzMCw2ICsxMzAsOSBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogICAgIGJvb2wgaGFzQXR0cmlidXRlcygpIGNvbnN0OworICAgIC8vIFRoaXMgdmFy
aWFudCB3aWxsIG5vdCB1cGRhdGUgdGhlIHBvdGVudGlhbGx5IGludmFsaWQgYXR0cmlidXRlcy4g
VG8gYmUgdXNlZCB3aGVuIG5vdCBpbnRlcmVzdGVkCisgICAgLy8gaW4gc3R5bGUgYXR0cmlidXRl
IG9yIG9uZSBvZiB0aGUgU1ZHIGFuaW1hdGlvbiBhdHRyaWJ1dGVzLgorICAgIGJvb2wgaGFzQXR0
cmlidXRlc1dpdGhvdXRVcGRhdGUoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzQXR0cmlidXRlKGNv
bnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgYm9vbCBoYXNBdHRyaWJ1dGVOUyhjb25zdCBT
dHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0OwpAQCAt
MTQ5LDYgKzE1MiwxMyBAQCBwdWJsaWM6CiAgICAgLy8gc28gdGhpcyBmdW5jdGlvbiBpcyBub3Qg
c3VpdGFibGUgZm9yIG5vbi1zdHlsZSB1c2VzLgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRG
b3JTdHlsZVJlc29sdXRpb24oKSBjb25zdDsKIAorICAgIC8vIEludGVybmFsIG1ldGhvZHMgdGhh
dCBhc3N1bWUgdGhlIGV4aXN0ZW5jZSBvZiBhdHRyaWJ1dGUgc3RvcmFnZSwgb25lIHNob3VsZCB1
c2UgaGFzQXR0cmlidXRlcygpCisgICAgLy8gYmVmb3JlIGNhbGxpbmcgdGhlbS4KKyAgICBzaXpl
X3QgYXR0cmlidXRlQ291bnQoKSBjb25zdDsKKyAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZUl0ZW0o
dW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CisgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUodW5z
aWduZWQgaW5kZXgpOworCiAgICAgdm9pZCBzY3JvbGxJbnRvVmlldyhib29sIGFsaWduVG9Ub3Ag
PSB0cnVlKTsKICAgICB2b2lkIHNjcm9sbEludG9WaWV3SWZOZWVkZWQoYm9vbCBjZW50ZXJJZk5l
ZWRlZCA9IHRydWUpOwogCkBAIC0yMzMsNiArMjQzLDcgQEAgcHVibGljOgogICAgIEVsZW1lbnRB
dHRyaWJ1dGVEYXRhKiBlbnN1cmVBdHRyaWJ1dGVEYXRhKCkgY29uc3QgeyByZXR1cm4gZW5zdXJl
VXBkYXRlZEF0dHJpYnV0ZXMoKS0+YXR0cmlidXRlRGF0YSgpOyB9CiAKICAgICB2b2lkIHNldEF0
dHJpYnV0ZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50Jik7CisgICAgdm9pZCBzZXRBdHRyaWJ1
dGVzRnJvbUVsZW1lbnRXaXRob3V0VXBkYXRlKGNvbnN0IEVsZW1lbnQmKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyhjb25zdCBFbGVtZW50KiBzb3VyY2Up
OwogCkBAIC01NDEsNiArNTUyLDEyIEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0
ZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JiBvdGhlcikKICAgICAgICAgZW5zdXJlVXBkYXRl
ZEF0dHJpYnV0ZXMoKS0+c2V0QXR0cmlidXRlcygqYXR0cmlidXRlTWFwKTsKIH0KIAoraW5saW5l
IHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlc0Zyb21FbGVtZW50V2l0aG91dFVwZGF0ZShjb25z
dCBFbGVtZW50JiBvdGhlcikKK3sKKyAgICBpZiAoTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAg
PSBvdGhlci5hdHRyaWJ1dGVNYXAoKSkKKyAgICAgICAgZW5zdXJlVXBkYXRlZEF0dHJpYnV0ZXMo
KS0+c2V0QXR0cmlidXRlcygqYXR0cmlidXRlTWFwKTsKK30KKwogaW5saW5lIHZvaWQgRWxlbWVu
dDo6dXBkYXRlTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3TmFtZSkKIHsKICAgICBpZiAoIWluRG9jdW1lbnQoKSkKQEAgLTU5Myw2ICs2MTAs
MTEgQEAgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6ZmFzdEdldEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogICAgIHJldHVybiBudWxsQXRvbTsKIH0KIAor
aW5saW5lIGJvb2wgRWxlbWVudDo6aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSBjb25zdAor
eworICAgIHJldHVybiBtX2F0dHJpYnV0ZU1hcCAmJiAhbV9hdHRyaWJ1dGVNYXAtPmlzRW1wdHko
KTsKK30KKwogaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6aWRGb3JTdHlsZVJl
c29sdXRpb24oKSBjb25zdAogewogICAgIEFTU0VSVChoYXNJRCgpKTsKQEAgLTYxOCw2ICs2NDAs
MzAgQEAgaW5saW5lIHZvaWQgRWxlbWVudDo6c2V0SWRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKICAgICBzZXRBdHRyaWJ1dGUoZG9jdW1lbnQoKS0+aWRBdHRyaWJ1dGVOYW1l
KCksIHZhbHVlKTsKIH0KIAoraW5saW5lIHNpemVfdCBFbGVtZW50OjphdHRyaWJ1dGVDb3VudCgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKG1fYXR0cmlidXRlTWFwKTsKKyAgICByZXR1cm4gbV9hdHRy
aWJ1dGVNYXAtPmxlbmd0aCgpOworfQorCitpbmxpbmUgQXR0cmlidXRlKiBFbGVtZW50OjphdHRy
aWJ1dGVJdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIEFTU0VSVChtX2F0dHJpYnV0
ZU1hcCk7CisgICAgcmV0dXJuIG1fYXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGluZGV4KTsK
K30KKworaW5saW5lIEF0dHJpYnV0ZSogRWxlbWVudDo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAoreworICAgIEFTU0VSVChtX2F0dHJpYnV0ZU1hcCk7
CisgICAgcmV0dXJuIG1fYXR0cmlidXRlTWFwLT5nZXRBdHRyaWJ1dGVJdGVtKG5hbWUpOworfQor
CitpbmxpbmUgdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUodW5zaWduZWQgaW5kZXgpCit7
CisgICAgQVNTRVJUKG1fYXR0cmlidXRlTWFwKTsKKyAgICBtX2F0dHJpYnV0ZU1hcC0+cmVtb3Zl
QXR0cmlidXRlKGluZGV4KTsKK30KKwogaW5saW5lIE5hbWVkTm9kZU1hcCogRWxlbWVudDo6ZW5z
dXJlQXR0cmlidXRlTWFwKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYXR0cmlidXRlTWFwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCmluZGV4IDQxNTVjNjQyMTk0YjdjZWZjMmJmZjgzNzgzNGE2NjE1MTM2ZDNhNjUu
LmZmZTY3YWJiMGI5MTQxYWExZjFhYzNlYzI4NTMzZTE3ZWI1ZmVkMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKQEAgLTE4MjIsOSArMTgyMiw5IEBAIGJvb2wgTm9kZTo6aXNEZWZhdWx0TmFtZXNwYWNlKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJTWF5YmVFbXB0eSkgY29uc3QKICAgICAgICAg
ICAgIGlmIChlbGVtLT5wcmVmaXgoKS5pc051bGwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZWxlbS0+bmFtZXNwYWNlVVJJKCkgPT0gbmFtZXNwYWNlVVJJOwogCi0gICAgICAgICAgICBpZiAo
TmFtZWROb2RlTWFwKiBhdHRycyA9IGVsZW0tPnVwZGF0ZWRBdHRyaWJ1dGVzKCkpIHsKLSAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cnMtPmxlbmd0aCgpOyBpKysp
IHsKLSAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyID0gYXR0cnMtPmF0dHJpYnV0
ZUl0ZW0oaSk7CisgICAgICAgICAgICBpZiAoZWxlbS0+aGFzQXR0cmlidXRlcygpKSB7CisgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW0tPmF0dHJpYnV0ZUNvdW50
KCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBlbGVtLT5h
dHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGF0dHItPmxvY2FsTmFtZSgpID09IHhtbG5zQXRvbSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBhdHRyLT52YWx1ZSgpID09IG5hbWVzcGFjZVVSSTsKQEAgLTE5MDgsOSAr
MTkwOCw5IEBAIFN0cmluZyBOb2RlOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nICZw
cmVmaXgpIGNvbnN0CiAgICAgICAgICAgICBpZiAoIWVsZW0tPm5hbWVzcGFjZVVSSSgpLmlzTnVs
bCgpICYmIGVsZW0tPnByZWZpeCgpID09IHByZWZpeCkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZWxlbS0+bmFtZXNwYWNlVVJJKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChOYW1l
ZE5vZGVNYXAqIGF0dHJzID0gZWxlbS0+dXBkYXRlZEF0dHJpYnV0ZXMoKSkgewotICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRycy0+bGVuZ3RoKCk7IGkrKykgewot
ICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUgKmF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRl
bShpKTsKKyAgICAgICAgICAgIGlmIChlbGVtLT5oYXNBdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbS0+YXR0cmlidXRlQ291bnQoKTsg
aSsrKSB7CisgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IGVsZW0tPmF0dHJp
YnV0ZUl0ZW0oaSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBp
ZiAoYXR0ci0+cHJlZml4KCkgPT0geG1sbnNBdG9tICYmIGF0dHItPmxvY2FsTmFtZSgpID09IHBy
ZWZpeCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1w
dHkoKSkKQEAgLTE5NjIsOSArMTk2MiwxMSBAQCBTdHJpbmcgTm9kZTo6bG9va3VwTmFtZXNwYWNl
UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyAmX25hbWVzcGFjZVVSSSwgY29uc3QgRWxlbQogICAg
IGlmIChvcmlnaW5hbEVsZW1lbnQtPmxvb2t1cE5hbWVzcGFjZVVSSShwcmVmaXgoKSkgPT0gX25h
bWVzcGFjZVVSSSkKICAgICAgICAgcmV0dXJuIHByZWZpeCgpOwogICAgIAotICAgIGlmIChOYW1l
ZE5vZGVNYXAqIGF0dHJzID0gdG9FbGVtZW50KHRoaXMpLT51cGRhdGVkQXR0cmlidXRlcygpKSB7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRycy0+bGVuZ3RoKCk7IGkrKykg
ewotICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0oaSk7
CisgICAgQVNTRVJUKGlzRWxlbWVudE5vZGUoKSk7CisgICAgY29uc3QgRWxlbWVudCogdGhpc0Vs
ZW1lbnQgPSB0b0VsZW1lbnQodGhpcyk7CisgICAgaWYgKHRoaXNFbGVtZW50LT5oYXNBdHRyaWJ1
dGVzKCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNFbGVtZW50LT5h
dHRyaWJ1dGVDb3VudCgpOyBpKyspIHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IHRo
aXNFbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBp
ZiAoYXR0ci0+cHJlZml4KCkgPT0geG1sbnNBdG9tICYmIGF0dHItPnZhbHVlKCkgPT0gX25hbWVz
cGFjZVVSSQogICAgICAgICAgICAgICAgICAgICAmJiBvcmlnaW5hbEVsZW1lbnQtPmxvb2t1cE5h
bWVzcGFjZVVSSShhdHRyLT5sb2NhbE5hbWUoKSkgPT0gX25hbWVzcGFjZVVSSSkKQEAgLTIxMDUs
MTcgKzIxMDcsMTcgQEAgdW5zaWduZWQgc2hvcnQgTm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRp
b24oTm9kZSogb3RoZXJOb2RlKQogICAgICAgICBjaGFpbjIuYXBwZW5kKGF0dHIyKTsKICAgICAK
ICAgICBpZiAoYXR0cjEgJiYgYXR0cjIgJiYgc3RhcnQxID09IHN0YXJ0MiAmJiBzdGFydDEpIHsK
LSAgICAgICAgLy8gV2UgYXJlIGNvbXBhcmluZyB0d28gYXR0cmlidXRlcyBvbiB0aGUgc2FtZSBu
b2RlLiAgQ3Jhd2wgb3VyIGF0dHJpYnV0ZSBtYXAKLSAgICAgICAgLy8gYW5kIHNlZSB3aGljaCBv
bmUgd2UgaGl0IGZpcnN0LgotICAgICAgICBOYW1lZE5vZGVNYXAqIG1hcCA9IGF0dHIxLT5vd25l
ckVsZW1lbnQoKS0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gbWFwLT5sZW5ndGgoKTsKKyAgICAgICAgLy8gV2UgYXJlIGNvbXBhcmluZyB0d28gYXR0cmli
dXRlcyBvbiB0aGUgc2FtZSBub2RlLiBDcmF3bCBvdXIgYXR0cmlidXRlIG1hcCBhbmQgc2VlIHdo
aWNoIG9uZSB3ZSBoaXQgZmlyc3QuCisgICAgICAgIEVsZW1lbnQqIG93bmVyMSA9IGF0dHIxLT5v
d25lckVsZW1lbnQoKTsKKyAgICAgICAgb3duZXIxLT51cGRhdGVkQXR0cmlidXRlcygpOyAvLyBG
b3JjZSB1cGRhdGUgaW52YWxpZCBhdHRyaWJ1dGVzLgorICAgICAgICB1bnNpZ25lZCBsZW5ndGgg
PSBvd25lcjEtPmF0dHJpYnV0ZUNvdW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICAgLy8gSWYgbmVpdGhlciBvZiB0aGUgdHdv
IGRldGVybWluaW5nIG5vZGVzIGlzIGEgY2hpbGQgbm9kZSBhbmQgbm9kZVR5cGUgaXMgdGhlIHNh
bWUgZm9yIGJvdGggZGV0ZXJtaW5pbmcgbm9kZXMsIHRoZW4gYW4gCiAgICAgICAgICAgICAvLyBp
bXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQgb3JkZXIgYmV0d2VlbiB0aGUgZGV0ZXJtaW5pbmcgbm9k
ZXMgaXMgcmV0dXJuZWQuIFRoaXMgb3JkZXIgaXMgc3RhYmxlIGFzIGxvbmcgYXMgbm8gbm9kZXMg
b2YKICAgICAgICAgICAgIC8vIHRoZSBzYW1lIG5vZGVUeXBlIGFyZSBpbnNlcnRlZCBpbnRvIG9y
IHJlbW92ZWQgZnJvbSB0aGUgZGlyZWN0IGNvbnRhaW5lci4gVGhpcyB3b3VsZCBiZSB0aGUgY2Fz
ZSwgZm9yIGV4YW1wbGUsIAogICAgICAgICAgICAgLy8gd2hlbiBjb21wYXJpbmcgdHdvIGF0dHJp
YnV0ZXMgb2YgdGhlIHNhbWUgZWxlbWVudCwgYW5kIGluc2VydGluZyBvciByZW1vdmluZyBhZGRp
dGlvbmFsIGF0dHJpYnV0ZXMgbWlnaHQgY2hhbmdlIAogICAgICAgICAgICAgLy8gdGhlIG9yZGVy
IGJldHdlZW4gZXhpc3RpbmcgYXR0cmlidXRlcy4KLSAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0
ciA9IG1hcC0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9
IG93bmVyMS0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgICAgIGlmIChhdHRyMS0+YXR0cigp
ID09IGF0dHIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIERPQ1VNRU5UX1BPU0lUSU9OX0lNUExF
TUVOVEFUSU9OX1NQRUNJRklDIHwgRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HOwogICAgICAg
ICAgICAgaWYgKGF0dHIyLT5hdHRyKCkgPT0gYXR0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggYTUxZGRkNWNmZWUyZjRjYWM1ZTA0ZDJlOWIx
MDkzN2QwYjRmYTczZi4uMWFkZGUxMGNmYzFlNTBlMmNhOThiMTZjYmM4OTIwMzViZjc2OGRjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTcz
LDggKzczLDcgQEAgYm9vbCBpc0xlZ2FjeUFwcGxlU3R5bGVTcGFuKGNvbnN0IE5vZGUgKm5vZGUp
CiBlbnVtIFNob3VsZFN0eWxlQXR0cmlidXRlQmVFbXB0eSB7IEFsbG93Tm9uRW1wdHlTdHlsZUF0
dHJpYnV0ZSwgU3R5bGVBdHRyaWJ1dGVTaG91bGRCZUVtcHR5IH07CiBzdGF0aWMgYm9vbCBoYXNO
b0F0dHJpYnV0ZU9yT25seVN0eWxlQXR0cmlidXRlKGNvbnN0IFN0eWxlZEVsZW1lbnQqIGVsZW1l
bnQsIFNob3VsZFN0eWxlQXR0cmlidXRlQmVFbXB0eSBzaG91bGRTdHlsZUF0dHJpYnV0ZUJlRW1w
dHkpCiB7Ci0gICAgTmFtZWROb2RlTWFwKiBtYXAgPSBlbGVtZW50LT51cGRhdGVkQXR0cmlidXRl
cygpOwotICAgIGlmICghbWFwIHx8IG1hcC0+aXNFbXB0eSgpKQorICAgIGlmICghZWxlbWVudC0+
aGFzQXR0cmlidXRlcygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHVuc2lnbmVkIG1h
dGNoZWRBdHRyaWJ1dGVzID0gMDsKQEAgLTg0LDggKzgzLDggQEAgc3RhdGljIGJvb2wgaGFzTm9B
dHRyaWJ1dGVPck9ubHlTdHlsZUF0dHJpYnV0ZShjb25zdCBTdHlsZWRFbGVtZW50KiBlbGVtZW50
LCBTaG8KICAgICAgICAgfHwgIWVsZW1lbnQtPmlubGluZVN0eWxlRGVjbCgpIHx8IGVsZW1lbnQt
PmlubGluZVN0eWxlRGVjbCgpLT5pc0VtcHR5KCkpKQogICAgICAgICBtYXRjaGVkQXR0cmlidXRl
cysrOwogCi0gICAgQVNTRVJUKG1hdGNoZWRBdHRyaWJ1dGVzIDw9IG1hcC0+bGVuZ3RoKCkpOwot
ICAgIHJldHVybiBtYXRjaGVkQXR0cmlidXRlcyA9PSBtYXAtPmxlbmd0aCgpOworICAgIEFTU0VS
VChtYXRjaGVkQXR0cmlidXRlcyA8PSBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpKTsKKyAgICBy
ZXR1cm4gbWF0Y2hlZEF0dHJpYnV0ZXMgPT0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKIH0K
IAogYm9vbCBpc1N0eWxlU3Bhbk9yU3BhbldpdGhPbmx5U3R5bGVBdHRyaWJ1dGUoY29uc3QgRWxl
bWVudCogZWxlbWVudCkKQEAgLTEwOCwxMCArMTA3LDkgQEAgc3RhdGljIGJvb2wgaXNFbXB0eUZv
bnRUYWcoY29uc3QgTm9kZSAqbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY29u
c3QgRWxlbWVudCAqZWxlbSA9IHN0YXRpY19jYXN0PGNvbnN0IEVsZW1lbnQgKj4obm9kZSk7Ci0g
ICAgTmFtZWROb2RlTWFwKiBtYXAgPSBlbGVtLT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlm
ICghbWFwKQorICAgIGlmICghZWxlbS0+aGFzQXR0cmlidXRlcygpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICByZXR1cm4gbWFwLT5pc0VtcHR5KCkgfHwgKG1hcC0+bGVuZ3RoKCkgPT0gMSAm
JiBlbGVtLT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKSA9PSBzdHlsZVNwYW5DbGFzc1N0cmluZygp
KTsKKyAgICByZXR1cm4gZWxlbS0+YXR0cmlidXRlQ291bnQoKSA9PSAxICYmIGVsZW0tPmdldEF0
dHJpYnV0ZShjbGFzc0F0dHIpID09IHN0eWxlU3BhbkNsYXNzU3RyaW5nKCk7CiB9CiAKIHN0YXRp
YyBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUZvbnRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCBlNjIxODE1NjY3
ZGE1N2M2NjA4ZWQxNjdhZmYzYWI3MGQ0NzQ2YTNlLi45ODIyNGYyNDMxNDEyZDIxMjhhZDBiY2Zi
MTI1ZGYwZjBlNmRkNGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3Bw
CkBAIC04MzIsOCArODMyLDcgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmVsZW1lbnRJc1N0eWxlZFNw
YW5PckhUTUxFcXVpdmFsZW50KGNvbnN0IEhUTUxFbGVtZW50KiBlbGVtZW4KICAgICAgICAgfQog
ICAgIH0KIAotICAgIGNvbnN0IE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFwID0gZWxlbWVudC0+
YXR0cmlidXRlTWFwKCk7Ci0gICAgaWYgKCFhdHRyaWJ1dGVNYXAgfHwgYXR0cmlidXRlTWFwLT5p
c0VtcHR5KCkpCisgICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgIHJl
dHVybiBlbGVtZW50SXNTcGFuT3JFbGVtZW50RXF1aXZhbGVudDsgLy8gc3BhbiwgYiwgZXRjLi4u
IHdpdGhvdXQgYW55IGF0dHJpYnV0ZXMKIAogICAgIHVuc2lnbmVkIG1hdGNoZWRBdHRyaWJ1dGVz
ID0gMDsKQEAgLTg2MSw4ICs4NjAsOCBAQCBib29sIEVkaXRpbmdTdHlsZTo6ZWxlbWVudElzU3R5
bGVkU3Bhbk9ySFRNTEVxdWl2YWxlbnQoY29uc3QgSFRNTEVsZW1lbnQqIGVsZW1lbgogICAgIH0K
IAogICAgIC8vIGZvbnQgd2l0aCBjb2xvciBhdHRyaWJ1dGUsIHNwYW4gd2l0aCBzdHlsZSBhdHRy
aWJ1dGUsIGV0Yy4uLgotICAgIEFTU0VSVChtYXRjaGVkQXR0cmlidXRlcyA8PSBhdHRyaWJ1dGVN
YXAtPmxlbmd0aCgpKTsKLSAgICByZXR1cm4gbWF0Y2hlZEF0dHJpYnV0ZXMgPj0gYXR0cmlidXRl
TWFwLT5sZW5ndGgoKTsKKyAgICBBU1NFUlQobWF0Y2hlZEF0dHJpYnV0ZXMgPD0gZWxlbWVudC0+
YXR0cmlidXRlQ291bnQoKSk7CisgICAgcmV0dXJuIG1hdGNoZWRBdHRyaWJ1dGVzID49IGVsZW1l
bnQtPmF0dHJpYnV0ZUNvdW50KCk7CiB9CiAKIHZvaWQgRWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9B
cHBseUF0KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgU2hvdWxkUHJlc2VydmVXcml0aW5nRGly
ZWN0aW9uIHNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3Bw
CmluZGV4IGU2NDZiNTFmMjJhYWVhODFkN2NmMDdkMzczZTk4OGJkNjkxMzU2NjkuLjRhZWM0MTlh
MTFkOWI5M2U4M2IxMTU2Mjg2NjFlOTgzZjUyYWZmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcApA
QCAtNTEsOCArNTEsNyBAQCBzdGF0aWMgRWxlbWVudCogaGlnaGVzdFZpc3VhbGx5RXF1aXZhbGVu
dERpdkJlbG93Um9vdChFbGVtZW50KiBzdGFydEJsb2NrKQogICAgIC8vIFdlIGRvbid0IHdhbnQg
dG8gcmV0dXJuIGEgcm9vdCBub2RlIChpZiBpdCBoYXBwZW5zIHRvIGJlIGEgZGl2LCBlLmcuLCBp
biBhIGRvY3VtZW50IGZyYWdtZW50KSBiZWNhdXNlIHRoZXJlIGFyZSBubwogICAgIC8vIHNpYmxp
bmdzIGZvciB1cyB0byBhcHBlbmQgdG8uCiAgICAgd2hpbGUgKCFjdXJCbG9jay0+bmV4dFNpYmxp
bmcoKSAmJiBjdXJCbG9jay0+cGFyZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKGRpdlRhZykgJiYg
Y3VyQmxvY2stPnBhcmVudEVsZW1lbnQoKS0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIE5h
bWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IGN1ckJsb2NrLT5wYXJlbnRFbGVtZW50KCktPnVwZGF0
ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzICYmICFhdHRyaWJ1dGVzLT5p
c0VtcHR5KCkpCisgICAgICAgIGlmIChjdXJCbG9jay0+cGFyZW50RWxlbWVudCgpLT5oYXNBdHRy
aWJ1dGVzKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY3VyQmxvY2sgPSBjdXJCbG9j
ay0+cGFyZW50RWxlbWVudCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJr
dXBBY2N1bXVsYXRvci5jcHAKaW5kZXggNTIyNmIyMTRjMjU4MTE3NjA5MzVjNTY2OTY0ZTc2MzBm
MDJmOWQxOC4uMzA2YTg0NjU1OGU2YmMyYTE2ZGE4NjdmMmEyMGM4NzZkNjIyZTMzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKQEAgLTM0OSwxMSAr
MzQ5LDEwIEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEVsZW1lbnQoU3RyaW5nQnVp
bGRlciYgb3V0LCBFbGVtZW50KiBlbGVtZW50LCBOYW1lCiB7CiAgICAgYXBwZW5kT3BlblRhZyhv
dXQsIGVsZW1lbnQsIG5hbWVzcGFjZXMpOwogCi0gICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVz
ID0gZWxlbWVudC0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAoYXR0cmlidXRlcykgewot
ICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRyaWJ1dGVzLT5sZW5ndGgoKTsKKyAgICBpZiAo
ZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKSB7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGVs
ZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspCi0gICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGUob3V0LCBlbGVt
ZW50LCAqYXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKSwgbmFtZXNwYWNlcyk7CisgICAgICAg
ICAgICBhcHBlbmRBdHRyaWJ1dGUob3V0LCBlbGVtZW50LCAqZWxlbWVudC0+YXR0cmlidXRlSXRl
bShpKSwgbmFtZXNwYWNlcyk7CiAgICAgfQogCiAgICAgLy8gR2l2ZSBhbiBvcHBvcnR1bml0eSB0
byBzdWJjbGFzc2VzIHRvIGFkZCB0aGVpciBvd24gYXR0cmlidXRlcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcAppbmRleCA5YjE5MDkwOTFhMTA1YzEzNjVlYzcxMmZiOTA1YzdiMjE0OTExMDlj
Li5jOWEwZTc4ZGQxOTZlZGE5ZjIwMGM2YWNmZTRkM2NlNDM3ZWYxZjMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCkBAIC0xMDQsMTIgKzEwNCwxMSBAQCBzdGF0aWMgdm9pZCBjb21wbGV0
ZVVSTHMoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMKQogICAgIGZvciAoTm9kZSog
biA9IG5vZGU7IG4gIT0gZW5kOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CiAgICAgICAg
IGlmIChuLT5pc0VsZW1lbnROb2RlKCkpIHsKICAgICAgICAgICAgIEVsZW1lbnQqIGUgPSBzdGF0
aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0
ZXMgPSBlLT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGVz
KQorICAgICAgICAgICAgaWYgKCFlLT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRyaWJ1dGVzLT5sZW5n
dGgoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGUtPmF0dHJpYnV0ZUNvdW50KCk7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAg
ICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0
ZUl0ZW0oaSk7CisgICAgICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlLT5hdHRy
aWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgICAgIGlmIChlLT5pc1VSTEF0dHJpYnV0ZShhdHRy
aWJ1dGUpKQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzLmFwcGVuZChBdHRyaWJ1dGVDaGFu
Z2UoZSwgYXR0cmlidXRlLT5uYW1lKCksIEtVUkwocGFyc2VkQmFzZVVSTCwgYXR0cmlidXRlLT52
YWx1ZSgpKS5zdHJpbmcoKSkpOwogICAgICAgICAgICAgfQpAQCAtMjg5LDEyICsyODgsMTEgQEAg
dm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kRWxlbWVudChTdHJpbmdCdWlsZGVy
JiBvdXQsIEVsZW1lbnQqIGVsZW1lbnQKICAgICBjb25zdCBib29sIGRvY3VtZW50SXNIVE1MID0g
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKTsKICAgICBhcHBlbmRPcGVuVGFn
KG91dCwgZWxlbWVudCwgMCk7CiAKLSAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMgPSBlbGVt
ZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCA9IGF0
dHJpYnV0ZXMgPyBhdHRyaWJ1dGVzLT5sZW5ndGgoKSA6IDA7CisgICAgY29uc3QgdW5zaWduZWQg
bGVuZ3RoID0gZWxlbWVudC0+aGFzQXR0cmlidXRlcygpID8gZWxlbWVudC0+YXR0cmlidXRlQ291
bnQoKSA6IDA7CiAgICAgY29uc3QgYm9vbCBzaG91bGRBbm5vdGF0ZU9yRm9yY2VJbmxpbmUgPSBl
bGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgKHNob3VsZEFubm90YXRlKCkgfHwgYWRkRGlzcGxh
eUlubGluZSk7CiAgICAgY29uc3QgYm9vbCBzaG91bGRPdmVycmlkZVN0eWxlQXR0ciA9IHNob3Vs
ZEFubm90YXRlT3JGb3JjZUlubGluZSB8fCBzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUoZWxlbWVu
dCk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0ZW0oaSk7
CisgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShp
KTsKICAgICAgICAgLy8gV2UnbGwgaGFuZGxlIHRoZSBzdHlsZSBhdHRyaWJ1dGUgc2VwYXJhdGVs
eSwgYmVsb3cuCiAgICAgICAgIGlmIChhdHRyaWJ1dGUtPm5hbWUoKSA9PSBzdHlsZUF0dHIgJiYg
c2hvdWxkT3ZlcnJpZGVTdHlsZUF0dHIpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCmluZGV4IGM5NTA1NDQ3NmRiNTQ5ODc0NWZk
NDI5YTkwM2MzYmE2OTdhMDY2MjEuLmQ1NGZjMGI5OWZlZDU3YjU2NzNlYmQ2MGZiOGI4NzIwN2Q1
MzNiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAtMTA4
LDEyICsxMDgsMTEgQEAgdm9pZCBIVE1MRW1iZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCiAKIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6cGFyYW1ldGVyc0Zv
clBsdWdpbihWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKQogewotICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IHVwZGF0ZWRBdHRyaWJ1
dGVzKCk7Ci0gICAgaWYgKCFhdHRyaWJ1dGVzKQorICAgIGlmICghaGFzQXR0cmlidXRlcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRl
cy0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICBBdHRyaWJ1dGUqIGl0ID0gYXR0cmlidXRlcy0+
YXR0cmlidXRlSXRlbShpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRl
Q291bnQoKTsgKytpKSB7CisgICAgICAgIEF0dHJpYnV0ZSogaXQgPSBhdHRyaWJ1dGVJdGVtKGkp
OwogICAgICAgICBwYXJhbU5hbWVzLmFwcGVuZChpdC0+bG9jYWxOYW1lKCkuc3RyaW5nKCkpOwog
ICAgICAgICBwYXJhbVZhbHVlcy5hcHBlbmQoaXQtPnZhbHVlKCkuc3RyaW5nKCkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDgzMmJhNTJiN2Ew
NzExMDRlYWIyMjM3MmJiN2I4MzEyOWFkMzc1YTEuLjQwOWQ1MDg3ZGE3OWQyYTc1ZWE1MjQ2Y2Ex
NWU5NjZhZTQ1MGFjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cApAQCAtNTQ1LDEzICs1NDUsMTIgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBl
KCkKICAgICAgICAgcmVnaXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogCiAg
ICAgaWYgKGRpZFJlc3BlY3RIZWlnaHRBbmRXaWR0aCAhPSBtX2lucHV0VHlwZS0+c2hvdWxkUmVz
cGVjdEhlaWdodEFuZFdpZHRoQXR0cmlidXRlcygpKSB7Ci0gICAgICAgIE5hbWVkTm9kZU1hcCog
bWFwID0gYXR0cmlidXRlTWFwKCk7Ci0gICAgICAgIEFTU0VSVChtYXApOwotICAgICAgICBpZiAo
QXR0cmlidXRlKiBoZWlnaHQgPSBtYXAtPmdldEF0dHJpYnV0ZUl0ZW0oaGVpZ2h0QXR0cikpCisg
ICAgICAgIEFTU0VSVChhdHRyaWJ1dGVNYXAoKSk7CisgICAgICAgIGlmIChBdHRyaWJ1dGUqIGhl
aWdodCA9IGdldEF0dHJpYnV0ZUl0ZW0oaGVpZ2h0QXR0cikpCiAgICAgICAgICAgICBhdHRyaWJ1
dGVDaGFuZ2VkKGhlaWdodCk7Ci0gICAgICAgIGlmIChBdHRyaWJ1dGUqIHdpZHRoID0gbWFwLT5n
ZXRBdHRyaWJ1dGVJdGVtKHdpZHRoQXR0cikpCisgICAgICAgIGlmIChBdHRyaWJ1dGUqIHdpZHRo
ID0gZ2V0QXR0cmlidXRlSXRlbSh3aWR0aEF0dHIpKQogICAgICAgICAgICAgYXR0cmlidXRlQ2hh
bmdlZCh3aWR0aCk7Ci0gICAgICAgIGlmIChBdHRyaWJ1dGUqIGFsaWduID0gbWFwLT5nZXRBdHRy
aWJ1dGVJdGVtKGFsaWduQXR0cikpCisgICAgICAgIGlmIChBdHRyaWJ1dGUqIGFsaWduID0gZ2V0
QXR0cmlidXRlSXRlbShhbGlnbkF0dHIpKQogICAgICAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChh
bGlnbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3Bw
CmluZGV4IDU5MGQ2OWI5OGIyNGM5NmI3MDc0MTFjYjVkODcwMjNhM2U5ODljMjMuLjU0NmRjMWMw
YjdiYTQ2ZGIxNzUzNTU5YTIxMjk3YWYzYTY5MTMyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC0xNzcsMTAgKzE3Nyw5IEBAIHZvaWQgSFRNTE9iamVj
dEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMs
IFZlY3RvcjxTCiAgICAgfQogICAgIAogICAgIC8vIFR1cm4gdGhlIGF0dHJpYnV0ZXMgb2YgdGhl
IDxvYmplY3Q+IGVsZW1lbnQgaW50byBhcnJheXMsIGJ1dCBkb24ndCBvdmVycmlkZSA8cGFyYW0+
IHZhbHVlcy4KLSAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMgPSB1cGRhdGVkQXR0cmlidXRl
cygpOwotICAgIGlmIChhdHRyaWJ1dGVzKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBhdHRyaWJ1dGVzLT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgICAgICBBdHRyaWJ1dGUq
IGl0ID0gYXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICBpZiAoaGFzQXR0cmlidXRl
cygpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVDb3VudCgp
OyArK2kpIHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZSogaXQgPSBhdHRyaWJ1dGVJdGVtKGkpOwog
ICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gaXQtPm5hbWUoKS5sb2NhbE5h
bWUoKTsKICAgICAgICAgICAgIGlmICghdW5pcXVlUGFyYW1OYW1lcy5jb250YWlucyhuYW1lLmlt
cGwoKSkpIHsKICAgICAgICAgICAgICAgICBwYXJhbU5hbWVzLmFwcGVuZChuYW1lLnN0cmluZygp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwCmluZGV4IGFhMjI4YmMz
MTY2M2FiMDgyYTMyMDIyYjg0ZTFjZTNlYjA5YmZhYzEuLjkwNzI0MjExMTkxZjY5NzY1M2M4MTdm
Yzk2NWI4OTdkMzEyOGZjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBh
cmFtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50
LmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIEhUTUxQYXJhbUVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIGJvb2wgSFRNTFBhcmFtRWxlbWVudDo6aXNVUkxB
dHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKSBjb25zdAogewogICAgIGlmIChhdHRyLT5uYW1lKCkg
PT0gdmFsdWVBdHRyICYmIGhhc0F0dHJpYnV0ZXMoKSkgewotICAgICAgICBBdHRyaWJ1dGUqIG5h
bWVBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVNYXAoKS0+Z2V0QXR0cmlidXRlSXRlbShuYW1lQXR0cik7
CisgICAgICAgIEF0dHJpYnV0ZSogbmFtZUF0dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZUl0ZW0obmFt
ZUF0dHIpOwogICAgICAgICBpZiAobmFtZUF0dHJpYnV0ZSkgewogICAgICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSA9IG5hbWVBdHRyaWJ1dGUtPnZhbHVlKCk7CiAgICAgICAgICAg
ICBpZiAoaXNVUkxQYXJhbWV0ZXIodmFsdWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcAppbmRleCBmMzMxYWY3
ZTcwYjZiNWRjNWQxOWE4MTQ3YmU3YTI4NGIzZTYyOWRlLi4wMTQ1ZGUwZTZmMzllMDE5MDBjMjQx
NWI0N2Q5ZTY1N2E1MjFlZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcApAQCAtNDAsOSArNDAsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBOb2FoJ3MgQXJrIG9mIEZvcm1hdHRpbmcgRWxlbWVudHMg
Y2FuIGZpdCB0aHJlZSBvZiBlYWNoIGVsZW1lbnQuCiBzdGF0aWMgY29uc3Qgc2l6ZV90IGtOb2Fo
c0Fya0NhcGFjaXR5ID0gMzsKIAotc3RhdGljIGlubGluZSBzaXplX3QgYXR0cmlidXRlQ291bnQo
RWxlbWVudCogZWxlbWVudCkKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGF0dHJpYnV0ZUNvdW50V2l0
aG91dFVwZGF0ZShFbGVtZW50KiBlbGVtZW50KQogewotICAgIHJldHVybiBlbGVtZW50LT5hdHRy
aWJ1dGVNYXAoKSA/IGVsZW1lbnQtPmF0dHJpYnV0ZU1hcCgpLT5sZW5ndGgoKSA6IDA7CisgICAg
cmV0dXJuIGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXNXaXRob3V0VXBkYXRlKCkgPyBlbGVtZW50LT5h
dHRyaWJ1dGVDb3VudCgpIDogMDsKIH0KIAogSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6SFRN
TEZvcm1hdHRpbmdFbGVtZW50TGlzdCgpCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBIVE1MRm9y
bWF0dGluZ0VsZW1lbnRMaXN0Ojp0cnlUb0Vuc3VyZU5vYWhzQXJrQ29uZGl0aW9uUXVpY2tseShF
bGVtZW50KiBuZXcKICAgICAvLyBvZiBhIHF1aWNrbHkgZW5zdXJpbmcgdGhlIGNvbmRpdGlvbi4K
ICAgICBWZWN0b3I8RWxlbWVudCosIDEwPiBjYW5kaWRhdGVzOwogCi0gICAgc2l6ZV90IG5ld0Vs
ZW1lbnRBdHRyaWJ1dGVDb3VudCA9IGF0dHJpYnV0ZUNvdW50KG5ld0VsZW1lbnQpOworICAgIHNp
emVfdCBuZXdFbGVtZW50QXR0cmlidXRlQ291bnQgPSBhdHRyaWJ1dGVDb3VudFdpdGhvdXRVcGRh
dGUobmV3RWxlbWVudCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gbV9lbnRyaWVzLnNpemUoKTsg
aTsgKSB7CiAgICAgICAgIC0taTsKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIEhUTUxGb3JtYXR0
aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KEVsZW1l
bnQqIG5ldwogICAgICAgICBFbGVtZW50KiBjYW5kaWRhdGUgPSBlbnRyeS5lbGVtZW50KCk7CiAg
ICAgICAgIGlmIChuZXdFbGVtZW50LT50YWdRTmFtZSgpICE9IGNhbmRpZGF0ZS0+dGFnUU5hbWUo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoYXR0cmlidXRlQ291bnQoY2Fu
ZGlkYXRlKSAhPSBuZXdFbGVtZW50QXR0cmlidXRlQ291bnQpCisgICAgICAgIGlmIChhdHRyaWJ1
dGVDb3VudFdpdGhvdXRVcGRhdGUoY2FuZGlkYXRlKSAhPSBuZXdFbGVtZW50QXR0cmlidXRlQ291
bnQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZChj
YW5kaWRhdGUpOwpAQCAtMTc4LDE4ICsxNzgsMTYgQEAgdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1l
bnRMaXN0OjplbnN1cmVOb2Foc0Fya0NvbmRpdGlvbihFbGVtZW50KiBuZXdFbGVtZW50KQogICAg
IFZlY3RvcjxFbGVtZW50Kj4gcmVtYWluaW5nQ2FuZGlkYXRlczsKICAgICByZW1haW5pbmdDYW5k
aWRhdGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2FuZGlkYXRlcy5zaXplKCkpOwogCi0gICAg
TmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAgPSBuZXdFbGVtZW50LT5hdHRyaWJ1dGVNYXAoKTsK
LSAgICBzaXplX3QgbmV3RWxlbWVudEF0dHJpYnV0ZUNvdW50ID0gYXR0cmlidXRlQ291bnQobmV3
RWxlbWVudCk7CisgICAgc2l6ZV90IG5ld0VsZW1lbnRBdHRyaWJ1dGVDb3VudCA9IGF0dHJpYnV0
ZUNvdW50V2l0aG91dFVwZGF0ZShuZXdFbGVtZW50KTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbmV3RWxlbWVudEF0dHJpYnV0ZUNvdW50OyArK2kpIHsKLSAgICAgICAgUXVhbGlmaWVk
TmFtZSBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGkpLT5uYW1l
KCk7Ci0gICAgICAgIEF0b21pY1N0cmluZyBhdHRyaWJ1dGVWYWx1ZSA9IG5ld0VsZW1lbnQtPmZh
c3RHZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0cmli
dXRlID0gbmV3RWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKIAogICAgICAgICBmb3IgKHNpemVf
dCBqID0gMDsgaiA8IGNhbmRpZGF0ZXMuc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgIEVsZW1l
bnQqIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZXNbal07CiAKICAgICAgICAgICAgIC8vIFRoZXNlIHBy
b3BlcnRpZXMgc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGNoZWNrZWQgYnkgdHJ5VG9FbnN1cmVO
b2Foc0Fya0NvbmRpdGlvblF1aWNrbHkuCi0gICAgICAgICAgICBBU1NFUlQobmV3RWxlbWVudC0+
YXR0cmlidXRlTWFwKCktPmxlbmd0aCgpID09IGNhbmRpZGF0ZS0+YXR0cmlidXRlTWFwKCktPmxl
bmd0aCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdFbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgp
ID09IGNhbmRpZGF0ZS0+YXR0cmlidXRlQ291bnQoKSk7CiAgICAgICAgICAgICBBU1NFUlQobmV3
RWxlbWVudC0+dGFnUU5hbWUoKSA9PSBjYW5kaWRhdGUtPnRhZ1FOYW1lKCkpOwogCiAgICAgICAg
ICAgICAvLyBGSVhNRTogVGVjaG5pY2FsbHkgd2Ugc2hvdWxkbid0IHJlYWQgdGhpcyBpbmZvcm1h
dGlvbiBiYWNrIGZyb20KQEAgLTE5OSw3ICsxOTcsNyBAQCB2b2lkIEhUTUxGb3JtYXR0aW5nRWxl
bWVudExpc3Q6OmVuc3VyZU5vYWhzQXJrQ29uZGl0aW9uKEVsZW1lbnQqIG5ld0VsZW1lbnQpCiAg
ICAgICAgICAgICAvLyB0aGF0IGltcGxlbWVudGF0aW9ucyBjYW4gcnVuIG9mZiB0aGUgbWFpbiB0
aHJlYWQuIElmIEphdmFTY3JpcHQKICAgICAgICAgICAgIC8vIGNoYW5nZXMgdGhlIGF0dHJpYnV0
ZXMgdmFsdWVzLCB3ZSBjb3VsZCBnZXQgYSBzbGlnaHRseSB3cm9uZwogICAgICAgICAgICAgLy8g
b3V0cHV0IGhlcmUuCi0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlLT5mYXN0R2V0QXR0cmlidXRl
KGF0dHJpYnV0ZU5hbWUpID09IGF0dHJpYnV0ZVZhbHVlKQorICAgICAgICAgICAgaWYgKGNhbmRp
ZGF0ZS0+ZmFzdEdldEF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSkgPT0gYXR0cmlidXRlLT52
YWx1ZSgpKQogICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NhbmRpZGF0ZXMuYXBwZW5kKGNhbmRp
ZGF0ZSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTUVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApp
bmRleCAzYzlkODliNWRkMWNmYmEzYWI0MmUwMjU5NGMxNWI0NzAyNDAzZjU0Li5iZWUzMTAxZDc4
OGI1MTcxZWM4YTI3ZWFlYmIyY2JmMmVmYjU2MmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NRWRpdG9yLmNwcApAQCAtMTYwLDE5ICsxNjAsMTIgQEAgdm9pZCBET01FZGl0b3I6OmlubmVy
UGF0Y2hOb2RlKERpZ2VzdCogb2xkRGlnZXN0LCBEaWdlc3QqIG5ld0RpZ2VzdCwgRXhjZXB0aW9u
Q28KICAgICBFbGVtZW50KiBvbGRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG9sZE5v
ZGUpOwogICAgIEVsZW1lbnQqIG5ld0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obmV3
Tm9kZSk7CiAgICAgaWYgKG9sZERpZ2VzdC0+bV9hdHRyc1NIQTEgIT0gbmV3RGlnZXN0LT5tX2F0
dHJzU0hBMSkgewotICAgICAgICBOYW1lZE5vZGVNYXAqIG9sZEF0dHJpYnV0ZU1hcCA9IG9sZEVs
ZW1lbnQtPmF0dHJpYnV0ZU1hcCgpOwotCi0gICAgICAgIHdoaWxlIChvbGRBdHRyaWJ1dGVNYXAg
JiYgb2xkQXR0cmlidXRlTWFwLT5sZW5ndGgoKSkKLSAgICAgICAgICAgIG9sZEF0dHJpYnV0ZU1h
cC0+cmVtb3ZlQXR0cmlidXRlKDApOwotCi0gICAgICAgIE5hbWVkTm9kZU1hcCogbmV3QXR0cmli
dXRlTWFwID0gbmV3RWxlbWVudC0+YXR0cmlidXRlTWFwKCk7Ci0gICAgICAgIGlmIChuZXdBdHRy
aWJ1dGVNYXApIHsKLSAgICAgICAgICAgIHNpemVfdCBudW1BdHRycyA9IG5ld0F0dHJpYnV0ZU1h
cC0+bGVuZ3RoKCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUF0dHJz
OyArK2kpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IG5l
d0F0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpKTsKLSAgICAgICAgICAgICAgICBvbGRFbGVt
ZW50LT5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0ZS0+dmFsdWUoKSk7
Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChvbGRFbGVtZW50LT5oYXNBdHRyaWJ1dGVzV2l0
aG91dFVwZGF0ZSgpKSB7CisgICAgICAgICAgICB3aGlsZSAob2xkRWxlbWVudC0+YXR0cmlidXRl
Q291bnQoKSkKKyAgICAgICAgICAgICAgICBvbGRFbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoMCk7
CiAgICAgICAgIH0KKworICAgICAgICBvbGRFbGVtZW50LT5zZXRBdHRyaWJ1dGVzRnJvbUVsZW1l
bnRXaXRob3V0VXBkYXRlKCpuZXdFbGVtZW50KTsKICAgICB9CiAKICAgICBpbm5lclBhdGNoQ2hp
bGRyZW4ob2xkRWxlbWVudCwgb2xkRGlnZXN0LT5tX2NoaWxkcmVuLCBuZXdEaWdlc3QtPm1fY2hp
bGRyZW4sIGVjKTsKQEAgLTM4NCwxMiArMzc3LDExIEBAIFBhc3NPd25QdHI8RE9NRWRpdG9yOjpE
aWdlc3Q+IERPTUVkaXRvcjo6Y3JlYXRlRGlnZXN0KE5vZGUqIG5vZGUsIFVudXNlZE5vZGVzTWFw
CiAgICAgICAgIH0KICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1l
bnQqPihub2RlKTsKIAotICAgICAgICBOYW1lZE5vZGVNYXAqIGF0dHJNYXAgPSBlbGVtZW50LT5h
dHRyaWJ1dGVNYXAoKTsKLSAgICAgICAgaWYgKGF0dHJNYXAgJiYgYXR0ck1hcC0+bGVuZ3RoKCkp
IHsKLSAgICAgICAgICAgIHNpemVfdCBudW1BdHRycyA9IGF0dHJNYXAtPmxlbmd0aCgpOworICAg
ICAgICBpZiAoZWxlbWVudC0+aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSkgeworICAgICAg
ICAgICAgc2l6ZV90IG51bUF0dHJzID0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICAg
ICAgICAgIFNIQTEgYXR0cnNTSEExOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1BdHRyczsgKytpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRy
aWJ1dGUgPSBhdHRyTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICAgICAgICAgIGNvbnN0
IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAg
ICAgICAgICAgICBhZGRTdHJpbmdUb1NIQTEoYXR0cnNTSEExLCBhdHRyaWJ1dGUtPm5hbWUoKS50
b1N0cmluZygpKTsKICAgICAgICAgICAgICAgICBhZGRTdHJpbmdUb1NIQTEoYXR0cnNTSEExLCBh
dHRyaWJ1dGUtPnZhbHVlKCkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggM2E3YTIwZWQ4YWUxMWU0Y2QyZTUy
ODMzY2IxYWZkZDI4MDJiNWNmZS4uOWIyMzcwMDlkZTdhYzZmODk0MmIzY2Y1YjY2YTk2ODJhZWIx
NTUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCkBAIC01MzAsMTcgKzUzMCwxNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRBdHRy
aWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGVsZW1lbgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgTmFtZWROb2RlTWFwKiBhdHRyTWFwID0gdG9I
VE1MRWxlbWVudChjaGlsZCktPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKCFhdHRyTWFw
ICYmIG5hbWUpIHsKKyAgICBFbGVtZW50KiBjaGlsZEVsZW1lbnQgPSB0b0VsZW1lbnQoY2hpbGQp
OworICAgIGlmICghY2hpbGRFbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkgJiYgbmFtZSkgewogICAg
ICAgICBlbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoKm5hbWUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgYm9vbCBmb3VuZE9yaWdpbmFsQXR0cmlidXRlID0gZmFsc2U7Ci0gICAgdW5z
aWduZWQgbnVtQXR0cnMgPSBhdHRyTWFwLT5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBudW1BdHRy
cyA9IGNoaWxkRWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtQXR0cnM7ICsraSkgewogICAgICAgICAvLyBBZGQgYXR0cmlidXRlIHBhaXIK
LSAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyTWFwLT5hdHRyaWJ1dGVJ
dGVtKGkpOworICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGNoaWxkRWxlbWVu
dC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgZm91bmRPcmlnaW5hbEF0dHJpYnV0ZSA9IGZv
dW5kT3JpZ2luYWxBdHRyaWJ1dGUgfHwgKG5hbWUgJiYgYXR0cmlidXRlLT5uYW1lKCkudG9TdHJp
bmcoKSA9PSAqbmFtZSk7CiAgICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUt
Pm5hbWUoKSwgYXR0cmlidXRlLT52YWx1ZSgpKTsKICAgICB9CkBAIC03ODEsMTQgKzc4MSwxNCBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLy8gR28gdGhyb3VnaCBhbGwgYXR0cmli
dXRlcyBhbmQgc2VyaWFsaXplIHRoZW0uCi0gICAgICAgICAgICAgICAgY29uc3QgTmFtZWROb2Rl
TWFwKiBhdHRyTWFwID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT51cGRhdGVkQXR0cmli
dXRlcygpOwotICAgICAgICAgICAgICAgIGlmICghYXR0ck1hcCkKKyAgICAgICAgICAgICAgICBj
b25zdCBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG5vZGUpOworICAgICAgICAgICAgICAg
IGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bUF0dHJzID0gYXR0ck1hcC0+bGVuZ3Ro
KCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtQXR0cnMgPSBlbGVtZW50LT5hdHRyaWJ1
dGVDb3VudCgpOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1B
dHRyczsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEFkZCBhdHRyaWJ1dGUgcGFpcgot
ICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJNYXAt
PmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSog
YXR0cmlidXRlID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkuZmluZCh3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5
KSAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q29sbGVjdG9y
LmFkZChub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE1OSwxMyAr
MTE1OSwxMiBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JET01BZ2VudDo6
YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZQogewogICAgIFJlZlB0cjxJbnNwZWN0
b3JBcnJheT4gYXR0cmlidXRlc1ZhbHVlID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogICAg
IC8vIEdvIHRocm91Z2ggYWxsIGF0dHJpYnV0ZXMgYW5kIHNlcmlhbGl6ZSB0aGVtLgotICAgIGNv
bnN0IE5hbWVkTm9kZU1hcCogYXR0ck1hcCA9IGVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7
Ci0gICAgaWYgKCFhdHRyTWFwKQorICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQog
ICAgICAgICByZXR1cm4gYXR0cmlidXRlc1ZhbHVlLnJlbGVhc2UoKTsKLSAgICB1bnNpZ25lZCBu
dW1BdHRycyA9IGF0dHJNYXAtPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG51bUF0dHJzID0gZWxl
bWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
QXR0cnM7ICsraSkgewogICAgICAgICAvLyBBZGQgYXR0cmlidXRlIHBhaXIKLSAgICAgICAgY29u
c3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOworICAg
ICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0o
aSk7CiAgICAgICAgIGF0dHJpYnV0ZXNWYWx1ZS0+cHVzaFN0cmluZyhhdHRyaWJ1dGUtPm5hbWUo
KS50b1N0cmluZygpKTsKICAgICAgICAgYXR0cmlidXRlc1ZhbHVlLT5wdXNoU3RyaW5nKGF0dHJp
YnV0ZS0+dmFsdWUoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cAppbmRleCAwNTk4NjRlZWE5ZWZiZDk3YTk0MGE5YmM5OWIzYmI4NWU4YWVhYzdjLi42NGQ5MDFi
N2EzODA4YTY3ODY3YTg0MTM5ZDhmZmEzMzYzOWJmNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcApAQCAtNjksOSArNjksOSBAQCBzdGF0aWMgYm9vbCBpc0NoYXJzZXRT
cGVjaWZ5aW5nTm9kZShOb2RlKiBub2RlKQogICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6Om1ldGFUYWcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSFRNTE1ldGFD
aGFyc2V0UGFyc2VyOjpBdHRyaWJ1dGVMaXN0IGF0dHJpYnV0ZXM7Ci0gICAgaWYgKGNvbnN0IE5h
bWVkTm9kZU1hcCogYXR0cmlidXRlc01hcCA9IGVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCkp
IHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZXNNYXAtPmxlbmd0
aCgpOyArK2kpIHsKLSAgICAgICAgICAgIEF0dHJpYnV0ZSogaXRlbSA9IGF0dHJpYnV0ZXNNYXAt
PmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgaWYgKGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVudC0+YXR0cmlidXRlQ291bnQo
KTsgKytpKSB7CisgICAgICAgICAgICBBdHRyaWJ1dGUqIGl0ZW0gPSBlbGVtZW50LT5hdHRyaWJ1
dGVJdGVtKGkpOwogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkZWFsIGFwcHJvcHJp
YXRlbHkgd2l0aCB0aGUgYXR0cmlidXRlIGlmIHRoZXkgaGF2ZSBhIG5hbWVzcGFjZS4KICAgICAg
ICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKG1ha2VfcGFpcihpdGVtLT5uYW1lKCkudG9TdHJpbmco
KSwgaXRlbS0+dmFsdWUoKS5zdHJpbmcoKSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggNWExZjdmNjViMjA0ZTAyNzhjZDViYjZmNzUxZTg0
NzE5ZTFmMDI2OS4uNzE1NzI4MzMyMjcwZDI5MGRjODU2Mzc4ODliYjkyZjZkZDM5NzczMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcApAQCAtNDA2LDExICs0MDYsMTEg
QEAgdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQ
YXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwKIAogUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5
bGVkRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKLSAgICBpZiAoIWF0dHJpYnV0ZU1hcCgpKQorICAgIGlmICghaGFzQXR0cmlidXRlc1dpdGhv
dXRVcGRhdGUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBRdWFsaWZpZWROYW1lIGF0dHJp
YnV0ZU5hbWUobnVsbEF0b20sIG5hbWUsIG51bGxBdG9tKTsKLSAgICBBdHRyaWJ1dGUqIGF0dHIg
PSBhdHRyaWJ1dGVNYXAoKS0+Z2V0QXR0cmlidXRlSXRlbShhdHRyaWJ1dGVOYW1lKTsKKyAgICBB
dHRyaWJ1dGUqIGF0dHIgPSBnZXRBdHRyaWJ1dGVJdGVtKGF0dHJpYnV0ZU5hbWUpOwogICAgIGlm
ICghYXR0cikKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlv
bnMuY3BwCmluZGV4IDI4MzU4M2Q3ODNhZmE2ZWYxMGVhNzc5MmNiMjA5Y2Q1MTM0MzM1Y2YuLjE1
NGI2N2U5MmQzMmM3ZDE3NmJjYjgxMDkwZThkZjQxOThiNGIwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoRnVuY3Rpb25zLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIlhQYXRoRnVu
Y3Rpb25zLmgiCiAKICNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiTmFtZWROb2RlTWFw
LmgiCiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiVHJlZVNj
b3BlLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKQEAgLTU5Miw4ICs1OTEsOSBAQCBWYWx1ZSBG
dW5MYW5nOjpldmFsdWF0ZSgpIGNvbnN0CiAgICAgTm9kZSogbm9kZSA9IGV2YWx1YXRpb25Db250
ZXh0KCkubm9kZS5nZXQoKTsKICAgICB3aGlsZSAobm9kZSkgewogICAgICAgICBpZiAobm9kZS0+
aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAoTmFtZWROb2RlTWFwKiBhdHRyaWJ1
dGVzID0gdG9FbGVtZW50KG5vZGUpLT51cGRhdGVkQXR0cmlidXRlcygpKQotICAgICAgICAgICAg
ICAgIGxhbmd1YWdlQXR0cmlidXRlID0gYXR0cmlidXRlcy0+Z2V0QXR0cmlidXRlSXRlbShYTUxO
YW1lczo6bGFuZ0F0dHIpOworICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVu
dChub2RlKTsKKyAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCisgICAg
ICAgICAgICAgICAgbGFuZ3VhZ2VBdHRyaWJ1dGUgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGVJdGVt
KFhNTE5hbWVzOjpsYW5nQXR0cik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxhbmd1YWdlQXR0
cmlidXRlKQogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhOb2RlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3Bw
CmluZGV4IDhlZWZjNTczZmY0NDc5NDI1MjFmYmQwNzdhZGYxNTIxZDJhMzlhZjcuLjY4ODFkMzg1
NTU1NTI5OWViNDRhODE0ZWNkNGIyNzcwMGMyMWE0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5v
ZGVTZXQuY3BwCkBAIC0yMTMsMTMgKzIxMywxMyBAQCB2b2lkIE5vZGVTZXQ6OnRyYXZlcnNhbFNv
cnQoKSBjb25zdAogICAgICAgICBpZiAoIWNvbnRhaW5zQXR0cmlidXRlTm9kZXMgfHwgIW4tPmlz
RWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE5hbWVkTm9k
ZU1hcCogYXR0cmlidXRlcyA9IHRvRWxlbWVudChuKS0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAg
ICAgICAgaWYgKCFhdHRyaWJ1dGVzKQorICAgICAgICBFbGVtZW50KiBlID0gdG9FbGVtZW50KG4p
OworICAgICAgICBpZiAoIWUtPmhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZUNvdW50ID0gYXR0cmlidXRlcy0+bGVuZ3Ro
KCk7CisgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZUNvdW50ID0gZS0+YXR0cmlidXRlQ291bnQo
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZUNvdW50OyArK2kp
IHsKLSAgICAgICAgICAgIEF0dHIqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0
ZW0oaSktPmF0dHIoKTsKKyAgICAgICAgICAgIEF0dHIqIGF0dHJpYnV0ZSA9IGUtPmF0dHJpYnV0
ZUl0ZW0oaSktPmF0dHIoKTsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUgJiYgbm9kZXMuY29u
dGFpbnMoYXR0cmlidXRlKSkKICAgICAgICAgICAgICAgICBzb3J0ZWROb2Rlcy5hcHBlbmQoYXR0
cmlidXRlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
U3RlcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcAppbmRleCAxMmYzOTRm
MmNhMGI0NDU2YTgxZDEwODk4M2I3OTI0ZDVjNGQ4NzVkLi5mZjdlNjg1ZDkxMTczN2ViY2QxZGYy
MTkzZWVjMzE3OTM5ZmNlNGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhT
dGVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcApAQCAtMzEsNyAr
MzEsNiBAQAogI2luY2x1ZGUgIkF0dHIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJYTUxO
U05hbWVzLmgiCiAjaW5jbHVkZSAiWFBhdGhQYXJzZXIuaCIKICNpbmNsdWRlICJYUGF0aFV0aWwu
aCIKQEAgLTM0MywxMiArMzQyLDExIEBAIHZvaWQgU3RlcDo6bm9kZXNJbkF4aXMoTm9kZSogY29u
dGV4dCwgTm9kZVNldCYgbm9kZXMpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBOYW1lZE5vZGVNYXAqIGF0dHJz
ID0gY29udGV4dEVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgICAgICBpZiAo
IWF0dHJzKQorICAgICAgICAgICAgaWYgKCFjb250ZXh0RWxlbWVudC0+aGFzQXR0cmlidXRlcygp
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGF0dHJzLT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRy
PEF0dHI+IGF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKS0+Y3JlYXRlQXR0cklmTmVlZGVk
KHN0YXRpY19jYXN0PEVsZW1lbnQqPihjb250ZXh0KSk7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgY29udGV4dEVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7ICsraSkgewor
ICAgICAgICAgICAgICAgIFJlZlB0cjxBdHRyPiBhdHRyID0gY29udGV4dEVsZW1lbnQtPmF0dHJp
YnV0ZUl0ZW0oaSktPmNyZWF0ZUF0dHJJZk5lZWRlZChzdGF0aWNfY2FzdDxFbGVtZW50Kj4oY29u
dGV4dCkpOwogICAgICAgICAgICAgICAgIGlmIChub2RlTWF0Y2hlcyhhdHRyLmdldCgpLCBBdHRy
aWJ1dGVBeGlzLCBtX25vZGVUZXN0KSkKICAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5k
KGF0dHIucmVsZWFzZSgpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCA0ZTFkNDll
ZWZkMDRiZmVmNjg2ZTBhMmM1Y2UyYjYwYzFkOGQ4N2MwLi4zYTM2ZDk4ZTEyNTZjNGRkZWQ1Nzc2
YWVmMDYyNDYyMTY3ZjAzOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC01OTksOSArNTk5LDkgQEAgWE1M
RG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqIGZyYWdt
ZW50LCBFbGVtZW50KiBwYXJlbnQKIAogICAgIGZvciAoOyAhZWxlbVN0YWNrLmlzRW1wdHkoKTsg
ZWxlbVN0YWNrLnJlbW92ZUxhc3QoKSkgewogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxl
bVN0YWNrLmxhc3QoKTsKLSAgICAgICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cnMgPSBlbGVtZW50
LT51cGRhdGVkQXR0cmlidXRlcygpKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYXR0cnMtPmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBBdHRyaWJ1dGUq
IGF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmhh
c0F0dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVs
ZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7IGkrKykgeworICAgICAgICAgICAgICAgIEF0dHJpYnV0
ZSogYXR0ciA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgICAgICAgICAgaWYg
KGF0dHItPmxvY2FsTmFtZSgpID09IHhtbG5zQXRvbSkKICAgICAgICAgICAgICAgICAgICAgbV9k
ZWZhdWx0TmFtZXNwYWNlVVJJID0gYXR0ci0+dmFsdWUoKTsKICAgICAgICAgICAgICAgICBlbHNl
IGlmIChhdHRyLT5wcmVmaXgoKSA9PSB4bWxuc0F0b20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDhkZTFhMDgxN2E0ZTRkZjFiYThhODA4YWM5
Mzk2NzVhN2FlYTAzMzUuLjBjMmIyZDZhMGM3OWY0OGNiNmZkM2Y0NzAyNjZkZmU4OTFjYjhiM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC04
MCw5ICs4MCw5IEBAIFhNTFRyZWVCdWlsZGVyOjpYTUxUcmVlQnVpbGRlcihOZXdYTUxEb2N1bWVu
dFBhcnNlciogcGFyc2VyLCBEb2N1bWVudEZyYWdtZW50KiBmCiAKICAgICBmb3IgKEVsZW1lbnQq
IGVsZW1lbnQ7ICFub2RlU3RhY2suaXNFbXB0eSgpOyBub2RlU3RhY2sucmVtb3ZlTGFzdCgpKSB7
CiAgICAgICAgIGVsZW1lbnQgPSBub2RlU3RhY2subGFzdCgpOwotICAgICAgICBpZiAoTmFtZWRO
b2RlTWFwKiBhdHRycyA9IGVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0cnMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKTsKKyAg
ICAgICAgaWYgKGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwog
ICAgICAgICAgICAgICAgIGlmIChhdHRyLT5sb2NhbE5hbWUoKSA9PSB4bWxuc0F0b20pCiAgICAg
ICAgICAgICAgICAgICAgIHN0YWNrSXRlbS5zZXROYW1lc3BhY2VVUkkoYXR0ci0+dmFsdWUoKSk7
CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXR0ci0+cHJlZml4KCkgPT0geG1sbnNBdG9tKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1w
bC5jcHAKaW5kZXggZGEwZTMyNTU1ZWM3Y2I4NDM4YWI4MDIzYTk4YmI2MmNlZWViNTNiNS4uY2Ew
NTgzNDg4OTBmZjEzMzA2NGUxYzA4OTgwNzA2MGY3YjA4OTNlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwCkBAIC0zMDcs
MTMgKzMwNywxMiBAQCB2b2lkIFdlYlBhZ2VTZXJpYWxpemVySW1wbDo6b3BlblRhZ1RvU3RyaW5n
KEVsZW1lbnQqIGVsZW1lbnQsCiAgICAgLy8gQWRkIG9wZW4gdGFnCiAgICAgcmVzdWx0ICs9ICI8
IiArIGVsZW1lbnQtPm5vZGVOYW1lKCkubG93ZXIoKTsKICAgICAvLyBHbyB0aHJvdWdoIGFsbCBh
dHRyaWJ1dGVzIGFuZCBzZXJpYWxpemUgdGhlbS4KLSAgICBjb25zdCBOYW1lZE5vZGVNYXAgKmF0
dHJNYXAgPSBlbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmIChhdHRyTWFwKSB7
Ci0gICAgICAgIHVuc2lnbmVkIG51bUF0dHJzID0gYXR0ck1hcC0+bGVuZ3RoKCk7CisgICAgaWYg
KGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICB1bnNpZ25lZCBudW1BdHRycyA9
IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1BdHRyczsgaSsrKSB7CiAgICAgICAgICAgICByZXN1bHQgKz0gIiAiOwogICAgICAg
ICAgICAgLy8gQWRkIGF0dHJpYnV0ZSBwYWlyCi0gICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUg
KmF0dHJpYnV0ZSA9IGF0dHJNYXAtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAgICBjb25z
dCBBdHRyaWJ1dGUgKmF0dHJpYnV0ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAg
ICAgICAgICByZXN1bHQgKz0gYXR0cmlidXRlLT5uYW1lKCkudG9TdHJpbmcoKTsKICAgICAgICAg
ICAgIHJlc3VsdCArPSAiPVwiIjsKICAgICAgICAgICAgIGlmICghYXR0cmlidXRlLT52YWx1ZSgp
LmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCmluZGV4IDBkODVk
YTkyZTY3NTk4NDM3ODA4NzA4NDg0MTdiODg2N2Y1MjU2MjkuLjE3OGM3MGU1Yjc3ODgyN2I3NTAz
Yzg3OTZjMzUwNjc3NzQ1MjQ3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJlbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAK
QEAgLTUwMywxMiArNTAzLDExIEBAIFFTdHJpbmdMaXN0IFFXZWJFbGVtZW50OjphdHRyaWJ1dGVO
YW1lcyhjb25zdCBRU3RyaW5nJiBuYW1lc3BhY2VVcmkpIGNvbnN0CiAgICAgICAgIHJldHVybiBR
U3RyaW5nTGlzdCgpOwogCiAgICAgUVN0cmluZ0xpc3QgYXR0cmlidXRlTmFtZUxpc3Q7Ci0gICAg
Y29uc3QgTmFtZWROb2RlTWFwKiBjb25zdCBhdHRycyA9IG1fZWxlbWVudC0+dXBkYXRlZEF0dHJp
YnV0ZXMoKTsKLSAgICBpZiAoYXR0cnMpIHsKKyAgICBpZiAobV9lbGVtZW50LT5oYXNBdHRyaWJ1
dGVzKCkpIHsKICAgICAgICAgY29uc3QgU3RyaW5nIG5hbWVzcGFjZVVyaVN0cmluZyhuYW1lc3Bh
Y2VVcmkpOyAvLyBjb252ZXJ0IFFTdHJpbmcgLT4gU3RyaW5nIG9uY2UKLSAgICAgICAgY29uc3Qg
dW5zaWduZWQgYXR0cnNDb3VudCA9IGF0dHJzLT5sZW5ndGgoKTsKKyAgICAgICAgY29uc3QgdW5z
aWduZWQgYXR0cnNDb3VudCA9IG1fZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJzQ291bnQ7ICsraSkgewotICAgICAgICAgICAg
Y29uc3QgQXR0cmlidXRlKiBjb25zdCBhdHRyaWJ1dGUgPSBhdHRycy0+YXR0cmlidXRlSXRlbShp
KTsKKyAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogY29uc3QgYXR0cmlidXRlID0gbV9lbGVt
ZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgaWYgKG5hbWVzcGFjZVVyaVN0cmlu
ZyA9PSBhdHRyaWJ1dGUtPm5hbWVzcGFjZVVSSSgpKQogICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZU5hbWVMaXN0LmFwcGVuZChhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpKTsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125628</attachid>
            <date>2012-02-06 06:24:07 -0800</date>
            <delta_ts>2012-02-06 06:30:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77800-20120206112405.patch</filename>
            <type>text/plain</type>
            <size>49358</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDViNmFiZTljNDg3MTY2
N2U2ZjI1YmIxYzY0NDU2NzdiYzViZDEyNi4uZDIzOTRkMDFjMzFmOTE1OWUxYjEzMGNlZGJiZTBm
YzA4ZmM0NGViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEyLTAyLTA2ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgUHJvdmlkZSBtb3JlIGF0dHJpYnV0ZSBtZXRob2RzIGluIEVsZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHRoZSBj
bGllbnRzIG9mIE5hbWVkTm9kZU1hcC4gVGhpcyB3aWxsIG1ha2UgZWFzaWVyIHRvIGNoYW5nZSB0
aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2Ygb3VyIGF0dHJpYnV0ZSBzdG9yYWdlLiBUaGUg
Y2xpZW50cyBub3cgdXNlIEVsZW1lbnQgbWV0aG9kcworICAgICAgICB0aGF0IGV4cG9zZSBBdHRy
aWJ1dGUqIGFjY2Vzc29ycy4KKworICAgICAgICBJbnN0ZWFkIG9mIGNoZWNraW5nIHRoZSBleGlz
dGVuY2Ugb2YgTmFtZWROb2RlTWFwLCBjbGllbnRzIGNhbiBjYWxsCisgICAgICAgIGhhc0F0dHJp
YnV0ZXMoKSBvciBoYXNBdHRyaWJ1dGVzV2l0aG91dFVwZGF0ZSgpICh0aGF0IHNraXBzIHVwZGF0
aW5nIGludmFsaWQKKyAgICAgICAgc3R5bGUgb3IgYW5pbWF0aW9uIHN2ZyBhdHRyaWJ1dGVzKS4K
KworICAgICAgICBJZiB0aGVyZSBhcmUgYXR0cmlidXRlcywgdGhleSBjYW4gYmUgYWNjZXNzZWQg
YnkgaW5kZXggdmlhIGF0dHJpYnV0ZUNvdW50KCkgLworICAgICAgICBhdHRyaWJ1dGVJdGVtKCks
IGFzIHdlbGwgYXMgYnkgUXVhbGlmaWVkTmFtZS4gVGhvc2UgYWNjZXNzb3JzIGFzc3VtZSB0aGVy
ZSBhcmUgYW4KKyAgICAgICAgYXR0cmlidXRlIHN0b3JhZ2UuCisKKyAgICAgICAgKiBjc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFueUF0dHJpYnV0ZU1hdGNoZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKToK
KyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrRXhhY3RBdHRyaWJ1dGUpOgorICAgICAgICAqIGRvbS9EYXRhc2V0
RE9NU3RyaW5nTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6
OmdldE5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6Oml0ZW0p
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YXNldERPTVN0cmluZ01hcDo6Y29udGFpbnMpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1w
b3J0Tm9kZSk6IHVzZSBzZXRBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoKSBpbnN0ZWFkIG9mIG1hbnVh
bGx5IGNvcHlpbmcuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1
dGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVJdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEF0dHJpYnV0ZUl0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0RlZmF1bHROYW1lc3BhY2UpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6Omxvb2t1cE5hbWVzcGFjZVByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjb21w
YXJlRG9jdW1lbnRQb3NpdGlvbik6CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNOb0F0dHJpYnV0ZU9yT25seVN0eWxlQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRW1wdHlGb250VGFnKToKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmVs
ZW1lbnRJc1N0eWxlZFNwYW5PckhUTUxFcXVpdmFsZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0lu
c2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGln
aGVzdFZpc3VhbGx5RXF1aXZhbGVudERpdkJlbG93Um9vdCk6CisgICAgICAgICogZWRpdGluZy9N
YXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRv
cjo6YXBwZW5kRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y29tcGxldGVVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yOjphcHBlbmRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6cGFyYW1ldGVy
c0ZvclBsdWdpbik6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUpOgorICAgICAgICAqIGh0
bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVs
ZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4pOgorICAgICAgICAqIGh0bWwvSFRNTFBhcmFtRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyYW1FbGVtZW50Ojppc1VSTEF0dHJp
YnV0ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1dGVDb3VudFdpdGhvdXRVcGRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6dHJ5VG9FbnN1cmVOb2Fo
c0Fya0NvbmRpdGlvblF1aWNrbHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1hdHRpbmdF
bGVtZW50TGlzdDo6ZW5zdXJlTm9haHNBcmtDb25kaXRpb24pOiBTdG9yZSBBdHRyaWJ1dGUqCisg
ICAgICAgIHRvIGF2b2lkIGxvb2tpbmcgdXAgdGhlIHJpZ2h0IGVsZW1lbnQgYWdhaW4gYnkgbmFt
ZS4KKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUVkaXRvcjo6aW5uZXJQYXRjaE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9y
OjpjcmVhdGVEaWdlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0Fz
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJj
aCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVs
ZW1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlzQ2hhcnNldFNwZWNpZnlpbmdOb2RlKToKKyAgICAgICAgKiBzdmcv
U1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50
OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHhtbC9YUGF0aEZ1bmN0aW9u
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuTGFuZzo6ZXZhbHVhdGUpOgorICAg
ICAgICAqIHhtbC9YUGF0aE5vZGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5v
ZGVTZXQ6OnRyYXZlcnNhbFNvcnQpOgorICAgICAgICAqIHhtbC9YUGF0aFN0ZXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WFBhdGg6OlN0ZXA6Om5vZGVzSW5BeGlzKToKKyAgICAgICAgKiB4bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
TUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIHhtbC9wYXJz
ZXIvWE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZUJ1aWxkZXI6
OlhNTFRyZWVCdWlsZGVyKToKKwogMjAxMi0wMi0wNiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8
YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBXZWJHZXN0dXJlRXZlbnQgY2FuIG5v
dCBlbmNvZGUgZGVsdGEgYW5kIGFyZWEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDRm
YmFmZmRkY2ZkZTEyZTJiZDgwNTBmNGI3ZTZjYzg0MDJkMDBmZjcuLjQ2MTYxZGMxN2ZjN2VjODY1
ZjExOTY1NzhhZGVmMzc1ZmE5ZjBmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTItMDItMDYgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAg
PGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBQcm92aWRlIG1vcmUgYXR0
cmlidXRlIG1ldGhvZHMgaW4gRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHNyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlU2VyaWFsaXplckltcGw6Om9wZW5UYWdUb1N0cmluZyk6IGFjY2Vz
cyBhdHRyaWJ1dGVzIHZpYSBFbGVtZW50IGludGVyZmFjZS4KKwogMjAxMi0wMi0wNCAgU2hhd24g
U2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFk
ZCBzdXBwb3J0IHRvIGZvcmNlIGZ1bGwgZGFtYWdlIGluIENDRGFtYWdlVHJhY2tlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZwppbmRleCBhYjMyNDA1Y2RiNGJiNDY1MDc4ZTcyZDQyNDMwZWE4YzFkNjZlMjQ2Li43MmRl
MDhmZWE4Njc4NjM4MTZmN2E4YjI0NmVlZDMyMGM3MWIzMjA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDEyLTAyLTA2ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8g
IDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUHJvdmlkZSBtb3JlIGF0
dHJpYnV0ZSBtZXRob2RzIGluIEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc3ODAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVs
ZW1lbnQ6OmF0dHJpYnV0ZU5hbWVzKTogYWNjZXNzIGF0dHJpYnV0ZXMgdmlhIEVsZW1lbnQgaW50
ZXJmYWNlLgorCiAyMDEyLTAyLTAzICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0
ZUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBEb24ndCB2ZXJzaW9uIFF0V2ViS2l0LmV4cGVy
aW1lbnRhbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggNTg2Nzc0
NjQ3YTA4N2QzYTBjMmQ3ZjI4MmNiM2JiMDMzNmY5NDQwNS4uYmM4MjRlMWMwN2QxYzdhN2IyNDU1
MWY1ZjE1ZGFjM2I3ZTBmZDI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVj
dG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5j
cHAKQEAgLTY3MSwxMCArNjcxLDExIEBAIHN0YXRpYyBib29sIGF0dHJpYnV0ZVZhbHVlTWF0Y2hl
cyhBdHRyaWJ1dGUqIGF0dHJpYnV0ZUl0ZW0sIENTU1NlbGVjdG9yOjpNYXRjaCBtCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGFueUF0dHJpYnV0ZU1hdGNoZXMoTmFtZWROb2Rl
TWFwKiBhdHRyaWJ1dGVzLCBDU1NTZWxlY3Rvcjo6TWF0Y2ggbWF0Y2gsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHNlbGVjdG9yQXR0ciwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3RvclZhbHVlLCBi
b29sIGNhc2VTZW5zaXRpdmUpCitzdGF0aWMgYm9vbCBhbnlBdHRyaWJ1dGVNYXRjaGVzKEVsZW1l
bnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpNYXRjaCBtYXRjaCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgc2VsZWN0b3JBdHRyLCBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdG9yVmFsdWUsIGJvb2wg
Y2FzZVNlbnNpdGl2ZSkKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMt
Pmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGVJdGVtID0gYXR0
cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICBBU1NFUlQoZWxlbWVudC0+aGFzQXR0cmli
dXRlc1dpdGhvdXRVcGRhdGUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbGVtZW50
LT5hdHRyaWJ1dGVDb3VudCgpOyArK2kpIHsKKyAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGVJ
dGVtID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKIAogICAgICAgICBpZiAoIVNlbGVjdG9y
Q2hlY2tlcjo6YXR0cmlidXRlTmFtZU1hdGNoZXMoYXR0cmlidXRlSXRlbSwgc2VsZWN0b3JBdHRy
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNzAxLDEzICs3MDIsMTIgQEAgYm9vbCBTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCog
ZSwgUHNldWRvSWQmIGQKICAgICBpZiAoc2VsLT5pc0F0dHJpYnV0ZVNlbGVjdG9yKCkpIHsKICAg
ICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ciA9IHNlbC0+YXR0cmlidXRlKCk7CiAKLSAg
ICAgICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gZS0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsK
LSAgICAgICAgaWYgKCFhdHRyaWJ1dGVzKQorICAgICAgICBpZiAoIWUtPmhhc0F0dHJpYnV0ZXMo
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBib29sIGNhc2VTZW5zaXRp
dmUgPSAhbV9kb2N1bWVudElzSFRNTCB8fCAhaHRtbEF0dHJpYnV0ZUhhc0Nhc2VJbnNlbnNpdGl2
ZVZhbHVlKGF0dHIpOwogCi0gICAgICAgIGlmICghYW55QXR0cmlidXRlTWF0Y2hlcyhhdHRyaWJ1
dGVzLCBzdGF0aWNfY2FzdDxDU1NTZWxlY3Rvcjo6TWF0Y2g+KHNlbC0+bV9tYXRjaCksIGF0dHIs
IHNlbC0+dmFsdWUoKSwgY2FzZVNlbnNpdGl2ZSkpCisgICAgICAgIGlmICghYW55QXR0cmlidXRl
TWF0Y2hlcyhlLCBzdGF0aWNfY2FzdDxDU1NTZWxlY3Rvcjo6TWF0Y2g+KHNlbC0+bV9tYXRjaCks
IGF0dHIsIHNlbC0+dmFsdWUoKSwgY2FzZVNlbnNpdGl2ZSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggM2Y5
NDY5ZTVkNzliMDljOWFiODQyZTc0MmQ4NWZhZDcxN2I5NDcxZi4uNDg3Mjg0NzM2NGY2YzU1MDYy
ZWIyNTY3YzliZGFjZjFkMzgxYjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
aApAQCAtMTg1LDEyICsxODUsMTEgQEAgaW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjphdHRy
aWJ1dGVOYW1lTWF0Y2hlcyhjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSwgY28KIAogaW5saW5l
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKGNvbnN0IEVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0cmlidXRlTmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nSW1wbCogdmFsdWUpCiB7Ci0gICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1
dGVNYXAgPSBlbGVtZW50LT5hdHRyaWJ1dGVNYXAoKTsKLSAgICBpZiAoIWF0dHJpYnV0ZU1hcCkK
KyAgICBpZiAoIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZXNXaXRob3V0VXBkYXRlKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25lZCBzaXplID0gYXR0cmlidXRlTWFwLT5sZW5ndGgo
KTsKKyAgICB1bnNpZ25lZCBzaXplID0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIEF0dHJpYnV0ZSog
YXR0cmlidXRlID0gYXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICBBdHRy
aWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgIGlm
IChhdHRyaWJ1dGVOYW1lTWF0Y2hlcyhhdHRyaWJ1dGUsIHNlbGVjdG9yQXR0cmlidXRlTmFtZSkg
JiYgKCF2YWx1ZSB8fCBhdHRyaWJ1dGUtPnZhbHVlKCkuaW1wbCgpID09IHZhbHVlKSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9N
U3RyaW5nTWFwLmNwcAppbmRleCBkZmYwYWQ3NTA3MjA2N2U1NTZjZTFlMjg2MTQ1MTI0MjdlMTMw
YzAzLi4zODIwMjJlY2RjM2EwYzQ4NGMxMmM5OTUyNDEzNDY5ZjhhNWVhOTBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAj
aW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlIDx3dGYv
QVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAt
MTQyLDI3ICsxNDEsMjcgQEAgdm9pZCBEYXRhc2V0RE9NU3RyaW5nTWFwOjpkZXJlZigpCiAKIHZv
aWQgRGF0YXNldERPTVN0cmluZ01hcDo6Z2V0TmFtZXMoVmVjdG9yPFN0cmluZz4mIG5hbWVzKQog
ewotICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFwID0gbV9lbGVtZW50LT51cGRhdGVkQXR0
cmlidXRlcygpOwotICAgIGlmIChhdHRyaWJ1dGVNYXApIHsKLSAgICAgICAgdW5zaWduZWQgbGVu
Z3RoID0gYXR0cmlidXRlTWFwLT5sZW5ndGgoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9
IGF0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpKTsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlk
QXR0cmlidXRlTmFtZShhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpKSkKLSAgICAgICAgICAgICAgICBu
YW1lcy5hcHBlbmQoY29udmVydEF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5TmFtZShhdHRyaWJ1dGUt
PmxvY2FsTmFtZSgpKSk7Ci0gICAgICAgIH0KKyAgICBpZiAoIW1fZWxlbWVudC0+aGFzQXR0cmli
dXRlcygpKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2VsZW1l
bnQtPmF0dHJpYnV0ZUNvdW50KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gbV9lbGVtZW50LT5hdHRy
aWJ1dGVJdGVtKGkpOworICAgICAgICBpZiAoaXNWYWxpZEF0dHJpYnV0ZU5hbWUoYXR0cmlidXRl
LT5sb2NhbE5hbWUoKSkpCisgICAgICAgICAgICBuYW1lcy5hcHBlbmQoY29udmVydEF0dHJpYnV0
ZU5hbWVUb1Byb3BlcnR5TmFtZShhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpKSk7CiAgICAgfQogfQog
CiBTdHJpbmcgRGF0YXNldERPTVN0cmluZ01hcDo6aXRlbShjb25zdCBTdHJpbmcmIG5hbWUpCiB7
Ci0gICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAgPSBtX2VsZW1lbnQtPnVwZGF0ZWRBdHRy
aWJ1dGVzKCk7Ci0gICAgaWYgKGF0dHJpYnV0ZU1hcCkgewotICAgICAgICB1bnNpZ25lZCBsZW5n
dGggPSBhdHRyaWJ1dGVNYXAtPmxlbmd0aCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0g
YXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOwotICAgICAgICAgICAgaWYgKHByb3BlcnR5
TmFtZU1hdGNoZXNBdHRyaWJ1dGVOYW1lKG5hbWUsIGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGUtPnZhbHVlKCk7Ci0gICAgICAgIH0KKyAg
ICBpZiAoIW1fZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQorICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIEF0
dHJpYnV0ZSogYXR0cmlidXRlID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAg
ICBpZiAocHJvcGVydHlOYW1lTWF0Y2hlc0F0dHJpYnV0ZU5hbWUobmFtZSwgYXR0cmlidXRlLT5s
b2NhbE5hbWUoKSkpCisgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlLT52YWx1ZSgpOwogICAg
IH0KIAogICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTE3MCwxNSArMTY5LDE2IEBAIFN0cmluZyBE
YXRhc2V0RE9NU3RyaW5nTWFwOjppdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogYm9vbCBEYXRh
c2V0RE9NU3RyaW5nTWFwOjpjb250YWlucyhjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgTmFt
ZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAgPSBtX2VsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7
Ci0gICAgaWYgKGF0dHJpYnV0ZU1hcCkgewotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRy
aWJ1dGVNYXAtPmxlbmd0aCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKLSAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0cmlidXRl
TWFwLT5hdHRyaWJ1dGVJdGVtKGkpOwotICAgICAgICAgICAgaWYgKHByb3BlcnR5TmFtZU1hdGNo
ZXNBdHRyaWJ1dGVOYW1lKG5hbWUsIGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkpKQotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgaWYgKCFtX2VsZW1lbnQtPmhhc0F0
dHJpYnV0ZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IG1fZWxl
bWVudC0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZU1hdGNoZXNB
dHRyaWJ1dGVOYW1lKG5hbWUsIGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCA0MTAwYjZkMmY0NWJlZGNmOGQ0MzY1OGE5MzkxNWNjZmRmMjZmNmVh
Li4xYjdiNjEzM2Q4ZjNjNmE4ZGViM2NjZTRhYmEyNzNhMzk2NDM0MjY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTg1NCwxNSArODU0LDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVu
dDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0aW9uQ28K
ICAgICAgICAgaWYgKGVjKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgTmFtZWRO
b2RlTWFwKiBhdHRycyA9IG9sZEVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAg
IGlmIChhdHRycykgewotICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cnMtPmxlbmd0
aCgpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
Ci0gICAgICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0o
aSk7Ci0gICAgICAgICAgICAgICAgbmV3RWxlbWVudC0+c2V0QXR0cmlidXRlKGF0dHItPm5hbWUo
KSwgYXR0ci0+dmFsdWUoKS5pbXBsKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KKyAg
ICAgICAgbmV3RWxlbWVudC0+c2V0QXR0cmlidXRlc0Zyb21FbGVtZW50KCpvbGRFbGVtZW50KTsK
ICAgICAgICAgbmV3RWxlbWVudC0+Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXMob2xkRWxlbWVu
dCk7CiAKICAgICAgICAgaWYgKGRlZXApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGFjMjgxYzU0
MTJiMGM5NDY3YTc2YTk2ZjdmNjJlNDE3NjMwNzNlODEuLjljY2UzYTg0NTI2MmU4YmE5ZGNhMzAz
ZmU0ZjcwZGYyNzczMDAyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMTMwLDYgKzEzMCw5IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAgICAgYm9vbCBoYXNBdHRyaWJ1dGVzKCkgY29uc3Q7CisgICAg
Ly8gVGhpcyB2YXJpYW50IHdpbGwgbm90IHVwZGF0ZSB0aGUgcG90ZW50aWFsbHkgaW52YWxpZCBh
dHRyaWJ1dGVzLiBUbyBiZSB1c2VkIHdoZW4gbm90IGludGVyZXN0ZWQKKyAgICAvLyBpbiBzdHls
ZSBhdHRyaWJ1dGUgb3Igb25lIG9mIHRoZSBTVkcgYW5pbWF0aW9uIGF0dHJpYnV0ZXMuCisgICAg
Ym9vbCBoYXNBdHRyaWJ1dGVzV2l0aG91dFVwZGF0ZSgpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNB
dHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBib29sIGhhc0F0dHJpYnV0
ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSkg
Y29uc3Q7CkBAIC0xNDksNiArMTUyLDEzIEBAIHB1YmxpYzoKICAgICAvLyBzbyB0aGlzIGZ1bmN0
aW9uIGlzIG5vdCBzdWl0YWJsZSBmb3Igbm9uLXN0eWxlIHVzZXMuCiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBpZEZvclN0eWxlUmVzb2x1dGlvbigpIGNvbnN0OwogCisgICAgLy8gSW50ZXJuYWwg
bWV0aG9kcyB0aGF0IGFzc3VtZSB0aGUgZXhpc3RlbmNlIG9mIGF0dHJpYnV0ZSBzdG9yYWdlLCBv
bmUgc2hvdWxkIHVzZSBoYXNBdHRyaWJ1dGVzKCkKKyAgICAvLyBiZWZvcmUgY2FsbGluZyB0aGVt
LgorICAgIHNpemVfdCBhdHRyaWJ1dGVDb3VudCgpIGNvbnN0OworICAgIEF0dHJpYnV0ZSogYXR0
cmlidXRlSXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgQXR0cmlidXRlKiBnZXRBdHRy
aWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZUF0
dHJpYnV0ZSh1bnNpZ25lZCBpbmRleCk7CisKICAgICB2b2lkIHNjcm9sbEludG9WaWV3KGJvb2wg
YWxpZ25Ub1RvcCA9IHRydWUpOwogICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChib29s
IGNlbnRlcklmTmVlZGVkID0gdHJ1ZSk7CiAKQEAgLTU5Myw2ICs2MDMsMTEgQEAgaW5saW5lIGNv
bnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6ZmFzdEdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lKQogICAgIHJldHVybiBudWxsQXRvbTsKIH0KIAoraW5saW5lIGJvb2wgRWxl
bWVudDo6aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSBjb25zdAoreworICAgIHJldHVybiBt
X2F0dHJpYnV0ZU1hcCAmJiAhbV9hdHRyaWJ1dGVNYXAtPmlzRW1wdHkoKTsKK30KKwogaW5saW5l
IGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6aWRGb3JTdHlsZVJlc29sdXRpb24oKSBjb25z
dAogewogICAgIEFTU0VSVChoYXNJRCgpKTsKQEAgLTYxOCw2ICs2MzMsMzAgQEAgaW5saW5lIHZv
aWQgRWxlbWVudDo6c2V0SWRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAg
ICBzZXRBdHRyaWJ1dGUoZG9jdW1lbnQoKS0+aWRBdHRyaWJ1dGVOYW1lKCksIHZhbHVlKTsKIH0K
IAoraW5saW5lIHNpemVfdCBFbGVtZW50OjphdHRyaWJ1dGVDb3VudCgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKG1fYXR0cmlidXRlTWFwKTsKKyAgICByZXR1cm4gbV9hdHRyaWJ1dGVNYXAtPmxlbmd0
aCgpOworfQorCitpbmxpbmUgQXR0cmlidXRlKiBFbGVtZW50OjphdHRyaWJ1dGVJdGVtKHVuc2ln
bmVkIGluZGV4KSBjb25zdAoreworICAgIEFTU0VSVChtX2F0dHJpYnV0ZU1hcCk7CisgICAgcmV0
dXJuIG1fYXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGluZGV4KTsKK30KKworaW5saW5lIEF0
dHJpYnV0ZSogRWxlbWVudDo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKSBjb25zdAoreworICAgIEFTU0VSVChtX2F0dHJpYnV0ZU1hcCk7CisgICAgcmV0dXJuIG1f
YXR0cmlidXRlTWFwLT5nZXRBdHRyaWJ1dGVJdGVtKG5hbWUpOworfQorCitpbmxpbmUgdm9pZCBF
bGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUodW5zaWduZWQgaW5kZXgpCit7CisgICAgQVNTRVJUKG1f
YXR0cmlidXRlTWFwKTsKKyAgICBtX2F0dHJpYnV0ZU1hcC0+cmVtb3ZlQXR0cmlidXRlKGluZGV4
KTsKK30KKwogaW5saW5lIE5hbWVkTm9kZU1hcCogRWxlbWVudDo6ZW5zdXJlQXR0cmlidXRlTWFw
KCkgY29uc3QKIHsKICAgICBpZiAoIW1fYXR0cmlidXRlTWFwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4
IDQxNTVjNjQyMTk0YjdjZWZjMmJmZjgzNzgzNGE2NjE1MTM2ZDNhNjUuLmZmZTY3YWJiMGI5MTQx
YWExZjFhYzNlYzI4NTMzZTE3ZWI1ZmVkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE4MjIsOSAr
MTgyMiw5IEBAIGJvb2wgTm9kZTo6aXNEZWZhdWx0TmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZXNwYWNlVVJJTWF5YmVFbXB0eSkgY29uc3QKICAgICAgICAgICAgIGlmIChlbGVtLT5w
cmVmaXgoKS5pc051bGwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS0+bmFtZXNwYWNl
VVJJKCkgPT0gbmFtZXNwYWNlVVJJOwogCi0gICAgICAgICAgICBpZiAoTmFtZWROb2RlTWFwKiBh
dHRycyA9IGVsZW0tPnVwZGF0ZWRBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cnMtPmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgICAg
ICAgICAgICAgQXR0cmlidXRlKiBhdHRyID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAg
ICAgICAgICBpZiAoZWxlbS0+aGFzQXR0cmlidXRlcygpKSB7CisgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW0tPmF0dHJpYnV0ZUNvdW50KCk7IGkrKykgeworICAg
ICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBlbGVtLT5hdHRyaWJ1dGVJdGVtKGkp
OwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHItPmxv
Y2FsTmFtZSgpID09IHhtbG5zQXRvbSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBh
dHRyLT52YWx1ZSgpID09IG5hbWVzcGFjZVVSSTsKQEAgLTE5MDgsOSArMTkwOCw5IEBAIFN0cmlu
ZyBOb2RlOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nICZwcmVmaXgpIGNvbnN0CiAg
ICAgICAgICAgICBpZiAoIWVsZW0tPm5hbWVzcGFjZVVSSSgpLmlzTnVsbCgpICYmIGVsZW0tPnBy
ZWZpeCgpID09IHByZWZpeCkKICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS0+bmFtZXNwYWNl
VVJJKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChOYW1lZE5vZGVNYXAqIGF0dHJz
ID0gZWxlbS0+dXBkYXRlZEF0dHJpYnV0ZXMoKSkgewotICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBhdHRycy0+bGVuZ3RoKCk7IGkrKykgewotICAgICAgICAgICAgICAg
ICAgICBBdHRyaWJ1dGUgKmF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAg
ICAgIGlmIChlbGVtLT5oYXNBdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZWxlbS0+YXR0cmlidXRlQ291bnQoKTsgaSsrKSB7CisgICAgICAg
ICAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IGVsZW0tPmF0dHJpYnV0ZUl0ZW0oaSk7CiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAoYXR0ci0+cHJlZml4
KCkgPT0geG1sbnNBdG9tICYmIGF0dHItPmxvY2FsTmFtZSgpID09IHByZWZpeCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkKQEAgLTE5NjIs
OSArMTk2MiwxMSBAQCBTdHJpbmcgTm9kZTo6bG9va3VwTmFtZXNwYWNlUHJlZml4KGNvbnN0IEF0
b21pY1N0cmluZyAmX25hbWVzcGFjZVVSSSwgY29uc3QgRWxlbQogICAgIGlmIChvcmlnaW5hbEVs
ZW1lbnQtPmxvb2t1cE5hbWVzcGFjZVVSSShwcmVmaXgoKSkgPT0gX25hbWVzcGFjZVVSSSkKICAg
ICAgICAgcmV0dXJuIHByZWZpeCgpOwogICAgIAotICAgIGlmIChOYW1lZE5vZGVNYXAqIGF0dHJz
ID0gdG9FbGVtZW50KHRoaXMpLT51cGRhdGVkQXR0cmlidXRlcygpKSB7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBhdHRycy0+bGVuZ3RoKCk7IGkrKykgewotICAgICAgICAgICAg
QXR0cmlidXRlKiBhdHRyID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgQVNTRVJUKGlz
RWxlbWVudE5vZGUoKSk7CisgICAgY29uc3QgRWxlbWVudCogdGhpc0VsZW1lbnQgPSB0b0VsZW1l
bnQodGhpcyk7CisgICAgaWYgKHRoaXNFbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpIHsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNFbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgp
OyBpKyspIHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IHRoaXNFbGVtZW50LT5hdHRy
aWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoYXR0ci0+cHJlZml4
KCkgPT0geG1sbnNBdG9tICYmIGF0dHItPnZhbHVlKCkgPT0gX25hbWVzcGFjZVVSSQogICAgICAg
ICAgICAgICAgICAgICAmJiBvcmlnaW5hbEVsZW1lbnQtPmxvb2t1cE5hbWVzcGFjZVVSSShhdHRy
LT5sb2NhbE5hbWUoKSkgPT0gX25hbWVzcGFjZVVSSSkKQEAgLTIxMDUsMTcgKzIxMDcsMTcgQEAg
dW5zaWduZWQgc2hvcnQgTm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24oTm9kZSogb3RoZXJO
b2RlKQogICAgICAgICBjaGFpbjIuYXBwZW5kKGF0dHIyKTsKICAgICAKICAgICBpZiAoYXR0cjEg
JiYgYXR0cjIgJiYgc3RhcnQxID09IHN0YXJ0MiAmJiBzdGFydDEpIHsKLSAgICAgICAgLy8gV2Ug
YXJlIGNvbXBhcmluZyB0d28gYXR0cmlidXRlcyBvbiB0aGUgc2FtZSBub2RlLiAgQ3Jhd2wgb3Vy
IGF0dHJpYnV0ZSBtYXAKLSAgICAgICAgLy8gYW5kIHNlZSB3aGljaCBvbmUgd2UgaGl0IGZpcnN0
LgotICAgICAgICBOYW1lZE5vZGVNYXAqIG1hcCA9IGF0dHIxLT5vd25lckVsZW1lbnQoKS0+dXBk
YXRlZEF0dHJpYnV0ZXMoKTsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gbWFwLT5sZW5ndGgo
KTsKKyAgICAgICAgLy8gV2UgYXJlIGNvbXBhcmluZyB0d28gYXR0cmlidXRlcyBvbiB0aGUgc2Ft
ZSBub2RlLiBDcmF3bCBvdXIgYXR0cmlidXRlIG1hcCBhbmQgc2VlIHdoaWNoIG9uZSB3ZSBoaXQg
Zmlyc3QuCisgICAgICAgIEVsZW1lbnQqIG93bmVyMSA9IGF0dHIxLT5vd25lckVsZW1lbnQoKTsK
KyAgICAgICAgb3duZXIxLT51cGRhdGVkQXR0cmlidXRlcygpOyAvLyBGb3JjZSB1cGRhdGUgaW52
YWxpZCBhdHRyaWJ1dGVzLgorICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBvd25lcjEtPmF0dHJp
YnV0ZUNvdW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkgewogICAgICAgICAgICAgLy8gSWYgbmVpdGhlciBvZiB0aGUgdHdvIGRldGVybWluaW5nIG5v
ZGVzIGlzIGEgY2hpbGQgbm9kZSBhbmQgbm9kZVR5cGUgaXMgdGhlIHNhbWUgZm9yIGJvdGggZGV0
ZXJtaW5pbmcgbm9kZXMsIHRoZW4gYW4gCiAgICAgICAgICAgICAvLyBpbXBsZW1lbnRhdGlvbi1k
ZXBlbmRlbnQgb3JkZXIgYmV0d2VlbiB0aGUgZGV0ZXJtaW5pbmcgbm9kZXMgaXMgcmV0dXJuZWQu
IFRoaXMgb3JkZXIgaXMgc3RhYmxlIGFzIGxvbmcgYXMgbm8gbm9kZXMgb2YKICAgICAgICAgICAg
IC8vIHRoZSBzYW1lIG5vZGVUeXBlIGFyZSBpbnNlcnRlZCBpbnRvIG9yIHJlbW92ZWQgZnJvbSB0
aGUgZGlyZWN0IGNvbnRhaW5lci4gVGhpcyB3b3VsZCBiZSB0aGUgY2FzZSwgZm9yIGV4YW1wbGUs
IAogICAgICAgICAgICAgLy8gd2hlbiBjb21wYXJpbmcgdHdvIGF0dHJpYnV0ZXMgb2YgdGhlIHNh
bWUgZWxlbWVudCwgYW5kIGluc2VydGluZyBvciByZW1vdmluZyBhZGRpdGlvbmFsIGF0dHJpYnV0
ZXMgbWlnaHQgY2hhbmdlIAogICAgICAgICAgICAgLy8gdGhlIG9yZGVyIGJldHdlZW4gZXhpc3Rp
bmcgYXR0cmlidXRlcy4KLSAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IG1hcC0+YXR0cmli
dXRlSXRlbShpKTsKKyAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IG93bmVyMS0+YXR0cmli
dXRlSXRlbShpKTsKICAgICAgICAgICAgIGlmIChhdHRyMS0+YXR0cigpID09IGF0dHIpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIERPQ1VNRU5UX1BPU0lUSU9OX0lNUExFTUVOVEFUSU9OX1NQRUNJ
RklDIHwgRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HOwogICAgICAgICAgICAgaWYgKGF0dHIy
LT5hdHRyKCkgPT0gYXR0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBw
bHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHAKaW5kZXggYTUxZGRkNWNmZWUyZjRjYWM1ZTA0ZDJlOWIxMDkzN2QwYjRmYTczZi4u
MWFkZGUxMGNmYzFlNTBlMmNhOThiMTZjYmM4OTIwMzViZjc2OGRjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTczLDggKzczLDcgQEAgYm9v
bCBpc0xlZ2FjeUFwcGxlU3R5bGVTcGFuKGNvbnN0IE5vZGUgKm5vZGUpCiBlbnVtIFNob3VsZFN0
eWxlQXR0cmlidXRlQmVFbXB0eSB7IEFsbG93Tm9uRW1wdHlTdHlsZUF0dHJpYnV0ZSwgU3R5bGVB
dHRyaWJ1dGVTaG91bGRCZUVtcHR5IH07CiBzdGF0aWMgYm9vbCBoYXNOb0F0dHJpYnV0ZU9yT25s
eVN0eWxlQXR0cmlidXRlKGNvbnN0IFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQsIFNob3VsZFN0eWxl
QXR0cmlidXRlQmVFbXB0eSBzaG91bGRTdHlsZUF0dHJpYnV0ZUJlRW1wdHkpCiB7Ci0gICAgTmFt
ZWROb2RlTWFwKiBtYXAgPSBlbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmICgh
bWFwIHx8IG1hcC0+aXNFbXB0eSgpKQorICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlcygp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHVuc2lnbmVkIG1hdGNoZWRBdHRyaWJ1dGVz
ID0gMDsKQEAgLTg0LDggKzgzLDggQEAgc3RhdGljIGJvb2wgaGFzTm9BdHRyaWJ1dGVPck9ubHlT
dHlsZUF0dHJpYnV0ZShjb25zdCBTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBTaG8KICAgICAgICAg
fHwgIWVsZW1lbnQtPmlubGluZVN0eWxlRGVjbCgpIHx8IGVsZW1lbnQtPmlubGluZVN0eWxlRGVj
bCgpLT5pc0VtcHR5KCkpKQogICAgICAgICBtYXRjaGVkQXR0cmlidXRlcysrOwogCi0gICAgQVNT
RVJUKG1hdGNoZWRBdHRyaWJ1dGVzIDw9IG1hcC0+bGVuZ3RoKCkpOwotICAgIHJldHVybiBtYXRj
aGVkQXR0cmlidXRlcyA9PSBtYXAtPmxlbmd0aCgpOworICAgIEFTU0VSVChtYXRjaGVkQXR0cmli
dXRlcyA8PSBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpKTsKKyAgICByZXR1cm4gbWF0Y2hlZEF0
dHJpYnV0ZXMgPT0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKIH0KIAogYm9vbCBpc1N0eWxl
U3Bhbk9yU3BhbldpdGhPbmx5U3R5bGVBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCogZWxlbWVudCkK
QEAgLTEwOCwxMCArMTA3LDkgQEAgc3RhdGljIGJvb2wgaXNFbXB0eUZvbnRUYWcoY29uc3QgTm9k
ZSAqbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY29uc3QgRWxlbWVudCAqZWxl
bSA9IHN0YXRpY19jYXN0PGNvbnN0IEVsZW1lbnQgKj4obm9kZSk7Ci0gICAgTmFtZWROb2RlTWFw
KiBtYXAgPSBlbGVtLT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmICghbWFwKQorICAgIGlm
ICghZWxlbS0+aGFzQXR0cmlidXRlcygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1
cm4gbWFwLT5pc0VtcHR5KCkgfHwgKG1hcC0+bGVuZ3RoKCkgPT0gMSAmJiBlbGVtLT5nZXRBdHRy
aWJ1dGUoY2xhc3NBdHRyKSA9PSBzdHlsZVNwYW5DbGFzc1N0cmluZygpKTsKKyAgICByZXR1cm4g
ZWxlbS0+YXR0cmlidXRlQ291bnQoKSA9PSAxICYmIGVsZW0tPmdldEF0dHJpYnV0ZShjbGFzc0F0
dHIpID09IHN0eWxlU3BhbkNsYXNzU3RyaW5nKCk7CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPEVs
ZW1lbnQ+IGNyZWF0ZUZvbnRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCBlNjIxODE1NjY3ZGE1N2M2NjA4ZWQxNjdh
ZmYzYWI3MGQ0NzQ2YTNlLi45ODIyNGYyNDMxNDEyZDIxMjhhZDBiY2ZiMTI1ZGYwZjBlNmRkNGU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC04MzIsOCArODMy
LDcgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmVsZW1lbnRJc1N0eWxlZFNwYW5PckhUTUxFcXVpdmFs
ZW50KGNvbnN0IEhUTUxFbGVtZW50KiBlbGVtZW4KICAgICAgICAgfQogICAgIH0KIAotICAgIGNv
bnN0IE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFwID0gZWxlbWVudC0+YXR0cmlidXRlTWFwKCk7
Ci0gICAgaWYgKCFhdHRyaWJ1dGVNYXAgfHwgYXR0cmlidXRlTWFwLT5pc0VtcHR5KCkpCisgICAg
aWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgIHJldHVybiBlbGVtZW50SXNT
cGFuT3JFbGVtZW50RXF1aXZhbGVudDsgLy8gc3BhbiwgYiwgZXRjLi4uIHdpdGhvdXQgYW55IGF0
dHJpYnV0ZXMKIAogICAgIHVuc2lnbmVkIG1hdGNoZWRBdHRyaWJ1dGVzID0gMDsKQEAgLTg2MSw4
ICs4NjAsOCBAQCBib29sIEVkaXRpbmdTdHlsZTo6ZWxlbWVudElzU3R5bGVkU3Bhbk9ySFRNTEVx
dWl2YWxlbnQoY29uc3QgSFRNTEVsZW1lbnQqIGVsZW1lbgogICAgIH0KIAogICAgIC8vIGZvbnQg
d2l0aCBjb2xvciBhdHRyaWJ1dGUsIHNwYW4gd2l0aCBzdHlsZSBhdHRyaWJ1dGUsIGV0Yy4uLgot
ICAgIEFTU0VSVChtYXRjaGVkQXR0cmlidXRlcyA8PSBhdHRyaWJ1dGVNYXAtPmxlbmd0aCgpKTsK
LSAgICByZXR1cm4gbWF0Y2hlZEF0dHJpYnV0ZXMgPj0gYXR0cmlidXRlTWFwLT5sZW5ndGgoKTsK
KyAgICBBU1NFUlQobWF0Y2hlZEF0dHJpYnV0ZXMgPD0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQo
KSk7CisgICAgcmV0dXJuIG1hdGNoZWRBdHRyaWJ1dGVzID49IGVsZW1lbnQtPmF0dHJpYnV0ZUNv
dW50KCk7CiB9CiAKIHZvaWQgRWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0KGNvbnN0IFBv
c2l0aW9uJiBwb3NpdGlvbiwgU2hvdWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uIHNob3VsZFBy
ZXNlcnZlV3JpdGluZ0RpcmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCmluZGV4IGU2NDZiNTFm
MjJhYWVhODFkN2NmMDdkMzczZTk4OGJkNjkxMzU2NjkuLjRhZWM0MTlhMTFkOWI5M2U4M2IxMTU2
Mjg2NjFlOTgzZjUyYWZmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcApAQCAtNTEsOCArNTEsNyBA
QCBzdGF0aWMgRWxlbWVudCogaGlnaGVzdFZpc3VhbGx5RXF1aXZhbGVudERpdkJlbG93Um9vdChF
bGVtZW50KiBzdGFydEJsb2NrKQogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcmV0dXJuIGEgcm9v
dCBub2RlIChpZiBpdCBoYXBwZW5zIHRvIGJlIGEgZGl2LCBlLmcuLCBpbiBhIGRvY3VtZW50IGZy
YWdtZW50KSBiZWNhdXNlIHRoZXJlIGFyZSBubwogICAgIC8vIHNpYmxpbmdzIGZvciB1cyB0byBh
cHBlbmQgdG8uCiAgICAgd2hpbGUgKCFjdXJCbG9jay0+bmV4dFNpYmxpbmcoKSAmJiBjdXJCbG9j
ay0+cGFyZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKGRpdlRhZykgJiYgY3VyQmxvY2stPnBhcmVu
dEVsZW1lbnQoKS0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIE5hbWVkTm9kZU1hcCogYXR0
cmlidXRlcyA9IGN1ckJsb2NrLT5wYXJlbnRFbGVtZW50KCktPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7
Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzICYmICFhdHRyaWJ1dGVzLT5pc0VtcHR5KCkpCisgICAg
ICAgIGlmIChjdXJCbG9jay0+cGFyZW50RWxlbWVudCgpLT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY3VyQmxvY2sgPSBjdXJCbG9jay0+cGFyZW50RWxlbWVu
dCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNj
dW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5j
cHAKaW5kZXggNTIyNmIyMTRjMjU4MTE3NjA5MzVjNTY2OTY0ZTc2MzBmMDJmOWQxOC4uMzA2YTg0
NjU1OGU2YmMyYTE2ZGE4NjdmMmEyMGM4NzZkNjIyZTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKQEAgLTM0OSwxMSArMzQ5LDEwIEBAIHZvaWQg
TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEVsZW1lbnQoU3RyaW5nQnVpbGRlciYgb3V0LCBFbGVt
ZW50KiBlbGVtZW50LCBOYW1lCiB7CiAgICAgYXBwZW5kT3BlblRhZyhvdXQsIGVsZW1lbnQsIG5h
bWVzcGFjZXMpOwogCi0gICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gZWxlbWVudC0+dXBk
YXRlZEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAoYXR0cmlidXRlcykgewotICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBhdHRyaWJ1dGVzLT5sZW5ndGgoKTsKKyAgICBpZiAoZWxlbWVudC0+aGFzQXR0
cmlidXRlcygpKSB7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGVsZW1lbnQtPmF0dHJpYnV0
ZUNvdW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KyspCi0gICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGUob3V0LCBlbGVtZW50LCAqYXR0cmlidXRl
cy0+YXR0cmlidXRlSXRlbShpKSwgbmFtZXNwYWNlcyk7CisgICAgICAgICAgICBhcHBlbmRBdHRy
aWJ1dGUob3V0LCBlbGVtZW50LCAqZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKSwgbmFtZXNwYWNl
cyk7CiAgICAgfQogCiAgICAgLy8gR2l2ZSBhbiBvcHBvcnR1bml0eSB0byBzdWJjbGFzc2VzIHRv
IGFkZCB0aGVpciBvd24gYXR0cmlidXRlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRl
eCA5YjE5MDkwOTFhMTA1YzEzNjVlYzcxMmZiOTA1YzdiMjE0OTExMDljLi5jOWEwZTc4ZGQxOTZl
ZGE5ZjIwMGM2YWNmZTRkM2NlNDM3ZWYxZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CkBAIC0xMDQsMTIgKzEwNCwxMSBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZVVSTHMoTm9kZSogbm9k
ZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMKQogICAgIGZvciAoTm9kZSogbiA9IG5vZGU7IG4gIT0g
ZW5kOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CiAgICAgICAgIGlmIChuLT5pc0VsZW1l
bnROb2RlKCkpIHsKICAgICAgICAgICAgIEVsZW1lbnQqIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obik7Ci0gICAgICAgICAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMgPSBlLT51cGRhdGVk
QXR0cmlidXRlcygpOwotICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGVzKQorICAgICAgICAgICAg
aWYgKCFlLT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRyaWJ1dGVzLT5sZW5ndGgoKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGUtPmF0dHJpYnV0ZUNvdW50KCk7CiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICBB
dHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAg
ICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlLT5hdHRyaWJ1dGVJdGVtKGkpOwog
ICAgICAgICAgICAgICAgIGlmIChlLT5pc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpKQogICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VzLmFwcGVuZChBdHRyaWJ1dGVDaGFuZ2UoZSwgYXR0cmlidXRl
LT5uYW1lKCksIEtVUkwocGFyc2VkQmFzZVVSTCwgYXR0cmlidXRlLT52YWx1ZSgpKS5zdHJpbmco
KSkpOwogICAgICAgICAgICAgfQpAQCAtMjg5LDEyICsyODgsMTEgQEAgdm9pZCBTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvcjo6YXBwZW5kRWxlbWVudChTdHJpbmdCdWlsZGVyJiBvdXQsIEVsZW1lbnQq
IGVsZW1lbnQKICAgICBjb25zdCBib29sIGRvY3VtZW50SXNIVE1MID0gZWxlbWVudC0+ZG9jdW1l
bnQoKS0+aXNIVE1MRG9jdW1lbnQoKTsKICAgICBhcHBlbmRPcGVuVGFnKG91dCwgZWxlbWVudCwg
MCk7CiAKLSAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMgPSBlbGVtZW50LT51cGRhdGVkQXR0
cmlidXRlcygpOwotICAgIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCA9IGF0dHJpYnV0ZXMgPyBhdHRy
aWJ1dGVzLT5sZW5ndGgoKSA6IDA7CisgICAgY29uc3QgdW5zaWduZWQgbGVuZ3RoID0gZWxlbWVu
dC0+aGFzQXR0cmlidXRlcygpID8gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKSA6IDA7CiAgICAg
Y29uc3QgYm9vbCBzaG91bGRBbm5vdGF0ZU9yRm9yY2VJbmxpbmUgPSBlbGVtZW50LT5pc0hUTUxF
bGVtZW50KCkgJiYgKHNob3VsZEFubm90YXRlKCkgfHwgYWRkRGlzcGxheUlubGluZSk7CiAgICAg
Y29uc3QgYm9vbCBzaG91bGRPdmVycmlkZVN0eWxlQXR0ciA9IHNob3VsZEFubm90YXRlT3JGb3Jj
ZUlubGluZSB8fCBzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUoZWxlbWVudCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBBdHRyaWJ1dGUq
IGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgIEF0dHJp
YnV0ZSogYXR0cmlidXRlID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgLy8g
V2UnbGwgaGFuZGxlIHRoZSBzdHlsZSBhdHRyaWJ1dGUgc2VwYXJhdGVseSwgYmVsb3cuCiAgICAg
ICAgIGlmIChhdHRyaWJ1dGUtPm5hbWUoKSA9PSBzdHlsZUF0dHIgJiYgc2hvdWxkT3ZlcnJpZGVT
dHlsZUF0dHIpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bWJlZEVsZW1lbnQuY3BwCmluZGV4IGRlNGY1YmJhMzM3MDM4YTQ5ZmFmODQ4ZGVjMmYxZjRmOGY2
MTg0YzUuLjE2NWVmYjljMGM2YTk1NTA3ZWJhM2FkNWFlOGI1YWQyZTBkYWUyNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAtMTA4LDEyICsxMDgsMTEgQEAg
dm9pZCBIVE1MRW1iZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAK
IHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6cGFyYW1ldGVyc0ZvclBsdWdpbihWZWN0b3I8U3RyaW5n
PiYgcGFyYW1OYW1lcywgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQogewotICAgIE5hbWVk
Tm9kZU1hcCogYXR0cmlidXRlcyA9IHVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKCFhdHRy
aWJ1dGVzKQorICAgIGlmICghaGFzQXR0cmlidXRlcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRlcy0+bGVuZ3RoKCk7ICsraSkgewot
ICAgICAgICBBdHRyaWJ1dGUqIGl0ID0gYXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRlQ291bnQoKTsgKytpKSB7CisgICAg
ICAgIEF0dHJpYnV0ZSogaXQgPSBhdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICBwYXJhbU5hbWVz
LmFwcGVuZChpdC0+bG9jYWxOYW1lKCkuc3RyaW5nKCkpOwogICAgICAgICBwYXJhbVZhbHVlcy5h
cHBlbmQoaXQtPnZhbHVlKCkuc3RyaW5nKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGY0OTY3NTFkOWVkMTExYjUzNGQ1NDU4ZGY1MGM3MDE0
MWNiNjMxODcuLmZjZWFhMzNiMjhlNjkzM2Q2ZDMwYWE0NTlmNjYyOTQ5ZWM5NWE2ZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNTQ1LDEzICs1NDUsMTIg
QEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICAgICAgcmVnaXN0ZXJG
b3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogCiAgICAgaWYgKGRpZFJlc3BlY3RIZWln
aHRBbmRXaWR0aCAhPSBtX2lucHV0VHlwZS0+c2hvdWxkUmVzcGVjdEhlaWdodEFuZFdpZHRoQXR0
cmlidXRlcygpKSB7Ci0gICAgICAgIE5hbWVkTm9kZU1hcCogbWFwID0gYXR0cmlidXRlTWFwKCk7
Ci0gICAgICAgIEFTU0VSVChtYXApOwotICAgICAgICBpZiAoQXR0cmlidXRlKiBoZWlnaHQgPSBt
YXAtPmdldEF0dHJpYnV0ZUl0ZW0oaGVpZ2h0QXR0cikpCisgICAgICAgIEFTU0VSVChhdHRyaWJ1
dGVNYXAoKSk7CisgICAgICAgIGlmIChBdHRyaWJ1dGUqIGhlaWdodCA9IGdldEF0dHJpYnV0ZUl0
ZW0oaGVpZ2h0QXR0cikpCiAgICAgICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGhlaWdodCk7Ci0g
ICAgICAgIGlmIChBdHRyaWJ1dGUqIHdpZHRoID0gbWFwLT5nZXRBdHRyaWJ1dGVJdGVtKHdpZHRo
QXR0cikpCisgICAgICAgIGlmIChBdHRyaWJ1dGUqIHdpZHRoID0gZ2V0QXR0cmlidXRlSXRlbSh3
aWR0aEF0dHIpKQogICAgICAgICAgICAgYXR0cmlidXRlQ2hhbmdlZCh3aWR0aCk7Ci0gICAgICAg
IGlmIChBdHRyaWJ1dGUqIGFsaWduID0gbWFwLT5nZXRBdHRyaWJ1dGVJdGVtKGFsaWduQXR0cikp
CisgICAgICAgIGlmIChBdHRyaWJ1dGUqIGFsaWduID0gZ2V0QXR0cmlidXRlSXRlbShhbGlnbkF0
dHIpKQogICAgICAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChhbGlnbik7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGVhYjE4YWM5NzgyNjli
NDQ0Y2IxODNlMDA1MGQ2MDkyMzQzMmE1MWUuLjU0NDg5MGIzYzQ1MWUxZDZjM2Y2Yjc3NmQ4YTQ4
ODFhM2FlY2VmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3Bw
CkBAIC0xNzcsMTAgKzE3Nyw5IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnBhcmFtZXRlcnNG
b3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxTCiAgICAgfQogICAg
IAogICAgIC8vIFR1cm4gdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIDxvYmplY3Q+IGVsZW1lbnQgaW50
byBhcnJheXMsIGJ1dCBkb24ndCBvdmVycmlkZSA8cGFyYW0+IHZhbHVlcy4KLSAgICBOYW1lZE5v
ZGVNYXAqIGF0dHJpYnV0ZXMgPSB1cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmIChhdHRyaWJ1
dGVzKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLT5sZW5n
dGgoKTsgKytpKSB7Ci0gICAgICAgICAgICBBdHRyaWJ1dGUqIGl0ID0gYXR0cmlidXRlcy0+YXR0
cmlidXRlSXRlbShpKTsKKyAgICBpZiAoaGFzQXR0cmlidXRlcygpKSB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVDb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAg
IEF0dHJpYnV0ZSogaXQgPSBhdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lID0gaXQtPm5hbWUoKS5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgIGlm
ICghdW5pcXVlUGFyYW1OYW1lcy5jb250YWlucyhuYW1lLmltcGwoKSkpIHsKICAgICAgICAgICAg
ICAgICBwYXJhbU5hbWVzLmFwcGVuZChuYW1lLnN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQYXJhbUVsZW1lbnQuY3BwCmluZGV4IGUwNTUyYmEyYzk2ZDMxZGVhYzUyODBiZmNmZGEz
YTFiYTU3NzM2YTIuLmMwZjkxOTk1MTdlNWE0ZGRmMzU3NmUyYmU3YWI5ODIwOWI3OTA5YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcApAQCAtNjYsNyArNjYsNyBA
QCB2b2lkIEhUTUxQYXJhbUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikK
IGJvb2wgSFRNTFBhcmFtRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKSBj
b25zdAogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gdmFsdWVBdHRyICYmIGhhc0F0dHJpYnV0
ZXMoKSkgewotICAgICAgICBBdHRyaWJ1dGUqIG5hbWVBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVNYXAo
KS0+Z2V0QXR0cmlidXRlSXRlbShuYW1lQXR0cik7CisgICAgICAgIEF0dHJpYnV0ZSogbmFtZUF0
dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZUl0ZW0obmFtZUF0dHIpOwogICAgICAgICBpZiAobmFtZUF0
dHJpYnV0ZSkgewogICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IG5hbWVB
dHRyaWJ1dGUtPnZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoaXNVUkxQYXJhbWV0ZXIodmFsdWUp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdF
bGVtZW50TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGlu
Z0VsZW1lbnRMaXN0LmNwcAppbmRleCBmMzMxYWY3ZTcwYjZiNWRjNWQxOWE4MTQ3YmU3YTI4NGIz
ZTYyOWRlLi4wMTQ1ZGUwZTZmMzllMDE5MDBjMjQxNWI0N2Q5ZTY1N2E1MjFlZGYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1l
bnRMaXN0LmNwcApAQCAtNDAsOSArNDAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBOb2Fo
J3MgQXJrIG9mIEZvcm1hdHRpbmcgRWxlbWVudHMgY2FuIGZpdCB0aHJlZSBvZiBlYWNoIGVsZW1l
bnQuCiBzdGF0aWMgY29uc3Qgc2l6ZV90IGtOb2Foc0Fya0NhcGFjaXR5ID0gMzsKIAotc3RhdGlj
IGlubGluZSBzaXplX3QgYXR0cmlidXRlQ291bnQoRWxlbWVudCogZWxlbWVudCkKK3N0YXRpYyBp
bmxpbmUgc2l6ZV90IGF0dHJpYnV0ZUNvdW50V2l0aG91dFVwZGF0ZShFbGVtZW50KiBlbGVtZW50
KQogewotICAgIHJldHVybiBlbGVtZW50LT5hdHRyaWJ1dGVNYXAoKSA/IGVsZW1lbnQtPmF0dHJp
YnV0ZU1hcCgpLT5sZW5ndGgoKSA6IDA7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0F0dHJpYnV0
ZXNXaXRob3V0VXBkYXRlKCkgPyBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpIDogMDsKIH0KIAog
SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdCgpCkBA
IC0xNDIsNyArMTQyLDcgQEAgdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0Ojp0cnlUb0Vu
c3VyZU5vYWhzQXJrQ29uZGl0aW9uUXVpY2tseShFbGVtZW50KiBuZXcKICAgICAvLyBvZiBhIHF1
aWNrbHkgZW5zdXJpbmcgdGhlIGNvbmRpdGlvbi4KICAgICBWZWN0b3I8RWxlbWVudCosIDEwPiBj
YW5kaWRhdGVzOwogCi0gICAgc2l6ZV90IG5ld0VsZW1lbnRBdHRyaWJ1dGVDb3VudCA9IGF0dHJp
YnV0ZUNvdW50KG5ld0VsZW1lbnQpOworICAgIHNpemVfdCBuZXdFbGVtZW50QXR0cmlidXRlQ291
bnQgPSBhdHRyaWJ1dGVDb3VudFdpdGhvdXRVcGRhdGUobmV3RWxlbWVudCk7CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gbV9lbnRyaWVzLnNpemUoKTsgaTsgKSB7CiAgICAgICAgIC0taTsKQEAgLTE1
NCw3ICsxNTQsNyBAQCB2b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJl
Tm9haHNBcmtDb25kaXRpb25RdWlja2x5KEVsZW1lbnQqIG5ldwogICAgICAgICBFbGVtZW50KiBj
YW5kaWRhdGUgPSBlbnRyeS5lbGVtZW50KCk7CiAgICAgICAgIGlmIChuZXdFbGVtZW50LT50YWdR
TmFtZSgpICE9IGNhbmRpZGF0ZS0+dGFnUU5hbWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBpZiAoYXR0cmlidXRlQ291bnQoY2FuZGlkYXRlKSAhPSBuZXdFbGVtZW50QXR0cmli
dXRlQ291bnQpCisgICAgICAgIGlmIChhdHRyaWJ1dGVDb3VudFdpdGhvdXRVcGRhdGUoY2FuZGlk
YXRlKSAhPSBuZXdFbGVtZW50QXR0cmlidXRlQ291bnQpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZChjYW5kaWRhdGUpOwpAQCAtMTc4LDE4ICsxNzgs
MTYgQEAgdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjplbnN1cmVOb2Foc0Fya0NvbmRp
dGlvbihFbGVtZW50KiBuZXdFbGVtZW50KQogICAgIFZlY3RvcjxFbGVtZW50Kj4gcmVtYWluaW5n
Q2FuZGlkYXRlczsKICAgICByZW1haW5pbmdDYW5kaWRhdGVzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoY2FuZGlkYXRlcy5zaXplKCkpOwogCi0gICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAg
PSBuZXdFbGVtZW50LT5hdHRyaWJ1dGVNYXAoKTsKLSAgICBzaXplX3QgbmV3RWxlbWVudEF0dHJp
YnV0ZUNvdW50ID0gYXR0cmlidXRlQ291bnQobmV3RWxlbWVudCk7CisgICAgc2l6ZV90IG5ld0Vs
ZW1lbnRBdHRyaWJ1dGVDb3VudCA9IGF0dHJpYnV0ZUNvdW50V2l0aG91dFVwZGF0ZShuZXdFbGVt
ZW50KTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3RWxlbWVudEF0dHJpYnV0ZUNv
dW50OyArK2kpIHsKLSAgICAgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1dGVOYW1lID0gYXR0cmli
dXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGkpLT5uYW1lKCk7Ci0gICAgICAgIEF0b21pY1N0cmluZyBh
dHRyaWJ1dGVWYWx1ZSA9IG5ld0VsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZSk7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gbmV3RWxlbWVudC0+YXR0cmlidXRl
SXRlbShpKTsKIAogICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGNhbmRpZGF0ZXMuc2l6
ZSgpOyArK2opIHsKICAgICAgICAgICAgIEVsZW1lbnQqIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZXNb
al07CiAKICAgICAgICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgc2hvdWxkIGFscmVhZHkgaGF2
ZSBiZWVuIGNoZWNrZWQgYnkgdHJ5VG9FbnN1cmVOb2Foc0Fya0NvbmRpdGlvblF1aWNrbHkuCi0g
ICAgICAgICAgICBBU1NFUlQobmV3RWxlbWVudC0+YXR0cmlidXRlTWFwKCktPmxlbmd0aCgpID09
IGNhbmRpZGF0ZS0+YXR0cmlidXRlTWFwKCktPmxlbmd0aCgpKTsKKyAgICAgICAgICAgIEFTU0VS
VChuZXdFbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpID09IGNhbmRpZGF0ZS0+YXR0cmlidXRlQ291
bnQoKSk7CiAgICAgICAgICAgICBBU1NFUlQobmV3RWxlbWVudC0+dGFnUU5hbWUoKSA9PSBjYW5k
aWRhdGUtPnRhZ1FOYW1lKCkpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogVGVjaG5pY2FsbHkg
d2Ugc2hvdWxkbid0IHJlYWQgdGhpcyBpbmZvcm1hdGlvbiBiYWNrIGZyb20KQEAgLTE5OSw3ICsx
OTcsNyBAQCB2b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Q6OmVuc3VyZU5vYWhzQXJrQ29u
ZGl0aW9uKEVsZW1lbnQqIG5ld0VsZW1lbnQpCiAgICAgICAgICAgICAvLyB0aGF0IGltcGxlbWVu
dGF0aW9ucyBjYW4gcnVuIG9mZiB0aGUgbWFpbiB0aHJlYWQuIElmIEphdmFTY3JpcHQKICAgICAg
ICAgICAgIC8vIGNoYW5nZXMgdGhlIGF0dHJpYnV0ZXMgdmFsdWVzLCB3ZSBjb3VsZCBnZXQgYSBz
bGlnaHRseSB3cm9uZwogICAgICAgICAgICAgLy8gb3V0cHV0IGhlcmUuCi0gICAgICAgICAgICBp
ZiAoY2FuZGlkYXRlLT5mYXN0R2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpID09IGF0dHJpYnV0
ZVZhbHVlKQorICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+ZmFzdEdldEF0dHJpYnV0ZShhdHRy
aWJ1dGUtPm5hbWUoKSkgPT0gYXR0cmlidXRlLT52YWx1ZSgpKQogICAgICAgICAgICAgICAgIHJl
bWFpbmluZ0NhbmRpZGF0ZXMuYXBwZW5kKGNhbmRpZGF0ZSk7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRleCAzYzlkODliNWRkMWNmYmEzYWI0MmUw
MjU5NGMxNWI0NzAyNDAzZjU0Li42M2FmYTk2MzkwMTAzNjI2ZTkxZjZjNWE3YjZhYTQ3OWU3Yzlh
OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAtMTYwLDE2ICsx
NjAsMTcgQEAgdm9pZCBET01FZGl0b3I6OmlubmVyUGF0Y2hOb2RlKERpZ2VzdCogb2xkRGlnZXN0
LCBEaWdlc3QqIG5ld0RpZ2VzdCwgRXhjZXB0aW9uQ28KICAgICBFbGVtZW50KiBvbGRFbGVtZW50
ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG9sZE5vZGUpOwogICAgIEVsZW1lbnQqIG5ld0VsZW1l
bnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obmV3Tm9kZSk7CiAgICAgaWYgKG9sZERpZ2VzdC0+
bV9hdHRyc1NIQTEgIT0gbmV3RGlnZXN0LT5tX2F0dHJzU0hBMSkgewotICAgICAgICBOYW1lZE5v
ZGVNYXAqIG9sZEF0dHJpYnV0ZU1hcCA9IG9sZEVsZW1lbnQtPmF0dHJpYnV0ZU1hcCgpOwotCi0g
ICAgICAgIHdoaWxlIChvbGRBdHRyaWJ1dGVNYXAgJiYgb2xkQXR0cmlidXRlTWFwLT5sZW5ndGgo
KSkKLSAgICAgICAgICAgIG9sZEF0dHJpYnV0ZU1hcC0+cmVtb3ZlQXR0cmlidXRlKDApOworICAg
ICAgICAvLyBGSVhNRTogQ3JlYXRlIGEgZnVuY3Rpb24gaW4gRWxlbWVudCBmb3IgcmVtb3Zpbmcg
YWxsIHByb3BlcnRpZXMuIFRha2UgaW4gYWNjb3VudCB3aGV0aGVyIGRpZC93aWxsTW9kaWZ5QXR0
cmlidXRlIGFyZSBpbXBvcnRhbnQuCisgICAgICAgIGlmIChvbGRFbGVtZW50LT5oYXNBdHRyaWJ1
dGVzV2l0aG91dFVwZGF0ZSgpKSB7CisgICAgICAgICAgICB3aGlsZSAob2xkRWxlbWVudC0+YXR0
cmlidXRlQ291bnQoKSkKKyAgICAgICAgICAgICAgICBvbGRFbGVtZW50LT5yZW1vdmVBdHRyaWJ1
dGUoMCk7CisgICAgICAgIH0KIAotICAgICAgICBOYW1lZE5vZGVNYXAqIG5ld0F0dHJpYnV0ZU1h
cCA9IG5ld0VsZW1lbnQtPmF0dHJpYnV0ZU1hcCgpOwotICAgICAgICBpZiAobmV3QXR0cmlidXRl
TWFwKSB7Ci0gICAgICAgICAgICBzaXplX3QgbnVtQXR0cnMgPSBuZXdBdHRyaWJ1dGVNYXAtPmxl
bmd0aCgpOworICAgICAgICAvLyBGSVhNRTogQ3JlYXRlIGEgZnVuY3Rpb24gaW4gRWxlbWVudCBm
b3IgY29weWluZyBwcm9wZXJ0aWVzLiBzZXRBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoKSBpcyBjbG9z
ZSBidXQgbm90IGVub3VnaCBmb3IgdGhpcyBjYXNlLgorICAgICAgICBpZiAobmV3RWxlbWVudC0+
aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSkgeworICAgICAgICAgICAgc2l6ZV90IG51bUF0
dHJzID0gbmV3RWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtQXR0cnM7ICsraSkgewotICAgICAgICAgICAgICAgIGNvbnN0IEF0
dHJpYnV0ZSogYXR0cmlidXRlID0gbmV3QXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOwor
ICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gbmV3RWxlbWVudC0+
YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgICAgICAgICBvbGRFbGVtZW50LT5zZXRBdHRyaWJ1
dGUoYXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTM4NCwxMiArMzg1LDExIEBAIFBhc3NPd25QdHI8RE9NRWRpdG9yOjpE
aWdlc3Q+IERPTUVkaXRvcjo6Y3JlYXRlRGlnZXN0KE5vZGUqIG5vZGUsIFVudXNlZE5vZGVzTWFw
CiAgICAgICAgIH0KICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1l
bnQqPihub2RlKTsKIAotICAgICAgICBOYW1lZE5vZGVNYXAqIGF0dHJNYXAgPSBlbGVtZW50LT5h
dHRyaWJ1dGVNYXAoKTsKLSAgICAgICAgaWYgKGF0dHJNYXAgJiYgYXR0ck1hcC0+bGVuZ3RoKCkp
IHsKLSAgICAgICAgICAgIHNpemVfdCBudW1BdHRycyA9IGF0dHJNYXAtPmxlbmd0aCgpOworICAg
ICAgICBpZiAoZWxlbWVudC0+aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSkgeworICAgICAg
ICAgICAgc2l6ZV90IG51bUF0dHJzID0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICAg
ICAgICAgIFNIQTEgYXR0cnNTSEExOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1BdHRyczsgKytpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRy
aWJ1dGUgPSBhdHRyTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICAgICAgICAgIGNvbnN0
IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAg
ICAgICAgICAgICBhZGRTdHJpbmdUb1NIQTEoYXR0cnNTSEExLCBhdHRyaWJ1dGUtPm5hbWUoKS50
b1N0cmluZygpKTsKICAgICAgICAgICAgICAgICBhZGRTdHJpbmdUb1NIQTEoYXR0cnNTSEExLCBh
dHRyaWJ1dGUtPnZhbHVlKCkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggYjQzMDdmOTM1ZDQ3N2YxMjgxMTVk
ODFkY2E3MjdmNDMwNDA0NGFhZS4uNDNhY2JiNmY5ZGUxZjNmY2M3ZDlmYjM5MDY4NTA0N2YzZGJh
ZTY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCkBAIC01MzAsMTcgKzUzMCwxNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRBdHRy
aWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGVsZW1lbgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgTmFtZWROb2RlTWFwKiBhdHRyTWFwID0gdG9I
VE1MRWxlbWVudChjaGlsZCktPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKCFhdHRyTWFw
ICYmIG5hbWUpIHsKKyAgICBFbGVtZW50KiBjaGlsZEVsZW1lbnQgPSB0b0VsZW1lbnQoY2hpbGQp
OworICAgIGlmICghY2hpbGRFbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkgJiYgbmFtZSkgewogICAg
ICAgICBlbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoKm5hbWUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgYm9vbCBmb3VuZE9yaWdpbmFsQXR0cmlidXRlID0gZmFsc2U7Ci0gICAgdW5z
aWduZWQgbnVtQXR0cnMgPSBhdHRyTWFwLT5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBudW1BdHRy
cyA9IGNoaWxkRWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtQXR0cnM7ICsraSkgewogICAgICAgICAvLyBBZGQgYXR0cmlidXRlIHBhaXIK
LSAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyTWFwLT5hdHRyaWJ1dGVJ
dGVtKGkpOworICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGNoaWxkRWxlbWVu
dC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgZm91bmRPcmlnaW5hbEF0dHJpYnV0ZSA9IGZv
dW5kT3JpZ2luYWxBdHRyaWJ1dGUgfHwgKG5hbWUgJiYgYXR0cmlidXRlLT5uYW1lKCkudG9TdHJp
bmcoKSA9PSAqbmFtZSk7CiAgICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUt
Pm5hbWUoKSwgYXR0cmlidXRlLT52YWx1ZSgpKTsKICAgICB9CkBAIC03ODEsMTQgKzc4MSwxNCBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLy8gR28gdGhyb3VnaCBhbGwgYXR0cmli
dXRlcyBhbmQgc2VyaWFsaXplIHRoZW0uCi0gICAgICAgICAgICAgICAgY29uc3QgTmFtZWROb2Rl
TWFwKiBhdHRyTWFwID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT51cGRhdGVkQXR0cmli
dXRlcygpOwotICAgICAgICAgICAgICAgIGlmICghYXR0ck1hcCkKKyAgICAgICAgICAgICAgICBj
b25zdCBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG5vZGUpOworICAgICAgICAgICAgICAg
IGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bUF0dHJzID0gYXR0ck1hcC0+bGVuZ3Ro
KCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtQXR0cnMgPSBlbGVtZW50LT5hdHRyaWJ1
dGVDb3VudCgpOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1B
dHRyczsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEFkZCBhdHRyaWJ1dGUgcGFpcgot
ICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJNYXAt
PmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSog
YXR0cmlidXRlID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkuZmluZCh3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5
KSAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q29sbGVjdG9y
LmFkZChub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE1OSwxMyAr
MTE1OSwxMiBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JET01BZ2VudDo6
YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZQogewogICAgIFJlZlB0cjxJbnNwZWN0
b3JBcnJheT4gYXR0cmlidXRlc1ZhbHVlID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogICAg
IC8vIEdvIHRocm91Z2ggYWxsIGF0dHJpYnV0ZXMgYW5kIHNlcmlhbGl6ZSB0aGVtLgotICAgIGNv
bnN0IE5hbWVkTm9kZU1hcCogYXR0ck1hcCA9IGVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7
Ci0gICAgaWYgKCFhdHRyTWFwKQorICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQog
ICAgICAgICByZXR1cm4gYXR0cmlidXRlc1ZhbHVlLnJlbGVhc2UoKTsKLSAgICB1bnNpZ25lZCBu
dW1BdHRycyA9IGF0dHJNYXAtPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG51bUF0dHJzID0gZWxl
bWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
QXR0cnM7ICsraSkgewogICAgICAgICAvLyBBZGQgYXR0cmlidXRlIHBhaXIKLSAgICAgICAgY29u
c3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOworICAg
ICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0o
aSk7CiAgICAgICAgIGF0dHJpYnV0ZXNWYWx1ZS0+cHVzaFN0cmluZyhhdHRyaWJ1dGUtPm5hbWUo
KS50b1N0cmluZygpKTsKICAgICAgICAgYXR0cmlidXRlc1ZhbHVlLT5wdXNoU3RyaW5nKGF0dHJp
YnV0ZS0+dmFsdWUoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cAppbmRleCAwNTk4NjRlZWE5ZWZiZDk3YTk0MGE5YmM5OWIzYmI4NWU4YWVhYzdjLi42NGQ5MDFi
N2EzODA4YTY3ODY3YTg0MTM5ZDhmZmEzMzYzOWJmNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcApAQCAtNjksOSArNjksOSBAQCBzdGF0aWMgYm9vbCBpc0NoYXJzZXRT
cGVjaWZ5aW5nTm9kZShOb2RlKiBub2RlKQogICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6Om1ldGFUYWcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSFRNTE1ldGFD
aGFyc2V0UGFyc2VyOjpBdHRyaWJ1dGVMaXN0IGF0dHJpYnV0ZXM7Ci0gICAgaWYgKGNvbnN0IE5h
bWVkTm9kZU1hcCogYXR0cmlidXRlc01hcCA9IGVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCkp
IHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZXNNYXAtPmxlbmd0
aCgpOyArK2kpIHsKLSAgICAgICAgICAgIEF0dHJpYnV0ZSogaXRlbSA9IGF0dHJpYnV0ZXNNYXAt
PmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgaWYgKGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVudC0+YXR0cmlidXRlQ291bnQo
KTsgKytpKSB7CisgICAgICAgICAgICBBdHRyaWJ1dGUqIGl0ZW0gPSBlbGVtZW50LT5hdHRyaWJ1
dGVJdGVtKGkpOwogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkZWFsIGFwcHJvcHJp
YXRlbHkgd2l0aCB0aGUgYXR0cmlidXRlIGlmIHRoZXkgaGF2ZSBhIG5hbWVzcGFjZS4KICAgICAg
ICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKG1ha2VfcGFpcihpdGVtLT5uYW1lKCkudG9TdHJpbmco
KSwgaXRlbS0+dmFsdWUoKS5zdHJpbmcoKSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggOThlYjIxMGFhYjBiNGU2ZjAyODUzY2ExZWUzZDE4
MjY0NmQ5MjFlZS4uNDVhNGRjZTFhOTkxNzg4NWIwOGQxNmE2YTA5ZGJiM2RhZmY0ZTg2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcApAQCAtNDA2LDExICs0MDYsMTEg
QEAgdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQ
YXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwKIAogUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5
bGVkRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKLSAgICBpZiAoIWF0dHJpYnV0ZU1hcCgpKQorICAgIGlmICghaGFzQXR0cmlidXRlc1dpdGhv
dXRVcGRhdGUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBRdWFsaWZpZWROYW1lIGF0dHJp
YnV0ZU5hbWUobnVsbEF0b20sIG5hbWUsIG51bGxBdG9tKTsKLSAgICBBdHRyaWJ1dGUqIGF0dHIg
PSBhdHRyaWJ1dGVNYXAoKS0+Z2V0QXR0cmlidXRlSXRlbShhdHRyaWJ1dGVOYW1lKTsKKyAgICBB
dHRyaWJ1dGUqIGF0dHIgPSBnZXRBdHRyaWJ1dGVJdGVtKGF0dHJpYnV0ZU5hbWUpOwogICAgIGlm
ICghYXR0cikKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlv
bnMuY3BwCmluZGV4IDI4MzU4M2Q3ODNhZmE2ZWYxMGVhNzc5MmNiMjA5Y2Q1MTM0MzM1Y2YuLjE1
NGI2N2U5MmQzMmM3ZDE3NmJjYjgxMDkwZThkZjQxOThiNGIwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoRnVuY3Rpb25zLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIlhQYXRoRnVu
Y3Rpb25zLmgiCiAKICNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiTmFtZWROb2RlTWFw
LmgiCiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiVHJlZVNj
b3BlLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKQEAgLTU5Miw4ICs1OTEsOSBAQCBWYWx1ZSBG
dW5MYW5nOjpldmFsdWF0ZSgpIGNvbnN0CiAgICAgTm9kZSogbm9kZSA9IGV2YWx1YXRpb25Db250
ZXh0KCkubm9kZS5nZXQoKTsKICAgICB3aGlsZSAobm9kZSkgewogICAgICAgICBpZiAobm9kZS0+
aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAoTmFtZWROb2RlTWFwKiBhdHRyaWJ1
dGVzID0gdG9FbGVtZW50KG5vZGUpLT51cGRhdGVkQXR0cmlidXRlcygpKQotICAgICAgICAgICAg
ICAgIGxhbmd1YWdlQXR0cmlidXRlID0gYXR0cmlidXRlcy0+Z2V0QXR0cmlidXRlSXRlbShYTUxO
YW1lczo6bGFuZ0F0dHIpOworICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVu
dChub2RlKTsKKyAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCisgICAg
ICAgICAgICAgICAgbGFuZ3VhZ2VBdHRyaWJ1dGUgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGVJdGVt
KFhNTE5hbWVzOjpsYW5nQXR0cik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxhbmd1YWdlQXR0
cmlidXRlKQogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhOb2RlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3Bw
CmluZGV4IDhlZWZjNTczZmY0NDc5NDI1MjFmYmQwNzdhZGYxNTIxZDJhMzlhZjcuLjY4ODFkMzg1
NTU1NTI5OWViNDRhODE0ZWNkNGIyNzcwMGMyMWE0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5v
ZGVTZXQuY3BwCkBAIC0yMTMsMTMgKzIxMywxMyBAQCB2b2lkIE5vZGVTZXQ6OnRyYXZlcnNhbFNv
cnQoKSBjb25zdAogICAgICAgICBpZiAoIWNvbnRhaW5zQXR0cmlidXRlTm9kZXMgfHwgIW4tPmlz
RWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE5hbWVkTm9k
ZU1hcCogYXR0cmlidXRlcyA9IHRvRWxlbWVudChuKS0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAg
ICAgICAgaWYgKCFhdHRyaWJ1dGVzKQorICAgICAgICBFbGVtZW50KiBlID0gdG9FbGVtZW50KG4p
OworICAgICAgICBpZiAoIWUtPmhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZUNvdW50ID0gYXR0cmlidXRlcy0+bGVuZ3Ro
KCk7CisgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZUNvdW50ID0gZS0+YXR0cmlidXRlQ291bnQo
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZUNvdW50OyArK2kp
IHsKLSAgICAgICAgICAgIEF0dHIqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0
ZW0oaSktPmF0dHIoKTsKKyAgICAgICAgICAgIEF0dHIqIGF0dHJpYnV0ZSA9IGUtPmF0dHJpYnV0
ZUl0ZW0oaSktPmF0dHIoKTsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUgJiYgbm9kZXMuY29u
dGFpbnMoYXR0cmlidXRlKSkKICAgICAgICAgICAgICAgICBzb3J0ZWROb2Rlcy5hcHBlbmQoYXR0
cmlidXRlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
U3RlcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcAppbmRleCAxMmYzOTRm
MmNhMGI0NDU2YTgxZDEwODk4M2I3OTI0ZDVjNGQ4NzVkLi5mZjdlNjg1ZDkxMTczN2ViY2QxZGYy
MTkzZWVjMzE3OTM5ZmNlNGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhT
dGVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcApAQCAtMzEsNyAr
MzEsNiBAQAogI2luY2x1ZGUgIkF0dHIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJYTUxO
U05hbWVzLmgiCiAjaW5jbHVkZSAiWFBhdGhQYXJzZXIuaCIKICNpbmNsdWRlICJYUGF0aFV0aWwu
aCIKQEAgLTM0MywxMiArMzQyLDExIEBAIHZvaWQgU3RlcDo6bm9kZXNJbkF4aXMoTm9kZSogY29u
dGV4dCwgTm9kZVNldCYgbm9kZXMpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBOYW1lZE5vZGVNYXAqIGF0dHJz
ID0gY29udGV4dEVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgICAgICBpZiAo
IWF0dHJzKQorICAgICAgICAgICAgaWYgKCFjb250ZXh0RWxlbWVudC0+aGFzQXR0cmlidXRlcygp
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGF0dHJzLT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRy
PEF0dHI+IGF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKS0+Y3JlYXRlQXR0cklmTmVlZGVk
KHN0YXRpY19jYXN0PEVsZW1lbnQqPihjb250ZXh0KSk7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgY29udGV4dEVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7ICsraSkgewor
ICAgICAgICAgICAgICAgIFJlZlB0cjxBdHRyPiBhdHRyID0gY29udGV4dEVsZW1lbnQtPmF0dHJp
YnV0ZUl0ZW0oaSktPmNyZWF0ZUF0dHJJZk5lZWRlZChzdGF0aWNfY2FzdDxFbGVtZW50Kj4oY29u
dGV4dCkpOwogICAgICAgICAgICAgICAgIGlmIChub2RlTWF0Y2hlcyhhdHRyLmdldCgpLCBBdHRy
aWJ1dGVBeGlzLCBtX25vZGVUZXN0KSkKICAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5k
KGF0dHIucmVsZWFzZSgpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCA0ZTFkNDll
ZWZkMDRiZmVmNjg2ZTBhMmM1Y2UyYjYwYzFkOGQ4N2MwLi4zYTM2ZDk4ZTEyNTZjNGRkZWQ1Nzc2
YWVmMDYyNDYyMTY3ZjAzOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC01OTksOSArNTk5LDkgQEAgWE1M
RG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqIGZyYWdt
ZW50LCBFbGVtZW50KiBwYXJlbnQKIAogICAgIGZvciAoOyAhZWxlbVN0YWNrLmlzRW1wdHkoKTsg
ZWxlbVN0YWNrLnJlbW92ZUxhc3QoKSkgewogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxl
bVN0YWNrLmxhc3QoKTsKLSAgICAgICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cnMgPSBlbGVtZW50
LT51cGRhdGVkQXR0cmlidXRlcygpKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYXR0cnMtPmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBBdHRyaWJ1dGUq
IGF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmhh
c0F0dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVs
ZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7IGkrKykgeworICAgICAgICAgICAgICAgIEF0dHJpYnV0
ZSogYXR0ciA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgICAgICAgICAgaWYg
KGF0dHItPmxvY2FsTmFtZSgpID09IHhtbG5zQXRvbSkKICAgICAgICAgICAgICAgICAgICAgbV9k
ZWZhdWx0TmFtZXNwYWNlVVJJID0gYXR0ci0+dmFsdWUoKTsKICAgICAgICAgICAgICAgICBlbHNl
IGlmIChhdHRyLT5wcmVmaXgoKSA9PSB4bWxuc0F0b20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDhkZTFhMDgxN2E0ZTRkZjFiYThhODA4YWM5
Mzk2NzVhN2FlYTAzMzUuLjBjMmIyZDZhMGM3OWY0OGNiNmZkM2Y0NzAyNjZkZmU4OTFjYjhiM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC04
MCw5ICs4MCw5IEBAIFhNTFRyZWVCdWlsZGVyOjpYTUxUcmVlQnVpbGRlcihOZXdYTUxEb2N1bWVu
dFBhcnNlciogcGFyc2VyLCBEb2N1bWVudEZyYWdtZW50KiBmCiAKICAgICBmb3IgKEVsZW1lbnQq
IGVsZW1lbnQ7ICFub2RlU3RhY2suaXNFbXB0eSgpOyBub2RlU3RhY2sucmVtb3ZlTGFzdCgpKSB7
CiAgICAgICAgIGVsZW1lbnQgPSBub2RlU3RhY2subGFzdCgpOwotICAgICAgICBpZiAoTmFtZWRO
b2RlTWFwKiBhdHRycyA9IGVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0cnMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKTsKKyAg
ICAgICAgaWYgKGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwog
ICAgICAgICAgICAgICAgIGlmIChhdHRyLT5sb2NhbE5hbWUoKSA9PSB4bWxuc0F0b20pCiAgICAg
ICAgICAgICAgICAgICAgIHN0YWNrSXRlbS5zZXROYW1lc3BhY2VVUkkoYXR0ci0+dmFsdWUoKSk7
CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXR0ci0+cHJlZml4KCkgPT0geG1sbnNBdG9tKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1w
bC5jcHAKaW5kZXggZGEwZTMyNTU1ZWM3Y2I4NDM4YWI4MDIzYTk4YmI2MmNlZWViNTNiNS4uY2Ew
NTgzNDg4OTBmZjEzMzA2NGUxYzA4OTgwNzA2MGY3YjA4OTNlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwCkBAIC0zMDcs
MTMgKzMwNywxMiBAQCB2b2lkIFdlYlBhZ2VTZXJpYWxpemVySW1wbDo6b3BlblRhZ1RvU3RyaW5n
KEVsZW1lbnQqIGVsZW1lbnQsCiAgICAgLy8gQWRkIG9wZW4gdGFnCiAgICAgcmVzdWx0ICs9ICI8
IiArIGVsZW1lbnQtPm5vZGVOYW1lKCkubG93ZXIoKTsKICAgICAvLyBHbyB0aHJvdWdoIGFsbCBh
dHRyaWJ1dGVzIGFuZCBzZXJpYWxpemUgdGhlbS4KLSAgICBjb25zdCBOYW1lZE5vZGVNYXAgKmF0
dHJNYXAgPSBlbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmIChhdHRyTWFwKSB7
Ci0gICAgICAgIHVuc2lnbmVkIG51bUF0dHJzID0gYXR0ck1hcC0+bGVuZ3RoKCk7CisgICAgaWYg
KGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICB1bnNpZ25lZCBudW1BdHRycyA9
IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1BdHRyczsgaSsrKSB7CiAgICAgICAgICAgICByZXN1bHQgKz0gIiAiOwogICAgICAg
ICAgICAgLy8gQWRkIGF0dHJpYnV0ZSBwYWlyCi0gICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUg
KmF0dHJpYnV0ZSA9IGF0dHJNYXAtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAgICBjb25z
dCBBdHRyaWJ1dGUgKmF0dHJpYnV0ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAg
ICAgICAgICByZXN1bHQgKz0gYXR0cmlidXRlLT5uYW1lKCkudG9TdHJpbmcoKTsKICAgICAgICAg
ICAgIHJlc3VsdCArPSAiPVwiIjsKICAgICAgICAgICAgIGlmICghYXR0cmlidXRlLT52YWx1ZSgp
LmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCmluZGV4IDBkODVk
YTkyZTY3NTk4NDM3ODA4NzA4NDg0MTdiODg2N2Y1MjU2MjkuLjE3OGM3MGU1Yjc3ODgyN2I3NTAz
Yzg3OTZjMzUwNjc3NzQ1MjQ3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJlbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAK
QEAgLTUwMywxMiArNTAzLDExIEBAIFFTdHJpbmdMaXN0IFFXZWJFbGVtZW50OjphdHRyaWJ1dGVO
YW1lcyhjb25zdCBRU3RyaW5nJiBuYW1lc3BhY2VVcmkpIGNvbnN0CiAgICAgICAgIHJldHVybiBR
U3RyaW5nTGlzdCgpOwogCiAgICAgUVN0cmluZ0xpc3QgYXR0cmlidXRlTmFtZUxpc3Q7Ci0gICAg
Y29uc3QgTmFtZWROb2RlTWFwKiBjb25zdCBhdHRycyA9IG1fZWxlbWVudC0+dXBkYXRlZEF0dHJp
YnV0ZXMoKTsKLSAgICBpZiAoYXR0cnMpIHsKKyAgICBpZiAobV9lbGVtZW50LT5oYXNBdHRyaWJ1
dGVzKCkpIHsKICAgICAgICAgY29uc3QgU3RyaW5nIG5hbWVzcGFjZVVyaVN0cmluZyhuYW1lc3Bh
Y2VVcmkpOyAvLyBjb252ZXJ0IFFTdHJpbmcgLT4gU3RyaW5nIG9uY2UKLSAgICAgICAgY29uc3Qg
dW5zaWduZWQgYXR0cnNDb3VudCA9IGF0dHJzLT5sZW5ndGgoKTsKKyAgICAgICAgY29uc3QgdW5z
aWduZWQgYXR0cnNDb3VudCA9IG1fZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJzQ291bnQ7ICsraSkgewotICAgICAgICAgICAg
Y29uc3QgQXR0cmlidXRlKiBjb25zdCBhdHRyaWJ1dGUgPSBhdHRycy0+YXR0cmlidXRlSXRlbShp
KTsKKyAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogY29uc3QgYXR0cmlidXRlID0gbV9lbGVt
ZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgaWYgKG5hbWVzcGFjZVVyaVN0cmlu
ZyA9PSBhdHRyaWJ1dGUtPm5hbWVzcGFjZVVSSSgpKQogICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZU5hbWVMaXN0LmFwcGVuZChhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpKTsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125630</attachid>
            <date>2012-02-06 06:30:43 -0800</date>
            <delta_ts>2012-02-06 11:03:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77800-20120206113041.patch</filename>
            <type>text/plain</type>
            <size>49358</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDViNmFiZTljNDg3MTY2
N2U2ZjI1YmIxYzY0NDU2NzdiYzViZDEyNi4uZDIzOTRkMDFjMzFmOTE1OWUxYjEzMGNlZGJiZTBm
YzA4ZmM0NGViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEyLTAyLTA2ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgUHJvdmlkZSBtb3JlIGF0dHJpYnV0ZSBtZXRob2RzIGluIEVsZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHRoZSBj
bGllbnRzIG9mIE5hbWVkTm9kZU1hcC4gVGhpcyB3aWxsIG1ha2UgZWFzaWVyIHRvIGNoYW5nZSB0
aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2Ygb3VyIGF0dHJpYnV0ZSBzdG9yYWdlLiBUaGUg
Y2xpZW50cyBub3cgdXNlIEVsZW1lbnQgbWV0aG9kcworICAgICAgICB0aGF0IGV4cG9zZSBBdHRy
aWJ1dGUqIGFjY2Vzc29ycy4KKworICAgICAgICBJbnN0ZWFkIG9mIGNoZWNraW5nIHRoZSBleGlz
dGVuY2Ugb2YgTmFtZWROb2RlTWFwLCBjbGllbnRzIGNhbiBjYWxsCisgICAgICAgIGhhc0F0dHJp
YnV0ZXMoKSBvciBoYXNBdHRyaWJ1dGVzV2l0aG91dFVwZGF0ZSgpICh0aGF0IHNraXBzIHVwZGF0
aW5nIGludmFsaWQKKyAgICAgICAgc3R5bGUgb3IgYW5pbWF0aW9uIHN2ZyBhdHRyaWJ1dGVzKS4K
KworICAgICAgICBJZiB0aGVyZSBhcmUgYXR0cmlidXRlcywgdGhleSBjYW4gYmUgYWNjZXNzZWQg
YnkgaW5kZXggdmlhIGF0dHJpYnV0ZUNvdW50KCkgLworICAgICAgICBhdHRyaWJ1dGVJdGVtKCks
IGFzIHdlbGwgYXMgYnkgUXVhbGlmaWVkTmFtZS4gVGhvc2UgYWNjZXNzb3JzIGFzc3VtZSB0aGVy
ZSBhcmUgYW4KKyAgICAgICAgYXR0cmlidXRlIHN0b3JhZ2UuCisKKyAgICAgICAgKiBjc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFueUF0dHJpYnV0ZU1hdGNoZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKToK
KyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrRXhhY3RBdHRyaWJ1dGUpOgorICAgICAgICAqIGRvbS9EYXRhc2V0
RE9NU3RyaW5nTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6
OmdldE5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6Oml0ZW0p
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YXNldERPTVN0cmluZ01hcDo6Y29udGFpbnMpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1w
b3J0Tm9kZSk6IHVzZSBzZXRBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoKSBpbnN0ZWFkIG9mIG1hbnVh
bGx5IGNvcHlpbmcuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1
dGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVJdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEF0dHJpYnV0ZUl0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0RlZmF1bHROYW1lc3BhY2UpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6Omxvb2t1cE5hbWVzcGFjZVByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjb21w
YXJlRG9jdW1lbnRQb3NpdGlvbik6CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNOb0F0dHJpYnV0ZU9yT25seVN0eWxlQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRW1wdHlGb250VGFnKToKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmVs
ZW1lbnRJc1N0eWxlZFNwYW5PckhUTUxFcXVpdmFsZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0lu
c2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGln
aGVzdFZpc3VhbGx5RXF1aXZhbGVudERpdkJlbG93Um9vdCk6CisgICAgICAgICogZWRpdGluZy9N
YXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRv
cjo6YXBwZW5kRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y29tcGxldGVVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yOjphcHBlbmRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6cGFyYW1ldGVy
c0ZvclBsdWdpbik6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUpOgorICAgICAgICAqIGh0
bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVs
ZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4pOgorICAgICAgICAqIGh0bWwvSFRNTFBhcmFtRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyYW1FbGVtZW50Ojppc1VSTEF0dHJp
YnV0ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1dGVDb3VudFdpdGhvdXRVcGRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6dHJ5VG9FbnN1cmVOb2Fo
c0Fya0NvbmRpdGlvblF1aWNrbHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1hdHRpbmdF
bGVtZW50TGlzdDo6ZW5zdXJlTm9haHNBcmtDb25kaXRpb24pOiBTdG9yZSBBdHRyaWJ1dGUqCisg
ICAgICAgIHRvIGF2b2lkIGxvb2tpbmcgdXAgdGhlIHJpZ2h0IGVsZW1lbnQgYWdhaW4gYnkgbmFt
ZS4KKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUVkaXRvcjo6aW5uZXJQYXRjaE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9y
OjpjcmVhdGVEaWdlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0Fz
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJj
aCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVs
ZW1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlzQ2hhcnNldFNwZWNpZnlpbmdOb2RlKToKKyAgICAgICAgKiBzdmcv
U1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50
OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHhtbC9YUGF0aEZ1bmN0aW9u
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuTGFuZzo6ZXZhbHVhdGUpOgorICAg
ICAgICAqIHhtbC9YUGF0aE5vZGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5v
ZGVTZXQ6OnRyYXZlcnNhbFNvcnQpOgorICAgICAgICAqIHhtbC9YUGF0aFN0ZXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WFBhdGg6OlN0ZXA6Om5vZGVzSW5BeGlzKToKKyAgICAgICAgKiB4bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
TUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIHhtbC9wYXJz
ZXIvWE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZUJ1aWxkZXI6
OlhNTFRyZWVCdWlsZGVyKToKKwogMjAxMi0wMi0wNiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8
YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBXZWJHZXN0dXJlRXZlbnQgY2FuIG5v
dCBlbmNvZGUgZGVsdGEgYW5kIGFyZWEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDRm
YmFmZmRkY2ZkZTEyZTJiZDgwNTBmNGI3ZTZjYzg0MDJkMDBmZjcuLjQ2MTYxZGMxN2ZjN2VjODY1
ZjExOTY1NzhhZGVmMzc1ZmE5ZjBmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTItMDItMDYgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAg
PGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBQcm92aWRlIG1vcmUgYXR0
cmlidXRlIG1ldGhvZHMgaW4gRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHNyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlU2VyaWFsaXplckltcGw6Om9wZW5UYWdUb1N0cmluZyk6IGFjY2Vz
cyBhdHRyaWJ1dGVzIHZpYSBFbGVtZW50IGludGVyZmFjZS4KKwogMjAxMi0wMi0wNCAgU2hhd24g
U2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFk
ZCBzdXBwb3J0IHRvIGZvcmNlIGZ1bGwgZGFtYWdlIGluIENDRGFtYWdlVHJhY2tlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZwppbmRleCBhYjMyNDA1Y2RiNGJiNDY1MDc4ZTcyZDQyNDMwZWE4YzFkNjZlMjQ2Li43MmRl
MDhmZWE4Njc4NjM4MTZmN2E4YjI0NmVlZDMyMGM3MWIzMjA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDEyLTAyLTA2ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8g
IDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUHJvdmlkZSBtb3JlIGF0
dHJpYnV0ZSBtZXRob2RzIGluIEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc3ODAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVs
ZW1lbnQ6OmF0dHJpYnV0ZU5hbWVzKTogYWNjZXNzIGF0dHJpYnV0ZXMgdmlhIEVsZW1lbnQgaW50
ZXJmYWNlLgorCiAyMDEyLTAyLTAzICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0
ZUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBEb24ndCB2ZXJzaW9uIFF0V2ViS2l0LmV4cGVy
aW1lbnRhbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggNTg2Nzc0
NjQ3YTA4N2QzYTBjMmQ3ZjI4MmNiM2JiMDMzNmY5NDQwNS4uYmM4MjRlMWMwN2QxYzdhN2IyNDU1
MWY1ZjE1ZGFjM2I3ZTBmZDI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVj
dG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5j
cHAKQEAgLTY3MSwxMCArNjcxLDExIEBAIHN0YXRpYyBib29sIGF0dHJpYnV0ZVZhbHVlTWF0Y2hl
cyhBdHRyaWJ1dGUqIGF0dHJpYnV0ZUl0ZW0sIENTU1NlbGVjdG9yOjpNYXRjaCBtCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGFueUF0dHJpYnV0ZU1hdGNoZXMoTmFtZWROb2Rl
TWFwKiBhdHRyaWJ1dGVzLCBDU1NTZWxlY3Rvcjo6TWF0Y2ggbWF0Y2gsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHNlbGVjdG9yQXR0ciwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3RvclZhbHVlLCBi
b29sIGNhc2VTZW5zaXRpdmUpCitzdGF0aWMgYm9vbCBhbnlBdHRyaWJ1dGVNYXRjaGVzKEVsZW1l
bnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpNYXRjaCBtYXRjaCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgc2VsZWN0b3JBdHRyLCBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdG9yVmFsdWUsIGJvb2wg
Y2FzZVNlbnNpdGl2ZSkKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMt
Pmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGVJdGVtID0gYXR0
cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICBBU1NFUlQoZWxlbWVudC0+aGFzQXR0cmli
dXRlc1dpdGhvdXRVcGRhdGUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbGVtZW50
LT5hdHRyaWJ1dGVDb3VudCgpOyArK2kpIHsKKyAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGVJ
dGVtID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKIAogICAgICAgICBpZiAoIVNlbGVjdG9y
Q2hlY2tlcjo6YXR0cmlidXRlTmFtZU1hdGNoZXMoYXR0cmlidXRlSXRlbSwgc2VsZWN0b3JBdHRy
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNzAxLDEzICs3MDIsMTIgQEAgYm9vbCBTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCog
ZSwgUHNldWRvSWQmIGQKICAgICBpZiAoc2VsLT5pc0F0dHJpYnV0ZVNlbGVjdG9yKCkpIHsKICAg
ICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ciA9IHNlbC0+YXR0cmlidXRlKCk7CiAKLSAg
ICAgICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gZS0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsK
LSAgICAgICAgaWYgKCFhdHRyaWJ1dGVzKQorICAgICAgICBpZiAoIWUtPmhhc0F0dHJpYnV0ZXMo
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBib29sIGNhc2VTZW5zaXRp
dmUgPSAhbV9kb2N1bWVudElzSFRNTCB8fCAhaHRtbEF0dHJpYnV0ZUhhc0Nhc2VJbnNlbnNpdGl2
ZVZhbHVlKGF0dHIpOwogCi0gICAgICAgIGlmICghYW55QXR0cmlidXRlTWF0Y2hlcyhhdHRyaWJ1
dGVzLCBzdGF0aWNfY2FzdDxDU1NTZWxlY3Rvcjo6TWF0Y2g+KHNlbC0+bV9tYXRjaCksIGF0dHIs
IHNlbC0+dmFsdWUoKSwgY2FzZVNlbnNpdGl2ZSkpCisgICAgICAgIGlmICghYW55QXR0cmlidXRl
TWF0Y2hlcyhlLCBzdGF0aWNfY2FzdDxDU1NTZWxlY3Rvcjo6TWF0Y2g+KHNlbC0+bV9tYXRjaCks
IGF0dHIsIHNlbC0+dmFsdWUoKSwgY2FzZVNlbnNpdGl2ZSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggM2Y5
NDY5ZTVkNzliMDljOWFiODQyZTc0MmQ4NWZhZDcxN2I5NDcxZi4uNDg3Mjg0NzM2NGY2YzU1MDYy
ZWIyNTY3YzliZGFjZjFkMzgxYjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
aApAQCAtMTg1LDEyICsxODUsMTEgQEAgaW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjphdHRy
aWJ1dGVOYW1lTWF0Y2hlcyhjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSwgY28KIAogaW5saW5l
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKGNvbnN0IEVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0cmlidXRlTmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nSW1wbCogdmFsdWUpCiB7Ci0gICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1
dGVNYXAgPSBlbGVtZW50LT5hdHRyaWJ1dGVNYXAoKTsKLSAgICBpZiAoIWF0dHJpYnV0ZU1hcCkK
KyAgICBpZiAoIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZXNXaXRob3V0VXBkYXRlKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25lZCBzaXplID0gYXR0cmlidXRlTWFwLT5sZW5ndGgo
KTsKKyAgICB1bnNpZ25lZCBzaXplID0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIEF0dHJpYnV0ZSog
YXR0cmlidXRlID0gYXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICBBdHRy
aWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgIGlm
IChhdHRyaWJ1dGVOYW1lTWF0Y2hlcyhhdHRyaWJ1dGUsIHNlbGVjdG9yQXR0cmlidXRlTmFtZSkg
JiYgKCF2YWx1ZSB8fCBhdHRyaWJ1dGUtPnZhbHVlKCkuaW1wbCgpID09IHZhbHVlKSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9N
U3RyaW5nTWFwLmNwcAppbmRleCBkZmYwYWQ3NTA3MjA2N2U1NTZjZTFlMjg2MTQ1MTI0MjdlMTMw
YzAzLi4zODIwMjJlY2RjM2EwYzQ4NGMxMmM5OTUyNDEzNDY5ZjhhNWVhOTBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAj
aW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlIDx3dGYv
QVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAt
MTQyLDI3ICsxNDEsMjcgQEAgdm9pZCBEYXRhc2V0RE9NU3RyaW5nTWFwOjpkZXJlZigpCiAKIHZv
aWQgRGF0YXNldERPTVN0cmluZ01hcDo6Z2V0TmFtZXMoVmVjdG9yPFN0cmluZz4mIG5hbWVzKQog
ewotICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFwID0gbV9lbGVtZW50LT51cGRhdGVkQXR0
cmlidXRlcygpOwotICAgIGlmIChhdHRyaWJ1dGVNYXApIHsKLSAgICAgICAgdW5zaWduZWQgbGVu
Z3RoID0gYXR0cmlidXRlTWFwLT5sZW5ndGgoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9
IGF0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpKTsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlk
QXR0cmlidXRlTmFtZShhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpKSkKLSAgICAgICAgICAgICAgICBu
YW1lcy5hcHBlbmQoY29udmVydEF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5TmFtZShhdHRyaWJ1dGUt
PmxvY2FsTmFtZSgpKSk7Ci0gICAgICAgIH0KKyAgICBpZiAoIW1fZWxlbWVudC0+aGFzQXR0cmli
dXRlcygpKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2VsZW1l
bnQtPmF0dHJpYnV0ZUNvdW50KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gbV9lbGVtZW50LT5hdHRy
aWJ1dGVJdGVtKGkpOworICAgICAgICBpZiAoaXNWYWxpZEF0dHJpYnV0ZU5hbWUoYXR0cmlidXRl
LT5sb2NhbE5hbWUoKSkpCisgICAgICAgICAgICBuYW1lcy5hcHBlbmQoY29udmVydEF0dHJpYnV0
ZU5hbWVUb1Byb3BlcnR5TmFtZShhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpKSk7CiAgICAgfQogfQog
CiBTdHJpbmcgRGF0YXNldERPTVN0cmluZ01hcDo6aXRlbShjb25zdCBTdHJpbmcmIG5hbWUpCiB7
Ci0gICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAgPSBtX2VsZW1lbnQtPnVwZGF0ZWRBdHRy
aWJ1dGVzKCk7Ci0gICAgaWYgKGF0dHJpYnV0ZU1hcCkgewotICAgICAgICB1bnNpZ25lZCBsZW5n
dGggPSBhdHRyaWJ1dGVNYXAtPmxlbmd0aCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0g
YXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOwotICAgICAgICAgICAgaWYgKHByb3BlcnR5
TmFtZU1hdGNoZXNBdHRyaWJ1dGVOYW1lKG5hbWUsIGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGUtPnZhbHVlKCk7Ci0gICAgICAgIH0KKyAg
ICBpZiAoIW1fZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQorICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIEF0
dHJpYnV0ZSogYXR0cmlidXRlID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAg
ICBpZiAocHJvcGVydHlOYW1lTWF0Y2hlc0F0dHJpYnV0ZU5hbWUobmFtZSwgYXR0cmlidXRlLT5s
b2NhbE5hbWUoKSkpCisgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlLT52YWx1ZSgpOwogICAg
IH0KIAogICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTE3MCwxNSArMTY5LDE2IEBAIFN0cmluZyBE
YXRhc2V0RE9NU3RyaW5nTWFwOjppdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogYm9vbCBEYXRh
c2V0RE9NU3RyaW5nTWFwOjpjb250YWlucyhjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgTmFt
ZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAgPSBtX2VsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7
Ci0gICAgaWYgKGF0dHJpYnV0ZU1hcCkgewotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRy
aWJ1dGVNYXAtPmxlbmd0aCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKLSAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0cmlidXRl
TWFwLT5hdHRyaWJ1dGVJdGVtKGkpOwotICAgICAgICAgICAgaWYgKHByb3BlcnR5TmFtZU1hdGNo
ZXNBdHRyaWJ1dGVOYW1lKG5hbWUsIGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkpKQotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgaWYgKCFtX2VsZW1lbnQtPmhhc0F0
dHJpYnV0ZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IG1fZWxl
bWVudC0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZU1hdGNoZXNB
dHRyaWJ1dGVOYW1lKG5hbWUsIGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCA0MTAwYjZkMmY0NWJlZGNmOGQ0MzY1OGE5MzkxNWNjZmRmMjZmNmVh
Li4xYjdiNjEzM2Q4ZjNjNmE4ZGViM2NjZTRhYmEyNzNhMzk2NDM0MjY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTg1NCwxNSArODU0LDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVu
dDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0aW9uQ28K
ICAgICAgICAgaWYgKGVjKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgTmFtZWRO
b2RlTWFwKiBhdHRycyA9IG9sZEVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAg
IGlmIChhdHRycykgewotICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cnMtPmxlbmd0
aCgpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
Ci0gICAgICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0o
aSk7Ci0gICAgICAgICAgICAgICAgbmV3RWxlbWVudC0+c2V0QXR0cmlidXRlKGF0dHItPm5hbWUo
KSwgYXR0ci0+dmFsdWUoKS5pbXBsKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KKyAg
ICAgICAgbmV3RWxlbWVudC0+c2V0QXR0cmlidXRlc0Zyb21FbGVtZW50KCpvbGRFbGVtZW50KTsK
ICAgICAgICAgbmV3RWxlbWVudC0+Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXMob2xkRWxlbWVu
dCk7CiAKICAgICAgICAgaWYgKGRlZXApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGFjMjgxYzU0
MTJiMGM5NDY3YTc2YTk2ZjdmNjJlNDE3NjMwNzNlODEuLjljY2UzYTg0NTI2MmU4YmE5ZGNhMzAz
ZmU0ZjcwZGYyNzczMDAyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMTMwLDYgKzEzMCw5IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAgICAgYm9vbCBoYXNBdHRyaWJ1dGVzKCkgY29uc3Q7CisgICAg
Ly8gVGhpcyB2YXJpYW50IHdpbGwgbm90IHVwZGF0ZSB0aGUgcG90ZW50aWFsbHkgaW52YWxpZCBh
dHRyaWJ1dGVzLiBUbyBiZSB1c2VkIHdoZW4gbm90IGludGVyZXN0ZWQKKyAgICAvLyBpbiBzdHls
ZSBhdHRyaWJ1dGUgb3Igb25lIG9mIHRoZSBTVkcgYW5pbWF0aW9uIGF0dHJpYnV0ZXMuCisgICAg
Ym9vbCBoYXNBdHRyaWJ1dGVzV2l0aG91dFVwZGF0ZSgpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNB
dHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBib29sIGhhc0F0dHJpYnV0
ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSkg
Y29uc3Q7CkBAIC0xNDksNiArMTUyLDEzIEBAIHB1YmxpYzoKICAgICAvLyBzbyB0aGlzIGZ1bmN0
aW9uIGlzIG5vdCBzdWl0YWJsZSBmb3Igbm9uLXN0eWxlIHVzZXMuCiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBpZEZvclN0eWxlUmVzb2x1dGlvbigpIGNvbnN0OwogCisgICAgLy8gSW50ZXJuYWwg
bWV0aG9kcyB0aGF0IGFzc3VtZSB0aGUgZXhpc3RlbmNlIG9mIGF0dHJpYnV0ZSBzdG9yYWdlLCBv
bmUgc2hvdWxkIHVzZSBoYXNBdHRyaWJ1dGVzKCkKKyAgICAvLyBiZWZvcmUgY2FsbGluZyB0aGVt
LgorICAgIHNpemVfdCBhdHRyaWJ1dGVDb3VudCgpIGNvbnN0OworICAgIEF0dHJpYnV0ZSogYXR0
cmlidXRlSXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgQXR0cmlidXRlKiBnZXRBdHRy
aWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZUF0
dHJpYnV0ZSh1bnNpZ25lZCBpbmRleCk7CisKICAgICB2b2lkIHNjcm9sbEludG9WaWV3KGJvb2wg
YWxpZ25Ub1RvcCA9IHRydWUpOwogICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChib29s
IGNlbnRlcklmTmVlZGVkID0gdHJ1ZSk7CiAKQEAgLTU5Myw2ICs2MDMsMTEgQEAgaW5saW5lIGNv
bnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6ZmFzdEdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lKQogICAgIHJldHVybiBudWxsQXRvbTsKIH0KIAoraW5saW5lIGJvb2wgRWxl
bWVudDo6aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSBjb25zdAoreworICAgIHJldHVybiBt
X2F0dHJpYnV0ZU1hcCAmJiAhbV9hdHRyaWJ1dGVNYXAtPmlzRW1wdHkoKTsKK30KKwogaW5saW5l
IGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6aWRGb3JTdHlsZVJlc29sdXRpb24oKSBjb25z
dAogewogICAgIEFTU0VSVChoYXNJRCgpKTsKQEAgLTYxOCw2ICs2MzMsMzAgQEAgaW5saW5lIHZv
aWQgRWxlbWVudDo6c2V0SWRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAg
ICBzZXRBdHRyaWJ1dGUoZG9jdW1lbnQoKS0+aWRBdHRyaWJ1dGVOYW1lKCksIHZhbHVlKTsKIH0K
IAoraW5saW5lIHNpemVfdCBFbGVtZW50OjphdHRyaWJ1dGVDb3VudCgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKG1fYXR0cmlidXRlTWFwKTsKKyAgICByZXR1cm4gbV9hdHRyaWJ1dGVNYXAtPmxlbmd0
aCgpOworfQorCitpbmxpbmUgQXR0cmlidXRlKiBFbGVtZW50OjphdHRyaWJ1dGVJdGVtKHVuc2ln
bmVkIGluZGV4KSBjb25zdAoreworICAgIEFTU0VSVChtX2F0dHJpYnV0ZU1hcCk7CisgICAgcmV0
dXJuIG1fYXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGluZGV4KTsKK30KKworaW5saW5lIEF0
dHJpYnV0ZSogRWxlbWVudDo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKSBjb25zdAoreworICAgIEFTU0VSVChtX2F0dHJpYnV0ZU1hcCk7CisgICAgcmV0dXJuIG1f
YXR0cmlidXRlTWFwLT5nZXRBdHRyaWJ1dGVJdGVtKG5hbWUpOworfQorCitpbmxpbmUgdm9pZCBF
bGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUodW5zaWduZWQgaW5kZXgpCit7CisgICAgQVNTRVJUKG1f
YXR0cmlidXRlTWFwKTsKKyAgICBtX2F0dHJpYnV0ZU1hcC0+cmVtb3ZlQXR0cmlidXRlKGluZGV4
KTsKK30KKwogaW5saW5lIE5hbWVkTm9kZU1hcCogRWxlbWVudDo6ZW5zdXJlQXR0cmlidXRlTWFw
KCkgY29uc3QKIHsKICAgICBpZiAoIW1fYXR0cmlidXRlTWFwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4
IDQxNTVjNjQyMTk0YjdjZWZjMmJmZjgzNzgzNGE2NjE1MTM2ZDNhNjUuLmZmZTY3YWJiMGI5MTQx
YWExZjFhYzNlYzI4NTMzZTE3ZWI1ZmVkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE4MjIsOSAr
MTgyMiw5IEBAIGJvb2wgTm9kZTo6aXNEZWZhdWx0TmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZXNwYWNlVVJJTWF5YmVFbXB0eSkgY29uc3QKICAgICAgICAgICAgIGlmIChlbGVtLT5w
cmVmaXgoKS5pc051bGwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS0+bmFtZXNwYWNl
VVJJKCkgPT0gbmFtZXNwYWNlVVJJOwogCi0gICAgICAgICAgICBpZiAoTmFtZWROb2RlTWFwKiBh
dHRycyA9IGVsZW0tPnVwZGF0ZWRBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cnMtPmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgICAg
ICAgICAgICAgQXR0cmlidXRlKiBhdHRyID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAg
ICAgICAgICBpZiAoZWxlbS0+aGFzQXR0cmlidXRlcygpKSB7CisgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW0tPmF0dHJpYnV0ZUNvdW50KCk7IGkrKykgeworICAg
ICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBlbGVtLT5hdHRyaWJ1dGVJdGVtKGkp
OwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHItPmxv
Y2FsTmFtZSgpID09IHhtbG5zQXRvbSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBh
dHRyLT52YWx1ZSgpID09IG5hbWVzcGFjZVVSSTsKQEAgLTE5MDgsOSArMTkwOCw5IEBAIFN0cmlu
ZyBOb2RlOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nICZwcmVmaXgpIGNvbnN0CiAg
ICAgICAgICAgICBpZiAoIWVsZW0tPm5hbWVzcGFjZVVSSSgpLmlzTnVsbCgpICYmIGVsZW0tPnBy
ZWZpeCgpID09IHByZWZpeCkKICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS0+bmFtZXNwYWNl
VVJJKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChOYW1lZE5vZGVNYXAqIGF0dHJz
ID0gZWxlbS0+dXBkYXRlZEF0dHJpYnV0ZXMoKSkgewotICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBhdHRycy0+bGVuZ3RoKCk7IGkrKykgewotICAgICAgICAgICAgICAg
ICAgICBBdHRyaWJ1dGUgKmF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAg
ICAgIGlmIChlbGVtLT5oYXNBdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZWxlbS0+YXR0cmlidXRlQ291bnQoKTsgaSsrKSB7CisgICAgICAg
ICAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IGVsZW0tPmF0dHJpYnV0ZUl0ZW0oaSk7CiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAoYXR0ci0+cHJlZml4
KCkgPT0geG1sbnNBdG9tICYmIGF0dHItPmxvY2FsTmFtZSgpID09IHByZWZpeCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkKQEAgLTE5NjIs
OSArMTk2MiwxMSBAQCBTdHJpbmcgTm9kZTo6bG9va3VwTmFtZXNwYWNlUHJlZml4KGNvbnN0IEF0
b21pY1N0cmluZyAmX25hbWVzcGFjZVVSSSwgY29uc3QgRWxlbQogICAgIGlmIChvcmlnaW5hbEVs
ZW1lbnQtPmxvb2t1cE5hbWVzcGFjZVVSSShwcmVmaXgoKSkgPT0gX25hbWVzcGFjZVVSSSkKICAg
ICAgICAgcmV0dXJuIHByZWZpeCgpOwogICAgIAotICAgIGlmIChOYW1lZE5vZGVNYXAqIGF0dHJz
ID0gdG9FbGVtZW50KHRoaXMpLT51cGRhdGVkQXR0cmlidXRlcygpKSB7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBhdHRycy0+bGVuZ3RoKCk7IGkrKykgewotICAgICAgICAgICAg
QXR0cmlidXRlKiBhdHRyID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgQVNTRVJUKGlz
RWxlbWVudE5vZGUoKSk7CisgICAgY29uc3QgRWxlbWVudCogdGhpc0VsZW1lbnQgPSB0b0VsZW1l
bnQodGhpcyk7CisgICAgaWYgKHRoaXNFbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpIHsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNFbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgp
OyBpKyspIHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IHRoaXNFbGVtZW50LT5hdHRy
aWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoYXR0ci0+cHJlZml4
KCkgPT0geG1sbnNBdG9tICYmIGF0dHItPnZhbHVlKCkgPT0gX25hbWVzcGFjZVVSSQogICAgICAg
ICAgICAgICAgICAgICAmJiBvcmlnaW5hbEVsZW1lbnQtPmxvb2t1cE5hbWVzcGFjZVVSSShhdHRy
LT5sb2NhbE5hbWUoKSkgPT0gX25hbWVzcGFjZVVSSSkKQEAgLTIxMDUsMTcgKzIxMDcsMTcgQEAg
dW5zaWduZWQgc2hvcnQgTm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24oTm9kZSogb3RoZXJO
b2RlKQogICAgICAgICBjaGFpbjIuYXBwZW5kKGF0dHIyKTsKICAgICAKICAgICBpZiAoYXR0cjEg
JiYgYXR0cjIgJiYgc3RhcnQxID09IHN0YXJ0MiAmJiBzdGFydDEpIHsKLSAgICAgICAgLy8gV2Ug
YXJlIGNvbXBhcmluZyB0d28gYXR0cmlidXRlcyBvbiB0aGUgc2FtZSBub2RlLiAgQ3Jhd2wgb3Vy
IGF0dHJpYnV0ZSBtYXAKLSAgICAgICAgLy8gYW5kIHNlZSB3aGljaCBvbmUgd2UgaGl0IGZpcnN0
LgotICAgICAgICBOYW1lZE5vZGVNYXAqIG1hcCA9IGF0dHIxLT5vd25lckVsZW1lbnQoKS0+dXBk
YXRlZEF0dHJpYnV0ZXMoKTsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gbWFwLT5sZW5ndGgo
KTsKKyAgICAgICAgLy8gV2UgYXJlIGNvbXBhcmluZyB0d28gYXR0cmlidXRlcyBvbiB0aGUgc2Ft
ZSBub2RlLiBDcmF3bCBvdXIgYXR0cmlidXRlIG1hcCBhbmQgc2VlIHdoaWNoIG9uZSB3ZSBoaXQg
Zmlyc3QuCisgICAgICAgIEVsZW1lbnQqIG93bmVyMSA9IGF0dHIxLT5vd25lckVsZW1lbnQoKTsK
KyAgICAgICAgb3duZXIxLT51cGRhdGVkQXR0cmlidXRlcygpOyAvLyBGb3JjZSB1cGRhdGUgaW52
YWxpZCBhdHRyaWJ1dGVzLgorICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBvd25lcjEtPmF0dHJp
YnV0ZUNvdW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkgewogICAgICAgICAgICAgLy8gSWYgbmVpdGhlciBvZiB0aGUgdHdvIGRldGVybWluaW5nIG5v
ZGVzIGlzIGEgY2hpbGQgbm9kZSBhbmQgbm9kZVR5cGUgaXMgdGhlIHNhbWUgZm9yIGJvdGggZGV0
ZXJtaW5pbmcgbm9kZXMsIHRoZW4gYW4gCiAgICAgICAgICAgICAvLyBpbXBsZW1lbnRhdGlvbi1k
ZXBlbmRlbnQgb3JkZXIgYmV0d2VlbiB0aGUgZGV0ZXJtaW5pbmcgbm9kZXMgaXMgcmV0dXJuZWQu
IFRoaXMgb3JkZXIgaXMgc3RhYmxlIGFzIGxvbmcgYXMgbm8gbm9kZXMgb2YKICAgICAgICAgICAg
IC8vIHRoZSBzYW1lIG5vZGVUeXBlIGFyZSBpbnNlcnRlZCBpbnRvIG9yIHJlbW92ZWQgZnJvbSB0
aGUgZGlyZWN0IGNvbnRhaW5lci4gVGhpcyB3b3VsZCBiZSB0aGUgY2FzZSwgZm9yIGV4YW1wbGUs
IAogICAgICAgICAgICAgLy8gd2hlbiBjb21wYXJpbmcgdHdvIGF0dHJpYnV0ZXMgb2YgdGhlIHNh
bWUgZWxlbWVudCwgYW5kIGluc2VydGluZyBvciByZW1vdmluZyBhZGRpdGlvbmFsIGF0dHJpYnV0
ZXMgbWlnaHQgY2hhbmdlIAogICAgICAgICAgICAgLy8gdGhlIG9yZGVyIGJldHdlZW4gZXhpc3Rp
bmcgYXR0cmlidXRlcy4KLSAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IG1hcC0+YXR0cmli
dXRlSXRlbShpKTsKKyAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IG93bmVyMS0+YXR0cmli
dXRlSXRlbShpKTsKICAgICAgICAgICAgIGlmIChhdHRyMS0+YXR0cigpID09IGF0dHIpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIERPQ1VNRU5UX1BPU0lUSU9OX0lNUExFTUVOVEFUSU9OX1NQRUNJ
RklDIHwgRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HOwogICAgICAgICAgICAgaWYgKGF0dHIy
LT5hdHRyKCkgPT0gYXR0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBw
bHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHAKaW5kZXggYTUxZGRkNWNmZWUyZjRjYWM1ZTA0ZDJlOWIxMDkzN2QwYjRmYTczZi4u
MWFkZGUxMGNmYzFlNTBlMmNhOThiMTZjYmM4OTIwMzViZjc2OGRjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTczLDggKzczLDcgQEAgYm9v
bCBpc0xlZ2FjeUFwcGxlU3R5bGVTcGFuKGNvbnN0IE5vZGUgKm5vZGUpCiBlbnVtIFNob3VsZFN0
eWxlQXR0cmlidXRlQmVFbXB0eSB7IEFsbG93Tm9uRW1wdHlTdHlsZUF0dHJpYnV0ZSwgU3R5bGVB
dHRyaWJ1dGVTaG91bGRCZUVtcHR5IH07CiBzdGF0aWMgYm9vbCBoYXNOb0F0dHJpYnV0ZU9yT25s
eVN0eWxlQXR0cmlidXRlKGNvbnN0IFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQsIFNob3VsZFN0eWxl
QXR0cmlidXRlQmVFbXB0eSBzaG91bGRTdHlsZUF0dHJpYnV0ZUJlRW1wdHkpCiB7Ci0gICAgTmFt
ZWROb2RlTWFwKiBtYXAgPSBlbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmICgh
bWFwIHx8IG1hcC0+aXNFbXB0eSgpKQorICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlcygp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHVuc2lnbmVkIG1hdGNoZWRBdHRyaWJ1dGVz
ID0gMDsKQEAgLTg0LDggKzgzLDggQEAgc3RhdGljIGJvb2wgaGFzTm9BdHRyaWJ1dGVPck9ubHlT
dHlsZUF0dHJpYnV0ZShjb25zdCBTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBTaG8KICAgICAgICAg
fHwgIWVsZW1lbnQtPmlubGluZVN0eWxlRGVjbCgpIHx8IGVsZW1lbnQtPmlubGluZVN0eWxlRGVj
bCgpLT5pc0VtcHR5KCkpKQogICAgICAgICBtYXRjaGVkQXR0cmlidXRlcysrOwogCi0gICAgQVNT
RVJUKG1hdGNoZWRBdHRyaWJ1dGVzIDw9IG1hcC0+bGVuZ3RoKCkpOwotICAgIHJldHVybiBtYXRj
aGVkQXR0cmlidXRlcyA9PSBtYXAtPmxlbmd0aCgpOworICAgIEFTU0VSVChtYXRjaGVkQXR0cmli
dXRlcyA8PSBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpKTsKKyAgICByZXR1cm4gbWF0Y2hlZEF0
dHJpYnV0ZXMgPT0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKIH0KIAogYm9vbCBpc1N0eWxl
U3Bhbk9yU3BhbldpdGhPbmx5U3R5bGVBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCogZWxlbWVudCkK
QEAgLTEwOCwxMCArMTA3LDkgQEAgc3RhdGljIGJvb2wgaXNFbXB0eUZvbnRUYWcoY29uc3QgTm9k
ZSAqbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY29uc3QgRWxlbWVudCAqZWxl
bSA9IHN0YXRpY19jYXN0PGNvbnN0IEVsZW1lbnQgKj4obm9kZSk7Ci0gICAgTmFtZWROb2RlTWFw
KiBtYXAgPSBlbGVtLT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmICghbWFwKQorICAgIGlm
ICghZWxlbS0+aGFzQXR0cmlidXRlcygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1
cm4gbWFwLT5pc0VtcHR5KCkgfHwgKG1hcC0+bGVuZ3RoKCkgPT0gMSAmJiBlbGVtLT5nZXRBdHRy
aWJ1dGUoY2xhc3NBdHRyKSA9PSBzdHlsZVNwYW5DbGFzc1N0cmluZygpKTsKKyAgICByZXR1cm4g
ZWxlbS0+YXR0cmlidXRlQ291bnQoKSA9PSAxICYmIGVsZW0tPmdldEF0dHJpYnV0ZShjbGFzc0F0
dHIpID09IHN0eWxlU3BhbkNsYXNzU3RyaW5nKCk7CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPEVs
ZW1lbnQ+IGNyZWF0ZUZvbnRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCBlNjIxODE1NjY3ZGE1N2M2NjA4ZWQxNjdh
ZmYzYWI3MGQ0NzQ2YTNlLi45ODIyNGYyNDMxNDEyZDIxMjhhZDBiY2ZiMTI1ZGYwZjBlNmRkNGU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC04MzIsOCArODMy
LDcgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmVsZW1lbnRJc1N0eWxlZFNwYW5PckhUTUxFcXVpdmFs
ZW50KGNvbnN0IEhUTUxFbGVtZW50KiBlbGVtZW4KICAgICAgICAgfQogICAgIH0KIAotICAgIGNv
bnN0IE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFwID0gZWxlbWVudC0+YXR0cmlidXRlTWFwKCk7
Ci0gICAgaWYgKCFhdHRyaWJ1dGVNYXAgfHwgYXR0cmlidXRlTWFwLT5pc0VtcHR5KCkpCisgICAg
aWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgIHJldHVybiBlbGVtZW50SXNT
cGFuT3JFbGVtZW50RXF1aXZhbGVudDsgLy8gc3BhbiwgYiwgZXRjLi4uIHdpdGhvdXQgYW55IGF0
dHJpYnV0ZXMKIAogICAgIHVuc2lnbmVkIG1hdGNoZWRBdHRyaWJ1dGVzID0gMDsKQEAgLTg2MSw4
ICs4NjAsOCBAQCBib29sIEVkaXRpbmdTdHlsZTo6ZWxlbWVudElzU3R5bGVkU3Bhbk9ySFRNTEVx
dWl2YWxlbnQoY29uc3QgSFRNTEVsZW1lbnQqIGVsZW1lbgogICAgIH0KIAogICAgIC8vIGZvbnQg
d2l0aCBjb2xvciBhdHRyaWJ1dGUsIHNwYW4gd2l0aCBzdHlsZSBhdHRyaWJ1dGUsIGV0Yy4uLgot
ICAgIEFTU0VSVChtYXRjaGVkQXR0cmlidXRlcyA8PSBhdHRyaWJ1dGVNYXAtPmxlbmd0aCgpKTsK
LSAgICByZXR1cm4gbWF0Y2hlZEF0dHJpYnV0ZXMgPj0gYXR0cmlidXRlTWFwLT5sZW5ndGgoKTsK
KyAgICBBU1NFUlQobWF0Y2hlZEF0dHJpYnV0ZXMgPD0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQo
KSk7CisgICAgcmV0dXJuIG1hdGNoZWRBdHRyaWJ1dGVzID49IGVsZW1lbnQtPmF0dHJpYnV0ZUNv
dW50KCk7CiB9CiAKIHZvaWQgRWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0KGNvbnN0IFBv
c2l0aW9uJiBwb3NpdGlvbiwgU2hvdWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uIHNob3VsZFBy
ZXNlcnZlV3JpdGluZ0RpcmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCmluZGV4IGU2NDZiNTFm
MjJhYWVhODFkN2NmMDdkMzczZTk4OGJkNjkxMzU2NjkuLjRhZWM0MTlhMTFkOWI5M2U4M2IxMTU2
Mjg2NjFlOTgzZjUyYWZmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcApAQCAtNTEsOCArNTEsNyBA
QCBzdGF0aWMgRWxlbWVudCogaGlnaGVzdFZpc3VhbGx5RXF1aXZhbGVudERpdkJlbG93Um9vdChF
bGVtZW50KiBzdGFydEJsb2NrKQogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcmV0dXJuIGEgcm9v
dCBub2RlIChpZiBpdCBoYXBwZW5zIHRvIGJlIGEgZGl2LCBlLmcuLCBpbiBhIGRvY3VtZW50IGZy
YWdtZW50KSBiZWNhdXNlIHRoZXJlIGFyZSBubwogICAgIC8vIHNpYmxpbmdzIGZvciB1cyB0byBh
cHBlbmQgdG8uCiAgICAgd2hpbGUgKCFjdXJCbG9jay0+bmV4dFNpYmxpbmcoKSAmJiBjdXJCbG9j
ay0+cGFyZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKGRpdlRhZykgJiYgY3VyQmxvY2stPnBhcmVu
dEVsZW1lbnQoKS0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIE5hbWVkTm9kZU1hcCogYXR0
cmlidXRlcyA9IGN1ckJsb2NrLT5wYXJlbnRFbGVtZW50KCktPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7
Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzICYmICFhdHRyaWJ1dGVzLT5pc0VtcHR5KCkpCisgICAg
ICAgIGlmIChjdXJCbG9jay0+cGFyZW50RWxlbWVudCgpLT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY3VyQmxvY2sgPSBjdXJCbG9jay0+cGFyZW50RWxlbWVu
dCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNj
dW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5j
cHAKaW5kZXggNTIyNmIyMTRjMjU4MTE3NjA5MzVjNTY2OTY0ZTc2MzBmMDJmOWQxOC4uMzA2YTg0
NjU1OGU2YmMyYTE2ZGE4NjdmMmEyMGM4NzZkNjIyZTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKQEAgLTM0OSwxMSArMzQ5LDEwIEBAIHZvaWQg
TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEVsZW1lbnQoU3RyaW5nQnVpbGRlciYgb3V0LCBFbGVt
ZW50KiBlbGVtZW50LCBOYW1lCiB7CiAgICAgYXBwZW5kT3BlblRhZyhvdXQsIGVsZW1lbnQsIG5h
bWVzcGFjZXMpOwogCi0gICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gZWxlbWVudC0+dXBk
YXRlZEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAoYXR0cmlidXRlcykgewotICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBhdHRyaWJ1dGVzLT5sZW5ndGgoKTsKKyAgICBpZiAoZWxlbWVudC0+aGFzQXR0
cmlidXRlcygpKSB7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGVsZW1lbnQtPmF0dHJpYnV0
ZUNvdW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KyspCi0gICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGUob3V0LCBlbGVtZW50LCAqYXR0cmlidXRl
cy0+YXR0cmlidXRlSXRlbShpKSwgbmFtZXNwYWNlcyk7CisgICAgICAgICAgICBhcHBlbmRBdHRy
aWJ1dGUob3V0LCBlbGVtZW50LCAqZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKSwgbmFtZXNwYWNl
cyk7CiAgICAgfQogCiAgICAgLy8gR2l2ZSBhbiBvcHBvcnR1bml0eSB0byBzdWJjbGFzc2VzIHRv
IGFkZCB0aGVpciBvd24gYXR0cmlidXRlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRl
eCA5YjE5MDkwOTFhMTA1YzEzNjVlYzcxMmZiOTA1YzdiMjE0OTExMDljLi5jOWEwZTc4ZGQxOTZl
ZGE5ZjIwMGM2YWNmZTRkM2NlNDM3ZWYxZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CkBAIC0xMDQsMTIgKzEwNCwxMSBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZVVSTHMoTm9kZSogbm9k
ZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMKQogICAgIGZvciAoTm9kZSogbiA9IG5vZGU7IG4gIT0g
ZW5kOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CiAgICAgICAgIGlmIChuLT5pc0VsZW1l
bnROb2RlKCkpIHsKICAgICAgICAgICAgIEVsZW1lbnQqIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obik7Ci0gICAgICAgICAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMgPSBlLT51cGRhdGVk
QXR0cmlidXRlcygpOwotICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGVzKQorICAgICAgICAgICAg
aWYgKCFlLT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRyaWJ1dGVzLT5sZW5ndGgoKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGUtPmF0dHJpYnV0ZUNvdW50KCk7CiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICBB
dHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAg
ICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlLT5hdHRyaWJ1dGVJdGVtKGkpOwog
ICAgICAgICAgICAgICAgIGlmIChlLT5pc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpKQogICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VzLmFwcGVuZChBdHRyaWJ1dGVDaGFuZ2UoZSwgYXR0cmlidXRl
LT5uYW1lKCksIEtVUkwocGFyc2VkQmFzZVVSTCwgYXR0cmlidXRlLT52YWx1ZSgpKS5zdHJpbmco
KSkpOwogICAgICAgICAgICAgfQpAQCAtMjg5LDEyICsyODgsMTEgQEAgdm9pZCBTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvcjo6YXBwZW5kRWxlbWVudChTdHJpbmdCdWlsZGVyJiBvdXQsIEVsZW1lbnQq
IGVsZW1lbnQKICAgICBjb25zdCBib29sIGRvY3VtZW50SXNIVE1MID0gZWxlbWVudC0+ZG9jdW1l
bnQoKS0+aXNIVE1MRG9jdW1lbnQoKTsKICAgICBhcHBlbmRPcGVuVGFnKG91dCwgZWxlbWVudCwg
MCk7CiAKLSAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMgPSBlbGVtZW50LT51cGRhdGVkQXR0
cmlidXRlcygpOwotICAgIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCA9IGF0dHJpYnV0ZXMgPyBhdHRy
aWJ1dGVzLT5sZW5ndGgoKSA6IDA7CisgICAgY29uc3QgdW5zaWduZWQgbGVuZ3RoID0gZWxlbWVu
dC0+aGFzQXR0cmlidXRlcygpID8gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKSA6IDA7CiAgICAg
Y29uc3QgYm9vbCBzaG91bGRBbm5vdGF0ZU9yRm9yY2VJbmxpbmUgPSBlbGVtZW50LT5pc0hUTUxF
bGVtZW50KCkgJiYgKHNob3VsZEFubm90YXRlKCkgfHwgYWRkRGlzcGxheUlubGluZSk7CiAgICAg
Y29uc3QgYm9vbCBzaG91bGRPdmVycmlkZVN0eWxlQXR0ciA9IHNob3VsZEFubm90YXRlT3JGb3Jj
ZUlubGluZSB8fCBzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUoZWxlbWVudCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBBdHRyaWJ1dGUq
IGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgIEF0dHJp
YnV0ZSogYXR0cmlidXRlID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgLy8g
V2UnbGwgaGFuZGxlIHRoZSBzdHlsZSBhdHRyaWJ1dGUgc2VwYXJhdGVseSwgYmVsb3cuCiAgICAg
ICAgIGlmIChhdHRyaWJ1dGUtPm5hbWUoKSA9PSBzdHlsZUF0dHIgJiYgc2hvdWxkT3ZlcnJpZGVT
dHlsZUF0dHIpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bWJlZEVsZW1lbnQuY3BwCmluZGV4IGRlNGY1YmJhMzM3MDM4YTQ5ZmFmODQ4ZGVjMmYxZjRmOGY2
MTg0YzUuLjE2NWVmYjljMGM2YTk1NTA3ZWJhM2FkNWFlOGI1YWQyZTBkYWUyNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAtMTA4LDEyICsxMDgsMTEgQEAg
dm9pZCBIVE1MRW1iZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAK
IHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6cGFyYW1ldGVyc0ZvclBsdWdpbihWZWN0b3I8U3RyaW5n
PiYgcGFyYW1OYW1lcywgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQogewotICAgIE5hbWVk
Tm9kZU1hcCogYXR0cmlidXRlcyA9IHVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKCFhdHRy
aWJ1dGVzKQorICAgIGlmICghaGFzQXR0cmlidXRlcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRlcy0+bGVuZ3RoKCk7ICsraSkgewot
ICAgICAgICBBdHRyaWJ1dGUqIGl0ID0gYXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRlQ291bnQoKTsgKytpKSB7CisgICAg
ICAgIEF0dHJpYnV0ZSogaXQgPSBhdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICBwYXJhbU5hbWVz
LmFwcGVuZChpdC0+bG9jYWxOYW1lKCkuc3RyaW5nKCkpOwogICAgICAgICBwYXJhbVZhbHVlcy5h
cHBlbmQoaXQtPnZhbHVlKCkuc3RyaW5nKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGY0OTY3NTFkOWVkMTExYjUzNGQ1NDU4ZGY1MGM3MDE0
MWNiNjMxODcuLmZjZWFhMzNiMjhlNjkzM2Q2ZDMwYWE0NTlmNjYyOTQ5ZWM5NWE2ZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNTQ1LDEzICs1NDUsMTIg
QEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICAgICAgcmVnaXN0ZXJG
b3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogCiAgICAgaWYgKGRpZFJlc3BlY3RIZWln
aHRBbmRXaWR0aCAhPSBtX2lucHV0VHlwZS0+c2hvdWxkUmVzcGVjdEhlaWdodEFuZFdpZHRoQXR0
cmlidXRlcygpKSB7Ci0gICAgICAgIE5hbWVkTm9kZU1hcCogbWFwID0gYXR0cmlidXRlTWFwKCk7
Ci0gICAgICAgIEFTU0VSVChtYXApOwotICAgICAgICBpZiAoQXR0cmlidXRlKiBoZWlnaHQgPSBt
YXAtPmdldEF0dHJpYnV0ZUl0ZW0oaGVpZ2h0QXR0cikpCisgICAgICAgIEFTU0VSVChhdHRyaWJ1
dGVNYXAoKSk7CisgICAgICAgIGlmIChBdHRyaWJ1dGUqIGhlaWdodCA9IGdldEF0dHJpYnV0ZUl0
ZW0oaGVpZ2h0QXR0cikpCiAgICAgICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGhlaWdodCk7Ci0g
ICAgICAgIGlmIChBdHRyaWJ1dGUqIHdpZHRoID0gbWFwLT5nZXRBdHRyaWJ1dGVJdGVtKHdpZHRo
QXR0cikpCisgICAgICAgIGlmIChBdHRyaWJ1dGUqIHdpZHRoID0gZ2V0QXR0cmlidXRlSXRlbSh3
aWR0aEF0dHIpKQogICAgICAgICAgICAgYXR0cmlidXRlQ2hhbmdlZCh3aWR0aCk7Ci0gICAgICAg
IGlmIChBdHRyaWJ1dGUqIGFsaWduID0gbWFwLT5nZXRBdHRyaWJ1dGVJdGVtKGFsaWduQXR0cikp
CisgICAgICAgIGlmIChBdHRyaWJ1dGUqIGFsaWduID0gZ2V0QXR0cmlidXRlSXRlbShhbGlnbkF0
dHIpKQogICAgICAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChhbGlnbik7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGVhYjE4YWM5NzgyNjli
NDQ0Y2IxODNlMDA1MGQ2MDkyMzQzMmE1MWUuLjU0NDg5MGIzYzQ1MWUxZDZjM2Y2Yjc3NmQ4YTQ4
ODFhM2FlY2VmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3Bw
CkBAIC0xNzcsMTAgKzE3Nyw5IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnBhcmFtZXRlcnNG
b3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxTCiAgICAgfQogICAg
IAogICAgIC8vIFR1cm4gdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIDxvYmplY3Q+IGVsZW1lbnQgaW50
byBhcnJheXMsIGJ1dCBkb24ndCBvdmVycmlkZSA8cGFyYW0+IHZhbHVlcy4KLSAgICBOYW1lZE5v
ZGVNYXAqIGF0dHJpYnV0ZXMgPSB1cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmIChhdHRyaWJ1
dGVzKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLT5sZW5n
dGgoKTsgKytpKSB7Ci0gICAgICAgICAgICBBdHRyaWJ1dGUqIGl0ID0gYXR0cmlidXRlcy0+YXR0
cmlidXRlSXRlbShpKTsKKyAgICBpZiAoaGFzQXR0cmlidXRlcygpKSB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVDb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAg
IEF0dHJpYnV0ZSogaXQgPSBhdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lID0gaXQtPm5hbWUoKS5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgIGlm
ICghdW5pcXVlUGFyYW1OYW1lcy5jb250YWlucyhuYW1lLmltcGwoKSkpIHsKICAgICAgICAgICAg
ICAgICBwYXJhbU5hbWVzLmFwcGVuZChuYW1lLnN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQYXJhbUVsZW1lbnQuY3BwCmluZGV4IGUwNTUyYmEyYzk2ZDMxZGVhYzUyODBiZmNmZGEz
YTFiYTU3NzM2YTIuLmMwZjkxOTk1MTdlNWE0ZGRmMzU3NmUyYmU3YWI5ODIwOWI3OTA5YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcApAQCAtNjYsNyArNjYsNyBA
QCB2b2lkIEhUTUxQYXJhbUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikK
IGJvb2wgSFRNTFBhcmFtRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKSBj
b25zdAogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gdmFsdWVBdHRyICYmIGhhc0F0dHJpYnV0
ZXMoKSkgewotICAgICAgICBBdHRyaWJ1dGUqIG5hbWVBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVNYXAo
KS0+Z2V0QXR0cmlidXRlSXRlbShuYW1lQXR0cik7CisgICAgICAgIEF0dHJpYnV0ZSogbmFtZUF0
dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZUl0ZW0obmFtZUF0dHIpOwogICAgICAgICBpZiAobmFtZUF0
dHJpYnV0ZSkgewogICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IG5hbWVB
dHRyaWJ1dGUtPnZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoaXNVUkxQYXJhbWV0ZXIodmFsdWUp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdF
bGVtZW50TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGlu
Z0VsZW1lbnRMaXN0LmNwcAppbmRleCBmMzMxYWY3ZTcwYjZiNWRjNWQxOWE4MTQ3YmU3YTI4NGIz
ZTYyOWRlLi4wMTQ1ZGUwZTZmMzllMDE5MDBjMjQxNWI0N2Q5ZTY1N2E1MjFlZGYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1l
bnRMaXN0LmNwcApAQCAtNDAsOSArNDAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBOb2Fo
J3MgQXJrIG9mIEZvcm1hdHRpbmcgRWxlbWVudHMgY2FuIGZpdCB0aHJlZSBvZiBlYWNoIGVsZW1l
bnQuCiBzdGF0aWMgY29uc3Qgc2l6ZV90IGtOb2Foc0Fya0NhcGFjaXR5ID0gMzsKIAotc3RhdGlj
IGlubGluZSBzaXplX3QgYXR0cmlidXRlQ291bnQoRWxlbWVudCogZWxlbWVudCkKK3N0YXRpYyBp
bmxpbmUgc2l6ZV90IGF0dHJpYnV0ZUNvdW50V2l0aG91dFVwZGF0ZShFbGVtZW50KiBlbGVtZW50
KQogewotICAgIHJldHVybiBlbGVtZW50LT5hdHRyaWJ1dGVNYXAoKSA/IGVsZW1lbnQtPmF0dHJp
YnV0ZU1hcCgpLT5sZW5ndGgoKSA6IDA7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0F0dHJpYnV0
ZXNXaXRob3V0VXBkYXRlKCkgPyBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpIDogMDsKIH0KIAog
SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdCgpCkBA
IC0xNDIsNyArMTQyLDcgQEAgdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0Ojp0cnlUb0Vu
c3VyZU5vYWhzQXJrQ29uZGl0aW9uUXVpY2tseShFbGVtZW50KiBuZXcKICAgICAvLyBvZiBhIHF1
aWNrbHkgZW5zdXJpbmcgdGhlIGNvbmRpdGlvbi4KICAgICBWZWN0b3I8RWxlbWVudCosIDEwPiBj
YW5kaWRhdGVzOwogCi0gICAgc2l6ZV90IG5ld0VsZW1lbnRBdHRyaWJ1dGVDb3VudCA9IGF0dHJp
YnV0ZUNvdW50KG5ld0VsZW1lbnQpOworICAgIHNpemVfdCBuZXdFbGVtZW50QXR0cmlidXRlQ291
bnQgPSBhdHRyaWJ1dGVDb3VudFdpdGhvdXRVcGRhdGUobmV3RWxlbWVudCk7CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gbV9lbnRyaWVzLnNpemUoKTsgaTsgKSB7CiAgICAgICAgIC0taTsKQEAgLTE1
NCw3ICsxNTQsNyBAQCB2b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJl
Tm9haHNBcmtDb25kaXRpb25RdWlja2x5KEVsZW1lbnQqIG5ldwogICAgICAgICBFbGVtZW50KiBj
YW5kaWRhdGUgPSBlbnRyeS5lbGVtZW50KCk7CiAgICAgICAgIGlmIChuZXdFbGVtZW50LT50YWdR
TmFtZSgpICE9IGNhbmRpZGF0ZS0+dGFnUU5hbWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBpZiAoYXR0cmlidXRlQ291bnQoY2FuZGlkYXRlKSAhPSBuZXdFbGVtZW50QXR0cmli
dXRlQ291bnQpCisgICAgICAgIGlmIChhdHRyaWJ1dGVDb3VudFdpdGhvdXRVcGRhdGUoY2FuZGlk
YXRlKSAhPSBuZXdFbGVtZW50QXR0cmlidXRlQ291bnQpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZChjYW5kaWRhdGUpOwpAQCAtMTc4LDE4ICsxNzgs
MTYgQEAgdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjplbnN1cmVOb2Foc0Fya0NvbmRp
dGlvbihFbGVtZW50KiBuZXdFbGVtZW50KQogICAgIFZlY3RvcjxFbGVtZW50Kj4gcmVtYWluaW5n
Q2FuZGlkYXRlczsKICAgICByZW1haW5pbmdDYW5kaWRhdGVzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoY2FuZGlkYXRlcy5zaXplKCkpOwogCi0gICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAg
PSBuZXdFbGVtZW50LT5hdHRyaWJ1dGVNYXAoKTsKLSAgICBzaXplX3QgbmV3RWxlbWVudEF0dHJp
YnV0ZUNvdW50ID0gYXR0cmlidXRlQ291bnQobmV3RWxlbWVudCk7CisgICAgc2l6ZV90IG5ld0Vs
ZW1lbnRBdHRyaWJ1dGVDb3VudCA9IGF0dHJpYnV0ZUNvdW50V2l0aG91dFVwZGF0ZShuZXdFbGVt
ZW50KTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3RWxlbWVudEF0dHJpYnV0ZUNv
dW50OyArK2kpIHsKLSAgICAgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1dGVOYW1lID0gYXR0cmli
dXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGkpLT5uYW1lKCk7Ci0gICAgICAgIEF0b21pY1N0cmluZyBh
dHRyaWJ1dGVWYWx1ZSA9IG5ld0VsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZSk7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gbmV3RWxlbWVudC0+YXR0cmlidXRl
SXRlbShpKTsKIAogICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGNhbmRpZGF0ZXMuc2l6
ZSgpOyArK2opIHsKICAgICAgICAgICAgIEVsZW1lbnQqIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZXNb
al07CiAKICAgICAgICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgc2hvdWxkIGFscmVhZHkgaGF2
ZSBiZWVuIGNoZWNrZWQgYnkgdHJ5VG9FbnN1cmVOb2Foc0Fya0NvbmRpdGlvblF1aWNrbHkuCi0g
ICAgICAgICAgICBBU1NFUlQobmV3RWxlbWVudC0+YXR0cmlidXRlTWFwKCktPmxlbmd0aCgpID09
IGNhbmRpZGF0ZS0+YXR0cmlidXRlTWFwKCktPmxlbmd0aCgpKTsKKyAgICAgICAgICAgIEFTU0VS
VChuZXdFbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpID09IGNhbmRpZGF0ZS0+YXR0cmlidXRlQ291
bnQoKSk7CiAgICAgICAgICAgICBBU1NFUlQobmV3RWxlbWVudC0+dGFnUU5hbWUoKSA9PSBjYW5k
aWRhdGUtPnRhZ1FOYW1lKCkpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogVGVjaG5pY2FsbHkg
d2Ugc2hvdWxkbid0IHJlYWQgdGhpcyBpbmZvcm1hdGlvbiBiYWNrIGZyb20KQEAgLTE5OSw3ICsx
OTcsNyBAQCB2b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Q6OmVuc3VyZU5vYWhzQXJrQ29u
ZGl0aW9uKEVsZW1lbnQqIG5ld0VsZW1lbnQpCiAgICAgICAgICAgICAvLyB0aGF0IGltcGxlbWVu
dGF0aW9ucyBjYW4gcnVuIG9mZiB0aGUgbWFpbiB0aHJlYWQuIElmIEphdmFTY3JpcHQKICAgICAg
ICAgICAgIC8vIGNoYW5nZXMgdGhlIGF0dHJpYnV0ZXMgdmFsdWVzLCB3ZSBjb3VsZCBnZXQgYSBz
bGlnaHRseSB3cm9uZwogICAgICAgICAgICAgLy8gb3V0cHV0IGhlcmUuCi0gICAgICAgICAgICBp
ZiAoY2FuZGlkYXRlLT5mYXN0R2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpID09IGF0dHJpYnV0
ZVZhbHVlKQorICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+ZmFzdEdldEF0dHJpYnV0ZShhdHRy
aWJ1dGUtPm5hbWUoKSkgPT0gYXR0cmlidXRlLT52YWx1ZSgpKQogICAgICAgICAgICAgICAgIHJl
bWFpbmluZ0NhbmRpZGF0ZXMuYXBwZW5kKGNhbmRpZGF0ZSk7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRleCAzYzlkODliNWRkMWNmYmEzYWI0MmUw
MjU5NGMxNWI0NzAyNDAzZjU0Li42M2FmYTk2MzkwMTAzNjI2ZTkxZjZjNWE3YjZhYTQ3OWU3Yzlh
OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAtMTYwLDE2ICsx
NjAsMTcgQEAgdm9pZCBET01FZGl0b3I6OmlubmVyUGF0Y2hOb2RlKERpZ2VzdCogb2xkRGlnZXN0
LCBEaWdlc3QqIG5ld0RpZ2VzdCwgRXhjZXB0aW9uQ28KICAgICBFbGVtZW50KiBvbGRFbGVtZW50
ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG9sZE5vZGUpOwogICAgIEVsZW1lbnQqIG5ld0VsZW1l
bnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obmV3Tm9kZSk7CiAgICAgaWYgKG9sZERpZ2VzdC0+
bV9hdHRyc1NIQTEgIT0gbmV3RGlnZXN0LT5tX2F0dHJzU0hBMSkgewotICAgICAgICBOYW1lZE5v
ZGVNYXAqIG9sZEF0dHJpYnV0ZU1hcCA9IG9sZEVsZW1lbnQtPmF0dHJpYnV0ZU1hcCgpOwotCi0g
ICAgICAgIHdoaWxlIChvbGRBdHRyaWJ1dGVNYXAgJiYgb2xkQXR0cmlidXRlTWFwLT5sZW5ndGgo
KSkKLSAgICAgICAgICAgIG9sZEF0dHJpYnV0ZU1hcC0+cmVtb3ZlQXR0cmlidXRlKDApOworICAg
ICAgICAvLyBGSVhNRTogQ3JlYXRlIGEgZnVuY3Rpb24gaW4gRWxlbWVudCBmb3IgcmVtb3Zpbmcg
YWxsIHByb3BlcnRpZXMuIFRha2UgaW4gYWNjb3VudCB3aGV0aGVyIGRpZC93aWxsTW9kaWZ5QXR0
cmlidXRlIGFyZSBpbXBvcnRhbnQuCisgICAgICAgIGlmIChvbGRFbGVtZW50LT5oYXNBdHRyaWJ1
dGVzV2l0aG91dFVwZGF0ZSgpKSB7CisgICAgICAgICAgICB3aGlsZSAob2xkRWxlbWVudC0+YXR0
cmlidXRlQ291bnQoKSkKKyAgICAgICAgICAgICAgICBvbGRFbGVtZW50LT5yZW1vdmVBdHRyaWJ1
dGUoMCk7CisgICAgICAgIH0KIAotICAgICAgICBOYW1lZE5vZGVNYXAqIG5ld0F0dHJpYnV0ZU1h
cCA9IG5ld0VsZW1lbnQtPmF0dHJpYnV0ZU1hcCgpOwotICAgICAgICBpZiAobmV3QXR0cmlidXRl
TWFwKSB7Ci0gICAgICAgICAgICBzaXplX3QgbnVtQXR0cnMgPSBuZXdBdHRyaWJ1dGVNYXAtPmxl
bmd0aCgpOworICAgICAgICAvLyBGSVhNRTogQ3JlYXRlIGEgZnVuY3Rpb24gaW4gRWxlbWVudCBm
b3IgY29weWluZyBwcm9wZXJ0aWVzLiBzZXRBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoKSBpcyBjbG9z
ZSBidXQgbm90IGVub3VnaCBmb3IgdGhpcyBjYXNlLgorICAgICAgICBpZiAobmV3RWxlbWVudC0+
aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSkgeworICAgICAgICAgICAgc2l6ZV90IG51bUF0
dHJzID0gbmV3RWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtQXR0cnM7ICsraSkgewotICAgICAgICAgICAgICAgIGNvbnN0IEF0
dHJpYnV0ZSogYXR0cmlidXRlID0gbmV3QXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOwor
ICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gbmV3RWxlbWVudC0+
YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgICAgICAgICBvbGRFbGVtZW50LT5zZXRBdHRyaWJ1
dGUoYXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTM4NCwxMiArMzg1LDExIEBAIFBhc3NPd25QdHI8RE9NRWRpdG9yOjpE
aWdlc3Q+IERPTUVkaXRvcjo6Y3JlYXRlRGlnZXN0KE5vZGUqIG5vZGUsIFVudXNlZE5vZGVzTWFw
CiAgICAgICAgIH0KICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1l
bnQqPihub2RlKTsKIAotICAgICAgICBOYW1lZE5vZGVNYXAqIGF0dHJNYXAgPSBlbGVtZW50LT5h
dHRyaWJ1dGVNYXAoKTsKLSAgICAgICAgaWYgKGF0dHJNYXAgJiYgYXR0ck1hcC0+bGVuZ3RoKCkp
IHsKLSAgICAgICAgICAgIHNpemVfdCBudW1BdHRycyA9IGF0dHJNYXAtPmxlbmd0aCgpOworICAg
ICAgICBpZiAoZWxlbWVudC0+aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSkgeworICAgICAg
ICAgICAgc2l6ZV90IG51bUF0dHJzID0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICAg
ICAgICAgIFNIQTEgYXR0cnNTSEExOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1BdHRyczsgKytpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRy
aWJ1dGUgPSBhdHRyTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICAgICAgICAgIGNvbnN0
IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAg
ICAgICAgICAgICBhZGRTdHJpbmdUb1NIQTEoYXR0cnNTSEExLCBhdHRyaWJ1dGUtPm5hbWUoKS50
b1N0cmluZygpKTsKICAgICAgICAgICAgICAgICBhZGRTdHJpbmdUb1NIQTEoYXR0cnNTSEExLCBh
dHRyaWJ1dGUtPnZhbHVlKCkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggYjQzMDdmOTM1ZDQ3N2YxMjgxMTVk
ODFkY2E3MjdmNDMwNDA0NGFhZS4uNDNhY2JiNmY5ZGUxZjNmY2M3ZDlmYjM5MDY4NTA0N2YzZGJh
ZTY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCkBAIC01MzAsMTcgKzUzMCwxNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRBdHRy
aWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGVsZW1lbgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgTmFtZWROb2RlTWFwKiBhdHRyTWFwID0gdG9I
VE1MRWxlbWVudChjaGlsZCktPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKCFhdHRyTWFw
ICYmIG5hbWUpIHsKKyAgICBFbGVtZW50KiBjaGlsZEVsZW1lbnQgPSB0b0VsZW1lbnQoY2hpbGQp
OworICAgIGlmICghY2hpbGRFbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkgJiYgbmFtZSkgewogICAg
ICAgICBlbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoKm5hbWUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgYm9vbCBmb3VuZE9yaWdpbmFsQXR0cmlidXRlID0gZmFsc2U7Ci0gICAgdW5z
aWduZWQgbnVtQXR0cnMgPSBhdHRyTWFwLT5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBudW1BdHRy
cyA9IGNoaWxkRWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtQXR0cnM7ICsraSkgewogICAgICAgICAvLyBBZGQgYXR0cmlidXRlIHBhaXIK
LSAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyTWFwLT5hdHRyaWJ1dGVJ
dGVtKGkpOworICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGNoaWxkRWxlbWVu
dC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgZm91bmRPcmlnaW5hbEF0dHJpYnV0ZSA9IGZv
dW5kT3JpZ2luYWxBdHRyaWJ1dGUgfHwgKG5hbWUgJiYgYXR0cmlidXRlLT5uYW1lKCkudG9TdHJp
bmcoKSA9PSAqbmFtZSk7CiAgICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUt
Pm5hbWUoKSwgYXR0cmlidXRlLT52YWx1ZSgpKTsKICAgICB9CkBAIC03ODEsMTQgKzc4MSwxNCBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLy8gR28gdGhyb3VnaCBhbGwgYXR0cmli
dXRlcyBhbmQgc2VyaWFsaXplIHRoZW0uCi0gICAgICAgICAgICAgICAgY29uc3QgTmFtZWROb2Rl
TWFwKiBhdHRyTWFwID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT51cGRhdGVkQXR0cmli
dXRlcygpOwotICAgICAgICAgICAgICAgIGlmICghYXR0ck1hcCkKKyAgICAgICAgICAgICAgICBj
b25zdCBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG5vZGUpOworICAgICAgICAgICAgICAg
IGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bUF0dHJzID0gYXR0ck1hcC0+bGVuZ3Ro
KCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtQXR0cnMgPSBlbGVtZW50LT5hdHRyaWJ1
dGVDb3VudCgpOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1B
dHRyczsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEFkZCBhdHRyaWJ1dGUgcGFpcgot
ICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJNYXAt
PmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSog
YXR0cmlidXRlID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkuZmluZCh3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5
KSAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q29sbGVjdG9y
LmFkZChub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE1OSwxMyAr
MTE1OSwxMiBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JET01BZ2VudDo6
YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZQogewogICAgIFJlZlB0cjxJbnNwZWN0
b3JBcnJheT4gYXR0cmlidXRlc1ZhbHVlID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogICAg
IC8vIEdvIHRocm91Z2ggYWxsIGF0dHJpYnV0ZXMgYW5kIHNlcmlhbGl6ZSB0aGVtLgotICAgIGNv
bnN0IE5hbWVkTm9kZU1hcCogYXR0ck1hcCA9IGVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7
Ci0gICAgaWYgKCFhdHRyTWFwKQorICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQog
ICAgICAgICByZXR1cm4gYXR0cmlidXRlc1ZhbHVlLnJlbGVhc2UoKTsKLSAgICB1bnNpZ25lZCBu
dW1BdHRycyA9IGF0dHJNYXAtPmxlbmd0aCgpOworICAgIHVuc2lnbmVkIG51bUF0dHJzID0gZWxl
bWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
QXR0cnM7ICsraSkgewogICAgICAgICAvLyBBZGQgYXR0cmlidXRlIHBhaXIKLSAgICAgICAgY29u
c3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOworICAg
ICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0o
aSk7CiAgICAgICAgIGF0dHJpYnV0ZXNWYWx1ZS0+cHVzaFN0cmluZyhhdHRyaWJ1dGUtPm5hbWUo
KS50b1N0cmluZygpKTsKICAgICAgICAgYXR0cmlidXRlc1ZhbHVlLT5wdXNoU3RyaW5nKGF0dHJp
YnV0ZS0+dmFsdWUoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cAppbmRleCAwNTk4NjRlZWE5ZWZiZDk3YTk0MGE5YmM5OWIzYmI4NWU4YWVhYzdjLi42NGQ5MDFi
N2EzODA4YTY3ODY3YTg0MTM5ZDhmZmEzMzYzOWJmNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcApAQCAtNjksOSArNjksOSBAQCBzdGF0aWMgYm9vbCBpc0NoYXJzZXRT
cGVjaWZ5aW5nTm9kZShOb2RlKiBub2RlKQogICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6Om1ldGFUYWcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSFRNTE1ldGFD
aGFyc2V0UGFyc2VyOjpBdHRyaWJ1dGVMaXN0IGF0dHJpYnV0ZXM7Ci0gICAgaWYgKGNvbnN0IE5h
bWVkTm9kZU1hcCogYXR0cmlidXRlc01hcCA9IGVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCkp
IHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZXNNYXAtPmxlbmd0
aCgpOyArK2kpIHsKLSAgICAgICAgICAgIEF0dHJpYnV0ZSogaXRlbSA9IGF0dHJpYnV0ZXNNYXAt
PmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgaWYgKGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVudC0+YXR0cmlidXRlQ291bnQo
KTsgKytpKSB7CisgICAgICAgICAgICBBdHRyaWJ1dGUqIGl0ZW0gPSBlbGVtZW50LT5hdHRyaWJ1
dGVJdGVtKGkpOwogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkZWFsIGFwcHJvcHJp
YXRlbHkgd2l0aCB0aGUgYXR0cmlidXRlIGlmIHRoZXkgaGF2ZSBhIG5hbWVzcGFjZS4KICAgICAg
ICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKG1ha2VfcGFpcihpdGVtLT5uYW1lKCkudG9TdHJpbmco
KSwgaXRlbS0+dmFsdWUoKS5zdHJpbmcoKSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggOThlYjIxMGFhYjBiNGU2ZjAyODUzY2ExZWUzZDE4
MjY0NmQ5MjFlZS4uNDVhNGRjZTFhOTkxNzg4NWIwOGQxNmE2YTA5ZGJiM2RhZmY0ZTg2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcApAQCAtNDA2LDExICs0MDYsMTEg
QEAgdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQ
YXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwKIAogUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5
bGVkRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKLSAgICBpZiAoIWF0dHJpYnV0ZU1hcCgpKQorICAgIGlmICghaGFzQXR0cmlidXRlc1dpdGhv
dXRVcGRhdGUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBRdWFsaWZpZWROYW1lIGF0dHJp
YnV0ZU5hbWUobnVsbEF0b20sIG5hbWUsIG51bGxBdG9tKTsKLSAgICBBdHRyaWJ1dGUqIGF0dHIg
PSBhdHRyaWJ1dGVNYXAoKS0+Z2V0QXR0cmlidXRlSXRlbShhdHRyaWJ1dGVOYW1lKTsKKyAgICBB
dHRyaWJ1dGUqIGF0dHIgPSBnZXRBdHRyaWJ1dGVJdGVtKGF0dHJpYnV0ZU5hbWUpOwogICAgIGlm
ICghYXR0cikKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlv
bnMuY3BwCmluZGV4IDI4MzU4M2Q3ODNhZmE2ZWYxMGVhNzc5MmNiMjA5Y2Q1MTM0MzM1Y2YuLjE1
NGI2N2U5MmQzMmM3ZDE3NmJjYjgxMDkwZThkZjQxOThiNGIwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoRnVuY3Rpb25zLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIlhQYXRoRnVu
Y3Rpb25zLmgiCiAKICNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiTmFtZWROb2RlTWFw
LmgiCiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiVHJlZVNj
b3BlLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKQEAgLTU5Miw4ICs1OTEsOSBAQCBWYWx1ZSBG
dW5MYW5nOjpldmFsdWF0ZSgpIGNvbnN0CiAgICAgTm9kZSogbm9kZSA9IGV2YWx1YXRpb25Db250
ZXh0KCkubm9kZS5nZXQoKTsKICAgICB3aGlsZSAobm9kZSkgewogICAgICAgICBpZiAobm9kZS0+
aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAoTmFtZWROb2RlTWFwKiBhdHRyaWJ1
dGVzID0gdG9FbGVtZW50KG5vZGUpLT51cGRhdGVkQXR0cmlidXRlcygpKQotICAgICAgICAgICAg
ICAgIGxhbmd1YWdlQXR0cmlidXRlID0gYXR0cmlidXRlcy0+Z2V0QXR0cmlidXRlSXRlbShYTUxO
YW1lczo6bGFuZ0F0dHIpOworICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVu
dChub2RlKTsKKyAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCisgICAg
ICAgICAgICAgICAgbGFuZ3VhZ2VBdHRyaWJ1dGUgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGVJdGVt
KFhNTE5hbWVzOjpsYW5nQXR0cik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxhbmd1YWdlQXR0
cmlidXRlKQogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhOb2RlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3Bw
CmluZGV4IDhlZWZjNTczZmY0NDc5NDI1MjFmYmQwNzdhZGYxNTIxZDJhMzlhZjcuLjY4ODFkMzg1
NTU1NTI5OWViNDRhODE0ZWNkNGIyNzcwMGMyMWE0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5v
ZGVTZXQuY3BwCkBAIC0yMTMsMTMgKzIxMywxMyBAQCB2b2lkIE5vZGVTZXQ6OnRyYXZlcnNhbFNv
cnQoKSBjb25zdAogICAgICAgICBpZiAoIWNvbnRhaW5zQXR0cmlidXRlTm9kZXMgfHwgIW4tPmlz
RWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE5hbWVkTm9k
ZU1hcCogYXR0cmlidXRlcyA9IHRvRWxlbWVudChuKS0+dXBkYXRlZEF0dHJpYnV0ZXMoKTsKLSAg
ICAgICAgaWYgKCFhdHRyaWJ1dGVzKQorICAgICAgICBFbGVtZW50KiBlID0gdG9FbGVtZW50KG4p
OworICAgICAgICBpZiAoIWUtPmhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZUNvdW50ID0gYXR0cmlidXRlcy0+bGVuZ3Ro
KCk7CisgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZUNvdW50ID0gZS0+YXR0cmlidXRlQ291bnQo
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZUNvdW50OyArK2kp
IHsKLSAgICAgICAgICAgIEF0dHIqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0
ZW0oaSktPmF0dHIoKTsKKyAgICAgICAgICAgIEF0dHIqIGF0dHJpYnV0ZSA9IGUtPmF0dHJpYnV0
ZUl0ZW0oaSktPmF0dHIoKTsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUgJiYgbm9kZXMuY29u
dGFpbnMoYXR0cmlidXRlKSkKICAgICAgICAgICAgICAgICBzb3J0ZWROb2Rlcy5hcHBlbmQoYXR0
cmlidXRlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
U3RlcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcAppbmRleCAxMmYzOTRm
MmNhMGI0NDU2YTgxZDEwODk4M2I3OTI0ZDVjNGQ4NzVkLi5mZjdlNjg1ZDkxMTczN2ViY2QxZGYy
MTkzZWVjMzE3OTM5ZmNlNGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhT
dGVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcApAQCAtMzEsNyAr
MzEsNiBAQAogI2luY2x1ZGUgIkF0dHIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJYTUxO
U05hbWVzLmgiCiAjaW5jbHVkZSAiWFBhdGhQYXJzZXIuaCIKICNpbmNsdWRlICJYUGF0aFV0aWwu
aCIKQEAgLTM0MywxMiArMzQyLDExIEBAIHZvaWQgU3RlcDo6bm9kZXNJbkF4aXMoTm9kZSogY29u
dGV4dCwgTm9kZVNldCYgbm9kZXMpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBOYW1lZE5vZGVNYXAqIGF0dHJz
ID0gY29udGV4dEVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgICAgICBpZiAo
IWF0dHJzKQorICAgICAgICAgICAgaWYgKCFjb250ZXh0RWxlbWVudC0+aGFzQXR0cmlidXRlcygp
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGF0dHJzLT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRy
PEF0dHI+IGF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKS0+Y3JlYXRlQXR0cklmTmVlZGVk
KHN0YXRpY19jYXN0PEVsZW1lbnQqPihjb250ZXh0KSk7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgY29udGV4dEVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7ICsraSkgewor
ICAgICAgICAgICAgICAgIFJlZlB0cjxBdHRyPiBhdHRyID0gY29udGV4dEVsZW1lbnQtPmF0dHJp
YnV0ZUl0ZW0oaSktPmNyZWF0ZUF0dHJJZk5lZWRlZChzdGF0aWNfY2FzdDxFbGVtZW50Kj4oY29u
dGV4dCkpOwogICAgICAgICAgICAgICAgIGlmIChub2RlTWF0Y2hlcyhhdHRyLmdldCgpLCBBdHRy
aWJ1dGVBeGlzLCBtX25vZGVUZXN0KSkKICAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5k
KGF0dHIucmVsZWFzZSgpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCA0ZTFkNDll
ZWZkMDRiZmVmNjg2ZTBhMmM1Y2UyYjYwYzFkOGQ4N2MwLi4zYTM2ZDk4ZTEyNTZjNGRkZWQ1Nzc2
YWVmMDYyNDYyMTY3ZjAzOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC01OTksOSArNTk5LDkgQEAgWE1M
RG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqIGZyYWdt
ZW50LCBFbGVtZW50KiBwYXJlbnQKIAogICAgIGZvciAoOyAhZWxlbVN0YWNrLmlzRW1wdHkoKTsg
ZWxlbVN0YWNrLnJlbW92ZUxhc3QoKSkgewogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxl
bVN0YWNrLmxhc3QoKTsKLSAgICAgICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cnMgPSBlbGVtZW50
LT51cGRhdGVkQXR0cmlidXRlcygpKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYXR0cnMtPmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBBdHRyaWJ1dGUq
IGF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmhh
c0F0dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVs
ZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7IGkrKykgeworICAgICAgICAgICAgICAgIEF0dHJpYnV0
ZSogYXR0ciA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgICAgICAgICAgaWYg
KGF0dHItPmxvY2FsTmFtZSgpID09IHhtbG5zQXRvbSkKICAgICAgICAgICAgICAgICAgICAgbV9k
ZWZhdWx0TmFtZXNwYWNlVVJJID0gYXR0ci0+dmFsdWUoKTsKICAgICAgICAgICAgICAgICBlbHNl
IGlmIChhdHRyLT5wcmVmaXgoKSA9PSB4bWxuc0F0b20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDhkZTFhMDgxN2E0ZTRkZjFiYThhODA4YWM5
Mzk2NzVhN2FlYTAzMzUuLjBjMmIyZDZhMGM3OWY0OGNiNmZkM2Y0NzAyNjZkZmU4OTFjYjhiM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC04
MCw5ICs4MCw5IEBAIFhNTFRyZWVCdWlsZGVyOjpYTUxUcmVlQnVpbGRlcihOZXdYTUxEb2N1bWVu
dFBhcnNlciogcGFyc2VyLCBEb2N1bWVudEZyYWdtZW50KiBmCiAKICAgICBmb3IgKEVsZW1lbnQq
IGVsZW1lbnQ7ICFub2RlU3RhY2suaXNFbXB0eSgpOyBub2RlU3RhY2sucmVtb3ZlTGFzdCgpKSB7
CiAgICAgICAgIGVsZW1lbnQgPSBub2RlU3RhY2subGFzdCgpOwotICAgICAgICBpZiAoTmFtZWRO
b2RlTWFwKiBhdHRycyA9IGVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0cnMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKTsKKyAg
ICAgICAgaWYgKGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwog
ICAgICAgICAgICAgICAgIGlmIChhdHRyLT5sb2NhbE5hbWUoKSA9PSB4bWxuc0F0b20pCiAgICAg
ICAgICAgICAgICAgICAgIHN0YWNrSXRlbS5zZXROYW1lc3BhY2VVUkkoYXR0ci0+dmFsdWUoKSk7
CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXR0ci0+cHJlZml4KCkgPT0geG1sbnNBdG9tKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1w
bC5jcHAKaW5kZXggZGEwZTMyNTU1ZWM3Y2I4NDM4YWI4MDIzYTk4YmI2MmNlZWViNTNiNS4uY2Ew
NTgzNDg4OTBmZjEzMzA2NGUxYzA4OTgwNzA2MGY3YjA4OTNlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwCkBAIC0zMDcs
MTMgKzMwNywxMiBAQCB2b2lkIFdlYlBhZ2VTZXJpYWxpemVySW1wbDo6b3BlblRhZ1RvU3RyaW5n
KEVsZW1lbnQqIGVsZW1lbnQsCiAgICAgLy8gQWRkIG9wZW4gdGFnCiAgICAgcmVzdWx0ICs9ICI8
IiArIGVsZW1lbnQtPm5vZGVOYW1lKCkubG93ZXIoKTsKICAgICAvLyBHbyB0aHJvdWdoIGFsbCBh
dHRyaWJ1dGVzIGFuZCBzZXJpYWxpemUgdGhlbS4KLSAgICBjb25zdCBOYW1lZE5vZGVNYXAgKmF0
dHJNYXAgPSBlbGVtZW50LT51cGRhdGVkQXR0cmlidXRlcygpOwotICAgIGlmIChhdHRyTWFwKSB7
Ci0gICAgICAgIHVuc2lnbmVkIG51bUF0dHJzID0gYXR0ck1hcC0+bGVuZ3RoKCk7CisgICAgaWYg
KGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICB1bnNpZ25lZCBudW1BdHRycyA9
IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1BdHRyczsgaSsrKSB7CiAgICAgICAgICAgICByZXN1bHQgKz0gIiAiOwogICAgICAg
ICAgICAgLy8gQWRkIGF0dHJpYnV0ZSBwYWlyCi0gICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUg
KmF0dHJpYnV0ZSA9IGF0dHJNYXAtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAgICBjb25z
dCBBdHRyaWJ1dGUgKmF0dHJpYnV0ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAg
ICAgICAgICByZXN1bHQgKz0gYXR0cmlidXRlLT5uYW1lKCkudG9TdHJpbmcoKTsKICAgICAgICAg
ICAgIHJlc3VsdCArPSAiPVwiIjsKICAgICAgICAgICAgIGlmICghYXR0cmlidXRlLT52YWx1ZSgp
LmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCmluZGV4IDBkODVk
YTkyZTY3NTk4NDM3ODA4NzA4NDg0MTdiODg2N2Y1MjU2MjkuLjE3OGM3MGU1Yjc3ODgyN2I3NTAz
Yzg3OTZjMzUwNjc3NzQ1MjQ3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJlbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAK
QEAgLTUwMywxMiArNTAzLDExIEBAIFFTdHJpbmdMaXN0IFFXZWJFbGVtZW50OjphdHRyaWJ1dGVO
YW1lcyhjb25zdCBRU3RyaW5nJiBuYW1lc3BhY2VVcmkpIGNvbnN0CiAgICAgICAgIHJldHVybiBR
U3RyaW5nTGlzdCgpOwogCiAgICAgUVN0cmluZ0xpc3QgYXR0cmlidXRlTmFtZUxpc3Q7Ci0gICAg
Y29uc3QgTmFtZWROb2RlTWFwKiBjb25zdCBhdHRycyA9IG1fZWxlbWVudC0+dXBkYXRlZEF0dHJp
YnV0ZXMoKTsKLSAgICBpZiAoYXR0cnMpIHsKKyAgICBpZiAobV9lbGVtZW50LT5oYXNBdHRyaWJ1
dGVzKCkpIHsKICAgICAgICAgY29uc3QgU3RyaW5nIG5hbWVzcGFjZVVyaVN0cmluZyhuYW1lc3Bh
Y2VVcmkpOyAvLyBjb252ZXJ0IFFTdHJpbmcgLT4gU3RyaW5nIG9uY2UKLSAgICAgICAgY29uc3Qg
dW5zaWduZWQgYXR0cnNDb3VudCA9IGF0dHJzLT5sZW5ndGgoKTsKKyAgICAgICAgY29uc3QgdW5z
aWduZWQgYXR0cnNDb3VudCA9IG1fZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJzQ291bnQ7ICsraSkgewotICAgICAgICAgICAg
Y29uc3QgQXR0cmlidXRlKiBjb25zdCBhdHRyaWJ1dGUgPSBhdHRycy0+YXR0cmlidXRlSXRlbShp
KTsKKyAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogY29uc3QgYXR0cmlidXRlID0gbV9lbGVt
ZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAgICAgaWYgKG5hbWVzcGFjZVVyaVN0cmlu
ZyA9PSBhdHRyaWJ1dGUtPm5hbWVzcGFjZVVSSSgpKQogICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZU5hbWVMaXN0LmFwcGVuZChhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpKTsKICAgICAgICAgfQo=
</data>
<flag name="review"
          id="127171"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>