<?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>29710</bug_id>
          
          <creation_ts>2009-09-24 03:56:58 -0700</creation_ts>
          <short_desc>[Qt] QtWebKit does not support QGraphicsWidget-plugins</short_desc>
          <delta_ts>2009-10-05 07:03:50 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="J-P Nurmi">jpnurmi</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>149716</commentid>
    <comment_count>0</comment_count>
    <who name="J-P Nurmi">jpnurmi</who>
    <bug_when>2009-09-24 03:56:58 -0700</bug_when>
    <thetext>Even though QWebGraphicsItem has been introduced, FrameLoaderClientQt does not support QGraphicsWidget-plugins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149720</commentid>
    <comment_count>1</comment_count>
      <attachid>40057</attachid>
    <who name="J-P Nurmi">jpnurmi</who>
    <bug_when>2009-09-24 04:04:23 -0700</bug_when>
    <thetext>Created attachment 40057
Patched FrameLoaderClientQt to support QGraphicsWidget-plugins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149722</commentid>
    <comment_count>2</comment_count>
    <who name="J-P Nurmi">jpnurmi</who>
    <bug_when>2009-09-24 04:14:46 -0700</bug_when>
    <thetext>This makes it possible reimplement QWebPage::createPlugin() in the following manner:

QObject* MyWebPage::createPlugin(const QString&amp; classId, const QUrl&amp; url, const QStringList&amp; paramNames, const QStringList&amp; paramValues)
{
    // ...
    return new MyGraphicsWidget(qobject_cast&lt;QGraphicsWidget*&gt;(parent()));
}

This just assumes that QWebGraphicsItem is the parent of the QWebPage instance. Perhaps providing a QWebGraphicsItem accessor in QWebPage API would be needed, since there is no way to get the associated QWebGraphicsItem. QWebPage::view() returns the graphics view...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150004</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-09-25 07:17:09 -0700</bug_when>
    <thetext>It is about time moving these QtPlugin code out of the FrameLoaderClient and put it with the rest of the plugin code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150614</commentid>
    <comment_count>4</comment_count>
      <attachid>40057</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-28 13:04:00 -0700</bug_when>
    <thetext>Comment on attachment 40057
Patched FrameLoaderClientQt to support QGraphicsWidget-plugins.

First of all: Thanks for the patch! :)

(feel free to use your company email address, btw *hint* *hint* :-)

I think your patch needs only a few minor adjustments. I agree
however with Kenneth that it would be best to move those plugin wrapper
classes to WebCore/plugins/qt.

But IMHO that&apos;d be okay to do in a separate commit.

&gt; +                RefPtr&lt;QtPluginGraphicsWidget&gt; w = adoptRef(new QtPluginGraphicsWidget(graphicsWidget));

I think QtPluginGraphicsWidget should implement the create() pattern instead of having
a public constructor, like all RefCounted classes.

Another thing: Right now the person implementing Page::createPlugin() has to provide
a parent to plugin graphics widget itself. This is not the case with the QWidget based approach. I think it would be a better API if the caller in FrameLoaderClientQt.cpp could take care of giving the returned graphicswidget the correct parent instead of requiring the implementor to think about this detail that I&apos;m _sure_ many people will forget about :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150856</commentid>
    <comment_count>5</comment_count>
      <attachid>40295</attachid>
    <who name="J-P Nurmi">jpnurmi</who>
    <bug_when>2009-09-29 04:49:32 -0700</bug_when>
    <thetext>Created attachment 40295
Revised patch

Revised patch:
- added QtPluginGraphicsWidget::create()
- added QWebPagePrivate::graphicsWidget
- made FrameLoaderClientQt::createPlugin() use QWebPagePrivate::graphicsWidget as the parent item

I second Simon that moving that plugin code where it belongs could be a separate commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151839</commentid>
    <comment_count>6</comment_count>
      <attachid>40295</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-02 07:35:15 -0700</bug_when>
    <thetext>Comment on attachment 40295
Revised patch

Hi J-P,

sorry for the long delay :-(

I think your patch is good, I like the way that it&apos;s not neccessary for subclasses to provide a parent item. However
I think the approach of storing a pointer to the QGraphicsWidget is a bit fragile. I would prefer of we could extend
QWebPageClient with a virtual function that returns a QObject that is to be used as parent for plugins. In the implementation 
it would look like this:

class QWebPageClient {
    ...
    QObject* pluginParent() const = 0;
    ...
}

and then

QObject* QWebViewPrivate::pluginParent() const
{
    return q_func();
}

QObject* QGraphicsWebViewPrivate::pluginParent() const
{
    return q_func();
}

&gt; +                graphicsWidget-&gt;setParentItem(m_webFrame-&gt;page()-&gt;d-&gt;graphicsWidget);

... and then the above becomes:

graphicsWidget-&gt;setParentItem(qobject_cast&lt;QGraphicsObject*&gt;(m_webFrame-&gt;page()-&gt;d-&gt;client-&gt;pluginParent()

And the same for the QWidget based plugins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152165</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-10-04 07:55:08 -0700</bug_when>
    <thetext>
&gt; ... and then the above becomes:
&gt; 
&gt; graphicsWidget-&gt;setParentItem(qobject_cast&lt;QGraphicsObject*&gt;(m_webFrame-&gt;page()-&gt;d-&gt;client-&gt;pluginParent()
&gt; 
&gt; And the same for the QWidget based plugins.

Maybe that should be used for the Netscape plugins as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152279</commentid>
    <comment_count>8</comment_count>
      <attachid>40629</attachid>
    <who name="J-P Nurmi">jpnurmi</who>
    <bug_when>2009-10-05 06:04:43 -0700</bug_when>
    <thetext>Created attachment 40629
Third attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152282</commentid>
    <comment_count>9</comment_count>
      <attachid>40629</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-05 06:58:06 -0700</bug_when>
    <thetext>Comment on attachment 40629
Third attempt

Thanks J-P :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152285</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-05 07:03:33 -0700</bug_when>
    <thetext>When landing I&apos;ll have to replace the Qt version check with one that requires Qt 4.6, as this patch breaks the build against Qt 4.6 due to the use of QGraphicsObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152286</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-05 07:03:50 -0700</bug_when>
    <thetext>Committed r49092: &lt;http://trac.webkit.org/changeset/49092&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40057</attachid>
            <date>2009-09-24 04:04:23 -0700</date>
            <delta_ts>2009-09-29 04:49:32 -0700</delta_ts>
            <desc>Patched FrameLoaderClientQt to support QGraphicsWidget-plugins.</desc>
            <filename>frameloaderclientqt.patch</filename>
            <type>text/plain</type>
            <size>3292</size>
            <attacher name="J-P Nurmi">jpnurmi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNDg3MTUpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDktMjQgIEotUCBOdXJtaSAgPGpwbnVybWlAZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIFFHcmFwaGljc1dpZGdldC1wbHVnZ2lucyBzdXBwb3J0IHRvIEZyYW1lTG9hZGVyQ2xp
ZW50UXQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI5NzEwCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpjcmVhdGVQbHVnaW4pOgorCiAyMDA5LTA5LTI0ICBNYXJ0aW4gU21pdGggIDxtc21p
dGhAdHJvbGx0ZWNoLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4K
SW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHAJKHJldmlzaW9uIDQ4NzE1KQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw4IEBACiAjaW5j
bHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRRGVidWc+CiAjaWYgUVRfVkVSU0lP
TiA+PSAweDA0MDQwMAorI2luY2x1ZGUgPFFHcmFwaGljc1NjZW5lPgorI2luY2x1ZGUgPFFHcmFw
aGljc1dpZGdldD4KICNpbmNsdWRlIDxRTmV0d29ya1JlcXVlc3Q+CiAjaW5jbHVkZSA8UU5ldHdv
cmtSZXBseT4KICNlbHNlCkBAIC0xMDgwLDYgKzEwODIsNDcgQEAgcHVibGljOgogICAgIH0KIH07
CiAKKyNpZiBRVF9WRVJTSU9OID49IDB4MDQwNDAwCitjbGFzcyBRdFBsdWdpbkdyYXBoaWNzV2lk
Z2V0OiBwdWJsaWMgV2lkZ2V0Cit7CitwdWJsaWM6CisgICAgUXRQbHVnaW5HcmFwaGljc1dpZGdl
dChRR3JhcGhpY3NXaWRnZXQqIHcgPSAwKTogV2lkZ2V0KDApLCBncmFwaGljc1dpZGdldCh3KSB7
fQorICAgIH5RdFBsdWdpbkdyYXBoaWNzV2lkZ2V0KCkKKyAgICB7CisgICAgICAgIGlmIChncmFw
aGljc1dpZGdldCkKKyAgICAgICAgICAgIGdyYXBoaWNzV2lkZ2V0LT5kZWxldGVMYXRlcigpOwor
ICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcikK
KyAgICB7CisgICAgICAgIFFHcmFwaGljc1NjZW5lKiBzY2VuZSA9IGdyYXBoaWNzV2lkZ2V0ID8g
Z3JhcGhpY3NXaWRnZXQtPnNjZW5lKCkgOiAwOworICAgICAgICBpZiAoc2NlbmUpCisgICAgICAg
ICAgICBzY2VuZS0+dXBkYXRlKFFSZWN0KHIpKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIGZy
YW1lUmVjdHNDaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIGlmICghZ3JhcGhpY3NXaWRnZXQpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgSW50UmVjdCB3aW5kb3dSZWN0ID0gY29udmVy
dFRvQ29udGFpbmluZ1dpbmRvdyhJbnRSZWN0KDAsIDAsIGZyYW1lUmVjdCgpLndpZHRoKCksIGZy
YW1lUmVjdCgpLmhlaWdodCgpKSk7CisgICAgICAgIGdyYXBoaWNzV2lkZ2V0LT5zZXRHZW9tZXRy
eShRUmVjdCh3aW5kb3dSZWN0KSk7CisKKyAgICAgICAgLy8gRklYTUU6IGNsaXBwaW5nIG9mIGdy
YXBoaWNzIHdpZGdldHMKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHNob3coKQorICAgIHsKKyAg
ICAgICAgaWYgKGdyYXBoaWNzV2lkZ2V0KQorICAgICAgICAgICAgZ3JhcGhpY3NXaWRnZXQtPnNo
b3coKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIGhpZGUoKQorICAgIHsKKyAgICAgICAgaWYg
KGdyYXBoaWNzV2lkZ2V0KQorICAgICAgICAgICAgZ3JhcGhpY3NXaWRnZXQtPmhpZGUoKTsKKyAg
ICB9Citwcml2YXRlOgorICAgIFFHcmFwaGljc1dpZGdldCogZ3JhcGhpY3NXaWRnZXQ7Cit9Owor
I2VuZGlmCisKIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQ
bHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVh
bGx5KQogewpAQCAtMTE1MCw2ICsxMTkzLDE2IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxv
YWRlckNsaWVudFF0OjoKICAgICAgICAgICAgICAgICB3LT5zZXRGcmFtZVJlY3QoSW50UmVjdCgw
LCAwLCAwLCAwKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHc7CiAgICAgICAgICAgICB9Cisj
aWYgUVRfVkVSU0lPTiA+PSAweDA0MDQwMAorICAgICAgICAgICAgUUdyYXBoaWNzV2lkZ2V0KiBn
cmFwaGljc1dpZGdldCA9IHFvYmplY3RfY2FzdDxRR3JhcGhpY3NXaWRnZXQqPihvYmplY3QpOwor
ICAgICAgICAgICAgaWYgKGdyYXBoaWNzV2lkZ2V0KSB7CisgICAgICAgICAgICAgICAgZ3JhcGhp
Y3NXaWRnZXQtPmhpZGUoKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UXRQbHVnaW5HcmFwaGlj
c1dpZGdldD4gdyA9IGFkb3B0UmVmKG5ldyBRdFBsdWdpbkdyYXBoaWNzV2lkZ2V0KGdyYXBoaWNz
V2lkZ2V0KSk7CisgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIGl0J3MgaW52aXNpYmxlIHVu
dGlsIHByb3Blcmx5IHBsYWNlZCBpbnRvIHRoZSBsYXlvdXQKKyAgICAgICAgICAgICAgICB3LT5z
ZXRGcmFtZVJlY3QoSW50UmVjdCgwLCAwLCAwLCAwKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHc7CisgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHRo
aW5ncyB3b3JrIGZvciB3aWRnZXRsZXNzIHBsdWdpbnMgYXMgd2VsbAogICAgICAgICAgICAgZGVs
ZXRlIG9iamVjdDsKICAgICB9IGVsc2UgeyAvLyBOUEFQSSBQbHVnaW5zCg==
</data>
<flag name="review"
          id="21233"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40295</attachid>
            <date>2009-09-29 04:49:32 -0700</date>
            <delta_ts>2009-10-05 06:04:43 -0700</delta_ts>
            <desc>Revised patch</desc>
            <filename>frameloaderclientqt2.patch</filename>
            <type>text/plain</type>
            <size>5640</size>
            <attacher name="J-P Nurmi">jpnurmi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNDg4NjcpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDktMDktMjkgIEotUCBOdXJtaSAgPGpwbnVybWlAZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIFFHcmFwaGljc1dpZGdldC1wbHVnZ2lucyBzdXBwb3J0IHRvIEZyYW1lTG9hZGVyQ2xp
ZW50UXQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI5NzEwCisKKyAgICAgICAgKiBBcGkvcXdlYmdyYXBoaWNzaXRlbS5jcHA6CisgICAgICAgIChR
V2ViR3JhcGhpY3NJdGVtOjpzZXRQYWdlKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIEFw
aS9xd2VicGFnZV9wLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKToKKwogMjAwOS0wOS0yOCAgQW5kcmUgUG9lbml0
eiAgPGFuZHJlLnBvZW5pdHpAdHJvbGx0ZWNoLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYmdyYXBoaWNzaXRlbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2ViZ3JhcGhpY3NpdGVtLmNwcAkocmV2aXNp
b24gNDg4NjMpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJncmFwaGljc2l0ZW0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTUsNiArMjU1LDcgQEAgdm9pZCBRV2ViR3JhcGhpY3NJdGVtOjpzZXRQYWdl
KFFXZWJQYWdlKgogCiAgICAgaWYgKGQtPnBhZ2UpIHsKICAgICAgICAgZC0+cGFnZS0+ZC0+Y2xp
ZW50ID0gMDsgLy8gdW5zZXQgdGhlIHBhZ2UgY2xpZW50CisgICAgICAgIGQtPnBhZ2UtPmQtPmdy
YXBoaWNzV2lkZ2V0ID0gMDsgLy8gdW5zZXQgdGhlIGdyYXBoaWNzIHdpZGdldAogICAgICAgICBp
ZiAoZC0+cGFnZS0+cGFyZW50KCkgPT0gdGhpcykKICAgICAgICAgICAgIGRlbGV0ZSBkLT5wYWdl
OwogICAgICAgICBlbHNlCkBAIC0yNjUsNiArMjY2LDcgQEAgdm9pZCBRV2ViR3JhcGhpY3NJdGVt
OjpzZXRQYWdlKFFXZWJQYWdlKgogICAgIGlmICghZC0+cGFnZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIGQtPnBhZ2UtPmQtPmNsaWVudCA9IGQ7IC8vIHNldCB0aGUgcGFnZSBjbGllbnQKKyAgICBk
LT5wYWdlLT5kLT5ncmFwaGljc1dpZGdldCA9IHRoaXM7IC8vIHNldCB0aGUgZ3JhcGhpY3Mgd2lk
Z2V0CiAKICAgICBRU2l6ZSBzaXplID0gZ2VvbWV0cnkoKS5zaXplKCkudG9TaXplKCk7CiAgICAg
cGFnZS0+c2V0Vmlld3BvcnRTaXplKHNpemUpOwpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9u
IDQ4ODYzKQorKysgV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1OCw2ICsyNTgsNyBAQCBRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZShRV2ViUGFn
CiAgICAgOiBxKHFxKQogICAgICwgY2xpZW50KDApCiAgICAgLCB2aWV3KDApCisgICAgLCBncmFw
aGljc1dpZGdldCgwKQogICAgICwgaW5zcGVjdG9yRnJvbnRlbmQoMCkKICAgICAsIGluc3BlY3Rv
cigwKQogICAgICwgaW5zcGVjdG9ySXNJbnRlcm5hbE9ubHkoZmFsc2UpCkluZGV4OiBXZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlX3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
X3AuaAkocmV2aXNpb24gNDg4NjMpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAkod29y
a2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFV
bmRvU3RhY2s7CiBjbGFzcyBRTWVudTsKIGNsYXNzIFFCaXRBcnJheTsKK2NsYXNzIFFHcmFwaGlj
c1dpZGdldDsKIFFUX0VORF9OQU1FU1BBQ0UKIAogY2xhc3MgUVdlYkluc3BlY3RvcjsKQEAgLTEz
NSw2ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgUVVuZG9TdGFjayAqdW5kb1N0YWNrOwogI2VuZGlm
CiAgICAgUVdpZGdldCogdmlldzsKKyAgICBRR3JhcGhpY3NXaWRnZXQgKmdyYXBoaWNzV2lkZ2V0
OwogCiAgICAgYm9vbCBpbnNpZGVPcGVuQ2FsbDsKICAgICBxdWludDY0IG1fdG90YWxCeXRlczsK
SW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHAJKHJldmlzaW9uIDQ4ODYzKQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5j
bHVkZSAiU2NyaXB0U3RyaW5nLmgiCiAKICNpbmNsdWRlICJxd2VicGFnZS5oIgorI2luY2x1ZGUg
InF3ZWJwYWdlX3AuaCIKICNpbmNsdWRlICJxd2ViZnJhbWUuaCIKICNpbmNsdWRlICJxd2ViZnJh
bWVfcC5oIgogI2luY2x1ZGUgInF3ZWJoaXN0b3J5aW50ZXJmYWNlLmgiCkBAIC02Nyw2ICs2OCw4
IEBACiAjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRRGVidWc+CiAjaWYg
UVRfVkVSU0lPTiA+PSAweDA0MDQwMAorI2luY2x1ZGUgPFFHcmFwaGljc1NjZW5lPgorI2luY2x1
ZGUgPFFHcmFwaGljc1dpZGdldD4KICNpbmNsdWRlIDxRTmV0d29ya1JlcXVlc3Q+CiAjaW5jbHVk
ZSA8UU5ldHdvcmtSZXBseT4KICNlbHNlCkBAIC0xMDgwLDYgKzEwODMsNTMgQEAgcHVibGljOgog
ICAgIH0KIH07CiAKKyNpZiBRVF9WRVJTSU9OID49IDB4MDQwNDAwCitjbGFzcyBRdFBsdWdpbkdy
YXBoaWNzV2lkZ2V0OiBwdWJsaWMgV2lkZ2V0Cit7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0
cjxRdFBsdWdpbkdyYXBoaWNzV2lkZ2V0PiBjcmVhdGUoUUdyYXBoaWNzV2lkZ2V0KiB3ID0gMCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUXRQbHVnaW5HcmFwaGljc1dpZGdl
dCh3KSk7CisgICAgfQorCisgICAgflF0UGx1Z2luR3JhcGhpY3NXaWRnZXQoKQorICAgIHsKKyAg
ICAgICAgaWYgKGdyYXBoaWNzV2lkZ2V0KQorICAgICAgICAgICAgZ3JhcGhpY3NXaWRnZXQtPmRl
bGV0ZUxhdGVyKCk7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25z
dCBJbnRSZWN0JiByKQorICAgIHsKKyAgICAgICAgUUdyYXBoaWNzU2NlbmUqIHNjZW5lID0gZ3Jh
cGhpY3NXaWRnZXQgPyBncmFwaGljc1dpZGdldC0+c2NlbmUoKSA6IDA7CisgICAgICAgIGlmIChz
Y2VuZSkKKyAgICAgICAgICAgIHNjZW5lLT51cGRhdGUoUVJlY3QocikpOworICAgIH0KKyAgICB2
aXJ0dWFsIHZvaWQgZnJhbWVSZWN0c0NoYW5nZWQoKQorICAgIHsKKyAgICAgICAgaWYgKCFncmFw
aGljc1dpZGdldCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBJbnRSZWN0IHdpbmRv
d1JlY3QgPSBjb252ZXJ0VG9Db250YWluaW5nV2luZG93KEludFJlY3QoMCwgMCwgZnJhbWVSZWN0
KCkud2lkdGgoKSwgZnJhbWVSZWN0KCkuaGVpZ2h0KCkpKTsKKyAgICAgICAgZ3JhcGhpY3NXaWRn
ZXQtPnNldEdlb21ldHJ5KFFSZWN0KHdpbmRvd1JlY3QpKTsKKworICAgICAgICAvLyBGSVhNRTog
Y2xpcHBpbmcgb2YgZ3JhcGhpY3Mgd2lkZ2V0cworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hv
dygpCisgICAgeworICAgICAgICBpZiAoZ3JhcGhpY3NXaWRnZXQpCisgICAgICAgICAgICBncmFw
aGljc1dpZGdldC0+c2hvdygpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpCisgICAg
eworICAgICAgICBpZiAoZ3JhcGhpY3NXaWRnZXQpCisgICAgICAgICAgICBncmFwaGljc1dpZGdl
dC0+aGlkZSgpOworICAgIH0KK3ByaXZhdGU6CisgICAgUXRQbHVnaW5HcmFwaGljc1dpZGdldChR
R3JhcGhpY3NXaWRnZXQqIHcgPSAwKTogV2lkZ2V0KDApLCBncmFwaGljc1dpZGdldCh3KSB7fQor
CisgICAgUUdyYXBoaWNzV2lkZ2V0KiBncmFwaGljc1dpZGdldDsKK307CisjZW5kaWYKKwogUGFz
c1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJ
bnRTaXplJiBwbHVnaW5TaXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZh
bHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CkBAIC0x
MTUwLDYgKzEyMDAsMTcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OgogICAgICAgICAgICAgICAgIHctPnNldEZyYW1lUmVjdChJbnRSZWN0KDAsIDAsIDAsIDApKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gdzsKICAgICAgICAgICAgIH0KKyNpZiBRVF9WRVJTSU9O
ID49IDB4MDQwNDAwCisgICAgICAgICAgICBRR3JhcGhpY3NXaWRnZXQqIGdyYXBoaWNzV2lkZ2V0
ID0gcW9iamVjdF9jYXN0PFFHcmFwaGljc1dpZGdldCo+KG9iamVjdCk7CisgICAgICAgICAgICBp
ZiAoZ3JhcGhpY3NXaWRnZXQpIHsKKyAgICAgICAgICAgICAgICBncmFwaGljc1dpZGdldC0+aGlk
ZSgpOworICAgICAgICAgICAgICAgIGdyYXBoaWNzV2lkZ2V0LT5zZXRQYXJlbnRJdGVtKG1fd2Vi
RnJhbWUtPnBhZ2UoKS0+ZC0+Z3JhcGhpY3NXaWRnZXQpOworICAgICAgICAgICAgICAgIFJlZlB0
cjxRdFBsdWdpbkdyYXBoaWNzV2lkZ2V0PiB3ID0gUXRQbHVnaW5HcmFwaGljc1dpZGdldDo6Y3Jl
YXRlKGdyYXBoaWNzV2lkZ2V0KTsKKyAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgaXQncyBp
bnZpc2libGUgdW50aWwgcHJvcGVybHkgcGxhY2VkIGludG8gdGhlIGxheW91dAorICAgICAgICAg
ICAgICAgIHctPnNldEZyYW1lUmVjdChJbnRSZWN0KDAsIDAsIDAsIDApKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdzsKKyAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAgICAgLy8gRklY
TUU6IG1ha2UgdGhpbmdzIHdvcmsgZm9yIHdpZGdldGxlc3MgcGx1Z2lucyBhcyB3ZWxsCiAgICAg
ICAgICAgICBkZWxldGUgb2JqZWN0OwogICAgIH0gZWxzZSB7IC8vIE5QQVBJIFBsdWdpbnMK
</data>
<flag name="review"
          id="21507"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40629</attachid>
            <date>2009-10-05 06:04:43 -0700</date>
            <delta_ts>2009-10-05 06:58:05 -0700</delta_ts>
            <desc>Third attempt</desc>
            <filename>frameloaderclientqt3.patch</filename>
            <type>text/plain</type>
            <size>7014</size>
            <attacher name="J-P Nurmi">jpnurmi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTA4OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDktMTAtMDUgIEotUCBOdXJtaSAgPGpwbnVybWlAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0g
QWRkZWQgcHVyZSB2aXJ0dWFsIFFXZWJQYWdlQ2xpZW50OjpwbHVnaW5QYXJlbnQoKQorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTcxMAorCisgICAg
ICAgICogcGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQuaDoKKwogMjAwOS0xMC0wNSAgSmFrdWIg
V2llY3pvcmVrICA8ZmF3MjE3QGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb3Ig
QXJuZSBWZXN0YsO4LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9RV2ViUGFnZUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQuaAkocmV2
aXNpb24gNDkwODIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L1FXZWJQYWdlQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHNj
cmVlbk51bWJlcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFdJZCB3aW5JZCgpIGNvbnN0ID0g
MDsKIAorICAgIHZpcnR1YWwgUU9iamVjdCogcGx1Z2luUGFyZW50KCkgY29uc3QgPSAwOworCiBw
cm90ZWN0ZWQ6CiAjaWZuZGVmIFFUX05PX0NVUlNPUgogICAgIHZpcnR1YWwgUUN1cnNvciBjdXJz
b3IoKSBjb25zdCA9IDA7CkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ5MDg5KQorKysgV2ViS2l0L3F0L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDA5LTEwLTA1ICBKLVAgTnVy
bWkgIDxqcG51cm1pQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBRR3JhcGhpY3NXaWRnZXQtcGx1Z2lucyBzdXBwb3J0IHRv
IEZyYW1lTG9hZGVyQ2xpZW50UXQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI5NzEwCisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5j
cHA6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZTo6cGx1Z2luUGFyZW50KToKKyAg
ICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXdQcml2YXRlOjpwbHVn
aW5QYXJlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmNyZWF0ZVBsdWdpbik6CisKIDIwMDktMTAtMDMgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlldyBidWlsZCBmaXguICBJIHdpc2ggSSBo
YWQgYSB0cnkgc2VydmVyLi4uCkluZGV4OiBXZWJLaXQvcXQvQXBpL3FncmFwaGljc3dlYnZpZXcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcWdyYXBoaWNzd2Vidmlldy5jcHAJKHJl
dmlzaW9uIDQ5MDgyKQorKysgV2ViS2l0L3F0L0FwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2Ny
ZWVuTnVtYmVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXSWQgd2luSWQoKSBjb25zdDsKIAorICAg
IHZpcnR1YWwgUU9iamVjdCogcGx1Z2luUGFyZW50KCkgY29uc3Q7CisKICAgICB2b2lkIF9xX2Rv
TG9hZFByb2dyZXNzKGludCBwcm9ncmVzcyk7CiAgICAgdm9pZCBfcV9kb0xvYWRGaW5pc2hlZChi
b29sIHN1Y2Nlc3MpOwogICAgIHZvaWQgX3Ffc2V0U3RhdHVzQmFyTWVzc2FnZShjb25zdCBRU3Ry
aW5nJiBtZXNzYWdlKTsKQEAgLTEzMSw2ICsxMzMsMTEgQEAgV0lkIFFHcmFwaGljc1dlYlZpZXdQ
cml2YXRlOjp3aW5JZCgpIGNvbgogICAgIHJldHVybiAwOwogfQogCitRT2JqZWN0KiBRR3JhcGhp
Y3NXZWJWaWV3UHJpdmF0ZTo6cGx1Z2luUGFyZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcTsK
K30KKwogdm9pZCBRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZTo6X3Ffc2V0U3RhdHVzQmFyTWVzc2Fn
ZShjb25zdCBRU3RyaW5nJiBzKQogewogICAgIHN0YXR1c0Jhck1lc3NhZ2UgPSBzOwpJbmRleDog
V2ViS2l0L3F0L0FwaS9xd2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9x
d2Vidmlldy5jcHAJKHJldmlzaW9uIDQ5MDgyKQorKysgV2ViS2l0L3F0L0FwaS9xd2Vidmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
aW50IHNjcmVlbk51bWJlcigpIGNvbnN0OwogICAgIHZpcnR1YWwgV0lkIHdpbklkKCkgY29uc3Q7
CiAKKyAgICB2aXJ0dWFsIFFPYmplY3QqIHBsdWdpblBhcmVudCgpIGNvbnN0OworCiAgICAgdm9p
ZCBfcV9wYWdlRGVzdHJveWVkKCk7CiAKICAgICBRV2ViVmlldyAqdmlldzsKQEAgLTEwNCw2ICsx
MDYsMTEgQEAgV0lkIFFXZWJWaWV3UHJpdmF0ZTo6d2luSWQoKSBjb25zdAogICAgIHJldHVybiAw
OwogfQogCitRT2JqZWN0KiBRV2ViVmlld1ByaXZhdGU6OnBsdWdpblBhcmVudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHZpZXc7Cit9CisKIHZvaWQgUVdlYlZpZXdQcml2YXRlOjpfcV9wYWdlRGVz
dHJveWVkKCkKIHsKICAgICBwYWdlID0gMDsKSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHJldmlzaW9uIDQ5MDgyKQorKysgV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw4ICs1NSwxMCBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTY3JpcHRTdHJpbmcuaCIKKyNpbmNsdWRlICJR
V2ViUGFnZUNsaWVudC5oIgogCiAjaW5jbHVkZSAicXdlYnBhZ2UuaCIKKyNpbmNsdWRlICJxd2Vi
cGFnZV9wLmgiCiAjaW5jbHVkZSAicXdlYmZyYW1lLmgiCiAjaW5jbHVkZSAicXdlYmZyYW1lX3Au
aCIKICNpbmNsdWRlICJxd2ViaGlzdG9yeWludGVyZmFjZS5oIgpAQCAtNjcsNiArNjksOCBAQAog
I2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UURlYnVnPgogI2lmIFFUX1ZF
UlNJT04gPj0gMHgwNDA0MDAKKyNpbmNsdWRlIDxRR3JhcGhpY3NTY2VuZT4KKyNpbmNsdWRlIDxR
R3JhcGhpY3NXaWRnZXQ+CiAjaW5jbHVkZSA8UU5ldHdvcmtSZXF1ZXN0PgogI2luY2x1ZGUgPFFO
ZXR3b3JrUmVwbHk+CiAjZWxzZQpAQCAtMTExNyw2ICsxMTIxLDUzIEBAIHB1YmxpYzoKICAgICB9
CiB9OwogCisjaWYgUVRfVkVSU0lPTiA+PSAweDA0MDQwMAorY2xhc3MgUXRQbHVnaW5HcmFwaGlj
c1dpZGdldDogcHVibGljIFdpZGdldAoreworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8UXRQ
bHVnaW5HcmFwaGljc1dpZGdldD4gY3JlYXRlKFFHcmFwaGljc1dpZGdldCogdyA9IDApCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFF0UGx1Z2luR3JhcGhpY3NXaWRnZXQodykp
OworICAgIH0KKworICAgIH5RdFBsdWdpbkdyYXBoaWNzV2lkZ2V0KCkKKyAgICB7CisgICAgICAg
IGlmIChncmFwaGljc1dpZGdldCkKKyAgICAgICAgICAgIGdyYXBoaWNzV2lkZ2V0LT5kZWxldGVM
YXRlcigpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50
UmVjdCYgcikKKyAgICB7CisgICAgICAgIFFHcmFwaGljc1NjZW5lKiBzY2VuZSA9IGdyYXBoaWNz
V2lkZ2V0ID8gZ3JhcGhpY3NXaWRnZXQtPnNjZW5lKCkgOiAwOworICAgICAgICBpZiAoc2NlbmUp
CisgICAgICAgICAgICBzY2VuZS0+dXBkYXRlKFFSZWN0KHIpKTsKKyAgICB9CisgICAgdmlydHVh
bCB2b2lkIGZyYW1lUmVjdHNDaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIGlmICghZ3JhcGhpY3NX
aWRnZXQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgSW50UmVjdCB3aW5kb3dSZWN0
ID0gY29udmVydFRvQ29udGFpbmluZ1dpbmRvdyhJbnRSZWN0KDAsIDAsIGZyYW1lUmVjdCgpLndp
ZHRoKCksIGZyYW1lUmVjdCgpLmhlaWdodCgpKSk7CisgICAgICAgIGdyYXBoaWNzV2lkZ2V0LT5z
ZXRHZW9tZXRyeShRUmVjdCh3aW5kb3dSZWN0KSk7CisKKyAgICAgICAgLy8gRklYTUU6IGNsaXBw
aW5nIG9mIGdyYXBoaWNzIHdpZGdldHMKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHNob3coKQor
ICAgIHsKKyAgICAgICAgaWYgKGdyYXBoaWNzV2lkZ2V0KQorICAgICAgICAgICAgZ3JhcGhpY3NX
aWRnZXQtPnNob3coKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIGhpZGUoKQorICAgIHsKKyAg
ICAgICAgaWYgKGdyYXBoaWNzV2lkZ2V0KQorICAgICAgICAgICAgZ3JhcGhpY3NXaWRnZXQtPmhp
ZGUoKTsKKyAgICB9Citwcml2YXRlOgorICAgIFF0UGx1Z2luR3JhcGhpY3NXaWRnZXQoUUdyYXBo
aWNzV2lkZ2V0KiB3ID0gMCk6IFdpZGdldCgwKSwgZ3JhcGhpY3NXaWRnZXQodykge30KKworICAg
IFFHcmFwaGljc1dpZGdldCogZ3JhcGhpY3NXaWRnZXQ7Cit9OworI2VuZGlmCisKIFBhc3NSZWZQ
dHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6
ZSYgcGx1Z2luU2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewpAQCAtMTE3OCwx
NSArMTIyOSwyNiBAQCBQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRRdDo6CiAg
ICAgICAgIGlmIChvYmplY3QpIHsKICAgICAgICAgICAgIFFXaWRnZXQqIHdpZGdldCA9IHFvYmpl
Y3RfY2FzdDxRV2lkZ2V0Kj4ob2JqZWN0KTsKICAgICAgICAgICAgIGlmICh3aWRnZXQpIHsKLSAg
ICAgICAgICAgICAgICBRV2lkZ2V0KiB2aWV3ID0gbV93ZWJGcmFtZS0+cGFnZSgpLT52aWV3KCk7
Ci0gICAgICAgICAgICAgICAgaWYgKHZpZXcpCi0gICAgICAgICAgICAgICAgICAgIHdpZGdldC0+
c2V0UGFyZW50KHZpZXcpOworICAgICAgICAgICAgICAgIFFXaWRnZXQqIHBhcmVudFdpZGdldCA9
IHFvYmplY3RfY2FzdDxRV2lkZ2V0Kj4obV93ZWJGcmFtZS0+cGFnZSgpLT5kLT5jbGllbnQtPnBs
dWdpblBhcmVudCgpKTsKKyAgICAgICAgICAgICAgICBpZiAocGFyZW50V2lkZ2V0KQorICAgICAg
ICAgICAgICAgICAgICB3aWRnZXQtPnNldFBhcmVudChwYXJlbnRXaWRnZXQpOwogICAgICAgICAg
ICAgICAgIFJlZlB0cjxRdFBsdWdpbldpZGdldD4gdyA9IGFkb3B0UmVmKG5ldyBRdFBsdWdpbldp
ZGdldCgpKTsKICAgICAgICAgICAgICAgICB3LT5zZXRQbGF0Zm9ybVdpZGdldCh3aWRnZXQpOwog
ICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBpdCdzIGludmlzaWJsZSB1bnRpbCBwcm9wZXJs
eSBwbGFjZWQgaW50byB0aGUgbGF5b3V0CiAgICAgICAgICAgICAgICAgdy0+c2V0RnJhbWVSZWN0
KEludFJlY3QoMCwgMCwgMCwgMCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB3OwogICAgICAg
ICAgICAgfQorI2lmIFFUX1ZFUlNJT04gPj0gMHgwNDA0MDAKKyAgICAgICAgICAgIFFHcmFwaGlj
c1dpZGdldCogZ3JhcGhpY3NXaWRnZXQgPSBxb2JqZWN0X2Nhc3Q8UUdyYXBoaWNzV2lkZ2V0Kj4o
b2JqZWN0KTsKKyAgICAgICAgICAgIGlmIChncmFwaGljc1dpZGdldCkgeworICAgICAgICAgICAg
ICAgIGdyYXBoaWNzV2lkZ2V0LT5oaWRlKCk7CisgICAgICAgICAgICAgICAgZ3JhcGhpY3NXaWRn
ZXQtPnNldFBhcmVudEl0ZW0ocW9iamVjdF9jYXN0PFFHcmFwaGljc09iamVjdCo+KG1fd2ViRnJh
bWUtPnBhZ2UoKS0+ZC0+Y2xpZW50LT5wbHVnaW5QYXJlbnQoKSkpOworICAgICAgICAgICAgICAg
IFJlZlB0cjxRdFBsdWdpbkdyYXBoaWNzV2lkZ2V0PiB3ID0gUXRQbHVnaW5HcmFwaGljc1dpZGdl
dDo6Y3JlYXRlKGdyYXBoaWNzV2lkZ2V0KTsKKyAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUg
aXQncyBpbnZpc2libGUgdW50aWwgcHJvcGVybHkgcGxhY2VkIGludG8gdGhlIGxheW91dAorICAg
ICAgICAgICAgICAgIHctPnNldEZyYW1lUmVjdChJbnRSZWN0KDAsIDAsIDAsIDApKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdzsKKyAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAgICAg
Ly8gRklYTUU6IG1ha2UgdGhpbmdzIHdvcmsgZm9yIHdpZGdldGxlc3MgcGx1Z2lucyBhcyB3ZWxs
CiAgICAgICAgICAgICBkZWxldGUgb2JqZWN0OwogICAgIH0gZWxzZSB7IC8vIE5QQVBJIFBsdWdp
bnMK
</data>
<flag name="review"
          id="21875"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>