<?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>108670</bug_id>
          
          <creation_ts>2013-02-01 11:45:09 -0800</creation_ts>
          <short_desc>[V8] IndexedDB: Minor GC can collect IDBDatabase wrapper with versionchange handler</short_desc>
          <delta_ts>2013-02-11 09:30:05 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>102716</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>haraken</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>823060</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-01 11:45:09 -0800</bug_when>
    <thetext>Reported by a user:

&gt; I am getting this behaviour on IDBDatabase when it should be firing a
&gt; versionchange event.
&gt;
&gt; Step 1. IDBDatabase object is assigned an onversionchange event but no
&gt; reference is kept.
&gt; Step 2. IDBFactory.open is called with a higher version number.
&gt; Step 3. Garbage collection comes along and eats the all references to the
&gt; first IDBDatabase, but fails to close it. Cause? If it has read or written
&gt; to the database?
&gt; The versionchange event can&apos;t force a call to close() because it is never
&gt; called.
&gt; Result: The IDBOpenRequest from Step 2 is forever blocked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823065</commentid>
    <comment_count>1</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-01 11:46:42 -0800</bug_when>
    <thetext>Just off the top of my head, it seems like IDBDatabase should implement ActiveDOMObject::hasPendingActivity() and return true until the connection is closed, since versionchange could fire on it at any time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823123</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-01 12:23:57 -0800</bug_when>
    <thetext>Alternately, the bug could be the fact that it&apos;s not closing when the wrapper is collected. If all script references to the database are dropped I wouldn&apos;t necessarily expect the versionchange handler to keep it alive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823238</commentid>
    <comment_count>3</comment_count>
      <attachid>186131</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-01 13:58:18 -0800</bug_when>
    <thetext>Created attachment 186131
Attempted repro

So far, no luck trying to repro by:

open connection
assign versionchange handler (w/o connection reference in closure)
drop all references
force GC
open second connection

At this point I see:
* the versionchange handler fire (which would seem to indicate that my GCing was unsuccessful)
* an arbitrarily long pause (up to 20 seconds?); pause can be shortened (in chrome) by opening the inspector. Presumably this is waiting for an actual GC.
* the second connection opens successfully, indicating that the first connection was finally closed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823239</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-01 14:00:00 -0800</bug_when>
    <thetext>Possibly related to wkbug.com/102716 though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827973</commentid>
    <comment_count>5</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-07 16:18:31 -0800</bug_when>
    <thetext>The reporter confirms that what he was trying matches the description: &quot;ensuring there were no references to the database connection, yet neither seeing the versionchange handler called nor eventually seeing subsequent open calls succeed&quot; (my words, though).

Repro cases posted:

Open a transaction and make an IDBRequest on an IDBObjectStore  but don&apos;t assign the onerror/onabort handlers.

https://dl.dropbox.com/u/12865946/IndexedDB/108670b.html

or Request IDBIndex objects from an IDBObjectStore and keep references of them.

https://dl.dropbox.com/u/12865946/IndexedDB/108670.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828015</commentid>
    <comment_count>6</comment_count>
      <attachid>187201</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-07 16:49:46 -0800</bug_when>
    <thetext>Created attachment 187201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828022</commentid>
    <comment_count>7</comment_count>
      <attachid>187201</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-07 16:58:06 -0800</bug_when>
    <thetext>Comment on attachment 187201
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=187201&amp;action=review

&gt; Source/WebCore/ChangeLog:11
&gt; +        No new tests - TODO before landing.

Yeah, a test case please. You can write a reliable test case by using gc(), which explicitly triggers full garbage collection.

&gt; Source/WebCore/Modules/indexeddb/IDBDatabase.cpp:362
&gt; +    // FIXME: Only keep the wrapper alive if there are event listeners.

Is it difficult to check whether event listeners are attached or not?

&gt; Source/WebCore/Modules/indexeddb/IDBDatabase.cpp:363
&gt; +    return !m_closePending || ActiveDOMObject::hasPendingActivity();

Why do you need ActiveDOMObject::hasPendingActivity() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828032</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-07 17:08:19 -0800</bug_when>
    <thetext>Sorry, didn&apos;t meant to indicate this was ready for r w/o tests.

&gt; &gt; Source/WebCore/Modules/indexeddb/IDBDatabase.cpp:362
&gt; &gt; +    // FIXME: Only keep the wrapper alive if there are event listeners.
&gt; 
&gt; Is it difficult to check whether event listeners are attached or not?

I just noticed EventTarget::hasEventListeners() - I&apos;ll play with it. Unfortunately, it&apos;s not marked const but ActiveDOMObject::hasPendingActivity() is const, so I may need to land a const-ifying patch for it first.
 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBDatabase.cpp:363
&gt; &gt; +    return !m_closePending || ActiveDOMObject::hasPendingActivity();
&gt; 
&gt; Why do you need ActiveDOMObject::hasPendingActivity() ?

Copy/paste. It looks like the other IDB implementations of the method call the base class method, even though it&apos;s not necessary. I&apos;ll remove those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828720</commentid>
    <comment_count>9</comment_count>
      <attachid>187350</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-08 12:42:22 -0800</bug_when>
    <thetext>Created attachment 187350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828721</commentid>
    <comment_count>10</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-08 12:48:07 -0800</bug_when>
    <thetext>Calling hasEventListeners() wasn&apos;t going to happen; to make that const would require making eventTargetData() const which didn&apos;t appear tractable. Fortunately, the inline version is trivial.

Added a test matching the repro  provided. In DRT w/o the patch the test shows onVersionChange is not called. However, it also doesn&apos;t &quot;hang&quot; waiting on GC to eventually claim the IDBDatabase object (unlike running the repro in Chrome)  probably due to GC differences in DRT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829379</commentid>
    <comment_count>11</comment_count>
      <attachid>187350</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-10 17:43:05 -0800</bug_when>
    <thetext>Comment on attachment 187350
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829787</commentid>
    <comment_count>12</comment_count>
      <attachid>187350</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 09:30:01 -0800</bug_when>
    <thetext>Comment on attachment 187350
Patch

Clearing flags on attachment: 187350

Committed r142483: &lt;http://trac.webkit.org/changeset/142483&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829788</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 09:30:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>186131</attachid>
            <date>2013-02-01 13:58:18 -0800</date>
            <delta_ts>2013-02-01 13:58:18 -0800</delta_ts>
            <desc>Attempted repro</desc>
            <filename>database-activedomobject.js</filename>
            <type>application/javascript</type>
            <size>2367</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewogICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOwp9CgpkZXNjcmlwdGlvbigiRW5zdXJlIHRoYXQgSURCRGF0YWJhc2Ugb2JqZWN0cyBh
cmUgbm90IEdDJ2QgaWYgdGhleSBjb3VsZCBoYXZlIHBlbmRpbmcgZXZlbnRzIik7CgpmdW5jdGlv
biB0ZXN0KCkgewogICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKICAgIHNldERCTmFtZUZyb21Q
YXRoKCk7CgogICAgdGVzdERlbGV0ZURhdGFiYXNlKCk7Cn0KCmZ1bmN0aW9uIHRlc3REZWxldGVE
YXRhYmFzZSgpCnsKICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0
ZURhdGFiYXNlKGRibmFtZSkiKTsKICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwogICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0T3BlbkRhdGFiYXNlOwp9Cgpm
dW5jdGlvbiB0ZXN0T3BlbkRhdGFiYXNlKCkKewogICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbihkYm5hbWUsIDEpIik7CiAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gb25VcGdy
YWRlTmVlZGVkOwogICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvbk9wZW5TdWNjZXNzOwp9CgpmdW5j
dGlvbiBvblVwZ3JhZGVOZWVkZWQoZXZ0KQp7CiAgICBwcmVhbWJsZShldnQpOwogICAgdmFyIGRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIp
Owp9CgpmdW5jdGlvbiBvbk9wZW5TdWNjZXNzKGV2dCkKewogICAgcHJlYW1ibGUoZXZ0KTsKCiAg
ICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKICAgIHZhciBjbG9zdXJl
REIgPSBkYjsKICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rp
b24gb25WZXJzaW9uQ2hhbmdlKCkgewogICAgICAgIHByZWFtYmxlKCk7CiAgICAgICAgc2hvdWxk
QmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMSIpOwogICAgICAgIHNob3VsZEJlKCJldmVudC5uZXdW
ZXJzaW9uIiwgIjIiKTsKICAgICAgICBldmFsQW5kTG9nKCJ2ZXJzaW9uQ2hhbmdlRmlyZWQgPSB0
cnVlIik7CiAgICB9OwogICAgZXZhbEFuZExvZygidmVyc2lvbkNoYW5nZUZpcmVkID0gZmFsc2Ui
KTsKCiAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScs
ICdyZWFkd3JpdGUnKSIpOwogICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J3N0b3JlJykucHV0KCd2YWx1ZScsICdrZXknKSIpOwogICAgdHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gbnVsbCIp
OwogICAgICAgIGV2YWxBbmRMb2coImRiID0gbnVsbCIpOwogICAgICAgIGV2YWxBbmRMb2coImV2
ZW50ID0gbnVsbCIpOwogICAgICAgIHNldFRpbWVvdXQodGVzdE9wZW5BZ2FpbiwgMCk7IC8vIFJ1
biB3aXRoIGEgZnJlc2ggc3RhY2sKICAgIH07Cn0KCmZ1bmN0aW9uIHRlc3RPcGVuQWdhaW4oKQp7
CiAgICBwcmVhbWJsZSgpOwogICAgaWYgKHNlbGYuZ2MpIHsKICAgICAgICBkZWJ1ZygicnVubmlu
ZyBnYyIpOwogICAgICAgIHNlbGYuZ2MoKTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyArK2kpIHsKICAgICAgICAgICAgdmFyIGdhcmJhZ2UgPSB7fTsKICAgICAgICB9CiAgICB9
CiAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKGRibmFtZSwgMiki
KTsKICAgIGV2YWxBbmRMb2coIm9uVXBncmFkZU5lZWRlZEFnYWluRmlyZWQgPSBmYWxzZSIpOwog
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiAgICByZXF1ZXN0
Lm9udXBncmFkZW5lZWRlZCA9IG9uVXBncmFkZU5lZWRlZEFnYWluOwogICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvbk9wZW5TdWNjZXNzQWdhaW47Cn0KCgpmdW5jdGlvbiBvblVwZ3JhZGVOZWVkZWRB
Z2FpbihldnQpCnsKICAgIHByZWFtYmxlKGV2dCk7CiAgICBldmFsQW5kTG9nKCJvblVwZ3JhZGVO
ZWVkZWRBZ2FpbkZpcmVkID0gdHJ1ZSIpOwp9CgpmdW5jdGlvbiBvbk9wZW5TdWNjZXNzQWdhaW4o
ZXZ0KQp7CiAgICBwcmVhbWJsZShldnQpOwogICAgc2hvdWxkQmVUcnVlKCJ2ZXJzaW9uQ2hhbmdl
RmlyZWQiKTsKICAgIHNob3VsZEJlVHJ1ZSgib25VcGdyYWRlTmVlZGVkQWdhaW5GaXJlZCIpOwog
ICAgZmluaXNoSlNUZXN0KCk7Cn0KCnRlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187201</attachid>
            <date>2013-02-07 16:49:46 -0800</date>
            <delta_ts>2013-02-08 12:42:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108670-20130207164621.patch</filename>
            <type>text/plain</type>
            <size>2451</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBkOTE4MjU4ZjA2NTlj
NWZhYjA2MzgxYTdlNWUxYmNjMGNlY2U4NC4uNjcwNzRjN2NlMWUwYjQ0ZjFhMWU5ZDA4MmJhZTUz
ZGM3NzRhYmU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAyLTA3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBJbmRleGVkREI6
IE1pbm9yIEdDIGNhbiBjb2xsZWN0IElEQkRhdGFiYXNlIHdyYXBwZXIgd2l0aCB2ZXJzaW9uY2hh
bmdlIGhhbmRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwODY3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFByZXZlbnQgSURCRGF0YWJhc2UncyB3cmFwcGVyIGZyb20gYmVpbmcgR0MnZCB3aGlsZSB0
aGUgZGF0YWJhc2UgaXMgb3BlbiwgYXMgaXQgbWF5CisgICAgICAgIGhhdmUgZXZlbnQgbGlzdGVu
ZXJzIHRoYXQgd2lsbCBjbG9zZSB0aGUgZGF0YWJhc2UgaW4gcmVzcG9uc2UgdG8gZXZlbnRzLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIFRPRE8gYmVmb3JlIGxhbmRpbmcuCisKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgIChJREJEYXRh
YmFzZSk6CisKIDIwMTMtMDItMDcgIFZpdmVrIEdhbGF0YWdlICA8dml2ZWsudmdAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ1BVIHBlZ2dlZCB3aGVuIGluc3BlY3Rpbmcg
TG9jYWxTdG9yYWdlIHRoYXQgbXV0YXRlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCAyZjJhMmFkMjNmNDIyOWE3MTE5Yjc4Yzhm
ZjNhN2E1MzY3ZDI5ZWQwLi45MDdhZmY4NjVkMTIyNDNiZGFkOGI4MmIyNDFiMTQxMTU4YTRkNDFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCkBAIC0zNTUsNiArMzU1LDE0IEBAIGludDY0X3QgSURCRGF0YWJhc2U6OmZpbmRPYmplY3RT
dG9yZUlkKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gSURCT2JqZWN0U3Rv
cmVNZXRhZGF0YTo6SW52YWxpZElkOwogfQogCitib29sIElEQkRhdGFiYXNlOjpoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdAoreworICAgIC8vIFRoZSBzY3JpcHQgd3JhcHBlciBtdXN0IG5vdCBi
ZSBjb2xsZWN0ZWQgYmVmb3JlIHRoZSBvYmplY3QgaXMgY2xvc2VkIG9yCisgICAgLy8gd2UgY2Fu
J3QgZmlyZSBhICJ2ZXJzaW9uY2hhbmdlIiBldmVudCB0byBsZXQgc2NyaXB0IG1hbnVhbGx5IGNs
b3NlIHRoZSBjb25uZWN0aW9uLgorICAgIC8vIEZJWE1FOiBPbmx5IGtlZXAgdGhlIHdyYXBwZXIg
YWxpdmUgaWYgdGhlcmUgYXJlIGV2ZW50IGxpc3RlbmVycy4KKyAgICByZXR1cm4gIW1fY2xvc2VQ
ZW5kaW5nIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKIHZv
aWQgSURCRGF0YWJhc2U6OnN0b3AoKQogewogICAgIEFjdGl2ZURPTU9iamVjdDo6c3RvcCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXgg
OWU1NjUwNzA2ZDVlNTJjOWM3N2JiODY4M2E0NDgwOTkyODQwYzU2MS4uZGUxM2I2N2ZiZThmMGQ4
NmNhOTU0NmEyYjAzMjMwMDEyYTIyMjllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgb25Db21wbGV0ZShpbnQ2NF90KTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVj
dAorICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCiAgICAgLy8gRXZlbnRUYXJnZXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187350</attachid>
            <date>2013-02-08 12:42:22 -0800</date>
            <delta_ts>2013-02-11 09:30:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108670-20130208123857.patch</filename>
            <type>text/plain</type>
            <size>9720</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBkOTE4MjU4ZjA2NTlj
NWZhYjA2MzgxYTdlNWUxYmNjMGNlY2U4NC4uN2YyNGJhMzljZDRlZWEzNDhiYjJhMGZiMTYzZTM5
MzA3YjAxZDA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTAyLTA4ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBJbmRleGVkREI6
IE1pbm9yIEdDIGNhbiBjb2xsZWN0IElEQkRhdGFiYXNlIHdyYXBwZXIgd2l0aCB2ZXJzaW9uY2hh
bmdlIGhhbmRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwODY3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFByZXZlbnQgSURCRGF0YWJhc2UncyB3cmFwcGVyIGZyb20gYmVpbmcgR0MnZCB3aGlsZSB0
aGUgZGF0YWJhc2UgaXMgb3BlbiBpZiBpdCBoYXMKKyAgICAgICAgbGlzdGVuZXJzLCBhcyB0aG9z
ZSBsaXN0ZW5lcnMgbWF5IGNsb3NlIHRoZSBkYXRhYmFzZSBpbiByZXNwb25zZSB0byBldmVudHMu
CisKKyAgICAgICAgQWxzbywgcmVtb3ZlZCBleHRyYW5lb3VzIHN1cGVyLWNhbGxzIGZyb20gaGFz
UGVuZGluZ0FjdGl2aXR5KCkgb3ZlcnJpZGVzLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5k
ZXhlZGRiL2RhdGFiYXNlLXdyYXBwZXIuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Omhhc1Bl
bmRpbmdBY3Rpdml0eSk6IEltcGxlbWVudGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmg6IERlY2xhcmVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6aGFzUGVuZGluZ0Fj
dGl2aXR5KTogU2ltcGxpZmllZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aGFzUGVuZGlu
Z0FjdGl2aXR5KTogU2ltcGxpZmllZC4KKwogMjAxMy0wMi0wNyAgVml2ZWsgR2FsYXRhZ2UgIDx2
aXZlay52Z0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDUFUgcGVnZ2Vk
IHdoZW4gaW5zcGVjdGluZyBMb2NhbFN0b3JhZ2UgdGhhdCBtdXRhdGVzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IDJmMmEyYWQy
M2Y0MjI5YTcxMTliNzhjOGZmM2E3YTUzNjdkMjllZDAuLjExYmViZjM1YTYwMzQ3OTliZDBiYTM4
N2UwZjc3MDZjZmVkM2M4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTM1NSw2ICszNTUsMTMgQEAgaW50NjRfdCBJREJEYXRh
YmFzZTo6ZmluZE9iamVjdFN0b3JlSWQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogICAgIHJl
dHVybiBJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbnZhbGlkSWQ7CiB9CiAKK2Jvb2wgSURCRGF0
YWJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Cit7CisgICAgLy8gVGhlIHNjcmlwdCB3
cmFwcGVyIG11c3Qgbm90IGJlIGNvbGxlY3RlZCBiZWZvcmUgdGhlIG9iamVjdCBpcyBjbG9zZWQg
b3IKKyAgICAvLyB3ZSBjYW4ndCBmaXJlIGEgInZlcnNpb25jaGFuZ2UiIGV2ZW50IHRvIGxldCBz
Y3JpcHQgbWFudWFsbHkgY2xvc2UgdGhlIGNvbm5lY3Rpb24uCisgICAgcmV0dXJuICFtX2Nsb3Nl
UGVuZGluZyAmJiAhbV9ldmVudFRhcmdldERhdGEuZXZlbnRMaXN0ZW5lck1hcC5pc0VtcHR5KCk7
Cit9CisKIHZvaWQgSURCRGF0YWJhc2U6OnN0b3AoKQogewogICAgIEFjdGl2ZURPTU9iamVjdDo6
c3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
LmgKaW5kZXggOWU1NjUwNzA2ZDVlNTJjOWM3N2JiODY4M2E0NDgwOTkyODQwYzU2MS4uZGUxM2I2
N2ZiZThmMGQ4NmNhOTU0NmEyYjAzMjMwMDEyYTIyMjllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC04Miw2ICs4Miw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgb25Db21wbGV0ZShpbnQ2NF90KTsKIAogICAgIC8vIEFjdGl2
ZURPTU9iamVjdAorICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCiAgICAgLy8gRXZl
bnRUYXJnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5jcHAKaW5kZXggZDBjZTBmZDBkNjU3MTE1NDlkNzYwOGM0NzJkYzZhM2U5NGQ4MTVhZi4uY2Zl
ODQzZmRlMWQzYzNmNmRkNjQ4NTI3OTNlZDQ0M2E0YWVjMDU4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTQwNSw3ICs0MDUsNyBA
QCBib29sIElEQlJlcXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAgLy8gRklY
TUU6IEluIGFuIGlkZWFsIHdvcmxkLCB3ZSBzaG91bGQgcmV0dXJuIHRydWUgYXMgbG9uZyBhcyBh
bnlvbmUgaGFzIGEgb3IgY2FuCiAgICAgLy8gICAgICAgIGdldCBhIGhhbmRsZSB0byB1cyBhbmQg
d2UgaGF2ZSBldmVudCBsaXN0ZW5lcnMuIFRoaXMgaXMgb3JkZXIgdG8gaGFuZGxlCiAgICAgLy8g
ICAgICAgIHVzZXIgZ2VuZXJhdGVkIGV2ZW50cyBwcm9wZXJseS4KLSAgICByZXR1cm4gbV9oYXNQ
ZW5kaW5nQWN0aXZpdHkgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsK
KyAgICByZXR1cm4gbV9oYXNQZW5kaW5nQWN0aXZpdHk7CiB9CiAKIHZvaWQgSURCUmVxdWVzdDo6
c3RvcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKaW5kZXggYmI2MGI0ZTQ3YTRhMTIxOWJiOGFiYWQyNmJkNDk3MWNmMTViN2Iw
YS4uOTNkMzExMTYwNDEzZmQ3YjhjZmY0MGVjMTU1MjAzNzRiZjk5MWZlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAt
MzM0LDcgKzMzNCw3IEBAIGJvb2wgSURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0CiAgICAgLy8gRklYTUU6IEluIGFuIGlkZWFsIHdvcmxkLCB3ZSBzaG91bGQgcmV0dXJu
IHRydWUgYXMgbG9uZyBhcyBhbnlvbmUgaGFzIGEgb3IgY2FuCiAgICAgLy8gICAgICAgIGdldCBh
IGhhbmRsZSB0byB1cyBvciBhbnkgY2hpbGQgcmVxdWVzdCBvYmplY3QgYW5kIGFueSBvZiB0aG9z
ZSBoYXZlCiAgICAgLy8gICAgICAgIGV2ZW50IGxpc3RlbmVycy4gVGhpcyBpcyAgaW4gb3JkZXIg
dG8gaGFuZGxlIHVzZXIgZ2VuZXJhdGVkIGV2ZW50cyBwcm9wZXJseS4KLSAgICByZXR1cm4gbV9o
YXNQZW5kaW5nQWN0aXZpdHkgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHko
KTsKKyAgICByZXR1cm4gbV9oYXNQZW5kaW5nQWN0aXZpdHk7CiB9CiAKIElEQlRyYW5zYWN0aW9u
OjpNb2RlIElEQlRyYW5zYWN0aW9uOjpzdHJpbmdUb01vZGUoY29uc3QgU3RyaW5nJiBtb2RlU3Ry
aW5nLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhOWZjZGUzYjhhNmI0MjI4MTE4MjkwNzBmODA1MzVmY2E3NDI1MzMyLi5kNjE4Mzk1
ZWYwMjkyYjZiZWRkN2QwZDdhZWJlYTIyZjIxODJhMTI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTMtMDItMDggIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbVjhdIEluZGV4ZWREQjogTWlub3IgR0MgY2FuIGNvbGxlY3QgSURCRGF0YWJhc2Ugd3JhcHBl
ciB3aXRoIHZlcnNpb25jaGFuZ2UgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS13cmFwcGVy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJh
c2Utd3JhcHBlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvZGF0YWJhc2Utd3JhcHBlci5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAg
ICAgKG9wZW5EQik6CisgICAgICAgIChvblVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAob3BlblN1
Y2Nlc3MuZ2V0IHJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKG9uVmVyc2lvbkNoYW5nZSk6
CisgICAgICAgIChjb2xsZWN0R2FyYmFnZSk6CisgICAgICAgIChvcGVuQWdhaW4pOgorICAgICAg
ICAob25CbG9ja2VkKToKKyAgICAgICAgKG9wZW5BZ2FpblN1Y2Nlc3MpOgorCiAyMDEzLTAxLTI3
ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBDU1MgMi4xIGZh
aWx1cmU6IGZsb2F0cy0xNDkgZmFpbHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2RhdGFiYXNlLXdyYXBwZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZGF0YWJhc2Utd3JhcHBlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODA0ZmNmNzE2NjA4Y2E2YzJkOWZlM2Q3ZjY4ZWZmMWEyYjZiY2Q1MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLXdyYXBwZXItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMzggQEAKK0Vuc3VyZSBJREJEYXRhYmFzZSB3cmFwcGVyIGlzbid0
IHByZW1hdHVyZWx5IGNvbGxlY3RlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K2RibmFtZSA9ICJkYXRhYmFzZS13cmFwcGVyLmh0bWwiCitpbmRleGVkREIuZGVsZXRlRGF0YWJh
c2UoZGJuYW1lKQorCitvcGVuREIoKToKK2luZGV4ZWREQi5vcGVuKGRibmFtZSwgMSkKKworb25V
cGdyYWRlTmVlZGVkKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK2RiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZScpLmNyZWF0ZUluZGV4KCdpbmRleCcsICdrZXlQYXRoJykKK2RiID0gbnVs
bAorCitvcGVuU3VjY2VzcygpOgorc2F3VmVyc2lvbkNoYW5nZUV2ZW50ID0gZmFsc2UKKworY29s
bGVjdEdhcmJhZ2UoKToKK3NlbGYuZ2MoKQorCitvcGVuQWdhaW4oKToKK2luZGV4ZWREQi5vcGVu
KGRibmFtZSwgMikKKworb25WZXJzaW9uQ2hhbmdlKCk6CitldmVudC50YXJnZXQuY2xvc2UoKQor
c2F3VmVyc2lvbkNoYW5nZUV2ZW50ID0gdHJ1ZQorCitvbkJsb2NrZWQoKToKK0ZJWE1FOiBCbG9j
a2VkIGV2ZW50IHNob3VsZG4ndCBmaXJlLiBodHRwOi8vd2tidWcuY29tLzcxMTMwCisKK29wZW5B
Z2FpblN1Y2Nlc3MoKToKK1BBU1Mgc2F3VmVyc2lvbkNoYW5nZUV2ZW50IGlzIHRydWUKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS13cmFwcGVyLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS13cmFwcGVyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2M0NjUzMmE4NjU3Mjg0OWQyOWNkYmE2N2QzNDM3ZDcyODhhZmQ2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLXdyYXBwZXIu
aHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9kYXRhYmFzZS13cmFwcGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2RhdGFiYXNlLXdyYXBwZXIuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YWJhc2Utd3JhcHBlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjgzNTAw
YjMwYzc4YWM0NmQxNzZkOWRjMDAzMDkyNzVmMmU3YTkyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLXdyYXBwZXIuanMK
QEAgLTAsMCArMSw5MCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAg
aW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJFbnN1cmUgSURC
RGF0YWJhc2Ugd3JhcHBlciBpc24ndCBwcmVtYXR1cmVseSBjb2xsZWN0ZWQuIik7CisKK3Rlc3Qo
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgc2V0REJOYW1lRnJvbVBhdGgoKTsKKyAgICB2
YXIgZGVsZXRlUmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShk
Ym5hbWUpIik7CisgICAgZGVsZXRlUmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tl
ZENhbGxiYWNrOworICAgIGRlbGV0ZVJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIGRlbGV0ZVJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkRCOworfQorCitmdW5j
dGlvbiBvcGVuREIoKQoreworICAgIHByZWFtYmxlKCk7CisKKyAgICB2YXIgb3BlblJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihkYm5hbWUsIDEpIik7CisgICAgb3BlblJlcXVl
c3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICBvcGVuUmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgb3BlblJlcXVlc3Qub251
cGdyYWRlbmVlZGVkID0gb25VcGdyYWRlTmVlZGVkOworICAgIG9wZW5SZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworfQorCitmdW5jdGlvbiBvblVwZ3JhZGVOZWVkZWQoZXZ0KSB7Cisg
ICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKS5jcmVh
dGVJbmRleCgnaW5kZXgnLCAna2V5UGF0aCcpIik7CisgICAgZXZhbEFuZExvZygiZGIgPSBudWxs
Iik7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQp
OworICAgIHZhciBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgZGIub252ZXJzaW9uY2hh
bmdlID0gb25WZXJzaW9uQ2hhbmdlOworICAgIGV2YWxBbmRMb2coInNhd1ZlcnNpb25DaGFuZ2VF
dmVudCA9IGZhbHNlIik7CisKKyAgICAvLyBBbGwgdGhlc2UgbG9jYWwgcmVmZXJlbmNlcyBzaG91
bGQgZ2V0IGNvbGxlY3RlZCwgYnV0IHRoZSBkYXRhYmFzZSdzCisgICAgLy8gd3JhcHBlciBzaG91
bGRuJ3QgZ2V0IGNvbGxlY3RlZCBiZWZvcmUgdGhlIGRhdGFiYXNlIGl0c2VsZi4KKyAgICB2YXIg
dHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZG9ubHknKTsKKyAgICB2
YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKTsKKyAgICB2
YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldCgwKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgeworICAgICAgICBzZXRUaW1lb3V0KGNvbGxlY3RHYXJiYWdlLCAwKTsKKyAg
ICB9OworfQorCitmdW5jdGlvbiBvblZlcnNpb25DaGFuZ2UoZXZ0KQoreworICAgIHByZWFtYmxl
KGV2dCk7CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LmNsb3NlKCkiKTsKKyAgICBldmFs
QW5kTG9nKCJzYXdWZXJzaW9uQ2hhbmdlRXZlbnQgPSB0cnVlIik7Cit9CisKK2Z1bmN0aW9uIGNv
bGxlY3RHYXJiYWdlKCkKK3sKKyAgICBwcmVhbWJsZSgpOworICAgIGV2YWxBbmRMb2coInNlbGYu
Z2MoKSIpOworCisgICAgc2V0VGltZW91dChvcGVuQWdhaW4sIDApOworfQorCitmdW5jdGlvbiBv
cGVuQWdhaW4oKQoreworICAgIHByZWFtYmxlKCk7CisKKyAgICB2YXIgb3BlblJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihkYm5hbWUsIDIpIik7CisgICAgb3BlblJlcXVlc3Qu
b25ibG9ja2VkID0gb25CbG9ja2VkOworICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQWdhaW5T
dWNjZXNzOworfQorCitmdW5jdGlvbiBvbkJsb2NrZWQoKQoreworICAgIHByZWFtYmxlKCk7Cisg
ICAgZGVidWcoIkZJWE1FOiBCbG9ja2VkIGV2ZW50IHNob3VsZG4ndCBmaXJlLiBodHRwOi8vd2ti
dWcuY29tLzcxMTMwIik7Cit9CisKK2Z1bmN0aW9uIG9wZW5BZ2FpblN1Y2Nlc3MoZXZ0KQorewor
ICAgIHByZWFtYmxlKGV2dCk7CisgICAgc2hvdWxkQmVUcnVlKCJzYXdWZXJzaW9uQ2hhbmdlRXZl
bnQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>