<?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>35063</bug_id>
          
          <creation_ts>2010-02-17 16:41:27 -0800</creation_ts>
          <short_desc>Particularly constructed WebFrames can try to access a null HistoryItem</short_desc>
          <delta_ts>2010-02-22 09:07:20 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aroben</cc>
    
    <cc>fishd</cc>
    
    <cc>plaes</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>191295</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-02-17 16:41:27 -0800</bug_when>
    <thetext>Starting with the changes for the history state object API, we do work to keep history items chained together after navigations.

There are some cases where this can occur when there wasn&apos;t an &quot;m_currentItem&quot; before a navigation took place.

All known cases seem to be using the Mac or (Apple)Windows API&apos;s [WebFrame loadData:] or [WebView initWithCoder:] which populate a WebFrame upon creation with content but never actually navigating it.

A subsequent intra-document navigation that attempts to chain together history items will result in a null deref.

I initially tried to fix this by *ALWAYS* giving HistoryController an empty m_currentItem at creation.  This resulted in many failing layout tests as the null-ness of the current item seems to be a linchpin when deciding whether a frame contains the &quot;initial empty document&quot; or has actually been navigated somewhere, and changing this throws off the back forward list in many tests in many different ways.

Cleaning that up is part of a much greater FrameLoader refactoring task.  For now, I&apos;ll be adding a proposed fix that simply does a null-check and early return in the known fragment identifier scrolling case.  Note that there are a few other &quot;m_currentItem&quot; null checks in HistoryController and - while FrameLoader should probably be reworked so they aren&apos;t necessary - it seems like this one was one that has simply stayed hidden until we started to see some crashes with particular API usage.

The patch will also continue - for now Mac-only - DRT changes that twiddle this crash with the very specific WebKit API usage needed.

In radar as &lt;rdar://problem/7638892&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191300</commentid>
    <comment_count>1</comment_count>
      <attachid>48947</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-02-17 16:58:03 -0800</bug_when>
    <thetext>Created attachment 48947
Proposed fix, layout test, and Mac-only DRT changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191318</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-17 17:32:50 -0800</bug_when>
    <thetext>Attachment 48947 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/279146</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191364</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-02-17 19:25:37 -0800</bug_when>
    <thetext>I don&apos;t understand how the Qt drt build wasn&apos;t already broken.  None of the LayoutTestController methods that take JSStringRefs seem to be implemented for Qt, how are they linking at all.

A review on the patch would still be appreciated while I try to figure out how to keep qt building...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191614</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-02-18 08:20:59 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I don&apos;t understand how the Qt drt build wasn&apos;t already broken.  None of the
&gt; LayoutTestController methods that take JSStringRefs seem to be implemented for
&gt; Qt, how are they linking at all.
&gt; 
&gt; A review on the patch would still be appreciated while I try to figure out how
&gt; to keep qt building...

Qt has its own implementation of LayoutTestController. It doesn&apos;t use the cross-platform one the rest of the ports use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191627</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-02-18 09:13:59 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/54966</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191803</commentid>
    <comment_count>6</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-02-18 18:18:01 -0800</bug_when>
    <thetext>*** Bug 34905 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191816</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-02-18 21:12:29 -0800</bug_when>
    <thetext>FYI, it looks like Tony attached a test case to bug 34905 for this crash that just uses an iframe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191940</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-02-19 09:16:31 -0800</bug_when>
    <thetext>I saw that last night, and hope to adapt it to a new layout test when I have &quot;spare cycles&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192232</commentid>
    <comment_count>9</comment_count>
      <attachid>49140</attachid>
    <who name="David Benjamin">davidben</who>
    <bug_when>2010-02-20 20:23:26 -0800</bug_when>
    <thetext>Created attachment 49140
Javascript test case

&gt; All known cases seem to be using the Mac or (Apple)Windows API&apos;s [WebFrame
&gt; loadData:] or [WebView initWithCoder:] which populate a WebFrame upon creation
&gt; with content but never actually navigating it.

I was looking into a separate crash recently and noticed that this also fixes it. You don&apos;t need to use WebKit APIs to trigger this; another case is if you open an empty window and then document.write() into it. I&apos;ve attached the file I had been testing with.

(It appears that WebKit also doesn&apos;t follow what the standard says with regard to inserting history entries on document.open(). See 3.5.1. It looks like currently the type and replace arguments are ignored and no history modifications take place? Could be wrong about that --- only just started navigating the codebase.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192480</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-02-22 09:07:20 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; I was looking into a separate crash recently and noticed that this also fixes
&gt; it. You don&apos;t need to use WebKit APIs to trigger this; another case is if you
&gt; open an empty window and then document.write() into it. I&apos;ve attached the file
&gt; I had been testing with.

Thanks David, see the comments right above yours - this alternate way to crash was discovered after the fix and API test for this bug landed.

&gt; (It appears that WebKit also doesn&apos;t follow what the standard says with regard
&gt; to inserting history entries on document.open(). See 3.5.1. It looks like
&gt; currently the type and replace arguments are ignored and no history
&gt; modifications take place? Could be wrong about that --- only just started
&gt; navigating the codebase.)

That seems completely orthogonal to this bug.  If you think something&apos;s wrong, please file a bugzilla with:
-A test case
-What you think expected behavior should be (and how it differs from real behavior)
-What other browsers do.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48947</attachid>
            <date>2010-02-17 16:58:03 -0800</date>
            <delta_ts>2010-02-18 08:21:43 -0800</delta_ts>
            <desc>Proposed fix, layout test, and Mac-only DRT changes.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>15618</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDkxMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDItMTcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBh
cnRpY3VsYXJseSBjb25zdHJ1Y3RlZCBXZWJGcmFtZXMgY2FuIHRyeSB0byBhY2Nlc3MgYSBudWxs
IEhpc3RvcnlJdGVtCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjM4ODkyPiBhbmQgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MDYzCisKKyAgICAgICAgVGVzdDog
ZmFzdC9sb2FkZXIvYXBpLXRlc3QtbmV3LXdpbmRvdy1kYXRhLWxvYWQtYmFzZS11cmwuaHRtbAor
CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVCYWNrRm9yd2FyZExpc3RGb3JGcmFnbWVudFNj
cm9sbCk6IFdlIGhhdmUgYSBrbm93biBjYXNlIHdoZXJlIGEgZnJhZ21lbnQgc2Nyb2xsCisgICAg
ICAgICAgbWlnaHQgdGFrZSBwbGFjZSB3aXRoIGEgbnVsbCBtX2N1cnJlbnRJdGVtLiB1cGRhdGVC
YWNrRm9yd2FyZExpc3RDbGlwcGVkQXRUYXJnZXQoKSB3aWxsIGVpdGhlciBtb3ZlIG1fY3VycmVu
dEl0ZW0gCisgICAgICAgICAgdG8gbV9wcmV2aW91c0l0ZW0gdGhlbiBjcmVhdGUgYSBuZXcgbV9j
dXJyZW50SXRlbS4uLiAgb3IgaXQgd2lsbCBkbyBub3RoaW5nLiBTbyB3ZSBlaXRoZXIgaGF2ZSBi
b3RoIGFuIG1fY3VycmVudEl0ZW0gCisgICAgICAgICAgYW5kIG1fcHJldmlvdXNJdGVtLCBvciB3
ZSBoYXZlIG5laXRoZXIuICBJbiB0aGUgY2FzZSB3aGVyZSB3ZSBoYXZlIG5vIG1fcHJldmlvdXNJ
dGVtLCByZXR1cm4gZWFybHkuCisKIDIwMTAtMDItMTcgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSb2xsaW5nIG91dCByNTQ5MDkuIEJyZWFrcyBTTCBhbmQgV2lu
LgpJbmRleDogV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNTQ5MTEp
CisrKyBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwOSw2ICsxMDksMTAgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlQmFja0Zv
cndhcgogICAgIAogICAgIC8vIFNpbmNlIHRoZSBkb2N1bWVudCBpc24ndCBjaGFuZ2VkIGFzIGEg
cmVzdWx0IG9mIGEgZnJhZ21lbnQgc2Nyb2xsLCB3ZSBzaG91bGQKICAgICAvLyBwcmVzZXJ2ZSB0
aGUgRG9jdW1lbnRTZXF1ZW5jZU51bWJlciBvZiB0aGUgcHJldmlvdXMgaXRlbS4KKyAgICBpZiAo
IW1fcHJldmlvdXNJdGVtKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9jdXJyZW50
SXRlbSk7CiAgICAgbV9jdXJyZW50SXRlbS0+c2V0RG9jdW1lbnRTZXF1ZW5jZU51bWJlcihtX3By
ZXZpb3VzSXRlbS0+ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpKTsKIH0KIApJbmRleDogV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2
aXNpb24gNTQ5MTIpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwzNiBAQAorMjAxMC0wMi0xNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFy
dGljdWxhcmx5IGNvbnN0cnVjdGVkIFdlYkZyYW1lcyBjYW4gdHJ5IHRvIGFjY2VzcyBhIG51bGwg
SGlzdG9yeUl0ZW0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2Mzg4OTI+IGFuZCBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUwNjMKKworICAgICAgICBBZGQgdGhl
IHNwZWNpZmljIGFiaWxpdHkgdG8gdGVzdCB0aGlzIEFQSSBwYXR0ZXJuLiAKKworICAgICAgICBG
b3Igbm93IG9ubHkgb24gTWFjLCBwZXJoYXBzIG9uIHRoZSBtYWluIFdpbmRvd3MgcG9ydCBsYXRl
ciwgcHJvYmFibHkgbm90IHJlbGV2YW50IGZvciBvdGhlciBwb3J0cy4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKGFwaVRlc3RO
ZXdXaW5kb3dEYXRhTG9hZEJhc2VVUkxDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oOgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoLVtBUElUZXN0RGVsZWdhdGUgaW5pdFdp
dGhDb21wbGV0aW9uQ29uZGl0aW9uOl0pOgorICAgICAgICAoLVtBUElUZXN0RGVsZWdhdGUgd2Vi
VmlldzpkaWRGYWlsTG9hZFdpdGhFcnJvcjpmb3JGcmFtZTpdKToKKyAgICAgICAgKC1bQVBJVGVz
dERlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcjpmb3JGcmFt
ZTpdKToKKyAgICAgICAgKC1bQVBJVGVzdERlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTG9hZEZv
ckZyYW1lOl0pOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFwaVRlc3ROZXdXaW5k
b3dEYXRhTG9hZEJhc2VVUkwpOiBDcmVhdGUgYSBXZWJWaWV3LCBkbyBhIGxvYWREYXRhOiBpbiBp
dHMKKyAgICAgICAgICBtYWluRnJhbWUsIGFuZCBzeW5jaHJvbm91c2x5IHdhaXQgZm9yIG1haW4g
bG9hZCBjb21wbGV0aW9uLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXBpVGVz
dE5ld1dpbmRvd0RhdGFMb2FkQmFzZVVSTCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2lu
L0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjphcGlUZXN0TmV3V2luZG93RGF0YUxvYWRCYXNlVVJMKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjphcGlUZXN0TmV3V2luZG93RGF0YUxvYWRCYXNlVVJMKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFwaVRlc3ROZXdXaW5kb3dEYXRhTG9hZEJhc2VVUkwp
OgorCiAyMDEwLTAyLTE3ICBEaWVnbyBHb256YWxleiAgPGRpZWdvLmdvbnphbGV6QG9wZW5ib3Nz
YS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KSW5kZXg6IFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDU0OTExKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjY0LDYgKzEyNjQsMjIgQEAgc3Rh
dGljIEpTVmFsdWVSZWYgYWRkVXNlclN0eWxlU2hlZXRDYWxsYgogICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgYXBpVGVzdE5l
d1dpbmRvd0RhdGFMb2FkQmFzZVVSTENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBpZiAoYXJndW1lbnRDb3VudCAhPSAyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdXRmOERhdGEo
QWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRp
b24pKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IGJhc2VVUkwoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1l
bnRzWzFdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworICAgICAgICAK
KyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91
dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBj
b250cm9sbGVyLT5hcGlUZXN0TmV3V2luZG93RGF0YUxvYWRCYXNlVVJMKHV0ZjhEYXRhLmdldCgp
LCBiYXNlVVJMLmdldCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7Cit9CisKIC8vIFN0YXRpYyBWYWx1ZXMKIAogc3RhdGljIEpTVmFsdWVSZWYgZ2V0R2xvYmFs
RmxhZ0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTEz
NDAsNiArMTM1Niw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoK
ICAgICAgICAgeyAiYWRkRGlzYWxsb3dlZFVSTCIsIGFkZERpc2FsbG93ZWRVUkxDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJhZGRVc2VyU2NyaXB0IiwgYWRkVXNlclNjcmlwdENhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgImFkZFVzZXJTdHlsZVNoZWV0IiwgYWRkVXNlclN0eWxlU2hl
ZXRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJhcGlUZXN0TmV3V2luZG93RGF0YUxvYWRC
YXNlVVJMIiwgYXBpVGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFzZVVSTENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgImNsZWFyQWxsRGF0YWJhc2VzIiwgY2xlYXJBbGxEYXRhYmFzZXNDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJjbGVhckJhY2tGb3J3YXJkTGlzdCIsIGNsZWFyQmFja0Zv
cndhcmRMaXN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiY2xlYXJQZXJzaXN0ZW50VXNl
clN0eWxlU2hlZXQiLCBjbGVhclBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldENhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmgJKHJldmlzaW9uIDU0OTExKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMzLDYgKzIzMywx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCh1bnNp
Z25lZCB3b3JsZElkLCBKU09iamVjdFJlZiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nUmVmIHNjcmlw
dCk7CiAKICAgICB2b2lkIHNldFBPU0lYTG9jYWxlKEpTU3RyaW5nUmVmIGxvY2FsZSk7CisgICAg
CisgICAgLy8gVGhlIGZvbGxvd2luZyBBUEkgdGVzdCBmdW5jdGlvbnMgc2hvdWxkIHByb2JhYmx5
IGJlIG1vdmVkIHRvIHBsYXRmb3JtLXNwZWNpZmljIAorICAgIC8vIHVuaXQgdGVzdHMgb3V0c2lk
ZSBvZiBEUlQgb25jZSB0aGV5IGV4aXN0LgorICAgIHZvaWQgYXBpVGVzdE5ld1dpbmRvd0RhdGFM
b2FkQmFzZVVSTChKU1N0cmluZ1JlZiB1dGY4RGF0YSwgSlNTdHJpbmdSZWYgYmFzZVVSTCk7CiAK
IHByaXZhdGU6CiAgICAgYm9vbCBtX2R1bXBBc1BERjsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cAkocmV2aXNpb24gNTQ5MTEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTUsMyArNTk1LDgg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsVmlzaQogewogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcy4KIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXBp
VGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFzZVVSTChKU1N0cmluZ1JlZiB1dGY4RGF0YSwgSlNTdHJp
bmdSZWYgYmFzZVVSTCkKK3sKKworfQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24g
NTQ5MTEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRy
b2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTYyMiwzICs2MjIsNjcgQEAgdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcAogCiAgICAgW21haW5GcmFtZSBfc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6c2NyaXB0TlMgd2l0aEdsb2JhbE9iamVj
dDpnbG9iYWxPYmplY3QgaW5TY3JpcHRXb3JsZDp3b3JsZF07CiB9CisKK0BpbnRlcmZhY2UgQVBJ
VGVzdERlbGVnYXRlIDogTlNPYmplY3QKK3sKKyAgICBib29sKiBtX2NvbmRpdGlvbjsKK30KK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIEFQSVRlc3REZWxlZ2F0ZQorCistIChpZClpbml0V2l0aENv
bXBsZXRpb25Db25kaXRpb246KGJvb2wqKWNvbmRpdGlvbgoreworICAgIFtzdXBlciBpbml0XTsK
KyAgICBBU1NFUlQoY29uZGl0aW9uKTsKKyAgICBtX2NvbmRpdGlvbiA9IGNvbmRpdGlvbjsKKyAg
ICAqbV9jb25kaXRpb24gPSBmYWxzZTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZCl3
ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZhaWxMb2FkV2l0aEVycm9yOihOU0Vycm9yICop
ZXJyb3IgZm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKK3sKKyAgICBwcmludGYoIkFQSSBUZXN0
IGxvYWQgZmFpbGVkXG4iKTsKKyAgICAqbV9jb25kaXRpb24gPSB0cnVlOworfQorCistICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJv
cjooTlNFcnJvciAqKWVycm9yIGZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCit7CisgICAgcHJp
bnRmKCJBUEkgVGVzdCBsb2FkIGZhaWxlZCBwcm92aXNpb25hbFxuIik7CisgICAgKm1fY29uZGl0
aW9uID0gdHJ1ZTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZp
bmlzaExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQoreworICAgIHByaW50ZigiQVBJIFRl
c3QgbG9hZCBzdWNjZWVkZWRcbiIpOworICAgICptX2NvbmRpdGlvbiA9IHRydWU7Cit9CisKK0Bl
bmQKKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXBpVGVzdE5ld1dpbmRvd0RhdGFMb2Fk
QmFzZVVSTChKU1N0cmluZ1JlZiB1dGY4RGF0YSwgSlNTdHJpbmdSZWYgYmFzZVVSTCkKK3sKKyAg
ICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGlu
aXRdOworCisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGY4RGF0YUNGKEFkb3B0Q0YsIEpT
U3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHV0ZjhEYXRhKSk7CisgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBiYXNlVVJMQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzZVVSTCkpOworICAgIAorICAgIFdlYlZpZXcg
KndlYlZpZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFt
ZU5hbWU6QCIiIGdyb3VwTmFtZTpAIiJdOworCisgICAgYm9vbCBkb25lID0gZmFsc2U7CisgICAg
QVBJVGVzdERlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbQVBJVGVzdERlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aENvbXBsZXRpb25Db25kaXRpb246JmRvbmVdOworICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9h
ZERlbGVnYXRlOmRlbGVnYXRlXTsKKworICAgIFtbd2ViVmlldyBtYWluRnJhbWVdIGxvYWREYXRh
OlsoTlNTdHJpbmcgKil1dGY4RGF0YUNGLmdldCgpIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXSBNSU1FVHlwZTpAInRleHQvaHRtbCIgdGV4dEVuY29kaW5nTmFtZTpAInV0
Zi04IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKWJhc2VVUkxDRi5n
ZXQoKV1dOworICAgIAorICAgIHdoaWxlICghZG9uZSkgeworICAgICAgICBOU0F1dG9yZWxlYXNl
UG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOworICAgICAgICBb
W05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcnVuTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBi
ZWZvcmVEYXRlOltOU0RhdGUgZGlzdGFudFBhc3RdXTsKKyAgICAgICAgW3Bvb2wgcmVsZWFzZV07
CisgICAgfQorICAgICAgICAKKyAgICBbd2ViVmlldyBjbG9zZV07CisgICAgW3dlYlZpZXcgcmVs
ZWFzZV07CisgICAgW2RlbGVnYXRlIHJlbGVhc2VdOworICAgIFtwb29sIHJlbGVhc2VdOworfQpJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5jcHAJKHJldmlzaW9uIDU0OTExKQorKysgV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUwMCwzICs1MDAsOCBAQCBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFn
ZXMoCiB7CiAgICAgcmV0dXJuIHF0X2RydF9udW1iZXJPZlBhZ2VzKG1fZHJ0LT53ZWJQYWdlKCkt
Pm1haW5GcmFtZSgpLCB3aWR0aCwgaGVpZ2h0KTsKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6YXBpVGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFzZVVSTChKU1N0cmluZ1JlZiB1dGY4RGF0
YSwgSlNTdHJpbmdSZWYgYmFzZVVSTCkKK3sKKworfQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
CShyZXZpc2lvbiA1NDkxMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlv
dXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNDksMyArMTE0OSw4
IEBAIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQYWdlcygKICAgICAvLyBGSVhN
RTogaW1wbGVtZW50CiAgICAgcmV0dXJuIC0xOwogfQorCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjphcGlUZXN0TmV3V2luZG93RGF0YUxvYWRCYXNlVVJMKEpTU3RyaW5nUmVmIHV0ZjhEYXRh
LCBKU1N0cmluZ1JlZiBiYXNlVVJMKQoreworCit9CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAkocmV2
aXNpb24gNTQ5MTEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0
Q29udHJvbGxlcld4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgwLDQgKzM4MCw5IEBAIGludCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQYWdlcygKIHsKICAgICAvLyBGSVhNRTogaW1w
bGVtZW50CiAgICAgcmV0dXJuIC0xOwotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30K
Kwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXBpVGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFz
ZVVSTChKU1N0cmluZ1JlZiB1dGY4RGF0YSwgSlNTdHJpbmdSZWYgYmFzZVVSTCkKK3sKKworfQpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gNTQ5MTQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMi0xNyAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUGFydGljdWxhcmx5IGNvbnN0cnVjdGVkIFdlYkZyYW1lcyBjYW4gdHJ5IHRvIGFj
Y2VzcyBhIG51bGwgSGlzdG9yeUl0ZW0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2Mzg4OTI+
IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUwNjMKKworICAg
ICAgICAqIGZhc3QvbG9hZGVyL2FwaS10ZXN0LW5ldy13aW5kb3ctZGF0YS1sb2FkLWJhc2UtdXJs
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvYXBpLXRlc3QtbmV3
LXdpbmRvdy1kYXRhLWxvYWQtYmFzZS11cmwuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMC0wMi0xNyAgQnJpYW4gV2VpbnN0ZWluICA8
YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRGFuIEJl
cm5zdGVpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2FwaS10ZXN0LW5ldy13aW5k
b3ctZGF0YS1sb2FkLWJhc2UtdXJsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9hcGktdGVzdC1uZXctd2luZG93LWRhdGEtbG9hZC1iYXNlLXVybC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9hcGkt
dGVzdC1uZXctd2luZG93LWRhdGEtbG9hZC1iYXNlLXVybC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNCBAQAorQVBJIFRlc3QgbG9hZCBzdWNjZWVkZWQKK1RoaXMgdGVzdCBv
bmx5IHJ1bnMgaW4gRFJULgorSXQgY3JlYXRlcyBhIG5ldyBXZWJWaWV3IHVzaW5nIFdlYktpdCBB
UEksIHBvcHVsYXRlcyBpdCB1c2luZyAibG9hZERhdGEiIGFuZCBnaXZlcyBpdCBhIGJhc2UgVVJM
LCB0aGVuIGNsaWNrcyBvbiBhIGZyYWdtZW50IGFuY2hvciB3aXRoaW4gaXQuCitJZiBpdCBkb2Vz
bid0IGNyYXNoLCBpdCBwYXNzZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9hcGkt
dGVzdC1uZXctd2luZG93LWRhdGEtbG9hZC1iYXNlLXVybC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL2FwaS10ZXN0LW5ldy13aW5kb3ctZGF0YS1sb2FkLWJhc2Ut
dXJsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9hcGktdGVz
dC1uZXctd2luZG93LWRhdGEtbG9hZC1iYXNlLXVybC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDIzIEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBkYXRhVVJM
ID0gIjxhIGlkPSdhbmNob3InIGhyZWY9JyNmb28nPkhlbGxvPC9hPjxicj48ZGl2IGlkPSdmb28n
PjwvZGl2PjxzIiArICJjcmlwdD4iICsKKyAgICAgICAgICAgICAgICAgICJ2YXIgZXZ0ID0gZG9j
dW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnQnKTsiICsKKyAgICAgICAgICAgICAgICAgICJl
dnQuaW5pdE1vdXNlRXZlbnQoJ2NsaWNrJywgdHJ1ZSwgdHJ1ZSwgd2luZG93LCAwLCAwLCAwLCAw
LCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgbnVsbCk7IiArIAorICAgICAgICAg
ICAgICAgICAgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbmNob3InKS5kaXNwYXRjaEV2ZW50
KGV2dCk7IiArCisgICAgICAgICAgICAgICAgICAiPC9zIiArICJjcmlwdD4iOworICAgIAorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmFwaVRlc3ROZXdXaW5kb3dEYXRhTG9hZEJhc2VVUkwoZGF0
YVVSTCwgImh0dHA6Ly9leGFtcGxlLmNvbS9leGFtcGxlLmh0bWwiKTsKK30KKzwvc2NyaXB0Pgor
PGJvZHk+Cis8cHJlPlRoaXMgdGVzdCBvbmx5IHJ1bnMgaW4gRFJULgorSXQgY3JlYXRlcyBhIG5l
dyBXZWJWaWV3IHVzaW5nIFdlYktpdCBBUEksIHBvcHVsYXRlcyBpdCB1c2luZyAibG9hZERhdGEi
IGFuZCBnaXZlcyBpdCBhIGJhc2UgVVJMLCB0aGVuIGNsaWNrcyBvbiBhIGZyYWdtZW50IGFuY2hv
ciB3aXRoaW4gaXQuCitJZiBpdCBkb2Vzbid0IGNyYXNoLCBpdCBwYXNzZWQuPC9wcmU+Cis8L2Jv
ZHk+CisKKworCisKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDU0
OTExKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkK
QEAgLTU4NTcsMyArNTg1Nyw2IEBAIHByaW50aW5nL251bWJlck9mUGFnZXMuaHRtbAogIyBOZXcg
dGVzdCB0aGF0IHJlcG9ydHMgd3JvbmcgdmFsdWVzCiAjIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ5MTgKIGZhc3QvdGV4dC9nbHlwaC1yZW9yZGVyaW5nLmh0
bWwKKworIyBOZWVkcyBwbGF0Zm9ybSBzcGVjaWZpYyBBUEkgaW1wbGVtZW50ZWQgaW4gRFJULCBw
cm9iYWJseSBub3QgcmVsZXZhbnQgZm9yIG5vbi1NYWMgYW5kIG5vbi1XaW5kb3dzIHBvcnRzCitm
YXN0L2xvYWRlci9hcGktdGVzdC1uZXctd2luZG93LWRhdGEtbG9hZC1iYXNlLXVybC5odG1sCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDU0OTExKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTA4MiwzICs1MDgyLDYg
QEAgZmFzdC9jYW52YXMvZHJhd0ltYWdlLXdpdGgtbmVnYXRpdmUtc291cgogIyBRdCBtYXkgd2Fu
dCB0byBmb2xsb3cgR1RLKyBpbiBhZGRpbmcgYSBkZWZhdWx0IEFjY2VwdCBoZWFkZXIgZm9yCiAj
IHN1YnJlc291cmNlcy4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMzI0Mi4KIGh0dHAvdGVzdHMvbWlzYy9pbWFnZS1jaGVja3MtZm9yLWFjY2VwdC5odG1sCisK
KyMgTmVlZHMgcGxhdGZvcm0gc3BlY2lmaWMgQVBJIGltcGxlbWVudGVkIGluIERSVCwgcHJvYmFi
bHkgbm90IHJlbGV2YW50IGZvciBub24tTWFjIGFuZCBub24tV2luZG93cyBwb3J0cworZmFzdC9s
b2FkZXIvYXBpLXRlc3QtbmV3LXdpbmRvdy1kYXRhLWxvYWQtYmFzZS11cmwuaHRtbApJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlzaW9uIDU0OTExKQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTc3MiwzICs3NzIsNiBAQCBo
dHRwL3Rlc3RzL21pc2MvaW1hZ2UtY2hlY2tzLWZvci1hY2NlcHQuCiAjIFRlc3RzIHRpbWVvdXQ6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTA0MQogd2Vic29ja2V0
L3Rlc3RzL2ZyYW1lLWxlbmd0aHMuaHRtbAogd2Vic29ja2V0L3Rlc3RzL3NpbXBsZS1zdHJlc3Mu
aHRtbAorCisjIE5lZWRzIHBsYXRmb3JtIHNwZWNpZmljIEFQSSBpbXBsZW1lbnRlZCBpbiBEUlQs
IHByb2JhYmx5IG5vdCByZWxldmFudCBmb3Igbm9uLU1hYyBhbmQgbm9uLVdpbmRvd3MgcG9ydHMK
K2Zhc3QvbG9hZGVyL2FwaS10ZXN0LW5ldy13aW5kb3ctZGF0YS1sb2FkLWJhc2UtdXJsLmh0bWwK
</data>
<flag name="review"
          id="31692"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="31693"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>49140</attachid>
            <date>2010-02-20 20:23:26 -0800</date>
            <delta_ts>2010-02-20 20:23:26 -0800</delta_ts>
            <desc>Javascript test case</desc>
            <filename>generated-popup.html</filename>
            <type>text/html</type>
            <size>438</size>
            <attacher name="David Benjamin">davidben</attacher>
            
              <data encoding="base64">PGh0bWw+CiAgICA8aGVhZD4KCTx0aXRsZT5DcmVhdGUgZ2VuZXJhdGVkIHBvcHVwPC90aXRsZT4K
CTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCSAgICBmdW5jdGlvbiBvcGVuX3BvcHVw
KCkgewoJCXZhciBwb3B1cCA9IHdpbmRvdy5vcGVuKCcnLCAnX2JsYW5rJyk7CgoJCXZhciBodG1s
ID0gJyc7CgkJaHRtbCArPSAnPGgxPlRoaXMgaXMgYSBnZW5lcmF0ZWQgcG9wdXA8L2gxPlxuJzsK
CQlodG1sICs9ICc8YSBocmVmPSIjIj5DbGljayBtZTwvYT4nOwoKCQlwb3B1cC5kb2N1bWVudC53
cml0ZShodG1sKTsKCQlwb3B1cC5kb2N1bWVudC5jbG9zZSgpOwoJICAgIH0KCTwvc2NyaXB0Pgog
ICAgPC9oZWFkPgogICAgPGJvZHk+Cgk8YnV0dG9uIG9uY2xpY2s9Im9wZW5fcG9wdXAoKSI+TGF1
bmNoIHBvcHVwPC9idXR0b24+CiAgICA8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>