<?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>45364</bug_id>
          
          <creation_ts>2010-09-07 20:00:30 -0700</creation_ts>
          <short_desc>Fallback content should be rendered when an &lt;object&gt; doesn&apos;t specify a data, type or classid attribute.</short_desc>
          <delta_ts>2010-09-08 10:08:28 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>275573</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-09-07 20:00:30 -0700</bug_when>
    <thetext>Fallback content should be rendered when an &lt;object&gt; doesn&apos;t specify a data, type or classid attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275580</commentid>
    <comment_count>1</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-09-07 20:18:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/8375816&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275581</commentid>
    <comment_count>2</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-09-07 20:21:07 -0700</bug_when>
    <thetext>See comment #2 on https://bugs.webkit.org/show_bug.cgi?id=44933 for the rationale behind this fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275582</commentid>
    <comment_count>3</comment_count>
      <attachid>66836</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-09-07 20:23:29 -0700</bug_when>
    <thetext>Created attachment 66836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275586</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-07 20:29:24 -0700</bug_when>
    <thetext>Attachment 66836 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
LayoutTests/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275587</commentid>
    <comment_count>5</comment_count>
      <attachid>66838</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-09-07 20:34:27 -0700</bug_when>
    <thetext>Created attachment 66838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275603</commentid>
    <comment_count>6</comment_count>
      <attachid>66836</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-09-07 21:52:27 -0700</bug_when>
    <thetext>Comment on attachment 66836
Patch

&gt; +        Fallback content should be rendered when an &lt;object&gt; doesn&apos;t specify a
&gt; +        data, type or classid attribute.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=45364
&gt; +		&lt;rdar://problem/8375816&gt;
&gt; +
&gt; +        HTML5 says that if no data or type attribute is specified on the &lt;object&gt;,
&gt; +        fallback content should be rendered. However, WebKit has traditionally
&gt; +        supported specifying a URL and MIME type in a &lt;param&gt; element. 
&gt; +
&gt; +        To more closely match the spec while maintaining compatibility, continue
&gt; +        to load resources specified in &lt;param&gt; elements under a more limited set
&gt; +        of circumstances:
&gt; +
&gt; +        - MIME type is specified by a &lt;param&gt; named &quot;type&quot; or can be inferred
&gt; +          from the extension of a URL specified in a param named &quot;src&quot;, &quot;movie&quot;,
&gt; +          &quot;code&quot; or &quot;url&quot;, and
&gt; +        - resources of that MIME type will load in a plug-in.
&gt; +
&gt; +        If these two conditions aren&apos;t met, and the &lt;object&gt; element has no
&gt; +        &quot;data&quot; or &quot;type&quot; attribute, fallback content will be rendered.
&gt; +        Otherwise, there is no change in behavior.
&gt; +
&gt; +        * html/HTMLObjectElement.cpp:
&gt; +        (WebCore::HTMLObjectElement::parametersForPlugin):
&gt; +        (WebCore::HTMLObjectElement::updateWidget):
&gt; +        * loader/SubframeLoader.cpp:
&gt; +        (WebCore::SubframeLoader::resourceWillUsePlugin):
&gt; +        * loader/SubframeLoader.h:
&gt; +
The summary of what changed and why is great, but comments about what specifically changed in each function will be appreciated by someone that comes along later and tries to figure this out.


&gt;          // FIXME: url adjustment does not belong in this function.
&gt; -        if (url.isEmpty() &amp;&amp; (equalIgnoringCase(name, &quot;src&quot;) || equalIgnoringCase(name, &quot;movie&quot;) || equalIgnoringCase(name, &quot;code&quot;) || equalIgnoringCase(name, &quot;url&quot;)))
&gt; -            url = deprecatedParseURL(p-&gt;value());
&gt; +        if (equalIgnoringCase(name, &quot;src&quot;) || equalIgnoringCase(name, &quot;movie&quot;) || equalIgnoringCase(name, &quot;code&quot;) || equalIgnoringCase(name, &quot;url&quot;))
&gt; +            urlParam = deprecatedParseURL(p-&gt;value());
&gt;          // FIXME: serviceType calculation does not belong in this function.
&gt;          if (serviceType.isEmpty() &amp;&amp; equalIgnoringCase(name, &quot;type&quot;)) {
&gt;              serviceType = p-&gt;value();
1) &quot;urlParam&quot; won&apos;t be used later in this function unless &quot;url&quot; is empty so you can skip all of the string comparisons and url parsing if url is non-empty. 
2) The old code used the first non-empty url-equivalent param but this code uses the *last* non-empty param. Is this correct?


The ChangeLog says:

&gt;    - MIME type is specified by a &lt;param&gt; named &quot;type&quot; or can be inferred
&gt;      from the extension of a URL specified in a param named &quot;src&quot;, &quot;movie&quot;,
&gt;      &quot;code&quot; or &quot;url&quot;, and
Where is the type inferred from the url extension?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275606</commentid>
    <comment_count>7</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-09-07 22:19:52 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 66836 [details])
&gt; &gt; +        Fallback content should be rendered when an &lt;object&gt; doesn&apos;t specify a
&gt; &gt; +        data, type or classid attribute.
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=45364
&gt; &gt; +		&lt;rdar://problem/8375816&gt;
&gt; &gt; +
&gt; &gt; +        HTML5 says that if no data or type attribute is specified on the &lt;object&gt;,
&gt; &gt; +        fallback content should be rendered. However, WebKit has traditionally
&gt; &gt; +        supported specifying a URL and MIME type in a &lt;param&gt; element. 
&gt; &gt; +
&gt; &gt; +        To more closely match the spec while maintaining compatibility, continue
&gt; &gt; +        to load resources specified in &lt;param&gt; elements under a more limited set
&gt; &gt; +        of circumstances:
&gt; &gt; +
&gt; &gt; +        - MIME type is specified by a &lt;param&gt; named &quot;type&quot; or can be inferred
&gt; &gt; +          from the extension of a URL specified in a param named &quot;src&quot;, &quot;movie&quot;,
&gt; &gt; +          &quot;code&quot; or &quot;url&quot;, and
&gt; &gt; +        - resources of that MIME type will load in a plug-in.
&gt; &gt; +
&gt; &gt; +        If these two conditions aren&apos;t met, and the &lt;object&gt; element has no
&gt; &gt; +        &quot;data&quot; or &quot;type&quot; attribute, fallback content will be rendered.
&gt; &gt; +        Otherwise, there is no change in behavior.
&gt; &gt; +
&gt; &gt; +        * html/HTMLObjectElement.cpp:
&gt; &gt; +        (WebCore::HTMLObjectElement::parametersForPlugin):
&gt; &gt; +        (WebCore::HTMLObjectElement::updateWidget):
&gt; &gt; +        * loader/SubframeLoader.cpp:
&gt; &gt; +        (WebCore::SubframeLoader::resourceWillUsePlugin):
&gt; &gt; +        * loader/SubframeLoader.h:
&gt; &gt; +
&gt; The summary of what changed and why is great, but comments about what specifically changed in each function will be appreciated by someone that comes along later and tries to figure this out.

I&apos;ll add these comments.

&gt; 
&gt; 
&gt; &gt;          // FIXME: url adjustment does not belong in this function.
&gt; &gt; -        if (url.isEmpty() &amp;&amp; (equalIgnoringCase(name, &quot;src&quot;) || equalIgnoringCase(name, &quot;movie&quot;) || equalIgnoringCase(name, &quot;code&quot;) || equalIgnoringCase(name, &quot;url&quot;)))
&gt; &gt; -            url = deprecatedParseURL(p-&gt;value());
&gt; &gt; +        if (equalIgnoringCase(name, &quot;src&quot;) || equalIgnoringCase(name, &quot;movie&quot;) || equalIgnoringCase(name, &quot;code&quot;) || equalIgnoringCase(name, &quot;url&quot;))
&gt; &gt; +            urlParam = deprecatedParseURL(p-&gt;value());
&gt; &gt;          // FIXME: serviceType calculation does not belong in this function.
&gt; &gt;          if (serviceType.isEmpty() &amp;&amp; equalIgnoringCase(name, &quot;type&quot;)) {
&gt; &gt;              serviceType = p-&gt;value();
&gt; 1) &quot;urlParam&quot; won&apos;t be used later in this function unless &quot;url&quot; is empty so you can skip all of the string comparisons and url parsing if url is non-empty. 

Good point. I&apos;ll add back the url.isEmpty() clause.

&gt; 2) The old code used the first non-empty url-equivalent param but this code uses the *last* non-empty param. Is this correct?

That was an unintended change. I don&apos;t think there is anything that says what we should do here, but it&apos;s probably best not to change our old behavior without reason. I&apos;ll fix this.

&gt; 
&gt; 
&gt; The ChangeLog says:
&gt; 
&gt; &gt;    - MIME type is specified by a &lt;param&gt; named &quot;type&quot; or can be inferred
&gt; &gt;      from the extension of a URL specified in a param named &quot;src&quot;, &quot;movie&quot;,
&gt; &gt;      &quot;code&quot; or &quot;url&quot;, and
&gt; Where is the type inferred from the url extension?

The Mac port does this in its implementation of FrameLoaderClient::objectContentType(), which gets eventually called by SubframeLoader::resourceWillUsePlugin(). I suppose I shouldn&apos;t assume that all ports do the same thing, though. Perhaps I should just rephrase the comment to say something more general like &quot;if the MIME type can be determined from the information in the &lt;param&gt; elements.&quot;

Thanks for the feedback! I&apos;ll post a new patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275648</commentid>
    <comment_count>8</comment_count>
      <attachid>66850</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-09-07 23:59:49 -0700</bug_when>
    <thetext>Created attachment 66850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275806</commentid>
    <comment_count>9</comment_count>
      <attachid>66850</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-09-08 06:52:29 -0700</bug_when>
    <thetext>Comment on attachment 66850
Patch

&gt; +    // HTML5 says that an object resource&apos;s URL is specified by the object&apos;s data
&gt; +    // attribute, not by a param element. However, for compatibility, allow the
&gt; +    // resource&apos;s URL to be given by a param named &quot;src&quot;, &quot;movie&quot;, &quot;code&quot; or &quot;url&quot;
&gt; +    // if we know that resource points to a plug-in.
&gt; +    SubframeLoader* loader = document()-&gt;frame()-&gt;loader()-&gt;subframeLoader();
&gt; +    if (url.isEmpty() &amp;&amp; loader-&gt;resourceWillUsePlugin(urlParam, serviceType))
&gt; +        url = urlParam;
Minor nit, but you don&apos;t need the many dereferences to fetch &quot;loader&quot; unless url is empty.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275909</commentid>
    <comment_count>10</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-09-08 10:08:28 -0700</bug_when>
    <thetext>Committed r66992: &lt;http://trac.webkit.org/changeset/66992&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66836</attachid>
            <date>2010-09-07 20:23:29 -0700</date>
            <delta_ts>2010-09-07 21:52:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45364-20100907202327.patch</filename>
            <type>text/plain</type>
            <size>12902</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Njk0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMDktMDcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZhbGxi
YWNrIGNvbnRlbnQgc2hvdWxkIGJlIHJlbmRlcmVkIHdoZW4gYW4gPG9iamVjdD4gZG9lc24ndCBz
cGVjaWZ5IGEKKyAgICAgICAgZGF0YSwgdHlwZSBvciBjbGFzc2lkIGF0dHJpYnV0ZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MzY0CisJCTxyZGFy
Oi8vcHJvYmxlbS84Mzc1ODE2PgorCisgICAgICAgIEhUTUw1IHNheXMgdGhhdCBpZiBubyBkYXRh
IG9yIHR5cGUgYXR0cmlidXRlIGlzIHNwZWNpZmllZCBvbiB0aGUgPG9iamVjdD4sCisgICAgICAg
IGZhbGxiYWNrIGNvbnRlbnQgc2hvdWxkIGJlIHJlbmRlcmVkLiBIb3dldmVyLCBXZWJLaXQgaGFz
IHRyYWRpdGlvbmFsbHkKKyAgICAgICAgc3VwcG9ydGVkIHNwZWNpZnlpbmcgYSBVUkwgYW5kIE1J
TUUgdHlwZSBpbiBhIDxwYXJhbT4gZWxlbWVudC4gCisKKyAgICAgICAgVG8gbW9yZSBjbG9zZWx5
IG1hdGNoIHRoZSBzcGVjIHdoaWxlIG1haW50YWluaW5nIGNvbXBhdGliaWxpdHksIGNvbnRpbnVl
CisgICAgICAgIHRvIGxvYWQgcmVzb3VyY2VzIHNwZWNpZmllZCBpbiA8cGFyYW0+IGVsZW1lbnRz
IHVuZGVyIGEgbW9yZSBsaW1pdGVkIHNldAorICAgICAgICBvZiBjaXJjdW1zdGFuY2VzOgorCisg
ICAgICAgIC0gTUlNRSB0eXBlIGlzIHNwZWNpZmllZCBieSBhIDxwYXJhbT4gbmFtZWQgInR5cGUi
IG9yIGNhbiBiZSBpbmZlcnJlZAorICAgICAgICAgIGZyb20gdGhlIGV4dGVuc2lvbiBvZiBhIFVS
TCBzcGVjaWZpZWQgaW4gYSBwYXJhbSBuYW1lZCAic3JjIiwgIm1vdmllIiwKKyAgICAgICAgICAi
Y29kZSIgb3IgInVybCIsIGFuZAorICAgICAgICAtIHJlc291cmNlcyBvZiB0aGF0IE1JTUUgdHlw
ZSB3aWxsIGxvYWQgaW4gYSBwbHVnLWluLgorCisgICAgICAgIElmIHRoZXNlIHR3byBjb25kaXRp
b25zIGFyZW4ndCBtZXQsIGFuZCB0aGUgPG9iamVjdD4gZWxlbWVudCBoYXMgbm8KKyAgICAgICAg
ImRhdGEiIG9yICJ0eXBlIiBhdHRyaWJ1dGUsIGZhbGxiYWNrIGNvbnRlbnQgd2lsbCBiZSByZW5k
ZXJlZC4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGVyZSBpcyBubyBjaGFuZ2UgaW4gYmVoYXZpb3Iu
CisKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Ojp1cGRhdGVXaWRnZXQpOgorICAgICAgICAqIGxvYWRl
ci9TdWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6
cmVzb3VyY2VXaWxsVXNlUGx1Z2luKToKKyAgICAgICAgKiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIu
aDoKKwogMjAxMC0wOS0wNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBNYXJyaW4uCkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTE9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDY2OTA0KQorKysgV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDYgKzE2Myw3IEBAIHN0YXRpYyB2
b2lkIG1hcERhdGFQYXJhbVRvU3JjKFZlY3RvcjxTdHIKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6
OnBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxT
dHJpbmc+JiBwYXJhbVZhbHVlcywgU3RyaW5nJiB1cmwsIFN0cmluZyYgc2VydmljZVR5cGUpCiB7
CiAgICAgSGFzaFNldDxTdHJpbmdJbXBsKiwgQ2FzZUZvbGRpbmdIYXNoPiB1bmlxdWVQYXJhbU5h
bWVzOworICAgIFN0cmluZyB1cmxQYXJhbTsKICAgICAKICAgICAvLyBTY2FuIHRoZSBQQVJBTSBj
aGlsZHJlbiBhbmQgc3RvcmUgdGhlaXIgbmFtZS92YWx1ZSBwYWlycy4KICAgICAvLyBHZXQgdGhl
IFVSTCBhbmQgdHlwZSBmcm9tIHRoZSBwYXJhbXMgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIHRo
ZW0uCkBAIC0xODAsOCArMTgxLDggQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyYW1ldGVy
c0ZvclBsdQogICAgICAgICBwYXJhbVZhbHVlcy5hcHBlbmQocC0+dmFsdWUoKSk7CiAKICAgICAg
ICAgLy8gRklYTUU6IHVybCBhZGp1c3RtZW50IGRvZXMgbm90IGJlbG9uZyBpbiB0aGlzIGZ1bmN0
aW9uLgotICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSAmJiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFt
ZSwgInNyYyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJtb3ZpZSIpIHx8IGVxdWFsSWdu
b3JpbmdDYXNlKG5hbWUsICJjb2RlIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInVybCIp
KSkKLSAgICAgICAgICAgIHVybCA9IGRlcHJlY2F0ZWRQYXJzZVVSTChwLT52YWx1ZSgpKTsKKyAg
ICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJzcmMiKSB8fCBlcXVhbElnbm9yaW5n
Q2FzZShuYW1lLCAibW92aWUiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiY29kZSIpIHx8
IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJ1cmwiKSkKKyAgICAgICAgICAgIHVybFBhcmFtID0g
ZGVwcmVjYXRlZFBhcnNlVVJMKHAtPnZhbHVlKCkpOwogICAgICAgICAvLyBGSVhNRTogc2Vydmlj
ZVR5cGUgY2FsY3VsYXRpb24gZG9lcyBub3QgYmVsb25nIGluIHRoaXMgZnVuY3Rpb24uCiAgICAg
ICAgIGlmIChzZXJ2aWNlVHlwZS5pc0VtcHR5KCkgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwg
InR5cGUiKSkgewogICAgICAgICAgICAgc2VydmljZVR5cGUgPSBwLT52YWx1ZSgpOwpAQCAtMjE3
LDkgKzIxOCwxMyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1CiAg
ICAgCiAgICAgbWFwRGF0YVBhcmFtVG9TcmMoJnBhcmFtTmFtZXMsICZwYXJhbVZhbHVlcyk7CiAg
ICAgCi0gICAgLy8gSWYgd2Ugc3RpbGwgZG9uJ3QgaGF2ZSBhIHR5cGUsIHRyeSB0byBtYXAgZnJv
bSBhIHNwZWNpZmljIENMQVNTSUQgdG8gYSB0eXBlLgotICAgIGlmIChzZXJ2aWNlVHlwZS5pc0Vt
cHR5KCkpCi0gICAgICAgIHNlcnZpY2VUeXBlID0gc2VydmljZVR5cGVGb3JDbGFzc0lkKGNsYXNz
SWQoKSk7CisgICAgLy8gSFRNTDUgc2F5cyB0aGF0IGFuIG9iamVjdCByZXNvdXJjZSdzIFVSTCBp
cyBzcGVjaWZpZWQgYnkgdGhlIG9iamVjdCdzIGRhdGEKKyAgICAvLyBhdHRyaWJ1dGUsIG5vdCBi
eSBhIHBhcmFtIGVsZW1lbnQuIEhvd2V2ZXIsIGZvciBjb21wYXRpYmlsaXR5LCBhbGxvdyB0aGUK
KyAgICAvLyByZXNvdXJjZSdzIFVSTCB0byBiZSBnaXZlbiBieSBhIHBhcmFtIG5hbWVkICJzcmMi
LCAibW92aWUiLCAiY29kZSIgb3IgInVybCIKKyAgICAvLyBpZiB3ZSBrbm93IHRoYXQgcmVzb3Vy
Y2UgcG9pbnRzIHRvIGEgcGx1Zy1pbi4KKyAgICBTdWJmcmFtZUxvYWRlciogbG9hZGVyID0gZG9j
dW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCk7CisgICAgaWYgKHVy
bC5pc0VtcHR5KCkgJiYgbG9hZGVyLT5yZXNvdXJjZVdpbGxVc2VQbHVnaW4odXJsUGFyYW0sIHNl
cnZpY2VUeXBlKSkKKyAgICAgICAgdXJsID0gdXJsUGFyYW07CiB9CiAKICAgICAKQEAgLTI1MCw3
ICsyNTUsMTIgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6dXBkYXRlV2lkZ2V0KGJvbwogICAg
ICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgdXJsID0gdGhpcy0+dXJsKCk7CisgICAgCisgICAg
Ly8gSWYgdGhlIG9iamVjdCBkb2VzIG5vdCBzcGVjaWZ5IGEgTUlNRSB0eXBlIHZpYSBhIHR5cGUg
YXR0cmlidXRlLCBidXQgZG9lcworICAgIC8vIGNvbnRhaW4gYSBjbGFzc2lkIGF0dHJpYnV0ZSwg
dHJ5IHRvIG1hcCB0aGUgY2xhc3NpZCB0byBhIE1JTUUgdHlwZS4KICAgICBTdHJpbmcgc2Vydmlj
ZVR5cGUgPSB0aGlzLT5zZXJ2aWNlVHlwZSgpOworICAgIGlmIChzZXJ2aWNlVHlwZS5pc0VtcHR5
KCkpCisgICAgICAgIHNlcnZpY2VUeXBlID0gc2VydmljZVR5cGVGb3JDbGFzc0lkKGNsYXNzSWQo
KSk7CiAKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIGpvaW5lZCBpbnRvIGEgUGx1Z2lu
UGFyYW1ldGVycyBjbGFzcy4KICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbU5hbWVzOwpJbmRleDog
V2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNjY5MDQpCisrKyBXZWJDb3JlL2xv
YWRlci9TdWJmcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDE1IEBA
IGJvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShIVE1MRnIKIAogICAgIHJldHVybiB0
cnVlOwogfQorICAgIAorYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVzb3VyY2VXaWxsVXNlUGx1Z2lu
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIEtVUkwg
Y29tcGxldGVkVVJMOworICAgIGlmICghdXJsLmlzRW1wdHkoKSkKKyAgICAgICAgY29tcGxldGVk
VVJMID0gY29tcGxldGVVUkwodXJsKTsKKyAgICBib29sIHVzZUZhbGxiYWNrOworICAgIHJldHVy
biBzaG91bGRVc2VQbHVnaW4oY29tcGxldGVkVVJMLCBtaW1lVHlwZSwgZmFsc2UsIHVzZUZhbGxi
YWNrKTsKK30KIAogYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdChIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGZyYW1lTmFtZSwKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFs
dWVzKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oCShyZXZpc2lvbiA2NjkwNCkKKysrIFdl
YkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1
LDggQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dQbHVnaW5zKFJlYXNvbkZvckNhbGxpbmdBbGxv
d1BsdWdpbnMpOwogCiAgICAgYm9vbCBjb250YWluc1BsdWdpbnMoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRhaW5zUGx1Z2luczsgfQorICAgIAorICAgIGJvb2wgcmVzb3VyY2VXaWxsVXNlUGx1Z2lu
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgogICAgIEZyYW1lKiBs
b2FkT3JSZWRpcmVjdFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IEtVUkwm
LCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBs
b2NrQmFja0ZvcndhcmRMaXN0KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2OTQ3KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDkt
MDcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZhbGxiYWNrIGNvbnRlbnQgc2hvdWxkIGJlIHJl
bmRlcmVkIHdoZW4gYW4gPG9iamVjdD4gZG9lc24ndCBzcGVjaWZ5IGEKKyAgICAgICAgZGF0YSwg
dHlwZSBvciBjbGFzc2lkIGF0dHJpYnV0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ1MzY0CisJCTxyZGFyOi8vcHJvYmxlbS84Mzc1ODE2PgorCisg
ICAgICAgICogZmFzdC9yZXBsYWNlZC9vYmplY3QtcGFyYW0tdXJsLWNvbnRyb2wtY2hhci5odG1s
OgorICAgICAgICAqIGZhc3QvcmVwbGFjZWQvb2JqZWN0LXdpdGgtZW1iZWQtdXJsLXBhcmFtLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3JlcGxhY2VkL29iamVjdC13aXRoLWVtYmVkLXVy
bC1wYXJhbS5odG1sOgorCiAyMDEwLTA5LTA3ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L3JlcGxhY2VkL29iamVjdC1wYXJhbS11cmwtY29udHJvbC1jaGFyLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmplY3QtcGFyYW0tdXJsLWNvbnRy
b2wtY2hhci5odG1sCShyZXZpc2lvbiA2NjkwNCkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVwbGFj
ZWQvb2JqZWN0LXBhcmFtLXVybC1jb250cm9sLWNoYXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MjEsNyArMjEsNyBAQAogICAgICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CiAgICAgPGJvZHk+
Ci0gICAgICAgIDxvYmplY3Qgd2lkdGg9IjAiIGhlaWdodD0iMCI+CisgICAgICAgIDxvYmplY3Qg
d2lkdGg9IjAiIGhlaWdodD0iMCIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRz
Y2FwZSI+CiAgICAgICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSIgHCAgdVJsKCdz
Y2hlbWU6Ly91cmwtd2l0aC0FY29udHJvbC1jaGFyLycpIB4gIj4KICAgICAgICAgPC9vYmplY3Q+
CiAgICAgICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgVVJMIHNwZWNpZmllZCBpbiBh
ICZsdDtwYXJhbSZndDsgb2YgYW4gJmx0O29iamVjdCZndDsgaXMgcGFyc2VkIHRoZSBzYW1lIGFz
IGlmIGl0IHdhcyBzcGVjaWZpZWQgYXMgdGhlIGRhdGEgYXR0cmlidXRlIG9mIHRoZSAmbHQ7b2Jq
ZWN0Jmd0Oy4gU3BlY2lmaWNhbGx5LCB0aGlzIHZlcmlmaWVzIHRoYXQgY29udHJvbCBjaGFyYWN0
ZXJzIGFuZCBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UgYXJlIHN0cmlwcGVkLCBhbmQgdGhh
dCBhIHJlc291cmNlIHN1cnJvdW5kZWQgd2l0aCB1cmwoJycpIGlzIHVuZGVyc3Rvb2QuPC9wPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmplY3Qtd2l0aC1lbWJlZC11cmwtcGFy
YW0tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQv
b2JqZWN0LXdpdGgtZW1iZWQtdXJsLXBhcmFtLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjY5MDQp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL29iamVjdC13aXRoLWVtYmVkLXVybC1wYXJh
bS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw4IEBACi0gICAKIFRoaXMg
dGVzdCB2ZXJpZmllcyB0aGF0IHRoZSByaWdodCBVUkwgaXMgbG9hZGVkIHdoZW4gdGhlcmUgaXMg
YW4gPG9iamVjdD4gd2l0aCBhICdzcmMnIDxwYXJhbT4gYW5kIGEgZmFsbGJhY2sgPGVtYmVkPi4K
IAogQW4gPG9iamVjdD4gd2l0aCBhICdkYXRhJyBAYXR0ciBhbmQgYSAnc3JjJyA8cGFyYW0+IHNo
b3VsZCBsb2FkIHRoZSBVUkwgZnJvbSB0aGUgJ2RhdGEnIEBhdHRyIGFuZCBkb2VzLgogQW4gPG9i
amVjdD4gd2l0aCBhICdzcmMnIDxwYXJhbT4gc2hvdWxkIGxvYWQgdGhlIFVSTCBmcm9tIHRoZSAn
c3JjJyA8cGFyYW0+IGFuZCBkb2VzLgogQW4gPG9iamVjdD4gd2l0aCBubyBVUkwgc3BlY2lmaWVk
IGFuZCBhIG5lc3RlZCA8ZW1iZWQ+IHNob3VsZCBsb2FkIHRoZSBVUkwgZnJvbSB0aGUgJ3NyYycg
QGF0dHIgb2YgdGhlIDxlbWJlZD4gYW5kIGRvZXMuCi0KK0FuIDxvYmplY3Q+IHdpdGggYSBVUkwg
c3BlY2lmaWVkIGluIGEgJ3NyYycgPHBhcmFtPiBhbmQgYSBuZXN0ZWQgPGVtYmVkPiBzaG91bGQg
bG9hZCB0aGUgVVJMIGZyb20gdGhlICdzcmMnIEBhdHRyIG9mIHRoZSA8ZW1iZWQ+IGFuZCBkb2Vz
LgorQW4gPG9iamVjdD4gd2l0aCBhIFVSTCBzcGVjaWZpZWQgaW4gYSAnc3JjJyA8cGFyYW0+IGFu
ZCBhIE1JTUUgdHlwZSBzcGVjaWZpZWQgaW4gYSAndHlwZScgPHBhcmFtPiBzaG91bGQgbG9hZCB0
aGUgVVJMIGZyb20gdGhlICdzcmMnIDxwYXJhbT4gYW5kIGRvZXMuCisgICAgICAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvb2JqZWN0LXdpdGgtZW1iZWQtdXJsLXBhcmFtLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmplY3Qtd2l0aC1lbWJl
ZC11cmwtcGFyYW0uaHRtbAkocmV2aXNpb24gNjY5MDQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Jl
cGxhY2VkL29iamVjdC13aXRoLWVtYmVkLXVybC1wYXJhbS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC05LDkgKzksMTEgQEAKICAgICAgICAgICAgIHZhciBvYmplY3QxUmVzdWx0ID0gIiI7CiAgICAg
ICAgICAgICB2YXIgb2JqZWN0MlJlc3VsdCA9ICIiOwogICAgICAgICAgICAgdmFyIGVtYmVkM1Jl
c3VsdCA9ICIiOworICAgICAgICAgICAgdmFyIGVtYmVkNFJlc3VsdCA9ICIiOworICAgICAgICAg
ICAgdmFyIG9iamVjdDVSZXN1bHQgPSAiIjsKKyAgICAgICAgICAgIHZhciBub3RpZmllZCA9IGZh
bHNlOwogCiAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmVsb2Fk
IiwgZnVuY3Rpb24oZXZlbnQpIHsKLQogICAgICAgICAgICAgICAgIGlmIChldmVudC51cmwgPT0g
IiIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAKQEAgLTIxLDEyICsyMywxOSBAQAog
ICAgICAgICAgICAgICAgICAgICBvYmplY3QyUmVzdWx0ID0gKGV2ZW50LnVybCA9PSAib2JqZWN0
LXBhcmFtIiA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoZXZlbnQudGFyZ2V0LmlkID09ICJlbWJlZDMiKSB7CiAgICAgICAgICAgICAgICAgICAgIGVt
YmVkM1Jlc3VsdCA9IChldmVudC51cmwgPT0gImVtYmVkLWF0dHIiID8gImRvZXMiIDogImRvZXMg
bm90Iik7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC50YXJnZXQuaWQgPT0gImVt
YmVkNCIpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1iZWQ0UmVzdWx0ID0gKGV2ZW50LnVybCA9
PSAiZW1iZWQtYXR0ciIgPyAiZG9lcyIgOiAiZG9lcyBub3QiKTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKGV2ZW50LnRhcmdldC5pZCA9PSAib2JqZWN0NSIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgb2JqZWN0NVJlc3VsdCA9IChldmVudC51cmwgPT0gIm9iamVjdC1wYXJhbSIgPyAiZG9l
cyIgOiAiZG9lcyBub3QiKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBp
ZiAob2JqZWN0MVJlc3VsdCAhPSAiIiAmJiBvYmplY3QyUmVzdWx0ICE9ICIiICYmIGVtYmVkM1Jl
c3VsdCAhPSAiIikgeworICAgICAgICAgICAgICAgIGlmICghbm90aWZpZWQgJiYgb2JqZWN0MVJl
c3VsdCAhPSAiIiAmJiBvYmplY3QyUmVzdWx0ICE9ICIiICYmIGVtYmVkM1Jlc3VsdCAhPSAiIiAm
JiBlbWJlZDRSZXN1bHQgIT0gIiIgJiYgb2JqZWN0NVJlc3VsdCAhPSAiIikgewogICAgICAgICAg
ICAgICAgICAgICBkZWJ1ZygiQW4gJmx0O29iamVjdCZndDsgd2l0aCBhICdkYXRhJyBAYXR0ciBh
bmQgYSAnc3JjJyAmbHQ7cGFyYW0mZ3Q7IHNob3VsZCBsb2FkIHRoZSBVUkwgZnJvbSB0aGUgJ2Rh
dGEnIEBhdHRyIGFuZCAiICsgb2JqZWN0MVJlc3VsdCArICIuIik7CiAgICAgICAgICAgICAgICAg
ICAgIGRlYnVnKCJBbiAmbHQ7b2JqZWN0Jmd0OyB3aXRoIGEgJ3NyYycgJmx0O3BhcmFtJmd0OyBz
aG91bGQgbG9hZCB0aGUgVVJMIGZyb20gdGhlICdzcmMnICZsdDtwYXJhbSZndDsgYW5kICIgKyBv
YmplY3QyUmVzdWx0ICsgIi4iKTsKICAgICAgICAgICAgICAgICAgICAgZGVidWcoIkFuICZsdDtv
YmplY3QmZ3Q7IHdpdGggbm8gVVJMIHNwZWNpZmllZCBhbmQgYSBuZXN0ZWQgJmx0O2VtYmVkJmd0
OyBzaG91bGQgbG9hZCB0aGUgVVJMIGZyb20gdGhlICdzcmMnIEBhdHRyIG9mIHRoZSAmbHQ7ZW1i
ZWQmZ3Q7IGFuZCAiICsgZW1iZWQzUmVzdWx0ICsgIi4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ZGVidWcoIkFuICZsdDtvYmplY3QmZ3Q7IHdpdGggYSBVUkwgc3BlY2lmaWVkIGluIGEgJ3NyYycg
Jmx0O3BhcmFtJmd0OyBhbmQgYSBuZXN0ZWQgJmx0O2VtYmVkJmd0OyBzaG91bGQgbG9hZCB0aGUg
VVJMIGZyb20gdGhlICdzcmMnIEBhdHRyIG9mIHRoZSAmbHQ7ZW1iZWQmZ3Q7IGFuZCAiICsgZW1i
ZWQzUmVzdWx0ICsgIi4iKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIkFuICZsdDtvYmpl
Y3QmZ3Q7IHdpdGggYSBVUkwgc3BlY2lmaWVkIGluIGEgJ3NyYycgJmx0O3BhcmFtJmd0OyBhbmQg
YSBNSU1FIHR5cGUgc3BlY2lmaWVkIGluIGEgJ3R5cGUnICZsdDtwYXJhbSZndDsgc2hvdWxkIGxv
YWQgdGhlIFVSTCBmcm9tIHRoZSAnc3JjJyAmbHQ7cGFyYW0mZ3Q7IGFuZCAiICsgb2JqZWN0NVJl
c3VsdCArICIuIik7CisgICAgICAgICAgICAgICAgICAgIG5vdGlmaWVkID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAg
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgICAg
ICAgICAgICAgICB9CkBAIC0zOCwxOCArNDcsMjYgQEAKICAgICAgICAgPC9zY3JpcHQ+CiAgICAg
PC9oZWFkPgogICAgIDxib2R5PgorICAgICAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0
aGUgcmlnaHQgVVJMIGlzIGxvYWRlZCB3aGVuIHRoZXJlIGlzIGFuICZsdDtvYmplY3QmZ3Q7IHdp
dGggYSAnc3JjJyAmbHQ7cGFyYW0mZ3Q7IGFuZCBhIGZhbGxiYWNrICZsdDtlbWJlZCZndDsuPC9w
PgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KICAgICAgICAgPG9iamVjdCBpZD0i
b2JqZWN0MSIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIgZGF0YT0i
b2JqZWN0LWF0dHIiPgotICAgICAgICAgICAgPHBhcmFtIGlkPSJwYXJhbTEiIG5hbWU9InNyYyIg
dmFsdWU9Im9iamVjdC1wYXJhbSI+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJz
cmMiIHZhbHVlPSJvYmplY3QtcGFyYW0iPjwvcGFyYW0+CiAgICAgICAgICAgICA8ZW1iZWQgaWQ9
ImVtYmVkMSIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIgc3JjPSJl
bWJlZC1hdHRyIj4KICAgICAgICAgPC9vYmplY3Q+CiAgICAgICAgIDxvYmplY3QgaWQ9Im9iamVj
dDIiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPgotICAgICAgICAg
ICAgPHBhcmFtIGlkPSJwYXJhbTIiIG5hbWU9Im1vdmllIiB2YWx1ZT0ib2JqZWN0LXBhcmFtIj48
L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ib2JqZWN0LXBh
cmFtIj48L3BhcmFtPgogICAgICAgICAgICAgPGVtYmVkIGlkPSJlbWJlZDIiIHR5cGU9ImFwcGxp
Y2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiIHNyYz0iZW1iZWQtYXR0ciI+CiAgICAgICAg
IDwvb2JqZWN0PgogICAgICAgICA8b2JqZWN0IGlkPSJvYmplY3QzIj4KICAgICAgICAgICAgIDxl
bWJlZCBpZD0iZW1iZWQzIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBl
IiBzcmM9ImVtYmVkLWF0dHIiPgogICAgICAgICA8L29iamVjdD4KLSAgICAgICAgPHA+VGhpcyB0
ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHJpZ2h0IFVSTCBpcyBsb2FkZWQgd2hlbiB0aGVyZSBpcyBh
biAmbHQ7b2JqZWN0Jmd0OyB3aXRoIGEgJ3NyYycgJmx0O3BhcmFtJmd0OyBhbmQgYSBmYWxsYmFj
ayAmbHQ7ZW1iZWQmZ3Q7LjwvcD4KLSAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cisg
ICAgICAgIDxvYmplY3QgaWQ9Im9iamVjdDQiPgorICAgICAgICAgICAgPHBhcmFtIG5hbWU9ImNv
ZGUiIHZhbHVlPSJvYmplY3QtcGFyYW0iPjwvcGFyYW0+CisgICAgICAgICAgICA8ZW1iZWQgaWQ9
ImVtYmVkNCIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIgc3JjPSJl
bWJlZC1hdHRyIj4KKyAgICAgICAgPC9vYmplY3Q+CisgICAgICAgIDxvYmplY3QgaWQ9Im9iamVj
dDUiPgorICAgICAgICAgICAgPHBhcmFtIG5hbWU9InVybCIgdmFsdWU9Im9iamVjdC1wYXJhbSI+
PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJ0eXBlIiB2YWx1ZT0iYXBwbGljYXRp
b24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSI+PC9wYXJhbT4KKyAgICAgICAgPC9vYmplY3Q+CiAg
ICAgPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66838</attachid>
            <date>2010-09-07 20:34:27 -0700</date>
            <delta_ts>2010-09-07 23:59:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45364-20100907203426.patch</filename>
            <type>text/plain</type>
            <size>12914</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Njk0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMDktMDcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZhbGxi
YWNrIGNvbnRlbnQgc2hvdWxkIGJlIHJlbmRlcmVkIHdoZW4gYW4gPG9iamVjdD4gZG9lc24ndCBz
cGVjaWZ5IGEKKyAgICAgICAgZGF0YSwgdHlwZSBvciBjbGFzc2lkIGF0dHJpYnV0ZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MzY0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS84Mzc1ODE2PgorCisgICAgICAgIEhUTUw1IHNheXMgdGhhdCBpZiBu
byBkYXRhIG9yIHR5cGUgYXR0cmlidXRlIGlzIHNwZWNpZmllZCBvbiB0aGUgPG9iamVjdD4sCisg
ICAgICAgIGZhbGxiYWNrIGNvbnRlbnQgc2hvdWxkIGJlIHJlbmRlcmVkLiBIb3dldmVyLCBXZWJL
aXQgaGFzIHRyYWRpdGlvbmFsbHkKKyAgICAgICAgc3VwcG9ydGVkIHNwZWNpZnlpbmcgYSBVUkwg
YW5kIE1JTUUgdHlwZSBpbiBhIDxwYXJhbT4gZWxlbWVudC4gCisKKyAgICAgICAgVG8gbW9yZSBj
bG9zZWx5IG1hdGNoIHRoZSBzcGVjIHdoaWxlIG1haW50YWluaW5nIGNvbXBhdGliaWxpdHksIGNv
bnRpbnVlCisgICAgICAgIHRvIGxvYWQgcmVzb3VyY2VzIHNwZWNpZmllZCBpbiA8cGFyYW0+IGVs
ZW1lbnRzIHVuZGVyIGEgbW9yZSBsaW1pdGVkIHNldAorICAgICAgICBvZiBjaXJjdW1zdGFuY2Vz
OgorCisgICAgICAgIC0gTUlNRSB0eXBlIGlzIHNwZWNpZmllZCBieSBhIDxwYXJhbT4gbmFtZWQg
InR5cGUiIG9yIGNhbiBiZSBpbmZlcnJlZAorICAgICAgICAgIGZyb20gdGhlIGV4dGVuc2lvbiBv
ZiBhIFVSTCBzcGVjaWZpZWQgaW4gYSBwYXJhbSBuYW1lZCAic3JjIiwgIm1vdmllIiwKKyAgICAg
ICAgICAiY29kZSIgb3IgInVybCIsIGFuZAorICAgICAgICAtIHJlc291cmNlcyBvZiB0aGF0IE1J
TUUgdHlwZSB3aWxsIGxvYWQgaW4gYSBwbHVnLWluLgorCisgICAgICAgIElmIHRoZXNlIHR3byBj
b25kaXRpb25zIGFyZW4ndCBtZXQsIGFuZCB0aGUgPG9iamVjdD4gZWxlbWVudCBoYXMgbm8KKyAg
ICAgICAgImRhdGEiIG9yICJ0eXBlIiBhdHRyaWJ1dGUsIGZhbGxiYWNrIGNvbnRlbnQgd2lsbCBi
ZSByZW5kZXJlZC4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGVyZSBpcyBubyBjaGFuZ2UgaW4gYmVo
YXZpb3IuCisKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Ojp1cGRhdGVXaWRnZXQpOgorICAgICAgICAq
IGxvYWRlci9TdWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxv
YWRlcjo6cmVzb3VyY2VXaWxsVXNlUGx1Z2luKToKKyAgICAgICAgKiBsb2FkZXIvU3ViZnJhbWVM
b2FkZXIuaDoKKwogMjAxMC0wOS0wNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBNYXJyaW4uCkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDY2OTA0KQorKysgV2ViQ29yZS9odG1sL0hU
TUxPYmplY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDYgKzE2Myw3IEBAIHN0
YXRpYyB2b2lkIG1hcERhdGFQYXJhbVRvU3JjKFZlY3RvcjxTdHIKIHZvaWQgSFRNTE9iamVjdEVs
ZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZl
Y3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgU3RyaW5nJiB1cmwsIFN0cmluZyYgc2VydmljZVR5
cGUpCiB7CiAgICAgSGFzaFNldDxTdHJpbmdJbXBsKiwgQ2FzZUZvbGRpbmdIYXNoPiB1bmlxdWVQ
YXJhbU5hbWVzOworICAgIFN0cmluZyB1cmxQYXJhbTsKICAgICAKICAgICAvLyBTY2FuIHRoZSBQ
QVJBTSBjaGlsZHJlbiBhbmQgc3RvcmUgdGhlaXIgbmFtZS92YWx1ZSBwYWlycy4KICAgICAvLyBH
ZXQgdGhlIFVSTCBhbmQgdHlwZSBmcm9tIHRoZSBwYXJhbXMgaWYgd2UgZG9uJ3QgYWxyZWFkeSBo
YXZlIHRoZW0uCkBAIC0xODAsOCArMTgxLDggQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFy
YW1ldGVyc0ZvclBsdQogICAgICAgICBwYXJhbVZhbHVlcy5hcHBlbmQocC0+dmFsdWUoKSk7CiAK
ICAgICAgICAgLy8gRklYTUU6IHVybCBhZGp1c3RtZW50IGRvZXMgbm90IGJlbG9uZyBpbiB0aGlz
IGZ1bmN0aW9uLgotICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSAmJiAoZXF1YWxJZ25vcmluZ0Nh
c2UobmFtZSwgInNyYyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJtb3ZpZSIpIHx8IGVx
dWFsSWdub3JpbmdDYXNlKG5hbWUsICJjb2RlIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwg
InVybCIpKSkKLSAgICAgICAgICAgIHVybCA9IGRlcHJlY2F0ZWRQYXJzZVVSTChwLT52YWx1ZSgp
KTsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJzcmMiKSB8fCBlcXVhbEln
bm9yaW5nQ2FzZShuYW1lLCAibW92aWUiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiY29k
ZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJ1cmwiKSkKKyAgICAgICAgICAgIHVybFBh
cmFtID0gZGVwcmVjYXRlZFBhcnNlVVJMKHAtPnZhbHVlKCkpOwogICAgICAgICAvLyBGSVhNRTog
c2VydmljZVR5cGUgY2FsY3VsYXRpb24gZG9lcyBub3QgYmVsb25nIGluIHRoaXMgZnVuY3Rpb24u
CiAgICAgICAgIGlmIChzZXJ2aWNlVHlwZS5pc0VtcHR5KCkgJiYgZXF1YWxJZ25vcmluZ0Nhc2Uo
bmFtZSwgInR5cGUiKSkgewogICAgICAgICAgICAgc2VydmljZVR5cGUgPSBwLT52YWx1ZSgpOwpA
QCAtMjE3LDkgKzIxOCwxMyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9y
UGx1CiAgICAgCiAgICAgbWFwRGF0YVBhcmFtVG9TcmMoJnBhcmFtTmFtZXMsICZwYXJhbVZhbHVl
cyk7CiAgICAgCi0gICAgLy8gSWYgd2Ugc3RpbGwgZG9uJ3QgaGF2ZSBhIHR5cGUsIHRyeSB0byBt
YXAgZnJvbSBhIHNwZWNpZmljIENMQVNTSUQgdG8gYSB0eXBlLgotICAgIGlmIChzZXJ2aWNlVHlw
ZS5pc0VtcHR5KCkpCi0gICAgICAgIHNlcnZpY2VUeXBlID0gc2VydmljZVR5cGVGb3JDbGFzc0lk
KGNsYXNzSWQoKSk7CisgICAgLy8gSFRNTDUgc2F5cyB0aGF0IGFuIG9iamVjdCByZXNvdXJjZSdz
IFVSTCBpcyBzcGVjaWZpZWQgYnkgdGhlIG9iamVjdCdzIGRhdGEKKyAgICAvLyBhdHRyaWJ1dGUs
IG5vdCBieSBhIHBhcmFtIGVsZW1lbnQuIEhvd2V2ZXIsIGZvciBjb21wYXRpYmlsaXR5LCBhbGxv
dyB0aGUKKyAgICAvLyByZXNvdXJjZSdzIFVSTCB0byBiZSBnaXZlbiBieSBhIHBhcmFtIG5hbWVk
ICJzcmMiLCAibW92aWUiLCAiY29kZSIgb3IgInVybCIKKyAgICAvLyBpZiB3ZSBrbm93IHRoYXQg
cmVzb3VyY2UgcG9pbnRzIHRvIGEgcGx1Zy1pbi4KKyAgICBTdWJmcmFtZUxvYWRlciogbG9hZGVy
ID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCk7CisgICAg
aWYgKHVybC5pc0VtcHR5KCkgJiYgbG9hZGVyLT5yZXNvdXJjZVdpbGxVc2VQbHVnaW4odXJsUGFy
YW0sIHNlcnZpY2VUeXBlKSkKKyAgICAgICAgdXJsID0gdXJsUGFyYW07CiB9CiAKICAgICAKQEAg
LTI1MCw3ICsyNTUsMTIgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6dXBkYXRlV2lkZ2V0KGJv
bwogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgdXJsID0gdGhpcy0+dXJsKCk7CisgICAg
CisgICAgLy8gSWYgdGhlIG9iamVjdCBkb2VzIG5vdCBzcGVjaWZ5IGEgTUlNRSB0eXBlIHZpYSBh
IHR5cGUgYXR0cmlidXRlLCBidXQgZG9lcworICAgIC8vIGNvbnRhaW4gYSBjbGFzc2lkIGF0dHJp
YnV0ZSwgdHJ5IHRvIG1hcCB0aGUgY2xhc3NpZCB0byBhIE1JTUUgdHlwZS4KICAgICBTdHJpbmcg
c2VydmljZVR5cGUgPSB0aGlzLT5zZXJ2aWNlVHlwZSgpOworICAgIGlmIChzZXJ2aWNlVHlwZS5p
c0VtcHR5KCkpCisgICAgICAgIHNlcnZpY2VUeXBlID0gc2VydmljZVR5cGVGb3JDbGFzc0lkKGNs
YXNzSWQoKSk7CiAKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIGpvaW5lZCBpbnRvIGEg
UGx1Z2luUGFyYW1ldGVycyBjbGFzcy4KICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbU5hbWVzOwpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNjY5MDQpCisrKyBXZWJD
b3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3
LDE1IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShIVE1MRnIKIAogICAgIHJl
dHVybiB0cnVlOwogfQorICAgIAorYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVzb3VyY2VXaWxsVXNl
UGx1Z2luKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAg
IEtVUkwgY29tcGxldGVkVVJMOworICAgIGlmICghdXJsLmlzRW1wdHkoKSkKKyAgICAgICAgY29t
cGxldGVkVVJMID0gY29tcGxldGVVUkwodXJsKTsKKyAgICBib29sIHVzZUZhbGxiYWNrOworICAg
IHJldHVybiBzaG91bGRVc2VQbHVnaW4oY29tcGxldGVkVVJMLCBtaW1lVHlwZSwgZmFsc2UsIHVz
ZUZhbGxiYWNrKTsKK30KIAogYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdChIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtVmFsdWVzKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oCShyZXZpc2lvbiA2NjkwNCkK
KysrIFdlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1
LDYgKzc1LDggQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dQbHVnaW5zKFJlYXNvbkZvckNhbGxp
bmdBbGxvd1BsdWdpbnMpOwogCiAgICAgYm9vbCBjb250YWluc1BsdWdpbnMoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRhaW5zUGx1Z2luczsgfQorICAgIAorICAgIGJvb2wgcmVzb3VyY2VXaWxsVXNl
UGx1Z2luKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgogICAgIEZy
YW1lKiBsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0
IEtVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlzdG9yeSwg
Ym9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2OTQ3KQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTAtMDktMDcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZhbGxiYWNrIGNvbnRlbnQgc2hvdWxk
IGJlIHJlbmRlcmVkIHdoZW4gYW4gPG9iamVjdD4gZG9lc24ndCBzcGVjaWZ5IGEKKyAgICAgICAg
ZGF0YSwgdHlwZSBvciBjbGFzc2lkIGF0dHJpYnV0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MzY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
Mzc1ODE2PgorCisgICAgICAgICogZmFzdC9yZXBsYWNlZC9vYmplY3QtcGFyYW0tdXJsLWNvbnRy
b2wtY2hhci5odG1sOgorICAgICAgICAqIGZhc3QvcmVwbGFjZWQvb2JqZWN0LXdpdGgtZW1iZWQt
dXJsLXBhcmFtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3JlcGxhY2VkL29iamVjdC13
aXRoLWVtYmVkLXVybC1wYXJhbS5odG1sOgorCiAyMDEwLTA5LTA3ICBPamFuIFZhZmFpICA8b2ph
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL29iamVjdC1wYXJhbS11cmwtY29udHJvbC1jaGFy
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmplY3QtcGFy
YW0tdXJsLWNvbnRyb2wtY2hhci5odG1sCShyZXZpc2lvbiA2NjkwNCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvcmVwbGFjZWQvb2JqZWN0LXBhcmFtLXVybC1jb250cm9sLWNoYXIuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogICAgICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+
CiAgICAgPGJvZHk+Ci0gICAgICAgIDxvYmplY3Qgd2lkdGg9IjAiIGhlaWdodD0iMCI+CisgICAg
ICAgIDxvYmplY3Qgd2lkdGg9IjAiIGhlaWdodD0iMCIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJr
aXQtdGVzdC1uZXRzY2FwZSI+CiAgICAgICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVl
PSIgHCAgdVJsKCdzY2hlbWU6Ly91cmwtd2l0aC0FY29udHJvbC1jaGFyLycpIB4gIj4KICAgICAg
ICAgPC9vYmplY3Q+CiAgICAgICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgVVJMIHNw
ZWNpZmllZCBpbiBhICZsdDtwYXJhbSZndDsgb2YgYW4gJmx0O29iamVjdCZndDsgaXMgcGFyc2Vk
IHRoZSBzYW1lIGFzIGlmIGl0IHdhcyBzcGVjaWZpZWQgYXMgdGhlIGRhdGEgYXR0cmlidXRlIG9m
IHRoZSAmbHQ7b2JqZWN0Jmd0Oy4gU3BlY2lmaWNhbGx5LCB0aGlzIHZlcmlmaWVzIHRoYXQgY29u
dHJvbCBjaGFyYWN0ZXJzIGFuZCBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UgYXJlIHN0cmlw
cGVkLCBhbmQgdGhhdCBhIHJlc291cmNlIHN1cnJvdW5kZWQgd2l0aCB1cmwoJycpIGlzIHVuZGVy
c3Rvb2QuPC9wPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmplY3Qtd2l0aC1l
bWJlZC11cmwtcGFyYW0tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvcmVwbGFjZWQvb2JqZWN0LXdpdGgtZW1iZWQtdXJsLXBhcmFtLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gNjY5MDQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL29iamVjdC13aXRoLWVt
YmVkLXVybC1wYXJhbS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw4IEBA
Ci0gICAKIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSByaWdodCBVUkwgaXMgbG9hZGVkIHdo
ZW4gdGhlcmUgaXMgYW4gPG9iamVjdD4gd2l0aCBhICdzcmMnIDxwYXJhbT4gYW5kIGEgZmFsbGJh
Y2sgPGVtYmVkPi4KIAogQW4gPG9iamVjdD4gd2l0aCBhICdkYXRhJyBAYXR0ciBhbmQgYSAnc3Jj
JyA8cGFyYW0+IHNob3VsZCBsb2FkIHRoZSBVUkwgZnJvbSB0aGUgJ2RhdGEnIEBhdHRyIGFuZCBk
b2VzLgogQW4gPG9iamVjdD4gd2l0aCBhICdzcmMnIDxwYXJhbT4gc2hvdWxkIGxvYWQgdGhlIFVS
TCBmcm9tIHRoZSAnc3JjJyA8cGFyYW0+IGFuZCBkb2VzLgogQW4gPG9iamVjdD4gd2l0aCBubyBV
Ukwgc3BlY2lmaWVkIGFuZCBhIG5lc3RlZCA8ZW1iZWQ+IHNob3VsZCBsb2FkIHRoZSBVUkwgZnJv
bSB0aGUgJ3NyYycgQGF0dHIgb2YgdGhlIDxlbWJlZD4gYW5kIGRvZXMuCi0KK0FuIDxvYmplY3Q+
IHdpdGggYSBVUkwgc3BlY2lmaWVkIGluIGEgJ3NyYycgPHBhcmFtPiBhbmQgYSBuZXN0ZWQgPGVt
YmVkPiBzaG91bGQgbG9hZCB0aGUgVVJMIGZyb20gdGhlICdzcmMnIEBhdHRyIG9mIHRoZSA8ZW1i
ZWQ+IGFuZCBkb2VzLgorQW4gPG9iamVjdD4gd2l0aCBhIFVSTCBzcGVjaWZpZWQgaW4gYSAnc3Jj
JyA8cGFyYW0+IGFuZCBhIE1JTUUgdHlwZSBzcGVjaWZpZWQgaW4gYSAndHlwZScgPHBhcmFtPiBz
aG91bGQgbG9hZCB0aGUgVVJMIGZyb20gdGhlICdzcmMnIDxwYXJhbT4gYW5kIGRvZXMuCisgICAg
ICAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvb2JqZWN0LXdpdGgtZW1iZWQtdXJs
LXBhcmFtLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmpl
Y3Qtd2l0aC1lbWJlZC11cmwtcGFyYW0uaHRtbAkocmV2aXNpb24gNjY5MDQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3JlcGxhY2VkL29iamVjdC13aXRoLWVtYmVkLXVybC1wYXJhbS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC05LDkgKzksMTEgQEAKICAgICAgICAgICAgIHZhciBvYmplY3QxUmVzdWx0
ID0gIiI7CiAgICAgICAgICAgICB2YXIgb2JqZWN0MlJlc3VsdCA9ICIiOwogICAgICAgICAgICAg
dmFyIGVtYmVkM1Jlc3VsdCA9ICIiOworICAgICAgICAgICAgdmFyIGVtYmVkNFJlc3VsdCA9ICIi
OworICAgICAgICAgICAgdmFyIG9iamVjdDVSZXN1bHQgPSAiIjsKKyAgICAgICAgICAgIHZhciBu
b3RpZmllZCA9IGZhbHNlOwogCiAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVy
KCJiZWZvcmVsb2FkIiwgZnVuY3Rpb24oZXZlbnQpIHsKLQogICAgICAgICAgICAgICAgIGlmIChl
dmVudC51cmwgPT0gIiIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAKQEAgLTIxLDEy
ICsyMywxOSBAQAogICAgICAgICAgICAgICAgICAgICBvYmplY3QyUmVzdWx0ID0gKGV2ZW50LnVy
bCA9PSAib2JqZWN0LXBhcmFtIiA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpOwogICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoZXZlbnQudGFyZ2V0LmlkID09ICJlbWJlZDMiKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGVtYmVkM1Jlc3VsdCA9IChldmVudC51cmwgPT0gImVtYmVkLWF0dHIiID8gImRv
ZXMiIDogImRvZXMgbm90Iik7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC50YXJn
ZXQuaWQgPT0gImVtYmVkNCIpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1iZWQ0UmVzdWx0ID0g
KGV2ZW50LnVybCA9PSAiZW1iZWQtYXR0ciIgPyAiZG9lcyIgOiAiZG9lcyBub3QiKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldC5pZCA9PSAib2JqZWN0NSIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgb2JqZWN0NVJlc3VsdCA9IChldmVudC51cmwgPT0gIm9iamVjdC1w
YXJhbSIgPyAiZG9lcyIgOiAiZG9lcyBub3QiKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgICAgICBpZiAob2JqZWN0MVJlc3VsdCAhPSAiIiAmJiBvYmplY3QyUmVzdWx0ICE9ICIi
ICYmIGVtYmVkM1Jlc3VsdCAhPSAiIikgeworICAgICAgICAgICAgICAgIGlmICghbm90aWZpZWQg
JiYgb2JqZWN0MVJlc3VsdCAhPSAiIiAmJiBvYmplY3QyUmVzdWx0ICE9ICIiICYmIGVtYmVkM1Jl
c3VsdCAhPSAiIiAmJiBlbWJlZDRSZXN1bHQgIT0gIiIgJiYgb2JqZWN0NVJlc3VsdCAhPSAiIikg
ewogICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiQW4gJmx0O29iamVjdCZndDsgd2l0aCBhICdk
YXRhJyBAYXR0ciBhbmQgYSAnc3JjJyAmbHQ7cGFyYW0mZ3Q7IHNob3VsZCBsb2FkIHRoZSBVUkwg
ZnJvbSB0aGUgJ2RhdGEnIEBhdHRyIGFuZCAiICsgb2JqZWN0MVJlc3VsdCArICIuIik7CiAgICAg
ICAgICAgICAgICAgICAgIGRlYnVnKCJBbiAmbHQ7b2JqZWN0Jmd0OyB3aXRoIGEgJ3NyYycgJmx0
O3BhcmFtJmd0OyBzaG91bGQgbG9hZCB0aGUgVVJMIGZyb20gdGhlICdzcmMnICZsdDtwYXJhbSZn
dDsgYW5kICIgKyBvYmplY3QyUmVzdWx0ICsgIi4iKTsKICAgICAgICAgICAgICAgICAgICAgZGVi
dWcoIkFuICZsdDtvYmplY3QmZ3Q7IHdpdGggbm8gVVJMIHNwZWNpZmllZCBhbmQgYSBuZXN0ZWQg
Jmx0O2VtYmVkJmd0OyBzaG91bGQgbG9hZCB0aGUgVVJMIGZyb20gdGhlICdzcmMnIEBhdHRyIG9m
IHRoZSAmbHQ7ZW1iZWQmZ3Q7IGFuZCAiICsgZW1iZWQzUmVzdWx0ICsgIi4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgZGVidWcoIkFuICZsdDtvYmplY3QmZ3Q7IHdpdGggYSBVUkwgc3BlY2lmaWVk
IGluIGEgJ3NyYycgJmx0O3BhcmFtJmd0OyBhbmQgYSBuZXN0ZWQgJmx0O2VtYmVkJmd0OyBzaG91
bGQgbG9hZCB0aGUgVVJMIGZyb20gdGhlICdzcmMnIEBhdHRyIG9mIHRoZSAmbHQ7ZW1iZWQmZ3Q7
IGFuZCAiICsgZW1iZWQzUmVzdWx0ICsgIi4iKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWco
IkFuICZsdDtvYmplY3QmZ3Q7IHdpdGggYSBVUkwgc3BlY2lmaWVkIGluIGEgJ3NyYycgJmx0O3Bh
cmFtJmd0OyBhbmQgYSBNSU1FIHR5cGUgc3BlY2lmaWVkIGluIGEgJ3R5cGUnICZsdDtwYXJhbSZn
dDsgc2hvdWxkIGxvYWQgdGhlIFVSTCBmcm9tIHRoZSAnc3JjJyAmbHQ7cGFyYW0mZ3Q7IGFuZCAi
ICsgb2JqZWN0NVJlc3VsdCArICIuIik7CisgICAgICAgICAgICAgICAgICAgIG5vdGlmaWVkID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKICAgICAgICAgICAgICAgICB9CkBAIC0zOCwxOCArNDcsMjYgQEAKICAgICAgICAgPC9z
Y3JpcHQ+CiAgICAgPC9oZWFkPgogICAgIDxib2R5PgorICAgICAgICA8cD5UaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCB0aGUgcmlnaHQgVVJMIGlzIGxvYWRlZCB3aGVuIHRoZXJlIGlzIGFuICZsdDtv
YmplY3QmZ3Q7IHdpdGggYSAnc3JjJyAmbHQ7cGFyYW0mZ3Q7IGFuZCBhIGZhbGxiYWNrICZsdDtl
bWJlZCZndDsuPC9wPgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KICAgICAgICAg
PG9iamVjdCBpZD0ib2JqZWN0MSIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRz
Y2FwZSIgZGF0YT0ib2JqZWN0LWF0dHIiPgotICAgICAgICAgICAgPHBhcmFtIGlkPSJwYXJhbTEi
IG5hbWU9InNyYyIgdmFsdWU9Im9iamVjdC1wYXJhbSI+PC9wYXJhbT4KKyAgICAgICAgICAgIDxw
YXJhbSBuYW1lPSJzcmMiIHZhbHVlPSJvYmplY3QtcGFyYW0iPjwvcGFyYW0+CiAgICAgICAgICAg
ICA8ZW1iZWQgaWQ9ImVtYmVkMSIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRz
Y2FwZSIgc3JjPSJlbWJlZC1hdHRyIj4KICAgICAgICAgPC9vYmplY3Q+CiAgICAgICAgIDxvYmpl
Y3QgaWQ9Im9iamVjdDIiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUi
PgotICAgICAgICAgICAgPHBhcmFtIGlkPSJwYXJhbTIiIG5hbWU9Im1vdmllIiB2YWx1ZT0ib2Jq
ZWN0LXBhcmFtIj48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1
ZT0ib2JqZWN0LXBhcmFtIj48L3BhcmFtPgogICAgICAgICAgICAgPGVtYmVkIGlkPSJlbWJlZDIi
IHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiIHNyYz0iZW1iZWQtYXR0
ciI+CiAgICAgICAgIDwvb2JqZWN0PgogICAgICAgICA8b2JqZWN0IGlkPSJvYmplY3QzIj4KICAg
ICAgICAgICAgIDxlbWJlZCBpZD0iZW1iZWQzIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10
ZXN0LW5ldHNjYXBlIiBzcmM9ImVtYmVkLWF0dHIiPgogICAgICAgICA8L29iamVjdD4KLSAgICAg
ICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHJpZ2h0IFVSTCBpcyBsb2FkZWQgd2hl
biB0aGVyZSBpcyBhbiAmbHQ7b2JqZWN0Jmd0OyB3aXRoIGEgJ3NyYycgJmx0O3BhcmFtJmd0OyBh
bmQgYSBmYWxsYmFjayAmbHQ7ZW1iZWQmZ3Q7LjwvcD4KLSAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDxvYmplY3QgaWQ9Im9iamVjdDQiPgorICAgICAgICAgICAgPHBh
cmFtIG5hbWU9ImNvZGUiIHZhbHVlPSJvYmplY3QtcGFyYW0iPjwvcGFyYW0+CisgICAgICAgICAg
ICA8ZW1iZWQgaWQ9ImVtYmVkNCIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRz
Y2FwZSIgc3JjPSJlbWJlZC1hdHRyIj4KKyAgICAgICAgPC9vYmplY3Q+CisgICAgICAgIDxvYmpl
Y3QgaWQ9Im9iamVjdDUiPgorICAgICAgICAgICAgPHBhcmFtIG5hbWU9InVybCIgdmFsdWU9Im9i
amVjdC1wYXJhbSI+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJ0eXBlIiB2YWx1
ZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSI+PC9wYXJhbT4KKyAgICAgICAg
PC9vYmplY3Q+CiAgICAgPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66850</attachid>
            <date>2010-09-07 23:59:49 -0700</date>
            <delta_ts>2010-09-08 06:52:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45364-20100907235948.patch</filename>
            <type>text/plain</type>
            <size>13548</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Njk0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTAtMDktMDcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZhbGxi
YWNrIGNvbnRlbnQgc2hvdWxkIGJlIHJlbmRlcmVkIHdoZW4gYW4gPG9iamVjdD4gZG9lc24ndCBz
cGVjaWZ5IGEKKyAgICAgICAgZGF0YSwgdHlwZSBvciBjbGFzc2lkIGF0dHJpYnV0ZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MzY0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS84Mzc1ODE2PgorCisgICAgICAgIEhUTUw1IHNheXMgdGhhdCBpZiBu
byBkYXRhIG9yIHR5cGUgYXR0cmlidXRlIGlzIHNwZWNpZmllZCBvbiBhbiA8b2JqZWN0PiwKKyAg
ICAgICAgZmFsbGJhY2sgY29udGVudCBzaG91bGQgYmUgcmVuZGVyZWQuIEhvd2V2ZXIsIFdlYktp
dCBoYXMgdHJhZGl0aW9uYWxseQorICAgICAgICBzdXBwb3J0ZWQgc3BlY2lmeWluZyBhIFVSTCBh
bmQgTUlNRSB0eXBlIGluIDxwYXJhbT4gZWxlbWVudHMuIAorCisgICAgICAgIFRvIG1vcmUgY2xv
c2VseSBtYXRjaCB0aGUgc3BlYyB3aGlsZSBtYWludGFpbmluZyBjb21wYXRpYmlsaXR5IHdpdGgK
KyAgICAgICAgY29udGVudCB0aGF0IHJlbGllZCBvbiBvdXIgb2xkIGJlaGF2aW9yLCB3ZSB3aWxs
IGNvbnRpbnVlIHRvIGxvYWQKKyAgICAgICAgYSByZXNvdXJjZSBzcGVjaWZpZWQgYnkgPHBhcmFt
PiBlbGVtZW50cyBpZiB3ZSBjYW4gZGV0ZXJtaW5lIGEgcHJpb3JpCisgICAgICAgIHRoYXQgaXQg
d2lsbCBiZSBoYW5kbGVkIGJ5IGEgcGx1Zy1pbi4gCisKKyAgICAgICAgSWYgd2UgY2FuJ3QgbWFr
ZSB0aGlzIGRldGVybWluYXRpb24sIGFuZCB0aGUgPG9iamVjdD4gZWxlbWVudCBoYXMgbm8KKyAg
ICAgICAgImRhdGEiIG9yICJ0eXBlIiBhdHRyaWJ1dGUsIHRoZSA8cGFyYW0+IGVsZW1lbnRzIHdp
bGwgYmUgaWdub3JlZCBhbmQKKyAgICAgICAgZmFsbGJhY2sgY29udGVudCB3aWxsIGJlIHJlbmRl
cmVkLiBPdGhlcndpc2UsIHRoZXJlIGlzIG5vIGNoYW5nZSBpbgorICAgICAgICBiZWhhdmlvci4K
KworICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4pOiBJZiBhbiBlbXB0eSB1
cmwgaXMKKyAgICAgICAgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gYW5kIGEgPHBhcmFtPiBleGlz
dHMgdGhhdCBzcGVjaWZpZXMgYSB1cmwgdGhhdAorICAgICAgICByZWZlcmVuY2VzIGEgcGx1Zy1p
biByZXNvdXJjZSwgc2V0IGl0IHRvIHVybCwgbWFraW5nIGl0IHRoZSB1cmwgdGhhdAorICAgICAg
ICB3aWxsIGJlIGxvYWRlZCBieSB0aGUgPG9iamVjdD4gZWxlbWVudC4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxPYmplY3RFbGVtZW50Ojp1cGRhdGVXaWRnZXQpOiBJZiBubyB0eXBlIGF0dHJpYnV0
ZSB3YXMKKyAgICAgICAgc3BlY2lmaWVkLCBidXQgdGhlcmUgaXMgYSBjbGFzc2lkIGF0dHJpYnV0
ZSwgdHJ5IHRvIG1hcCB0aGUgY2xhc3NpZCB0bworICAgICAgICBhIE1JTUUgdHlwZS4gVGhpcyBu
ZWVkcyB0byBiZSBkb25lIGJlZm9yZSBjYWxsaW5nCisgICAgICAgIEhUTUxPYmplY3RFbGVtZW50
OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKCkuCisgICAgICAgICogbG9hZGVyL1N1YmZyYW1lTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpyZXNvdXJjZVdpbGxVc2VQ
bHVnaW4pOiBNYWtlIGEgcHVibGljIG1ldGhvZAorICAgICAgICB0aGF0IGRldGVybWluZXMgaWYg
YSByZXNvdXJjZSB3aWxsIGxvYWQgYSBwbHVnLWluIGJhc2VkIG9uIGl0cyB1cmwgYW5kCisgICAg
ICAgIE1JTUUgdHlwZS4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcKKyAgICAgICAgU3Vi
ZnJhbWVMb2FkZXI6OnNob3VsZFVzZVBsdWdpbigpLCBidXQgZG9lcyBub3QgYnVyZGVuIHRoZSBj
YWxsZXIgd2l0aAorICAgICAgICB0aGUgZGV0YWlscyBvZiBmYWxsYmFjayBjb250ZW50LgorICAg
ICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRlci5oOgorCiAyMDEwLTA5LTA3ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENocmlz
IE1hcnJpbi4KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24gNjY5
MDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjMsNiArMTYzLDcgQEAgc3RhdGljIHZvaWQgbWFwRGF0YVBhcmFtVG9TcmMoVmVjdG9y
PFN0cgogdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyYW1ldGVyc0ZvclBsdWdpbihWZWN0b3I8
U3RyaW5nPiYgcGFyYW1OYW1lcywgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBTdHJpbmcm
IHVybCwgU3RyaW5nJiBzZXJ2aWNlVHlwZSkKIHsKICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqLCBD
YXNlRm9sZGluZ0hhc2g+IHVuaXF1ZVBhcmFtTmFtZXM7CisgICAgU3RyaW5nIHVybFBhcmFtOwog
ICAgIAogICAgIC8vIFNjYW4gdGhlIFBBUkFNIGNoaWxkcmVuIGFuZCBzdG9yZSB0aGVpciBuYW1l
L3ZhbHVlIHBhaXJzLgogICAgIC8vIEdldCB0aGUgVVJMIGFuZCB0eXBlIGZyb20gdGhlIHBhcmFt
cyBpZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgdGhlbS4KQEAgLTE4MCw4ICsxODEsOCBAQCB2b2lk
IEhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1CiAgICAgICAgIHBhcmFtVmFsdWVz
LmFwcGVuZChwLT52YWx1ZSgpKTsKIAogICAgICAgICAvLyBGSVhNRTogdXJsIGFkanVzdG1lbnQg
ZG9lcyBub3QgYmVsb25nIGluIHRoaXMgZnVuY3Rpb24uCi0gICAgICAgIGlmICh1cmwuaXNFbXB0
eSgpICYmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic3JjIikgfHwgZXF1YWxJZ25vcmluZ0Nh
c2UobmFtZSwgIm1vdmllIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgImNvZGUiKSB8fCBl
cXVhbElnbm9yaW5nQ2FzZShuYW1lLCAidXJsIikpKQotICAgICAgICAgICAgdXJsID0gZGVwcmVj
YXRlZFBhcnNlVVJMKHAtPnZhbHVlKCkpOworICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSAmJiB1
cmxQYXJhbS5pc0VtcHR5KCkgJiYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJzcmMiKSB8fCBl
cXVhbElnbm9yaW5nQ2FzZShuYW1lLCAibW92aWUiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1l
LCAiY29kZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJ1cmwiKSkpCisgICAgICAgICAg
ICB1cmxQYXJhbSA9IGRlcHJlY2F0ZWRQYXJzZVVSTChwLT52YWx1ZSgpKTsKICAgICAgICAgLy8g
RklYTUU6IHNlcnZpY2VUeXBlIGNhbGN1bGF0aW9uIGRvZXMgbm90IGJlbG9uZyBpbiB0aGlzIGZ1
bmN0aW9uLgogICAgICAgICBpZiAoc2VydmljZVR5cGUuaXNFbXB0eSgpICYmIGVxdWFsSWdub3Jp
bmdDYXNlKG5hbWUsICJ0eXBlIikpIHsKICAgICAgICAgICAgIHNlcnZpY2VUeXBlID0gcC0+dmFs
dWUoKTsKQEAgLTIxNyw5ICsyMTgsMTMgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyYW1l
dGVyc0ZvclBsdQogICAgIAogICAgIG1hcERhdGFQYXJhbVRvU3JjKCZwYXJhbU5hbWVzLCAmcGFy
YW1WYWx1ZXMpOwogICAgIAotICAgIC8vIElmIHdlIHN0aWxsIGRvbid0IGhhdmUgYSB0eXBlLCB0
cnkgdG8gbWFwIGZyb20gYSBzcGVjaWZpYyBDTEFTU0lEIHRvIGEgdHlwZS4KLSAgICBpZiAoc2Vy
dmljZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICBzZXJ2aWNlVHlwZSA9IHNlcnZpY2VUeXBlRm9y
Q2xhc3NJZChjbGFzc0lkKCkpOworICAgIC8vIEhUTUw1IHNheXMgdGhhdCBhbiBvYmplY3QgcmVz
b3VyY2UncyBVUkwgaXMgc3BlY2lmaWVkIGJ5IHRoZSBvYmplY3QncyBkYXRhCisgICAgLy8gYXR0
cmlidXRlLCBub3QgYnkgYSBwYXJhbSBlbGVtZW50LiBIb3dldmVyLCBmb3IgY29tcGF0aWJpbGl0
eSwgYWxsb3cgdGhlCisgICAgLy8gcmVzb3VyY2UncyBVUkwgdG8gYmUgZ2l2ZW4gYnkgYSBwYXJh
bSBuYW1lZCAic3JjIiwgIm1vdmllIiwgImNvZGUiIG9yICJ1cmwiCisgICAgLy8gaWYgd2Uga25v
dyB0aGF0IHJlc291cmNlIHBvaW50cyB0byBhIHBsdWctaW4uCisgICAgU3ViZnJhbWVMb2FkZXIq
IGxvYWRlciA9IGRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigp
OworICAgIGlmICh1cmwuaXNFbXB0eSgpICYmIGxvYWRlci0+cmVzb3VyY2VXaWxsVXNlUGx1Z2lu
KHVybFBhcmFtLCBzZXJ2aWNlVHlwZSkpCisgICAgICAgIHVybCA9IHVybFBhcmFtOwogfQogCiAg
ICAgCkBAIC0yNTAsNyArMjU1LDEyIEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZVdp
ZGdldChib28KICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIHVybCA9IHRoaXMtPnVybCgp
OworICAgIAorICAgIC8vIElmIHRoZSBvYmplY3QgZG9lcyBub3Qgc3BlY2lmeSBhIE1JTUUgdHlw
ZSB2aWEgYSB0eXBlIGF0dHJpYnV0ZSwgYnV0IGRvZXMKKyAgICAvLyBjb250YWluIGEgY2xhc3Np
ZCBhdHRyaWJ1dGUsIHRyeSB0byBtYXAgdGhlIGNsYXNzaWQgdG8gYSBNSU1FIHR5cGUuCiAgICAg
U3RyaW5nIHNlcnZpY2VUeXBlID0gdGhpcy0+c2VydmljZVR5cGUoKTsKKyAgICBpZiAoc2Vydmlj
ZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICBzZXJ2aWNlVHlwZSA9IHNlcnZpY2VUeXBlRm9yQ2xh
c3NJZChjbGFzc0lkKCkpOwogCiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBqb2luZWQg
aW50byBhIFBsdWdpblBhcmFtZXRlcnMgY2xhc3MuCiAgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1O
YW1lczsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDY2OTA0KQor
KysgV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
Nyw2ICs4NywxNSBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUoSFRNTEZyCiAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KKyAgICAKK2Jvb2wgU3ViZnJhbWVMb2FkZXI6OnJlc291cmNl
V2lsbFVzZVBsdWdpbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
K3sKKyAgICBLVVJMIGNvbXBsZXRlZFVSTDsKKyAgICBpZiAoIXVybC5pc0VtcHR5KCkpCisgICAg
ICAgIGNvbXBsZXRlZFVSTCA9IGNvbXBsZXRlVVJMKHVybCk7CisgICAgYm9vbCB1c2VGYWxsYmFj
azsKKyAgICByZXR1cm4gc2hvdWxkVXNlUGx1Z2luKGNvbXBsZXRlZFVSTCwgbWltZVR5cGUsIGZh
bHNlLCB1c2VGYWxsYmFjayk7Cit9CiAKIGJvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RPYmpl
Y3QoSFRNTFBsdWdJbkltYWdlRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsCiAgICAgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcykKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaAkocmV2aXNpb24g
NjY5MDQpCisrKyBXZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC03NSw2ICs3NSw4IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93UGx1Z2lucyhSZWFzb25G
b3JDYWxsaW5nQWxsb3dQbHVnaW5zKTsKIAogICAgIGJvb2wgY29udGFpbnNQbHVnaW5zKCkgY29u
c3QgeyByZXR1cm4gbV9jb250YWluc1BsdWdpbnM7IH0KKyAgICAKKyAgICBib29sIHJlc291cmNl
V2lsbFVzZVBsdWdpbihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToK
ICAgICBGcmFtZSogbG9hZE9yUmVkaXJlY3RTdWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQq
LCBjb25zdCBLVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIGJvb2wgbG9ja0hp
c3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2Njk0
NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDEwLTA5LTA3ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGYWxsYmFjayBjb250ZW50
IHNob3VsZCBiZSByZW5kZXJlZCB3aGVuIGFuIDxvYmplY3Q+IGRvZXNuJ3Qgc3BlY2lmeSBhCisg
ICAgICAgIGRhdGEsIHR5cGUgb3IgY2xhc3NpZCBhdHRyaWJ1dGUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTM2NAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vODM3NTgxNj4KKworICAgICAgICAqIGZhc3QvcmVwbGFjZWQvb2JqZWN0LXBhcmFtLXVy
bC1jb250cm9sLWNoYXIuaHRtbDoKKyAgICAgICAgKiBmYXN0L3JlcGxhY2VkL29iamVjdC13aXRo
LWVtYmVkLXVybC1wYXJhbS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9yZXBsYWNlZC9v
YmplY3Qtd2l0aC1lbWJlZC11cmwtcGFyYW0uaHRtbDoKKwogMjAxMC0wOS0wNyAgT2phbiBWYWZh
aSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJh
LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmplY3QtcGFyYW0tdXJsLWNvbnRy
b2wtY2hhci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvb2Jq
ZWN0LXBhcmFtLXVybC1jb250cm9sLWNoYXIuaHRtbAkocmV2aXNpb24gNjY5MDQpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3JlcGxhY2VkL29iamVjdC1wYXJhbS11cmwtY29udHJvbC1jaGFyLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICAgICAgICAgPC9zY3JpcHQ+CiAgICAg
PC9oZWFkPgogICAgIDxib2R5PgotICAgICAgICA8b2JqZWN0IHdpZHRoPSIwIiBoZWlnaHQ9IjAi
PgorICAgICAgICA8b2JqZWN0IHdpZHRoPSIwIiBoZWlnaHQ9IjAiIHR5cGU9ImFwcGxpY2F0aW9u
L3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPgogICAgICAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmll
IiB2YWx1ZT0iIBwgIHVSbCgnc2NoZW1lOi8vdXJsLXdpdGgtBWNvbnRyb2wtY2hhci8nKSAeICI+
CiAgICAgICAgIDwvb2JqZWN0PgogICAgICAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBh
IFVSTCBzcGVjaWZpZWQgaW4gYSAmbHQ7cGFyYW0mZ3Q7IG9mIGFuICZsdDtvYmplY3QmZ3Q7IGlz
IHBhcnNlZCB0aGUgc2FtZSBhcyBpZiBpdCB3YXMgc3BlY2lmaWVkIGFzIHRoZSBkYXRhIGF0dHJp
YnV0ZSBvZiB0aGUgJmx0O29iamVjdCZndDsuIFNwZWNpZmljYWxseSwgdGhpcyB2ZXJpZmllcyB0
aGF0IGNvbnRyb2wgY2hhcmFjdGVycyBhbmQgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlIGFy
ZSBzdHJpcHBlZCwgYW5kIHRoYXQgYSByZXNvdXJjZSBzdXJyb3VuZGVkIHdpdGggdXJsKCcnKSBp
cyB1bmRlcnN0b29kLjwvcD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvb2JqZWN0
LXdpdGgtZW1iZWQtdXJsLXBhcmFtLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L3JlcGxhY2VkL29iamVjdC13aXRoLWVtYmVkLXVybC1wYXJhbS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDY2OTA0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmplY3Qt
d2l0aC1lbWJlZC11cmwtcGFyYW0tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcg
KzEsOCBAQAotICAgCiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgcmlnaHQgVVJMIGlzIGxv
YWRlZCB3aGVuIHRoZXJlIGlzIGFuIDxvYmplY3Q+IHdpdGggYSAnc3JjJyA8cGFyYW0+IGFuZCBh
IGZhbGxiYWNrIDxlbWJlZD4uCiAKIEFuIDxvYmplY3Q+IHdpdGggYSAnZGF0YScgQGF0dHIgYW5k
IGEgJ3NyYycgPHBhcmFtPiBzaG91bGQgbG9hZCB0aGUgVVJMIGZyb20gdGhlICdkYXRhJyBAYXR0
ciBhbmQgZG9lcy4KIEFuIDxvYmplY3Q+IHdpdGggYSAnc3JjJyA8cGFyYW0+IHNob3VsZCBsb2Fk
IHRoZSBVUkwgZnJvbSB0aGUgJ3NyYycgPHBhcmFtPiBhbmQgZG9lcy4KIEFuIDxvYmplY3Q+IHdp
dGggbm8gVVJMIHNwZWNpZmllZCBhbmQgYSBuZXN0ZWQgPGVtYmVkPiBzaG91bGQgbG9hZCB0aGUg
VVJMIGZyb20gdGhlICdzcmMnIEBhdHRyIG9mIHRoZSA8ZW1iZWQ+IGFuZCBkb2VzLgotCitBbiA8
b2JqZWN0PiB3aXRoIGEgVVJMIHNwZWNpZmllZCBpbiBhICdzcmMnIDxwYXJhbT4gYW5kIGEgbmVz
dGVkIDxlbWJlZD4gc2hvdWxkIGxvYWQgdGhlIFVSTCBmcm9tIHRoZSAnc3JjJyBAYXR0ciBvZiB0
aGUgPGVtYmVkPiBhbmQgZG9lcy4KK0FuIDxvYmplY3Q+IHdpdGggYSBVUkwgc3BlY2lmaWVkIGlu
IGEgJ3NyYycgPHBhcmFtPiBhbmQgYSBNSU1FIHR5cGUgc3BlY2lmaWVkIGluIGEgJ3R5cGUnIDxw
YXJhbT4gc2hvdWxkIGxvYWQgdGhlIFVSTCBmcm9tIHRoZSAnc3JjJyA8cGFyYW0+IGFuZCBkb2Vz
LgorICAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL29iamVjdC13aXRoLWVt
YmVkLXVybC1wYXJhbS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVwbGFj
ZWQvb2JqZWN0LXdpdGgtZW1iZWQtdXJsLXBhcmFtLmh0bWwJKHJldmlzaW9uIDY2OTA0KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmplY3Qtd2l0aC1lbWJlZC11cmwtcGFyYW0uaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtOSw5ICs5LDExIEBACiAgICAgICAgICAgICB2YXIgb2JqZWN0
MVJlc3VsdCA9ICIiOwogICAgICAgICAgICAgdmFyIG9iamVjdDJSZXN1bHQgPSAiIjsKICAgICAg
ICAgICAgIHZhciBlbWJlZDNSZXN1bHQgPSAiIjsKKyAgICAgICAgICAgIHZhciBlbWJlZDRSZXN1
bHQgPSAiIjsKKyAgICAgICAgICAgIHZhciBvYmplY3Q1UmVzdWx0ID0gIiI7CisgICAgICAgICAg
ICB2YXIgbm90aWZpZWQgPSBmYWxzZTsKIAogICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiYmVmb3JlbG9hZCIsIGZ1bmN0aW9uKGV2ZW50KSB7Ci0KICAgICAgICAgICAgICAg
ICBpZiAoZXZlbnQudXJsID09ICIiKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgCkBA
IC0yMSwxMiArMjMsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0MlJlc3VsdCA9IChl
dmVudC51cmwgPT0gIm9iamVjdC1wYXJhbSIgPyAiZG9lcyIgOiAiZG9lcyBub3QiKTsKICAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldC5pZCA9PSAiZW1iZWQzIikgewogICAg
ICAgICAgICAgICAgICAgICBlbWJlZDNSZXN1bHQgPSAoZXZlbnQudXJsID09ICJlbWJlZC1hdHRy
IiA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZl
bnQudGFyZ2V0LmlkID09ICJlbWJlZDQiKSB7CisgICAgICAgICAgICAgICAgICAgIGVtYmVkNFJl
c3VsdCA9IChldmVudC51cmwgPT0gImVtYmVkLWF0dHIiID8gImRvZXMiIDogImRvZXMgbm90Iik7
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC50YXJnZXQuaWQgPT0gIm9iamVjdDUi
KSB7CisgICAgICAgICAgICAgICAgICAgIG9iamVjdDVSZXN1bHQgPSAoZXZlbnQudXJsID09ICJv
YmplY3QtcGFyYW0iID8gImRvZXMiIDogImRvZXMgbm90Iik7CiAgICAgICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgaWYgKG9iamVjdDFSZXN1bHQgIT0gIiIgJiYgb2JqZWN0MlJlc3Vs
dCAhPSAiIiAmJiBlbWJlZDNSZXN1bHQgIT0gIiIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW5v
dGlmaWVkICYmIG9iamVjdDFSZXN1bHQgIT0gIiIgJiYgb2JqZWN0MlJlc3VsdCAhPSAiIiAmJiBl
bWJlZDNSZXN1bHQgIT0gIiIgJiYgZW1iZWQ0UmVzdWx0ICE9ICIiICYmIG9iamVjdDVSZXN1bHQg
IT0gIiIpIHsKICAgICAgICAgICAgICAgICAgICAgZGVidWcoIkFuICZsdDtvYmplY3QmZ3Q7IHdp
dGggYSAnZGF0YScgQGF0dHIgYW5kIGEgJ3NyYycgJmx0O3BhcmFtJmd0OyBzaG91bGQgbG9hZCB0
aGUgVVJMIGZyb20gdGhlICdkYXRhJyBAYXR0ciBhbmQgIiArIG9iamVjdDFSZXN1bHQgKyAiLiIp
OwogICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiQW4gJmx0O29iamVjdCZndDsgd2l0aCBhICdz
cmMnICZsdDtwYXJhbSZndDsgc2hvdWxkIGxvYWQgdGhlIFVSTCBmcm9tIHRoZSAnc3JjJyAmbHQ7
cGFyYW0mZ3Q7IGFuZCAiICsgb2JqZWN0MlJlc3VsdCArICIuIik7CiAgICAgICAgICAgICAgICAg
ICAgIGRlYnVnKCJBbiAmbHQ7b2JqZWN0Jmd0OyB3aXRoIG5vIFVSTCBzcGVjaWZpZWQgYW5kIGEg
bmVzdGVkICZsdDtlbWJlZCZndDsgc2hvdWxkIGxvYWQgdGhlIFVSTCBmcm9tIHRoZSAnc3JjJyBA
YXR0ciBvZiB0aGUgJmx0O2VtYmVkJmd0OyBhbmQgIiArIGVtYmVkM1Jlc3VsdCArICIuIik7Cisg
ICAgICAgICAgICAgICAgICAgIGRlYnVnKCJBbiAmbHQ7b2JqZWN0Jmd0OyB3aXRoIGEgVVJMIHNw
ZWNpZmllZCBpbiBhICdzcmMnICZsdDtwYXJhbSZndDsgYW5kIGEgbmVzdGVkICZsdDtlbWJlZCZn
dDsgc2hvdWxkIGxvYWQgdGhlIFVSTCBmcm9tIHRoZSAnc3JjJyBAYXR0ciBvZiB0aGUgJmx0O2Vt
YmVkJmd0OyBhbmQgIiArIGVtYmVkM1Jlc3VsdCArICIuIik7CisgICAgICAgICAgICAgICAgICAg
IGRlYnVnKCJBbiAmbHQ7b2JqZWN0Jmd0OyB3aXRoIGEgVVJMIHNwZWNpZmllZCBpbiBhICdzcmMn
ICZsdDtwYXJhbSZndDsgYW5kIGEgTUlNRSB0eXBlIHNwZWNpZmllZCBpbiBhICd0eXBlJyAmbHQ7
cGFyYW0mZ3Q7IHNob3VsZCBsb2FkIHRoZSBVUkwgZnJvbSB0aGUgJ3NyYycgJmx0O3BhcmFtJmd0
OyBhbmQgIiArIG9iamVjdDVSZXN1bHQgKyAiLiIpOworICAgICAgICAgICAgICAgICAgICBub3Rp
ZmllZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzgsMTggKzQ3LDI2IEBACiAgICAg
ICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4KICAgICA8Ym9keT4KKyAgICAgICAgPHA+VGhpcyB0
ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHJpZ2h0IFVSTCBpcyBsb2FkZWQgd2hlbiB0aGVyZSBpcyBh
biAmbHQ7b2JqZWN0Jmd0OyB3aXRoIGEgJ3NyYycgJmx0O3BhcmFtJmd0OyBhbmQgYSBmYWxsYmFj
ayAmbHQ7ZW1iZWQmZ3Q7LjwvcD4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiAg
ICAgICAgIDxvYmplY3QgaWQ9Im9iamVjdDEiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRl
c3QtbmV0c2NhcGUiIGRhdGE9Im9iamVjdC1hdHRyIj4KLSAgICAgICAgICAgIDxwYXJhbSBpZD0i
cGFyYW0xIiBuYW1lPSJzcmMiIHZhbHVlPSJvYmplY3QtcGFyYW0iPjwvcGFyYW0+CisgICAgICAg
ICAgICA8cGFyYW0gbmFtZT0ic3JjIiB2YWx1ZT0ib2JqZWN0LXBhcmFtIj48L3BhcmFtPgogICAg
ICAgICAgICAgPGVtYmVkIGlkPSJlbWJlZDEiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRl
c3QtbmV0c2NhcGUiIHNyYz0iZW1iZWQtYXR0ciI+CiAgICAgICAgIDwvb2JqZWN0PgogICAgICAg
ICA8b2JqZWN0IGlkPSJvYmplY3QyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5l
dHNjYXBlIj4KLSAgICAgICAgICAgIDxwYXJhbSBpZD0icGFyYW0yIiBuYW1lPSJtb3ZpZSIgdmFs
dWU9Im9iamVjdC1wYXJhbSI+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJtb3Zp
ZSIgdmFsdWU9Im9iamVjdC1wYXJhbSI+PC9wYXJhbT4KICAgICAgICAgICAgIDxlbWJlZCBpZD0i
ZW1iZWQyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIiBzcmM9ImVt
YmVkLWF0dHIiPgogICAgICAgICA8L29iamVjdD4KICAgICAgICAgPG9iamVjdCBpZD0ib2JqZWN0
MyI+CiAgICAgICAgICAgICA8ZW1iZWQgaWQ9ImVtYmVkMyIgdHlwZT0iYXBwbGljYXRpb24veC13
ZWJraXQtdGVzdC1uZXRzY2FwZSIgc3JjPSJlbWJlZC1hdHRyIj4KICAgICAgICAgPC9vYmplY3Q+
Ci0gICAgICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSByaWdodCBVUkwgaXMgbG9h
ZGVkIHdoZW4gdGhlcmUgaXMgYW4gJmx0O29iamVjdCZndDsgd2l0aCBhICdzcmMnICZsdDtwYXJh
bSZndDsgYW5kIGEgZmFsbGJhY2sgJmx0O2VtYmVkJmd0Oy48L3A+Ci0gICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8b2JqZWN0IGlkPSJvYmplY3Q0Ij4KKyAgICAgICAg
ICAgIDxwYXJhbSBuYW1lPSJjb2RlIiB2YWx1ZT0ib2JqZWN0LXBhcmFtIj48L3BhcmFtPgorICAg
ICAgICAgICAgPGVtYmVkIGlkPSJlbWJlZDQiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRl
c3QtbmV0c2NhcGUiIHNyYz0iZW1iZWQtYXR0ciI+CisgICAgICAgIDwvb2JqZWN0PgorICAgICAg
ICA8b2JqZWN0IGlkPSJvYmplY3Q1Ij4KKyAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJ1cmwiIHZh
bHVlPSJvYmplY3QtcGFyYW0iPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0gbmFtZT0idHlw
ZSIgdmFsdWU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPjwvcGFyYW0+Cisg
ICAgICAgIDwvb2JqZWN0PgogICAgIDwvYm9keT4KIDwvaHRtbD4K
</data>
<flag name="review"
          id="55976"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>