<?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>23798</bug_id>
          
          <creation_ts>2009-02-06 12:45:34 -0800</creation_ts>
          <short_desc>KURLGoogle needs support for protocolInHTTPFamily</short_desc>
          <delta_ts>2009-02-06 15:25:45 -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>Platform</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="David Levin">levin</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>108685</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-06 12:45:34 -0800</bug_when>
    <thetext>This was added to KURL.h in http://trac.webkit.org/changeset/40553</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108687</commentid>
    <comment_count>1</comment_count>
      <attachid>27410</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-06 13:03:05 -0800</bug_when>
    <thetext>Created attachment 27410
Patch for bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108703</commentid>
    <comment_count>2</comment_count>
      <attachid>27410</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-02-06 13:37:39 -0800</bug_when>
    <thetext>Comment on attachment 27410
Patch for bug.

A comment make it easier to understand what lowerCaseEqualsASCII is doing.  Especially in the last return.

// The last char of str should be NULL if we reached the end
or similar.

It seems initProtocolInHTTPFamily should use:

m_protocolInHTTPFamiy = m_isValid
&amp;&amp; (m_parsed.scheme.len == 4 &amp;&amp; lowerCaseEqualsASCII(m_utf8.data(), m_utf8.data() + 4, &quot;http&quot;) || ...

That would be much shorter. :)

Also, we should probably fix query_encoding to match WebKIt naming conventions while we&apos;re here.

Otherwise looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108721</commentid>
    <comment_count>3</comment_count>
      <attachid>27420</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-06 14:38:39 -0800</bug_when>
    <thetext>Created attachment 27420
Patch for bug.

I change the fixes slightly in response to your comments and added a comment as suggested.

Also, since you suggested fixing a casingIssue, I did this throughout the file and fixed a few other style issues in the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108725</commentid>
    <comment_count>4</comment_count>
      <attachid>27421</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-06 15:06:57 -0800</bug_when>
    <thetext>Created attachment 27421
Patch for bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108729</commentid>
    <comment_count>5</comment_count>
      <attachid>27421</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-02-06 15:16:51 -0800</bug_when>
    <thetext>Comment on attachment 27421
Patch for bug.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108735</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-02-06 15:25:45 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/platform/KURL.h
	M	WebCore/platform/KURLGoogle.cpp
	M	WebCore/platform/KURLGooglePrivate.h
Committed r40735
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27410</attachid>
            <date>2009-02-06 13:03:05 -0800</date>
            <delta_ts>2009-02-06 14:38:39 -0800</delta_ts>
            <desc>Patch for bug.</desc>
            <filename>bug23798.txt</filename>
            <type>text/plain</type>
            <size>7456</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGVlNmE2ZC4uNWFlNjlhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwzMyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIEJ1ZyAyMzc5ODogS1VSTEdvb2dsZSBuZWVkcyBzdXBw
b3J0IGZvciBwcm90b2NvbEluSFRUUEZhbWlseQorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzk4PgorCisgICAgICAgIEFkZCBwcm90b2NvbEluSFRU
UEZhbWlseSgpIHRvIHRoZSBLVVJMR29vZ2xlIGltcGxlbWVudGF0aW9uLgorICAgICAgICBUaGlz
IGlzIGFub3RoZXIgY2hyb21pdW0gYnVpbGQgZml4IHRvIG1pcnJvciByNDA1NTMuCisKKyAgICAg
ICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5vIHRlc3QuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9LVVJMLmg6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpwcm90b2NvbElu
SFRUUEZhbWlseSk6CisgICAgICAgICogcGxhdGZvcm0vS1VSTEdvb2dsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpsb3dlckNhc2VFcXVhbHNBU0NJSSk6CisgICAgICAgIChXZWJDb3JlOjpLVVJM
R29vZ2xlUHJpdmF0ZTo6S1VSTEdvb2dsZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6S1VS
TEdvb2dsZVByaXZhdGU6OnNldFV0ZjgpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTEdvb2dsZVBy
aXZhdGU6OnNldEFzY2lpKToKKyAgICAgICAgKFdlYkNvcmU6OktVUkxHb29nbGVQcml2YXRlOjpp
bml0KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkxHb29nbGVQcml2YXRlOjppbml0UHJvdG9jb2xJ
bkhUVFBGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTEdvb2dsZVByaXZhdGU6OmNvcHlU
byk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpLVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OktV
Ukw6OnByb3RvY29sSW5IVFRQRmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmludmFs
aWRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL0tVUkxHb29nbGVQcml2YXRlLmg6CisKKzIwMDkt
MDItMDYgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIEJ1ZyAyMzc5MjogdW51c2VkIHBhcmFt
IGlzIHVzZWQgaW4gUmVuZGVyTGF5ZXIuY3AgYnV0IG5vdCAjaW5jbHVkZSdkCiAgICAgICAgIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3OTI+CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKaW5k
ZXggZjUwNjEzMS4uMzVlMDZiZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IFVSTCdzIHByb3RvY29sIGlzIHRo
ZSBzYW1lIGFzIHRoZSBudWxsLQogICAgIC8vIHRlcm1pbmF0ZWQgQVNDSUkgYXJndW1lbnQuIFRo
ZSBhcmd1bWVudCBtdXN0IGJlIGxvd2VyLWNhc2UuCiAgICAgYm9vbCBwcm90b2NvbElzKGNvbnN0
IGNoYXIqKSBjb25zdDsKLSAgICBib29sIHByb3RvY29sSW5IVFRQRmFtaWx5KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm90b2NvbEluSFRUUEZhbWlseTsgfQorICAgIGJvb2wgcHJvdG9jb2xJbkhUVFBG
YW1pbHkoKSBjb25zdDsKICAgICBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CiAKICAgICB2b2lk
IHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYpOwpAQCAtMzE0LDYgKzMxNCwxMSBAQCBpbmxpbmUg
Ym9vbCBLVVJMOjppc1ZhbGlkKCkgY29uc3QKICAgICByZXR1cm4gbV9pc1ZhbGlkOwogfQogCitp
bmxpbmUgYm9vbCBLVVJMOjpwcm90b2NvbEluSFRUUEZhbWlseSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcHJvdG9jb2xJbkhUVFBGYW1pbHk7Cit9CisKIGlubGluZSB1bnNpZ25lZCBLVVJMOjpo
b3N0U3RhcnQoKSBjb25zdAogewogICAgIHJldHVybiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJT
dGFydCkgPyBtX3Bhc3N3b3JkRW5kIDogbV9wYXNzd29yZEVuZCArIDE7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29v
Z2xlLmNwcAppbmRleCA1YTc5NzEzLi5lMWQzZjVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL0tVUkxHb29nbGUuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZS5jcHAK
QEAgLTEwMCwxOCArMTAwLDIyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1VuaWNvZGVFbmNvZGlu
Zyhjb25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nKQogCiBzdGF0aWMgYm9vbCBsb3dlckNhc2VF
cXVhbHNBU0NJSShjb25zdCBjaGFyKiBiZWdpbiwgY29uc3QgY2hhciogZW5kLCBjb25zdCBjaGFy
KiBzdHIpCiB7Ci0gICAgd2hpbGUgKGJlZ2luICE9IGVuZCAmJiAqc3RyKSB7CisgICAgd2hpbGUg
KGJlZ2luICE9IGVuZCkgeworICAgICAgICBpZiAoISpzdHIpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIEFTU0VSVChpc0FTQ0lJTG93ZXIoKnN0cikpOwogICAgICAgICBpZiAo
dG9BU0NJSUxvd2VyKCpiZWdpbisrKSAhPSAqc3RyKyspCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiAhKnN0cjsKIH0KIAorCiAv
LyBLVVJMR29vZ2xlUHJpdmF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBLVVJMR29vZ2xlUHJpdmF0ZTo6S1VSTEdvb2dsZVBy
aXZhdGUoKQogICAgIDogbV9pc1ZhbGlkKGZhbHNlKQorICAgICwgbV9wcm90b2NvbEluSFRUUEZh
bWlseShmYWxzZSkKICAgICAsIG1fdXRmOElzQVNDSUkodHJ1ZSkKICAgICAsIG1fc3RyaW5nSXNW
YWxpZChmYWxzZSkKIHsKQEAgLTExOSw2ICsxMjMsNyBAQCBLVVJMR29vZ2xlUHJpdmF0ZTo6S1VS
TEdvb2dsZVByaXZhdGUoKQogCiBLVVJMR29vZ2xlUHJpdmF0ZTo6S1VSTEdvb2dsZVByaXZhdGUo
Y29uc3QgdXJsX3BhcnNlOjpQYXJzZWQmIHBhcnNlZCwgYm9vbCBpc1ZhbGlkKQogICAgIDogbV9p
c1ZhbGlkKGlzVmFsaWQpCisgICAgLCBtX3Byb3RvY29sSW5IVFRQRmFtaWx5KGZhbHNlKQogICAg
ICwgbV9wYXJzZWQocGFyc2VkKQogICAgICwgbV91dGY4SXNBU0NJSSh0cnVlKQogICAgICwgbV9z
dHJpbmdJc1ZhbGlkKGZhbHNlKQpAQCAtMTQ0LDYgKzE0OSw3IEBAIHZvaWQgS1VSTEdvb2dsZVBy
aXZhdGU6OnNldFV0ZjgoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFfbGVuKQogCiAgICAgbV91
dGY4ID0gQ1N0cmluZyhkYXRhLCBkYXRhX2xlbik7CiAgICAgbV9zdHJpbmdJc1ZhbGlkID0gZmFs
c2U7CisgICAgaW5pdFByb3RvY29sSW5IVFRQRmFtaWx5KCk7CiB9CiAKIHZvaWQgS1VSTEdvb2ds
ZVByaXZhdGU6OnNldEFzY2lpKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhX2xlbikKQEAgLTE1
MSw2ICsxNTcsNyBAQCB2b2lkIEtVUkxHb29nbGVQcml2YXRlOjpzZXRBc2NpaShjb25zdCBjaGFy
KiBkYXRhLCBpbnQgZGF0YV9sZW4pCiAgICAgbV91dGY4ID0gQ1N0cmluZyhkYXRhLCBkYXRhX2xl
bik7CiAgICAgbV91dGY4SXNBU0NJSSA9IHRydWU7CiAgICAgbV9zdHJpbmdJc1ZhbGlkID0gZmFs
c2U7CisgICAgaW5pdFByb3RvY29sSW5IVFRQRmFtaWx5KCk7CiB9CiAKIHZvaWQgS1VSTEdvb2ds
ZVByaXZhdGU6OmluaXQoY29uc3QgS1VSTCYgYmFzZSwKQEAgLTE2Miw3ICsxNjksNyBAQCB2b2lk
IEtVUkxHb29nbGVQcml2YXRlOjppbml0KGNvbnN0IEtVUkwmIGJhc2UsCiAKIC8vIE5vdGU6IGNv
ZGUgbW9zdGx5IGR1cGxpY2F0ZWQgYmVsb3cuCiB2b2lkIEtVUkxHb29nbGVQcml2YXRlOjppbml0
KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IGNoYXIqIHJlbCwgaW50IHJlbF9sZW4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dEVuY29kaW5nKiBxdWVyeV9lbmNvZGluZykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dEVuY29kaW5nKiBxdWVyeV9l
bmNvZGluZykKIHsKICAgICAvLyBBcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgd2UgZG8g
bm90IHVzZSB0aGUgY2hhcnNldCBjb252ZXJ0ZXIgaWYKICAgICAvLyBlbmNvZGluZyBpcyBVVEYt
OCBvciBvdGhlciBVbmljb2RlIGVuY29kaW5ncy4gTm90ZSB0aGF0IHRoaXMgaXMKQEAgLTIwNiw3
ICsyMTMsNyBAQCB2b2lkIEtVUkxHb29nbGVQcml2YXRlOjppbml0KGNvbnN0IEtVUkwmIGJhc2Us
IGNvbnN0IGNoYXIqIHJlbCwgaW50IHJlbF9sZW4sCiAKIC8vIE5vdGU6IGNvZGUgbW9zdGx5IGR1
cGxpY2F0ZWQgYWJvdmUuIFNlZSBGSVhNRXMgYW5kIGNvbW1lbnRzIHRoZXJlLgogdm9pZCBLVVJM
R29vZ2xlUHJpdmF0ZTo6aW5pdChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBVQ2hhciogcmVsLCBp
bnQgcmVsX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0RW5jb2Rp
bmcqIHF1ZXJ5X2VuY29kaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
ZXh0RW5jb2RpbmcqIHF1ZXJ5X2VuY29kaW5nKQogewogICAgIEtVUkxDaGFyc2V0Q29udmVydGVy
IGNoYXJzZXRfY29udmVydGVyX29iamVjdChxdWVyeV9lbmNvZGluZyk7CiAgICAgS1VSTENoYXJz
ZXRDb252ZXJ0ZXIqIGNoYXJzZXRfY29udmVydGVyID0KQEAgLTIyOSw5ICsyMzYsMjIgQEAgdm9p
ZCBLVVJMR29vZ2xlUHJpdmF0ZTo6aW5pdChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBVQ2hhciog
cmVsLCBpbnQgcmVsX2xlbiwKICAgICAgICAgc2V0VXRmOCgiIiwgMCk7CiB9CiAKK3ZvaWQgS1VS
TEdvb2dsZVByaXZhdGU6OmluaXRQcm90b2NvbEluSFRUUEZhbWlseSgpCit7CisgICAgbV9wcm90
b2NvbEluSFRUUEZhbWlseSA9IG1faXNWYWxpZAorICAgICAgICAmJiBtX3BhcnNlZC5zY2hlbWUu
bGVuID49IDQKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKG1fdXRmOC5kYXRhKClbMF0pID09ICdo
JworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIobV91dGY4LmRhdGEoKVsxXSkgPT0gJ3QnCisgICAg
ICAgICYmIHRvQVNDSUlMb3dlcihtX3V0ZjguZGF0YSgpWzJdKSA9PSAndCcKKyAgICAgICAgJiYg
dG9BU0NJSUxvd2VyKG1fdXRmOC5kYXRhKClbM10pID09ICdwJworICAgICAgICAmJiAobV9wYXJz
ZWQuc2NoZW1lLmxlbiA9PSA0CisgICAgICAgICAgICB8fCAobV9wYXJzZWQuc2NoZW1lLmxlbiA9
PSA1ICYmIHRvQVNDSUlMb3dlcihtX3V0ZjguZGF0YSgpWzRdKSA9PSAncycpKTsKK30KKwogdm9p
ZCBLVVJMR29vZ2xlUHJpdmF0ZTo6Y29weVRvKEtVUkxHb29nbGVQcml2YXRlKiBkZXN0KSBjb25z
dAogewogICAgIGRlc3QtPm1faXNWYWxpZCA9IG1faXNWYWxpZDsKKyAgICBkZXN0LT5tX3Byb3Rv
Y29sSW5IVFRQRmFtaWx5ID0gbV9wcm90b2NvbEluSFRUUEZhbWlseTsKICAgICBkZXN0LT5tX3Bh
cnNlZCA9IG1fcGFyc2VkOwogCiAgICAgLy8gRG9uJ3QgY29weSB0aGUgMTYtYml0IHN0cmluZyBz
aW5jZSB0aGF0IHdpbGwgYmUgcmVnZW5lcmF0ZWQgYXMgbmVlZGVkLgpAQCAtMzI0LDYgKzM0NCw3
IEBAIEtVUkw6OktVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIC8vIGNvbnN0cnVjdG9y
IGlzIHVzZWQuIEluIGFsbCBvdGhlciBjYXNlcywgaXQgZXhwZWN0cyBhIG5vbi1udWxsCiAgICAg
ICAgIC8vIGVtcHR5IHN0cmluZywgd2hpY2ggaXMgd2hhdCBpbml0KCkgd2lsbCBjcmVhdGUuCiAg
ICAgICAgIG1fdXJsLm1faXNWYWxpZCA9IGZhbHNlOworICAgICAgICBtX3VybC5tX3Byb3RvY29s
SW5IVFRQRmFtaWx5ID0gZmFsc2U7CiAgICAgfQogfQogCkBAIC0zOTEsNiArNDEyLDExIEBAIGJv
b2wgS1VSTDo6aXNWYWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdXJsLm1faXNWYWxpZDsKIH0K
IAorYm9vbCBLVVJMOjpwcm90b2NvbEluSFRUUEZhbWlseSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fdXJsLm1fcHJvdG9jb2xJbkhUVFBGYW1pbHk7Cit9CisKIGJvb2wgS1VSTDo6aGFzUGF0aCgp
IGNvbnN0CiB7CiAgICAgLy8gTm90ZSB0aGF0IGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iIGhhcyBh
IHBhdGgsIHRoZSBwYXRoIGlzICIvIi4gVGhpcyBjYW4KQEAgLTc3Niw3ICs4MDIsNyBAQCBib29s
IEtVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0CiAgICAgICAgIG1f
dXJsLnV0ZjhTdHJpbmcoKS5kYXRhKCkgKyBtX3VybC5tX3BhcnNlZC5zY2hlbWUuZW5kKCksCiAg
ICAgICAgIHByb3RvY29sKTsKIH0KLSAKKwogYm9vbCBLVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHByb3RvY29sSXMoImZpbGUiKTsKQEAgLTgzMiw2ICs4NTgsNyBAQCB2
b2lkIEtVUkw6OmludmFsaWRhdGUoKQogICAgIC8vIFRoaXMgaXMgb25seSBjYWxsZWQgZnJvbSB0
aGUgY29uc3RydWN0b3Igc28gcmVzZXR0aW5nIHRoZSAoYXV0b21hdGljYWxseQogICAgIC8vIGlu
aXRpYWxpemVkKSBzdHJpbmcgYW5kIHBhcnNlZCBzdHJ1Y3R1cmUgd291bGQgYmUgYSB3YXN0ZSBv
ZiB0aW1lLgogICAgIG1fdXJsLm1faXNWYWxpZCA9IGZhbHNlOworICAgIG1fdXJsLm1fcHJvdG9j
b2xJbkhUVFBGYW1pbHkgPSBmYWxzZTsKIH0KIAogLy8gRXF1YWwgdXAgdG8gcmVmZXJlbmNlIGZy
YWdtZW50cywgaWYgYW55LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xl
UHJpdmF0ZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlUHJpdmF0ZS5oCmluZGV4IGFh
OTUwNTYuLjFhZDQ0NDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZVBy
aXZhdGUuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGVQcml2YXRlLmgKQEAgLTky
LDkgKzkyLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBz
dHJpbmcoKSBjb25zdDsKIAogICAgICAgICBib29sIG1faXNWYWxpZDsKKyAgICAgICAgYm9vbCBt
X3Byb3RvY29sSW5IVFRQRmFtaWx5OwogICAgICAgICB1cmxfcGFyc2U6OlBhcnNlZCBtX3BhcnNl
ZDsgLy8gSW5kZXhlcyBpbnRvIHRoZSBVVEYtOCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcuCiAKICAg
ICBwcml2YXRlOgorICAgICAgICB2b2lkIGluaXRQcm90b2NvbEluSFRUUEZhbWlseSgpOworCiAg
ICAgICAgIENTdHJpbmcgbV91dGY4OwogCiAgICAgICAgIC8vIFNldCB0byB0cnVlIHdoZW4gdGhl
IGNhbGxlciBzZXQgdXMgdXNpbmcgdGhlIEFTQ0lJIHNldHRlci4gV2UgY2FuCg==
</data>
<flag name="review"
          id="13248"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27420</attachid>
            <date>2009-02-06 14:38:39 -0800</date>
            <delta_ts>2009-02-06 15:06:57 -0800</delta_ts>
            <desc>Patch for bug.</desc>
            <filename>bug23798.txt</filename>
            <type>text/plain</type>
            <size>20546</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGVlNmE2ZC4uYmE1ZTMwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiw0OSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIEJ1ZyAyMzc5ODogS1VSTEdvb2dsZSBuZWVkcyBzdXBw
b3J0IGZvciBwcm90b2NvbEluSFRUUEZhbWlseQorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzk4PgorCisgICAgICAgIEFkZCBwcm90b2NvbEluSFRU
UEZhbWlseSgpIHRvIHRoZSBLVVJMR29vZ2xlIGltcGxlbWVudGF0aW9uLgorICAgICAgICBUaGlz
IGlzIGFub3RoZXIgY2hyb21pdW0gYnVpbGQgZml4IHRvIG1pcnJvciByNDA1NTMuCisKKyAgICAg
ICAgV2hpbGUgaW4gdGhpcyBmaWxlLCBJIGRpZCBzb21lIHN0eWxlIGZpeGVzIGFuZCBjb25zaXN0
ZW5jeSBmaXhlczoKKyAgICAgICAgKyBmaXhlZCBtYW55X29jY3VyZW5jZXNfb2ZfdW5kZXJzY29y
aW5nX25hbWluZworICAgICAgICArIHVzYWdlcyBvZiBOVUxMCisgICAgICAgICsgY29tcGFyaXNv
bnMgdG8gMAorICAgICAgICArIGNoYW5nZWQgdGhlIGNvcHlyaWdodCByZW1vdmUgYW4gZXh0cmFu
ZW91cyAsIGFuZCBjYXBpdGFsaXplIHRoZSAoQykKKyAgICAgICAgICB3aGljaCB3YXMgc3VnZ2Vz
dGVkIGZvciBvdGhlciBmaWxlcyB0aGF0IEkndmUgc3VibWl0dGVkLgorCisgICAgICAgIE5vIG9i
c2VydmFibGUgY2hhbmdlIGluIGJlaGF2aW9yLCBzbyBubyB0ZXN0LgorCisgICAgICAgICogcGxh
dGZvcm0vS1VSTC5oOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cHJvdG9jb2xJbkhUVFBGYW1p
bHkpOgorICAgICAgICAqIHBsYXRmb3JtL0tVUkxHb29nbGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6S1VSTENoYXJzZXRDb252ZXJ0ZXI6OkNvbnZlcnRGcm9tVVRGMTYpOgorICAgICAgICAoV2Vi
Q29yZTo6bG93ZXJDYXNlRXF1YWxzQVNDSUkpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTEdvb2ds
ZVByaXZhdGU6OktVUkxHb29nbGVQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OktVUkxHb29n
bGVQcml2YXRlOjpzZXRVdGY4KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkxHb29nbGVQcml2YXRl
OjpzZXRBc2NpaSk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMR29vZ2xlUHJpdmF0ZTo6aW5pdCk6
CisgICAgICAgIChXZWJDb3JlOjpLVVJMR29vZ2xlUHJpdmF0ZTo6aW5pdFByb3RvY29sSW5IVFRQ
RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkxHb29nbGVQcml2YXRlOjpjb3B5VG8pOgor
ICAgICAgICAoV2ViQ29yZTo6S1VSTEdvb2dsZVByaXZhdGU6OnJlcGxhY2VDb21wb25lbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OktVUkw6OktVUkwpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6
Y3JlYXRlQ0ZVUkwpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6aXNFbXB0eSk6CisgICAgICAg
IChXZWJDb3JlOjpLVVJMOjpwcm90b2NvbEluSFRUUEZhbWlseSk6CisgICAgICAgIChXZWJDb3Jl
OjpLVVJMOjpxdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cHJvdG9jb2xJcyk6CisgICAgICAgIChXZWJD
b3JlOjplbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OktV
Ukw6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXF1YWxJZ25vcmluZ1JlZik6Cisg
ICAgICAgICogcGxhdGZvcm0vS1VSTEdvb2dsZVByaXZhdGUuaDoKKworMjAwOS0wMi0wNiAgRGF2
aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKICAgICAgICAgQnVnIDIzNzkyOiB1bnVzZWQgcGFyYW0gaXMgdXNlZCBp
biBSZW5kZXJMYXllci5jcCBidXQgbm90ICNpbmNsdWRlJ2QKICAgICAgICAgPGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc5Mj4KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9LVVJMLmggYi9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAppbmRleCBmNTA2MTMx
Li4zNWUwNmJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL0tVUkwuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMgdGhlIHNhbWUgYXMg
dGhlIG51bGwtCiAgICAgLy8gdGVybWluYXRlZCBBU0NJSSBhcmd1bWVudC4gVGhlIGFyZ3VtZW50
IG11c3QgYmUgbG93ZXItY2FzZS4KICAgICBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNv
bnN0OwotICAgIGJvb2wgcHJvdG9jb2xJbkhUVFBGYW1pbHkoKSBjb25zdCB7IHJldHVybiBtX3By
b3RvY29sSW5IVFRQRmFtaWx5OyB9CisgICAgYm9vbCBwcm90b2NvbEluSFRUUEZhbWlseSgpIGNv
bnN0OwogICAgIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0UHJvdG9j
b2woY29uc3QgU3RyaW5nJik7CkBAIC0zMTQsNiArMzE0LDExIEBAIGlubGluZSBib29sIEtVUkw6
OmlzVmFsaWQoKSBjb25zdAogICAgIHJldHVybiBtX2lzVmFsaWQ7CiB9CiAKK2lubGluZSBib29s
IEtVUkw6OnByb3RvY29sSW5IVFRQRmFtaWx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcm90
b2NvbEluSFRUUEZhbWlseTsKK30KKwogaW5saW5lIHVuc2lnbmVkIEtVUkw6Omhvc3RTdGFydCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1f
cGFzc3dvcmRFbmQgOiBtX3Bhc3N3b3JkRW5kICsgMTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vS1VSTEdvb2dsZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUuY3BwCmlu
ZGV4IDVhNzk3MTMuLjRhYzM2NjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdv
b2dsZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDksIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC01NywxMCArNTcsMTAgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgQ29udmVydEZyb21VVEYxNihjb25zdCB1cmxfcGFyc2U6OlVURjE2Q2hhciogaW5wdXQs
IGludCBpbnB1dF9sZW4sCisgICAgdmlydHVhbCB2b2lkIENvbnZlcnRGcm9tVVRGMTYoY29uc3Qg
dXJsX3BhcnNlOjpVVEYxNkNoYXIqIGlucHV0LCBpbnQgaW5wdXRMZW5ndGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXJsX2Nhbm9uOjpDYW5vbk91dHB1dCogb3V0cHV0KQog
ICAgIHsKLSAgICAgICAgQ1N0cmluZyBlbmNvZGVkID0gbV9lbmNvZGluZy0+ZW5jb2RlKGlucHV0
LCBpbnB1dF9sZW4sIFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7CisgICAgICAg
IENTdHJpbmcgZW5jb2RlZCA9IG1fZW5jb2RpbmctPmVuY29kZShpbnB1dCwgaW5wdXRMZW5ndGgs
IFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7CiAgICAgICAgIG91dHB1dC0+QXBw
ZW5kKGVuY29kZWQuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWQubGVuZ3RoKCkpKTsK
ICAgICB9CiAKQEAgLTEwNSwxMyArMTA1LDE4IEBAIHN0YXRpYyBib29sIGxvd2VyQ2FzZUVxdWFs
c0FTQ0lJKGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQsIGNvbnN0IGNoYXIqCiAg
ICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoKmJlZ2luKyspICE9ICpzdHIrKykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBCb3RoIHN0
cmluZ3MgYXJlIGVxdWFsIChpZ25vcmluZyBjYXNlKSBpZiBhbmQgb25seSBpZiBhbGwgb2YgdGhl
IGNoYXJhY3RlcnMgd2VyZSBlcXVhbCwKKyAgICAvLyBhbmQgdGhlIGVuZCBvZiBib3RoIGhhcyBi
ZWVuIHJlYWNoZWQuCisgICAgcmV0dXJuIGJlZ2luID09IGVuZCAmJiAhKnN0cjsKIH0KIAorCiAv
LyBLVVJMR29vZ2xlUHJpdmF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBLVVJMR29vZ2xlUHJpdmF0ZTo6S1VSTEdvb2dsZVBy
aXZhdGUoKQogICAgIDogbV9pc1ZhbGlkKGZhbHNlKQorICAgICwgbV9wcm90b2NvbEluSFRUUEZh
bWlseShmYWxzZSkKICAgICAsIG1fdXRmOElzQVNDSUkodHJ1ZSkKICAgICAsIG1fc3RyaW5nSXNW
YWxpZChmYWxzZSkKIHsKQEAgLTExOSw2ICsxMjQsNyBAQCBLVVJMR29vZ2xlUHJpdmF0ZTo6S1VS
TEdvb2dsZVByaXZhdGUoKQogCiBLVVJMR29vZ2xlUHJpdmF0ZTo6S1VSTEdvb2dsZVByaXZhdGUo
Y29uc3QgdXJsX3BhcnNlOjpQYXJzZWQmIHBhcnNlZCwgYm9vbCBpc1ZhbGlkKQogICAgIDogbV9p
c1ZhbGlkKGlzVmFsaWQpCisgICAgLCBtX3Byb3RvY29sSW5IVFRQRmFtaWx5KGZhbHNlKQogICAg
ICwgbV9wYXJzZWQocGFyc2VkKQogICAgICwgbV91dGY4SXNBU0NJSSh0cnVlKQogICAgICwgbV9z
dHJpbmdJc1ZhbGlkKGZhbHNlKQpAQCAtMTI4LDQxICsxMzQsNDMgQEAgS1VSTEdvb2dsZVByaXZh
dGU6OktVUkxHb29nbGVQcml2YXRlKGNvbnN0IHVybF9wYXJzZTo6UGFyc2VkJiBwYXJzZWQsIGJv
b2wgaXNWYWwKIC8vIFNldHRlcnMgZm9yIHRoZSBkYXRhLiBVc2luZyB0aGUgQVNDSUkgdmVyc2lv
biB3aGVuIHlvdSBrbm93IHRoZQogLy8gZGF0YSBpcyBBU0NJSSB3aWxsIGJlIHNsaWdodGx5IG1v
cmUgZWZmaWNpZW50LiBUaGUgVVRGLTggdmVyc2lvbgogLy8gd2lsbCBhbHdheXMgYmUgY29ycmVj
dCBpZiB0aGUgY2FsbGVyIGlzIHVuc3VyZS4KLXZvaWQgS1VSTEdvb2dsZVByaXZhdGU6OnNldFV0
ZjgoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFfbGVuKQordm9pZCBLVVJMR29vZ2xlUHJpdmF0
ZTo6c2V0VXRmOChjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICAvLyBU
aGUgbV91dGY4SXNBU0NJSSBtdXN0IGFsd2F5cyBiZSBjb3JyZWN0IHNpbmNlIHRoZSBEZXByZWNh
dGVkU3RyaW5nCiAgICAgLy8gZ2V0dGVyIG11c3QgY3JlYXRlIGl0IHdpdGggdGhlIHByb3BlciBj
b25zdHJ1Y3Rvci4gVGhpcyB0ZXN0IGNhbiBiZQogICAgIC8vIHJlbW92ZWQgd2hlbiBEZXByZWNh
dGVkU3RyaW5nIGlzIGdvbmUsIGJ1dCBpdCBzdGlsbCBtaWdodCBiZSBhCiAgICAgLy8gcGVyZm9y
bWFuY2Ugd2luLgogICAgIG1fdXRmOElzQVNDSUkgPSB0cnVlOwotICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgZGF0YV9sZW47IGkrKykgeworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGF0YUxlbmd0
aDsgaSsrKSB7CiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihkYXRhW2ld
KSA+PSAweDgwKSB7CiAgICAgICAgICAgICBtX3V0ZjhJc0FTQ0lJID0gZmFsc2U7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fdXRmOCA9IENTdHJpbmcoZGF0
YSwgZGF0YV9sZW4pOworICAgIG1fdXRmOCA9IENTdHJpbmcoZGF0YSwgZGF0YUxlbmd0aCk7CiAg
ICAgbV9zdHJpbmdJc1ZhbGlkID0gZmFsc2U7CisgICAgaW5pdFByb3RvY29sSW5IVFRQRmFtaWx5
KCk7CiB9CiAKLXZvaWQgS1VSTEdvb2dsZVByaXZhdGU6OnNldEFzY2lpKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBkYXRhX2xlbikKK3ZvaWQgS1VSTEdvb2dsZVByaXZhdGU6OnNldEFzY2lpKGNvbnN0
IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewotICAgIG1fdXRmOCA9IENTdHJpbmcoZGF0
YSwgZGF0YV9sZW4pOworICAgIG1fdXRmOCA9IENTdHJpbmcoZGF0YSwgZGF0YUxlbmd0aCk7CiAg
ICAgbV91dGY4SXNBU0NJSSA9IHRydWU7CiAgICAgbV9zdHJpbmdJc1ZhbGlkID0gZmFsc2U7Cisg
ICAgaW5pdFByb3RvY29sSW5IVFRQRmFtaWx5KCk7CiB9CiAKIHZvaWQgS1VSTEdvb2dsZVByaXZh
dGU6OmluaXQoY29uc3QgS1VSTCYgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTdHJpbmcmIHJlbGF0aXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRleHRFbmNvZGluZyogcXVlcnlFbmNvZGluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVGV4dEVuY29kaW5nKiBxdWVyeUVuY29kaW5nKQogewogICAgIGluaXQoYmFzZSwgcmVs
YXRpdmUuY2hhcmFjdGVycygpLCByZWxhdGl2ZS5sZW5ndGgoKSwgcXVlcnlFbmNvZGluZyk7CiB9
CiAKIC8vIE5vdGU6IGNvZGUgbW9zdGx5IGR1cGxpY2F0ZWQgYmVsb3cuCi12b2lkIEtVUkxHb29n
bGVQcml2YXRlOjppbml0KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IGNoYXIqIHJlbCwgaW50IHJl
bF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dEVuY29kaW5nKiBx
dWVyeV9lbmNvZGluZykKK3ZvaWQgS1VSTEdvb2dsZVByaXZhdGU6OmluaXQoY29uc3QgS1VSTCYg
YmFzZSwgY29uc3QgY2hhciogcmVsLCBpbnQgcmVsTGVuZ3RoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUZXh0RW5jb2RpbmcqIHF1ZXJ5RW5jb2RpbmcpCiB7CiAgICAgLy8g
QXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIHdlIGRvIG5vdCB1c2UgdGhlIGNoYXJzZXQg
Y29udmVydGVyIGlmCiAgICAgLy8gZW5jb2RpbmcgaXMgVVRGLTggb3Igb3RoZXIgVW5pY29kZSBl
bmNvZGluZ3MuIE5vdGUgdGhhdCB0aGlzIGlzCkBAIC0xNzIsMTYgKzE4MCwxNiBAQCB2b2lkIEtV
UkxHb29nbGVQcml2YXRlOjppbml0KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IGNoYXIqIHJlbCwg
aW50IHJlbF9sZW4sCiAKICAgICAvLyBXZSBmZWVsIGZyZWUgdG8gbWFrZSB0aGUgY2hhcnNldCBj
b252ZXJ0ZXIgb2JqZWN0IGV2ZXJ5IHRpbWUgc2luY2UgaXQncwogICAgIC8vIGp1c3QgYSB3cmFw
cGVyIGFyb3VuZCBhIHJlZmVyZW5jZS4KLSAgICBLVVJMQ2hhcnNldENvbnZlcnRlciBjaGFyc2V0
X2NvbnZlcnRlcl9vYmplY3QocXVlcnlfZW5jb2RpbmcpOwotICAgIEtVUkxDaGFyc2V0Q29udmVy
dGVyKiBjaGFyc2V0X2NvbnZlcnRlciA9Ci0gICAgICAgICghcXVlcnlfZW5jb2RpbmcgfHwgaXNV
bmljb2RlRW5jb2RpbmcocXVlcnlfZW5jb2RpbmcpKSA/IDAgOgotICAgICAgICAmY2hhcnNldF9j
b252ZXJ0ZXJfb2JqZWN0OworICAgIEtVUkxDaGFyc2V0Q29udmVydGVyIGNoYXJzZXRDb252ZXJ0
ZXJPYmplY3QocXVlcnlFbmNvZGluZyk7CisgICAgS1VSTENoYXJzZXRDb252ZXJ0ZXIqIGNoYXJz
ZXRDb252ZXJ0ZXIgPQorICAgICAgICAoIXF1ZXJ5RW5jb2RpbmcgfHwgaXNVbmljb2RlRW5jb2Rp
bmcocXVlcnlFbmNvZGluZykpID8gMCA6CisgICAgICAgICZjaGFyc2V0Q29udmVydGVyT2JqZWN0
OwogCiAgICAgdXJsX2Nhbm9uOjpSYXdDYW5vbk91dHB1dFQ8Y2hhcj4gb3V0cHV0OwogICAgIGNv
bnN0IENTdHJpbmcmIGJhc2VTdHIgPSBiYXNlLm1fdXJsLnV0ZjhTdHJpbmcoKTsKICAgICBtX2lz
VmFsaWQgPSB1cmxfdXRpbDo6UmVzb2x2ZVJlbGF0aXZlKGJhc2VTdHIuZGF0YSgpLCBiYXNlU3Ry
Lmxlbmd0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZS5tX3VybC5tX3BhcnNlZCwgcmVsLCByZWxfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcnNldF9jb252ZXJ0ZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBiYXNlLm1fdXJsLm1fcGFyc2VkLCByZWwsIHJlbExlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXRDb252
ZXJ0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0
LCAmbV9wYXJzZWQpOwogCiAgICAgLy8gU2VlIEZJWE1FIGluIEtVUkxHb29nbGVQcml2YXRlIGlu
IHRoZSBoZWFkZXIuIElmIGNhbm9uaWNhbGl6YXRpb24gaGFzIG5vdApAQCAtMjA1LDE5ICsyMTMs
MTkgQEAgdm9pZCBLVVJMR29vZ2xlUHJpdmF0ZTo6aW5pdChjb25zdCBLVVJMJiBiYXNlLCBjb25z
dCBjaGFyKiByZWwsIGludCByZWxfbGVuLAogfQogCiAvLyBOb3RlOiBjb2RlIG1vc3RseSBkdXBs
aWNhdGVkIGFib3ZlLiBTZWUgRklYTUVzIGFuZCBjb21tZW50cyB0aGVyZS4KLXZvaWQgS1VSTEdv
b2dsZVByaXZhdGU6OmluaXQoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgVUNoYXIqIHJlbCwgaW50
IHJlbF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dEVuY29kaW5n
KiBxdWVyeV9lbmNvZGluZykKK3ZvaWQgS1VSTEdvb2dsZVByaXZhdGU6OmluaXQoY29uc3QgS1VS
TCYgYmFzZSwgY29uc3QgVUNoYXIqIHJlbCwgaW50IHJlbExlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVGV4dEVuY29kaW5nKiBxdWVyeUVuY29kaW5nKQogewotICAg
IEtVUkxDaGFyc2V0Q29udmVydGVyIGNoYXJzZXRfY29udmVydGVyX29iamVjdChxdWVyeV9lbmNv
ZGluZyk7Ci0gICAgS1VSTENoYXJzZXRDb252ZXJ0ZXIqIGNoYXJzZXRfY29udmVydGVyID0KLSAg
ICAgICAgKCFxdWVyeV9lbmNvZGluZyB8fCBpc1VuaWNvZGVFbmNvZGluZyhxdWVyeV9lbmNvZGlu
ZykpID8gMCA6Ci0gICAgICAgICZjaGFyc2V0X2NvbnZlcnRlcl9vYmplY3Q7CisgICAgS1VSTENo
YXJzZXRDb252ZXJ0ZXIgY2hhcnNldENvbnZlcnRlck9iamVjdChxdWVyeUVuY29kaW5nKTsKKyAg
ICBLVVJMQ2hhcnNldENvbnZlcnRlciogY2hhcnNldENvbnZlcnRlciA9CisgICAgICAgICghcXVl
cnlFbmNvZGluZyB8fCBpc1VuaWNvZGVFbmNvZGluZyhxdWVyeUVuY29kaW5nKSkgPyAwIDoKKyAg
ICAgICAgJmNoYXJzZXRDb252ZXJ0ZXJPYmplY3Q7CiAKICAgICB1cmxfY2Fub246OlJhd0Nhbm9u
T3V0cHV0VDxjaGFyPiBvdXRwdXQ7CiAgICAgY29uc3QgQ1N0cmluZyYgYmFzZVN0ciA9IGJhc2Uu
bV91cmwudXRmOFN0cmluZygpOwogICAgIG1faXNWYWxpZCA9IHVybF91dGlsOjpSZXNvbHZlUmVs
YXRpdmUoYmFzZVN0ci5kYXRhKCksIGJhc2VTdHIubGVuZ3RoKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLm1fdXJsLm1fcGFyc2VkLCByZWwsIHJlbF9s
ZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc2V0X2Nv
bnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Uu
bV91cmwubV9wYXJzZWQsIHJlbCwgcmVsTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcnNldENvbnZlcnRlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZvdXRwdXQsICZtX3BhcnNlZCk7CiAKICAgICBpZiAobV9p
c1ZhbGlkIHx8IG91dHB1dC5sZW5ndGgoKSkgewpAQCAtMjI5LDkgKzIzNywyMCBAQCB2b2lkIEtV
UkxHb29nbGVQcml2YXRlOjppbml0KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IFVDaGFyKiByZWws
IGludCByZWxfbGVuLAogICAgICAgICBzZXRVdGY4KCIiLCAwKTsKIH0KIAordm9pZCBLVVJMR29v
Z2xlUHJpdmF0ZTo6aW5pdFByb3RvY29sSW5IVFRQRmFtaWx5KCkKK3sKKyAgICBjb25zdCBjaGFy
KiBzY2hlbWUgPSBtX3V0ZjguZGF0YSgpICsgbV9wYXJzZWQuc2NoZW1lLmJlZ2luOworICAgIG1f
cHJvdG9jb2xJbkhUVFBGYW1pbHkgPSBtX2lzVmFsaWQKKyAgICAgICAgJiYgbV9wYXJzZWQuc2No
ZW1lLmxlbiA+PSA0CisgICAgICAgICYmIGxvd2VyQ2FzZUVxdWFsc0FTQ0lJKHNjaGVtZSwgc2No
ZW1lICsgNCwgImh0dHAiKQorICAgICAgICAmJiAobV9wYXJzZWQuc2NoZW1lLmxlbiA9PSA0Cisg
ICAgICAgICAgICB8fCAobV9wYXJzZWQuc2NoZW1lLmxlbiA9PSA1ICYmIHRvQVNDSUlMb3dlcihz
Y2hlbWVbNF0pID09ICdzJykpOworfQorCiB2b2lkIEtVUkxHb29nbGVQcml2YXRlOjpjb3B5VG8o
S1VSTEdvb2dsZVByaXZhdGUqIGRlc3QpIGNvbnN0CiB7CiAgICAgZGVzdC0+bV9pc1ZhbGlkID0g
bV9pc1ZhbGlkOworICAgIGRlc3QtPm1fcHJvdG9jb2xJbkhUVFBGYW1pbHkgPSBtX3Byb3RvY29s
SW5IVFRQRmFtaWx5OwogICAgIGRlc3QtPm1fcGFyc2VkID0gbV9wYXJzZWQ7CiAKICAgICAvLyBE
b24ndCBjb3B5IHRoZSAxNi1iaXQgc3RyaW5nIHNpbmNlIHRoYXQgd2lsbCBiZSByZWdlbmVyYXRl
ZCBhcyBuZWVkZWQuCkBAIC0yNjMsMTIgKzI4MiwxMiBAQCBTdHJpbmcgS1VSTEdvb2dsZVByaXZh
dGU6OmNvbXBvbmVudFN0cmluZyhjb25zdCB1cmxfcGFyc2U6OkNvbXBvbmVudCYgY29tcCkgY29u
cwogdm9pZCBLVVJMR29vZ2xlUHJpdmF0ZTo6cmVwbGFjZUNvbXBvbmVudHMoY29uc3QgUmVwbGFj
ZW1lbnRzJiByZXBsYWNlbWVudHMpCiB7CiAgICAgdXJsX2Nhbm9uOjpSYXdDYW5vbk91dHB1dFQ8
Y2hhcj4gb3V0cHV0OwotICAgIHVybF9wYXJzZTo6UGFyc2VkIG5ld19wYXJzZWQ7CisgICAgdXJs
X3BhcnNlOjpQYXJzZWQgbmV3UGFyc2VkOwogCiAgICAgbV9pc1ZhbGlkID0gdXJsX3V0aWw6OlJl
cGxhY2VDb21wb25lbnRzKHV0ZjhTdHJpbmcoKS5kYXRhKCksCi0gICAgICAgIHV0ZjhTdHJpbmco
KS5sZW5ndGgoKSwgbV9wYXJzZWQsIHJlcGxhY2VtZW50cywgTlVMTCwgJm91dHB1dCwgJm5ld19w
YXJzZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGY4
U3RyaW5nKCkubGVuZ3RoKCksIG1fcGFyc2VkLCByZXBsYWNlbWVudHMsIDAsICZvdXRwdXQsICZu
ZXdQYXJzZWQpOwogCi0gICAgbV9wYXJzZWQgPSBuZXdfcGFyc2VkOworICAgIG1fcGFyc2VkID0g
bmV3UGFyc2VkOwogICAgIGlmIChtX3BhcnNlZC5yZWYuaXNfbm9uZW1wdHkoKSkKICAgICAgICAg
c2V0VXRmOChvdXRwdXQuZGF0YSgpLCBvdXRwdXQubGVuZ3RoKCkpOwogICAgIGVsc2UKQEAgLTMw
Miw3ICszMjEsNyBAQCBLVVJMOjpLVVJMKGNvbnN0IGNoYXIgKnVybCkKICAgICAvLyBGSVhNRSBU
aGUgTWFjIGNvZGUgY2hlY2tzIGZvciBiZWdpbm5pbmcgd2l0aCBhIHNsYXNoIGFuZCBjb252ZXJ0
aW5nIHRvIGEKICAgICAvLyBmaWxlOiBVUkwuIFdlIHdpbGwgd2FudCB0byBhZGQgdGhpcyBhcyB3
ZWxsIG9uY2Ugd2UgY2FuIGNvbXBpbGUgb24gYQogICAgIC8vIHN5c3RlbSBsaWtlIHRoYXQuCi0g
ICAgbV91cmwuaW5pdChLVVJMKCksIHVybCwgc3RybGVuKHVybCksIE5VTEwpOworICAgIG1fdXJs
LmluaXQoS1VSTCgpLCB1cmwsIHN0cmxlbih1cmwpLCAwKTsKIAogICAgIC8vIFRoZSBvbmUtYXJn
dW1lbnQgY29uc3RydWN0b3JzIHNob3VsZCBuZXZlciBnZW5lcmF0ZSBhIE5VTEwgc3RyaW5nLgog
ICAgIC8vIFRoaXMgaXMgYSBmdW5ueSBxdWlyayBvZiBLVVJMLmNwcCAocHJvYmFibHkgYSBidWcp
IHdoaWNoIHdlIHByZXNlcnZlLgpAQCAtMzE4LDEyICszMzcsMTMgQEAgS1VSTDo6S1VSTChjb25z
dCBjaGFyICp1cmwpCiBLVVJMOjpLVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIGlmICgh
dXJsLmlzTnVsbCgpKQotICAgICAgICBtX3VybC5pbml0KEtVUkwoKSwgdXJsLCBOVUxMKTsKKyAg
ICAgICAgbV91cmwuaW5pdChLVVJMKCksIHVybCwgMCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8v
IFdlYkNvcmUgZXhwZWN0cyB1cyB0byBwcmVzZXJ2ZSB0aGUgbnVsbG5lc3Mgb2Ygc3RyaW5ncyB3
aGVuIHRoaXMKICAgICAgICAgLy8gY29uc3RydWN0b3IgaXMgdXNlZC4gSW4gYWxsIG90aGVyIGNh
c2VzLCBpdCBleHBlY3RzIGEgbm9uLW51bGwKICAgICAgICAgLy8gZW1wdHkgc3RyaW5nLCB3aGlj
aCBpcyB3aGF0IGluaXQoKSB3aWxsIGNyZWF0ZS4KICAgICAgICAgbV91cmwubV9pc1ZhbGlkID0g
ZmFsc2U7CisgICAgICAgIG1fdXJsLm1fcHJvdG9jb2xJbkhUVFBGYW1pbHkgPSBmYWxzZTsKICAg
ICB9CiB9CiAKQEAgLTMzMSw3ICszNTEsNyBAQCBLVVJMOjpLVVJMKGNvbnN0IFN0cmluZyYgdXJs
KQogLy8gVGhpcyBhc3N1bWVzIFVURi04IGVuY29kaW5nLgogS1VSTDo6S1VSTChjb25zdCBLVVJM
JiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlKQogewotICAgIG1fdXJsLmluaXQoYmFzZSwg
cmVsYXRpdmUsIE5VTEwpOworICAgIG1fdXJsLmluaXQoYmFzZSwgcmVsYXRpdmUsIDApOwogfQog
CiAvLyBDb25zdHJ1Y3RzIGEgbmV3IFVSTCBnaXZlbiBhIGJhc2UgVVJMIGFuZCBhIHBvc3NpYmx5
IHJlbGF0aXZlIGlucHV0IFVSTC4KQEAgLTM2NSw3ICszODUsNyBAQCBLVVJMOjpLVVJMKENGVVJM
UmVmKQogQ0ZVUkxSZWYgS1VSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAogewogICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIDA7CiB9CiAjZW5kaWYKIApA
QCAtMzgzLDcgKzQwMyw3IEBAIGJvb2wgS1VSTDo6aXNOdWxsKCkgY29uc3QKIAogYm9vbCBLVVJM
Ojppc0VtcHR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV91cmwudXRmOFN0cmluZygpLmxlbmd0
aCgpID09IDA7CisgICAgcmV0dXJuICFtX3VybC51dGY4U3RyaW5nKCkubGVuZ3RoKCk7CiB9CiAK
IGJvb2wgS1VSTDo6aXNWYWxpZCgpIGNvbnN0CkBAIC0zOTEsNiArNDExLDExIEBAIGJvb2wgS1VS
TDo6aXNWYWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdXJsLm1faXNWYWxpZDsKIH0KIAorYm9v
bCBLVVJMOjpwcm90b2NvbEluSFRUUEZhbWlseSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXJs
Lm1fcHJvdG9jb2xJbkhUVFBGYW1pbHk7Cit9CisKIGJvb2wgS1VSTDo6aGFzUGF0aCgpIGNvbnN0
CiB7CiAgICAgLy8gTm90ZSB0aGF0IGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iIGhhcyBhIHBhdGgs
IHRoZSBwYXRoIGlzICIvIi4gVGhpcyBjYW4KQEAgLTQ4OSwxMCArNTE0LDEwIEBAIFN0cmluZyBL
VVJMOjpxdWVyeSgpIGNvbnN0CiAgICAgICAgIC8vIEtVUkwncyBxdWVyeSgpIGluY2x1ZGVzIHRo
ZSBxdWVzdGlvbiBtYXJrLCBldmVuIHRob3VnaCB0aGUgcmVmZXJlbmNlCiAgICAgICAgIC8vIGRv
ZXNuJ3QuIE1vdmUgdGhlIHF1ZXJ5IGNvbXBvbmVudCBiYWNrd2FyZHMgb25lIHRvIGFjY291bnQg
Zm9yIGl0CiAgICAgICAgIC8vIChvdXIgbGlicmFyeSBkb2Vzbid0IGNvdW50IHRoZSBxdWVzdGlv
biBtYXJrKS4KLSAgICAgICAgdXJsX3BhcnNlOjpDb21wb25lbnQgcXVlcnlfY29tcCA9IG1fdXJs
Lm1fcGFyc2VkLnF1ZXJ5OwotICAgICAgICBxdWVyeV9jb21wLmJlZ2luLS07Ci0gICAgICAgIHF1
ZXJ5X2NvbXAubGVuKys7Ci0gICAgICAgIHJldHVybiBtX3VybC5jb21wb25lbnRTdHJpbmcocXVl
cnlfY29tcCk7CisgICAgICAgIHVybF9wYXJzZTo6Q29tcG9uZW50IHF1ZXJ5Q29tcCA9IG1fdXJs
Lm1fcGFyc2VkLnF1ZXJ5OworICAgICAgICBxdWVyeUNvbXAuYmVnaW4tLTsKKyAgICAgICAgcXVl
cnlDb21wLmxlbisrOworICAgICAgICByZXR1cm4gbV91cmwuY29tcG9uZW50U3RyaW5nKHF1ZXJ5
Q29tcCk7CiAgICAgfQogCiAgICAgLy8gQnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEwMTUgdGhpcyBmdW5jdGlvbiByZXR1cm5zCkBAIC03MDgsMTMgKzczMywx
MyBAQCBTdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgc3RyLCBj
b25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQogICAgIENTdHJpbmcgY3N0ciA9IHN0ci51dGY4
KCk7CiAKICAgICBjb25zdCBjaGFyKiBpbnB1dCA9IGNzdHIuZGF0YSgpOwotICAgIGludCBpbnB1
dF9sZW5ndGggPSBjc3RyLmxlbmd0aCgpOworICAgIGludCBpbnB1dExlbmd0aCA9IGNzdHIubGVu
Z3RoKCk7CiAgICAgdXJsX2Nhbm9uOjpSYXdDYW5vbk91dHB1dFQ8Y2hhcj4gdW5lc2NhcGVkOwot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5wdXRfbGVuZ3RoOyBpKyspIHsKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGlucHV0TGVuZ3RoOyBpKyspIHsKICAgICAgICAgaWYgKGlucHV0W2ldID09
ICclJykgewogICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjaDsKLSAgICAgICAgICAgIGlmICh1
cmxfY2Fub246OkRlY29kZUVzY2FwZWQoaW5wdXQsICZpLCBpbnB1dF9sZW5ndGgsICZjaCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAoY2ggPT0gMCkgeworICAgICAgICAgICAgaWYgKHVybF9jYW5v
bjo6RGVjb2RlRXNjYXBlZChpbnB1dCwgJmksIGlucHV0TGVuZ3RoLCAmY2gpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFjaCkgewogICAgICAgICAgICAgICAgICAgICAvLyBOZXZlciB1bmVzY2Fw
ZSBOVUxMcy4KICAgICAgICAgICAgICAgICAgICAgdW5lc2NhcGVkLnB1c2hfYmFjaygnJScpOwog
ICAgICAgICAgICAgICAgICAgICB1bmVzY2FwZWQucHVzaF9iYWNrKCcwJyk7CkBAIC03NDIsMTkg
Kzc2NywxOSBAQCBTdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYg
c3RyLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gbmV4dF9jaCB3aWxsIHBvaW50IHRvIHRoZSBsYXN0IGNoYXJhY3RlciBvZiB0
aGUgZGVjb2RlZAogICAgICAgICAgICAgLy8gY2hhcmFjdGVyLgotICAgICAgICAgICAgaW50IG5l
eHRfY2ggPSBpOwotICAgICAgICAgICAgdW5zaWduZWQgY29kZV9wb2ludDsKLSAgICAgICAgICAg
IGlmICh1cmxfY2Fub246OlJlYWRVVEZDaGFyKHVuZXNjYXBlZC5kYXRhKCksICZuZXh0X2NoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5lc2NhcGVkLmxlbmd0aCgp
LCAmY29kZV9wb2ludCkpIHsKKyAgICAgICAgICAgIGludCBuZXh0Q2hhcmFjdGVyID0gaTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGNvZGVQb2ludDsKKyAgICAgICAgICAgIGlmICh1cmxfY2Fub246
OlJlYWRVVEZDaGFyKHVuZXNjYXBlZC5kYXRhKCksICZuZXh0Q2hhcmFjdGVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5lc2NhcGVkLmxlbmd0aCgpLCAmY29kZVBv
aW50KSkgewogICAgICAgICAgICAgICAgIC8vIFZhbGlkIFVURi04IGNoYXJhY3RlciwgY29udmVy
dCB0byBVVEYtMTYuCi0gICAgICAgICAgICAgICAgdXJsX2Nhbm9uOjpBcHBlbmRVVEYxNlZhbHVl
KGNvZGVfcG9pbnQsICZ1dGYxNik7Ci0gICAgICAgICAgICAgICAgaSA9IG5leHRfY2g7CisgICAg
ICAgICAgICAgICAgdXJsX2Nhbm9uOjpBcHBlbmRVVEYxNlZhbHVlKGNvZGVQb2ludCwgJnV0ZjE2
KTsKKyAgICAgICAgICAgICAgICBpID0gbmV4dENoYXJhY3RlcjsKICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgLy8gS1VSTC5jcHAgc3RyaXBzIGFueSBzZXF1ZW5jZXMgdGhh
dCBhcmUgbm90IHZhbGlkIFVURi04LiBUaGlzCiAgICAgICAgICAgICAgICAgLy8gc291bmRzIHNj
YXJ5LiBJbnN0ZWFkLCB3ZSBqdXN0IGtlZXAgdGhvc2UgaW52YWxpZCBjb2RlCiAgICAgICAgICAg
ICAgICAgLy8gcG9pbnRzIGFuZCBwcm9tb3RlIHRvIFVURi0xNi4gV2UgY29weSBhbGwgY2hhcmFj
dGVycyBmcm9tCiAgICAgICAgICAgICAgICAgLy8gdGhlIGN1cnJlbnQgcG9zaXRpb24gdG8gdGhl
IGVuZCBvZiB0aGUgaWRlbnRpZmllZCBzcWV1cW5jZS4KLSAgICAgICAgICAgICAgICB3aGlsZSAo
aSA8IG5leHRfY2gpIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoaSA8IG5leHRDaGFyYWN0ZXIp
IHsKICAgICAgICAgICAgICAgICAgICAgdXRmMTYucHVzaF9iYWNrKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KHVuZXNjYXBlZC5hdChpKSkpOwogICAgICAgICAgICAgICAgICAgICBpKys7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtNzcwLDEzICs3OTUsMTMgQEAgYm9vbCBLVVJMOjpwcm90b2Nv
bElzKGNvbnN0IGNoYXIqIHByb3RvY29sKSBjb25zdAogewogICAgIGFzc2VydFByb3RvY29sSXNH
b29kKHByb3RvY29sKTsKICAgICBpZiAobV91cmwubV9wYXJzZWQuc2NoZW1lLmxlbiA8PSAwKQot
ICAgICAgICByZXR1cm4gcHJvdG9jb2wgPT0gTlVMTDsKKyAgICAgICAgcmV0dXJuICFwcm90b2Nv
bDsKICAgICByZXR1cm4gbG93ZXJDYXNlRXF1YWxzQVNDSUkoCiAgICAgICAgIG1fdXJsLnV0ZjhT
dHJpbmcoKS5kYXRhKCkgKyBtX3VybC5tX3BhcnNlZC5zY2hlbWUuYmVnaW4sCiAgICAgICAgIG1f
dXJsLnV0ZjhTdHJpbmcoKS5kYXRhKCkgKyBtX3VybC5tX3BhcnNlZC5zY2hlbWUuZW5kKCksCiAg
ICAgICAgIHByb3RvY29sKTsKIH0KLSAKKwogYm9vbCBLVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHByb3RvY29sSXMoImZpbGUiKTsKQEAgLTc5OCwxMSArODIzLDExIEBA
IFN0cmluZyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgbm90RW5j
b2RlZFN0cmluZykKICAgICAgICAgbm90RW5jb2RlZFN0cmluZy5sZW5ndGgoKSwKICAgICAgICAg
VVJMRW5jb2RlZEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKICAgICBjb25zdCBjaGFyKiBpbnB1
dCA9IHV0ZjguZGF0YSgpOwotICAgIGludCBpbnB1dF9sZW4gPSB1dGY4Lmxlbmd0aCgpOworICAg
IGludCBpbnB1dExlbmd0aCA9IHV0ZjgubGVuZ3RoKCk7CiAKICAgICBWZWN0b3I8Y2hhciwgMjA0
OD4gYnVmZmVyOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5wdXRfbGVuOyBpKyspIHsKLSAg
ICAgICAgaWYgKGlucHV0W2ldID09IDApCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnB1dExl
bmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghaW5wdXRbaV0pCiAgICAgICAgICAgICBidWZmZXIu
YXBwZW5kKCIlMDAiLCAzKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYnVmZmVyLmFwcGVu
ZChpbnB1dFtpXSk7CkBAIC04MzIsNiArODU3LDcgQEAgdm9pZCBLVVJMOjppbnZhbGlkYXRlKCkK
ICAgICAvLyBUaGlzIGlzIG9ubHkgY2FsbGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yIHNvIHJlc2V0
dGluZyB0aGUgKGF1dG9tYXRpY2FsbHkKICAgICAvLyBpbml0aWFsaXplZCkgc3RyaW5nIGFuZCBw
YXJzZWQgc3RydWN0dXJlIHdvdWxkIGJlIGEgd2FzdGUgb2YgdGltZS4KICAgICBtX3VybC5tX2lz
VmFsaWQgPSBmYWxzZTsKKyAgICBtX3VybC5tX3Byb3RvY29sSW5IVFRQRmFtaWx5ID0gZmFsc2U7
CiB9CiAKIC8vIEVxdWFsIHVwIHRvIHJlZmVyZW5jZSBmcmFnbWVudHMsIGlmIGFueS4KQEAgLTg0
MCwxNiArODY2LDE2IEBAIGJvb2wgZXF1YWxJZ25vcmluZ1JlZihjb25zdCBLVVJMJiBhLCBjb25z
dCBLVVJMJiBiKQogICAgIC8vIENvbXB1dGUgdGhlIGxlbmd0aCBvZiBlYWNoIFVSTCB3aXRob3V0
IGl0cyByZWYuIE5vdGUgdGhhdCB0aGUgcmVmZXJlbmNlCiAgICAgLy8gYmVnaW4gKGlmIGl0IGV4
aXN0cykgcG9pbnRzIHRvIHRoZSBjaGFyYWN0ZXIgKmFmdGVyKiB0aGUgJyMnLCBzbyB3ZSBuZWVk
CiAgICAgLy8gdG8gc3VidHJhY3Qgb25lLgotICAgIGludCBhX2xlbiA9IGEubV91cmwudXRmOFN0
cmluZygpLmxlbmd0aCgpOworICAgIGludCBhTGVuZ3RoID0gYS5tX3VybC51dGY4U3RyaW5nKCku
bGVuZ3RoKCk7CiAgICAgaWYgKGEubV91cmwubV9wYXJzZWQucmVmLmxlbiA+PSAwKQotICAgICAg
ICBhX2xlbiA9IGEubV91cmwubV9wYXJzZWQucmVmLmJlZ2luIC0gMTsKKyAgICAgICAgYUxlbmd0
aCA9IGEubV91cmwubV9wYXJzZWQucmVmLmJlZ2luIC0gMTsKIAotICAgIGludCBiX2xlbiA9IGIu
bV91cmwudXRmOFN0cmluZygpLmxlbmd0aCgpOworICAgIGludCBiTGVuZ3RoID0gYi5tX3VybC51
dGY4U3RyaW5nKCkubGVuZ3RoKCk7CiAgICAgaWYgKGIubV91cmwubV9wYXJzZWQucmVmLmxlbiA+
PSAwKQotICAgICAgICBiX2xlbiA9IGIubV91cmwubV9wYXJzZWQucmVmLmJlZ2luIC0gMTsKKyAg
ICAgICAgYkxlbmd0aCA9IGIubV91cmwubV9wYXJzZWQucmVmLmJlZ2luIC0gMTsKIAotICAgIHJl
dHVybiBhX2xlbiA9PSBiX2xlbgotICAgICAgICAmJiBzdHJuY21wKGEubV91cmwudXRmOFN0cmlu
ZygpLmRhdGEoKSwgYi5tX3VybC51dGY4U3RyaW5nKCkuZGF0YSgpLCBhX2xlbikgPT0gMDsKKyAg
ICByZXR1cm4gYUxlbmd0aCA9PSBiTGVuZ3RoCisgICAgICAgICYmICFzdHJuY21wKGEubV91cmwu
dXRmOFN0cmluZygpLmRhdGEoKSwgYi5tX3VybC51dGY4U3RyaW5nKCkuZGF0YSgpLCBhTGVuZ3Ro
KTsKIH0KIAogdW5zaWduZWQgS1VSTDo6aG9zdFN0YXJ0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZVByaXZhdGUuaCBiL1dlYkNvcmUvcGxhdGZvcm0vS1VS
TEdvb2dsZVByaXZhdGUuaAppbmRleCBhYTk1MDU2Li5lZjA5M2MxIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL0tVUkxHb29nbGVQcml2YXRlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9L
VVJMR29vZ2xlUHJpdmF0ZS5oCkBAIC01OSw5ICs1OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgLy8gYmUgTlVMTCAodGhpcyBpbXBsaWVzIFVURi04KS4gVGhlc2UgaW5pdGlhbGl6
ZXJzIHJlcXVpcmUgdGhhdCB0aGUgb2JqZWN0CiAgICAgICAgIC8vIGhhcyBqdXN0IGJlZW4gY3Jl
YXRlZCBhbmQgdGhlIHN0cmluZ3MgYXJlIE5VTEwuIERvIG5vdCBjYWxsIG9uIGFuCiAgICAgICAg
IC8vIGFscmVhZHktY29uc3RydWN0ZWQgb2JqZWN0LgotICAgICAgICB2b2lkIGluaXQoY29uc3Qg
S1VSTCYgYmFzZSwgY29uc3QgY2hhciogcmVsLCBpbnQgcmVsTGVuLAorICAgICAgICB2b2lkIGlu
aXQoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgY2hhciogcmVsLCBpbnQgcmVsTGVuZ3RoLAogICAg
ICAgICAgICAgICAgICAgY29uc3QgVGV4dEVuY29kaW5nKiBxdWVyeUVuY29kaW5nKTsKLSAgICAg
ICAgdm9pZCBpbml0KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IFVDaGFyKiByZWwsIGludCByZWxM
ZW4sCisgICAgICAgIHZvaWQgaW5pdChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBVQ2hhciogcmVs
LCBpbnQgcmVsTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dEVuY29kaW5nKiBx
dWVyeUVuY29kaW5nKTsKIAogICAgICAgICAvLyBEb2VzIGEgZGVlcCBjb3B5IHRvIHRoZSBnaXZl
biBvdXRwdXQgb2JqZWN0LgpAQCAtNzgsOCArNzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIC8vIFNldHRlcnMgZm9yIHRoZSBkYXRhLiBVc2luZyB0aGUgQVNDSUkgdmVyc2lvbiB3
aGVuIHlvdSBrbm93IHRoZQogICAgICAgICAvLyBkYXRhIGlzIEFTQ0lJIHdpbGwgYmUgc2xpZ2h0
bHkgbW9yZSBlZmZpY2llbnQuIFRoZSBVVEYtOCB2ZXJzaW9uCiAgICAgICAgIC8vIHdpbGwgYWx3
YXlzIGJlIGNvcnJlY3QgaWYgdGhlIGNhbGxlciBpcyB1bnN1cmUuCi0gICAgICAgIHZvaWQgc2V0
VXRmOChjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbik7Ci0gICAgICAgIHZvaWQgc2V0QXNj
aWkoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW4pOworICAgICAgICB2b2lkIHNldFV0Zjgo
Y29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIHNldEFzY2lp
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKIAogICAgICAgICAvLyBUT0RPKGJy
ZXR0dykgd2UgY2FuIHN1cHBvcnQgYW4gYWRkaXRpb25hbCBvcHRpbWl6YXRpb24uICBNYWtlIHRo
aXMKICAgICAgICAgLy8gYnVmZmVyIHN1cHBvcnQgYm90aCBvcHRpbmFsIFN0cmluZ3MgYW5kIFVU
Ri04IGRhdGEuIFRoaXMgd2F5LCB3ZSBjYW4gdXNlCkBAIC05Miw5ICs5MiwxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3Q7CiAKICAg
ICAgICAgYm9vbCBtX2lzVmFsaWQ7CisgICAgICAgIGJvb2wgbV9wcm90b2NvbEluSFRUUEZhbWls
eTsKICAgICAgICAgdXJsX3BhcnNlOjpQYXJzZWQgbV9wYXJzZWQ7IC8vIEluZGV4ZXMgaW50byB0
aGUgVVRGLTggdmVyc2lvbiBvZiB0aGUgc3RyaW5nLgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
dm9pZCBpbml0UHJvdG9jb2xJbkhUVFBGYW1pbHkoKTsKKwogICAgICAgICBDU3RyaW5nIG1fdXRm
ODsKIAogICAgICAgICAvLyBTZXQgdG8gdHJ1ZSB3aGVuIHRoZSBjYWxsZXIgc2V0IHVzIHVzaW5n
IHRoZSBBU0NJSSBzZXR0ZXIuIFdlIGNhbgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27421</attachid>
            <date>2009-02-06 15:06:57 -0800</date>
            <delta_ts>2009-02-06 15:16:51 -0800</delta_ts>
            <desc>Patch for bug.</desc>
            <filename>bug23798.txt</filename>
            <type>text/plain</type>
            <size>20676</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGVlNmE2ZC4uYmE1ZTMwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiw0OSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIEJ1ZyAyMzc5ODogS1VSTEdvb2dsZSBuZWVkcyBzdXBw
b3J0IGZvciBwcm90b2NvbEluSFRUUEZhbWlseQorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzk4PgorCisgICAgICAgIEFkZCBwcm90b2NvbEluSFRU
UEZhbWlseSgpIHRvIHRoZSBLVVJMR29vZ2xlIGltcGxlbWVudGF0aW9uLgorICAgICAgICBUaGlz
IGlzIGFub3RoZXIgY2hyb21pdW0gYnVpbGQgZml4IHRvIG1pcnJvciByNDA1NTMuCisKKyAgICAg
ICAgV2hpbGUgaW4gdGhpcyBmaWxlLCBJIGRpZCBzb21lIHN0eWxlIGZpeGVzIGFuZCBjb25zaXN0
ZW5jeSBmaXhlczoKKyAgICAgICAgKyBmaXhlZCBtYW55X29jY3VyZW5jZXNfb2ZfdW5kZXJzY29y
aW5nX25hbWluZworICAgICAgICArIHVzYWdlcyBvZiBOVUxMCisgICAgICAgICsgY29tcGFyaXNv
bnMgdG8gMAorICAgICAgICArIGNoYW5nZWQgdGhlIGNvcHlyaWdodCByZW1vdmUgYW4gZXh0cmFu
ZW91cyAsIGFuZCBjYXBpdGFsaXplIHRoZSAoQykKKyAgICAgICAgICB3aGljaCB3YXMgc3VnZ2Vz
dGVkIGZvciBvdGhlciBmaWxlcyB0aGF0IEkndmUgc3VibWl0dGVkLgorCisgICAgICAgIE5vIG9i
c2VydmFibGUgY2hhbmdlIGluIGJlaGF2aW9yLCBzbyBubyB0ZXN0LgorCisgICAgICAgICogcGxh
dGZvcm0vS1VSTC5oOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cHJvdG9jb2xJbkhUVFBGYW1p
bHkpOgorICAgICAgICAqIHBsYXRmb3JtL0tVUkxHb29nbGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6S1VSTENoYXJzZXRDb252ZXJ0ZXI6OkNvbnZlcnRGcm9tVVRGMTYpOgorICAgICAgICAoV2Vi
Q29yZTo6bG93ZXJDYXNlRXF1YWxzQVNDSUkpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTEdvb2ds
ZVByaXZhdGU6OktVUkxHb29nbGVQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OktVUkxHb29n
bGVQcml2YXRlOjpzZXRVdGY4KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkxHb29nbGVQcml2YXRl
OjpzZXRBc2NpaSk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMR29vZ2xlUHJpdmF0ZTo6aW5pdCk6
CisgICAgICAgIChXZWJDb3JlOjpLVVJMR29vZ2xlUHJpdmF0ZTo6aW5pdFByb3RvY29sSW5IVFRQ
RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkxHb29nbGVQcml2YXRlOjpjb3B5VG8pOgor
ICAgICAgICAoV2ViQ29yZTo6S1VSTEdvb2dsZVByaXZhdGU6OnJlcGxhY2VDb21wb25lbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OktVUkw6OktVUkwpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6
Y3JlYXRlQ0ZVUkwpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6aXNFbXB0eSk6CisgICAgICAg
IChXZWJDb3JlOjpLVVJMOjpwcm90b2NvbEluSFRUUEZhbWlseSk6CisgICAgICAgIChXZWJDb3Jl
OjpLVVJMOjpxdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cHJvdG9jb2xJcyk6CisgICAgICAgIChXZWJD
b3JlOjplbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OktV
Ukw6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXF1YWxJZ25vcmluZ1JlZik6Cisg
ICAgICAgICogcGxhdGZvcm0vS1VSTEdvb2dsZVByaXZhdGUuaDoKKworMjAwOS0wMi0wNiAgRGF2
aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKICAgICAgICAgQnVnIDIzNzkyOiB1bnVzZWQgcGFyYW0gaXMgdXNlZCBp
biBSZW5kZXJMYXllci5jcCBidXQgbm90ICNpbmNsdWRlJ2QKICAgICAgICAgPGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc5Mj4KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9LVVJMLmggYi9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAppbmRleCBmNTA2MTMx
Li4zNWUwNmJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL0tVUkwuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMgdGhlIHNhbWUgYXMg
dGhlIG51bGwtCiAgICAgLy8gdGVybWluYXRlZCBBU0NJSSBhcmd1bWVudC4gVGhlIGFyZ3VtZW50
IG11c3QgYmUgbG93ZXItY2FzZS4KICAgICBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNv
bnN0OwotICAgIGJvb2wgcHJvdG9jb2xJbkhUVFBGYW1pbHkoKSBjb25zdCB7IHJldHVybiBtX3By
b3RvY29sSW5IVFRQRmFtaWx5OyB9CisgICAgYm9vbCBwcm90b2NvbEluSFRUUEZhbWlseSgpIGNv
bnN0OwogICAgIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0UHJvdG9j
b2woY29uc3QgU3RyaW5nJik7CkBAIC0zMTQsNiArMzE0LDExIEBAIGlubGluZSBib29sIEtVUkw6
OmlzVmFsaWQoKSBjb25zdAogICAgIHJldHVybiBtX2lzVmFsaWQ7CiB9CiAKK2lubGluZSBib29s
IEtVUkw6OnByb3RvY29sSW5IVFRQRmFtaWx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcm90
b2NvbEluSFRUUEZhbWlseTsKK30KKwogaW5saW5lIHVuc2lnbmVkIEtVUkw6Omhvc3RTdGFydCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1f
cGFzc3dvcmRFbmQgOiBtX3Bhc3N3b3JkRW5kICsgMTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vS1VSTEdvb2dsZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUuY3BwCmlu
ZGV4IDVhNzk3MTMuLmNhZmZiNTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdv
b2dsZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDksIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC01NywxMCArNTcsMTAgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgQ29udmVydEZyb21VVEYxNihjb25zdCB1cmxfcGFyc2U6OlVURjE2Q2hhciogaW5wdXQs
IGludCBpbnB1dF9sZW4sCisgICAgdmlydHVhbCB2b2lkIENvbnZlcnRGcm9tVVRGMTYoY29uc3Qg
dXJsX3BhcnNlOjpVVEYxNkNoYXIqIGlucHV0LCBpbnQgaW5wdXRMZW5ndGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXJsX2Nhbm9uOjpDYW5vbk91dHB1dCogb3V0cHV0KQog
ICAgIHsKLSAgICAgICAgQ1N0cmluZyBlbmNvZGVkID0gbV9lbmNvZGluZy0+ZW5jb2RlKGlucHV0
LCBpbnB1dF9sZW4sIFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7CisgICAgICAg
IENTdHJpbmcgZW5jb2RlZCA9IG1fZW5jb2RpbmctPmVuY29kZShpbnB1dCwgaW5wdXRMZW5ndGgs
IFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7CiAgICAgICAgIG91dHB1dC0+QXBw
ZW5kKGVuY29kZWQuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWQubGVuZ3RoKCkpKTsK
ICAgICB9CiAKQEAgLTEwNSwxMyArMTA1LDE4IEBAIHN0YXRpYyBib29sIGxvd2VyQ2FzZUVxdWFs
c0FTQ0lJKGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQsIGNvbnN0IGNoYXIqCiAg
ICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoKmJlZ2luKyspICE9ICpzdHIrKykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBCb3RoIHN0
cmluZ3MgYXJlIGVxdWFsIChpZ25vcmluZyBjYXNlKSBpZiBhbmQgb25seSBpZiBhbGwgb2YgdGhl
IGNoYXJhY3RlcnMgd2VyZSBlcXVhbCwKKyAgICAvLyBhbmQgdGhlIGVuZCBvZiBib3RoIGhhcyBi
ZWVuIHJlYWNoZWQuCisgICAgcmV0dXJuIGJlZ2luID09IGVuZCAmJiAhKnN0cjsKIH0KIAorCiAv
LyBLVVJMR29vZ2xlUHJpdmF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBLVVJMR29vZ2xlUHJpdmF0ZTo6S1VSTEdvb2dsZVBy
aXZhdGUoKQogICAgIDogbV9pc1ZhbGlkKGZhbHNlKQorICAgICwgbV9wcm90b2NvbEluSFRUUEZh
bWlseShmYWxzZSkKICAgICAsIG1fdXRmOElzQVNDSUkodHJ1ZSkKICAgICAsIG1fc3RyaW5nSXNW
YWxpZChmYWxzZSkKIHsKQEAgLTExOSw2ICsxMjQsNyBAQCBLVVJMR29vZ2xlUHJpdmF0ZTo6S1VS
TEdvb2dsZVByaXZhdGUoKQogCiBLVVJMR29vZ2xlUHJpdmF0ZTo6S1VSTEdvb2dsZVByaXZhdGUo
Y29uc3QgdXJsX3BhcnNlOjpQYXJzZWQmIHBhcnNlZCwgYm9vbCBpc1ZhbGlkKQogICAgIDogbV9p
c1ZhbGlkKGlzVmFsaWQpCisgICAgLCBtX3Byb3RvY29sSW5IVFRQRmFtaWx5KGZhbHNlKQogICAg
ICwgbV9wYXJzZWQocGFyc2VkKQogICAgICwgbV91dGY4SXNBU0NJSSh0cnVlKQogICAgICwgbV9z
dHJpbmdJc1ZhbGlkKGZhbHNlKQpAQCAtMTI4LDQxICsxMzQsNDMgQEAgS1VSTEdvb2dsZVByaXZh
dGU6OktVUkxHb29nbGVQcml2YXRlKGNvbnN0IHVybF9wYXJzZTo6UGFyc2VkJiBwYXJzZWQsIGJv
b2wgaXNWYWwKIC8vIFNldHRlcnMgZm9yIHRoZSBkYXRhLiBVc2luZyB0aGUgQVNDSUkgdmVyc2lv
biB3aGVuIHlvdSBrbm93IHRoZQogLy8gZGF0YSBpcyBBU0NJSSB3aWxsIGJlIHNsaWdodGx5IG1v
cmUgZWZmaWNpZW50LiBUaGUgVVRGLTggdmVyc2lvbgogLy8gd2lsbCBhbHdheXMgYmUgY29ycmVj
dCBpZiB0aGUgY2FsbGVyIGlzIHVuc3VyZS4KLXZvaWQgS1VSTEdvb2dsZVByaXZhdGU6OnNldFV0
ZjgoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFfbGVuKQordm9pZCBLVVJMR29vZ2xlUHJpdmF0
ZTo6c2V0VXRmOChjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICAvLyBU
aGUgbV91dGY4SXNBU0NJSSBtdXN0IGFsd2F5cyBiZSBjb3JyZWN0IHNpbmNlIHRoZSBEZXByZWNh
dGVkU3RyaW5nCiAgICAgLy8gZ2V0dGVyIG11c3QgY3JlYXRlIGl0IHdpdGggdGhlIHByb3BlciBj
b25zdHJ1Y3Rvci4gVGhpcyB0ZXN0IGNhbiBiZQogICAgIC8vIHJlbW92ZWQgd2hlbiBEZXByZWNh
dGVkU3RyaW5nIGlzIGdvbmUsIGJ1dCBpdCBzdGlsbCBtaWdodCBiZSBhCiAgICAgLy8gcGVyZm9y
bWFuY2Ugd2luLgogICAgIG1fdXRmOElzQVNDSUkgPSB0cnVlOwotICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgZGF0YV9sZW47IGkrKykgeworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGF0YUxlbmd0
aDsgaSsrKSB7CiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihkYXRhW2ld
KSA+PSAweDgwKSB7CiAgICAgICAgICAgICBtX3V0ZjhJc0FTQ0lJID0gZmFsc2U7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fdXRmOCA9IENTdHJpbmcoZGF0
YSwgZGF0YV9sZW4pOworICAgIG1fdXRmOCA9IENTdHJpbmcoZGF0YSwgZGF0YUxlbmd0aCk7CiAg
ICAgbV9zdHJpbmdJc1ZhbGlkID0gZmFsc2U7CisgICAgaW5pdFByb3RvY29sSW5IVFRQRmFtaWx5
KCk7CiB9CiAKLXZvaWQgS1VSTEdvb2dsZVByaXZhdGU6OnNldEFzY2lpKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBkYXRhX2xlbikKK3ZvaWQgS1VSTEdvb2dsZVByaXZhdGU6OnNldEFzY2lpKGNvbnN0
IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewotICAgIG1fdXRmOCA9IENTdHJpbmcoZGF0
YSwgZGF0YV9sZW4pOworICAgIG1fdXRmOCA9IENTdHJpbmcoZGF0YSwgZGF0YUxlbmd0aCk7CiAg
ICAgbV91dGY4SXNBU0NJSSA9IHRydWU7CiAgICAgbV9zdHJpbmdJc1ZhbGlkID0gZmFsc2U7Cisg
ICAgaW5pdFByb3RvY29sSW5IVFRQRmFtaWx5KCk7CiB9CiAKIHZvaWQgS1VSTEdvb2dsZVByaXZh
dGU6OmluaXQoY29uc3QgS1VSTCYgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTdHJpbmcmIHJlbGF0aXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRleHRFbmNvZGluZyogcXVlcnlFbmNvZGluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVGV4dEVuY29kaW5nKiBxdWVyeUVuY29kaW5nKQogewogICAgIGluaXQoYmFzZSwgcmVs
YXRpdmUuY2hhcmFjdGVycygpLCByZWxhdGl2ZS5sZW5ndGgoKSwgcXVlcnlFbmNvZGluZyk7CiB9
CiAKIC8vIE5vdGU6IGNvZGUgbW9zdGx5IGR1cGxpY2F0ZWQgYmVsb3cuCi12b2lkIEtVUkxHb29n
bGVQcml2YXRlOjppbml0KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IGNoYXIqIHJlbCwgaW50IHJl
bF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dEVuY29kaW5nKiBx
dWVyeV9lbmNvZGluZykKK3ZvaWQgS1VSTEdvb2dsZVByaXZhdGU6OmluaXQoY29uc3QgS1VSTCYg
YmFzZSwgY29uc3QgY2hhciogcmVsLCBpbnQgcmVsTGVuZ3RoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUZXh0RW5jb2RpbmcqIHF1ZXJ5RW5jb2RpbmcpCiB7CiAgICAgLy8g
QXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIHdlIGRvIG5vdCB1c2UgdGhlIGNoYXJzZXQg
Y29udmVydGVyIGlmCiAgICAgLy8gZW5jb2RpbmcgaXMgVVRGLTggb3Igb3RoZXIgVW5pY29kZSBl
bmNvZGluZ3MuIE5vdGUgdGhhdCB0aGlzIGlzCkBAIC0xNzIsMTYgKzE4MCwxNiBAQCB2b2lkIEtV
UkxHb29nbGVQcml2YXRlOjppbml0KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IGNoYXIqIHJlbCwg
aW50IHJlbF9sZW4sCiAKICAgICAvLyBXZSBmZWVsIGZyZWUgdG8gbWFrZSB0aGUgY2hhcnNldCBj
b252ZXJ0ZXIgb2JqZWN0IGV2ZXJ5IHRpbWUgc2luY2UgaXQncwogICAgIC8vIGp1c3QgYSB3cmFw
cGVyIGFyb3VuZCBhIHJlZmVyZW5jZS4KLSAgICBLVVJMQ2hhcnNldENvbnZlcnRlciBjaGFyc2V0
X2NvbnZlcnRlcl9vYmplY3QocXVlcnlfZW5jb2RpbmcpOwotICAgIEtVUkxDaGFyc2V0Q29udmVy
dGVyKiBjaGFyc2V0X2NvbnZlcnRlciA9Ci0gICAgICAgICghcXVlcnlfZW5jb2RpbmcgfHwgaXNV
bmljb2RlRW5jb2RpbmcocXVlcnlfZW5jb2RpbmcpKSA/IDAgOgotICAgICAgICAmY2hhcnNldF9j
b252ZXJ0ZXJfb2JqZWN0OworICAgIEtVUkxDaGFyc2V0Q29udmVydGVyIGNoYXJzZXRDb252ZXJ0
ZXJPYmplY3QocXVlcnlFbmNvZGluZyk7CisgICAgS1VSTENoYXJzZXRDb252ZXJ0ZXIqIGNoYXJz
ZXRDb252ZXJ0ZXIgPQorICAgICAgICAoIXF1ZXJ5RW5jb2RpbmcgfHwgaXNVbmljb2RlRW5jb2Rp
bmcocXVlcnlFbmNvZGluZykpID8gMCA6CisgICAgICAgICZjaGFyc2V0Q29udmVydGVyT2JqZWN0
OwogCiAgICAgdXJsX2Nhbm9uOjpSYXdDYW5vbk91dHB1dFQ8Y2hhcj4gb3V0cHV0OwogICAgIGNv
bnN0IENTdHJpbmcmIGJhc2VTdHIgPSBiYXNlLm1fdXJsLnV0ZjhTdHJpbmcoKTsKICAgICBtX2lz
VmFsaWQgPSB1cmxfdXRpbDo6UmVzb2x2ZVJlbGF0aXZlKGJhc2VTdHIuZGF0YSgpLCBiYXNlU3Ry
Lmxlbmd0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZS5tX3VybC5tX3BhcnNlZCwgcmVsLCByZWxfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcnNldF9jb252ZXJ0ZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBiYXNlLm1fdXJsLm1fcGFyc2VkLCByZWwsIHJlbExlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXRDb252
ZXJ0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0
LCAmbV9wYXJzZWQpOwogCiAgICAgLy8gU2VlIEZJWE1FIGluIEtVUkxHb29nbGVQcml2YXRlIGlu
IHRoZSBoZWFkZXIuIElmIGNhbm9uaWNhbGl6YXRpb24gaGFzIG5vdApAQCAtMjA1LDE5ICsyMTMs
MTkgQEAgdm9pZCBLVVJMR29vZ2xlUHJpdmF0ZTo6aW5pdChjb25zdCBLVVJMJiBiYXNlLCBjb25z
dCBjaGFyKiByZWwsIGludCByZWxfbGVuLAogfQogCiAvLyBOb3RlOiBjb2RlIG1vc3RseSBkdXBs
aWNhdGVkIGFib3ZlLiBTZWUgRklYTUVzIGFuZCBjb21tZW50cyB0aGVyZS4KLXZvaWQgS1VSTEdv
b2dsZVByaXZhdGU6OmluaXQoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgVUNoYXIqIHJlbCwgaW50
IHJlbF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dEVuY29kaW5n
KiBxdWVyeV9lbmNvZGluZykKK3ZvaWQgS1VSTEdvb2dsZVByaXZhdGU6OmluaXQoY29uc3QgS1VS
TCYgYmFzZSwgY29uc3QgVUNoYXIqIHJlbCwgaW50IHJlbExlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVGV4dEVuY29kaW5nKiBxdWVyeUVuY29kaW5nKQogewotICAg
IEtVUkxDaGFyc2V0Q29udmVydGVyIGNoYXJzZXRfY29udmVydGVyX29iamVjdChxdWVyeV9lbmNv
ZGluZyk7Ci0gICAgS1VSTENoYXJzZXRDb252ZXJ0ZXIqIGNoYXJzZXRfY29udmVydGVyID0KLSAg
ICAgICAgKCFxdWVyeV9lbmNvZGluZyB8fCBpc1VuaWNvZGVFbmNvZGluZyhxdWVyeV9lbmNvZGlu
ZykpID8gMCA6Ci0gICAgICAgICZjaGFyc2V0X2NvbnZlcnRlcl9vYmplY3Q7CisgICAgS1VSTENo
YXJzZXRDb252ZXJ0ZXIgY2hhcnNldENvbnZlcnRlck9iamVjdChxdWVyeUVuY29kaW5nKTsKKyAg
ICBLVVJMQ2hhcnNldENvbnZlcnRlciogY2hhcnNldENvbnZlcnRlciA9CisgICAgICAgICghcXVl
cnlFbmNvZGluZyB8fCBpc1VuaWNvZGVFbmNvZGluZyhxdWVyeUVuY29kaW5nKSkgPyAwIDoKKyAg
ICAgICAgJmNoYXJzZXRDb252ZXJ0ZXJPYmplY3Q7CiAKICAgICB1cmxfY2Fub246OlJhd0Nhbm9u
T3V0cHV0VDxjaGFyPiBvdXRwdXQ7CiAgICAgY29uc3QgQ1N0cmluZyYgYmFzZVN0ciA9IGJhc2Uu
bV91cmwudXRmOFN0cmluZygpOwogICAgIG1faXNWYWxpZCA9IHVybF91dGlsOjpSZXNvbHZlUmVs
YXRpdmUoYmFzZVN0ci5kYXRhKCksIGJhc2VTdHIubGVuZ3RoKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLm1fdXJsLm1fcGFyc2VkLCByZWwsIHJlbF9s
ZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc2V0X2Nv
bnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Uu
bV91cmwubV9wYXJzZWQsIHJlbCwgcmVsTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcnNldENvbnZlcnRlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZvdXRwdXQsICZtX3BhcnNlZCk7CiAKICAgICBpZiAobV9p
c1ZhbGlkIHx8IG91dHB1dC5sZW5ndGgoKSkgewpAQCAtMjI5LDkgKzIzNywyNiBAQCB2b2lkIEtV
UkxHb29nbGVQcml2YXRlOjppbml0KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IFVDaGFyKiByZWws
IGludCByZWxfbGVuLAogICAgICAgICBzZXRVdGY4KCIiLCAwKTsKIH0KIAordm9pZCBLVVJMR29v
Z2xlUHJpdmF0ZTo6aW5pdFByb3RvY29sSW5IVFRQRmFtaWx5KCkKK3sKKyAgICBpZiAoIW1faXNW
YWxpZCkgeworICAgICAgICBtX3Byb3RvY29sSW5IVFRQRmFtaWx5ID0gZmFsc2U7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyKiBzY2hlbWUgPSBtX3V0ZjguZGF0YSgp
ICsgbV9wYXJzZWQuc2NoZW1lLmJlZ2luOworICAgIGlmIChtX3BhcnNlZC5zY2hlbWUubGVuID09
IDQpCisgICAgICAgIG1fcHJvdG9jb2xJbkhUVFBGYW1pbHkgPSBsb3dlckNhc2VFcXVhbHNBU0NJ
SShzY2hlbWUsIHNjaGVtZSArIDQsICJodHRwIik7CisgICAgZWxzZSBpZiAobV9wYXJzZWQuc2No
ZW1lLmxlbiA9PSA1KQorICAgICAgICBtX3Byb3RvY29sSW5IVFRQRmFtaWx5ID0gbG93ZXJDYXNl
RXF1YWxzQVNDSUkoc2NoZW1lLCBzY2hlbWUgKyA1LCAiaHR0cHMiKTsKKyAgICBlbHNlCisgICAg
ICAgIG1fcHJvdG9jb2xJbkhUVFBGYW1pbHkgPSBmYWxzZTsKK30KKwogdm9pZCBLVVJMR29vZ2xl
UHJpdmF0ZTo6Y29weVRvKEtVUkxHb29nbGVQcml2YXRlKiBkZXN0KSBjb25zdAogewogICAgIGRl
c3QtPm1faXNWYWxpZCA9IG1faXNWYWxpZDsKKyAgICBkZXN0LT5tX3Byb3RvY29sSW5IVFRQRmFt
aWx5ID0gbV9wcm90b2NvbEluSFRUUEZhbWlseTsKICAgICBkZXN0LT5tX3BhcnNlZCA9IG1fcGFy
c2VkOwogCiAgICAgLy8gRG9uJ3QgY29weSB0aGUgMTYtYml0IHN0cmluZyBzaW5jZSB0aGF0IHdp
bGwgYmUgcmVnZW5lcmF0ZWQgYXMgbmVlZGVkLgpAQCAtMjYzLDEyICsyODgsMTIgQEAgU3RyaW5n
IEtVUkxHb29nbGVQcml2YXRlOjpjb21wb25lbnRTdHJpbmcoY29uc3QgdXJsX3BhcnNlOjpDb21w
b25lbnQmIGNvbXApIGNvbnMKIHZvaWQgS1VSTEdvb2dsZVByaXZhdGU6OnJlcGxhY2VDb21wb25l
bnRzKGNvbnN0IFJlcGxhY2VtZW50cyYgcmVwbGFjZW1lbnRzKQogewogICAgIHVybF9jYW5vbjo6
UmF3Q2Fub25PdXRwdXRUPGNoYXI+IG91dHB1dDsKLSAgICB1cmxfcGFyc2U6OlBhcnNlZCBuZXdf
cGFyc2VkOworICAgIHVybF9wYXJzZTo6UGFyc2VkIG5ld1BhcnNlZDsKIAogICAgIG1faXNWYWxp
ZCA9IHVybF91dGlsOjpSZXBsYWNlQ29tcG9uZW50cyh1dGY4U3RyaW5nKCkuZGF0YSgpLAotICAg
ICAgICB1dGY4U3RyaW5nKCkubGVuZ3RoKCksIG1fcGFyc2VkLCByZXBsYWNlbWVudHMsIE5VTEws
ICZvdXRwdXQsICZuZXdfcGFyc2VkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdXRmOFN0cmluZygpLmxlbmd0aCgpLCBtX3BhcnNlZCwgcmVwbGFjZW1lbnRz
LCAwLCAmb3V0cHV0LCAmbmV3UGFyc2VkKTsKIAotICAgIG1fcGFyc2VkID0gbmV3X3BhcnNlZDsK
KyAgICBtX3BhcnNlZCA9IG5ld1BhcnNlZDsKICAgICBpZiAobV9wYXJzZWQucmVmLmlzX25vbmVt
cHR5KCkpCiAgICAgICAgIHNldFV0Zjgob3V0cHV0LmRhdGEoKSwgb3V0cHV0Lmxlbmd0aCgpKTsK
ICAgICBlbHNlCkBAIC0zMDIsNyArMzI3LDcgQEAgS1VSTDo6S1VSTChjb25zdCBjaGFyICp1cmwp
CiAgICAgLy8gRklYTUUgVGhlIE1hYyBjb2RlIGNoZWNrcyBmb3IgYmVnaW5uaW5nIHdpdGggYSBz
bGFzaCBhbmQgY29udmVydGluZyB0byBhCiAgICAgLy8gZmlsZTogVVJMLiBXZSB3aWxsIHdhbnQg
dG8gYWRkIHRoaXMgYXMgd2VsbCBvbmNlIHdlIGNhbiBjb21waWxlIG9uIGEKICAgICAvLyBzeXN0
ZW0gbGlrZSB0aGF0LgotICAgIG1fdXJsLmluaXQoS1VSTCgpLCB1cmwsIHN0cmxlbih1cmwpLCBO
VUxMKTsKKyAgICBtX3VybC5pbml0KEtVUkwoKSwgdXJsLCBzdHJsZW4odXJsKSwgMCk7CiAKICAg
ICAvLyBUaGUgb25lLWFyZ3VtZW50IGNvbnN0cnVjdG9ycyBzaG91bGQgbmV2ZXIgZ2VuZXJhdGUg
YSBOVUxMIHN0cmluZy4KICAgICAvLyBUaGlzIGlzIGEgZnVubnkgcXVpcmsgb2YgS1VSTC5jcHAg
KHByb2JhYmx5IGEgYnVnKSB3aGljaCB3ZSBwcmVzZXJ2ZS4KQEAgLTMxOCwxMiArMzQzLDEzIEBA
IEtVUkw6OktVUkwoY29uc3QgY2hhciAqdXJsKQogS1VSTDo6S1VSTChjb25zdCBTdHJpbmcmIHVy
bCkKIHsKICAgICBpZiAoIXVybC5pc051bGwoKSkKLSAgICAgICAgbV91cmwuaW5pdChLVVJMKCks
IHVybCwgTlVMTCk7CisgICAgICAgIG1fdXJsLmluaXQoS1VSTCgpLCB1cmwsIDApOwogICAgIGVs
c2UgewogICAgICAgICAvLyBXZWJDb3JlIGV4cGVjdHMgdXMgdG8gcHJlc2VydmUgdGhlIG51bGxu
ZXNzIG9mIHN0cmluZ3Mgd2hlbiB0aGlzCiAgICAgICAgIC8vIGNvbnN0cnVjdG9yIGlzIHVzZWQu
IEluIGFsbCBvdGhlciBjYXNlcywgaXQgZXhwZWN0cyBhIG5vbi1udWxsCiAgICAgICAgIC8vIGVt
cHR5IHN0cmluZywgd2hpY2ggaXMgd2hhdCBpbml0KCkgd2lsbCBjcmVhdGUuCiAgICAgICAgIG1f
dXJsLm1faXNWYWxpZCA9IGZhbHNlOworICAgICAgICBtX3VybC5tX3Byb3RvY29sSW5IVFRQRmFt
aWx5ID0gZmFsc2U7CiAgICAgfQogfQogCkBAIC0zMzEsNyArMzU3LDcgQEAgS1VSTDo6S1VSTChj
b25zdCBTdHJpbmcmIHVybCkKIC8vIFRoaXMgYXNzdW1lcyBVVEYtOCBlbmNvZGluZy4KIEtVUkw6
OktVUkwoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSkKIHsKLSAgICBt
X3VybC5pbml0KGJhc2UsIHJlbGF0aXZlLCBOVUxMKTsKKyAgICBtX3VybC5pbml0KGJhc2UsIHJl
bGF0aXZlLCAwKTsKIH0KIAogLy8gQ29uc3RydWN0cyBhIG5ldyBVUkwgZ2l2ZW4gYSBiYXNlIFVS
TCBhbmQgYSBwb3NzaWJseSByZWxhdGl2ZSBpbnB1dCBVUkwuCkBAIC0zNjUsNyArMzkxLDcgQEAg
S1VSTDo6S1VSTChDRlVSTFJlZikKIENGVVJMUmVmIEtVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiAw
OwogfQogI2VuZGlmCiAKQEAgLTM4Myw3ICs0MDksNyBAQCBib29sIEtVUkw6OmlzTnVsbCgpIGNv
bnN0CiAKIGJvb2wgS1VSTDo6aXNFbXB0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXJsLnV0
ZjhTdHJpbmcoKS5sZW5ndGgoKSA9PSAwOworICAgIHJldHVybiAhbV91cmwudXRmOFN0cmluZygp
Lmxlbmd0aCgpOwogfQogCiBib29sIEtVUkw6OmlzVmFsaWQoKSBjb25zdApAQCAtMzkxLDYgKzQx
NywxMSBAQCBib29sIEtVUkw6OmlzVmFsaWQoKSBjb25zdAogICAgIHJldHVybiBtX3VybC5tX2lz
VmFsaWQ7CiB9CiAKK2Jvb2wgS1VSTDo6cHJvdG9jb2xJbkhUVFBGYW1pbHkoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3VybC5tX3Byb3RvY29sSW5IVFRQRmFtaWx5OworfQorCiBib29sIEtVUkw6
Omhhc1BhdGgoKSBjb25zdAogewogICAgIC8vIE5vdGUgdGhhdCBodHRwOi8vd3d3Lmdvb2dsZS5j
b20vIiBoYXMgYSBwYXRoLCB0aGUgcGF0aCBpcyAiLyIuIFRoaXMgY2FuCkBAIC00ODksMTAgKzUy
MCwxMCBAQCBTdHJpbmcgS1VSTDo6cXVlcnkoKSBjb25zdAogICAgICAgICAvLyBLVVJMJ3MgcXVl
cnkoKSBpbmNsdWRlcyB0aGUgcXVlc3Rpb24gbWFyaywgZXZlbiB0aG91Z2ggdGhlIHJlZmVyZW5j
ZQogICAgICAgICAvLyBkb2Vzbid0LiBNb3ZlIHRoZSBxdWVyeSBjb21wb25lbnQgYmFja3dhcmRz
IG9uZSB0byBhY2NvdW50IGZvciBpdAogICAgICAgICAvLyAob3VyIGxpYnJhcnkgZG9lc24ndCBj
b3VudCB0aGUgcXVlc3Rpb24gbWFyaykuCi0gICAgICAgIHVybF9wYXJzZTo6Q29tcG9uZW50IHF1
ZXJ5X2NvbXAgPSBtX3VybC5tX3BhcnNlZC5xdWVyeTsKLSAgICAgICAgcXVlcnlfY29tcC5iZWdp
bi0tOwotICAgICAgICBxdWVyeV9jb21wLmxlbisrOwotICAgICAgICByZXR1cm4gbV91cmwuY29t
cG9uZW50U3RyaW5nKHF1ZXJ5X2NvbXApOworICAgICAgICB1cmxfcGFyc2U6OkNvbXBvbmVudCBx
dWVyeUNvbXAgPSBtX3VybC5tX3BhcnNlZC5xdWVyeTsKKyAgICAgICAgcXVlcnlDb21wLmJlZ2lu
LS07CisgICAgICAgIHF1ZXJ5Q29tcC5sZW4rKzsKKyAgICAgICAgcmV0dXJuIG1fdXJsLmNvbXBv
bmVudFN0cmluZyhxdWVyeUNvbXApOwogICAgIH0KIAogICAgIC8vIEJ1ZzogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDE1IHRoaXMgZnVuY3Rpb24gcmV0dXJucwpA
QCAtNzA4LDEzICs3MzksMTMgQEAgU3RyaW5nIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhjb25z
dCBTdHJpbmcmIHN0ciwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykKICAgICBDU3RyaW5n
IGNzdHIgPSBzdHIudXRmOCgpOwogCiAgICAgY29uc3QgY2hhciogaW5wdXQgPSBjc3RyLmRhdGEo
KTsKLSAgICBpbnQgaW5wdXRfbGVuZ3RoID0gY3N0ci5sZW5ndGgoKTsKKyAgICBpbnQgaW5wdXRM
ZW5ndGggPSBjc3RyLmxlbmd0aCgpOwogICAgIHVybF9jYW5vbjo6UmF3Q2Fub25PdXRwdXRUPGNo
YXI+IHVuZXNjYXBlZDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGlucHV0X2xlbmd0aDsgaSsr
KSB7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsgaSsrKSB7CiAgICAgICAg
IGlmIChpbnB1dFtpXSA9PSAnJScpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY2g7Ci0g
ICAgICAgICAgICBpZiAodXJsX2Nhbm9uOjpEZWNvZGVFc2NhcGVkKGlucHV0LCAmaSwgaW5wdXRf
bGVuZ3RoLCAmY2gpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoID09IDApIHsKKyAgICAgICAg
ICAgIGlmICh1cmxfY2Fub246OkRlY29kZUVzY2FwZWQoaW5wdXQsICZpLCBpbnB1dExlbmd0aCwg
JmNoKSkgeworICAgICAgICAgICAgICAgIGlmICghY2gpIHsKICAgICAgICAgICAgICAgICAgICAg
Ly8gTmV2ZXIgdW5lc2NhcGUgTlVMTHMuCiAgICAgICAgICAgICAgICAgICAgIHVuZXNjYXBlZC5w
dXNoX2JhY2soJyUnKTsKICAgICAgICAgICAgICAgICAgICAgdW5lc2NhcGVkLnB1c2hfYmFjaygn
MCcpOwpAQCAtNzQyLDE5ICs3NzMsMTkgQEAgU3RyaW5nIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNl
cyhjb25zdCBTdHJpbmcmIHN0ciwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIG5leHRfY2ggd2lsbCBwb2ludCB0byB0aGUgbGFz
dCBjaGFyYWN0ZXIgb2YgdGhlIGRlY29kZWQKICAgICAgICAgICAgIC8vIGNoYXJhY3Rlci4KLSAg
ICAgICAgICAgIGludCBuZXh0X2NoID0gaTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNvZGVfcG9p
bnQ7Ci0gICAgICAgICAgICBpZiAodXJsX2Nhbm9uOjpSZWFkVVRGQ2hhcih1bmVzY2FwZWQuZGF0
YSgpLCAmbmV4dF9jaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
ZXNjYXBlZC5sZW5ndGgoKSwgJmNvZGVfcG9pbnQpKSB7CisgICAgICAgICAgICBpbnQgbmV4dENo
YXJhY3RlciA9IGk7CisgICAgICAgICAgICB1bnNpZ25lZCBjb2RlUG9pbnQ7CisgICAgICAgICAg
ICBpZiAodXJsX2Nhbm9uOjpSZWFkVVRGQ2hhcih1bmVzY2FwZWQuZGF0YSgpLCAmbmV4dENoYXJh
Y3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZXNjYXBlZC5s
ZW5ndGgoKSwgJmNvZGVQb2ludCkpIHsKICAgICAgICAgICAgICAgICAvLyBWYWxpZCBVVEYtOCBj
aGFyYWN0ZXIsIGNvbnZlcnQgdG8gVVRGLTE2LgotICAgICAgICAgICAgICAgIHVybF9jYW5vbjo6
QXBwZW5kVVRGMTZWYWx1ZShjb2RlX3BvaW50LCAmdXRmMTYpOwotICAgICAgICAgICAgICAgIGkg
PSBuZXh0X2NoOworICAgICAgICAgICAgICAgIHVybF9jYW5vbjo6QXBwZW5kVVRGMTZWYWx1ZShj
b2RlUG9pbnQsICZ1dGYxNik7CisgICAgICAgICAgICAgICAgaSA9IG5leHRDaGFyYWN0ZXI7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIEtVUkwuY3BwIHN0cmlwcyBh
bnkgc2VxdWVuY2VzIHRoYXQgYXJlIG5vdCB2YWxpZCBVVEYtOC4gVGhpcwogICAgICAgICAgICAg
ICAgIC8vIHNvdW5kcyBzY2FyeS4gSW5zdGVhZCwgd2UganVzdCBrZWVwIHRob3NlIGludmFsaWQg
Y29kZQogICAgICAgICAgICAgICAgIC8vIHBvaW50cyBhbmQgcHJvbW90ZSB0byBVVEYtMTYuIFdl
IGNvcHkgYWxsIGNoYXJhY3RlcnMgZnJvbQogICAgICAgICAgICAgICAgIC8vIHRoZSBjdXJyZW50
IHBvc2l0aW9uIHRvIHRoZSBlbmQgb2YgdGhlIGlkZW50aWZpZWQgc3FldXFuY2UuCi0gICAgICAg
ICAgICAgICAgd2hpbGUgKGkgPCBuZXh0X2NoKSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKGkg
PCBuZXh0Q2hhcmFjdGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIHV0ZjE2LnB1c2hfYmFjayhz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih1bmVzY2FwZWQuYXQoaSkpKTsKICAgICAgICAgICAg
ICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgIH0KQEAgLTc3MCwxMyArODAxLDEzIEBAIGJv
b2wgS1VSTDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiBwcm90b2NvbCkgY29uc3QKIHsKICAgICBh
c3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7CiAgICAgaWYgKG1fdXJsLm1fcGFyc2VkLnNj
aGVtZS5sZW4gPD0gMCkKLSAgICAgICAgcmV0dXJuIHByb3RvY29sID09IE5VTEw7CisgICAgICAg
IHJldHVybiAhcHJvdG9jb2w7CiAgICAgcmV0dXJuIGxvd2VyQ2FzZUVxdWFsc0FTQ0lJKAogICAg
ICAgICBtX3VybC51dGY4U3RyaW5nKCkuZGF0YSgpICsgbV91cmwubV9wYXJzZWQuc2NoZW1lLmJl
Z2luLAogICAgICAgICBtX3VybC51dGY4U3RyaW5nKCkuZGF0YSgpICsgbV91cmwubV9wYXJzZWQu
c2NoZW1lLmVuZCgpLAogICAgICAgICBwcm90b2NvbCk7CiB9Ci0gCisKIGJvb2wgS1VSTDo6aXNM
b2NhbEZpbGUoKSBjb25zdAogewogICAgIHJldHVybiBwcm90b2NvbElzKCJmaWxlIik7CkBAIC03
OTgsMTEgKzgyOSwxMSBAQCBTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25z
dCBTdHJpbmcmIG5vdEVuY29kZWRTdHJpbmcpCiAgICAgICAgIG5vdEVuY29kZWRTdHJpbmcubGVu
Z3RoKCksCiAgICAgICAgIFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7CiAgICAg
Y29uc3QgY2hhciogaW5wdXQgPSB1dGY4LmRhdGEoKTsKLSAgICBpbnQgaW5wdXRfbGVuID0gdXRm
OC5sZW5ndGgoKTsKKyAgICBpbnQgaW5wdXRMZW5ndGggPSB1dGY4Lmxlbmd0aCgpOwogCiAgICAg
VmVjdG9yPGNoYXIsIDIwNDg+IGJ1ZmZlcjsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGlucHV0
X2xlbjsgaSsrKSB7Ci0gICAgICAgIGlmIChpbnB1dFtpXSA9PSAwKQorICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgaW5wdXRMZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIWlucHV0W2ldKQogICAg
ICAgICAgICAgYnVmZmVyLmFwcGVuZCgiJTAwIiwgMyk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGJ1ZmZlci5hcHBlbmQoaW5wdXRbaV0pOwpAQCAtODMyLDYgKzg2Myw3IEBAIHZvaWQgS1VS
TDo6aW52YWxpZGF0ZSgpCiAgICAgLy8gVGhpcyBpcyBvbmx5IGNhbGxlZCBmcm9tIHRoZSBjb25z
dHJ1Y3RvciBzbyByZXNldHRpbmcgdGhlIChhdXRvbWF0aWNhbGx5CiAgICAgLy8gaW5pdGlhbGl6
ZWQpIHN0cmluZyBhbmQgcGFyc2VkIHN0cnVjdHVyZSB3b3VsZCBiZSBhIHdhc3RlIG9mIHRpbWUu
CiAgICAgbV91cmwubV9pc1ZhbGlkID0gZmFsc2U7CisgICAgbV91cmwubV9wcm90b2NvbEluSFRU
UEZhbWlseSA9IGZhbHNlOwogfQogCiAvLyBFcXVhbCB1cCB0byByZWZlcmVuY2UgZnJhZ21lbnRz
LCBpZiBhbnkuCkBAIC04NDAsMTYgKzg3MiwxNiBAQCBib29sIGVxdWFsSWdub3JpbmdSZWYoY29u
c3QgS1VSTCYgYSwgY29uc3QgS1VSTCYgYikKICAgICAvLyBDb21wdXRlIHRoZSBsZW5ndGggb2Yg
ZWFjaCBVUkwgd2l0aG91dCBpdHMgcmVmLiBOb3RlIHRoYXQgdGhlIHJlZmVyZW5jZQogICAgIC8v
IGJlZ2luIChpZiBpdCBleGlzdHMpIHBvaW50cyB0byB0aGUgY2hhcmFjdGVyICphZnRlciogdGhl
ICcjJywgc28gd2UgbmVlZAogICAgIC8vIHRvIHN1YnRyYWN0IG9uZS4KLSAgICBpbnQgYV9sZW4g
PSBhLm1fdXJsLnV0ZjhTdHJpbmcoKS5sZW5ndGgoKTsKKyAgICBpbnQgYUxlbmd0aCA9IGEubV91
cmwudXRmOFN0cmluZygpLmxlbmd0aCgpOwogICAgIGlmIChhLm1fdXJsLm1fcGFyc2VkLnJlZi5s
ZW4gPj0gMCkKLSAgICAgICAgYV9sZW4gPSBhLm1fdXJsLm1fcGFyc2VkLnJlZi5iZWdpbiAtIDE7
CisgICAgICAgIGFMZW5ndGggPSBhLm1fdXJsLm1fcGFyc2VkLnJlZi5iZWdpbiAtIDE7CiAKLSAg
ICBpbnQgYl9sZW4gPSBiLm1fdXJsLnV0ZjhTdHJpbmcoKS5sZW5ndGgoKTsKKyAgICBpbnQgYkxl
bmd0aCA9IGIubV91cmwudXRmOFN0cmluZygpLmxlbmd0aCgpOwogICAgIGlmIChiLm1fdXJsLm1f
cGFyc2VkLnJlZi5sZW4gPj0gMCkKLSAgICAgICAgYl9sZW4gPSBiLm1fdXJsLm1fcGFyc2VkLnJl
Zi5iZWdpbiAtIDE7CisgICAgICAgIGJMZW5ndGggPSBiLm1fdXJsLm1fcGFyc2VkLnJlZi5iZWdp
biAtIDE7CiAKLSAgICByZXR1cm4gYV9sZW4gPT0gYl9sZW4KLSAgICAgICAgJiYgc3RybmNtcChh
Lm1fdXJsLnV0ZjhTdHJpbmcoKS5kYXRhKCksIGIubV91cmwudXRmOFN0cmluZygpLmRhdGEoKSwg
YV9sZW4pID09IDA7CisgICAgcmV0dXJuIGFMZW5ndGggPT0gYkxlbmd0aAorICAgICAgICAmJiAh
c3RybmNtcChhLm1fdXJsLnV0ZjhTdHJpbmcoKS5kYXRhKCksIGIubV91cmwudXRmOFN0cmluZygp
LmRhdGEoKSwgYUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIEtVUkw6Omhvc3RTdGFydCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGVQcml2YXRlLmggYi9XZWJD
b3JlL3BsYXRmb3JtL0tVUkxHb29nbGVQcml2YXRlLmgKaW5kZXggYWE5NTA1Ni4uZWYwOTNjMSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlUHJpdmF0ZS5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZVByaXZhdGUuaApAQCAtNTksOSArNTksOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGJlIE5VTEwgKHRoaXMgaW1wbGllcyBVVEYtOCku
IFRoZXNlIGluaXRpYWxpemVycyByZXF1aXJlIHRoYXQgdGhlIG9iamVjdAogICAgICAgICAvLyBo
YXMganVzdCBiZWVuIGNyZWF0ZWQgYW5kIHRoZSBzdHJpbmdzIGFyZSBOVUxMLiBEbyBub3QgY2Fs
bCBvbiBhbgogICAgICAgICAvLyBhbHJlYWR5LWNvbnN0cnVjdGVkIG9iamVjdC4KLSAgICAgICAg
dm9pZCBpbml0KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IGNoYXIqIHJlbCwgaW50IHJlbExlbiwK
KyAgICAgICAgdm9pZCBpbml0KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IGNoYXIqIHJlbCwgaW50
IHJlbExlbmd0aCwKICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHRFbmNvZGluZyogcXVlcnlF
bmNvZGluZyk7Ci0gICAgICAgIHZvaWQgaW5pdChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBVQ2hh
ciogcmVsLCBpbnQgcmVsTGVuLAorICAgICAgICB2b2lkIGluaXQoY29uc3QgS1VSTCYgYmFzZSwg
Y29uc3QgVUNoYXIqIHJlbCwgaW50IHJlbExlbmd0aCwKICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRleHRFbmNvZGluZyogcXVlcnlFbmNvZGluZyk7CiAKICAgICAgICAgLy8gRG9lcyBhIGRlZXAg
Y29weSB0byB0aGUgZ2l2ZW4gb3V0cHV0IG9iamVjdC4KQEAgLTc4LDggKzc4LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAvLyBTZXR0ZXJzIGZvciB0aGUgZGF0YS4gVXNpbmcgdGhl
IEFTQ0lJIHZlcnNpb24gd2hlbiB5b3Uga25vdyB0aGUKICAgICAgICAgLy8gZGF0YSBpcyBBU0NJ
SSB3aWxsIGJlIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50LiBUaGUgVVRGLTggdmVyc2lvbgogICAg
ICAgICAvLyB3aWxsIGFsd2F5cyBiZSBjb3JyZWN0IGlmIHRoZSBjYWxsZXIgaXMgdW5zdXJlLgot
ICAgICAgICB2b2lkIHNldFV0ZjgoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW4pOwotICAg
ICAgICB2b2lkIHNldEFzY2lpKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuKTsKKyAgICAg
ICAgdm9pZCBzZXRVdGY4KGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICAg
ICAgdm9pZCBzZXRBc2NpaShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CiAKICAg
ICAgICAgLy8gVE9ETyhicmV0dHcpIHdlIGNhbiBzdXBwb3J0IGFuIGFkZGl0aW9uYWwgb3B0aW1p
emF0aW9uLiAgTWFrZSB0aGlzCiAgICAgICAgIC8vIGJ1ZmZlciBzdXBwb3J0IGJvdGggb3B0aW5h
bCBTdHJpbmdzIGFuZCBVVEYtOCBkYXRhLiBUaGlzIHdheSwgd2UgY2FuIHVzZQpAQCAtOTIsOSAr
OTIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBTdHJpbmcmIHN0cmlu
ZygpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgbV9pc1ZhbGlkOworICAgICAgICBib29sIG1fcHJv
dG9jb2xJbkhUVFBGYW1pbHk7CiAgICAgICAgIHVybF9wYXJzZTo6UGFyc2VkIG1fcGFyc2VkOyAv
LyBJbmRleGVzIGludG8gdGhlIFVURi04IHZlcnNpb24gb2YgdGhlIHN0cmluZy4KIAogICAgIHBy
aXZhdGU6CisgICAgICAgIHZvaWQgaW5pdFByb3RvY29sSW5IVFRQRmFtaWx5KCk7CisKICAgICAg
ICAgQ1N0cmluZyBtX3V0Zjg7CiAKICAgICAgICAgLy8gU2V0IHRvIHRydWUgd2hlbiB0aGUgY2Fs
bGVyIHNldCB1cyB1c2luZyB0aGUgQVNDSUkgc2V0dGVyLiBXZSBjYW4K
</data>
<flag name="review"
          id="13258"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>