<?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>32007</bug_id>
          
          <creation_ts>2009-11-30 22:18:52 -0800</creation_ts>
          <short_desc>WAI-ARIA: implement support for ARIA drag and drop</short_desc>
          <delta_ts>2009-12-01 20:54:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></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="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>bdakin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>167507</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-11-30 22:18:52 -0800</bug_when>
    <thetext>WAI-ARIA: implement support for ARIA drag and drop

* NOTES
ARIA supports a few attributes to enable drag &amp; drop interfaces to be accessible through a keyboard. The grabbed state indicates whether an element is grabbed for dragging (or whether it can be grabbed), and the dropeffect is applied to other elements during an active drag operation.

 • aria-grabbed
 • aria-dropeffect

http://www.w3.org/TR/wai-aria/#dragdrop</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167510</commentid>
    <comment_count>1</comment_count>
      <attachid>44054</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-11-30 22:29:15 -0800</bug_when>
    <thetext>Created attachment 44054
patch

This provides the basics needed for other platforms to implement ARIA DnD and does the best it can with what the spec provides for the Mac. VoiceOver will be able to adopt these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167511</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-11-30 22:33:25 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44054 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167681</commentid>
    <comment_count>3</comment_count>
      <attachid>44054</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-01 11:21:25 -0800</bug_when>
    <thetext>Comment on attachment 44054
patch

&gt; +void AccessibilityRenderObject::determineARIADropEffects(Vector&lt;String&gt;&amp; effects)
&gt; +{
&gt; +    String dropEffects = getAttribute(aria_dropeffectAttr).string();
&gt; +    if (dropEffects.isEmpty())
&gt; +        return;

Probably would be better to clear &quot;effects&quot; before returning.

&gt; +        unsigned length = dropEffects.size();

The best type to use here would be size_t rather than unsigned.

&gt; +        NSMutableArray* dropEffectsArray = [NSMutableArray array];

It&apos;s better for performance to use the arrayWithCapacity: method here.

&gt; +        for (unsigned i = 0; i &lt; length; ++i)

Again, size_t.

&gt; +    // A space concatentated string of all the drop effects.
&gt; +    JSStringRef ariaDropEffects() const;

Could this be a RetainPtr&lt;JSStringRef&gt; rather than a JSStringRef?

&gt; +    id value = [m_element accessibilityAttributeValue:NSAccessibilityDropEffectsAttribute];
&gt; +    if (![value isKindOfClass:[NSArray class]])
&gt; +        return 0;
&gt; +
&gt; +    NSMutableString* dropEffects = [NSMutableString string];
&gt; +    NSInteger length = [value count];
&gt; +    for (NSInteger k = 0; k &lt; length; ++k) {
&gt; +        [dropEffects appendString:[value objectAtIndex:k]];
&gt; +        if (k &lt; length - 1)
&gt; +            [dropEffects appendString:@&quot; &quot;];
&gt; +    }
&gt; +    
&gt; +    return [dropEffects createJSStringRef];

Rebuilding the string with spaces makes it hard to detect bugs involving mis-parsing the string. It would be better if the separator here was not the same as the separator used in the syntax itself. Maybe &quot;, &quot; instead or &quot; | &quot; or something like that.

r=me -- please consider some of my suggested improvements above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167682</commentid>
    <comment_count>4</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-12-01 11:22:42 -0800</bug_when>
    <thetext>will implement all your suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167856</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-12-01 20:36:17 -0800</bug_when>
    <thetext>(In reply to comment #3)

&gt; &gt; +    // A space concatentated string of all the drop effects.
&gt; &gt; +    JSStringRef ariaDropEffects() const;
&gt; 
&gt; Could this be a RetainPtr&lt;JSStringRef&gt; rather than a JSStringRef?
&gt; 

All the other methods that return JSStringRef do not return a retain&apos;d ptr, so i don&apos;t want to break that trend with this patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167857</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-12-01 20:41:09 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/51582</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167859</commentid>
    <comment_count>7</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-12-01 20:52:12 -0800</bug_when>
    <thetext>looks like i forgot to add the DumpRenderTree methods for windows and GTK.. will get to that ASAP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167860</commentid>
    <comment_count>8</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-12-01 20:54:43 -0800</bug_when>
    <thetext>hopefully fixed it with
http://trac.webkit.org/changeset/51583</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44054</attachid>
            <date>2009-11-30 22:29:15 -0800</date>
            <delta_ts>2009-12-01 11:21:25 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>16491</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTUyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDktMTEtMzAgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXQUktQVJJQTogaW1wbGVtZW50IHN1cHBvcnQgZm9yIEFSSUEgZHJhZyBhbmQgZHJvcAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIwMDcKKworICAg
ICAgICBUZXN0OiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9hcmlhLWRyYWctZHJvcC5odG1s
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQURyb3BwaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQURyYWdn
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQVJJQUdyYWJi
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0QVJJQUdyYWJi
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0ZXJtaW5lQVJJ
QURyb3BFZmZlY3RzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6c3VwcG9ydHNBUklBRHJvcHBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6c3VwcG9ydHNBUklBRHJhZ2dpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNBUklBR3JhYmJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRBUklBR3JhYmJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBUklBRHJvcEVm
ZmVjdHMpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyLm1tOgorICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhZGRpdGlvbmFs
QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToKKyAgICAgICAgKC1b
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUlzQXR0cmlidXRlU2V0dGFi
bGU6XSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxp
dHlTZXRWYWx1ZTpmb3JBdHRyaWJ1dGU6XSk6CisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW46CisKIDIwMDktMTEtMzAgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBDaHJvbWl1bSBidWlsZCBmaXggaW50cm9kdWNlZCBi
eSByNTEyMTIKSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAkocmV2aXNpb24gNTE1MjQpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNiArMzMxLDEzIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRmxvd1RvKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIGNvbnN0IHsgfQogICAgIAorICAgIC8vIEFSSUEgZHJhZyBhbmQgZHJv
cAorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFEcm9wcGluZygpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJQURyYWdnaW5nKCkgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBUklBR3JhYmJlZCgpIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCB2b2lkIHNldEFSSUFHcmFiYmVkKGJvb2wpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoVmVjdG9yPFN0cmluZz4mKSB7IH0KKyAgICAK
ICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGRvQWNjZXNzaWJpbGl0eUhpdFRlc3Qo
Y29uc3QgSW50UG9pbnQmKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQogCklu
ZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCShyZXZpc2lvbiA1MTUyNCkKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwNiw2ICsxMzA2
LDM4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYUZsb3cKICAgICAgICAg
CiB9CiAgICAgCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN1cHBvcnRzQVJJQURy
b3BwaW5nKCkKK3sKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRyb3BFZmZlY3QgPSBnZXRBdHRy
aWJ1dGUoYXJpYV9kcm9wZWZmZWN0QXR0cikuc3RyaW5nKCk7CisgICAgcmV0dXJuICFkcm9wRWZm
ZWN0LmlzRW1wdHkoKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdXBw
b3J0c0FSSUFEcmFnZ2luZygpCit7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBncmFiYmVkID0g
Z2V0QXR0cmlidXRlKGFyaWFfZ3JhYmJlZEF0dHIpLnN0cmluZygpOworICAgIHJldHVybiBlcXVh
bElnbm9yaW5nQ2FzZShncmFiYmVkLCAidHJ1ZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGdyYWJi
ZWQsICJmYWxzZSIpOyAgIAorfQorCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omlz
QVJJQUdyYWJiZWQoKQoreworICAgIHJldHVybiBlbGVtZW50QXR0cmlidXRlVmFsdWUoYXJpYV9n
cmFiYmVkQXR0cik7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0QVJJ
QUdyYWJiZWQoYm9vbCBncmFiYmVkKQoreworICAgIHNldEVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShh
cmlhX2dyYWJiZWRBdHRyLCBncmFiYmVkKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoVmVjdG9yPFN0cmluZz4mIGVmZmVjdHMp
Cit7CisgICAgU3RyaW5nIGRyb3BFZmZlY3RzID0gZ2V0QXR0cmlidXRlKGFyaWFfZHJvcGVmZmVj
dEF0dHIpLnN0cmluZygpOworICAgIGlmIChkcm9wRWZmZWN0cy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBkcm9wRWZmZWN0cy5yZXBsYWNlKCdcbicsICcgJyk7CisgICAg
ZHJvcEVmZmVjdHMuc3BsaXQoJyAnLCBlZmZlY3RzKTsKK30KKyAgICAKIGJvb2wgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6ZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkgY29uc3QKIHsKICAgICBp
ZiAoIWlzQ29udHJvbCgpKQpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShyZXZpc2lvbiA1MTUyNCkKKysrIFdlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTIyMiw2ICsyMjIsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFG
bG93VG8oKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwogCisgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzQVJJQURyb3BwaW5nKCk7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJQURyYWdnaW5n
KCk7CisgICAgdmlydHVhbCBib29sIGlzQVJJQUdyYWJiZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0QVJJQUdyYWJiZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIGRldGVybWluZUFSSUFEcm9w
RWZmZWN0cyhWZWN0b3I8U3RyaW5nPiYpOworICAgIAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0
aW9uIHZpc2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAgICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQg
aW5kZXhWYWx1ZSwgYm9vbCBsYXN0SW5kZXhPSykgY29uc3Q7ICAgIAogICAgIHZpcnR1YWwgaW50
IGluZGV4KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1t
CShyZXZpc2lvbiA1MTUyNCkKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsMTQgQEAg
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5T3duc0F0dHJpYnV0
ZSBAIkFYT3ducyIKICNlbmRpZgogCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRy
aWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZSBAIkFYR3JhYmJl
ZCIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eURyb3BFZmZlY3RzQXR0cmlidXRl
CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eURyb3BFZmZlY3RzQXR0cmlidXRlIEAiQVhEcm9wRWZm
ZWN0cyIKKyNlbmRpZgorCiAjaWZkZWYgQlVJTERJTkdfT05fVElHRVIKIHR5cGVkZWYgdW5zaWdu
ZWQgTlNVSW50ZWdlcjsKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VmFsdWVEZXNjcmlwdGlvbkF0
dHJpYnV0ZSBAIkFYVmFsdWVEZXNjcmlwdGlvbiIKQEAgLTU4Miw2ICs1OTAsMTIgQEAgc3RhdGlj
IFdlYkNvcmVUZXh0TWFya2VyUmFuZ2UqIHRleHRNYXJrZQogICAgIGlmIChtX29iamVjdC0+c3Vw
cG9ydHNBUklBT3ducygpKQogICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5T3duc0F0dHJpYnV0ZV07CiAKKyAgICBpZiAobV9vYmplY3QtPnN1cHBvcnRzQVJJQURy
YWdnaW5nKCkpCisgICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlH
cmFiYmVkQXR0cmlidXRlXTsKKworICAgIGlmIChtX29iamVjdC0+c3VwcG9ydHNBUklBRHJvcHBp
bmcoKSkKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURyb3BF
ZmZlY3RzQXR0cmlidXRlXTsKKwogICAgIHJldHVybiBhZGRpdGlvbmFsOwogfQogCkBAIC0xNzM5
LDYgKzE3NTMsMjAgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFjYwog
ICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShhcmlhT3ducyk7CiAgICAgfQogICAgIAor
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5R3Jh
YmJlZEF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6
bV9vYmplY3QtPmlzQVJJQUdyYWJiZWQoKV07CisgICAgCisgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEcm9wRWZmZWN0c0F0dHJpYnV0ZV0pIHsK
KyAgICAgICAgVmVjdG9yPFN0cmluZz4gZHJvcEVmZmVjdHM7CisgICAgICAgIG1fb2JqZWN0LT5k
ZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoZHJvcEVmZmVjdHMpOworICAgICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBkcm9wRWZmZWN0cy5zaXplKCk7CisKKyAgICAgICAgTlNNdXRhYmxlQXJyYXkqIGRy
b3BFZmZlY3RzQXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBbZHJvcEVmZmVjdHNB
cnJheSBhZGRPYmplY3Q6ZHJvcEVmZmVjdHNbaV1dOworICAgICAgICByZXR1cm4gZHJvcEVmZmVj
dHNBcnJheTsKKyAgICB9CisgICAgCiAgICAgLy8gdGhpcyBpcyB1c2VkIG9ubHkgYnkgRHVtcFJl
bmRlclRyZWUgZm9yIHRlc3RpbmcKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhDbGlja1BvaW50Il0pCiAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhQ
b2ludDptX29iamVjdC0+Y2xpY2tQb2ludCgpXTsKQEAgLTE4MTMsNiArMTg0MSw5IEBAIHN0YXRp
YyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2MKICAgICAgICAgW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VB
dHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gbV9vYmplY3QtPmNhblNldFRleHRSYW5nZUF0dHJp
YnV0ZXMoKTsKICAgICAKKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gWUVTOworICAg
IAogICAgIHJldHVybiBOTzsKIH0KIApAQCAtMjEwMSw3ICsyMTMyLDggQEAgc3RhdGljIE5TU3Ry
aW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFjYwogICAgICAgICBjb252ZXJ0VG9WZWN0b3IoYXJy
YXksIHNlbGVjdGVkUm93cyk7CiAgICAgICAgIGlmIChtX29iamVjdC0+aXNUcmVlKCkpCiAgICAg
ICAgICAgICBtX29iamVjdC0+c2V0U2VsZWN0ZWRSb3dzKHNlbGVjdGVkUm93cyk7Ci0gICAgfQor
ICAgIH0gZWxzZSBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eUdyYWJiZWRBdHRyaWJ1dGVdKQorICAgICAgICBtX29iamVjdC0+c2V0QVJJQUdyYWJiZWQo
W251bWJlciBib29sVmFsdWVdKTsKIH0KIAogc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJG
b3JWaWV3KE5TVmlldyogdmlldykKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFt
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgko
cmV2aXNpb24gNTE1MjQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0xNyw4ICsxNywxMCBAQCBhcmlhLWNoZWNrZWQKIGFyaWEtY29udHJv
bHMKIGFyaWEtZGVzY3JpYmVkYnkKIGFyaWEtZGlzYWJsZWQKK2FyaWEtZHJvcGVmZmVjdAogYXJp
YS1leHBhbmRlZAogYXJpYS1mbG93dG8KK2FyaWEtZ3JhYmJlZAogYXJpYS1oaWRkZW4KIGFyaWEt
bGFiZWwKIGFyaWEtbGFiZWxlZGJ5CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MTUyNCkKKysrIFdlYktp
dFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDA5LTEx
LTMwICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0FJLUFSSUE6IGltcGxlbWVudCBz
dXBwb3J0IGZvciBBUklBIGRyYWcgYW5kIGRyb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMDA3CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAgKGdldEFSSUFEcm9wRWZmZWN0c0Nh
bGxiYWNrKToKKyAgICAgICAgKGdldEFSSUFJc0dyYWJiZWRDYWxsYmFjayk6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRKU0NsYXNzKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
bWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphcmlhSXNHcmFiYmVkKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFyaWFEcm9wRWZmZWN0cyk6CisKIDIwMDktMTEtMzAgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KSW5kZXg6IFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwCShyZXZpc2lvbiA1MTUyNCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNiArMzEzLDE3
IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNob3dNZW51Q2FsbGJhY2soSlNDb24KIAogLy8gU3RhdGlj
IFZhbHVlIEdldHRlcnMKIAorc3RhdGljIEpTVmFsdWVSZWYgZ2V0QVJJQURyb3BFZmZlY3RzQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3Ry
aW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBkcm9wRWZmZWN0cyhBZG9wdCwgdG9BWEVsZW1lbnQodGhpc09i
amVjdCktPmFyaWFEcm9wRWZmZWN0cygpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmco
Y29udGV4dCwgZHJvcEVmZmVjdHMuZ2V0KCkpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXRB
UklBSXNHcmFiYmVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQoreworICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdG9BWEVsZW1lbnQo
dGhpc09iamVjdCktPmFyaWFJc0dyYWJiZWQoKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGdl
dElzVmFsaWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7
CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogdWlFbGVtZW50ID0gdG9BWEVsZW1lbnQodGhp
c09iamVjdCk7CkBAIC01MTUsNiArNTI2LDggQEAgSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpnZXRKUwogICAgICAgICB7ICJkb2N1bWVudEVuY29kaW5nIiwgZ2V0RG9jdW1lbnRF
bmNvZGluZ0NhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImRvY3VtZW50VVJJIiwgZ2V0
RG9jdW1lbnRVUklDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc1ZhbGlkIiwgZ2V0
SXNWYWxpZENhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImFyaWFJc0dyYWJiZWQiLCBn
ZXRBUklBSXNHcmFiYmVkQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiYXJpYURyb3BF
ZmZlY3RzIiwgZ2V0QVJJQURyb3BFZmZlY3RzQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAwLCAwLCAwLCAwIH0KICAgICB9OwogCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiA1MTUyNCkKKysr
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTM1LDYgKzEzNSwxMSBAQCBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCBhcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkKTsKICAgICBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50IGFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1bnNpZ25lZCk7CiAKKyAg
ICAvLyBBUklBIERyYWcgYW5kIERyb3AKKyAgICBib29sIGFyaWFJc0dyYWJiZWQoKSBjb25zdDsK
KyAgICAvLyBBIHNwYWNlIGNvbmNhdGVudGF0ZWQgc3RyaW5nIG9mIGFsbCB0aGUgZHJvcCBlZmZl
Y3RzLgorICAgIEpTU3RyaW5nUmVmIGFyaWFEcm9wRWZmZWN0cygpIGNvbnN0OworICAgIAogICAg
IC8vIFBhcmFtZXRlcml6ZWQgYXR0cmlidXRlcwogICAgIGludCBsaW5lRm9ySW5kZXgoaW50KTsK
ICAgICBKU1N0cmluZ1JlZiBib3VuZHNGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCShyZXZpc2lvbiA1MTUyNCkK
KysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxNCBAQAogI2RlZmluZSBOU0FjY2Vz
c2liaWxpdHlPd25zQXR0cmlidXRlIEAiQVhPd25zIgogI2VuZGlmCiAKKyNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlHcmFiYmVk
QXR0cmlidXRlIEAiQVhHcmFiYmVkIgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5
RHJvcEVmZmVjdHNBdHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNB
dHRyaWJ1dGUgQCJBWERyb3BFZmZlY3RzIgorI2VuZGlmCisKIEBpbnRlcmZhY2UgTlNPYmplY3Qg
KFdlYktpdEFjY2Vzc2liaWxpdHlBcnJheUNhdGVnb3J5KQogLSAoTlNBcnJheSAqKWFjY2Vzc2li
aWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVlczooTlNTdHJpbmcgKilhdHRyaWJ1dGUgaW5kZXg6KE5T
VUludGVnZXIpaW5kZXggbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQ7CiBAZW5kCkBAIC01
MTIsNiArNTIwLDMxIEBAIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWwK
ICAgICByZXR1cm4gMDsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhSXNH
cmFiYmVkKCkgY29uc3QKK3sKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGVdOworICAgIGlm
IChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJu
IFt2YWx1ZSBib29sVmFsdWVdOworICAgIHJldHVybiBmYWxzZTsKK30KKworSlNTdHJpbmdSZWYg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYURyb3BFZmZlY3RzKCkgY29uc3QKK3sKKyAgICBp
ZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eURyb3BFZmZlY3RzQXR0cmlidXRlXTsKKyAgICBpZiAoIVt2YWx1ZSBpc0tpbmRPZkNs
YXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAgICAgIHJldHVybiAwOworCisgICAgTlNNdXRhYmxl
U3RyaW5nKiBkcm9wRWZmZWN0cyA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKKyAgICBOU0lu
dGVnZXIgbGVuZ3RoID0gW3ZhbHVlIGNvdW50XTsKKyAgICBmb3IgKE5TSW50ZWdlciBrID0gMDsg
ayA8IGxlbmd0aDsgKytrKSB7CisgICAgICAgIFtkcm9wRWZmZWN0cyBhcHBlbmRTdHJpbmc6W3Zh
bHVlIG9iamVjdEF0SW5kZXg6a11dOworICAgICAgICBpZiAoayA8IGxlbmd0aCAtIDEpCisgICAg
ICAgICAgICBbZHJvcEVmZmVjdHMgYXBwZW5kU3RyaW5nOkAiICJdOworICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gW2Ryb3BFZmZlY3RzIGNyZWF0ZUpTU3RyaW5nUmVmXTsKK30KKwogLy8gcGFyYW1l
dGVyaXplZCBhdHRyaWJ1dGVzCiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvcklu
ZGV4KGludCBpbmRleCkKIHsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxNTI0KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTEtMzAg
IENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXQUktQVJJQTogaW1wbGVtZW50IHN1cHBv
cnQgZm9yIEFSSUEgZHJhZyBhbmQgZHJvcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzIwMDcKKworICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L2FyaWEtZHJhZy1kcm9wLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJpYS1kcmFnLWRyb3AuaHRtbDogQWRkZWQuCisKIDIw
MDktMTEtMzAgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L2FyaWEtZHJhZy1kcm9wLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9hcmlhLWRyYWctZHJvcC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS9hcmlhLWRyYWctZHJvcC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTcgQEAKK2Ryb3AKK2dyYWIKK2dyYWIKK1RoaXMgdGVzdHMgdGhhdCB0aGUgQVJJQSBkcmFn
IGFuZCBkcm9wIGF0dHJpYnV0ZXMgd29yayBhcyBpbnRlbmRlZC4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgYm9keS5jaGlsZEF0SW5kZXgoMCkuYXJpYURyb3BFZmZlY3Rz
IGlzICdjb3B5IG1vdmUnCitQQVNTIGJvZHkuY2hpbGRBdEluZGV4KDEpLmFyaWFJc0dyYWJiZWQg
aXMgdHJ1ZQorUEFTUyBib2R5LmNoaWxkQXRJbmRleCgyKS5hcmlhSXNHcmFiYmVkIGlzIGZhbHNl
CitQQVNTIGJvZHkuY2hpbGRBdEluZGV4KDEpLmlzQXR0cmlidXRlU2V0dGFibGUoJ0FYR3JhYmJl
ZCcpIGlzIHRydWUKK1BBU1MgYm9keS5jaGlsZEF0SW5kZXgoMikuaXNBdHRyaWJ1dGVTZXR0YWJs
ZSgnQVhHcmFiYmVkJykgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L2FyaWEtZHJhZy1kcm9wLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJpYS1kcmFnLWRyb3AuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2FyaWEtZHJhZy1kcm9w
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQ+Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKzxkaXYgdGFiaW5kZXg9
MCBhcmlhLWRyb3BlZmZlY3Q9ImNvcHkgbW92ZSIgcm9sZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJk
cm9wIj5kcm9wPC9kaXY+Cis8ZGl2IHRhYmluZGV4PTAgYXJpYS1ncmFiYmVkPXRydWUgcm9sZT0i
YnV0dG9uIiBhcmlhLWxhYmVsPSJncmFiMSI+Z3JhYjwvZGl2PgorPGRpdiB0YWJpbmRleD0wIGFy
aWEtZ3JhYmJlZD1mYWxzZSByb2xlPSJidXR0b24iIGFyaWEtbGFiZWw9ImdyYWIyIj5ncmFiPC9k
aXY+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHRoZSBBUklB
IGRyYWcgYW5kIGRyb3AgYXR0cmlidXRlcyB3b3JrIGFzIGludGVuZGVkLiIpOworCisgICAgaWYg
KHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICAgICAgICAgdmFyIGJvZHkg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpOworICAgICAgICAgIGJvZHkuZm9jdXMo
KTsKKyAgICAgICAgICBib2R5ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQ7CisKKyAgICAgICAgICBzaG91bGRCZSgiYm9keS5jaGlsZEF0SW5kZXgoMCkuYXJpYURyb3BF
ZmZlY3RzIiwgIidjb3B5IG1vdmUnIik7CisKKyAgICAgICAgICBzaG91bGRCZSgiYm9keS5jaGls
ZEF0SW5kZXgoMSkuYXJpYUlzR3JhYmJlZCIsICJ0cnVlIik7CisgICAgICAgICAgc2hvdWxkQmUo
ImJvZHkuY2hpbGRBdEluZGV4KDIpLmFyaWFJc0dyYWJiZWQiLCAiZmFsc2UiKTsKKyAgICAgICAg
ICBzaG91bGRCZSgiYm9keS5jaGlsZEF0SW5kZXgoMSkuaXNBdHRyaWJ1dGVTZXR0YWJsZSgnQVhH
cmFiYmVkJykiLCAidHJ1ZSIpOworICAgICAgICAgIHNob3VsZEJlKCJib2R5LmNoaWxkQXRJbmRl
eCgyKS5pc0F0dHJpYnV0ZVNldHRhYmxlKCdBWEdyYWJiZWQnKSIsICJ0cnVlIik7CisgICAgfQor
CisgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="25829"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>