<?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>33940</bug_id>
          
          <creation_ts>2010-01-20 23:26:10 -0800</creation_ts>
          <short_desc>Address last round of review comments on r53607</short_desc>
          <delta_ts>2010-02-10 23:32:22 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>183088</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-20 23:26:10 -0800</bug_when>
    <thetext>&gt; +    // Notice that this object inherits a baseURL function from StyleBase that
&gt; +    // crawls the parent() relation looking for a non-0 putativeBaseURL.
&gt; +    const KURL&amp; putativeBaseURL() const { return m_baseURL; }

It&apos;s good to distinguish these two functions. The name putativeBaseURL doesn&apos;t
seem to helpfully make it clear which of the two to call, though. The two
differences seem to be:

    1) The putativeBaseURL function is a bit faster than baseURL.
    2) The putativeBaseURL function returns null when m_baseURL is null rather
than climbing to the parent sheet.

Are there any callers that need either behavior (1) or (2) other than
StyleBase::baseURL itself? If not, maybe we can find a way to avoid the
putativeBaseURL function entirely.

&gt; -                m_sheet = XSLStyleSheet::createEmbedded(this, m_localHref);
&gt; +                KURL baseURL = KURL(ParsedURLString, m_localHref);
&gt; +                m_sheet = XSLStyleSheet::createEmbedded(this, m_localHref, baseURL);

Seems to me that CSSStyleSheet::createInline and XSLStyleSheet::createEmbedded
are doing the same thing, for the two different types of stylesheet. Which
leads me to ask:

    1) Why do they have different names?
    2) Why does XSLStyleSheet take two arguments instead of the one that
Document::createInline does?

&gt; -            m_sheet = CSSStyleSheet::create(e, String(), document-&gt;inputEncoding());
&gt; +            m_sheet = CSSStyleSheet::create(e, String(), KURL(), document-&gt;inputEncoding());

Why not use createInline here?

&gt; +            stylesheetRootNode-&gt;document()-&gt;url()); // FIXME: Should we use baseURL here?

&gt; +            node-&gt;document()-&gt;url()); // FIXME: Should we use baseURL here?

I&apos;d like to ask an XSL expert (Alexey?) to help us figure out how to test these
or what is correct.

Although we are stuck with the name &quot;href&quot; for the DOM function, I would have
preferred to use the name &quot;originalURL&quot; everywhere else, since &quot;href&quot; is not
sufficiently unambiguous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189274</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-10 00:58:08 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; &gt; +    // Notice that this object inherits a baseURL function from StyleBase that
&gt; &gt; +    // crawls the parent() relation looking for a non-0 putativeBaseURL.
&gt; &gt; +    const KURL&amp; putativeBaseURL() const { return m_baseURL; }
&gt; 
&gt; It&apos;s good to distinguish these two functions. The name putativeBaseURL doesn&apos;t
&gt; seem to helpfully make it clear which of the two to call, though. The two
&gt; differences seem to be:
&gt; 
&gt;     1) The putativeBaseURL function is a bit faster than baseURL.
&gt;     2) The putativeBaseURL function returns null when m_baseURL is null rather
&gt; than climbing to the parent sheet.
&gt; 
&gt; Are there any callers that need either behavior (1) or (2) other than
&gt; StyleBase::baseURL itself? If not, maybe we can find a way to avoid the
&gt; putativeBaseURL function entirely.

Turns out there are a bunch of clients.  However, the name &quot;finalURL&quot; seems more appropriate for what these clients want, so I&apos;ve renamed the whole concept to finalURL.  The baseURL is computed as before, taking into account the parent sheets.

&gt; &gt; -                m_sheet = XSLStyleSheet::createEmbedded(this, m_localHref);
&gt; &gt; +                KURL baseURL = KURL(ParsedURLString, m_localHref);
&gt; &gt; +                m_sheet = XSLStyleSheet::createEmbedded(this, m_localHref, baseURL);
&gt; 
&gt; Seems to me that CSSStyleSheet::createInline and XSLStyleSheet::createEmbedded
&gt; are doing the same thing, for the two different types of stylesheet. Which
&gt; leads me to ask:

These are, in fact, the same concept.  createEmbedded had one client, so I&apos;ve renamed is to createInline.

&gt;     1) Why do they have different names?

Because I originally thought they were different, but they&apos;re not.

&gt;     2) Why does XSLStyleSheet take two arguments instead of the one that
&gt; Document::createInline does?

They should both take one argument.  I&apos;ve fixed this.

&gt; &gt; -            m_sheet = CSSStyleSheet::create(e, String(), document-&gt;inputEncoding());
&gt; &gt; +            m_sheet = CSSStyleSheet::create(e, String(), KURL(), document-&gt;inputEncoding());
&gt; 
&gt; Why not use createInline here?

Done.

&gt; &gt; +            stylesheetRootNode-&gt;document()-&gt;url()); // FIXME: Should we use baseURL here?
&gt; 
&gt; &gt; +            node-&gt;document()-&gt;url()); // FIXME: Should we use baseURL here?
&gt; 
&gt; I&apos;d like to ask an XSL expert (Alexey?) to help us figure out how to test these
&gt; or what is correct.
&gt; 
&gt; Although we are stuck with the name &quot;href&quot; for the DOM function, I would have
&gt; preferred to use the name &quot;originalURL&quot; everywhere else, since &quot;href&quot; is not
&gt; sufficiently unambiguous.

I&apos;ve renamed this to originalURL.

Will post a patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189275</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-10 01:10:04 -0800</bug_when>
    <thetext>&gt;&gt;&gt; -            m_sheet = CSSStyleSheet::create(e, String(), document-&gt;inputEncoding());
&gt;&gt;&gt; +            m_sheet = CSSStyleSheet::create(e, String(), KURL(), document-&gt;inputEncoding());
&gt;&gt; 
&gt;&gt; Why not use createInline here?
&gt; 
&gt; Done.

I lied.  This needs to pass in the inputEncoding.  We could make a createInline that takes an input encoding, but it might not be worthwhile for this one call site.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189280</commentid>
    <comment_count>3</comment_count>
      <attachid>48473</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-10 01:27:50 -0800</bug_when>
    <thetext>Created attachment 48473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189442</commentid>
    <comment_count>4</comment_count>
      <attachid>48473</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-02-10 12:38:18 -0800</bug_when>
    <thetext>Comment on attachment 48473
Patch

&gt; +                KURL finalURL = KURL(ParsedURLString, m_localHref);

Syntax here is a little strange. It should just be a constructor rather than looking like an assignment statement.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189545</commentid>
    <comment_count>5</comment_count>
      <attachid>48534</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-10 17:50:51 -0800</bug_when>
    <thetext>Created attachment 48534
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189612</commentid>
    <comment_count>6</comment_count>
      <attachid>48534</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-10 23:32:14 -0800</bug_when>
    <thetext>Comment on attachment 48534
Patch for landing

Clearing flags on attachment: 48534

Committed r54645: &lt;http://trac.webkit.org/changeset/54645&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189613</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-10 23:32:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48473</attachid>
            <date>2010-02-10 01:27:50 -0800</date>
            <delta_ts>2010-02-10 17:50:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-33940-20100210012457.patch</filename>
            <type>text/plain</type>
            <size>17155</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjM3NjkxNC4uZTE1ZTJjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0MyBAQAogMjAxMC0wMi0xMCAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZHJlc3MgbGFzdCByb3VuZCBvZiByZXZpZXcgY29tbWVudHMgb24gcjUz
NjA3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzk0
MAorCisgICAgICAgIE1vc3RseSByZW5hbWluZyBhbmQgY2xlYW5pbmcgdXAuCisKKyAgICAgICAg
KiBjc3MvQ1NTSW1wb3J0UnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbXBvcnRSdWxl
OjppbnNlcnRlZEludG9QYXJlbnQpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKToKKyAgICAgICAgKiBjc3MvU3R5bGVCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQmFzZTo6YmFzZVVSTCk6CisgICAgICAgICog
Y3NzL1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldDo6U3R5bGVT
aGVldCk6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlU2hlZXQ6OmhyZWYpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldDo6c2V0RmluYWxV
UkwpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldDo6ZmluYWxVUkwpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlQmFz
ZVVSTCk6CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCk6CisgICAg
ICAgICogeG1sL1hTTEltcG9ydFJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMSW1wb3J0
UnVsZTo6bG9hZFNoZWV0KToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldC5oOgorICAgICAg
ICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlhT
TFN0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZSk6CisgICAgICAgICogeG1sL1hTTFN0eWxlU2hlZXRM
aWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OlhTTFN0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXRzKToKKyAgICAgICAg
KiB4bWwvWFNMU3R5bGVTaGVldFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hl
ZXQ6OlhTTFN0eWxlU2hlZXQpOgorCisyMDEwLTAyLTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCiAKICAgICAgICAg
RnJlZXplIHNhbmRib3ggYXR0cmlidXRlcyBvbiBjcmVhdGlvbgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcApp
bmRleCBkNTBlY2Y3Li42MjU5YTliIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRS
dWxlLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcApAQCAtMTE3LDE2ICsx
MTcsMTYgQEAgdm9pZCBDU1NJbXBvcnRSdWxlOjppbnNlcnRlZEludG9QYXJlbnQoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBTdHJpbmcgYWJzSHJlZiA9IG1fc3RySHJlZjsKLSAgICBpZiAoIXBh
cmVudFNoZWV0LT5wdXRhdGl2ZUJhc2VVUkwoKS5pc051bGwoKSkKKyAgICBpZiAoIXBhcmVudFNo
ZWV0LT5maW5hbFVSTCgpLmlzTnVsbCgpKQogICAgICAgICAvLyB1c2UgcGFyZW50IHN0eWxlaGVl
dCdzIFVSTCBhcyB0aGUgYmFzZSBVUkwKLSAgICAgICAgYWJzSHJlZiA9IEtVUkwocGFyZW50U2hl
ZXQtPnB1dGF0aXZlQmFzZVVSTCgpLCBtX3N0ckhyZWYpLnN0cmluZygpOworICAgICAgICBhYnNI
cmVmID0gS1VSTChwYXJlbnRTaGVldC0+ZmluYWxVUkwoKSwgbV9zdHJIcmVmKS5zdHJpbmcoKTsK
IAogICAgIC8vIENoZWNrIGZvciBhIGN5Y2xlIGluIG91ciBpbXBvcnQgY2hhaW4uICBJZiB3ZSBl
bmNvdW50ZXIgYSBzdHlsZXNoZWV0CiAgICAgLy8gaW4gb3VyIHBhcmVudCBjaGFpbiB3aXRoIHRo
ZSBzYW1lIFVSTCwgdGhlbiBqdXN0IGJhaWwuCiAgICAgU3R5bGVCYXNlKiByb290ID0gdGhpczsK
ICAgICBmb3IgKFN0eWxlQmFzZSogY3VyciA9IHBhcmVudCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+
cGFyZW50KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgd3JvbmcgaWYgdGhlIHB1dGF0
aXZlQmFzZVVSTCB3YXMgdXBkYXRlZCB2aWEgZG9jdW1lbnQ6OnVwZGF0ZUJhc2VVUkwuIAotICAg
ICAgICBpZiAoY3Vyci0+aXNDU1NTdHlsZVNoZWV0KCkgJiYgYWJzSHJlZiA9PSBzdGF0aWNfY2Fz
dDxDU1NTdHlsZVNoZWV0Kj4oY3VyciktPnB1dGF0aXZlQmFzZVVSTCgpLnN0cmluZygpKQorICAg
ICAgICAvLyBGSVhNRTogVGhpcyBpcyB3cm9uZyBpZiB0aGUgZmluYWxVUkwgd2FzIHVwZGF0ZWQg
dmlhIGRvY3VtZW50Ojp1cGRhdGVCYXNlVVJMLiAKKyAgICAgICAgaWYgKGN1cnItPmlzQ1NTU3R5
bGVTaGVldCgpICYmIGFic0hyZWYgPT0gc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KGN1cnIp
LT5maW5hbFVSTCgpLnN0cmluZygpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICByb290
ID0gY3VycjsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0Lmgg
Yi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggMmQ4YTkxMi4uYmIxNGUyOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuaApAQCAtNDQsMjEgKzQ0LDIxIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ1NTU3R5bGVTaGVldChvd25lck5vZGUsIFN0cmluZygpLCBL
VVJMKCksIFN0cmluZygpKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1N0eWxl
U2hlZXQ+IGNyZWF0ZShOb2RlKiBvd25lck5vZGUsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3Qg
S1VSTCYgYmFzZVVSTCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBjcmVh
dGUoTm9kZSogb3duZXJOb2RlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJM
JiBmaW5hbFVSTCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTU3R5bGVT
aGVldChvd25lck5vZGUsIGhyZWYsIGJhc2VVUkwsIFN0cmluZygpKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ1NTU3R5bGVTaGVldChvd25lck5vZGUsIG9yaWdpbmFsVVJMLCBmaW5h
bFVSTCwgU3RyaW5nKCkpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTU3R5bGVT
aGVldD4gY3JlYXRlKE5vZGUqIG93bmVyTm9kZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBL
VVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4gY3JlYXRlKE5vZGUqIG93bmVyTm9kZSwgY29uc3QgU3RyaW5nJiBv
cmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTU3R5bGVTaGVldChvd25lck5v
ZGUsIGhyZWYsIGJhc2VVUkwsIGNoYXJzZXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDU1NTdHlsZVNoZWV0KG93bmVyTm9kZSwgb3JpZ2luYWxVUkwsIGZpbmFsVVJMLCBjaGFyc2V0
KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShD
U1NSdWxlKiBvd25lclJ1bGUsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVS
TCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1N0eWxl
U2hlZXQ+IGNyZWF0ZShDU1NSdWxlKiBvd25lclJ1bGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxV
UkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU1N0eWxlU2hlZXQob3duZXJSdWxlLCBocmVm
LCBiYXNlVVJMLCBjaGFyc2V0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTU3R5
bGVTaGVldChvd25lclJ1bGUsIG9yaWdpbmFsVVJMLCBmaW5hbFVSTCwgY2hhcnNldCkpOwogICAg
IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVJbmxpbmUoTm9k
ZSogb3duZXJOb2RlLCBjb25zdCBLVVJMJiBiYXNlVVJMKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENTU1N0eWxlU2hlZXQ+IGNyZWF0ZUlubGluZShOb2RlKiBvd25lck5vZGUsIGNvbnN0IEtVUkwm
IGZpbmFsVVJMKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NTdHlsZVNo
ZWV0KG93bmVyTm9kZSwgYmFzZVVSTC5zdHJpbmcoKSwgYmFzZVVSTCwgU3RyaW5nKCkpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NTdHlsZVNoZWV0KG93bmVyTm9kZSwgZmluYWxV
Ukwuc3RyaW5nKCksIGZpbmFsVVJMLCBTdHJpbmcoKSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
fkNTU1N0eWxlU2hlZXQoKTsKQEAgLTEwMyw5ICsxMDMsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNTeW50YWN0aWNhbGx5VmFsaWRDU1NIZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX2hhc1N5bnRh
Y3RpY2FsbHlWYWxpZENTU0hlYWRlcjsgfQogCiBwcml2YXRlOgotICAgIENTU1N0eWxlU2hlZXQo
Tm9kZSogb3duZXJOb2RlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkws
IGNvbnN0IFN0cmluZyYgY2hhcnNldCk7Ci0gICAgQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0
KiBwYXJlbnRTaGVldCwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBj
b25zdCBTdHJpbmcmIGNoYXJzZXQpOwotICAgIENTU1N0eWxlU2hlZXQoQ1NTUnVsZSogb3duZXJS
dWxlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmlu
ZyYgY2hhcnNldCk7CisgICAgQ1NTU3R5bGVTaGVldChOb2RlKiBvd25lck5vZGUsIGNvbnN0IFN0
cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMLCBjb25zdCBTdHJpbmcmIGNo
YXJzZXQpOworICAgIENTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMLCBjb25zdCBTdHJp
bmcmIGNoYXJzZXQpOworICAgIENTU1N0eWxlU2hlZXQoQ1NTUnVsZSogb3duZXJSdWxlLCBjb25z
dCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCwgY29uc3QgU3RyaW5n
JiBjaGFyc2V0KTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0NTU1N0eWxlU2hlZXQoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
ICJ0ZXh0L2NzcyI7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL1N0eWxlQmFzZS5jcHAgYi9X
ZWJDb3JlL2Nzcy9TdHlsZUJhc2UuY3BwCmluZGV4IDkzYmM1N2QuLjkzZGJkYTAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvY3NzL1N0eWxlQmFzZS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvU3R5bGVCYXNl
LmNwcApAQCAtNTYsOCArNTYsOCBAQCBLVVJMIFN0eWxlQmFzZTo6YmFzZVVSTCgpIGNvbnN0CiAg
ICAgU3R5bGVTaGVldCogc2hlZXQgPSBjb25zdF9jYXN0PFN0eWxlQmFzZSo+KHRoaXMpLT5zdHls
ZXNoZWV0KCk7CiAgICAgaWYgKCFzaGVldCkKICAgICAgICAgcmV0dXJuIEtVUkwoKTsKLSAgICBp
ZiAoIXNoZWV0LT5wdXRhdGl2ZUJhc2VVUkwoKS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHNo
ZWV0LT5wdXRhdGl2ZUJhc2VVUkwoKTsKKyAgICBpZiAoIXNoZWV0LT5maW5hbFVSTCgpLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gc2hlZXQtPmZpbmFsVVJMKCk7CiAgICAgaWYgKHNoZWV0LT5w
YXJlbnQoKSkKICAgICAgICAgcmV0dXJuIHNoZWV0LT5wYXJlbnQoKS0+YmFzZVVSTCgpOwogICAg
IGlmICghc2hlZXQtPm93bmVyTm9kZSgpKSAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXQuY3BwIGIvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5jcHAKaW5kZXggMTVlMWMzYi4uNGYy
MGEyMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5jcHAKKysrIGIvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldC5jcHAKQEAgLTI0LDMwICsyNCwyOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVN0eWxlU2hlZXQ6OlN0eWxlU2hlZXQoU3R5bGVTaGVldCogcGFyZW50U2hlZXQs
IGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCkKK1N0eWxlU2hlZXQ6OlN0
eWxlU2hlZXQoU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxV
UkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKQogICAgIDogU3R5bGVMaXN0KHBhcmVudFNoZWV0KQog
ICAgICwgbV9wYXJlbnROb2RlKDApCi0gICAgLCBtX2hyZWYoaHJlZikKLSAgICAsIG1fYmFzZVVS
TChiYXNlVVJMKQorICAgICwgbV9vcmlnaW5hbFVSTChvcmlnaW5hbFVSTCkKKyAgICAsIG1fZmlu
YWxVUkwoZmluYWxVUkwpCiAgICAgLCBtX2Rpc2FibGVkKGZhbHNlKQogewogfQogCi0KLVN0eWxl
U2hlZXQ6OlN0eWxlU2hlZXQoTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBocmVmLCBj
b25zdCBLVVJMJiBiYXNlVVJMKQorU3R5bGVTaGVldDo6U3R5bGVTaGVldChOb2RlKiBwYXJlbnRO
b2RlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCkKICAg
ICA6IFN0eWxlTGlzdCgwKQogICAgICwgbV9wYXJlbnROb2RlKHBhcmVudE5vZGUpCi0gICAgLCBt
X2hyZWYoaHJlZikKLSAgICAsIG1fYmFzZVVSTChiYXNlVVJMKQorICAgICwgbV9vcmlnaW5hbFVS
TChvcmlnaW5hbFVSTCkKKyAgICAsIG1fZmluYWxVUkwoZmluYWxVUkwpCiAgICAgLCBtX2Rpc2Fi
bGVkKGZhbHNlKQogewogfQogCi1TdHlsZVNoZWV0OjpTdHlsZVNoZWV0KFN0eWxlQmFzZSogb3du
ZXIsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCkKK1N0eWxlU2hlZXQ6
OlN0eWxlU2hlZXQoU3R5bGVCYXNlKiBvd25lciwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwg
Y29uc3QgS1VSTCYgZmluYWxVUkwpCiAgICAgOiBTdHlsZUxpc3Qob3duZXIpCiAgICAgLCBtX3Bh
cmVudE5vZGUoMCkKLSAgICAsIG1faHJlZihocmVmKQotICAgICwgbV9iYXNlVVJMKGJhc2VVUkwp
CisgICAgLCBtX29yaWdpbmFsVVJMKG9yaWdpbmFsVVJMKQorICAgICwgbV9maW5hbFVSTChmaW5h
bFVSTCkKICAgICAsIG1fZGlzYWJsZWQoZmFsc2UpCiB7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2Nzcy9TdHlsZVNoZWV0LmggYi9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmgKaW5kZXggNWY4YWQ3
OC4uNjIxNzMzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oCisrKyBiL1dl
YkNvcmUvY3NzL1N0eWxlU2hlZXQuaApAQCAtNDUsMTMgKzQ1LDEwIEBAIHB1YmxpYzoKICAgICAv
LyBOb3RlIHRoYXQgaHJlZiBpcyB0aGUgVVJMIHRoYXQgc3RhcnRlZCB0aGUgcmVkaXJlY3QgY2hh
aW4gdGhhdCBsZWQgdG8KICAgICAvLyB0aGlzIHN0eWxlIHNoZWV0LiBUaGlzIHByb3BlcnR5IHBy
b2JhYmx5IGlzbid0IHVzZWZ1bCBmb3IgbXVjaCBleGNlcHQKICAgICAvLyB0aGUgSmF2YVNjcmlw
dCBiaW5kaW5nICh3aGljaCBuZWVkcyB0byB1c2UgdGhpcyB2YWx1ZSBmb3Igc2VjdXJpdHkpLgot
ICAgIGNvbnN0IFN0cmluZyYgaHJlZigpIGNvbnN0IHsgcmV0dXJuIG1faHJlZjsgfQorICAgIGNv
bnN0IFN0cmluZyYgaHJlZigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxVUkw7IH0KIAotICAg
IHZvaWQgc2V0QmFzZVVSTChjb25zdCBLVVJMJiBiYXNlVVJMKSB7IG1fYmFzZVVSTCA9IGJhc2VV
Ukw7IH0KLQotICAgIC8vIE5vdGljZSB0aGF0IHRoaXMgb2JqZWN0IGluaGVyaXRzIGEgYmFzZVVS
TCBmdW5jdGlvbiBmcm9tIFN0eWxlQmFzZSB0aGF0Ci0gICAgLy8gY3Jhd2xzIHRoZSBwYXJlbnQo
KSByZWxhdGlvbiBsb29raW5nIGZvciBhIG5vbi0wIHB1dGF0aXZlQmFzZVVSTC4KLSAgICBjb25z
dCBLVVJMJiBwdXRhdGl2ZUJhc2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VVUkw7IH0KKyAg
ICB2b2lkIHNldEZpbmFsVVJMKGNvbnN0IEtVUkwmIGZpbmFsVVJMKSB7IG1fZmluYWxVUkwgPSBm
aW5hbFVSTDsgfQorICAgIGNvbnN0IEtVUkwmIGZpbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9m
aW5hbFVSTDsgfQogCiAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyVGl0bGU7IH0KICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYgcykgeyBtX3N0clRp
dGxlID0gczsgfQpAQCAtNjgsMTYgKzY1LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSB0cnVlKSA9IDA7CiAKIHBy
b3RlY3RlZDoKLSAgICBTdHlsZVNoZWV0KE5vZGUqIG93bmVyTm9kZSwgY29uc3QgU3RyaW5nJiBo
cmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMKTsKLSAgICBTdHlsZVNoZWV0KFN0eWxlU2hlZXQqIHBh
cmVudFNoZWV0LCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwpOwotICAg
IFN0eWxlU2hlZXQoU3R5bGVCYXNlKiBvd25lciwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBL
VVJMJiBiYXNlVVJMKTsKKyAgICBTdHlsZVNoZWV0KE5vZGUqIG93bmVyTm9kZSwgY29uc3QgU3Ry
aW5nJiBocmVmLCBjb25zdCBLVVJMJiBmaW5hbFVSTCk7CisgICAgU3R5bGVTaGVldChTdHlsZVNo
ZWV0KiBwYXJlbnRTaGVldCwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBmaW5hbFVS
TCk7CisgICAgU3R5bGVTaGVldChTdHlsZUJhc2UqIG93bmVyLCBjb25zdCBTdHJpbmcmIGhyZWYs
IGNvbnN0IEtVUkwmIGZpbmFsVVJMKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNT
dHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgTm9kZSogbV9wYXJlbnRO
b2RlOwotICAgIFN0cmluZyBtX2hyZWY7Ci0gICAgS1VSTCBtX2Jhc2VVUkw7CisgICAgU3RyaW5n
IG1fb3JpZ2luYWxVUkw7CisgICAgS1VSTCBtX2ZpbmFsVVJMOwogICAgIFN0cmluZyBtX3N0clRp
dGxlOwogICAgIFJlZlB0cjxNZWRpYUxpc3Q+IG1fbWVkaWE7CiAgICAgYm9vbCBtX2Rpc2FibGVk
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IGNhM2FkNzEuLjYxYTIzZDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTIwMDIsOSAr
MjAwMiw5IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUJhc2VVUkwoKQogICAgICAgICBtX2Jhc2VV
UkwgPSBLVVJMKCk7CiAKICAgICBpZiAobV9lbGVtU2hlZXQpCi0gICAgICAgIG1fZWxlbVNoZWV0
LT5zZXRCYXNlVVJMKG1fYmFzZVVSTCk7CisgICAgICAgIG1fZWxlbVNoZWV0LT5zZXRGaW5hbFVS
TChtX2Jhc2VVUkwpOwogICAgIGlmIChtX21hcHBlZEVsZW1lbnRTaGVldCkKLSAgICAgICAgbV9t
YXBwZWRFbGVtZW50U2hlZXQtPnNldEJhc2VVUkwobV9iYXNlVVJMKTsKKyAgICAgICAgbV9tYXBw
ZWRFbGVtZW50U2hlZXQtPnNldEZpbmFsVVJMKG1fYmFzZVVSTCk7CiB9CiAKIFN0cmluZyBEb2N1
bWVudDo6dXNlckFnZW50KGNvbnN0IEtVUkwmIHVybCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uY3BwCmluZGV4IGJjYTdjMmMuLmVmMzIyMTIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9kb20vUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmNwcApAQCAtMTM5LDggKzEzOSw4IEBAIHZvaWQgUHJvY2Vzc2luZ0lu
c3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBt
YWtlIGEgc3ludGhldGljIFhTTFN0eWxlU2hlZXQgdGhhdCBpcyBlbWJlZGRlZC4gIEl0IG5lZWRz
IHRvIGJlIGFibGUKICAgICAgICAgICAgIC8vIHRvIGtpY2sgb2ZmIGltcG9ydC9pbmNsdWRlIGxv
YWRzIHRoYXQgY2FuIGhhbmcgb2ZmIHNvbWUgcGFyZW50IHNoZWV0LgogICAgICAgICAgICAgaWYg
KG1faXNYU0wpIHsKLSAgICAgICAgICAgICAgICBLVVJMIGJhc2VVUkwgPSBLVVJMKFBhcnNlZFVS
TFN0cmluZywgbV9sb2NhbEhyZWYpOwotICAgICAgICAgICAgICAgIG1fc2hlZXQgPSBYU0xTdHls
ZVNoZWV0OjpjcmVhdGVFbWJlZGRlZCh0aGlzLCBtX2xvY2FsSHJlZiwgYmFzZVVSTCk7CisgICAg
ICAgICAgICAgICAgS1VSTCBmaW5hbFVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX2xvY2Fs
SHJlZik7CisgICAgICAgICAgICAgICAgbV9zaGVldCA9IFhTTFN0eWxlU2hlZXQ6OmNyZWF0ZUlu
bGluZSh0aGlzLCBmaW5hbFVSTCk7CiAgICAgICAgICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7
CiAgICAgICAgICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hTTEltcG9y
dFJ1bGUuY3BwIGIvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAKaW5kZXggYzBmNjM2My4u
MDkwOGQ3NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAKKysrIGIv
V2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAKQEAgLTg3LDE0ICs4NywxNCBAQCB2b2lkIFhT
TEltcG9ydFJ1bGU6OmxvYWRTaGVldCgpCiAgICAgCiAgICAgU3RyaW5nIGFic0hyZWYgPSBtX3N0
ckhyZWY7CiAgICAgWFNMU3R5bGVTaGVldCogcGFyZW50U2hlZXQgPSBwYXJlbnRTdHlsZVNoZWV0
KCk7Ci0gICAgaWYgKCFwYXJlbnRTaGVldC0+cHV0YXRpdmVCYXNlVVJMKCkuaXNOdWxsKCkpCisg
ICAgaWYgKCFwYXJlbnRTaGVldC0+ZmluYWxVUkwoKS5pc051bGwoKSkKICAgICAgICAgLy8gdXNl
IHBhcmVudCBzdHlsZWhlZXQncyBVUkwgYXMgdGhlIGJhc2UgVVJMCi0gICAgICAgIGFic0hyZWYg
PSBLVVJMKHBhcmVudFNoZWV0LT5wdXRhdGl2ZUJhc2VVUkwoKSwgbV9zdHJIcmVmKS5zdHJpbmco
KTsKKyAgICAgICAgYWJzSHJlZiA9IEtVUkwocGFyZW50U2hlZXQtPmZpbmFsVVJMKCksIG1fc3Ry
SHJlZikuc3RyaW5nKCk7CiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIGEgY3ljbGUgaW4gb3VyIGlt
cG9ydCBjaGFpbi4gIElmIHdlIGVuY291bnRlciBhIHN0eWxlc2hlZXQKICAgICAvLyBpbiBvdXIg
cGFyZW50IGNoYWluIHdpdGggdGhlIHNhbWUgVVJMLCB0aGVuIGp1c3QgYmFpbC4KICAgICBmb3Ig
KHBhcmVudCA9IHRoaXMtPnBhcmVudCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50
KCkpIHsKLSAgICAgICAgaWYgKHBhcmVudC0+aXNYU0xTdHlsZVNoZWV0KCkgJiYgYWJzSHJlZiA9
PSBzdGF0aWNfY2FzdDxYU0xTdHlsZVNoZWV0Kj4ocGFyZW50KS0+cHV0YXRpdmVCYXNlVVJMKCku
c3RyaW5nKCkpCisgICAgICAgIGlmIChwYXJlbnQtPmlzWFNMU3R5bGVTaGVldCgpICYmIGFic0hy
ZWYgPT0gc3RhdGljX2Nhc3Q8WFNMU3R5bGVTaGVldCo+KHBhcmVudCktPmZpbmFsVVJMKCkuc3Ry
aW5nKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS94bWwvWFNMU3R5bGVTaGVldC5oIGIvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oCmlu
ZGV4IGIzODYxYTAuLmU2ZTQwNjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hl
ZXQuaAorKysgYi9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgKQEAgLTQzLDE4ICs0MywxOCBA
QCBjbGFzcyBYU0xJbXBvcnRSdWxlOwogY2xhc3MgWFNMU3R5bGVTaGVldCA6IHB1YmxpYyBTdHls
ZVNoZWV0IHsKIHB1YmxpYzoKICNpZiAhVVNFKFFYTUxRVUVSWSkKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxYU0xTdHlsZVNoZWV0PiBjcmVhdGUoWFNMSW1wb3J0UnVsZSogcGFyZW50SW1wb3J0LCBj
b25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8WFNMU3R5bGVTaGVldD4gY3JlYXRlKFhTTEltcG9ydFJ1bGUqIHBhcmVudEltcG9ydCwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhTTFN0eWxlU2hlZXQocGFyZW50SW1wb3J0LCBo
cmVmLCBiYXNlVVJMKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgWFNMU3R5bGVTaGVl
dChwYXJlbnRJbXBvcnQsIG9yaWdpbmFsVVJMLCBmaW5hbFVSTCkpOwogICAgIH0KICNlbmRpZgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZShOb2RlKiBwYXJlbnRO
b2RlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8WFNMU3R5bGVTaGVldD4gY3JlYXRlKE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0
IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYU0xTdHlsZVNoZWV0KHBhcmVudE5vZGUsIGhyZWYsIGJh
c2VVUkwsIGZhbHNlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgWFNMU3R5bGVTaGVl
dChwYXJlbnROb2RlLCBvcmlnaW5hbFVSTCwgZmluYWxVUkwsIGZhbHNlKSk7CiAgICAgfQotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZUVtYmVkZGVkKE5vZGUqIHBh
cmVudE5vZGUsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCkKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxYU0xTdHlsZVNoZWV0PiBjcmVhdGVJbmxpbmUoTm9kZSogcGFyZW50
Tm9kZSwgY29uc3QgS1VSTCYgZmluYWxVUkwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFhTTFN0eWxlU2hlZXQocGFyZW50Tm9kZSwgaHJlZiwgYmFzZVVSTCwgdHJ1ZSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhTTFN0eWxlU2hlZXQocGFyZW50Tm9kZSwgZmlu
YWxVUkwuc3RyaW5nKCksIGZpbmFsVVJMLCB0cnVlKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+
WFNMU3R5bGVTaGVldCgpOwpAQCAtOTAsOSArOTAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcm9j
ZXNzZWQoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NlZDsgfQogCiBwcml2YXRlOgotICAgIFhT
TFN0eWxlU2hlZXQoTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBL
VVJMJiBiYXNlVVJMLCBib29sIGVtYmVkZGVkKTsKKyAgICBYU0xTdHlsZVNoZWV0KE5vZGUqIHBh
cmVudE5vZGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJM
LCBib29sIGVtYmVkZGVkKTsKICNpZiAhVVNFKFFYTUxRVUVSWSkKLSAgICBYU0xTdHlsZVNoZWV0
KFhTTEltcG9ydFJ1bGUqIHBhcmVudEltcG9ydCwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBL
VVJMJiBiYXNlVVJMKTsKKyAgICBYU0xTdHlsZVNoZWV0KFhTTEltcG9ydFJ1bGUqIHBhcmVudElt
cG9ydCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwpOwog
I2VuZGlmCiAKICAgICBEb2N1bWVudCogbV9vd25lckRvY3VtZW50OwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwIGIvV2ViQ29yZS94bWwvWFNMU3R5bGVT
aGVldExpYnhzbHQuY3BwCmluZGV4IDQxMjJhYTEuLmRiZDgwNmEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAorKysgYi9XZWJDb3JlL3htbC9YU0xTdHls
ZVNoZWV0TGlieHNsdC5jcHAKQEAgLTU1LDggKzU1LDggQEAgU09GVF9MSU5LKGxpYnhzbHQsIHhz
bHRMb2FkU3R5bGVzaGVldFBJLCB4c2x0U3R5bGVzaGVldFB0ciwgKHhtbERvY1B0ciBkb2MpLCAo
ZG8KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1YU0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0
KFhTTEltcG9ydFJ1bGUqIHBhcmVudFJ1bGUsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VS
TCYgYmFzZVVSTCkKLSAgICA6IFN0eWxlU2hlZXQocGFyZW50UnVsZSwgaHJlZiwgYmFzZVVSTCkK
K1hTTFN0eWxlU2hlZXQ6OlhTTFN0eWxlU2hlZXQoWFNMSW1wb3J0UnVsZSogcGFyZW50UnVsZSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwpCisgICAgOiBT
dHlsZVNoZWV0KHBhcmVudFJ1bGUsIG9yaWdpbmFsVVJMLCBmaW5hbFVSTCkKICAgICAsIG1fb3du
ZXJEb2N1bWVudCgwKQogICAgICwgbV9lbWJlZGRlZChmYWxzZSkKICAgICAsIG1fcHJvY2Vzc2Vk
KGZhbHNlKSAvLyBDaGlsZCBzaGVldHMgZ2V0IG1hcmtlZCBhcyBwcm9jZXNzZWQgd2hlbiB0aGUg
bGlieHNsdCBlbmdpbmUgaGFzIGZpbmFsbHkgc2VlbiB0aGVtLgpAQCAtNjYsOCArNjYsOCBAQCBY
U0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KFhTTEltcG9ydFJ1bGUqIHBhcmVudFJ1bGUsIGNv
bnN0IFN0cmluZyYgaHJlZiwgY29ucwogewogfQogCi1YU0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNo
ZWV0KE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFz
ZVVSTCwgIGJvb2wgZW1iZWRkZWQpCi0gICAgOiBTdHlsZVNoZWV0KHBhcmVudE5vZGUsIGhyZWYs
IGJhc2VVUkwpCitYU0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KE5vZGUqIHBhcmVudE5vZGUs
IGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMLCAgYm9vbCBl
bWJlZGRlZCkKKyAgICA6IFN0eWxlU2hlZXQocGFyZW50Tm9kZSwgb3JpZ2luYWxVUkwsIGZpbmFs
VVJMKQogICAgICwgbV9vd25lckRvY3VtZW50KHBhcmVudE5vZGUtPmRvY3VtZW50KCkpCiAgICAg
LCBtX2VtYmVkZGVkKGVtYmVkZGVkKQogICAgICwgbV9wcm9jZXNzZWQodHJ1ZSkgLy8gVGhlIHJv
b3Qgc2hlZXQgc3RhcnRzIG9mZiBwcm9jZXNzZWQuCkBAIC0xNjgsNyArMTY4LDcgQEAgYm9vbCBY
U0xTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCkKICAg
ICB9CiAKICAgICBtX3N0eWxlc2hlZXREb2MgPSB4bWxDdHh0UmVhZE1lbW9yeShjdHh0LCBidWZm
ZXIsIHNpemUsCi0gICAgICAgIHB1dGF0aXZlQmFzZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCksCisgICAgICAgIGZpbmFsVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAg
Qk9NSGlnaEJ5dGUgPT0gMHhGRiA/ICJVVEYtMTZMRSIgOiAiVVRGLTE2QkUiLAogICAgICAgICBY
TUxfUEFSU0VfTk9FTlQgfCBYTUxfUEFSU0VfRFREQVRUUiB8IFhNTF9QQVJTRV9OT1dBUk5JTkcg
fCBYTUxfUEFSU0VfTk9DREFUQSk7CiAgICAgeG1sRnJlZVBhcnNlckN0eHQoY3R4dCk7CkBAIC0x
OTIsNyArMTkyLDcgQEAgdm9pZCBYU0xTdHlsZVNoZWV0Ojpsb2FkQ2hpbGRTaGVldHMoKQogICAg
IGlmIChtX2VtYmVkZGVkKSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdG8gbG9jYXRlIChieSBJRCkg
dGhlIGFwcHJvcHJpYXRlIGVtYmVkZGVkIHN0eWxlc2hlZXQgZWxlbWVudCwgc28gdGhhdCB3ZSBj
YW4gd2FsayB0aGUKICAgICAgICAgLy8gaW1wb3J0L2luY2x1ZGUgbGlzdC4KLSAgICAgICAgeG1s
QXR0clB0ciBpZE5vZGUgPSB4bWxHZXRJRChkb2N1bWVudCgpLCAoY29uc3QgeG1sQ2hhciopKHB1
dGF0aXZlQmFzZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgeG1sQXR0
clB0ciBpZE5vZGUgPSB4bWxHZXRJRChkb2N1bWVudCgpLCAoY29uc3QgeG1sQ2hhciopKGZpbmFs
VVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgICAgICBpZiAoIWlkTm9kZSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgc3R5bGVzaGVldFJvb3QgPSBpZE5vZGUtPnBhcmVu
dDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRRdC5jcHAgYi9XZWJDb3Jl
L3htbC9YU0xTdHlsZVNoZWV0UXQuY3BwCmluZGV4IDQxNTFiZTQuLmNiNTU5OTMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRRdC5jcHAKKysrIGIvV2ViQ29yZS94bWwvWFNM
U3R5bGVTaGVldFF0LmNwcApAQCAtMzMsOCArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVhTTFN0eWxlU2hlZXQ6OlhTTFN0eWxlU2hlZXQoTm9kZSogcGFyZW50Tm9kZSwgY29uc3Qg
U3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCAgYm9vbCBlbWJlZGRlZCkKLSAgICA6
IFN0eWxlU2hlZXQocGFyZW50Tm9kZSwgaHJlZiwgYmFzZVVSTCkKK1hTTFN0eWxlU2hlZXQ6OlhT
TFN0eWxlU2hlZXQoTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwg
Y29uc3QgS1VSTCYgZmluYWxVUkwsICBib29sIGVtYmVkZGVkKQorICAgIDogU3R5bGVTaGVldChw
YXJlbnROb2RlLCBvcmlnaW5hbFVSTCwgZmluYWxVUkwpCiAgICAgLCBtX293bmVyRG9jdW1lbnQo
cGFyZW50Tm9kZS0+ZG9jdW1lbnQoKSkKICAgICAsIG1fZW1iZWRkZWQoZW1iZWRkZWQpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48534</attachid>
            <date>2010-02-10 17:50:51 -0800</date>
            <delta_ts>2010-02-10 23:32:14 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-33940-20100210175049.patch</filename>
            <type>text/plain</type>
            <size>17157</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjM3NjkxNC4uNmUzZjIzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiw0NCBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgogCisgICAgICAgIEFkZHJlc3MgbGFzdCByb3VuZCBvZiByZXZpZXcgY29tbWVu
dHMgb24gcjUzNjA3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMzk0MAorCisgICAgICAgIE1vc3RseSByZW5hbWluZyBhbmQgY2xlYW5pbmcgdXAuCisK
KyAgICAgICAgKiBjc3MvQ1NTSW1wb3J0UnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJ
bXBvcnRSdWxlOjppbnNlcnRlZEludG9QYXJlbnQpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNo
ZWV0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQmFzZTo6YmFzZVVSTCk6Cisg
ICAgICAgICogY3NzL1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVl
dDo6U3R5bGVTaGVldCk6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlU2hlZXQ6OmhyZWYpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldDo6
c2V0RmluYWxVUkwpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldDo6ZmluYWxVUkwpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
dXBkYXRlQmFzZVVSTCk6CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVl
dCk6CisgICAgICAgICogeG1sL1hTTEltcG9ydFJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WFNMSW1wb3J0UnVsZTo6bG9hZFNoZWV0KToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldC5o
OgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlhTTFN0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZSk6CisgICAgICAgICogeG1sL1hTTFN0
eWxlU2hlZXRMaWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OlhT
TFN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6cGFyc2VTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXRzKToK
KyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhT
TFN0eWxlU2hlZXQ6OlhTTFN0eWxlU2hlZXQpOgorCisyMDEwLTAyLTEwICBBZGFtIEJhcnRoICA8
YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
ICAgICAgICAgRnJlZXplIHNhbmRib3ggYXR0cmlidXRlcyBvbiBjcmVhdGlvbgogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQxODQKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRS
dWxlLmNwcAppbmRleCBkNTBlY2Y3Li42MjU5YTliIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9D
U1NJbXBvcnRSdWxlLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcApAQCAt
MTE3LDE2ICsxMTcsMTYgQEAgdm9pZCBDU1NJbXBvcnRSdWxlOjppbnNlcnRlZEludG9QYXJlbnQo
KQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgYWJzSHJlZiA9IG1fc3RySHJlZjsKLSAg
ICBpZiAoIXBhcmVudFNoZWV0LT5wdXRhdGl2ZUJhc2VVUkwoKS5pc051bGwoKSkKKyAgICBpZiAo
IXBhcmVudFNoZWV0LT5maW5hbFVSTCgpLmlzTnVsbCgpKQogICAgICAgICAvLyB1c2UgcGFyZW50
IHN0eWxlaGVldCdzIFVSTCBhcyB0aGUgYmFzZSBVUkwKLSAgICAgICAgYWJzSHJlZiA9IEtVUkwo
cGFyZW50U2hlZXQtPnB1dGF0aXZlQmFzZVVSTCgpLCBtX3N0ckhyZWYpLnN0cmluZygpOworICAg
ICAgICBhYnNIcmVmID0gS1VSTChwYXJlbnRTaGVldC0+ZmluYWxVUkwoKSwgbV9zdHJIcmVmKS5z
dHJpbmcoKTsKIAogICAgIC8vIENoZWNrIGZvciBhIGN5Y2xlIGluIG91ciBpbXBvcnQgY2hhaW4u
ICBJZiB3ZSBlbmNvdW50ZXIgYSBzdHlsZXNoZWV0CiAgICAgLy8gaW4gb3VyIHBhcmVudCBjaGFp
biB3aXRoIHRoZSBzYW1lIFVSTCwgdGhlbiBqdXN0IGJhaWwuCiAgICAgU3R5bGVCYXNlKiByb290
ID0gdGhpczsKICAgICBmb3IgKFN0eWxlQmFzZSogY3VyciA9IHBhcmVudCgpOyBjdXJyOyBjdXJy
ID0gY3Vyci0+cGFyZW50KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgd3JvbmcgaWYg
dGhlIHB1dGF0aXZlQmFzZVVSTCB3YXMgdXBkYXRlZCB2aWEgZG9jdW1lbnQ6OnVwZGF0ZUJhc2VV
UkwuIAotICAgICAgICBpZiAoY3Vyci0+aXNDU1NTdHlsZVNoZWV0KCkgJiYgYWJzSHJlZiA9PSBz
dGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4oY3VyciktPnB1dGF0aXZlQmFzZVVSTCgpLnN0cmlu
ZygpKQorICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyB3cm9uZyBpZiB0aGUgZmluYWxVUkwgd2Fz
IHVwZGF0ZWQgdmlhIGRvY3VtZW50Ojp1cGRhdGVCYXNlVVJMLiAKKyAgICAgICAgaWYgKGN1cnIt
PmlzQ1NTU3R5bGVTaGVldCgpICYmIGFic0hyZWYgPT0gc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVl
dCo+KGN1cnIpLT5maW5hbFVSTCgpLnN0cmluZygpKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICByb290ID0gY3VycjsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmggYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggMmQ4YTkxMi4uYmIx
NGUyOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtNDQsMjEgKzQ0LDIxIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTU3R5bGVTaGVldChvd25lck5vZGUsIFN0
cmluZygpLCBLVVJMKCksIFN0cmluZygpKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShOb2RlKiBvd25lck5vZGUsIGNvbnN0IFN0cmluZyYgaHJl
ZiwgY29uc3QgS1VSTCYgYmFzZVVSTCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NTdHlsZVNo
ZWV0PiBjcmVhdGUoTm9kZSogb3duZXJOb2RlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBj
b25zdCBLVVJMJiBmaW5hbFVSTCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q1NTU3R5bGVTaGVldChvd25lck5vZGUsIGhyZWYsIGJhc2VVUkwsIFN0cmluZygpKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTU3R5bGVTaGVldChvd25lck5vZGUsIG9yaWdpbmFs
VVJMLCBmaW5hbFVSTCwgU3RyaW5nKCkpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
Q1NTU3R5bGVTaGVldD4gY3JlYXRlKE5vZGUqIG93bmVyTm9kZSwgY29uc3QgU3RyaW5nJiBocmVm
LCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gY3JlYXRlKE5vZGUqIG93bmVyTm9kZSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwsIGNvbnN0IFN0cmluZyYg
Y2hhcnNldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTU3R5bGVTaGVl
dChvd25lck5vZGUsIGhyZWYsIGJhc2VVUkwsIGNoYXJzZXQpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDU1NTdHlsZVNoZWV0KG93bmVyTm9kZSwgb3JpZ2luYWxVUkwsIGZpbmFsVVJM
LCBjaGFyc2V0KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+
IGNyZWF0ZShDU1NSdWxlKiBvd25lclJ1bGUsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VS
TCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShDU1NSdWxlKiBvd25lclJ1bGUsIGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU1N0eWxlU2hlZXQob3duZXJS
dWxlLCBocmVmLCBiYXNlVVJMLCBjaGFyc2V0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ1NTU3R5bGVTaGVldChvd25lclJ1bGUsIG9yaWdpbmFsVVJMLCBmaW5hbFVSTCwgY2hhcnNl
dCkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVJ
bmxpbmUoTm9kZSogb3duZXJOb2RlLCBjb25zdCBLVVJMJiBiYXNlVVJMKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZUlubGluZShOb2RlKiBvd25lck5vZGUsIGNv
bnN0IEtVUkwmIGZpbmFsVVJMKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
U1NTdHlsZVNoZWV0KG93bmVyTm9kZSwgYmFzZVVSTC5zdHJpbmcoKSwgYmFzZVVSTCwgU3RyaW5n
KCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NTdHlsZVNoZWV0KG93bmVyTm9k
ZSwgZmluYWxVUkwuc3RyaW5nKCksIGZpbmFsVVJMLCBTdHJpbmcoKSkpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgfkNTU1N0eWxlU2hlZXQoKTsKQEAgLTEwMyw5ICsxMDMsOSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNTeW50YWN0aWNhbGx5VmFsaWRDU1NIZWFkZXIoKSBjb25zdCB7IHJldHVybiBt
X2hhc1N5bnRhY3RpY2FsbHlWYWxpZENTU0hlYWRlcjsgfQogCiBwcml2YXRlOgotICAgIENTU1N0
eWxlU2hlZXQoTm9kZSogb3duZXJOb2RlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwm
IGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCk7Ci0gICAgQ1NTU3R5bGVTaGVldChDU1NT
dHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBi
YXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOwotICAgIENTU1N0eWxlU2hlZXQoQ1NTUnVs
ZSogb3duZXJSdWxlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNv
bnN0IFN0cmluZyYgY2hhcnNldCk7CisgICAgQ1NTU3R5bGVTaGVldChOb2RlKiBvd25lck5vZGUs
IGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMLCBjb25zdCBT
dHJpbmcmIGNoYXJzZXQpOworICAgIENTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogcGFyZW50
U2hlZXQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMLCBj
b25zdCBTdHJpbmcmIGNoYXJzZXQpOworICAgIENTU1N0eWxlU2hlZXQoQ1NTUnVsZSogb3duZXJS
dWxlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0KTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0NTU1N0eWxlU2hlZXQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuICJ0ZXh0L2NzcyI7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL1N0eWxlQmFz
ZS5jcHAgYi9XZWJDb3JlL2Nzcy9TdHlsZUJhc2UuY3BwCmluZGV4IDkzYmM1N2QuLjkzZGJkYTAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL1N0eWxlQmFzZS5jcHAKKysrIGIvV2ViQ29yZS9jc3Mv
U3R5bGVCYXNlLmNwcApAQCAtNTYsOCArNTYsOCBAQCBLVVJMIFN0eWxlQmFzZTo6YmFzZVVSTCgp
IGNvbnN0CiAgICAgU3R5bGVTaGVldCogc2hlZXQgPSBjb25zdF9jYXN0PFN0eWxlQmFzZSo+KHRo
aXMpLT5zdHlsZXNoZWV0KCk7CiAgICAgaWYgKCFzaGVldCkKICAgICAgICAgcmV0dXJuIEtVUkwo
KTsKLSAgICBpZiAoIXNoZWV0LT5wdXRhdGl2ZUJhc2VVUkwoKS5pc051bGwoKSkKLSAgICAgICAg
cmV0dXJuIHNoZWV0LT5wdXRhdGl2ZUJhc2VVUkwoKTsKKyAgICBpZiAoIXNoZWV0LT5maW5hbFVS
TCgpLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gc2hlZXQtPmZpbmFsVVJMKCk7CiAgICAgaWYg
KHNoZWV0LT5wYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIHNoZWV0LT5wYXJlbnQoKS0+YmFzZVVS
TCgpOwogICAgIGlmICghc2hlZXQtPm93bmVyTm9kZSgpKSAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Y3NzL1N0eWxlU2hlZXQuY3BwIGIvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5jcHAKaW5kZXggMTVl
MWMzYi4uNGYyMGEyMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5jcHAKKysr
IGIvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5jcHAKQEAgLTI0LDMwICsyNCwyOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVN0eWxlU2hlZXQ6OlN0eWxlU2hlZXQoU3R5bGVTaGVldCogcGFy
ZW50U2hlZXQsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCkKK1N0eWxl
U2hlZXQ6OlN0eWxlU2hlZXQoU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKQogICAgIDogU3R5bGVMaXN0KHBhcmVu
dFNoZWV0KQogICAgICwgbV9wYXJlbnROb2RlKDApCi0gICAgLCBtX2hyZWYoaHJlZikKLSAgICAs
IG1fYmFzZVVSTChiYXNlVVJMKQorICAgICwgbV9vcmlnaW5hbFVSTChvcmlnaW5hbFVSTCkKKyAg
ICAsIG1fZmluYWxVUkwoZmluYWxVUkwpCiAgICAgLCBtX2Rpc2FibGVkKGZhbHNlKQogewogfQog
Ci0KLVN0eWxlU2hlZXQ6OlN0eWxlU2hlZXQoTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5n
JiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMKQorU3R5bGVTaGVldDo6U3R5bGVTaGVldChOb2Rl
KiBwYXJlbnROb2RlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5h
bFVSTCkKICAgICA6IFN0eWxlTGlzdCgwKQogICAgICwgbV9wYXJlbnROb2RlKHBhcmVudE5vZGUp
Ci0gICAgLCBtX2hyZWYoaHJlZikKLSAgICAsIG1fYmFzZVVSTChiYXNlVVJMKQorICAgICwgbV9v
cmlnaW5hbFVSTChvcmlnaW5hbFVSTCkKKyAgICAsIG1fZmluYWxVUkwoZmluYWxVUkwpCiAgICAg
LCBtX2Rpc2FibGVkKGZhbHNlKQogewogfQogCi1TdHlsZVNoZWV0OjpTdHlsZVNoZWV0KFN0eWxl
QmFzZSogb3duZXIsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCkKK1N0
eWxlU2hlZXQ6OlN0eWxlU2hlZXQoU3R5bGVCYXNlKiBvd25lciwgY29uc3QgU3RyaW5nJiBvcmln
aW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwpCiAgICAgOiBTdHlsZUxpc3Qob3duZXIpCiAg
ICAgLCBtX3BhcmVudE5vZGUoMCkKLSAgICAsIG1faHJlZihocmVmKQotICAgICwgbV9iYXNlVVJM
KGJhc2VVUkwpCisgICAgLCBtX29yaWdpbmFsVVJMKG9yaWdpbmFsVVJMKQorICAgICwgbV9maW5h
bFVSTChmaW5hbFVSTCkKICAgICAsIG1fZGlzYWJsZWQoZmFsc2UpCiB7CiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmggYi9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmgKaW5k
ZXggNWY4YWQ3OC4uNjIxNzMzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5o
CisrKyBiL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaApAQCAtNDUsMTMgKzQ1LDEwIEBAIHB1Ymxp
YzoKICAgICAvLyBOb3RlIHRoYXQgaHJlZiBpcyB0aGUgVVJMIHRoYXQgc3RhcnRlZCB0aGUgcmVk
aXJlY3QgY2hhaW4gdGhhdCBsZWQgdG8KICAgICAvLyB0aGlzIHN0eWxlIHNoZWV0LiBUaGlzIHBy
b3BlcnR5IHByb2JhYmx5IGlzbid0IHVzZWZ1bCBmb3IgbXVjaCBleGNlcHQKICAgICAvLyB0aGUg
SmF2YVNjcmlwdCBiaW5kaW5nICh3aGljaCBuZWVkcyB0byB1c2UgdGhpcyB2YWx1ZSBmb3Igc2Vj
dXJpdHkpLgotICAgIGNvbnN0IFN0cmluZyYgaHJlZigpIGNvbnN0IHsgcmV0dXJuIG1faHJlZjsg
fQorICAgIGNvbnN0IFN0cmluZyYgaHJlZigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxVUkw7
IH0KIAotICAgIHZvaWQgc2V0QmFzZVVSTChjb25zdCBLVVJMJiBiYXNlVVJMKSB7IG1fYmFzZVVS
TCA9IGJhc2VVUkw7IH0KLQotICAgIC8vIE5vdGljZSB0aGF0IHRoaXMgb2JqZWN0IGluaGVyaXRz
IGEgYmFzZVVSTCBmdW5jdGlvbiBmcm9tIFN0eWxlQmFzZSB0aGF0Ci0gICAgLy8gY3Jhd2xzIHRo
ZSBwYXJlbnQoKSByZWxhdGlvbiBsb29raW5nIGZvciBhIG5vbi0wIHB1dGF0aXZlQmFzZVVSTC4K
LSAgICBjb25zdCBLVVJMJiBwdXRhdGl2ZUJhc2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VV
Ukw7IH0KKyAgICB2b2lkIHNldEZpbmFsVVJMKGNvbnN0IEtVUkwmIGZpbmFsVVJMKSB7IG1fZmlu
YWxVUkwgPSBmaW5hbFVSTDsgfQorICAgIGNvbnN0IEtVUkwmIGZpbmFsVVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9maW5hbFVSTDsgfQogCiAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyVGl0bGU7IH0KICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYgcykg
eyBtX3N0clRpdGxlID0gczsgfQpAQCAtNjgsMTYgKzY1LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSB0cnVlKSA9
IDA7CiAKIHByb3RlY3RlZDoKLSAgICBTdHlsZVNoZWV0KE5vZGUqIG93bmVyTm9kZSwgY29uc3Qg
U3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMKTsKLSAgICBTdHlsZVNoZWV0KFN0eWxl
U2hlZXQqIHBhcmVudFNoZWV0LCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VV
UkwpOwotICAgIFN0eWxlU2hlZXQoU3R5bGVCYXNlKiBvd25lciwgY29uc3QgU3RyaW5nJiBocmVm
LCBjb25zdCBLVVJMJiBiYXNlVVJMKTsKKyAgICBTdHlsZVNoZWV0KE5vZGUqIG93bmVyTm9kZSwg
Y29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBmaW5hbFVSTCk7CisgICAgU3R5bGVTaGVl
dChTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJM
JiBmaW5hbFVSTCk7CisgICAgU3R5bGVTaGVldChTdHlsZUJhc2UqIG93bmVyLCBjb25zdCBTdHJp
bmcmIGhyZWYsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFs
IGJvb2wgaXNTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgTm9kZSog
bV9wYXJlbnROb2RlOwotICAgIFN0cmluZyBtX2hyZWY7Ci0gICAgS1VSTCBtX2Jhc2VVUkw7Cisg
ICAgU3RyaW5nIG1fb3JpZ2luYWxVUkw7CisgICAgS1VSTCBtX2ZpbmFsVVJMOwogICAgIFN0cmlu
ZyBtX3N0clRpdGxlOwogICAgIFJlZlB0cjxNZWRpYUxpc3Q+IG1fbWVkaWE7CiAgICAgYm9vbCBt
X2Rpc2FibGVkOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGNhM2FkNzEuLjYxYTIzZDIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTIwMDIsOSArMjAwMiw5IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUJhc2VVUkwoKQogICAgICAg
ICBtX2Jhc2VVUkwgPSBLVVJMKCk7CiAKICAgICBpZiAobV9lbGVtU2hlZXQpCi0gICAgICAgIG1f
ZWxlbVNoZWV0LT5zZXRCYXNlVVJMKG1fYmFzZVVSTCk7CisgICAgICAgIG1fZWxlbVNoZWV0LT5z
ZXRGaW5hbFVSTChtX2Jhc2VVUkwpOwogICAgIGlmIChtX21hcHBlZEVsZW1lbnRTaGVldCkKLSAg
ICAgICAgbV9tYXBwZWRFbGVtZW50U2hlZXQtPnNldEJhc2VVUkwobV9iYXNlVVJMKTsKKyAgICAg
ICAgbV9tYXBwZWRFbGVtZW50U2hlZXQtPnNldEZpbmFsVVJMKG1fYmFzZVVSTCk7CiB9CiAKIFN0
cmluZyBEb2N1bWVudDo6dXNlckFnZW50KGNvbnN0IEtVUkwmIHVybCkgY29uc3QKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9XZWJDb3JlL2RvbS9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IGJjYTdjMmMuLjkyYTJiNDAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9k
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcApAQCAtMTM5LDggKzEzOSw4IEBAIHZvaWQgUHJv
Y2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byBtYWtlIGEgc3ludGhldGljIFhTTFN0eWxlU2hlZXQgdGhhdCBpcyBlbWJlZGRlZC4g
IEl0IG5lZWRzIHRvIGJlIGFibGUKICAgICAgICAgICAgIC8vIHRvIGtpY2sgb2ZmIGltcG9ydC9p
bmNsdWRlIGxvYWRzIHRoYXQgY2FuIGhhbmcgb2ZmIHNvbWUgcGFyZW50IHNoZWV0LgogICAgICAg
ICAgICAgaWYgKG1faXNYU0wpIHsKLSAgICAgICAgICAgICAgICBLVVJMIGJhc2VVUkwgPSBLVVJM
KFBhcnNlZFVSTFN0cmluZywgbV9sb2NhbEhyZWYpOwotICAgICAgICAgICAgICAgIG1fc2hlZXQg
PSBYU0xTdHlsZVNoZWV0OjpjcmVhdGVFbWJlZGRlZCh0aGlzLCBtX2xvY2FsSHJlZiwgYmFzZVVS
TCk7CisgICAgICAgICAgICAgICAgS1VSTCBmaW5hbFVSTChQYXJzZWRVUkxTdHJpbmcsIG1fbG9j
YWxIcmVmKTsKKyAgICAgICAgICAgICAgICBtX3NoZWV0ID0gWFNMU3R5bGVTaGVldDo6Y3JlYXRl
SW5saW5lKHRoaXMsIGZpbmFsVVJMKTsKICAgICAgICAgICAgICAgICBtX2xvYWRpbmcgPSBmYWxz
ZTsKICAgICAgICAgICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWFNMSW1w
b3J0UnVsZS5jcHAgYi9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNwcAppbmRleCBjMGY2MzYz
Li4wOTA4ZDc1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNwcAorKysg
Yi9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNwcApAQCAtODcsMTQgKzg3LDE0IEBAIHZvaWQg
WFNMSW1wb3J0UnVsZTo6bG9hZFNoZWV0KCkKICAgICAKICAgICBTdHJpbmcgYWJzSHJlZiA9IG1f
c3RySHJlZjsKICAgICBYU0xTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCA9IHBhcmVudFN0eWxlU2hl
ZXQoKTsKLSAgICBpZiAoIXBhcmVudFNoZWV0LT5wdXRhdGl2ZUJhc2VVUkwoKS5pc051bGwoKSkK
KyAgICBpZiAoIXBhcmVudFNoZWV0LT5maW5hbFVSTCgpLmlzTnVsbCgpKQogICAgICAgICAvLyB1
c2UgcGFyZW50IHN0eWxlaGVldCdzIFVSTCBhcyB0aGUgYmFzZSBVUkwKLSAgICAgICAgYWJzSHJl
ZiA9IEtVUkwocGFyZW50U2hlZXQtPnB1dGF0aXZlQmFzZVVSTCgpLCBtX3N0ckhyZWYpLnN0cmlu
ZygpOworICAgICAgICBhYnNIcmVmID0gS1VSTChwYXJlbnRTaGVldC0+ZmluYWxVUkwoKSwgbV9z
dHJIcmVmKS5zdHJpbmcoKTsKICAgICAKICAgICAvLyBDaGVjayBmb3IgYSBjeWNsZSBpbiBvdXIg
aW1wb3J0IGNoYWluLiAgSWYgd2UgZW5jb3VudGVyIGEgc3R5bGVzaGVldAogICAgIC8vIGluIG91
ciBwYXJlbnQgY2hhaW4gd2l0aCB0aGUgc2FtZSBVUkwsIHRoZW4ganVzdCBiYWlsLgogICAgIGZv
ciAocGFyZW50ID0gdGhpcy0+cGFyZW50KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJl
bnQoKSkgewotICAgICAgICBpZiAocGFyZW50LT5pc1hTTFN0eWxlU2hlZXQoKSAmJiBhYnNIcmVm
ID09IHN0YXRpY19jYXN0PFhTTFN0eWxlU2hlZXQqPihwYXJlbnQpLT5wdXRhdGl2ZUJhc2VVUkwo
KS5zdHJpbmcoKSkKKyAgICAgICAgaWYgKHBhcmVudC0+aXNYU0xTdHlsZVNoZWV0KCkgJiYgYWJz
SHJlZiA9PSBzdGF0aWNfY2FzdDxYU0xTdHlsZVNoZWV0Kj4ocGFyZW50KS0+ZmluYWxVUkwoKS5z
dHJpbmcoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmggYi9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgK
aW5kZXggYjM4NjFhMC4uZTZlNDA2MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWFNMU3R5bGVT
aGVldC5oCisrKyBiL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaApAQCAtNDMsMTggKzQzLDE4
IEBAIGNsYXNzIFhTTEltcG9ydFJ1bGU7CiBjbGFzcyBYU0xTdHlsZVNoZWV0IDogcHVibGljIFN0
eWxlU2hlZXQgewogcHVibGljOgogI2lmICFVU0UoUVhNTFFVRVJZKQotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZShYU0xJbXBvcnRSdWxlKiBwYXJlbnRJbXBvcnQs
IGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCkKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxYU0xTdHlsZVNoZWV0PiBjcmVhdGUoWFNMSW1wb3J0UnVsZSogcGFyZW50SW1wb3J0
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgWFNMU3R5bGVTaGVldChwYXJlbnRJbXBvcnQs
IGhyZWYsIGJhc2VVUkwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYU0xTdHlsZVNo
ZWV0KHBhcmVudEltcG9ydCwgb3JpZ2luYWxVUkwsIGZpbmFsVVJMKSk7CiAgICAgfQogI2VuZGlm
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8WFNMU3R5bGVTaGVldD4gY3JlYXRlKE5vZGUqIHBhcmVu
dE5vZGUsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxYU0xTdHlsZVNoZWV0PiBjcmVhdGUoTm9kZSogcGFyZW50Tm9kZSwgY29u
c3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhTTFN0eWxlU2hlZXQocGFyZW50Tm9kZSwgaHJlZiwg
YmFzZVVSTCwgZmFsc2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYU0xTdHlsZVNo
ZWV0KHBhcmVudE5vZGUsIG9yaWdpbmFsVVJMLCBmaW5hbFVSTCwgZmFsc2UpKTsKICAgICB9Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8WFNMU3R5bGVTaGVldD4gY3JlYXRlRW1iZWRkZWQoTm9kZSog
cGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZUlubGluZShOb2RlKiBwYXJl
bnROb2RlLCBjb25zdCBLVVJMJiBmaW5hbFVSTCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgWFNMU3R5bGVTaGVldChwYXJlbnROb2RlLCBocmVmLCBiYXNlVVJMLCB0cnVlKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgWFNMU3R5bGVTaGVldChwYXJlbnROb2RlLCBm
aW5hbFVSTC5zdHJpbmcoKSwgZmluYWxVUkwsIHRydWUpKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5YU0xTdHlsZVNoZWV0KCk7CkBAIC05MCw5ICs5MCw5IEBAIHB1YmxpYzoKICAgICBib29sIHBy
b2Nlc3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc2VkOyB9CiAKIHByaXZhdGU6Ci0gICAg
WFNMU3R5bGVTaGVldChOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0
IEtVUkwmIGJhc2VVUkwsIGJvb2wgZW1iZWRkZWQpOworICAgIFhTTFN0eWxlU2hlZXQoTm9kZSog
cGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxV
UkwsIGJvb2wgZW1iZWRkZWQpOwogI2lmICFVU0UoUVhNTFFVRVJZKQotICAgIFhTTFN0eWxlU2hl
ZXQoWFNMSW1wb3J0UnVsZSogcGFyZW50SW1wb3J0LCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0
IEtVUkwmIGJhc2VVUkwpOworICAgIFhTTFN0eWxlU2hlZXQoWFNMSW1wb3J0UnVsZSogcGFyZW50
SW1wb3J0LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCk7
CiAjZW5kaWYKIAogICAgIERvY3VtZW50KiBtX293bmVyRG9jdW1lbnQ7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAgYi9XZWJDb3JlL3htbC9YU0xTdHls
ZVNoZWV0TGlieHNsdC5jcHAKaW5kZXggNDEyMmFhMS4uZGJkODA2YSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hTTFN0
eWxlU2hlZXRMaWJ4c2x0LmNwcApAQCAtNTUsOCArNTUsOCBAQCBTT0ZUX0xJTksobGlieHNsdCwg
eHNsdExvYWRTdHlsZXNoZWV0UEksIHhzbHRTdHlsZXNoZWV0UHRyLCAoeG1sRG9jUHRyIGRvYyks
IChkbwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVhTTFN0eWxlU2hlZXQ6OlhTTFN0eWxlU2hl
ZXQoWFNMSW1wb3J0UnVsZSogcGFyZW50UnVsZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBL
VVJMJiBiYXNlVVJMKQotICAgIDogU3R5bGVTaGVldChwYXJlbnRSdWxlLCBocmVmLCBiYXNlVVJM
KQorWFNMU3R5bGVTaGVldDo6WFNMU3R5bGVTaGVldChYU0xJbXBvcnRSdWxlKiBwYXJlbnRSdWxl
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCkKKyAgICA6
IFN0eWxlU2hlZXQocGFyZW50UnVsZSwgb3JpZ2luYWxVUkwsIGZpbmFsVVJMKQogICAgICwgbV9v
d25lckRvY3VtZW50KDApCiAgICAgLCBtX2VtYmVkZGVkKGZhbHNlKQogICAgICwgbV9wcm9jZXNz
ZWQoZmFsc2UpIC8vIENoaWxkIHNoZWV0cyBnZXQgbWFya2VkIGFzIHByb2Nlc3NlZCB3aGVuIHRo
ZSBsaWJ4c2x0IGVuZ2luZSBoYXMgZmluYWxseSBzZWVuIHRoZW0uCkBAIC02Niw4ICs2Niw4IEBA
IFhTTFN0eWxlU2hlZXQ6OlhTTFN0eWxlU2hlZXQoWFNMSW1wb3J0UnVsZSogcGFyZW50UnVsZSwg
Y29uc3QgU3RyaW5nJiBocmVmLCBjb25zCiB7CiB9CiAKLVhTTFN0eWxlU2hlZXQ6OlhTTFN0eWxl
U2hlZXQoTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBi
YXNlVVJMLCAgYm9vbCBlbWJlZGRlZCkKLSAgICA6IFN0eWxlU2hlZXQocGFyZW50Tm9kZSwgaHJl
ZiwgYmFzZVVSTCkKK1hTTFN0eWxlU2hlZXQ6OlhTTFN0eWxlU2hlZXQoTm9kZSogcGFyZW50Tm9k
ZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwsICBib29s
IGVtYmVkZGVkKQorICAgIDogU3R5bGVTaGVldChwYXJlbnROb2RlLCBvcmlnaW5hbFVSTCwgZmlu
YWxVUkwpCiAgICAgLCBtX293bmVyRG9jdW1lbnQocGFyZW50Tm9kZS0+ZG9jdW1lbnQoKSkKICAg
ICAsIG1fZW1iZWRkZWQoZW1iZWRkZWQpCiAgICAgLCBtX3Byb2Nlc3NlZCh0cnVlKSAvLyBUaGUg
cm9vdCBzaGVldCBzdGFydHMgb2ZmIHByb2Nlc3NlZC4KQEAgLTE2OCw3ICsxNjgsNyBAQCBib29s
IFhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sKQog
ICAgIH0KIAogICAgIG1fc3R5bGVzaGVldERvYyA9IHhtbEN0eHRSZWFkTWVtb3J5KGN0eHQsIGJ1
ZmZlciwgc2l6ZSwKLSAgICAgICAgcHV0YXRpdmVCYXNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSwKKyAgICAgICAgZmluYWxVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAogICAgICAg
ICBCT01IaWdoQnl0ZSA9PSAweEZGID8gIlVURi0xNkxFIiA6ICJVVEYtMTZCRSIsCiAgICAgICAg
IFhNTF9QQVJTRV9OT0VOVCB8IFhNTF9QQVJTRV9EVERBVFRSIHwgWE1MX1BBUlNFX05PV0FSTklO
RyB8IFhNTF9QQVJTRV9OT0NEQVRBKTsKICAgICB4bWxGcmVlUGFyc2VyQ3R4dChjdHh0KTsKQEAg
LTE5Miw3ICsxOTIsNyBAQCB2b2lkIFhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0cygpCiAg
ICAgaWYgKG1fZW1iZWRkZWQpIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBsb2NhdGUgKGJ5IElE
KSB0aGUgYXBwcm9wcmlhdGUgZW1iZWRkZWQgc3R5bGVzaGVldCBlbGVtZW50LCBzbyB0aGF0IHdl
IGNhbiB3YWxrIHRoZQogICAgICAgICAvLyBpbXBvcnQvaW5jbHVkZSBsaXN0LgotICAgICAgICB4
bWxBdHRyUHRyIGlkTm9kZSA9IHhtbEdldElEKGRvY3VtZW50KCksIChjb25zdCB4bWxDaGFyKiko
cHV0YXRpdmVCYXNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICB4bWxB
dHRyUHRyIGlkTm9kZSA9IHhtbEdldElEKGRvY3VtZW50KCksIChjb25zdCB4bWxDaGFyKikoZmlu
YWxVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIGlmICghaWROb2RlKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBzdHlsZXNoZWV0Um9vdCA9IGlkTm9kZS0+cGFy
ZW50OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldFF0LmNwcCBiL1dlYkNv
cmUveG1sL1hTTFN0eWxlU2hlZXRRdC5jcHAKaW5kZXggNDE1MWJlNC4uY2I1NTk5MyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldFF0LmNwcAorKysgYi9XZWJDb3JlL3htbC9Y
U0xTdHlsZVNoZWV0UXQuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotWFNMU3R5bGVTaGVldDo6WFNMU3R5bGVTaGVldChOb2RlKiBwYXJlbnROb2RlLCBjb25z
dCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsICBib29sIGVtYmVkZGVkKQotICAg
IDogU3R5bGVTaGVldChwYXJlbnROb2RlLCBocmVmLCBiYXNlVVJMKQorWFNMU3R5bGVTaGVldDo6
WFNMU3R5bGVTaGVldChOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJM
LCBjb25zdCBLVVJMJiBmaW5hbFVSTCwgIGJvb2wgZW1iZWRkZWQpCisgICAgOiBTdHlsZVNoZWV0
KHBhcmVudE5vZGUsIG9yaWdpbmFsVVJMLCBmaW5hbFVSTCkKICAgICAsIG1fb3duZXJEb2N1bWVu
dChwYXJlbnROb2RlLT5kb2N1bWVudCgpKQogICAgICwgbV9lbWJlZGRlZChlbWJlZGRlZCkKIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>