<?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>30242</bug_id>
          
          <creation_ts>2009-10-08 17:13:50 -0700</creation_ts>
          <short_desc>[XSSAuditor] IFrame JavaScript URLs that are URL-encoded twice can by bypass the XSSAuditor</short_desc>
          <delta_ts>2009-10-11 23:50:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://good.webblaze.org/dbates/xsstest.php?q=%3Ciframe%20src=%22javascript:%20%250Aalert(/XSS/)%22%3E%3C/iframe%3E</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>XSSAuditor</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>abarth</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>153578</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-08 17:13:50 -0700</bug_when>
    <thetext>JavaScript URLs are inconsistently encoded/decoded before they are passed to the XSSAuditor. Bug #29523 tried to address this by having the non-decoded JavaScript URL passed to the XSSAuditor, but upon further investigation this URL is still in an encoded form to bug #____.

For example:
&lt;iframe src=&quot;javascript: %250Aalert(/XSS/)&quot;&gt;&lt;/iframe&gt;

Note, the presence and position of the space character is critical in this example because of the &quot;fix&quot; introduced as part of bug #29523. Also, when url decoded &quot;%25&quot; is the &apos;%&apos; character.

And consider this as part of a URL (*), http://good.webblaze.org/dbates/xsstest.php?q=&lt;iframe src=&quot;javascript: %250Aalert(/XSS/)&quot;&gt;&lt;/iframe&gt;

The XSSAuditor::canEvaluateJavaScriptURL(const String&amp; code) is passed code = &quot;%20%0Aalert(/XSS/)&quot; (**).
Looking at the source code part of the JavaScript URL portion of the page URL (*) as decoded by XSSAuditor::findInRequest, we have: &quot;%0Aalert(/XSS/)&quot;.
(Actually, we also remove the character &apos;0&apos; as part of removing strings of the form &quot;\0&quot;  that can arise in PHP Magic Quoted code. So, the final decoded page URL used when comparing (**) is: &quot;%Aalert(/XSS)&quot;)

A variant of this example can contain a single-line JavaScript comment:
&lt;iframe src=&quot;javascript: //%250Aalert(/XSS/)&quot;&gt;&lt;/iframe&gt;
http://good.webblaze.org/dbates/xsstest.php?q=%3Ciframe%20src=%22javascript:%20//%250Aalert(/XSS/)%22%3E%3C/iframe%3E</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153581</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-08 17:24:31 -0700</bug_when>
    <thetext>#____ should be #30241
(In reply to comment #0)
&gt; JavaScript URLs are inconsistently encoded/decoded before they are passed to
&gt; the XSSAuditor. Bug #29523 tried to address this by having the non-decoded
&gt; JavaScript URL passed to the XSSAuditor, but upon further investigation this
&gt; URL is still in an encoded form to bug #____.
&gt; 
&gt; For example:
&gt; &lt;iframe src=&quot;javascript: %250Aalert(/XSS/)&quot;&gt;&lt;/iframe&gt;
&gt; 
&gt; Note, the presence and position of the space character is critical in this
&gt; example because of the &quot;fix&quot; introduced as part of bug #29523. Also, when url
&gt; decoded &quot;%25&quot; is the &apos;%&apos; character.
&gt; 
&gt; And consider this as part of a URL (*),
&gt; http://good.webblaze.org/dbates/xsstest.php?q=&lt;iframe src=&quot;javascript:
&gt; %250Aalert(/XSS/)&quot;&gt;&lt;/iframe&gt;
&gt; 
&gt; The XSSAuditor::canEvaluateJavaScriptURL(const String&amp; code) is passed code =
&gt; &quot;%20%0Aalert(/XSS/)&quot; (**).
&gt; Looking at the source code part of the JavaScript URL portion of the page URL
&gt; (*) as decoded by XSSAuditor::findInRequest, we have: &quot;%0Aalert(/XSS/)&quot;.
&gt; (Actually, we also remove the character &apos;0&apos; as part of removing strings of the
&gt; form &quot;\0&quot;  that can arise in PHP Magic Quoted code. So, the final decoded page
&gt; URL used when comparing (**) is: &quot;%Aalert(/XSS)&quot;)
&gt; 
&gt; A variant of this example can contain a single-line JavaScript comment:
&gt; &lt;iframe src=&quot;javascript: //%250Aalert(/XSS/)&quot;&gt;&lt;/iframe&gt;
&gt; http://good.webblaze.org/dbates/xsstest.php?q=%3Ciframe%20src=%22javascript:%20//%250Aalert(/XSS/)%22%3E%3C/iframe%3E</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153948</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-11 16:25:22 -0700</bug_when>
    <thetext>Removing dependency on bug #30241 as it may not be obvious or possible come up with a inverse routine to KURL::parse. Moreover, we can normalize the outgoing HTTP parameters by URL-decoding them twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153950</commentid>
    <comment_count>3</comment_count>
      <attachid>41007</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-11 16:28:39 -0700</bug_when>
    <thetext>Created attachment 41007
Patch with test cases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153970</commentid>
    <comment_count>4</comment_count>
      <attachid>41007</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-11 20:21:20 -0700</bug_when>
    <thetext>Comment on attachment 41007
Patch with test cases

You need to initialize m_decodeURLEscapeSequencesTwice in the constructor.

At some point we need to clean up all the boolean flags being passed around.

This coding step is getting nasty.  I wish there was a better way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153981</commentid>
    <comment_count>5</comment_count>
      <attachid>41015</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-11 20:56:29 -0700</bug_when>
    <thetext>Created attachment 41015
Patch with test cases

Here is an updated patch.

I agree the code is getting a bit messy with the booleans. Do you want me to try to clean this up now? Otherwise, I would suggest we do a clean up patch after we get this one and bug #27895 resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153984</commentid>
    <comment_count>6</comment_count>
      <attachid>41015</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-11 21:12:22 -0700</bug_when>
    <thetext>Comment on attachment 41015
Patch with test cases

Thanks Dan.  I agree that we should do a cleanup patch after fixing the inline event handler bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153993</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-11 23:12:18 -0700</bug_when>
    <thetext>I need to land this manually because of a conflict with the latest revision of FrameLoader.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153995</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-11 23:50:33 -0700</bug_when>
    <thetext>Committed r49434: &lt;http://trac.webkit.org/changeset/49434&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41007</attachid>
            <date>2009-10-11 16:28:39 -0700</date>
            <delta_ts>2009-10-11 20:56:29 -0700</delta_ts>
            <desc>Patch with test cases</desc>
            <filename>Bug30242.patch</filename>
            <type>text/plain</type>
            <size>15869</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTQyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMDktMTAtMTEgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDI0MgorICAgICAgICAKKyAg
ICAgICAgRml4ZXMgYW4gaXNzdWUgd2hlcmUgSmF2YVNjcmlwdCBVUkxzIHRoYXQgYXJlIFVSTC1l
bmNvZGVkIHR3aWNlIGNhbiAKKyAgICAgICAgYnlwYXNzIHRoZSBYU1NBdWRpdG9yLgorICAgICAg
ICAKKyAgICAgICAgSmF2YVNjcmlwdCBVUkxzIHRoYXQgYXJlIGNvbXBsZXRlZCBieSBtZXRob2Qg
RG9jdW1lbnQ6OmNvbXBsZXRlVVJMIGhhdmUgYWRkZWQKKyAgICAgICAgVVJMLWVuY29kZWQgY2hh
cmFjdGVycyBzdWNoIHRoYXQgYSBkaXJlY3QgY29tcGFyaXNvbiB3aXRoIHRoZSBVUkwtZGVjb2Rl
ZCAKKyAgICAgICAgb3V0Z29pbmcgSFRUUCBwYXJhbWV0ZXJzIGlzIG5vdCBzdWZmaWNpZW50LiBJ
bnN0ZWFkLCB0aGUgVVJMLWRlY29kZWQgb3V0Z29pbmcgCisgICAgICAgIEhUVFAgcGFyYW1ldGVy
cyBtdXN0IGJlIFVSTC1kZWNvZGVkIGJlZm9yZSBjb21wYXJpc29uLgorCisgICAgICAgIFRlc3Rz
OiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLXR3
aWNlLXVybC1lbmNvZGUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5jb2RlMi5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFz
Y3JpcHQtdXJsLXR3aWNlLXVybC1lbmNvZGUzLmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZXhlY3V0ZUlmSmF2
YVNjcmlwdFVSTCk6IE1vZGlmaWVkIHRvIHBhc3MgWFNTQXVkaXRvcgorICAgICAgICB0aGUgVVJM
LWRlY29kZWQgc291cmNlIGNvZGUgZm9yIHRoZSBKYXZhU2NyaXB0IFVSTC4KKyAgICAgICAgKiBw
YWdlL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNJbGxlZ2FsVVJJQ2hhcmFj
dGVyKTogTWlub3Igc3ludGFjdGljYWwgY2hhbmdlIHRvIHRoZSBjb21tZW50LgorICAgICAgICAo
V2ViQ29yZTo6WFNTQXVkaXRvcjo6Q2FjaGluZ1VSTENhbm9uaWNhbGl6ZXI6OmNhbm9uaWNhbGl6
ZVVSTCk6IEFkZGVkIAorICAgICAgICBwYXJhbWV0ZXIgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2Vz
VHdpY2UuCisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpjYW5FdmFsdWF0ZUphdmFTY3Jp
cHRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZGVjb2RlVVJMKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KTogRGl0dG8uCisg
ICAgICAgICogcGFnZS9YU1NBdWRpdG9yLmg6CisKIDIwMDktMTAtMTEgIEtldmluIE9sbGl2aWVy
ICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgd3ggYnVpbGQgZml4IGZvciB3
eE1hYyAyLjksIHVzZSB3eEdDIEFQSSBmb3IgbWVhc3VyaW5nIHRleHQuCkluZGV4OiBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCShyZXZpc2lvbiA0OTI5MSkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU3LDEwICs2NTcsMTAgQEAgYm9vbCBGcmFtZUxv
YWRlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTAogCiAgICAgY29uc3QgaW50IGphdmFzY3JpcHRT
Y2hlbWVMZW5ndGggPSBzaXplb2YoImphdmFzY3JpcHQ6IikgLSAxOwogCi0gICAgU3RyaW5nIHNj
cmlwdCA9IHVybC5zdHJpbmcoKS5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCk7Cisg
ICAgU3RyaW5nIHNjcmlwdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCku
c3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpKTsKICAgICBTY3JpcHRWYWx1ZSByZXN1
bHQ7CiAgICAgaWYgKG1fZnJhbWUtPnNjcmlwdCgpLT54c3NBdWRpdG9yKCktPmNhbkV2YWx1YXRl
SmF2YVNjcmlwdFVSTChzY3JpcHQpKQotICAgICAgICByZXN1bHQgPSBleGVjdXRlU2NyaXB0KGRl
Y29kZVVSTEVzY2FwZVNlcXVlbmNlcyhzY3JpcHQpLCB1c2VyR2VzdHVyZSk7CisgICAgICAgIHJl
c3VsdCA9IGV4ZWN1dGVTY3JpcHQoc2NyaXB0LCB1c2VyR2VzdHVyZSk7CiAKICAgICBTdHJpbmcg
c2NyaXB0UmVzdWx0OwogICAgIGlmICghcmVzdWx0LmdldFN0cmluZyhzY3JpcHRSZXN1bHQpKQpJ
bmRleDogV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9YU1NBdWRpdG9yLmNwcAkocmV2aXNpb24gNDkyOTEpCisrKyBXZWJDb3JlL3BhZ2UvWFNT
QXVkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDIwICs2NSwyMyBAQCBzdGF0aWMgYm9v
bCBpc0lsbGVnYWxVUklDaGFyYWN0ZXIoVUNoYXIgCiAgICAgLy8gaW4gYSB2YWxpZCBVUkk6ICcs
ICIsIDwsID4KICAgICAvLwogICAgIC8vIElmIHRoZSByZXF1ZXN0IGRvZXMgbm90IGNvbnRhaW4g
dGhlc2UgY2hhcmFjdGVycyB0aGVuIHdlIGNhbiBhc3N1bWUgdGhhdCBubyBpbmxpbmUgc2NyaXB0
cyBoYXZlIGJlZW4gaW5qZWN0ZWQgCi0gICAgLy8gaW50byByZXNwb25zZSBwYWdlLCBiZWNhdXNl
IGl0IGlzIGltcG9zc2libGUgdG8gd3JpdGUgYW4gaW5saW5lIHNjcmlwdCBvZiB0aGUgZm9ybSA8
c2NyaXB0Pi4uLjwvc2NyaXB0PgorICAgIC8vIGludG8gdGhlIHJlc3BvbnNlIHBhZ2UsIGJlY2F1
c2UgaXQgaXMgaW1wb3NzaWJsZSB0byB3cml0ZSBhbiBpbmxpbmUgc2NyaXB0IG9mIHRoZSBmb3Jt
IDxzY3JpcHQ+Li4uPC9zY3JpcHQ+CiAgICAgLy8gd2l0aG91dCAiPCIsICI+Ii4KICAgICByZXR1
cm4gKGMgPT0gJ1wnJyB8fCBjID09ICciJyB8fCBjID09ICc8JyB8fCBjID09ICc+Jyk7CiB9CiAK
LVN0cmluZyBYU1NBdWRpdG9yOjpDYWNoaW5nVVJMQ2Fub25pY2FsaXplcjo6Y2Fub25pY2FsaXpl
VVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29s
IGRlY29kZUVudGl0aWVzKQorU3RyaW5nIFhTU0F1ZGl0b3I6OkNhY2hpbmdVUkxDYW5vbmljYWxp
emVyOjpjYW5vbmljYWxpemVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFRleHRFbmNvZGlu
ZyYgZW5jb2RpbmcsIGJvb2wgZGVjb2RlRW50aXRpZXMsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNvZGVVUkxFc2Nh
cGVTZXF1ZW5jZXNUd2ljZSkKIHsKLSAgICBpZiAoZGVjb2RlRW50aXRpZXMgPT0gbV9kZWNvZGVF
bnRpdGllcyAmJiBlbmNvZGluZyA9PSBtX2VuY29kaW5nICYmIHVybCA9PSBtX2lucHV0VVJMKQor
ICAgIGlmIChkZWNvZGVFbnRpdGllcyA9PSBtX2RlY29kZUVudGl0aWVzICYmIGRlY29kZVVSTEVz
Y2FwZVNlcXVlbmNlc1R3aWNlID09IG1fZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UgCisg
ICAgICAgICYmIGVuY29kaW5nID09IG1fZW5jb2RpbmcgJiYgdXJsID09IG1faW5wdXRVUkwpCiAg
ICAgICAgIHJldHVybiBtX2NhY2hlZENhbm9uaWNhbGl6ZWRVUkw7CiAKLSAgICBtX2NhY2hlZENh
bm9uaWNhbGl6ZWRVUkwgPSBjYW5vbmljYWxpemUoZGVjb2RlVVJMKHVybCwgZW5jb2RpbmcsIGRl
Y29kZUVudGl0aWVzKSk7CisgICAgbV9jYWNoZWRDYW5vbmljYWxpemVkVVJMID0gY2Fub25pY2Fs
aXplKGRlY29kZVVSTCh1cmwsIGVuY29kaW5nLCBkZWNvZGVFbnRpdGllcywgZGVjb2RlVVJMRXNj
YXBlU2VxdWVuY2VzVHdpY2UpKTsKICAgICBtX2lucHV0VVJMID0gdXJsOwogICAgIG1fZW5jb2Rp
bmcgPSBlbmNvZGluZzsKICAgICBtX2RlY29kZUVudGl0aWVzID0gZGVjb2RlRW50aXRpZXM7Cisg
ICAgbV9kZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlc1R3aWNlOwogICAgIHJldHVybiBtX2NhY2hlZENhbm9uaWNhbGl6ZWRVUkw7CiB9CiAKQEAg
LTExNSw3ICsxMTgsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmNhbkV2YWx1YXRlSmF2YVNjcmlwdFVS
CiAgICAgaWYgKCFpc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAo
ZmluZEluUmVxdWVzdChjb2RlKSkgeworICAgIGlmIChmaW5kSW5SZXF1ZXN0KGNvZGUsIHRydWUs
IGZhbHNlLCB0cnVlKSkgewogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29u
c29sZU1lc3NhZ2UsICgiUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNv
dXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC5cbiIpKTsKICAgICAgICAg
bV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UsIDEs
IFN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTgyLDcgKzE4NSw3IEBAIFN0
cmluZyBYU1NBdWRpdG9yOjpjYW5vbmljYWxpemUoY29uc3QgU3QKICAgICByZXR1cm4gcmVzdWx0
LnJlbW92ZUNoYXJhY3RlcnMoJmlzTm9uQ2Fub25pY2FsQ2hhcmFjdGVyKTsKIH0KIAotU3RyaW5n
IFhTU0F1ZGl0b3I6OmRlY29kZVVSTChjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgVGV4dEVu
Y29kaW5nJiBlbmNvZGluZywgYm9vbCBkZWNvZGVFbnRpdGllcykKK1N0cmluZyBYU1NBdWRpdG9y
OjpkZWNvZGVVUkwoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5j
b2RpbmcsIGJvb2wgZGVjb2RlRW50aXRpZXMsIGJvb2wgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2Vz
VHdpY2UpCiB7CiAgICAgU3RyaW5nIHJlc3VsdDsKICAgICBTdHJpbmcgdXJsID0gc3RyaW5nOwpA
QCAtMTkzLDYgKzE5NiwxMyBAQCBTdHJpbmcgWFNTQXVkaXRvcjo6ZGVjb2RlVVJMKGNvbnN0IFN0
cmluCiAgICAgU3RyaW5nIGRlY29kZWRSZXN1bHQgPSBlbmNvZGluZy5kZWNvZGUodXRmOFVybC5k
YXRhKCksIHV0ZjhVcmwubGVuZ3RoKCkpOwogICAgIGlmICghZGVjb2RlZFJlc3VsdC5pc0VtcHR5
KCkpCiAgICAgICAgIHJlc3VsdCA9IGRlY29kZWRSZXN1bHQ7CisgICAgaWYgKGRlY29kZVVSTEVz
Y2FwZVNlcXVlbmNlc1R3aWNlKSB7CisgICAgICAgIHJlc3VsdCA9IGRlY29kZVVSTEVzY2FwZVNl
cXVlbmNlcyhyZXN1bHQpOworICAgICAgICB1dGY4VXJsID0gcmVzdWx0LnV0ZjgoKTsKKyAgICAg
ICAgZGVjb2RlZFJlc3VsdCA9IGVuY29kaW5nLmRlY29kZSh1dGY4VXJsLmRhdGEoKSwgdXRmOFVy
bC5sZW5ndGgoKSk7CisgICAgICAgIGlmICghZGVjb2RlZFJlc3VsdC5pc0VtcHR5KCkpCisgICAg
ICAgICAgICByZXN1bHQgPSBkZWNvZGVkUmVzdWx0OworICAgIH0KICAgICBpZiAoZGVjb2RlRW50
aXRpZXMpCiAgICAgICAgIHJlc3VsdCA9IGRlY29kZUhUTUxFbnRpdGllcyhyZXN1bHQpOwogICAg
IHJldHVybiByZXN1bHQ7CkBAIC0yMzUsMTggKzI0NSwyMCBAQCBTdHJpbmcgWFNTQXVkaXRvcjo6
ZGVjb2RlSFRNTEVudGl0aWVzKGNvCiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsK
IH0KIAotYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBib29sIGRlY29kZUVudGl0aWVzLCBib29sIGFsbG93UmVxdWVzdElmTm9JbGxlZ2FsVVJJQ2hh
cmFjdGVycykgY29uc3QKK2Jvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdChjb25zdCBTdHJp
bmcmIHN0cmluZywgYm9vbCBkZWNvZGVFbnRpdGllcywgYm9vbCBhbGxvd1JlcXVlc3RJZk5vSWxs
ZWdhbFVSSUNoYXJhY3RlcnMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UpIGNvbnN0CiB7CiAgICAgYm9vbCByZXN1bHQg
PSBmYWxzZTsKICAgICBGcmFtZSogcGFyZW50RnJhbWUgPSBtX2ZyYW1lLT50cmVlKCktPnBhcmVu
dCgpOwogICAgIGlmIChwYXJlbnRGcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSA9
PSBibGFua1VSTCgpKQotICAgICAgICByZXN1bHQgPSBmaW5kSW5SZXF1ZXN0KHBhcmVudEZyYW1l
LCBzdHJpbmcsIGRlY29kZUVudGl0aWVzLCBhbGxvd1JlcXVlc3RJZk5vSWxsZWdhbFVSSUNoYXJh
Y3RlcnMpOworICAgICAgICByZXN1bHQgPSBmaW5kSW5SZXF1ZXN0KHBhcmVudEZyYW1lLCBzdHJp
bmcsIGRlY29kZUVudGl0aWVzLCBhbGxvd1JlcXVlc3RJZk5vSWxsZWdhbFVSSUNoYXJhY3RlcnMs
IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNlKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAg
ICAgcmVzdWx0ID0gZmluZEluUmVxdWVzdChtX2ZyYW1lLCBzdHJpbmcsIGRlY29kZUVudGl0aWVz
LCBhbGxvd1JlcXVlc3RJZk5vSWxsZWdhbFVSSUNoYXJhY3RlcnMpOworICAgICAgICByZXN1bHQg
PSBmaW5kSW5SZXF1ZXN0KG1fZnJhbWUsIHN0cmluZywgZGVjb2RlRW50aXRpZXMsIGFsbG93UmVx
dWVzdElmTm9JbGxlZ2FsVVJJQ2hhcmFjdGVycywgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdp
Y2UpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVx
dWVzdChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGRlY29kZUVudGl0
aWVzLCBib29sIGFsbG93UmVxdWVzdElmTm9JbGxlZ2FsVVJJQ2hhcmFjdGVycykgY29uc3QKK2Jv
b2wgWFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBib29sIGRlY29kZUVudGl0aWVzLCBib29sIGFsbG93UmVxdWVzdElmTm9JbGxlZ2Fs
VVJJQ2hhcmFjdGVycywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNv
ZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZnJhbWUtPmRv
Y3VtZW50KCkpOwogCkBAIC0yODUsNyArMjk3LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5S
ZXF1ZXN0KEZyYW1lKiBmcgogCiAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA8IHBhZ2VVUkwubGVu
Z3RoKCkpIHsKICAgICAgICAgLy8gVGhlIHN0cmluZyBjYW4gYWN0dWFsbHkgZml0IGluc2lkZSB0
aGUgcGFnZVVSTC4KLSAgICAgICAgU3RyaW5nIGRlY29kZWRQYWdlVVJMID0gbV9jYWNoZS5jYW5v
bmljYWxpemVVUkwocGFnZVVSTCwgZnJhbWUtPmRvY3VtZW50KCktPmRlY29kZXIoKS0+ZW5jb2Rp
bmcoKSwgZGVjb2RlRW50aXRpZXMpOworICAgICAgICBTdHJpbmcgZGVjb2RlZFBhZ2VVUkwgPSBt
X2NhY2hlLmNhbm9uaWNhbGl6ZVVSTChwYWdlVVJMLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2Rl
cigpLT5lbmNvZGluZygpLCBkZWNvZGVFbnRpdGllcywgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2Vz
VHdpY2UpOwogCiAgICAgICAgIGlmIChhbGxvd1JlcXVlc3RJZk5vSWxsZWdhbFVSSUNoYXJhY3Rl
cnMgJiYgKCFmb3JtRGF0YU9iaiB8fCBmb3JtRGF0YU9iai0+aXNFbXB0eSgpKSAKICAgICAgICAg
ICAgICYmIGRlY29kZWRQYWdlVVJMLmZpbmQoJmlzSWxsZWdhbFVSSUNoYXJhY3RlciwgMCkgPT0g
LTEpCkBAIC0zMDIsNyArMzE0LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KEZy
YW1lKiBmcgogICAgICAgICAgICAgLy8gdGhlIHVybC1lbmNvZGVkIFBPU1QgZGF0YSBiZWNhdXNl
IHRoZSBsZW5ndGggb2YgdGhlIHVybC1kZWNvZGVkCiAgICAgICAgICAgICAvLyBjb2RlIGlzIGxl
c3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSB1cmwtZW5jb2RlZAogICAgICAg
ICAgICAgLy8gc3RyaW5nLgotICAgICAgICAgICAgU3RyaW5nIGRlY29kZWRGb3JtRGF0YSA9IG1f
Y2FjaGUuY2Fub25pY2FsaXplVVJMKGZvcm1EYXRhLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2Rl
cigpLT5lbmNvZGluZygpLCBkZWNvZGVFbnRpdGllcyk7CisgICAgICAgICAgICBTdHJpbmcgZGVj
b2RlZEZvcm1EYXRhID0gbV9jYWNoZS5jYW5vbmljYWxpemVVUkwoZm9ybURhdGEsIGZyYW1lLT5k
b2N1bWVudCgpLT5kZWNvZGVyKCktPmVuY29kaW5nKCksIGRlY29kZUVudGl0aWVzLCBkZWNvZGVV
UkxFc2NhcGVTZXF1ZW5jZXNUd2ljZSk7CiAgICAgICAgICAgICBpZiAoZGVjb2RlZEZvcm1EYXRh
LmZpbmQoY2Fub25pY2FsaXplZFN0cmluZywgMCwgZmFsc2UpICE9IC0xKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOyAgLy8gV2UgZm91bmQgdGhlIHN0cmluZyBpbiB0aGUgUE9TVCBkYXRh
LgogICAgICAgICB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmgJKHJldmlzaW9uIDQ5MjkxKQorKysgV2ViQ29y
ZS9wYWdlL1hTU0F1ZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDI0ICsxMDMsMjkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAg
ICAgIENhY2hpbmdVUkxDYW5vbmljYWxpemVyKCkgOiBtX2RlY29kZUVudGl0aWVzKGZhbHNlKSB7
IH0KLSAgICAgICAgICAgIFN0cmluZyBjYW5vbmljYWxpemVVUkwoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGJvb2wgZGVjb2RlRW50aXRpZXMpOworICAg
ICAgICAgICAgU3RyaW5nIGNhbm9uaWNhbGl6ZVVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
VGV4dEVuY29kaW5nJiBlbmNvZGluZywgYm9vbCBkZWNvZGVFbnRpdGllcywgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdp
Y2UgPSBmYWxzZSk7CiAKICAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZSBwYXJh
bWV0ZXJzIHdlIHdlcmUgY2FsbGVkIHdpdGggbGFzdC4KICAgICAgICAgICAgIFN0cmluZyBtX2lu
cHV0VVJMOwogICAgICAgICAgICAgVGV4dEVuY29kaW5nIG1fZW5jb2Rpbmc7CiAgICAgICAgICAg
ICBib29sIG1fZGVjb2RlRW50aXRpZXM7CisgICAgICAgICAgICBib29sIG1fZGVjb2RlVVJMRXNj
YXBlU2VxdWVuY2VzVHdpY2U7CiAKICAgICAgICAgICAgIC8vIFRoZSBjYWNoZWQgcmVzdWx0Lgog
ICAgICAgICAgICAgU3RyaW5nIG1fY2FjaGVkQ2Fub25pY2FsaXplZFVSTDsKICAgICAgICAgfTsK
IAogICAgICAgICBzdGF0aWMgU3RyaW5nIGNhbm9uaWNhbGl6ZShjb25zdCBTdHJpbmcmKTsKLSAg
ICAgICAgc3RhdGljIFN0cmluZyBkZWNvZGVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFRl
eHRFbmNvZGluZyYgZW5jb2RpbmcsIGJvb2wgZGVjb2RlRW50aXRpZXMpOworICAgICAgICBzdGF0
aWMgU3RyaW5nIGRlY29kZVVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dEVuY29kaW5n
JiBlbmNvZGluZywgYm9vbCBkZWNvZGVFbnRpdGllcywgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UgPSBmYWxzZSk7CiAg
ICAgICAgIHN0YXRpYyBTdHJpbmcgZGVjb2RlSFRNTEVudGl0aWVzKGNvbnN0IFN0cmluZyYsIGJv
b2wgbGVhdmVVbmRlY29kYWJsZUVudGl0aWVzVW50b3VjaGVkID0gdHJ1ZSk7CiAKLSAgICAgICAg
Ym9vbCBmaW5kSW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYsIGJvb2wgZGVjb2RlRW50aXRpZXMgPSB0
cnVlLCBib29sIGFsbG93UmVxdWVzdElmTm9JbGxlZ2FsVVJJQ2hhcmFjdGVycyA9IGZhbHNlKSBj
b25zdDsKLSAgICAgICAgYm9vbCBmaW5kSW5SZXF1ZXN0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCBkZWNvZGVFbnRpdGllcyA9IHRydWUsIGJvb2wgYWxsb3dSZXF1ZXN0SWZOb0lsbGVnYWxV
UklDaGFyYWN0ZXJzID0gZmFsc2UpIGNvbnN0OworICAgICAgICBib29sIGZpbmRJblJlcXVlc3Qo
Y29uc3QgU3RyaW5nJiwgYm9vbCBkZWNvZGVFbnRpdGllcyA9IHRydWUsIGJvb2wgYWxsb3dSZXF1
ZXN0SWZOb0lsbGVnYWxVUklDaGFyYWN0ZXJzID0gZmFsc2UsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZSA9IGZhbHNlKSBjb25z
dDsKKyAgICAgICAgYm9vbCBmaW5kSW5SZXF1ZXN0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiwgYm9v
bCBkZWNvZGVFbnRpdGllcyA9IHRydWUsIGJvb2wgYWxsb3dSZXF1ZXN0SWZOb0lsbGVnYWxVUklD
aGFyYWN0ZXJzID0gZmFsc2UsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNv
ZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZSA9IGZhbHNlKSBjb25zdDsKIAogICAgICAgICAvLyBU
aGUgZnJhbWUgdG8gYXVkaXQuCiAgICAgICAgIEZyYW1lKiBtX2ZyYW1lOwpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gNDk0MjUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOCBAQAorMjAwOS0xMC0xMSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMjQyCisgICAgICAgIAorICAg
ICAgICBUZXN0cyB0aGF0IEphdmFTY3JpcHQgVVJMcyB0aGF0IGFyZSB0d2ljZSBVUkwgZW5jb2Rl
ZCBkbyBub3QgYnlwYXNzIHRoZSBYU1NBdWRpdG9yLgorCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5jb2Rl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NB
dWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5jb2RlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9paWZyYW1lLWphdmFz
Y3JpcHQtdXJsLXR3aWNlLXVybC1lbmNvZGUyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10
d2ljZS11cmwtZW5jb2RlMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IvaWlmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5jb2RlMy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVk
aXRvci9pZnJhbWUtamF2YXNjcmlwdC11cmwtdHdpY2UtdXJsLWVuY29kZTMuaHRtbDogQWRkZWQu
CisKIDIwMDktMTAtMTAgIENhbWVyb24gTWNDb3JtYWNrICA8Y2FtQG1jYy5pZC5hdT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5j
b2RlMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5jb2Rl
Mi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLXR3aWNlLXVybC1lbmNvZGUy
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJj
ZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJs
LXR3aWNlLXVybC1lbmNvZGUyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwt
ZW5jb2RlMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5jb2RlMi5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8aWZyYW1lIHNyYz0naHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hz
c0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/cT08aWZyYW1lIHNyYz0iamF2YXNj
cmlwdDogLy8lMjUwQWFsZXJ0KC9YU1MvKSI+PC9pZnJhbWU+Jz4KKzwvaWZyYW1lPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5jb2RlMy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5jb2RlMy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
aWZyYW1lLWphdmFzY3JpcHQtdXJsLXR3aWNlLXVybC1lbmNvZGUzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNl
ZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBm
b3VuZCB3aXRoaW4gcmVxdWVzdC4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLXR3aWNlLXVybC1lbmNvZGUz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NB
dWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5jb2RlMy5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lm
cmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5jb2RlMy5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRYU1NBdWRp
dG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1l
IHNyYz0naHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2Vz
L2VjaG8taW50ZXJ0YWcucGw/cT08aWZyYW1lIHNyYz0iamF2YXNjcmlwdDovLyUyNTBBYWxlcnQo
L1hTUy8pIj48L2lmcmFtZT4nPgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3Jp
cHQtdXJsLXR3aWNlLXVybC1lbmNvZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJhbWUtamF2YXNjcmlwdC11
cmwtdHdpY2UtdXJsLWVuY29kZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJs
LXR3aWNlLXVybC1lbmNvZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMg
QEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2Ny
aXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0Lgor
CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJh
bWUtamF2YXNjcmlwdC11cmwtdHdpY2UtdXJsLWVuY29kZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJhbWUtamF2YXNjcmlw
dC11cmwtdHdpY2UtdXJsLWVuY29kZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2lj
ZS11cmwtZW5jb2RlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSdodHRwOi8vbG9jYWxob3N0Ojgw
MDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbD9xPTxpZnJh
bWUgc3JjPSJqYXZhc2NyaXB0OiAlMjUwQWFsZXJ0KC9YU1MvKSI+PC9pZnJhbWU+Jz4KKzwvaWZy
YW1lPgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="22312"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41015</attachid>
            <date>2009-10-11 20:56:29 -0700</date>
            <delta_ts>2009-10-11 21:12:22 -0700</delta_ts>
            <desc>Patch with test cases</desc>
            <filename>Bug30242_1.patch</filename>
            <type>text/plain</type>
            <size>16055</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTQzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMDktMTAtMTEgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDI0MgorICAgICAgICAKKyAg
ICAgICAgRml4ZXMgYW4gaXNzdWUgd2hlcmUgSmF2YVNjcmlwdCBVUkxzIHRoYXQgYXJlIFVSTC1l
bmNvZGVkIHR3aWNlIGNhbiAKKyAgICAgICAgYnlwYXNzIHRoZSBYU1NBdWRpdG9yLgorICAgICAg
ICAKKyAgICAgICAgSmF2YVNjcmlwdCBVUkxzIHRoYXQgYXJlIGNvbXBsZXRlZCBieSBtZXRob2Qg
RG9jdW1lbnQ6OmNvbXBsZXRlVVJMIGhhdmUgYWRkZWQKKyAgICAgICAgVVJMLWVuY29kZWQgY2hh
cmFjdGVycyBzdWNoIHRoYXQgYSBkaXJlY3QgY29tcGFyaXNvbiB3aXRoIHRoZSBVUkwtZGVjb2Rl
ZCAKKyAgICAgICAgb3V0Z29pbmcgSFRUUCBwYXJhbWV0ZXJzIGlzIG5vdCBzdWZmaWNpZW50LiBJ
bnN0ZWFkLCB0aGUgVVJMLWRlY29kZWQgb3V0Z29pbmcgCisgICAgICAgIEhUVFAgcGFyYW1ldGVy
cyBtdXN0IGJlIFVSTC1kZWNvZGVkIGJlZm9yZSBjb21wYXJpc29uLgorCisgICAgICAgIFRlc3Rz
OiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLXR3
aWNlLXVybC1lbmNvZGUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5jb2RlMi5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFz
Y3JpcHQtdXJsLXR3aWNlLXVybC1lbmNvZGUzLmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZXhlY3V0ZUlmSmF2
YVNjcmlwdFVSTCk6IE1vZGlmaWVkIHRvIHBhc3MgWFNTQXVkaXRvcgorICAgICAgICB0aGUgVVJM
LWRlY29kZWQgc291cmNlIGNvZGUgZm9yIHRoZSBKYXZhU2NyaXB0IFVSTC4KKyAgICAgICAgKiBw
YWdlL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNJbGxlZ2FsVVJJQ2hhcmFj
dGVyKTogTWlub3Igc3ludGFjdGljYWwgY2hhbmdlIHRvIHRoZSBjb21tZW50LgorICAgICAgICAo
V2ViQ29yZTo6WFNTQXVkaXRvcjo6Q2FjaGluZ1VSTENhbm9uaWNhbGl6ZXI6OmNhbm9uaWNhbGl6
ZVVSTCk6IEFkZGVkIAorICAgICAgICBwYXJhbWV0ZXIgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2Vz
VHdpY2UuCisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpjYW5FdmFsdWF0ZUphdmFTY3Jp
cHRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZGVjb2RlVVJMKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KTogRGl0dG8uCisg
ICAgICAgICogcGFnZS9YU1NBdWRpdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9y
OjpDYWNoaW5nVVJMQ2Fub25pY2FsaXplcjo6Q2FjaGluZ1VSTENhbm9uaWNhbGl6ZXIpOiBEaXR0
by4KKwogMjAwOS0xMC0xMSAgRG9taW5pYyBDb29uZXkgIDxkb21pbmljY0Bnb29nbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCShyZXZpc2lvbiA0OTI5MSkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjU3LDEwICs2NTcsMTAgQEAgYm9vbCBGcmFtZUxvYWRlcjo6ZXhl
Y3V0ZUlmSmF2YVNjcmlwdFVSTAogCiAgICAgY29uc3QgaW50IGphdmFzY3JpcHRTY2hlbWVMZW5n
dGggPSBzaXplb2YoImphdmFzY3JpcHQ6IikgLSAxOwogCi0gICAgU3RyaW5nIHNjcmlwdCA9IHVy
bC5zdHJpbmcoKS5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCk7CisgICAgU3RyaW5n
IHNjcmlwdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkuc3Vic3RyaW5n
KGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpKTsKICAgICBTY3JpcHRWYWx1ZSByZXN1bHQ7CiAgICAg
aWYgKG1fZnJhbWUtPnNjcmlwdCgpLT54c3NBdWRpdG9yKCktPmNhbkV2YWx1YXRlSmF2YVNjcmlw
dFVSTChzY3JpcHQpKQotICAgICAgICByZXN1bHQgPSBleGVjdXRlU2NyaXB0KGRlY29kZVVSTEVz
Y2FwZVNlcXVlbmNlcyhzY3JpcHQpLCB1c2VyR2VzdHVyZSk7CisgICAgICAgIHJlc3VsdCA9IGV4
ZWN1dGVTY3JpcHQoc2NyaXB0LCB1c2VyR2VzdHVyZSk7CiAKICAgICBTdHJpbmcgc2NyaXB0UmVz
dWx0OwogICAgIGlmICghcmVzdWx0LmdldFN0cmluZyhzY3JpcHRSZXN1bHQpKQpJbmRleDogV2Vi
Q29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9YU1NB
dWRpdG9yLmNwcAkocmV2aXNpb24gNDkyOTEpCisrKyBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDIwICs2NSwyMyBAQCBzdGF0aWMgYm9vbCBpc0lsbGVn
YWxVUklDaGFyYWN0ZXIoVUNoYXIgCiAgICAgLy8gaW4gYSB2YWxpZCBVUkk6ICcsICIsIDwsID4K
ICAgICAvLwogICAgIC8vIElmIHRoZSByZXF1ZXN0IGRvZXMgbm90IGNvbnRhaW4gdGhlc2UgY2hh
cmFjdGVycyB0aGVuIHdlIGNhbiBhc3N1bWUgdGhhdCBubyBpbmxpbmUgc2NyaXB0cyBoYXZlIGJl
ZW4gaW5qZWN0ZWQgCi0gICAgLy8gaW50byByZXNwb25zZSBwYWdlLCBiZWNhdXNlIGl0IGlzIGlt
cG9zc2libGUgdG8gd3JpdGUgYW4gaW5saW5lIHNjcmlwdCBvZiB0aGUgZm9ybSA8c2NyaXB0Pi4u
Ljwvc2NyaXB0PgorICAgIC8vIGludG8gdGhlIHJlc3BvbnNlIHBhZ2UsIGJlY2F1c2UgaXQgaXMg
aW1wb3NzaWJsZSB0byB3cml0ZSBhbiBpbmxpbmUgc2NyaXB0IG9mIHRoZSBmb3JtIDxzY3JpcHQ+
Li4uPC9zY3JpcHQ+CiAgICAgLy8gd2l0aG91dCAiPCIsICI+Ii4KICAgICByZXR1cm4gKGMgPT0g
J1wnJyB8fCBjID09ICciJyB8fCBjID09ICc8JyB8fCBjID09ICc+Jyk7CiB9CiAKLVN0cmluZyBY
U1NBdWRpdG9yOjpDYWNoaW5nVVJMQ2Fub25pY2FsaXplcjo6Y2Fub25pY2FsaXplVVJMKGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGRlY29kZUVu
dGl0aWVzKQorU3RyaW5nIFhTU0F1ZGl0b3I6OkNhY2hpbmdVUkxDYW5vbmljYWxpemVyOjpjYW5v
bmljYWxpemVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2Rp
bmcsIGJvb2wgZGVjb2RlRW50aXRpZXMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXNUd2ljZSkKIHsKLSAgICBpZiAoZGVjb2RlRW50aXRpZXMgPT0gbV9kZWNvZGVFbnRpdGllcyAm
JiBlbmNvZGluZyA9PSBtX2VuY29kaW5nICYmIHVybCA9PSBtX2lucHV0VVJMKQorICAgIGlmIChk
ZWNvZGVFbnRpdGllcyA9PSBtX2RlY29kZUVudGl0aWVzICYmIGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlc1R3aWNlID09IG1fZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UgCisgICAgICAgICYm
IGVuY29kaW5nID09IG1fZW5jb2RpbmcgJiYgdXJsID09IG1faW5wdXRVUkwpCiAgICAgICAgIHJl
dHVybiBtX2NhY2hlZENhbm9uaWNhbGl6ZWRVUkw7CiAKLSAgICBtX2NhY2hlZENhbm9uaWNhbGl6
ZWRVUkwgPSBjYW5vbmljYWxpemUoZGVjb2RlVVJMKHVybCwgZW5jb2RpbmcsIGRlY29kZUVudGl0
aWVzKSk7CisgICAgbV9jYWNoZWRDYW5vbmljYWxpemVkVVJMID0gY2Fub25pY2FsaXplKGRlY29k
ZVVSTCh1cmwsIGVuY29kaW5nLCBkZWNvZGVFbnRpdGllcywgZGVjb2RlVVJMRXNjYXBlU2VxdWVu
Y2VzVHdpY2UpKTsKICAgICBtX2lucHV0VVJMID0gdXJsOwogICAgIG1fZW5jb2RpbmcgPSBlbmNv
ZGluZzsKICAgICBtX2RlY29kZUVudGl0aWVzID0gZGVjb2RlRW50aXRpZXM7CisgICAgbV9kZWNv
ZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNl
OwogICAgIHJldHVybiBtX2NhY2hlZENhbm9uaWNhbGl6ZWRVUkw7CiB9CiAKQEAgLTExNSw3ICsx
MTgsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmNhbkV2YWx1YXRlSmF2YVNjcmlwdFVSCiAgICAgaWYg
KCFpc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoZmluZEluUmVx
dWVzdChjb2RlKSkgeworICAgIGlmIChmaW5kSW5SZXF1ZXN0KGNvZGUsIHRydWUsIGZhbHNlLCB0
cnVlKSkgewogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3Nh
Z2UsICgiUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2Rl
IG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC5cbiIpKTsKICAgICAgICAgbV9mcmFtZS0+
ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UsIDEsIFN0cmluZygp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTgyLDcgKzE4NSw3IEBAIFN0cmluZyBYU1NB
dWRpdG9yOjpjYW5vbmljYWxpemUoY29uc3QgU3QKICAgICByZXR1cm4gcmVzdWx0LnJlbW92ZUNo
YXJhY3RlcnMoJmlzTm9uQ2Fub25pY2FsQ2hhcmFjdGVyKTsKIH0KIAotU3RyaW5nIFhTU0F1ZGl0
b3I6OmRlY29kZVVSTChjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgVGV4dEVuY29kaW5nJiBl
bmNvZGluZywgYm9vbCBkZWNvZGVFbnRpdGllcykKK1N0cmluZyBYU1NBdWRpdG9yOjpkZWNvZGVV
UkwoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGJv
b2wgZGVjb2RlRW50aXRpZXMsIGJvb2wgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UpCiB7
CiAgICAgU3RyaW5nIHJlc3VsdDsKICAgICBTdHJpbmcgdXJsID0gc3RyaW5nOwpAQCAtMTkzLDYg
KzE5NiwxMyBAQCBTdHJpbmcgWFNTQXVkaXRvcjo6ZGVjb2RlVVJMKGNvbnN0IFN0cmluCiAgICAg
U3RyaW5nIGRlY29kZWRSZXN1bHQgPSBlbmNvZGluZy5kZWNvZGUodXRmOFVybC5kYXRhKCksIHV0
ZjhVcmwubGVuZ3RoKCkpOwogICAgIGlmICghZGVjb2RlZFJlc3VsdC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJlc3VsdCA9IGRlY29kZWRSZXN1bHQ7CisgICAgaWYgKGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlc1R3aWNlKSB7CisgICAgICAgIHJlc3VsdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhy
ZXN1bHQpOworICAgICAgICB1dGY4VXJsID0gcmVzdWx0LnV0ZjgoKTsKKyAgICAgICAgZGVjb2Rl
ZFJlc3VsdCA9IGVuY29kaW5nLmRlY29kZSh1dGY4VXJsLmRhdGEoKSwgdXRmOFVybC5sZW5ndGgo
KSk7CisgICAgICAgIGlmICghZGVjb2RlZFJlc3VsdC5pc0VtcHR5KCkpCisgICAgICAgICAgICBy
ZXN1bHQgPSBkZWNvZGVkUmVzdWx0OworICAgIH0KICAgICBpZiAoZGVjb2RlRW50aXRpZXMpCiAg
ICAgICAgIHJlc3VsdCA9IGRlY29kZUhUTUxFbnRpdGllcyhyZXN1bHQpOwogICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC0yMzUsMTggKzI0NSwyMCBAQCBTdHJpbmcgWFNTQXVkaXRvcjo6ZGVjb2RlSFRN
TEVudGl0aWVzKGNvCiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKIH0KIAotYm9v
bCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGRl
Y29kZUVudGl0aWVzLCBib29sIGFsbG93UmVxdWVzdElmTm9JbGxlZ2FsVVJJQ2hhcmFjdGVycykg
Y29uc3QKK2Jvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdChjb25zdCBTdHJpbmcmIHN0cmlu
ZywgYm9vbCBkZWNvZGVFbnRpdGllcywgYm9vbCBhbGxvd1JlcXVlc3RJZk5vSWxsZWdhbFVSSUNo
YXJhY3RlcnMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjb2RlVVJM
RXNjYXBlU2VxdWVuY2VzVHdpY2UpIGNvbnN0CiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsK
ICAgICBGcmFtZSogcGFyZW50RnJhbWUgPSBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpOwogICAg
IGlmIChwYXJlbnRGcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSA9PSBibGFua1VS
TCgpKQotICAgICAgICByZXN1bHQgPSBmaW5kSW5SZXF1ZXN0KHBhcmVudEZyYW1lLCBzdHJpbmcs
IGRlY29kZUVudGl0aWVzLCBhbGxvd1JlcXVlc3RJZk5vSWxsZWdhbFVSSUNoYXJhY3RlcnMpOwor
ICAgICAgICByZXN1bHQgPSBmaW5kSW5SZXF1ZXN0KHBhcmVudEZyYW1lLCBzdHJpbmcsIGRlY29k
ZUVudGl0aWVzLCBhbGxvd1JlcXVlc3RJZk5vSWxsZWdhbFVSSUNoYXJhY3RlcnMsIGRlY29kZVVS
TEVzY2FwZVNlcXVlbmNlc1R3aWNlKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0
ID0gZmluZEluUmVxdWVzdChtX2ZyYW1lLCBzdHJpbmcsIGRlY29kZUVudGl0aWVzLCBhbGxvd1Jl
cXVlc3RJZk5vSWxsZWdhbFVSSUNoYXJhY3RlcnMpOworICAgICAgICByZXN1bHQgPSBmaW5kSW5S
ZXF1ZXN0KG1fZnJhbWUsIHN0cmluZywgZGVjb2RlRW50aXRpZXMsIGFsbG93UmVxdWVzdElmTm9J
bGxlZ2FsVVJJQ2hhcmFjdGVycywgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdChGcmFt
ZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGRlY29kZUVudGl0aWVzLCBib29s
IGFsbG93UmVxdWVzdElmTm9JbGxlZ2FsVVJJQ2hhcmFjdGVycykgY29uc3QKK2Jvb2wgWFNTQXVk
aXRvcjo6ZmluZEluUmVxdWVzdChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBi
b29sIGRlY29kZUVudGl0aWVzLCBib29sIGFsbG93UmVxdWVzdElmTm9JbGxlZ2FsVVJJQ2hhcmFj
dGVycywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNvZGVVUkxFc2Nh
cGVTZXF1ZW5jZXNUd2ljZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCkp
OwogCkBAIC0yODUsNyArMjk3LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KEZy
YW1lKiBmcgogCiAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA8IHBhZ2VVUkwubGVuZ3RoKCkpIHsK
ICAgICAgICAgLy8gVGhlIHN0cmluZyBjYW4gYWN0dWFsbHkgZml0IGluc2lkZSB0aGUgcGFnZVVS
TC4KLSAgICAgICAgU3RyaW5nIGRlY29kZWRQYWdlVVJMID0gbV9jYWNoZS5jYW5vbmljYWxpemVV
UkwocGFnZVVSTCwgZnJhbWUtPmRvY3VtZW50KCktPmRlY29kZXIoKS0+ZW5jb2RpbmcoKSwgZGVj
b2RlRW50aXRpZXMpOworICAgICAgICBTdHJpbmcgZGVjb2RlZFBhZ2VVUkwgPSBtX2NhY2hlLmNh
bm9uaWNhbGl6ZVVSTChwYWdlVVJMLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNv
ZGluZygpLCBkZWNvZGVFbnRpdGllcywgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UpOwog
CiAgICAgICAgIGlmIChhbGxvd1JlcXVlc3RJZk5vSWxsZWdhbFVSSUNoYXJhY3RlcnMgJiYgKCFm
b3JtRGF0YU9iaiB8fCBmb3JtRGF0YU9iai0+aXNFbXB0eSgpKSAKICAgICAgICAgICAgICYmIGRl
Y29kZWRQYWdlVVJMLmZpbmQoJmlzSWxsZWdhbFVSSUNoYXJhY3RlciwgMCkgPT0gLTEpCkBAIC0z
MDIsNyArMzE0LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KEZyYW1lKiBmcgog
ICAgICAgICAgICAgLy8gdGhlIHVybC1lbmNvZGVkIFBPU1QgZGF0YSBiZWNhdXNlIHRoZSBsZW5n
dGggb2YgdGhlIHVybC1kZWNvZGVkCiAgICAgICAgICAgICAvLyBjb2RlIGlzIGxlc3MgdGhhbiBv
ciBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSB1cmwtZW5jb2RlZAogICAgICAgICAgICAgLy8g
c3RyaW5nLgotICAgICAgICAgICAgU3RyaW5nIGRlY29kZWRGb3JtRGF0YSA9IG1fY2FjaGUuY2Fu
b25pY2FsaXplVVJMKGZvcm1EYXRhLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNv
ZGluZygpLCBkZWNvZGVFbnRpdGllcyk7CisgICAgICAgICAgICBTdHJpbmcgZGVjb2RlZEZvcm1E
YXRhID0gbV9jYWNoZS5jYW5vbmljYWxpemVVUkwoZm9ybURhdGEsIGZyYW1lLT5kb2N1bWVudCgp
LT5kZWNvZGVyKCktPmVuY29kaW5nKCksIGRlY29kZUVudGl0aWVzLCBkZWNvZGVVUkxFc2NhcGVT
ZXF1ZW5jZXNUd2ljZSk7CiAgICAgICAgICAgICBpZiAoZGVjb2RlZEZvcm1EYXRhLmZpbmQoY2Fu
b25pY2FsaXplZFN0cmluZywgMCwgZmFsc2UpICE9IC0xKQogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOyAgLy8gV2UgZm91bmQgdGhlIHN0cmluZyBpbiB0aGUgUE9TVCBkYXRhLgogICAgICAg
ICB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9YU1NBdWRpdG9yLmgJKHJldmlzaW9uIDQ5MjkxKQorKysgV2ViQ29yZS9wYWdlL1hT
U0F1ZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDI1ICsxMDIsMzAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBjbGFzcyBDYWNoaW5nVVJMQ2Fub25pY2FsaXplcgogICAgICAg
ICB7CiAgICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIENhY2hpbmdVUkxDYW5vbmljYWxpemVy
KCkgOiBtX2RlY29kZUVudGl0aWVzKGZhbHNlKSB7IH0KLSAgICAgICAgICAgIFN0cmluZyBjYW5v
bmljYWxpemVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2Rp
bmcsIGJvb2wgZGVjb2RlRW50aXRpZXMpOworICAgICAgICAgICAgQ2FjaGluZ1VSTENhbm9uaWNh
bGl6ZXIoKSA6IG1fZGVjb2RlRW50aXRpZXMoZmFsc2UpLCBtX2RlY29kZVVSTEVzY2FwZVNlcXVl
bmNlc1R3aWNlKGZhbHNlKSB7IH0KKyAgICAgICAgICAgIFN0cmluZyBjYW5vbmljYWxpemVVUkwo
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGJvb2wgZGVj
b2RlRW50aXRpZXMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRl
Y29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNlKTsKIAogICAgICAgICBwcml2YXRlOgogICAgICAg
ICAgICAgLy8gVGhlIHBhcmFtZXRlcnMgd2Ugd2VyZSBjYWxsZWQgd2l0aCBsYXN0LgogICAgICAg
ICAgICAgU3RyaW5nIG1faW5wdXRVUkw7CiAgICAgICAgICAgICBUZXh0RW5jb2RpbmcgbV9lbmNv
ZGluZzsKICAgICAgICAgICAgIGJvb2wgbV9kZWNvZGVFbnRpdGllczsKKyAgICAgICAgICAgIGJv
b2wgbV9kZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZTsKIAogICAgICAgICAgICAgLy8gVGhl
IGNhY2hlZCByZXN1bHQuCiAgICAgICAgICAgICBTdHJpbmcgbV9jYWNoZWRDYW5vbmljYWxpemVk
VVJMOwogICAgICAgICB9OwogCiAgICAgICAgIHN0YXRpYyBTdHJpbmcgY2Fub25pY2FsaXplKGNv
bnN0IFN0cmluZyYpOwotICAgICAgICBzdGF0aWMgU3RyaW5nIGRlY29kZVVSTChjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgYm9vbCBkZWNvZGVFbnRpdGll
cyk7CisgICAgICAgIHN0YXRpYyBTdHJpbmcgZGVjb2RlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGRlY29kZUVudGl0aWVzLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNU
d2ljZSA9IGZhbHNlKTsKICAgICAgICAgc3RhdGljIFN0cmluZyBkZWNvZGVIVE1MRW50aXRpZXMo
Y29uc3QgU3RyaW5nJiwgYm9vbCBsZWF2ZVVuZGVjb2RhYmxlRW50aXRpZXNVbnRvdWNoZWQgPSB0
cnVlKTsKIAotICAgICAgICBib29sIGZpbmRJblJlcXVlc3QoY29uc3QgU3RyaW5nJiwgYm9vbCBk
ZWNvZGVFbnRpdGllcyA9IHRydWUsIGJvb2wgYWxsb3dSZXF1ZXN0SWZOb0lsbGVnYWxVUklDaGFy
YWN0ZXJzID0gZmFsc2UpIGNvbnN0OwotICAgICAgICBib29sIGZpbmRJblJlcXVlc3QoRnJhbWUq
LCBjb25zdCBTdHJpbmcmLCBib29sIGRlY29kZUVudGl0aWVzID0gdHJ1ZSwgYm9vbCBhbGxvd1Jl
cXVlc3RJZk5vSWxsZWdhbFVSSUNoYXJhY3RlcnMgPSBmYWxzZSkgY29uc3Q7CisgICAgICAgIGJv
b2wgZmluZEluUmVxdWVzdChjb25zdCBTdHJpbmcmLCBib29sIGRlY29kZUVudGl0aWVzID0gdHJ1
ZSwgYm9vbCBhbGxvd1JlcXVlc3RJZk5vSWxsZWdhbFVSSUNoYXJhY3RlcnMgPSBmYWxzZSwgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3
aWNlID0gZmFsc2UpIGNvbnN0OworICAgICAgICBib29sIGZpbmRJblJlcXVlc3QoRnJhbWUqLCBj
b25zdCBTdHJpbmcmLCBib29sIGRlY29kZUVudGl0aWVzID0gdHJ1ZSwgYm9vbCBhbGxvd1JlcXVl
c3RJZk5vSWxsZWdhbFVSSUNoYXJhY3RlcnMgPSBmYWxzZSwgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNlID0gZmFsc2UpIGNvbnN0
OwogCiAgICAgICAgIC8vIFRoZSBmcmFtZSB0byBhdWRpdC4KICAgICAgICAgRnJhbWUqIG1fZnJh
bWU7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0OTQzMikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDA5LTEwLTExICBEYW5pZWwgQmF0ZXMg
IDxkYmF0ZXNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAy
NDIKKyAgICAgICAgCisgICAgICAgIFRlc3RzIHRoYXQgSmF2YVNjcmlwdCBVUkxzIHRoYXQgYXJl
IHR3aWNlIFVSTCBlbmNvZGVkIGRvIG5vdCBieXBhc3MgdGhlIFhTU0F1ZGl0b3IuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJs
LXR3aWNlLXVybC1lbmNvZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLXR3aWNlLXVybC1l
bmNvZGUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5jb2RlMi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJhbWUt
amF2YXNjcmlwdC11cmwtdHdpY2UtdXJsLWVuY29kZTIuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2lj
ZS11cmwtZW5jb2RlMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9pZnJhbWUtamF2YXNjcmlwdC11cmwtdHdpY2UtdXJsLWVuY29k
ZTMuaHRtbDogQWRkZWQuCisKIDIwMDktMTAtMTAgIENhbWVyb24gTWNDb3JtYWNrICA8Y2FtQG1j
Yy5pZC5hdT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVy
bC10d2ljZS11cmwtZW5jb2RlMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10
d2ljZS11cmwtZW5jb2RlMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLXR3
aWNlLXVybC1lbmNvZGUyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBA
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlw
dCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKwor
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1l
LWphdmFzY3JpcHQtdXJsLXR3aWNlLXVybC1lbmNvZGUyLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0
LXVybC10d2ljZS11cmwtZW5jb2RlMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2lj
ZS11cmwtZW5jb2RlMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNyYz0naHR0cDovL2xvY2FsaG9zdDo4
MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/cT08aWZy
YW1lIHNyYz0iamF2YXNjcmlwdDogLy8lMjUwQWFsZXJ0KC9YU1MvKSI+PC9pZnJhbWU+Jz4KKzwv
aWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5jb2Rl
My1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5jb2RlMy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLXR3aWNlLXVybC1lbmNvZGUzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBj
b2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLXR3
aWNlLXVybC1lbmNvZGUzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5j
b2RlMy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC10d2ljZS11cmwtZW5jb2RlMy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8aWZyYW1lIHNyYz0naHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1
ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/cT08aWZyYW1lIHNyYz0iamF2YXNjcmlw
dDovLyUyNTBBYWxlcnQoL1hTUy8pIj48L2lmcmFtZT4nPgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
aWZyYW1lLWphdmFzY3JpcHQtdXJsLXR3aWNlLXVybC1lbmNvZGUtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJh
bWUtamF2YXNjcmlwdC11cmwtdHdpY2UtdXJsLWVuY29kZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1l
LWphdmFzY3JpcHQtdXJsLXR3aWNlLXVybC1lbmNvZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZ1c2VkIHRvIGV4
ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdp
dGhpbiByZXF1ZXN0LgorCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9pZnJhbWUtamF2YXNjcmlwdC11cmwtdHdpY2UtdXJsLWVuY29kZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9p
ZnJhbWUtamF2YXNjcmlwdC11cmwtdHdpY2UtdXJsLWVuY29kZS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZh
c2NyaXB0LXVybC10d2ljZS11cmwtZW5jb2RlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFibGVk
KHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSdodHRw
Oi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRl
cnRhZy5wbD9xPTxpZnJhbWUgc3JjPSJqYXZhc2NyaXB0OiAlMjUwQWFsZXJ0KC9YU1MvKSI+PC9p
ZnJhbWU+Jz4KKzwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="22320"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>