<?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>40132</bug_id>
          
          <creation_ts>2010-06-03 11:24:02 -0700</creation_ts>
          <short_desc>AX: presentational role needs to be inherited by required elements</short_desc>
          <delta_ts>2010-06-18 13:18:06 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>40133</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>abarth</cc>
    
    <cc>bdakin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>233847</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-06-03 11:24:02 -0700</bug_when>
    <thetext>The current implementation of &apos;presentation&apos; is correct (no work lost) but incomplete in that it did not support presentation inheritance. The previous draft was somewhat vague in that area, but the description of the presentation role (mainly the part about presentation inheritance) has been completely rewritten as of today. 

http://www.w3.org/WAI/PF/aria/complete#presentation

Changes to WebKit will include inheritance of the presentation role to structural descendants and labeling element unless those elements have an explicit role defined. Also, presentation role is to be ignored if the element is focusable. See referenced portion of spec for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238074</commentid>
    <comment_count>1</comment_count>
      <attachid>58709</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-06-14 15:16:32 -0700</bug_when>
    <thetext>Created attachment 58709
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238075</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-06-14 15:17:28 -0700</bug_when>
    <thetext>this makes sure that WebKit behaves correctly by applying the presentation role status to required elements of an element that is presentational

translation: if &lt;ul&gt; is presentation, &lt;li&gt; will be too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238076</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-14 15:18:45 -0700</bug_when>
    <thetext>Attachment 58709 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/accessibility/AccessibilityRenderObject.cpp:3071:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 6 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>238080</commentid>
    <comment_count>4</comment_count>
      <attachid>58710</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-06-14 15:22:51 -0700</bug_when>
    <thetext>Created attachment 58710
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238513</commentid>
    <comment_count>5</comment_count>
      <attachid>58710</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-06-15 13:00:44 -0700</bug_when>
    <thetext>Comment on attachment 58710
patch

&gt; Index: WebCore/accessibility/AccessibilityRenderObject.cpp
&gt; +Node* AccessibilityRenderObject::node() const
&gt; +{
&gt; +    if (!m_renderer) 
&gt; +        return 0;
&gt; +    return m_renderer-&gt;node();
&gt; +}

You may want to consider a follow-up patch for AccessibilityRenderObject.cpp to switch to using this new node() method, and moving the method to AccessibilityRenderObject.h to make it inline.

&gt;  static inline bool isInlineWithContinuation(RenderObject* renderer)
&gt;  {
&gt; @@ -1738,6 +1745,9 @@
&gt;      if (roleValue() == PresentationalRole)
&gt;          return true;
&gt;      
&gt; +    if (roleValue() == PresentationalRole || inheritsPresentationalRole())
&gt; +        return true;
&gt; +    

You probably want to remove the previous if statement here.

&gt; @@ -3051,6 +3061,45 @@
&gt;      return AccessibilityObject::orientation();
&gt;  }
&gt;      
&gt; +bool AccessibilityRenderObject::inheritsPresentationalRole() const
&gt; +{
&gt; +    // ARIA spec says that when a parent object is presentational, and it has required child elements,
&gt; +    // those child elements are also presentational. For example, &lt;li&gt; becomes presentational from &lt;ul&gt;.

Might be nice to provide a link to the spec here if possible.

&gt; +    bool checkForPresentationalParent = false;
&gt; +    HashSet&lt;QualifiedName&gt; possibleParentTagNames;

Are you sure this HashSet works as intended?  Looking at QualifiedName.cpp, I see it defines:

typedef HashSet&lt;QualifiedName::QualifiedNameImpl*, QualifiedNameHash&gt; QNameSet;

And NodeRareData.h defines:

typedef HashMap&lt;RefPtr&lt;QualifiedName::QualifiedNameImpl&gt;, TagNodeList*&gt; TagNodeListCache;

Looking at const QualifiedName&amp; operator=(const QualifiedName&amp;) in QualifiedName.h leads me to believe that two different QualifiedName objects can point to the same QualiifedNameImpl, in which case you&apos;re not really getting a set.  I suspect you want either the QNameSet from QualifiedName.cpp (to avoid the RefPtr&lt;&gt; overhead) or something like this:

HashSet&lt;RefPtr&lt;QualifiedName::QualifiedNameImpl&gt; &gt; possibleParentTagNames;

&gt; +    switch (roleValue()) {
&gt; +    case ListItemRole:
&gt; +    case ListMarkerRole:
&gt; +        checkForPresentationalParent = true;
&gt; +        possibleParentTagNames.add(ulTag);
&gt; +        possibleParentTagNames.add(olTag);
&gt; +        possibleParentTagNames.add(dlTag);
&gt; +        break;
&gt; +    default:
&gt; +        break;
&gt; +    }

Instead of dynamically creating possibleParentTagNames each time this method is called, it might be nice to define possibleParentTagNames as a pointer (HashSet&lt;RefPtr&lt;QualifiedName::QualifiedNameImpl&gt; &gt; *possibleParentTagNames), then use DEFINE_STATIC_LOCAL() in the ListItemRole/ListMarkerRole case statement to create it and assign it to possibleParentTagNames when needed.  You would need some additional NULL checks of possibleParentTagNames below if you did this.

This would also shortcut some hash lookups in the for loop below if the hash is empty.

&gt; +    // Not all elements need to check for this.
&gt; +    if (!checkForPresentationalParent)
&gt; +        return false;
&gt; +    
&gt; +    for (AccessibilityObject* parent = parentObject(); parent; parent = parent-&gt;parentObject()) { 
&gt; +        if (!parent-&gt;isAccessibilityRenderObject())
&gt; +            continue;
&gt; +        
&gt; +        Node* elementNode = static_cast&lt;AccessibilityRenderObject*&gt;(parent)-&gt;node();
&gt; +        if (!elementNode || !elementNode-&gt;isElementNode())
&gt; +            continue;
&gt; +        
&gt; +        // If native tag of the parent element matches an acceptable name, then return
&gt; +        // based on its presentational status.
&gt; +        if (possibleParentTagNames.contains(static_cast&lt;Element*&gt;(elementNode)-&gt;tagQName()))
&gt; +            return parent-&gt;roleValue() == PresentationalRole;
&gt; +    }
&gt; +    
&gt; +    return false;
&gt; +}

r- to remove the redundant if statement and to fix the HashSet&lt;QualifiedName&gt; issue.  The rest is optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238516</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-06-15 13:08:14 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 58710 [details])
&gt; &gt; +    bool checkForPresentationalParent = false;
&gt; &gt; +    HashSet&lt;QualifiedName&gt; possibleParentTagNames;
&gt; 
&gt; Are you sure this HashSet works as intended?  Looking at QualifiedName.cpp, I see it defines:
&gt; 
&gt; typedef HashSet&lt;QualifiedName::QualifiedNameImpl*, QualifiedNameHash&gt; QNameSet;
&gt; 
&gt; And NodeRareData.h defines:
&gt; 
&gt; typedef HashMap&lt;RefPtr&lt;QualifiedName::QualifiedNameImpl&gt;, TagNodeList*&gt; TagNodeListCache;
&gt; 
&gt; Looking at const QualifiedName&amp; operator=(const QualifiedName&amp;) in QualifiedName.h leads me to believe that two different QualifiedName objects can point to the same QualiifedNameImpl, in which case you&apos;re not really getting a set.  I suspect you want either the QNameSet from QualifiedName.cpp (to avoid the RefPtr&lt;&gt; overhead) or something like this:
&gt; 
&gt; HashSet&lt;RefPtr&lt;QualifiedName::QualifiedNameImpl&gt; &gt; possibleParentTagNames;

Ignore my above comments.  The code at the bottom of QualifiedName.h handles the hashing for you.  It&apos;s interesting that it doesn&apos;t appear to be used elsewhere in WebCore, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238947</commentid>
    <comment_count>7</comment_count>
      <attachid>58905</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-06-16 10:33:01 -0700</bug_when>
    <thetext>Created attachment 58905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238949</commentid>
    <comment_count>8</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-06-16 10:33:31 -0700</bug_when>
    <thetext>addressed all of david&apos;s comments in this latest patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239706</commentid>
    <comment_count>9</comment_count>
      <attachid>58905</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-06-17 19:24:47 -0700</bug_when>
    <thetext>Comment on attachment 58905
Patch

WebCore/accessibility/AccessibilityRenderObject.cpp:3059
 +      DEFINE_STATIC_LOCAL(HashSet&lt;QualifiedName&gt;, listItemParents, ());
This static local should be defined within the scope of the switch statement below so it&apos;s only created when it&apos;s needed.

WebCore/accessibility/AccessibilityRenderObject.cpp:3065
 +      case ListMarkerRole:
The static local variable should be defined here.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240038</commentid>
    <comment_count>10</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-06-18 10:59:42 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/61421</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240041</commentid>
    <comment_count>11</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-06-18 11:14:32 -0700</bug_when>
    <thetext>doesn&apos;t work on windows

c:\cygwin\home\buildbot\slave\win-release\build\WebCore\accessibility\AccessibilityRenderObject.cpp(3072) : error C2361: initialization of &apos;listItemParents&apos; is skipped by &apos;default&apos; label
        c:\cygwin\home\buildbot\slave\win-release\build\WebCore\accessibility\AccessibilityRenderObject.cpp(3064) : see declaration of &apos;listItemParents&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240045</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-18 11:15:29 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/61421 might have broken Chromium Win Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240076</commentid>
    <comment_count>13</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-06-18 12:38:07 -0700</bug_when>
    <thetext>tiger and leopard are equipped to deal with lists. will ignore those tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240079</commentid>
    <comment_count>14</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-06-18 12:46:10 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/61427
to skip the tests on tiger and leopard since lists are not supported there</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240088</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-18 13:10:12 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/61427 might have broken SnowLeopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240093</commentid>
    <comment_count>16</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-06-18 13:18:06 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; http://trac.webkit.org/changeset/61427 might have broken SnowLeopard Intel Release (Tests)

it did not break that bot</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58709</attachid>
            <date>2010-06-14 15:16:32 -0700</date>
            <delta_ts>2010-06-14 15:22:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>10605</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTE1NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDYtMTQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBWDogcHJlc2VudGF0aW9uYWwgcm9sZSBuZWVkcyB0byBiZSBpbmhlcml0ZWQgYnkgcmVxdWly
ZWQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQwMTMyCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW5o
ZXJpdGVkLXByZXNlbnRhdGlvbmFsLWxpc3RzLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpub2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5oZXJpdHNQcmVzZW50YXRpb25hbFJv
bGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5o
OgorCiAyMDEwLTA2LTE0ICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gNjExNTEp
CisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjksNiArMTY5LDggQEAKICAgICAKICAgICB2b2lkIHNldFJlbmRl
cmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRlcmVyOyB9CiAg
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0K
KyAgICBOb2RlKiBub2RlKCkgY29uc3Q7CisgICAgCiAgICAgUmVuZGVyVmlldyogdG9wUmVuZGVy
ZXIoKSBjb25zdDsKICAgICBSZW5kZXJUZXh0Q29udHJvbCogdGV4dENvbnRyb2woKSBjb25zdDsK
ICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKQEAgLTMwNSw2ICszMDcsNyBAQAogICAg
IHZpcnR1YWwgYm9vbCBhcmlhTGl2ZVJlZ2lvbkF0b21pYygpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBhcmlhTGl2ZVJlZ2lvbkJ1c3koKSBjb25zdDsgICAgCiAgICAgCisgICAgYm9vbCBpbmhl
cml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0TmVlZHNUb1VwZGF0
ZUNoaWxkcmVuKCkgY29uc3QgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOyB9CiAgICAgCiAgICAg
bXV0YWJsZSBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGVGb3JNU0FBOwpJbmRleDogV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2
aXNpb24gNjExNTEpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsMTMgQEAKICNlbmRpZgog
ICAgIG1fcmVuZGVyZXIgPSAwOyAgICAKIH0KKyAgICAKK05vZGUqIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6Om5vZGUoKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJlcikgCisgICAgICAg
IHJldHVybiAwOworICAgIHJldHVybiBtX3JlbmRlcmVyLT5ub2RlKCk7Cit9CiAKIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc0lubGluZVdpdGhDb250aW51YXRpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKIHsKQEAgLTE3MzgsNiArMTc0NSw5IEBACiAgICAgaWYgKHJvbGVWYWx1ZSgpID09IFByZXNl
bnRhdGlvbmFsUm9sZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAgaWYgKHJvbGVW
YWx1ZSgpID09IFByZXNlbnRhdGlvbmFsUm9sZSB8fCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9s
ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICAvLyBBbiBBUklBIHRyZWUgY2Fu
IG9ubHkgaGF2ZSB0cmVlIGl0ZW1zIGFuZCBzdGF0aWMgdGV4dCBhcyBjaGlsZHJlbi4KICAgICBp
ZiAoIWlzQWxsb3dlZENoaWxkT2ZUcmVlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzA1
MSw2ICszMDYxLDQ1IEBACiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om9yaWVudGF0
aW9uKCk7CiB9CiAgICAgCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluaGVyaXRz
UHJlc2VudGF0aW9uYWxSb2xlKCkgY29uc3QKK3sKKyAgICAvLyBBUklBIHNwZWMgc2F5cyB0aGF0
IHdoZW4gYSBwYXJlbnQgb2JqZWN0IGlzIHByZXNlbnRhdGlvbmFsLCBhbmQgaXQgaGFzIHJlcXVp
cmVkIGNoaWxkIGVsZW1lbnRzLAorICAgIC8vIHRob3NlIGNoaWxkIGVsZW1lbnRzIGFyZSBhbHNv
IHByZXNlbnRhdGlvbmFsLiBGb3IgZXhhbXBsZSwgPGxpPiBiZWNvbWVzIHByZXNlbnRhdGlvbmFs
IGZyb20gPHVsPi4KKyAgICBib29sIGNoZWNrRm9yUHJlc2VudGF0aW9uYWxQYXJlbnQgPSBmYWxz
ZTsKKyAgICBIYXNoU2V0PFF1YWxpZmllZE5hbWU+IHBvc3NpYmxlUGFyZW50VGFnTmFtZXM7Cisg
ICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgeworICAgICAgICBjYXNlIExpc3RJdGVtUm9sZToKKyAg
ICAgICAgY2FzZSBMaXN0TWFya2VyUm9sZToKKyAgICAgICAgICAgIGNoZWNrRm9yUHJlc2VudGF0
aW9uYWxQYXJlbnQgPSB0cnVlOworICAgICAgICAgICAgcG9zc2libGVQYXJlbnRUYWdOYW1lcy5h
ZGQodWxUYWcpOworICAgICAgICAgICAgcG9zc2libGVQYXJlbnRUYWdOYW1lcy5hZGQob2xUYWcp
OworICAgICAgICAgICAgcG9zc2libGVQYXJlbnRUYWdOYW1lcy5hZGQoZGxUYWcpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9
CisgICAgCisgICAgLy8gTm90IGFsbCBlbGVtZW50cyBuZWVkIHRvIGNoZWNrIGZvciB0aGlzLgor
ICAgIGlmICghY2hlY2tGb3JQcmVzZW50YXRpb25hbFBhcmVudCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50
T2JqZWN0KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgeyAKKyAg
ICAgICAgaWYgKCFwYXJlbnQtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBOb2RlKiBlbGVtZW50Tm9kZSA9IHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqPihwYXJlbnQpLT5ub2RlKCk7Cisg
ICAgICAgIGlmICghZWxlbWVudE5vZGUgfHwgIWVsZW1lbnROb2RlLT5pc0VsZW1lbnROb2RlKCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIG5hdGl2ZSB0
YWcgb2YgdGhlIHBhcmVudCBlbGVtZW50IG1hdGNoZXMgYW4gYWNjZXB0YWJsZSBuYW1lLCB0aGVu
IHJldHVybgorICAgICAgICAvLyBiYXNlZCBvbiBpdHMgcHJlc2VudGF0aW9uYWwgc3RhdHVzLgor
ICAgICAgICBpZiAocG9zc2libGVQYXJlbnRUYWdOYW1lcy5jb250YWlucyhzdGF0aWNfY2FzdDxF
bGVtZW50Kj4oZWxlbWVudE5vZGUpLT50YWdRTmFtZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBw
YXJlbnQtPnJvbGVWYWx1ZSgpID09IFByZXNlbnRhdGlvbmFsUm9sZTsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIGZhbHNlOworfQorICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojppc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkgY29uc3QKIHsKICAgICAvLyBXYWxr
IHRoZSBwYXJlbnQgY2hhaW4gbG9va2luZyBmb3IgYSBwYXJlbnQgdGhhdCBoYXMgcHJlc2VudGF0
aW9uYWwgY2hpbGRyZW4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L2luaGVyaXRlZC1wcmVzZW50YXRpb25hbC1saXN0cy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2luaGVyaXRlZC1wcmVzZW50YXRp
b25hbC1saXN0cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvaW5oZXJpdGVkLXByZXNlbnRhdGlvbmFsLWxpc3RzLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQ+Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
CitBbGwgImxpIiBlbGVtZW50cyBhY2NlcHQgdGhlIGJ1dHRvbiBzaG91bGQgYmUgcHJlc2VudGF0
aW9uYWwuICAgIAorPGRpdiByb2xlPSJncm91cCIgaWQ9ImNvbnRhaW5lcjEiIHRhYmluZGV4PSIw
Ij4KKzx1bCByb2xlPSJwcmVzZW50YXRpb24iPgorICAgIDxsaT5hcHBsZXM8L2xpPgorICAgIDxs
aT5iYW5hbmFzPC9saT4KKyAgICA8bGkgcm9sZT0iYnV0dG9uIj5jYW50YWxvcGU8L2xpPgorICAg
IDxsaT5kYXRlczwvbGk+Cis8L3VsPgorPC9kaXY+CisKK05lc3RlZCBsaXN0IGluc2lkZSBhIHBy
ZXNlbnRhdGlvbmFsIGxpc3Qgc2hvdWxkIG5vdCBiZSBwcmVzZW50YXRpb25hbAorPGRpdiByb2xl
PSJncm91cCIgaWQ9ImNvbnRhaW5lcjIiIHRhYmluZGV4PSIwIj4KKzx1bCByb2xlPSJwcmVzZW50
YXRpb24iPgorICAgIDxsaT5UaGlzIGl0ZW0gc2hvdWxkIG5vdCBleHBvc2UgYW4gQVhHcm91cDsg
PC9saT4KKyAgICA8bGk+dGhpcyBvbmUgc2hvdWxkIG5vdCBlaXRoZXIuPC9saT4KKyAgICA8bGk+
SG93ZXZlciwgYmVjYXVzZSB0aGUgbmVzdGVkIFVMIGFuZCBMSSBkbyBub3QgaGF2ZSBleHBsaWNp
dCByb2xlIG9mIHByZXNlbnRhdGlvbiw8L2xpPgorICAgICAgICA8dWw+CisgICAgICAgICAgICA8
bGk+IHRoaXMgbGlzdCBpdGVtIHNob3VsZCBleHBvc2UgYW4gQVhHcm91cCwgPC9saT4KKyAgICAg
ICAgICAgIDxsaT4gYW5kIHRoaXMgb25lIHNob3VsZCwgdG9vLiA8L2xpPgorICAgICAgICA8L3Vs
PgorICAgIDxsaT5idXQgdGhpcyBvbmUgaXMgc3RhdGljIHRleHQgYWdhaW4uPC9saT4KKzwvdWw+
Cis8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHdoZW4gYSBsaXN0IGhhcyB0aGUgcHJlc2VudGF0
aW9uYWwgcm9sZSwgYW5kIGl0IGhhcyByZXF1aXJlZCByZXF1aXJlZCBjaGlsZHJlbiwgdGhvc2Ug
cmVxdWlyZWQgY2hpbGRyZW4gXCJsaVwiIGFyZSBhbHNvIHByZXNlbnRhdGlvbmFsLiIpOworCisg
ICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICAgICAgIC8vIHRl
c3QgdGhlIGxpc3QgaW4gY29udGFpbmVyIDEKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnRhaW5lcjEiKS5mb2N1cygpOworICAgICAgICB2YXIgY29udGFpbmVyID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIHNob3VsZEJlKCJjb250
YWluZXIuY2hpbGRBdEluZGV4KDApLnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOwor
ICAgICAgICBzaG91bGRCZSgiY29udGFpbmVyLmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIs
ICInQVhWYWx1ZTogYXBwbGVzJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGFpbmVyLmNoaWxk
QXRJbmRleCgxKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogYmFuYW5hcyciKTsKKyAgICAgICAg
c2hvdWxkQmUoImNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMykuc3RyaW5nVmFsdWUiLCAiJ0FYVmFs
dWU6IGRhdGVzJyIpOworCisgICAgICAgIHNob3VsZEJlKCJjb250YWluZXIuY2hpbGRBdEluZGV4
KDIpLnJvbGUiLCAiJ0FYUm9sZTogQVhCdXR0b24nIik7CisgICAgICAgIHNob3VsZEJlKCJjb250
YWluZXIuY2hpbGRBdEluZGV4KDIpLnRpdGxlIiwgIidBWFRpdGxlOiBjYW50YWxvcGUnIik7CisK
KyAgICAgICAgLy8gdGVzdCB0aGUgbGlzdCBpbiBjb250YWluZXIgMgorICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyMiIpLmZvY3VzKCk7CisgICAgICAgIHZhciBjb250
YWluZXIyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAg
IHNob3VsZEJlKCJjb250YWluZXIyLmNoaWxkQXRJbmRleCgwKS5yb2xlIiwgIidBWFJvbGU6IEFY
U3RhdGljVGV4dCciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRhaW5lcjIuY2hpbGRBdEluZGV4
KDEpLnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOworICAgICAgICBzaG91bGRCZSgi
Y29udGFpbmVyMi5jaGlsZEF0SW5kZXgoMikucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQn
Iik7CisgICAgICAgIHNob3VsZEJlKCJjb250YWluZXIyLmNoaWxkQXRJbmRleCg0KS5yb2xlIiwg
IidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsKKworICAgICAgICAvLyB0aGlzIG5lc3RlZCBsaXN0
IHNob3VsZCBub3QgaW5oZXJpdCBwcmVzZW50YXRpb25hbAorICAgICAgICBzaG91bGRCZSgiY29u
dGFpbmVyMi5jaGlsZEF0SW5kZXgoMykucm9sZSIsICInQVhSb2xlOiBBWExpc3QnIik7CisgICAg
ICAgIHNob3VsZEJlKCJjb250YWluZXIyLmNoaWxkQXRJbmRleCgzKS5jaGlsZEF0SW5kZXgoMCku
cm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGFpbmVy
Mi5jaGlsZEF0SW5kZXgoMykuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5yb2xlIiwg
IidBWFJvbGU6IEFYTGlzdE1hcmtlciciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRhaW5lcjIu
Y2hpbGRBdEluZGV4KDMpLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMSkucm9sZSIsICIn
QVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CisgICAgICAgCisgICAgfQorCisgICAgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2luaGVyaXRl
ZC1wcmVzZW50YXRpb25hbC1saXN0cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW5oZXJpdGVkLXByZXNlbnRhdGlvbmFs
LWxpc3RzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L2luaGVyaXRlZC1wcmVzZW50YXRpb25hbC1saXN0cy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKK1RoaXMgdGVzdHMgdGhhdCB3aGVu
IGEgbGlzdCBoYXMgdGhlIHByZXNlbnRhdGlvbmFsIHJvbGUsIGFuZCBpdCBoYXMgcmVxdWlyZWQg
cmVxdWlyZWQgY2hpbGRyZW4sIHRob3NlIHJlcXVpcmVkIGNoaWxkcmVuICJsaSIgYXJlIGFsc28g
cHJlc2VudGF0aW9uYWwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitBbGwgImxp
IiBlbGVtZW50cyBhY2NlcHQgdGhlIGJ1dHRvbiBzaG91bGQgYmUgcHJlc2VudGF0aW9uYWwuCith
cHBsZXMKK2JhbmFuYXMKK2NhbnRhbG9wZQorZGF0ZXMKK05lc3RlZCBsaXN0IGluc2lkZSBhIHBy
ZXNlbnRhdGlvbmFsIGxpc3Qgc2hvdWxkIG5vdCBiZSBwcmVzZW50YXRpb25hbAorVGhpcyBpdGVt
IHNob3VsZCBub3QgZXhwb3NlIGFuIEFYR3JvdXA7Cit0aGlzIG9uZSBzaG91bGQgbm90IGVpdGhl
ci4KK0hvd2V2ZXIsIGJlY2F1c2UgdGhlIG5lc3RlZCBVTCBhbmQgTEkgZG8gbm90IGhhdmUgZXhw
bGljaXQgcm9sZSBvZiBwcmVzZW50YXRpb24sCit0aGlzIGxpc3QgaXRlbSBzaG91bGQgZXhwb3Nl
IGFuIEFYR3JvdXAsCithbmQgdGhpcyBvbmUgc2hvdWxkLCB0b28uCitidXQgdGhpcyBvbmUgaXMg
c3RhdGljIHRleHQgYWdhaW4uCitQQVNTIGNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMCkucm9sZSBp
cyAnQVhSb2xlOiBBWFN0YXRpY1RleHQnCitQQVNTIGNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMCku
c3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IGFwcGxlcycKK1BBU1MgY29udGFpbmVyLmNoaWxkQXRJ
bmRleCgxKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogYmFuYW5hcycKK1BBU1MgY29udGFpbmVy
LmNoaWxkQXRJbmRleCgzKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogZGF0ZXMnCitQQVNTIGNv
bnRhaW5lci5jaGlsZEF0SW5kZXgoMikucm9sZSBpcyAnQVhSb2xlOiBBWEJ1dHRvbicKK1BBU1Mg
Y29udGFpbmVyLmNoaWxkQXRJbmRleCgyKS50aXRsZSBpcyAnQVhUaXRsZTogY2FudGFsb3BlJwor
UEFTUyBjb250YWluZXIyLmNoaWxkQXRJbmRleCgwKS5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGlj
VGV4dCcKK1BBU1MgY29udGFpbmVyMi5jaGlsZEF0SW5kZXgoMSkucm9sZSBpcyAnQVhSb2xlOiBB
WFN0YXRpY1RleHQnCitQQVNTIGNvbnRhaW5lcjIuY2hpbGRBdEluZGV4KDIpLnJvbGUgaXMgJ0FY
Um9sZTogQVhTdGF0aWNUZXh0JworUEFTUyBjb250YWluZXIyLmNoaWxkQXRJbmRleCg0KS5yb2xl
IGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1BBU1MgY29udGFpbmVyMi5jaGlsZEF0SW5kZXgo
Mykucm9sZSBpcyAnQVhSb2xlOiBBWExpc3QnCitQQVNTIGNvbnRhaW5lcjIuY2hpbGRBdEluZGV4
KDMpLmNoaWxkQXRJbmRleCgwKS5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNTIGNvbnRh
aW5lcjIuY2hpbGRBdEluZGV4KDMpLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkucm9s
ZSBpcyAnQVhSb2xlOiBBWExpc3RNYXJrZXInCitQQVNTIGNvbnRhaW5lcjIuY2hpbGRBdEluZGV4
KDMpLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMSkucm9sZSBpcyAnQVhSb2xlOiBBWFN0
YXRpY1RleHQnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjExNTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNi0xNCAgQ2hyaXMgRmxlaXph
Y2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFYOiBwcmVzZW50YXRpb25hbCByb2xlIG5lZWRzIHRvIGJlIGlu
aGVyaXRlZCBieSByZXF1aXJlZCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzIKKworICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L2luaGVyaXRlZC1wcmVzZW50YXRpb25hbC1saXN0cy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2luaGVyaXRlZC1wcmVz
ZW50YXRpb25hbC1saXN0cy5odG1sOiBBZGRlZC4KKwogMjAxMC0wNi0xNCAgQWxleGV5IFByb3Nr
dXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58710</attachid>
            <date>2010-06-14 15:22:51 -0700</date>
            <delta_ts>2010-06-16 10:32:57 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>10569</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTE1NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDYtMTQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBWDogcHJlc2VudGF0aW9uYWwgcm9sZSBuZWVkcyB0byBiZSBpbmhlcml0ZWQgYnkgcmVxdWly
ZWQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQwMTMyCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW5o
ZXJpdGVkLXByZXNlbnRhdGlvbmFsLWxpc3RzLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpub2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5oZXJpdHNQcmVzZW50YXRpb25hbFJv
bGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5o
OgorCiAyMDEwLTA2LTE0ICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gNjExNTEp
CisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjksNiArMTY5LDggQEAKICAgICAKICAgICB2b2lkIHNldFJlbmRl
cmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRlcmVyOyB9CiAg
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0K
KyAgICBOb2RlKiBub2RlKCkgY29uc3Q7CisgICAgCiAgICAgUmVuZGVyVmlldyogdG9wUmVuZGVy
ZXIoKSBjb25zdDsKICAgICBSZW5kZXJUZXh0Q29udHJvbCogdGV4dENvbnRyb2woKSBjb25zdDsK
ICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKQEAgLTMwNSw2ICszMDcsNyBAQAogICAg
IHZpcnR1YWwgYm9vbCBhcmlhTGl2ZVJlZ2lvbkF0b21pYygpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBhcmlhTGl2ZVJlZ2lvbkJ1c3koKSBjb25zdDsgICAgCiAgICAgCisgICAgYm9vbCBpbmhl
cml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0TmVlZHNUb1VwZGF0
ZUNoaWxkcmVuKCkgY29uc3QgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOyB9CiAgICAgCiAgICAg
bXV0YWJsZSBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGVGb3JNU0FBOwpJbmRleDogV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2
aXNpb24gNjExNTEpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsMTMgQEAKICNlbmRpZgog
ICAgIG1fcmVuZGVyZXIgPSAwOyAgICAKIH0KKyAgICAKK05vZGUqIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6Om5vZGUoKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJlcikgCisgICAgICAg
IHJldHVybiAwOworICAgIHJldHVybiBtX3JlbmRlcmVyLT5ub2RlKCk7Cit9CiAKIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc0lubGluZVdpdGhDb250aW51YXRpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKIHsKQEAgLTE3MzgsNiArMTc0NSw5IEBACiAgICAgaWYgKHJvbGVWYWx1ZSgpID09IFByZXNl
bnRhdGlvbmFsUm9sZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAgaWYgKHJvbGVW
YWx1ZSgpID09IFByZXNlbnRhdGlvbmFsUm9sZSB8fCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9s
ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICAvLyBBbiBBUklBIHRyZWUgY2Fu
IG9ubHkgaGF2ZSB0cmVlIGl0ZW1zIGFuZCBzdGF0aWMgdGV4dCBhcyBjaGlsZHJlbi4KICAgICBp
ZiAoIWlzQWxsb3dlZENoaWxkT2ZUcmVlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzA1
MSw2ICszMDYxLDQ1IEBACiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om9yaWVudGF0
aW9uKCk7CiB9CiAgICAgCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluaGVyaXRz
UHJlc2VudGF0aW9uYWxSb2xlKCkgY29uc3QKK3sKKyAgICAvLyBBUklBIHNwZWMgc2F5cyB0aGF0
IHdoZW4gYSBwYXJlbnQgb2JqZWN0IGlzIHByZXNlbnRhdGlvbmFsLCBhbmQgaXQgaGFzIHJlcXVp
cmVkIGNoaWxkIGVsZW1lbnRzLAorICAgIC8vIHRob3NlIGNoaWxkIGVsZW1lbnRzIGFyZSBhbHNv
IHByZXNlbnRhdGlvbmFsLiBGb3IgZXhhbXBsZSwgPGxpPiBiZWNvbWVzIHByZXNlbnRhdGlvbmFs
IGZyb20gPHVsPi4KKyAgICBib29sIGNoZWNrRm9yUHJlc2VudGF0aW9uYWxQYXJlbnQgPSBmYWxz
ZTsKKyAgICBIYXNoU2V0PFF1YWxpZmllZE5hbWU+IHBvc3NpYmxlUGFyZW50VGFnTmFtZXM7Cisg
ICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgeworICAgIGNhc2UgTGlzdEl0ZW1Sb2xlOgorICAgIGNh
c2UgTGlzdE1hcmtlclJvbGU6CisgICAgICAgIGNoZWNrRm9yUHJlc2VudGF0aW9uYWxQYXJlbnQg
PSB0cnVlOworICAgICAgICBwb3NzaWJsZVBhcmVudFRhZ05hbWVzLmFkZCh1bFRhZyk7CisgICAg
ICAgIHBvc3NpYmxlUGFyZW50VGFnTmFtZXMuYWRkKG9sVGFnKTsKKyAgICAgICAgcG9zc2libGVQ
YXJlbnRUYWdOYW1lcy5hZGQoZGxUYWcpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgLy8gTm90IGFsbCBlbGVtZW50cyBuZWVk
IHRvIGNoZWNrIGZvciB0aGlzLgorICAgIGlmICghY2hlY2tGb3JQcmVzZW50YXRpb25hbFBhcmVu
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGZvciAoQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5w
YXJlbnRPYmplY3QoKSkgeyAKKyAgICAgICAgaWYgKCFwYXJlbnQtPmlzQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBO
b2RlKiBlbGVtZW50Tm9kZSA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qq
PihwYXJlbnQpLT5ub2RlKCk7CisgICAgICAgIGlmICghZWxlbWVudE5vZGUgfHwgIWVsZW1lbnRO
b2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisg
ICAgICAgIC8vIElmIG5hdGl2ZSB0YWcgb2YgdGhlIHBhcmVudCBlbGVtZW50IG1hdGNoZXMgYW4g
YWNjZXB0YWJsZSBuYW1lLCB0aGVuIHJldHVybgorICAgICAgICAvLyBiYXNlZCBvbiBpdHMgcHJl
c2VudGF0aW9uYWwgc3RhdHVzLgorICAgICAgICBpZiAocG9zc2libGVQYXJlbnRUYWdOYW1lcy5j
b250YWlucyhzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZWxlbWVudE5vZGUpLT50YWdRTmFtZSgpKSkK
KyAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPnJvbGVWYWx1ZSgpID09IFByZXNlbnRhdGlvbmFs
Um9sZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorICAgIAogYm9vbCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkg
Y29uc3QKIHsKICAgICAvLyBXYWxrIHRoZSBwYXJlbnQgY2hhaW4gbG9va2luZyBmb3IgYSBwYXJl
bnQgdGhhdCBoYXMgcHJlc2VudGF0aW9uYWwgY2hpbGRyZW4KSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2luaGVyaXRlZC1wcmVzZW50YXRpb25hbC1saXN0cy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L2luaGVyaXRlZC1wcmVzZW50YXRpb25hbC1saXN0cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW5oZXJpdGVkLXByZXNlbnRhdGlv
bmFsLWxpc3RzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQ+Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorCitBbGwgImxpIiBlbGVtZW50cyBhY2NlcHQgdGhlIGJ1dHRv
biBzaG91bGQgYmUgcHJlc2VudGF0aW9uYWwuICAgIAorPGRpdiByb2xlPSJncm91cCIgaWQ9ImNv
bnRhaW5lcjEiIHRhYmluZGV4PSIwIj4KKzx1bCByb2xlPSJwcmVzZW50YXRpb24iPgorICAgIDxs
aT5hcHBsZXM8L2xpPgorICAgIDxsaT5iYW5hbmFzPC9saT4KKyAgICA8bGkgcm9sZT0iYnV0dG9u
Ij5jYW50YWxvcGU8L2xpPgorICAgIDxsaT5kYXRlczwvbGk+Cis8L3VsPgorPC9kaXY+CisKK05l
c3RlZCBsaXN0IGluc2lkZSBhIHByZXNlbnRhdGlvbmFsIGxpc3Qgc2hvdWxkIG5vdCBiZSBwcmVz
ZW50YXRpb25hbAorPGRpdiByb2xlPSJncm91cCIgaWQ9ImNvbnRhaW5lcjIiIHRhYmluZGV4PSIw
Ij4KKzx1bCByb2xlPSJwcmVzZW50YXRpb24iPgorICAgIDxsaT5UaGlzIGl0ZW0gc2hvdWxkIG5v
dCBleHBvc2UgYW4gQVhHcm91cDsgPC9saT4KKyAgICA8bGk+dGhpcyBvbmUgc2hvdWxkIG5vdCBl
aXRoZXIuPC9saT4KKyAgICA8bGk+SG93ZXZlciwgYmVjYXVzZSB0aGUgbmVzdGVkIFVMIGFuZCBM
SSBkbyBub3QgaGF2ZSBleHBsaWNpdCByb2xlIG9mIHByZXNlbnRhdGlvbiw8L2xpPgorICAgICAg
ICA8dWw+CisgICAgICAgICAgICA8bGk+IHRoaXMgbGlzdCBpdGVtIHNob3VsZCBleHBvc2UgYW4g
QVhHcm91cCwgPC9saT4KKyAgICAgICAgICAgIDxsaT4gYW5kIHRoaXMgb25lIHNob3VsZCwgdG9v
LiA8L2xpPgorICAgICAgICA8L3VsPgorICAgIDxsaT5idXQgdGhpcyBvbmUgaXMgc3RhdGljIHRl
eHQgYWdhaW4uPC9saT4KKzwvdWw+Cis8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHdoZW4gYSBs
aXN0IGhhcyB0aGUgcHJlc2VudGF0aW9uYWwgcm9sZSwgYW5kIGl0IGhhcyByZXF1aXJlZCByZXF1
aXJlZCBjaGlsZHJlbiwgdGhvc2UgcmVxdWlyZWQgY2hpbGRyZW4gXCJsaVwiIGFyZSBhbHNvIHBy
ZXNlbnRhdGlvbmFsLiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgeworCisgICAgICAgIC8vIHRlc3QgdGhlIGxpc3QgaW4gY29udGFpbmVyIDEKKyAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lcjEiKS5mb2N1cygpOworICAgICAgICB2
YXIgY29udGFpbmVyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Cisg
ICAgICAgIHNob3VsZEJlKCJjb250YWluZXIuY2hpbGRBdEluZGV4KDApLnJvbGUiLCAiJ0FYUm9s
ZTogQVhTdGF0aWNUZXh0JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGFpbmVyLmNoaWxkQXRJ
bmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogYXBwbGVzJyIpOworICAgICAgICBzaG91
bGRCZSgiY29udGFpbmVyLmNoaWxkQXRJbmRleCgxKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTog
YmFuYW5hcyciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMyku
c3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGRhdGVzJyIpOworCisgICAgICAgIHNob3VsZEJlKCJj
b250YWluZXIuY2hpbGRBdEluZGV4KDIpLnJvbGUiLCAiJ0FYUm9sZTogQVhCdXR0b24nIik7Cisg
ICAgICAgIHNob3VsZEJlKCJjb250YWluZXIuY2hpbGRBdEluZGV4KDIpLnRpdGxlIiwgIidBWFRp
dGxlOiBjYW50YWxvcGUnIik7CisKKyAgICAgICAgLy8gdGVzdCB0aGUgbGlzdCBpbiBjb250YWlu
ZXIgMgorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyMiIpLmZvY3Vz
KCk7CisgICAgICAgIHZhciBjb250YWluZXIyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQ7CisgICAgICAgIHNob3VsZEJlKCJjb250YWluZXIyLmNoaWxkQXRJbmRleCgw
KS5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsKKyAgICAgICAgc2hvdWxkQmUoImNv
bnRhaW5lcjIuY2hpbGRBdEluZGV4KDEpLnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIp
OworICAgICAgICBzaG91bGRCZSgiY29udGFpbmVyMi5jaGlsZEF0SW5kZXgoMikucm9sZSIsICIn
QVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250YWluZXIyLmNo
aWxkQXRJbmRleCg0KS5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsKKworICAgICAg
ICAvLyB0aGlzIG5lc3RlZCBsaXN0IHNob3VsZCBub3QgaW5oZXJpdCBwcmVzZW50YXRpb25hbAor
ICAgICAgICBzaG91bGRCZSgiY29udGFpbmVyMi5jaGlsZEF0SW5kZXgoMykucm9sZSIsICInQVhS
b2xlOiBBWExpc3QnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250YWluZXIyLmNoaWxkQXRJbmRl
eCgzKS5jaGlsZEF0SW5kZXgoMCkucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAgICAg
ICBzaG91bGRCZSgiY29udGFpbmVyMi5jaGlsZEF0SW5kZXgoMykuY2hpbGRBdEluZGV4KDApLmNo
aWxkQXRJbmRleCgwKS5yb2xlIiwgIidBWFJvbGU6IEFYTGlzdE1hcmtlciciKTsKKyAgICAgICAg
c2hvdWxkQmUoImNvbnRhaW5lcjIuY2hpbGRBdEluZGV4KDMpLmNoaWxkQXRJbmRleCgwKS5jaGls
ZEF0SW5kZXgoMSkucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CisgICAgICAgCisg
ICAgfQorCisgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L2luaGVyaXRlZC1wcmVzZW50YXRpb25hbC1saXN0cy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW5o
ZXJpdGVkLXByZXNlbnRhdGlvbmFsLWxpc3RzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2luaGVyaXRlZC1wcmVzZW50
YXRpb25hbC1saXN0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAK
K1RoaXMgdGVzdHMgdGhhdCB3aGVuIGEgbGlzdCBoYXMgdGhlIHByZXNlbnRhdGlvbmFsIHJvbGUs
IGFuZCBpdCBoYXMgcmVxdWlyZWQgcmVxdWlyZWQgY2hpbGRyZW4sIHRob3NlIHJlcXVpcmVkIGNo
aWxkcmVuICJsaSIgYXJlIGFsc28gcHJlc2VudGF0aW9uYWwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitBbGwgImxpIiBlbGVtZW50cyBhY2NlcHQgdGhlIGJ1dHRvbiBzaG91bGQg
YmUgcHJlc2VudGF0aW9uYWwuCithcHBsZXMKK2JhbmFuYXMKK2NhbnRhbG9wZQorZGF0ZXMKK05l
c3RlZCBsaXN0IGluc2lkZSBhIHByZXNlbnRhdGlvbmFsIGxpc3Qgc2hvdWxkIG5vdCBiZSBwcmVz
ZW50YXRpb25hbAorVGhpcyBpdGVtIHNob3VsZCBub3QgZXhwb3NlIGFuIEFYR3JvdXA7Cit0aGlz
IG9uZSBzaG91bGQgbm90IGVpdGhlci4KK0hvd2V2ZXIsIGJlY2F1c2UgdGhlIG5lc3RlZCBVTCBh
bmQgTEkgZG8gbm90IGhhdmUgZXhwbGljaXQgcm9sZSBvZiBwcmVzZW50YXRpb24sCit0aGlzIGxp
c3QgaXRlbSBzaG91bGQgZXhwb3NlIGFuIEFYR3JvdXAsCithbmQgdGhpcyBvbmUgc2hvdWxkLCB0
b28uCitidXQgdGhpcyBvbmUgaXMgc3RhdGljIHRleHQgYWdhaW4uCitQQVNTIGNvbnRhaW5lci5j
aGlsZEF0SW5kZXgoMCkucm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRpY1RleHQnCitQQVNTIGNvbnRh
aW5lci5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IGFwcGxlcycKK1BB
U1MgY29udGFpbmVyLmNoaWxkQXRJbmRleCgxKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogYmFu
YW5hcycKK1BBU1MgY29udGFpbmVyLmNoaWxkQXRJbmRleCgzKS5zdHJpbmdWYWx1ZSBpcyAnQVhW
YWx1ZTogZGF0ZXMnCitQQVNTIGNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMikucm9sZSBpcyAnQVhS
b2xlOiBBWEJ1dHRvbicKK1BBU1MgY29udGFpbmVyLmNoaWxkQXRJbmRleCgyKS50aXRsZSBpcyAn
QVhUaXRsZTogY2FudGFsb3BlJworUEFTUyBjb250YWluZXIyLmNoaWxkQXRJbmRleCgwKS5yb2xl
IGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1BBU1MgY29udGFpbmVyMi5jaGlsZEF0SW5kZXgo
MSkucm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRpY1RleHQnCitQQVNTIGNvbnRhaW5lcjIuY2hpbGRB
dEluZGV4KDIpLnJvbGUgaXMgJ0FYUm9sZTogQVhTdGF0aWNUZXh0JworUEFTUyBjb250YWluZXIy
LmNoaWxkQXRJbmRleCg0KS5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1BBU1MgY29u
dGFpbmVyMi5jaGlsZEF0SW5kZXgoMykucm9sZSBpcyAnQVhSb2xlOiBBWExpc3QnCitQQVNTIGNv
bnRhaW5lcjIuY2hpbGRBdEluZGV4KDMpLmNoaWxkQXRJbmRleCgwKS5yb2xlIGlzICdBWFJvbGU6
IEFYR3JvdXAnCitQQVNTIGNvbnRhaW5lcjIuY2hpbGRBdEluZGV4KDMpLmNoaWxkQXRJbmRleCgw
KS5jaGlsZEF0SW5kZXgoMCkucm9sZSBpcyAnQVhSb2xlOiBBWExpc3RNYXJrZXInCitQQVNTIGNv
bnRhaW5lcjIuY2hpbGRBdEluZGV4KDMpLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMSku
cm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRpY1RleHQnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjExNTUpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAx
MC0wNi0xNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFYOiBwcmVzZW50YXRpb25h
bCByb2xlIG5lZWRzIHRvIGJlIGluaGVyaXRlZCBieSByZXF1aXJlZCBlbGVtZW50cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzIKKworICAgICAg
ICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2luaGVyaXRlZC1wcmVzZW50YXRpb25hbC1s
aXN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L2luaGVyaXRlZC1wcmVzZW50YXRpb25hbC1saXN0cy5odG1sOiBBZGRlZC4KKwogMjAx
MC0wNi0xNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58905</attachid>
            <date>2010-06-16 10:33:01 -0700</date>
            <delta_ts>2010-06-17 19:24:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40132-20100616103259.patch</filename>
            <type>text/plain</type>
            <size>11062</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTI2MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDYtMTYgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBWDogcHJlc2VudGF0aW9uYWwgcm9sZSBuZWVkcyB0byBiZSBpbmhlcml0ZWQgYnkgcmVxdWly
ZWQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQwMTMyCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW5o
ZXJpdGVkLXByZXNlbnRhdGlvbmFsLWxpc3RzLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluaGVyaXRzUHJlc2VudGF0aW9u
YWxSb2xlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om5vZGUp
OgorCiAyMDEwLTA2LTE2ICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA2MTI2
MSkKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjphY2Nlc3NpYgogICAgIGlmIChyb2xlVmFsdWUoKSA9PSBJZ25vcmVkUm9s
ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCi0gICAgaWYgKHJvbGVWYWx1ZSgpID09IFBy
ZXNlbnRhdGlvbmFsUm9sZSkKKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gUHJlc2VudGF0aW9uYWxS
b2xlIHx8IGluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAogICAgIC8vIEFuIEFSSUEgdHJlZSBjYW4gb25seSBoYXZlIHRyZWUgaXRlbXMgYW5k
IHN0YXRpYyB0ZXh0IGFzIGNoaWxkcmVuLgpAQCAtMzA1MSw2ICszMDUxLDUxIEBAIEFjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbiBBY2Nlc3NpYmlsaXR5UmUKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eU9iamVjdDo6b3JpZW50YXRpb24oKTsKIH0KICAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSBjb25zdAoreworICAgIC8vIEFS
SUEgc3BlYyBzYXlzIHRoYXQgd2hlbiBhIHBhcmVudCBvYmplY3QgaXMgcHJlc2VudGF0aW9uYWws
IGFuZCBpdCBoYXMgcmVxdWlyZWQgY2hpbGQgZWxlbWVudHMsCisgICAgLy8gdGhvc2UgY2hpbGQg
ZWxlbWVudHMgYXJlIGFsc28gcHJlc2VudGF0aW9uYWwuIEZvciBleGFtcGxlLCA8bGk+IGJlY29t
ZXMgcHJlc2VudGF0aW9uYWwgZnJvbSA8dWw+LgorICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1dB
SS9QRi9hcmlhL2NvbXBsZXRlI3ByZXNlbnRhdGlvbgorICAgIERFRklORV9TVEFUSUNfTE9DQUwo
SGFzaFNldDxRdWFsaWZpZWROYW1lPiwgbGlzdEl0ZW1QYXJlbnRzLCAoKSk7CisKKyAgICBib29s
IGNoZWNrRm9yUHJlc2VudGF0aW9uYWxQYXJlbnQgPSBmYWxzZTsKKyAgICBIYXNoU2V0PFF1YWxp
ZmllZE5hbWU+KiBwb3NzaWJsZVBhcmVudFRhZ05hbWVzID0gMDsKKyAgICBzd2l0Y2ggKHJvbGVW
YWx1ZSgpKSB7CisgICAgY2FzZSBMaXN0SXRlbVJvbGU6CisgICAgY2FzZSBMaXN0TWFya2VyUm9s
ZToKKyAgICAgICAgaWYgKGxpc3RJdGVtUGFyZW50cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IGxpc3RJdGVtUGFyZW50cy5hZGQodWxUYWcpOworICAgICAgICAgICAgbGlzdEl0ZW1QYXJlbnRz
LmFkZChvbFRhZyk7CisgICAgICAgICAgICBsaXN0SXRlbVBhcmVudHMuYWRkKGRsVGFnKTsKKyAg
ICAgICAgfQorICAgICAgICBjaGVja0ZvclByZXNlbnRhdGlvbmFsUGFyZW50ID0gdHJ1ZTsKKyAg
ICAgICAgcG9zc2libGVQYXJlbnRUYWdOYW1lcyA9ICZsaXN0SXRlbVBhcmVudHM7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICAv
LyBOb3QgYWxsIGVsZW1lbnRzIG5lZWQgdG8gY2hlY2sgZm9yIHRoaXMuCisgICAgaWYgKCFjaGVj
a0ZvclByZXNlbnRhdGlvbmFsUGFyZW50IHx8ICFwb3NzaWJsZVBhcmVudFRhZ05hbWVzKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBw
YXJlbnQgPSBwYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9i
amVjdCgpKSB7IAorICAgICAgICBpZiAoIXBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIE5vZGUqIGVs
ZW1lbnROb2RlID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCo+KHBhcmVu
dCktPm5vZGUoKTsKKyAgICAgICAgaWYgKCFlbGVtZW50Tm9kZSB8fCAhZWxlbWVudE5vZGUtPmlz
RWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAg
Ly8gSWYgbmF0aXZlIHRhZyBvZiB0aGUgcGFyZW50IGVsZW1lbnQgbWF0Y2hlcyBhbiBhY2NlcHRh
YmxlIG5hbWUsIHRoZW4gcmV0dXJuCisgICAgICAgIC8vIGJhc2VkIG9uIGl0cyBwcmVzZW50YXRp
b25hbCBzdGF0dXMuCisgICAgICAgIGlmIChwb3NzaWJsZVBhcmVudFRhZ05hbWVzLT5jb250YWlu
cyhzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZWxlbWVudE5vZGUpLT50YWdRTmFtZSgpKSkKKyAgICAg
ICAgICAgIHJldHVybiBwYXJlbnQtPnJvbGVWYWx1ZSgpID09IFByZXNlbnRhdGlvbmFsUm9sZTsK
KyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorICAgIAogYm9vbCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojppc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkgY29uc3QK
IHsKICAgICAvLyBXYWxrIHRoZSBwYXJlbnQgY2hhaW4gbG9va2luZyBmb3IgYSBwYXJlbnQgdGhh
dCBoYXMgcHJlc2VudGF0aW9uYWwgY2hpbGRyZW4KSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gNjEyNjEpCisr
KyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3RfaAogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgorI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC00Nyw3ICs0OCw2
IEBAIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRT
aXplOwogY2xhc3MgTm9kZTsKLWNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlckxpc3RC
b3g7CiBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbDsKIGNsYXNzIFJlbmRlclZpZXc7CkBAIC0xNjks
NiArMTY5LDExIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldFJlbmRlcmVyKFJlbmRlck9i
amVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRlcmVyOyB9CiAgICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KKyAgICBOb2RlKiBu
b2RlKCkgY29uc3QgCisgICAgeyAKKyAgICAgICAgcmV0dXJuIG1fcmVuZGVyZXIgPyBtX3JlbmRl
cmVyLT5ub2RlKCkgOiAwOyAKKyAgICB9OworCiAgICAgUmVuZGVyVmlldyogdG9wUmVuZGVyZXIo
KSBjb25zdDsKICAgICBSZW5kZXJUZXh0Q29udHJvbCogdGV4dENvbnRyb2woKSBjb25zdDsKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKQEAgLTMwNSw2ICszMTAsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBhcmlhTGl2ZVJlZ2lvbkF0b21pYygpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBhcmlhTGl2ZVJlZ2lvbkJ1c3koKSBjb25zdDsgICAgCiAgICAgCisgICAgYm9v
bCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0TmVlZHNU
b1VwZGF0ZUNoaWxkcmVuKCkgY29uc3QgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOyB9CiAgICAg
CiAgICAgbXV0YWJsZSBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGVGb3JNU0FBOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNjEyNjIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNi0xNiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFYOiBwcmVzZW50YXRpb25hbCByb2xlIG5lZWRzIHRvIGJlIGluaGVyaXRlZCBieSByZXF1
aXJlZCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDAxMzIKKworICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2luaGVy
aXRlZC1wcmVzZW50YXRpb25hbC1saXN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2luaGVyaXRlZC1wcmVzZW50YXRpb25hbC1saXN0
cy5odG1sOiBBZGRlZC4KKwogMjAxMC0wNi0xNiAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5j
b20+CiAKICAgICAgICAgTGFuZCBuZXcgZXhwZWN0ZWQgV2luZG93cyByZXN1bHRzIGZvciB0d28g
ZmFpbGluZyB0ZXN0cwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvaW5oZXJpdGVkLXByZXNlbnRhdGlvbmFsLWxpc3RzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9pbmhlcml0ZWQtcHJl
c2VudGF0aW9uYWwtbGlzdHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW5oZXJpdGVkLXByZXNlbnRhdGlvbmFsLWxp
c3RzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorVGhpcyB0ZXN0
cyB0aGF0IHdoZW4gYSBsaXN0IGhhcyB0aGUgcHJlc2VudGF0aW9uYWwgcm9sZSwgYW5kIGl0IGhh
cyByZXF1aXJlZCByZXF1aXJlZCBjaGlsZHJlbiwgdGhvc2UgcmVxdWlyZWQgY2hpbGRyZW4gImxp
IiBhcmUgYWxzbyBwcmVzZW50YXRpb25hbC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK0FsbCAibGkiIGVsZW1lbnRzIGFjY2VwdCB0aGUgYnV0dG9uIHNob3VsZCBiZSBwcmVzZW50
YXRpb25hbC4KK2FwcGxlcworYmFuYW5hcworY2FudGFsb3BlCitkYXRlcworTmVzdGVkIGxpc3Qg
aW5zaWRlIGEgcHJlc2VudGF0aW9uYWwgbGlzdCBzaG91bGQgbm90IGJlIHByZXNlbnRhdGlvbmFs
CitUaGlzIGl0ZW0gc2hvdWxkIG5vdCBleHBvc2UgYW4gQVhHcm91cDsKK3RoaXMgb25lIHNob3Vs
ZCBub3QgZWl0aGVyLgorSG93ZXZlciwgYmVjYXVzZSB0aGUgbmVzdGVkIFVMIGFuZCBMSSBkbyBu
b3QgaGF2ZSBleHBsaWNpdCByb2xlIG9mIHByZXNlbnRhdGlvbiwKK3RoaXMgbGlzdCBpdGVtIHNo
b3VsZCBleHBvc2UgYW4gQVhHcm91cCwKK2FuZCB0aGlzIG9uZSBzaG91bGQsIHRvby4KK2J1dCB0
aGlzIG9uZSBpcyBzdGF0aWMgdGV4dCBhZ2Fpbi4KK1BBU1MgY29udGFpbmVyLmNoaWxkQXRJbmRl
eCgwKS5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1BBU1MgY29udGFpbmVyLmNoaWxk
QXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogYXBwbGVzJworUEFTUyBjb250YWlu
ZXIuY2hpbGRBdEluZGV4KDEpLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBiYW5hbmFzJworUEFT
UyBjb250YWluZXIuY2hpbGRBdEluZGV4KDMpLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBkYXRl
cycKK1BBU1MgY29udGFpbmVyLmNoaWxkQXRJbmRleCgyKS5yb2xlIGlzICdBWFJvbGU6IEFYQnV0
dG9uJworUEFTUyBjb250YWluZXIuY2hpbGRBdEluZGV4KDIpLnRpdGxlIGlzICdBWFRpdGxlOiBj
YW50YWxvcGUnCitQQVNTIGNvbnRhaW5lcjIuY2hpbGRBdEluZGV4KDApLnJvbGUgaXMgJ0FYUm9s
ZTogQVhTdGF0aWNUZXh0JworUEFTUyBjb250YWluZXIyLmNoaWxkQXRJbmRleCgxKS5yb2xlIGlz
ICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1BBU1MgY29udGFpbmVyMi5jaGlsZEF0SW5kZXgoMiku
cm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRpY1RleHQnCitQQVNTIGNvbnRhaW5lcjIuY2hpbGRBdElu
ZGV4KDQpLnJvbGUgaXMgJ0FYUm9sZTogQVhTdGF0aWNUZXh0JworUEFTUyBjb250YWluZXIyLmNo
aWxkQXRJbmRleCgzKS5yb2xlIGlzICdBWFJvbGU6IEFYTGlzdCcKK1BBU1MgY29udGFpbmVyMi5j
aGlsZEF0SW5kZXgoMykuY2hpbGRBdEluZGV4KDApLnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcK
K1BBU1MgY29udGFpbmVyMi5jaGlsZEF0SW5kZXgoMykuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJ
bmRleCgwKS5yb2xlIGlzICdBWFJvbGU6IEFYTGlzdE1hcmtlcicKK1BBU1MgY29udGFpbmVyMi5j
aGlsZEF0SW5kZXgoMykuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgxKS5yb2xlIGlzICdB
WFJvbGU6IEFYU3RhdGljVGV4dCcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS9pbmhlcml0ZWQtcHJlc2VudGF0aW9uYWwtbGlzdHMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9pbmhlcml0ZWQtcHJlc2VudGF0
aW9uYWwtbGlzdHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L2luaGVyaXRlZC1wcmVzZW50YXRpb25hbC1saXN0cy5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0PgordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KworQWxsICJsaSIgZWxlbWVudHMgYWNjZXB0IHRoZSBidXR0b24gc2hvdWxkIGJlIHByZXNlbnRh
dGlvbmFsLiAgICAKKzxkaXYgcm9sZT0iZ3JvdXAiIGlkPSJjb250YWluZXIxIiB0YWJpbmRleD0i
MCI+Cis8dWwgcm9sZT0icHJlc2VudGF0aW9uIj4KKyAgICA8bGk+YXBwbGVzPC9saT4KKyAgICA8
bGk+YmFuYW5hczwvbGk+CisgICAgPGxpIHJvbGU9ImJ1dHRvbiI+Y2FudGFsb3BlPC9saT4KKyAg
ICA8bGk+ZGF0ZXM8L2xpPgorPC91bD4KKzwvZGl2PgorCitOZXN0ZWQgbGlzdCBpbnNpZGUgYSBw
cmVzZW50YXRpb25hbCBsaXN0IHNob3VsZCBub3QgYmUgcHJlc2VudGF0aW9uYWwKKzxkaXYgcm9s
ZT0iZ3JvdXAiIGlkPSJjb250YWluZXIyIiB0YWJpbmRleD0iMCI+Cis8dWwgcm9sZT0icHJlc2Vu
dGF0aW9uIj4KKyAgICA8bGk+VGhpcyBpdGVtIHNob3VsZCBub3QgZXhwb3NlIGFuIEFYR3JvdXA7
IDwvbGk+CisgICAgPGxpPnRoaXMgb25lIHNob3VsZCBub3QgZWl0aGVyLjwvbGk+CisgICAgPGxp
Pkhvd2V2ZXIsIGJlY2F1c2UgdGhlIG5lc3RlZCBVTCBhbmQgTEkgZG8gbm90IGhhdmUgZXhwbGlj
aXQgcm9sZSBvZiBwcmVzZW50YXRpb24sPC9saT4KKyAgICAgICAgPHVsPgorICAgICAgICAgICAg
PGxpPiB0aGlzIGxpc3QgaXRlbSBzaG91bGQgZXhwb3NlIGFuIEFYR3JvdXAsIDwvbGk+CisgICAg
ICAgICAgICA8bGk+IGFuZCB0aGlzIG9uZSBzaG91bGQsIHRvby4gPC9saT4KKyAgICAgICAgPC91
bD4KKyAgICA8bGk+YnV0IHRoaXMgb25lIGlzIHN0YXRpYyB0ZXh0IGFnYWluLjwvbGk+Cis8L3Vs
PgorPC9kaXY+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorCisgICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB3aGVuIGEgbGlzdCBoYXMgdGhlIHByZXNlbnRh
dGlvbmFsIHJvbGUsIGFuZCBpdCBoYXMgcmVxdWlyZWQgcmVxdWlyZWQgY2hpbGRyZW4sIHRob3Nl
IHJlcXVpcmVkIGNoaWxkcmVuIFwibGlcIiBhcmUgYWxzbyBwcmVzZW50YXRpb25hbC4iKTsKKwor
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKworICAgICAgICAvLyB0
ZXN0IHRoZSBsaXN0IGluIGNvbnRhaW5lciAxCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb250YWluZXIxIikuZm9jdXMoKTsKKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICBzaG91bGRCZSgiY29u
dGFpbmVyLmNoaWxkQXRJbmRleCgwKS5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsK
KyAgICAgICAgc2hvdWxkQmUoImNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUi
LCAiJ0FYVmFsdWU6IGFwcGxlcyciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRhaW5lci5jaGls
ZEF0SW5kZXgoMSkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGJhbmFuYXMnIik7CisgICAgICAg
IHNob3VsZEJlKCJjb250YWluZXIuY2hpbGRBdEluZGV4KDMpLnN0cmluZ1ZhbHVlIiwgIidBWFZh
bHVlOiBkYXRlcyciKTsKKworICAgICAgICBzaG91bGRCZSgiY29udGFpbmVyLmNoaWxkQXRJbmRl
eCgyKS5yb2xlIiwgIidBWFJvbGU6IEFYQnV0dG9uJyIpOworICAgICAgICBzaG91bGRCZSgiY29u
dGFpbmVyLmNoaWxkQXRJbmRleCgyKS50aXRsZSIsICInQVhUaXRsZTogY2FudGFsb3BlJyIpOwor
CisgICAgICAgIC8vIHRlc3QgdGhlIGxpc3QgaW4gY29udGFpbmVyIDIKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lcjIiKS5mb2N1cygpOworICAgICAgICB2YXIgY29u
dGFpbmVyMiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAg
ICBzaG91bGRCZSgiY29udGFpbmVyMi5jaGlsZEF0SW5kZXgoMCkucm9sZSIsICInQVhSb2xlOiBB
WFN0YXRpY1RleHQnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250YWluZXIyLmNoaWxkQXRJbmRl
eCgxKS5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsKKyAgICAgICAgc2hvdWxkQmUo
ImNvbnRhaW5lcjIuY2hpbGRBdEluZGV4KDIpLnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0
JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGFpbmVyMi5jaGlsZEF0SW5kZXgoNCkucm9sZSIs
ICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CisKKyAgICAgICAgLy8gdGhpcyBuZXN0ZWQgbGlz
dCBzaG91bGQgbm90IGluaGVyaXQgcHJlc2VudGF0aW9uYWwKKyAgICAgICAgc2hvdWxkQmUoImNv
bnRhaW5lcjIuY2hpbGRBdEluZGV4KDMpLnJvbGUiLCAiJ0FYUm9sZTogQVhMaXN0JyIpOworICAg
ICAgICBzaG91bGRCZSgiY29udGFpbmVyMi5jaGlsZEF0SW5kZXgoMykuY2hpbGRBdEluZGV4KDAp
LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRhaW5l
cjIuY2hpbGRBdEluZGV4KDMpLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkucm9sZSIs
ICInQVhSb2xlOiBBWExpc3RNYXJrZXInIik7CisgICAgICAgIHNob3VsZEJlKCJjb250YWluZXIy
LmNoaWxkQXRJbmRleCgzKS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDEpLnJvbGUiLCAi
J0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOworICAgICAgIAorICAgIH0KKworICAgIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>
<flag name="review"
          id="45437"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>