<?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>20952</bug_id>
          
          <creation_ts>2008-09-19 19:15:48 -0700</creation_ts>
          <short_desc>QtWebKit needs the old history pull model for API Compability</short_desc>
          <delta_ts>2009-04-30 11:07:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>25485</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Holger Freyther">zecke</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hausmann</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>91853</commentid>
    <comment_count>0</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-09-19 19:15:48 -0700</bug_when>
    <thetext>In r30840 the global history was replaced with PageGroup and pushing the visited links into WebCore. While this new model brings a great speed improvement to visited link coloring it breaks the pull model of the Qt API. For API Compability QtWebKit needs to have a compat mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91854</commentid>
    <comment_count>1</comment_count>
      <attachid>23590</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-09-19 19:17:34 -0700</bug_when>
    <thetext>Created attachment 23590
Add the GlobalHistory back for QtWebKit

Optionally have a global history fallback which is enabled for the qtwebkit platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91925</commentid>
    <comment_count>2</comment_count>
      <attachid>23590</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-09-20 13:38:04 -0700</bug_when>
    <thetext>Comment on attachment 23590
Add the GlobalHistory back for QtWebKit

Really?  WebCore shouldn&apos;t have any API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91932</commentid>
    <comment_count>3</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-09-20 14:10:34 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 23590 [edit])
&gt; Really?  WebCore shouldn&apos;t have any API.

I think there is a misunderstanding. The QtWebKit API for history is very basic and only has a &quot;bool contains(const QUrl&amp;)&quot; method. This used to match perfectly with the internal model of WebCore. The internal model was changed to the better (PageGroup and pushing the visited links for a group into WebCore and hashing them) and the semantic of the QtWebKit API does not work anymore. For QtWebKit compability reasons it is required to have a fallback (which is #ifdef&apos;ed and not used for the other platforms).

So the QtWebKit API broke due changes in WebCore and we need a way to have the API to work as in Qt4.4.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91999</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-21 11:34:54 -0700</bug_when>
    <thetext>I&apos;m really sad this got exposed in the QtWebKit API. I&apos;ve been talking about this change for a long time, and requiring actual URL objects to be made for every link to check visited status really kills performance!

Anyway, I&apos;ll review soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93948</commentid>
    <comment_count>5</comment_count>
      <attachid>23590</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-03 13:06:03 -0700</bug_when>
    <thetext>Comment on attachment 23590
Add the GlobalHistory back for QtWebKit

I&apos;m disappointed that this makes the visited link code more complicated -- those two new Document functions have interfaces that are hard to understand with a mysterious boolean result and a fixed size buffer in the header, while visitedLinkHash is so much easier to understand!

Can we remove this in the future? Would you be willing to change the Qt API?

This is an area we are likely to want to refine further -- I had been planning to change the algorithm to be faster and not require putting the URL into a buffer. The legacy dependency here is going to make it hard to make that improvement.

+// We have to fallback to the old historyContains behaviour for the Qt4.4 API

Should be &quot;fall back&quot;, the verb, rather than &quot;fallback&quot;, the noun.

 unsigned Document::visitedLinkHash(const AtomicString&amp; attributeURL) const
 {
-    const UChar* characters = attributeURL.characters();
     unsigned length = attributeURL.length();
     if (!length)
         return 0;

It doesn&apos;t make sense to put this into a local variable when it&apos;s only used once. I also don&apos;t think we need a special case for 0 in this function any more. The other functions already have special cases.

+    return AlreadyHashed::avoidDeletedValue(result ?
+                                            attributeURL.string().impl()-&gt;hash() :
+                                            StringImpl::computeHash(buffer.data(), buffer.size()));

This is not our usual formatting. Maybe you need to use another local variable to avoid having this deeply indented ? : expression.

     if (hasColonSlashSlash &amp;&amp; !needsTrailingSlash(characters, length))
-        return AlreadyHashed::avoidDeletedValue(attributeURL.string().impl()-&gt;hash());
-
-    Vector&lt;UChar, 512&gt; buffer;
+        return true;

I think this needs to be return false, not true.

+        result.append(characters, length);
+        result.append(&apos;/&apos;);
+        return false;

I think this needs to be return true, not false.

-    return AlreadyHashed::avoidDeletedValue(StringImpl::computeHash(buffer.data(), buffer.size()));
+    return false;

I think this needs to be return true, not false.

How did you test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102496</commentid>
    <comment_count>6</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-12-14 08:13:35 -0800</bug_when>
    <thetext>(In reply to comment #5)

&gt; How did you test?

I don&apos;t remember, but the things you spotted imply badly or not at all at least no tests on OSX/Win were done.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102497</commentid>
    <comment_count>7</comment_count>
      <attachid>26011</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-12-14 08:21:56 -0800</bug_when>
    <thetext>Created attachment 26011
Add the GlobalHistory back for QtWebKit.

Another patch working on the LinkHash and CSSStyleSelector:
  - Add a method to LinkHash to resolve the URL. In contrast to the previous attempt the API is not too ugly

  - I&apos;m aware how ugly this is, specially of having a #ifdef in the CSSStyleSelector and having a WebKit type there. For Qt4.5 it is needed though. Maybe it is time to add a &quot;bridge&quot; for QtWebKit as well and some hints to reduce the ugliness are much appreciated.

  - The limited tests of Gtk+ still pass and a test case for QtWebKit is added</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109119</commentid>
    <comment_count>8</comment_count>
      <attachid>26011</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-02-10 08:56:03 -0800</bug_when>
    <thetext>Comment on attachment 26011
Add the GlobalHistory back for QtWebKit.

Darin, could you take another look at Holger&apos;s latest patch?

FWIW I agree about the fact that it&apos;s very sad that this became public API in Qt and I&apos;m all in favour of deprecating it and having a minimalistic API instead that completely hides the actual history tracking.

Thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118078</commentid>
    <comment_count>9</comment_count>
      <attachid>26011</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-04-19 14:47:20 -0700</bug_when>
    <thetext>Comment on attachment 26011
Add the GlobalHistory back for QtWebKit.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119369</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-29 14:57:47 -0700</bug_when>
    <thetext>Did this ever land?  If it&apos;s not really needed by Qt, lets just chuck this patch! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119444</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-04-30 03:27:07 -0700</bug_when>
    <thetext>Landed in r43052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119486</commentid>
    <comment_count>12</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-04-30 10:49:14 -0700</bug_when>
    <thetext>This broke Chromium build :-\.

I think I&apos;ll just plug it for now by defining a no-opish visitedURL, but I agree with everybody here -- let&apos;s API this puppy.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119488</commentid>
    <comment_count>13</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-04-30 11:07:01 -0700</bug_when>
    <thetext>I opted for creating a new bug 25485 to track Chromium-specific mods. Re-closing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23590</attachid>
            <date>2008-09-19 19:17:34 -0700</date>
            <delta_ts>2008-12-14 08:21:56 -0800</delta_ts>
            <desc>Add the GlobalHistory back for QtWebKit</desc>
            <filename>0001-Partially-restore-the-GlobalHistory-for-Qt4.4-compab.patch</filename>
            <type>text/plain</type>
            <size>6840</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">RnJvbSA3OGRhZmUxNDI2NzIyYTcyNTk2ZDE1ZDMyYzk3MjZmNjlkOTAxY2I5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2Vs
ZmlzaC5vcmc+CkRhdGU6IFNhdCwgMjYgQXByIDIwMDggMTk6NTM6MTEgKzAyMDAKU3ViamVjdDog
W1BBVENIXSBQYXJ0aWFsbHkgcmVzdG9yZSB0aGUgR2xvYmFsSGlzdG9yeSBmb3IgUXQ0LjQgY29t
cGFiaWxpdHkuIFdlIGhhdmUgbm8gd2F5IHRvIGdldAogdGhlIGxpc3Qgb2YgdmlzaXRlZCBwYWdl
cyBmb3IgYSBQYWdlR3JvdXAuCgpUaGlzIHdhcyByZW1vdmVkIGluIHIzMDg0MC8yMDYwODAzZDhk
MTI3M2JlYjI3NjBkNDhkNDUxZTBjNmJmYzcxMWRhCi0tLQogV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAgfCAgIDIyICsrKysrKysrKysrKysrLQogV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwICAgICAgICAgfCAgIDUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0K
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmggICAgICAgICAgIHwgICAgMiArCiAzIGZpbGVzIGNoYW5n
ZWQsIDYwIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAKaW5kZXggZTJkMzA0My4uODNkNWEzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
QEAgLTk2LDYgKzk2LDEyIEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNlbmRpZgogCisjaWYg
UExBVEZPUk0oUVQpCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgIGJvb2wgaGlzdG9yeUNvbnRh
aW5zKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOworfQorI2VuZGlm
CisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg3NCw3
ICs4ODAsOSBAQCBQc2V1ZG9TdGF0ZSBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6
OmNoZWNrUHNldWRvU3RhdGUoRWxlbWVudCogZWxlbWVudAogICAgIGlmICghY2hlY2tWaXNpdGVk
KQogICAgICAgICByZXR1cm4gUHNldWRvQW55TGluazsKIAotICAgIHVuc2lnbmVkIGhhc2ggPSBt
X2RvY3VtZW50LT52aXNpdGVkTGlua0hhc2goKmF0dHIpOworICAgIFZlY3RvcjxVQ2hhciwgNTEy
PiBidWZmZXI7CisgICAgY29uc3QgYm9vbCBsaW5rUmVzdWx0ID0gbV9kb2N1bWVudC0+dmlzaXRl
ZExpbmtVUkwoKmF0dHIsIGJ1ZmZlcik7CisgICAgdW5zaWduZWQgaGFzaCA9IG1fZG9jdW1lbnQt
PnZpc2l0ZWRMaW5rSGFzaCgqYXR0ciwgbGlua1Jlc3VsdCwgYnVmZmVyKTsKICAgICBpZiAoIWhh
c2gpCiAgICAgICAgIHJldHVybiBQc2V1ZG9MaW5rOwogCkBAIC04ODcsNyArODk1LDE3IEBAIFBz
ZXVkb1N0YXRlIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tQc2V1ZG9T
dGF0ZShFbGVtZW50KiBlbGVtZW50CiAgICAgICAgIHJldHVybiBQc2V1ZG9MaW5rOwogCiAgICAg
bV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGUuYWRkKGhhc2gpOwotICAgIHJldHVybiBwYWdl
LT5ncm91cCgpLmlzTGlua1Zpc2l0ZWQoaGFzaCkgPyBQc2V1ZG9WaXNpdGVkIDogUHNldWRvTGlu
azsKKyAgICBib29sIHZpc2l0ZWRSZXN1bHQgPSBwYWdlLT5ncm91cCgpLmlzTGlua1Zpc2l0ZWQo
aGFzaCk7CisKKy8vIFdlIGhhdmUgdG8gZmFsbGJhY2sgdG8gdGhlIG9sZCBoaXN0b3J5Q29udGFp
bnMgYmVoYXZpb3VyIGZvciB0aGUgUXQ0LjQgQVBJCisjaWYgUExBVEZPUk0oUVQpCisgICAgdmlz
aXRlZFJlc3VsdCA9IHZpc2l0ZWRSZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgfHwgKGxpbmtS
ZXN1bHQgPworICAgICAgICAgICAgICAgICAgICAgICAgICBoaXN0b3J5Q29udGFpbnMoYXR0ci0+
c3RyaW5nKCkuY2hhcmFjdGVycygpLCBhdHRyLT5zdHJpbmcoKS5sZW5ndGgoKSkgOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICBoaXN0b3J5Q29udGFpbnMoYnVmZmVyLmRhdGEoKSwgYnVmZmVy
LnNpemUoKSkpOworI2VuZGlmCisgICAgCisgICAgcmV0dXJuIHZpc2l0ZWRSZXN1bHQgPyBQc2V1
ZG9WaXNpdGVkIDogUHNldWRvTGluazsKIH0KIAogYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZWxl
bWVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1M2Q1NjI5Li4wZTk5NjA4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC00MTgwLDEzICs0MTgwLDM4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBuZWVkc1RyYWlsaW5nU2xh
c2goY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4g
cG9zID09IGxlbmd0aDsKIH0KIAordW5zaWduZWQgRG9jdW1lbnQ6OnZpc2l0ZWRMaW5rSGFzaChj
b25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCwgYm9vbCByZXN1bHQsIGNvbnN0IFZlY3Rv
cjxVQ2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGF0
dHJpYnV0ZVVSTC5sZW5ndGgoKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICByZXR1cm4gQWxyZWFkeUhhc2hlZDo6YXZvaWREZWxldGVkVmFsdWUocmVzdWx0ID8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVVJM
LnN0cmluZygpLmltcGwoKS0+aGFzaCgpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29tcHV0ZUhhc2goYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSkpOworfQorCiB1bnNpZ25lZCBEb2N1bWVudDo6dmlzaXRlZExpbmtIYXNoKGNv
bnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBjb25zdAogewotICAgIGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzID0gYXR0cmlidXRlVVJMLmNoYXJhY3RlcnMoKTsKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBhdHRyaWJ1dGVVUkwubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAg
IHJldHVybiAwOwogCisgICAgVmVjdG9yPFVDaGFyLCA1MTI+IGJ1ZmZlcjsKKyAgICBjb25zdCBi
b29sIHJlc3VsdCA9IHZpc2l0ZWRMaW5rVVJMKGF0dHJpYnV0ZVVSTCwgYnVmZmVyKTsKKyAgICBy
ZXR1cm4gQWxyZWFkeUhhc2hlZDo6YXZvaWREZWxldGVkVmFsdWUocmVzdWx0ID8KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVVJMLnN0cmluZygp
LmltcGwoKS0+aGFzaCgpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU3RyaW5nSW1wbDo6Y29tcHV0ZUhhc2goYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSkpOworfQorCitib29sIERvY3VtZW50Ojp2aXNpdGVkTGlua1VSTChjb25zdCBBdG9taWNTdHJp
bmcmIGF0dHJpYnV0ZVVSTCwgVmVjdG9yPFVDaGFyLCA1MTI+JiByZXN1bHQpIGNvbnN0Cit7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmlidXRl
VVJMLmxlbmd0aCgpOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IGF0dHJpYnV0ZVVSTC5jaGFyYWN0ZXJzKCk7
CisKICAgICAvLyBUaGlzIGlzIGEgcG9vciBtYW4ncyBjb21wbGV0ZVVSTC4gRmFzdGVyIHdpdGgg
bGVzcyBtZW1vcnkgYWxsb2NhdGlvbi4KICAgICAvLyBGSVhNRTogSXQncyBtaXNzaW5nIGEgbG90
IG9mIHdoYXQgY29tcGxldGVVUkwgZG9lcyBhbmQgYSBsb3Qgb2Ygd2hhdCBLVVJMIGRvZXMuCiAg
ICAgLy8gRm9yIGV4YW1wbGUsIGl0IGRvZXMgbm90IGhhbmRsZSBpbnRlcm5hdGlvbmFsIGRvbWFp
biBuYW1lcyBwcm9wZXJseS4KQEAgLTQyMDEsMzggKzQyMjYsMzYgQEAgdW5zaWduZWQgRG9jdW1l
bnQ6OnZpc2l0ZWRMaW5rSGFzaChjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgY29u
c3QKICAgICBib29sIGhhc0NvbG9uU2xhc2hTbGFzaCA9IGNvbnRhaW5zQ29sb25TbGFzaFNsYXNo
KGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAKICAgICBpZiAoaGFzQ29sb25TbGFzaFNsYXNoICYmICFu
ZWVkc1RyYWlsaW5nU2xhc2goY2hhcmFjdGVycywgbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIEFs
cmVhZHlIYXNoZWQ6OmF2b2lkRGVsZXRlZFZhbHVlKGF0dHJpYnV0ZVVSTC5zdHJpbmcoKS5pbXBs
KCktPmhhc2goKSk7Ci0KLSAgICBWZWN0b3I8VUNoYXIsIDUxMj4gYnVmZmVyOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChoYXNDb2xvblNsYXNoU2xhc2gpIHsKICAgICAgICAgLy8g
RklYTUU6IFRoaXMgaXMgaW5jb3JyZWN0IGZvciBVUkxzIHRoYXQgaGF2ZSBhIHF1ZXJ5IG9yIGFu
Y2hvcjsgdGhlICIvIiBuZWVkcyB0byBnbyBhdCB0aGUKICAgICAgICAgLy8gZW5kIG9mIHRoZSBw
YXRoLCAqYmVmb3JlKiB0aGUgcXVlcnkgb3IgYW5jaG9yLgotICAgICAgICBidWZmZXIuYXBwZW5k
KGNoYXJhY3RlcnMsIGxlbmd0aCk7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQoJy8nKTsKLSAgICAg
ICAgcmV0dXJuIEFscmVhZHlIYXNoZWQ6OmF2b2lkRGVsZXRlZFZhbHVlKFN0cmluZ0ltcGw6OmNv
bXB1dGVIYXNoKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZChjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgICAgICByZXN1bHQuYXBwZW5kKCcvJyk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBzd2l0Y2ggKGNoYXJhY3RlcnNb
MF0pIHsKICAgICAgICAgY2FzZSAnLyc6Ci0gICAgICAgICAgICBidWZmZXIuYXBwZW5kKG1fYmFz
ZVVSTC5zdHJpbmcoKS5jaGFyYWN0ZXJzKCksIG1fYmFzZVVSTC5wYXRoU3RhcnQoKSk7CisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKG1fYmFzZVVSTC5zdHJpbmcoKS5jaGFyYWN0ZXJzKCksIG1f
YmFzZVVSTC5wYXRoU3RhcnQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAn
Iyc6Ci0gICAgICAgICAgICBidWZmZXIuYXBwZW5kKG1fYmFzZVVSTC5zdHJpbmcoKS5jaGFyYWN0
ZXJzKCksIG1fYmFzZVVSTC5wYXRoRW5kKCkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCht
X2Jhc2VVUkwuc3RyaW5nKCkuY2hhcmFjdGVycygpLCBtX2Jhc2VVUkwucGF0aEVuZCgpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnVmZmVyLmFw
cGVuZChtX2Jhc2VVUkwuc3RyaW5nKCkuY2hhcmFjdGVycygpLCBtX2Jhc2VVUkwucGF0aEFmdGVy
TGFzdFNsYXNoKCkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2Jhc2VVUkwuc3RyaW5n
KCkuY2hhcmFjdGVycygpLCBtX2Jhc2VVUkwucGF0aEFmdGVyTGFzdFNsYXNoKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIGJ1ZmZlci5hcHBlbmQoY2hhcmFjdGVycywgbGVuZ3Ro
KTsKLSAgICBjbGVhblBhdGgoYnVmZmVyKTsKLSAgICBpZiAobmVlZHNUcmFpbGluZ1NsYXNoKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKSB7CisgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0
ZXJzLCBsZW5ndGgpOworICAgIGNsZWFuUGF0aChyZXN1bHQpOworICAgIGlmIChuZWVkc1RyYWls
aW5nU2xhc2gocmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSkpIHsKICAgICAgICAgLy8gRklY
TUU6IFRoaXMgaXMgaW5jb3JyZWN0IGZvciBVUkxzIHRoYXQgaGF2ZSBhIHF1ZXJ5IG9yIGFuY2hv
cjsgdGhlICIvIiBuZWVkcyB0byBnbyBhdCB0aGUKICAgICAgICAgLy8gZW5kIG9mIHRoZSBwYXRo
LCAqYmVmb3JlKiB0aGUgcXVlcnkgb3IgYW5jaG9yLgotICAgICAgICBidWZmZXIuYXBwZW5kKCcv
Jyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJy8nKTsKICAgICB9CiAKLSAgICByZXR1cm4gQWxy
ZWFkeUhhc2hlZDo6YXZvaWREZWxldGVkVmFsdWUoU3RyaW5nSW1wbDo6Y29tcHV0ZUhhc2goYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogI2lm
IEVOQUJMRShEQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDc4ZTg5OGYuLjIzNTRkMzcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
NDE4LDYgKzQxOCw4IEBAIHB1YmxpYzoKIAogICAgIEtVUkwgY29tcGxldGVVUkwoY29uc3QgU3Ry
aW5nJikgY29uc3Q7CiAKKyAgICBib29sIHZpc2l0ZWRMaW5rVVJMKGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlVVJMLCBWZWN0b3I8VUNoYXIsIDUxMj4mKSBjb25zdDsKKyAgICB1bnNpZ25l
ZCB2aXNpdGVkTGlua0hhc2goY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwsIGJvb2wg
dXNlT3JpZ2luYWxTdHJpbmcsIGNvbnN0IFZlY3RvcjxVQ2hhciwgNTEyPiYpIGNvbnN0OwogICAg
IHVuc2lnbmVkIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVS
TCkgY29uc3Q7CiAKICAgICAvLyBmcm9tIGNhY2hlZE9iamVjdENsaWVudAotLSAKMS41LjQuMwoK
</data>
<flag name="review"
          id="10568"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26011</attachid>
            <date>2008-12-14 08:21:56 -0800</date>
            <delta_ts>2009-04-19 14:47:20 -0700</delta_ts>
            <desc>Add the GlobalHistory back for QtWebKit.</desc>
            <filename>0001-The-Qt-API-exposes-a-global-history-patch-CSSStyleSe.patch</filename>
            <type>text/plain</type>
            <size>15748</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">RnJvbSA0YzhlOGMwOGU2MjBlZGE1NjYzMzA1Y2IzMjIyZDQ3NzNkMTU4Y2NjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2Vs
ZmlzaC5vcmc+CkRhdGU6IEZyaSwgMTIgRGVjIDIwMDggMTE6Mzc6MzEgKzAxMDAKU3ViamVjdDog
W1BBVENIXSBUaGUgUXQgQVBJIGV4cG9zZXMgYSBnbG9iYWwgaGlzdG9yeSBwYXRjaCBDU1NTdHls
ZVNlbGVjdG9yIHRvIG1ha2UgQVBJIGNvbnN1bWVycyB3b3JrIGFnYWluCgpodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NTIKClRoZSBRdFdlYktpdCBwb3J0IG1hZGUg
dGhlIG1pc3Rha2Ugb2YgZXhwb3NpbmcgYSBnbG9iYWwgaGlzdG9yeS4gVGhpcyBicm9rZQp3aXRo
IHRoZSBhZGRpdGlvbiBvZiBQYWdlR3JvdXAgYW5kIExpbmtIYXNoLiBUaGlzIG5lZWRzIHRvIGJl
IHJlcGFpcmVkCmZvciBRdDQuNS4KCkFkZCBhIGZ1bmN0aW9uIHRvIExpbmtIYXNoLmNwcCB0aGF0
IGlzIHJlc29sdmluZyBhIFVSTC4gVXNlIHRoaXMKZnVuY3Rpb24gZnJvbSB3aXRoaW4gQ1NTU3R5
bGVTZWxlY3RvciB0byBmb3J3YXJkIHRoZSB1cmwgdG8gdGhlClFXZWJIaXN0b3J5SW50ZXJmYWNl
IEFQSS4KCkl0IGlzIHNhZCB0aGF0IHRoZXJlIGlzIGEgcGF0aCB3aXRoaW4gdmlzaXRlZExpbmtI
YXNoIHdoaWNoIGlzIG5vdwpkb2luZyBhIG1lbWNweSwgaXQgaXMgc2FkIHRvIGFkZCBhIFBMQVRG
T1JNKFFUKSBkZWZpbmUgdG8gQ1NTU3R5bGVTZWxlY3RvcgphbmQgdXNpbmcgUXRXZWJLaXQgdHlw
ZXMgd2l0aGluIFdlYkNvcmUgaXMgYSBsYXllcmluZyB2aW9sYXRpb24gYXMgd2VsbC4KClBhZ2VH
cm91cDo6c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MgaXMgY3VycmVudGx5IG5vdCBlbmFibGVk
LiBGb3IKUXQ0LjYgYSBzZWNvbmQgdmVyc2lvbiBvZiB0aGUgUVdlYkhpc3RvcnlJbnRlcmZhY2Ug
aXMgZ29pbmcgdG8gYmUKYWRkZWQgd2hpY2ggd2lsbCBmaXggdGhpbmdzIHVwLgotLS0KIFdlYkNv
cmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMSArKysr
KysrCiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCAgICAgICAgICAgICAgICAgICB8
ICAgMjQgKysrKy0KIFdlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guY3BwICAgICAgICAgICAgICAg
ICAgICAgIHwgICAyNSArKysrLS0KIFdlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guaCAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgNiArKwogV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeWludGVy
ZmFjZS5jcHAgICAgICAgICAgICAgfCAgIDE3ICstLS0KIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2Uu
Y3BwICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiAtCiBXZWJLaXQvcXQvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzkgKysrKysrKysKIC4uLi9xd2Vi
aGlzdG9yeWludGVyZmFjZS9xd2ViaGlzdG9yeWludGVyZmFjZS5wcm8gIHwgICAgNiArKwogLi4u
L3RzdF9xd2ViaGlzdG9yeWludGVyZmFjZS5jcHAgICAgICAgICAgICAgICAgICAgfCAgIDk0ICsr
KysrKysrKysrKysrKysrKysrCiBXZWJLaXQvcXQvdGVzdHMvdGVzdHMucHJvICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDIgKy0KIDEwIGZpbGVzIGNoYW5nZWQsIDIxOCBpbnNlcnRpb25z
KCspLCAyOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvcXQvdGVzdHMv
cXdlYmhpc3RvcnlpbnRlcmZhY2UvcXdlYmhpc3RvcnlpbnRlcmZhY2UucHJvCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgV2ViS2l0L3F0L3Rlc3RzL3F3ZWJoaXN0b3J5aW50ZXJmYWNlL3RzdF9xd2ViaGlz
dG9yeWludGVyZmFjZS5jcHAKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDcyNmRhODEuLmI1NDU4ZmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMDgt
MTItMTMgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFF0IEFQ
SSBleHBvc2VzIGEgZ2xvYmFsIGhpc3RvcnkgcGF0Y2ggQ1NTU3R5bGVTZWxlY3RvciB0byBtYWtl
IEFQSSBjb25zdW1lcnMgd29yayBhZ2FpbgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk1MgorCisgICAgICAgIFRoZSBRdFdlYktpdCBwb3J0IG1h
ZGUgdGhlIG1pc3Rha2Ugb2YgZXhwb3NpbmcgYSBnbG9iYWwgaGlzdG9yeS4gVGhpcyBicm9rZQor
ICAgICAgICB3aXRoIHRoZSBhZGRpdGlvbiBvZiBQYWdlR3JvdXAgYW5kIExpbmtIYXNoLiBUaGlz
IG5lZWRzIHRvIGJlIHJlcGFpcmVkCisgICAgICAgIGZvciBRdDQuNS4KKworICAgICAgICBBZGQg
YSBmdW5jdGlvbiB0byBMaW5rSGFzaC5jcHAgdGhhdCBpcyByZXNvbHZpbmcgYSBVUkwuIFVzZSB0
aGlzCisgICAgICAgIGZ1bmN0aW9uIGZyb20gd2l0aGluIENTU1N0eWxlU2VsZWN0b3IgdG8gZm9y
d2FyZCB0aGUgdXJsIHRvIHRoZQorICAgICAgICBRV2ViSGlzdG9yeUludGVyZmFjZSBBUEkuCisK
KyAgICAgICAgSXQgaXMgc2FkIHRoYXQgdGhlcmUgaXMgYSBwYXRoIHdpdGhpbiB2aXNpdGVkTGlu
a0hhc2ggd2hpY2ggaXMgbm93CisgICAgICAgIGRvaW5nIGEgbWVtY3B5LCBpdCBpcyBzYWQgdG8g
YWRkIGEgUExBVEZPUk0oUVQpIGRlZmluZSB0byBDU1NTdHlsZVNlbGVjdG9yCisgICAgICAgIGFu
ZCB1c2luZyBRdFdlYktpdCB0eXBlcyB3aXRoaW4gV2ViQ29yZSBpcyBhIGxheWVyaW5nIHZpb2xh
dGlvbiBhcyB3ZWxsLgorCisgICAgICAgIFBhZ2VHcm91cDo6c2V0U2hvdWxkVHJhY2tWaXNpdGVk
TGlua3MgaXMgY3VycmVudGx5IG5vdCBlbmFibGVkLiBGb3IKKyAgICAgICAgUXQ0LjYgYSBzZWNv
bmQgdmVyc2lvbiBvZiB0aGUgUVdlYkhpc3RvcnlJbnRlcmZhY2UgaXMgZ29pbmcgdG8gYmUKKyAg
ICAgICAgYWRkZWQgd2hpY2ggd2lsbCBmaXggdGhpbmdzIHVwLgorCisgICAgICAgICogY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6
U2VsZWN0b3JDaGVja2VyOjpjaGVja1BzZXVkb1N0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9M
aW5rSGFzaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2aXNpdGVkVVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OnZpc2l0ZWRMaW5rSGFzaCk6CisgICAgICAgICogcGxhdGZvcm0vTGlua0hhc2guaDoK
KwogMjAwOC0xMi0xMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
LSBmaXggUmVsZWFzZSBidWlsZApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA3YThlZTQz
Li5lNzQ1MDI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAor
KysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtMTA3LDYgKzEwNywxMCBA
QAogI2luY2x1ZGUgIldNTE5hbWVzLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorI2lu
Y2x1ZGUgPHF3ZWJoaXN0b3J5aW50ZXJmYWNlLmg+CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODU5LDEwICs4NjMsNiBAQCBQc2V1ZG9T
dGF0ZSBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrUHNldWRvU3RhdGUo
RWxlbWVudCogZWxlbWVudAogICAgIGlmICghY2hlY2tWaXNpdGVkKQogICAgICAgICByZXR1cm4g
UHNldWRvQW55TGluazsKIAotICAgIExpbmtIYXNoIGhhc2ggPSB2aXNpdGVkTGlua0hhc2gobV9k
b2N1bWVudC0+YmFzZVVSTCgpLCAqYXR0cik7Ci0gICAgaWYgKCFoYXNoKQotICAgICAgICByZXR1
cm4gUHNldWRvTGluazsKLQogICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFBzZXVkb0xpbms7CkBAIC04NzEsNiAr
ODcxLDIyIEBAIFBzZXVkb1N0YXRlIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6
Y2hlY2tQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50CiAgICAgaWYgKCFwYWdlKQogICAgICAg
ICByZXR1cm4gUHNldWRvTGluazsKIAorICAgIFZlY3RvcjxVQ2hhciwgNTEyPiB1cmw7CisgICAg
dmlzaXRlZFVSTChtX2RvY3VtZW50LT5iYXNlVVJMKCksICphdHRyLCB1cmwpOworICAgIGlmICh1
cmwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gUHNldWRvTGluazsKKworI2lmIFBMQVRGT1JN
KFFUKQorICAgIC8vIElmIHRoZSBRdDQuNCBpbnRlcmZhY2UgZm9yIHRoZSBoaXN0b3J5IGlzIHVz
ZWQsIHdlIHdpbGwgaGF2ZSB0byBmYWxsYmFjaworICAgIC8vIHRvIHRoZSBvbGQgZ2xvYmFsIGhp
c3RvcnkuCisgICAgUVdlYkhpc3RvcnlJbnRlcmZhY2UqIGludGVyZmFjZSA9IFFXZWJIaXN0b3J5
SW50ZXJmYWNlOjpkZWZhdWx0SW50ZXJmYWNlKCk7CisgICAgaWYgKGludGVyZmFjZSkKKyAgICAg
ICAgcmV0dXJuIGludGVyZmFjZS0+aGlzdG9yeUNvbnRhaW5zKFFTdHJpbmcocmVpbnRlcnByZXRf
Y2FzdDxRQ2hhcio+KHVybC5kYXRhKCkpLCB1cmwuc2l6ZSgpKSkgPyBQc2V1ZG9WaXNpdGVkIDog
UHNldWRvTGluazsKKyNlbmRpZgorCisgICAgTGlua0hhc2ggaGFzaCA9IHZpc2l0ZWRMaW5rSGFz
aCh1cmwuZGF0YSgpLCB1cmwuc2l6ZSgpKTsKKyAgICBpZiAoIWhhc2gpCisgICAgICAgIHJldHVy
biBQc2V1ZG9MaW5rOwogICAgIG1fbGlua3NDaGVja2VkRm9yVmlzaXRlZFN0YXRlLmFkZChoYXNo
KTsKICAgICByZXR1cm4gcGFnZS0+Z3JvdXAoKS5pc0xpbmtWaXNpdGVkKGhhc2gpID8gUHNldWRv
VmlzaXRlZCA6IFBzZXVkb0xpbms7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0xp
bmtIYXNoLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guY3BwCmluZGV4IDc5M2E2NWQu
Ljg3ODkzM2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guY3BwCkBAIC0xNTIsMTIgKzE1MiwxMiBAQCBMaW5r
SGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVybCwgdW5zaWduZWQgbGVuZ3RoKQog
ICByZXR1cm4gQWxyZWFkeUhhc2hlZDo6YXZvaWREZWxldGVkVmFsdWUoU3RyaW5nSW1wbDo6Y29t
cHV0ZUhhc2godXJsLCBsZW5ndGgpKTsKIH0KIAotTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNv
bnN0IEtVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKQordm9pZCB2
aXNpdGVkVVJMKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRl
VVJMLCBWZWN0b3I8VUNoYXIsIDUxMj4mIGJ1ZmZlcikKIHsKICAgICBjb25zdCBVQ2hhciogY2hh
cmFjdGVycyA9IGF0dHJpYnV0ZVVSTC5jaGFyYWN0ZXJzKCk7CiAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gYXR0cmlidXRlVVJMLmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyBpcyBhIHBvb3IgbWFuJ3MgY29t
cGxldGVVUkwuIEZhc3RlciB3aXRoIGxlc3MgbWVtb3J5IGFsbG9jYXRpb24uCiAgICAgLy8gRklY
TUU6IEl0J3MgbWlzc2luZyBhIGxvdCBvZiB3aGF0IGNvbXBsZXRlVVJMIGRvZXMgYW5kIGEgbG90
IG9mIHdoYXQgS1VSTCBkb2VzLgpAQCAtMTcyLDE3ICsxNzIsMTggQEAgTGlua0hhc2ggdmlzaXRl
ZExpbmtIYXNoKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRl
VVJMKQogCiAgICAgYm9vbCBoYXNDb2xvblNsYXNoU2xhc2ggPSBjb250YWluc0NvbG9uU2xhc2hT
bGFzaChjaGFyYWN0ZXJzLCBsZW5ndGgpOwogCi0gICAgaWYgKGhhc0NvbG9uU2xhc2hTbGFzaCAm
JiAhbmVlZHNUcmFpbGluZ1NsYXNoKGNoYXJhY3RlcnMsIGxlbmd0aCkpCi0gICAgICAgIHJldHVy
biB2aXNpdGVkTGlua0hhc2goYXR0cmlidXRlVVJMLmNoYXJhY3RlcnMoKSwgYXR0cmlidXRlVVJM
Lmxlbmd0aCgpKTsKKyAgICBpZiAoaGFzQ29sb25TbGFzaFNsYXNoICYmICFuZWVkc1RyYWlsaW5n
U2xhc2goY2hhcmFjdGVycywgbGVuZ3RoKSkgeworICAgICAgICBidWZmZXIuYXBwZW5kKGF0dHJp
YnV0ZVVSTC5jaGFyYWN0ZXJzKCksIGF0dHJpYnV0ZVVSTC5sZW5ndGgoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKLSAgICBWZWN0b3I8VUNoYXIsIDUxMj4gYnVmZmVyOwogCiAgICAgaWYg
KGhhc0NvbG9uU2xhc2hTbGFzaCkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmNvcnJl
Y3QgZm9yIFVSTHMgdGhhdCBoYXZlIGEgcXVlcnkgb3IgYW5jaG9yOyB0aGUgIi8iIG5lZWRzIHRv
IGdvIGF0IHRoZQogICAgICAgICAvLyBlbmQgb2YgdGhlIHBhdGgsICpiZWZvcmUqIHRoZSBxdWVy
eSBvciBhbmNob3IuCiAgICAgICAgIGJ1ZmZlci5hcHBlbmQoY2hhcmFjdGVycywgbGVuZ3RoKTsK
ICAgICAgICAgYnVmZmVyLmFwcGVuZCgnLycpOwotICAgICAgICByZXR1cm4gdmlzaXRlZExpbmtI
YXNoKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgc3dpdGNoIChjaGFyYWN0ZXJzWzBdKSB7CkBAIC0yMDQsNyArMjA1LDE3IEBAIExp
bmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBBdG9taWNTdHJp
bmcmIGF0dHJpYnV0ZVVSTCkKICAgICAgICAgYnVmZmVyLmFwcGVuZCgnLycpOwogICAgIH0KIAot
ICAgIHJldHVybiB2aXNpdGVkTGlua0hhc2goYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CisgICAgcmV0dXJuOworfQorCitMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgS1VSTCYg
YmFzZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpCit7CisgICAgVmVjdG9yPFVD
aGFyLCA1MTI+IHVybDsKKyAgICB2aXNpdGVkVVJMKGJhc2UsIGF0dHJpYnV0ZVVSTCwgdXJsKTsK
KyAgICBpZiAodXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4g
dmlzaXRlZExpbmtIYXNoKHVybC5kYXRhKCksIHVybC5zaXplKCkpOwogfQogCiB9ICAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSGFzaC5oIGIv
V2ViQ29yZS9wbGF0Zm9ybS9MaW5rSGFzaC5oCmluZGV4IDFlYzFlMTYuLjI3NTY2NTQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L0xpbmtIYXNoLmgKQEAgLTYyLDYgKzYyLDEyIEBAIExpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChj
b25zdCBVQ2hhciogdXJsLCB1bnNpZ25lZCBsZW5ndGgpOwogLy8gbG9vayBsaWtlIGEgcmVsYXRp
dmUgVVJMLgogTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0
IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKIAorLy8gUmVzb2x2ZXMgdGhlIHBvdGVudGlh
bGx5IHJlbGF0aXZlIFVSTCAiYXR0cmlidXRlVVJMIiByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4KKy8v
IGJhc2UgVVJMLCBhbmQgcmV0dXJucyB0aGUgaGFzaCBvZiB0aGUgc3RyaW5nIHRoYXQgd2lsbCBi
ZSB1c2VkIGZvciB2aXNpdGVkLgorLy8gSXQgd2lsbCByZXR1cm4gYW4gZW1wdHkgVmVjdG9yIGlu
IGNhc2Ugb2YgZXJyb3JzLgordm9pZCB2aXNpdGVkVVJMKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0
IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMLCBWZWN0b3I8VUNoYXIsIDUxMj4mKTsKKworCiB9
ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgIC8vIExpbmtIYXNoX2gKZGlmZiAtLWdp
dCBhL1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnlpbnRlcmZhY2UuY3BwIGIvV2ViS2l0L3F0L0Fw
aS9xd2ViaGlzdG9yeWludGVyZmFjZS5jcHAKaW5kZXggOGUyZDM1Yy4uODhhMWFhMyAxMDA2NDQK
LS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeWludGVyZmFjZS5jcHAKKysrIGIvV2ViS2l0
L3F0L0FwaS9xd2ViaGlzdG9yeWludGVyZmFjZS5jcHAKQEAgLTI3LDIwICsyNyw2IEBACiAjaW5j
bHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAotLy8gRklY
TUU6IEl0J3Mgbm90IGNvcnJlY3QgdG8ganVzdCBpbXBsZW1lbnQgYSBXZWJDb3JlIGZ1bmN0aW9u
IGluIFdlYktpdCEKLS8vIFRoaXMgbmVlZHMgdG8gYmUgZml4ZWQgdG8gbWF0Y2ggb3RoZXIgcGxh
dGZvcm1zLgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWJvb2wgaGlzdG9yeUNvbnRhaW5zKGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgaWYgKCFRV2Vi
SGlzdG9yeUludGVyZmFjZTo6ZGVmYXVsdEludGVyZmFjZSgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gUVdlYkhpc3RvcnlJbnRlcmZhY2U6OmRlZmF1bHRJbnRlcmZhY2Uo
KS0+aGlzdG9yeUNvbnRhaW5zKFFTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBRQ2hhcio+
KGNoYXJhY3RlcnMpLCBsZW5ndGgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBz
dGF0aWMgUVdlYkhpc3RvcnlJbnRlcmZhY2UgKmRlZmF1bHRfaW50ZXJmYWNlOwogCkBAIC03MSw2
ICs1Nyw5IEBAIHZvaWQgUVdlYkhpc3RvcnlJbnRlcmZhY2U6OnNldERlZmF1bHRJbnRlcmZhY2Uo
UVdlYkhpc3RvcnlJbnRlcmZhY2UgKmRlZmF1bHRJbnRlCiAgICAgZGVmYXVsdF9pbnRlcmZhY2Ug
PSBkZWZhdWx0SW50ZXJmYWNlOwogICAgIFdlYkNvcmU6OlBhZ2VHcm91cDo6cmVtb3ZlQWxsVmlz
aXRlZExpbmtzKCk7CiAKKyAgICAvLyMjIyBlbmFibGUgYWZ0ZXIgdGhlIGludHJvZHVjdGlvbiBv
ZiBhIHZlcnNpb24KKyAgICAvL1dlYkNvcmU6OlBhZ2VHcm91cDo6c2V0U2hvdWxkVHJhY2tWaXNp
dGVkTGlua3ModHJ1ZSk7CisKICAgICBpZiAoIWdSb3V0aW5lQWRkZWQpIHsKICAgICAgICAgcUFk
ZFBvc3RSb3V0aW5lKGdDbGVhbnVwSW50ZXJmYWNlKTsKICAgICAgICAgZ1JvdXRpbmVBZGRlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1dlYktpdC9x
dC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IGZkOWE0MzkuLmFkMzY2MDEgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3Bw
CkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50UXQuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQYWdlR3JvdXAuaCIK
ICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCkBAIC0yMTksNyArMjE4LDYgQEAgUVdlYlBhZ2VQcml2
YXRlOjpRV2ViUGFnZVByaXZhdGUoUVdlYlBhZ2UgKnFxKQogICAgICwgdmlld3BvcnRTaXplKFFT
aXplKDAsMCkpCiB7CiAgICAgV2ViQ29yZTo6SW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVj
ZXNzYXJ5KCk7Ci0gICAgV2ViQ29yZTo6UGFnZUdyb3VwOjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRM
aW5rcyh0cnVlKTsKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6c2V0TG9jYWxMb2FkUG9saWN5KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpB
bGxvd0xvY2FsTG9hZHNGb3JMb2NhbEFuZFN1YnN0aXR1dGVEYXRhKTsKIApkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggMjNkOGY4ZS4u
MzkzZDE0MyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMDgtMTItMTMgIEhvbGdlciBIYW5zIFBldGVy
IEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFF0IEFQSSBleHBvc2VzIGEgZ2xvYmFsIGhpc3Rv
cnkgcGF0Y2ggQ1NTU3R5bGVTZWxlY3RvciB0byBtYWtlIEFQSSBjb25zdW1lcnMgd29yayBhZ2Fp
bgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk1
MgorCisgICAgICAgIFRoZSBRdFdlYktpdCBwb3J0IG1hZGUgdGhlIG1pc3Rha2Ugb2YgZXhwb3Np
bmcgYSBnbG9iYWwgaGlzdG9yeS4gVGhpcyBicm9rZQorICAgICAgICB3aXRoIHRoZSBhZGRpdGlv
biBvZiBQYWdlR3JvdXAgYW5kIExpbmtIYXNoLiBUaGlzIG5lZWRzIHRvIGJlIHJlcGFpcmVkCisg
ICAgICAgIGZvciBRdDQuNS4KKworICAgICAgICBBZGQgYSBmdW5jdGlvbiB0byBMaW5rSGFzaC5j
cHAgdGhhdCBpcyByZXNvbHZpbmcgYSBVUkwuIFVzZSB0aGlzCisgICAgICAgIGZ1bmN0aW9uIGZy
b20gd2l0aGluIENTU1N0eWxlU2VsZWN0b3IgdG8gZm9yd2FyZCB0aGUgdXJsIHRvIHRoZQorICAg
ICAgICBRV2ViSGlzdG9yeUludGVyZmFjZSBBUEkuCisKKyAgICAgICAgSXQgaXMgc2FkIHRoYXQg
dGhlcmUgaXMgYSBwYXRoIHdpdGhpbiB2aXNpdGVkTGlua0hhc2ggd2hpY2ggaXMgbm93CisgICAg
ICAgIGRvaW5nIGEgbWVtY3B5LCBpdCBpcyBzYWQgdG8gYWRkIGEgUExBVEZPUk0oUVQpIGRlZmlu
ZSB0byBDU1NTdHlsZVNlbGVjdG9yCisgICAgICAgIGFuZCB1c2luZyBRdFdlYktpdCB0eXBlcyB3
aXRoaW4gV2ViQ29yZSBpcyBhIGxheWVyaW5nIHZpb2xhdGlvbiBhcyB3ZWxsLgorCisgICAgICAg
IFBhZ2VHcm91cDo6c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MgaXMgY3VycmVudGx5IG5vdCBl
bmFibGVkLiBGb3IKKyAgICAgICAgUXQ0LjYgYSBzZWNvbmQgdmVyc2lvbiBvZiB0aGUgUVdlYkhp
c3RvcnlJbnRlcmZhY2UgaXMgZ29pbmcgdG8gYmUKKyAgICAgICAgYWRkZWQgd2hpY2ggd2lsbCBm
aXggdGhpbmdzIHVwLgorCisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcDoK
KyAgICAgICAgKFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpzZXREZWZhdWx0SW50ZXJmYWNlKTogQWRk
IG5vdGUgZm9yIFF0NC42CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDogUmVtb3ZlIFBhZ2VH
cm91cDo6c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3ModHJ1ZSkKKyAgICAgICAgKFFXZWJQYWdl
UHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiB0ZXN0cy9xd2ViaGlzdG9yeWlu
dGVyZmFjZS9xd2ViaGlzdG9yeWludGVyZmFjZS5wcm86IEFkZGVkIHVuaXQgdGVzdC4KKyAgICAg
ICAgKiB0ZXN0cy9xd2ViaGlzdG9yeWludGVyZmFjZS90c3RfcXdlYmhpc3RvcnlpbnRlcmZhY2Uu
Y3BwOiBBZGRlZCB1bml0IHRlc3QuCisgICAgICAgICh0c3RfUVdlYkhpc3RvcnlJbnRlcmZhY2U6
OnRzdF9RV2ViSGlzdG9yeUludGVyZmFjZSk6CisgICAgICAgICh0c3RfUVdlYkhpc3RvcnlJbnRl
cmZhY2U6On50c3RfUVdlYkhpc3RvcnlJbnRlcmZhY2UpOgorICAgICAgICAodHN0X1FXZWJIaXN0
b3J5SW50ZXJmYWNlOjppbml0KToKKyAgICAgICAgKHRzdF9RV2ViSGlzdG9yeUludGVyZmFjZTo6
Y2xlYW51cCk6CisgICAgICAgIChGYWtlSGlzdG9yeUltcGxlbWVudGF0aW9uOjphZGRIaXN0b3J5
RW50cnkpOgorICAgICAgICAoRmFrZUhpc3RvcnlJbXBsZW1lbnRhdGlvbjo6aGlzdG9yeUNvbnRh
aW5zKToKKyAgICAgICAgKHRzdF9RV2ViSGlzdG9yeUludGVyZmFjZTo6dmlzaXRlZExpbmtzKTog
Q2hlY2sgdGhlIFF0NC40IGJlaGF2aW91ci4KKyAgICAgICAgKiB0ZXN0cy90ZXN0cy5wcm86CisK
IDIwMDgtMTItMTIgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L3Rlc3RzL3F3ZWJoaXN0b3J5aW50ZXJmYWNlL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLnBybyBiL1dl
YktpdC9xdC90ZXN0cy9xd2ViaGlzdG9yeWludGVyZmFjZS9xd2ViaGlzdG9yeWludGVyZmFjZS5w
cm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYzYjM0OAotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdC9xdC90ZXN0cy9xd2ViaGlzdG9yeWludGVyZmFjZS9xd2ViaGlzdG9y
eWludGVyZmFjZS5wcm8KQEAgLTAsMCArMSw2IEBACitURU1QTEFURSA9IGFwcAorVEFSR0VUID0g
dHN0X3F3ZWJoaXN0b3J5aW50ZXJmYWNlCitpbmNsdWRlKC4uLy4uLy4uLy4uL1dlYktpdC5wcmkp
CitTT1VSQ0VTICArPSB0c3RfcXdlYmhpc3RvcnlpbnRlcmZhY2UuY3BwCitRVCArPSB0ZXN0bGli
IG5ldHdvcmsKK1FNQUtFX1JQQVRIRElSID0gJCRPVVRQVVRfRElSL2xpYiAkJFFNQUtFX1JQQVRI
RElSCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvdGVzdHMvcXdlYmhpc3RvcnlpbnRlcmZhY2UvdHN0
X3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcCBiL1dlYktpdC9xdC90ZXN0cy9xd2ViaGlzdG9yeWlu
dGVyZmFjZS90c3RfcXdlYmhpc3RvcnlpbnRlcmZhY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjQzNWNhZGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvdGVz
dHMvcXdlYmhpc3RvcnlpbnRlcmZhY2UvdHN0X3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcApAQCAt
MCwwICsxLDk0IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRl
ciBGcmV5dGhlcgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyovCisKKworI2luY2x1ZGUgPFF0VGVzdC9RdFRlc3Q+CisKKyNpbmNsdWRlIDxx
d2VicGFnZS5oPgorI2luY2x1ZGUgPHF3ZWJ2aWV3Lmg+CisjaW5jbHVkZSA8cXdlYmZyYW1lLmg+
CisjaW5jbHVkZSA8cXdlYmhpc3RvcnlpbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxRRGVidWc+CisK
K2NsYXNzIHRzdF9RV2ViSGlzdG9yeUludGVyZmFjZSA6IHB1YmxpYyBRT2JqZWN0Cit7CisgICAg
UV9PQkpFQ1QKKworcHVibGljOgorICAgIHRzdF9RV2ViSGlzdG9yeUludGVyZmFjZSgpOworICAg
IHZpcnR1YWwgfnRzdF9RV2ViSGlzdG9yeUludGVyZmFjZSgpOworCitwdWJsaWMgc2xvdHM6Cisg
ICAgdm9pZCBpbml0KCk7CisgICAgdm9pZCBjbGVhbnVwKCk7CisKK3ByaXZhdGUgc2xvdHM6Cisg
ICAgdm9pZCB2aXNpdGVkTGlua3MoKTsKKworcHJpdmF0ZToKKworCitwcml2YXRlOgorICAgIFFX
ZWJWaWV3KiBtX3ZpZXc7CisgICAgUVdlYlBhZ2UqIG1fcGFnZTsKK307CisKK3RzdF9RV2ViSGlz
dG9yeUludGVyZmFjZTo6dHN0X1FXZWJIaXN0b3J5SW50ZXJmYWNlKCkKK3sKK30KKwordHN0X1FX
ZWJIaXN0b3J5SW50ZXJmYWNlOjp+dHN0X1FXZWJIaXN0b3J5SW50ZXJmYWNlKCkKK3sKK30KKwor
dm9pZCB0c3RfUVdlYkhpc3RvcnlJbnRlcmZhY2U6OmluaXQoKQoreworICAgIG1fdmlldyA9IG5l
dyBRV2ViVmlldygpOworICAgIG1fcGFnZSA9IG1fdmlldy0+cGFnZSgpOworfQorCit2b2lkIHRz
dF9RV2ViSGlzdG9yeUludGVyZmFjZTo6Y2xlYW51cCgpCit7CisgICAgZGVsZXRlIG1fdmlldzsK
K30KKworY2xhc3MgRmFrZUhpc3RvcnlJbXBsZW1lbnRhdGlvbiA6IHB1YmxpYyBRV2ViSGlzdG9y
eUludGVyZmFjZSB7CitwdWJsaWM6CisgICAgdm9pZCBhZGRIaXN0b3J5RW50cnkoY29uc3QgUVN0
cmluZyYpIHt9CisgICAgYm9vbCBoaXN0b3J5Q29udGFpbnMoY29uc3QgUVN0cmluZyYgdXJsKSBj
b25zdCB7CisgICAgICAgIHJldHVybiB1cmwgPT0gUUxhdGluMVN0cmluZygiaHR0cDovL3d3dy50
cm9sbHRlY2guY29tLyIpOworICAgIH0KK307CisKKworLyoKKyAqIFRlc3QgdGhhdCB2aXNpdGVk
IGxpbmtzIGFyZSBwcm9wZXJseSBjb2xvcmVkLiBodHRwOi8vd3d3LnRyb2xsdGVjaC5jb20gaXMg
bWFya2VkCisgKiBhcyB2aXNpdGVkLCBzbyB0aGUgYmVsb3cgd2Vic2l0ZSBzaG91bGQgaGF2ZSBl
eGFjdGx5IG9uZSBlbGVtZW50IGluIHRoZSBhOnZpc2l0ZWQKKyAqIHN0YXRlLgorICovCit2b2lk
IHRzdF9RV2ViSGlzdG9yeUludGVyZmFjZTo6dmlzaXRlZExpbmtzKCkKK3sKKyAgICBRV2ViSGlz
dG9yeUludGVyZmFjZTo6c2V0RGVmYXVsdEludGVyZmFjZShuZXcgRmFrZUhpc3RvcnlJbXBsZW1l
bnRhdGlvbik7CisgICAgbV92aWV3LT5zZXRIdG1sKCI8aHRtbD48Ym9keT48YSBocmVmPSdodHRw
Oi8vd3d3LnRyb2xsdGVjaC5jb20nPlRyb2xsdGVjaDwvYT48L2JvZHk+PC9odG1sPiIpOworICAg
IFFDT01QQVJFKG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgnOnZpc2l0ZWQnKS5sZW5ndGg7IikudG9TdHJpbmcoKSwKKyAg
ICAgICAgICAgICBRU3RyaW5nOjpmcm9tTGF0aW4xKCIxIikpOworfQorCitRVEVTVF9NQUlOKHRz
dF9RV2ViSGlzdG9yeUludGVyZmFjZSkKKyNpbmNsdWRlICJ0c3RfcXdlYmhpc3RvcnlpbnRlcmZh
Y2UubW9jIgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L3Rlc3RzL3Rlc3RzLnBybyBiL1dlYktpdC9x
dC90ZXN0cy90ZXN0cy5wcm8KaW5kZXggZjA4ODMwZC4uMTZjYjQ1NyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L3Rlc3RzL3Rlc3RzLnBybworKysgYi9XZWJLaXQvcXQvdGVzdHMvdGVzdHMucHJvCkBA
IC0xLDMgKzEsMyBAQAogCiBURU1QTEFURSA9IHN1YmRpcnMKLVNVQkRJUlMgPSBxd2ViZnJhbWUg
cXdlYnBhZ2UKK1NVQkRJUlMgPSBxd2ViZnJhbWUgcXdlYnBhZ2UgcXdlYmhpc3RvcnlpbnRlcmZh
Y2UKLS0gCjEuNS42LjMKCg==
</data>
<flag name="review"
          id="12244"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>