<?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>45369</bug_id>
          
          <creation_ts>2010-09-07 23:21:41 -0700</creation_ts>
          <short_desc>Need to check the target frame and restore the right gesture state during the asynchronous history navigation</short_desc>
          <delta_ts>2010-09-17 09:37:56 -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>Page Loading</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Johnny(Jianning) Ding">jnd</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>cevans</cc>
    
    <cc>inferno</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>275627</commentid>
    <comment_count>0</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-09-07 23:21:41 -0700</bug_when>
    <thetext>The following html can bypass popup blocker in both chromium and safari. (You can also run the attached test case)
&lt;base target=&quot;some&quot;&gt; 
&lt;script&gt;
history.go()
&lt;/script&gt;

This bugs is to opening a page in a new frame by using history.go(0),  there are two problems in this bug.
1. WebKit needs to check the target frame to see whether it is a new frame and is allowed to open.
2. WebKit needs to restore the correct gesture state during the asynchronous history navigation. The cause of this problem is same as bug 44969, so again a Chromium test will also be added to address the popup blocker issue in Chromium side.

A patch will be sent soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275778</commentid>
    <comment_count>1</comment_count>
      <attachid>66886</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-09-08 05:52:33 -0700</bug_when>
    <thetext>Created attachment 66886
fix patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275779</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-08 05:54:11 -0700</bug_when>
    <thetext>Attachment 66886 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/loader/RedirectScheduler.cpp:85:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275789</commentid>
    <comment_count>3</comment_count>
      <attachid>66889</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-09-08 06:15:10 -0700</bug_when>
    <thetext>Created attachment 66889
fix patch v1

fix style warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275818</commentid>
    <comment_count>4</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2010-09-08 07:10:50 -0700</bug_when>
    <thetext>Thanks a lot Johnny for neutralizing yet another popup blocker bypass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276994</commentid>
    <comment_count>5</comment_count>
      <attachid>66889</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-09 21:19:07 -0700</bug_when>
    <thetext>Comment on attachment 66889
fix patch v1

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

&gt; WebCore/loader/FrameLoader.cpp:296
&gt; +    // Check whether a new window is allowed to create for navigation.
&gt; +    Frame* targetFrame = m_frame-&gt;tree()-&gt;find(target);
&gt; +    if (!targetFrame &amp;&amp; !DOMWindow::allowPopUp(m_frame) &amp;&amp; !isProcessingUserGesture())
&gt; +        return;
It&apos;s lame that we need to find the targetFrame again.  What if we get a different answer the second time?  Can we move this check closing to where we actually know the targetFrame?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278117</commentid>
    <comment_count>6</comment_count>
      <attachid>67396</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-09-13 04:19:42 -0700</bug_when>
    <thetext>Created attachment 67396
patch v2

(In reply to comment #5)

&gt; It&apos;s lame that we need to find the targetFrame again.  What if we get a different answer the second time?  Can we move this check closing to where we actually know the targetFrame?

Thanks, Adam. I agree with you that we need to put the the check in right place.
So the way is to check the name of targetFrame in where we actually know the targetFrame as early as possible, like currently WebKit  puts block popup logic in the following situations,

a). window.open,  WebKit checks the name of targetFrame immediately in DOMWindow:open before starting creating the window and loading the URL.
b). form.submit, WebKit checks the name of targetFrame in FrameLoader::submitForm before adding it to RedirectScheduler
c). history.go(0) (what this patch wants to do),  so I guess I should put the logic in RedirectScheduler::scheduleHistoryNavigation before starting the RedirectScheduler.

Please take a look at the new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279862</commentid>
    <comment_count>7</comment_count>
      <attachid>67396</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-15 17:57:03 -0700</bug_when>
    <thetext>Comment on attachment 67396
patch v2

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

&gt; WebCore/loader/RedirectScheduler.cpp:355
&gt; +        // History reload uses the base target as target frame.
&gt; +        Frame* targetFrame = m_frame-&gt;tree()-&gt;find(m_frame-&gt;document()-&gt;baseTarget());
&gt; +        if (!targetFrame &amp;&amp; !DOMWindow::allowPopUp(m_frame) &amp;&amp; !isUserGesture)
&gt; +            return;

Is there a race condition where the target frame changes between when the navigation is scheduled and when it fires?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280018</commentid>
    <comment_count>8</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-09-16 04:54:04 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Is there a race condition where the target frame changes between when the navigation is scheduled and when it fires?

Adam, you are right, there could be a race condition.
So I am interested in how IE and Firefox handle this situation. The investigation result is that they didn&apos;t allow history reload to navigate to another frame. The history reload can only be navigate to the self frame.
I think we should follow the main-stream browsers&apos; behavior, so I drop the old patch and wrote the patch V3, please take a look.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280020</commentid>
    <comment_count>9</comment_count>
      <attachid>67782</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-09-16 05:07:06 -0700</bug_when>
    <thetext>Created attachment 67782
patch v3,  only allow the history reload to navigate in the self frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280281</commentid>
    <comment_count>10</comment_count>
      <attachid>67396</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-16 12:35:51 -0700</bug_when>
    <thetext>Comment on attachment 67396
patch v2

Cleared Adam Barth&apos;s review+ from obsolete attachment 67396 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280546</commentid>
    <comment_count>11</comment_count>
      <attachid>67782</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-16 23:08:30 -0700</bug_when>
    <thetext>Comment on attachment 67782
patch v3,  only allow the history reload to navigate in the self frame.

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

&gt; WebCore/loader/RedirectScheduler.cpp:164
&gt; +            // To follow Firefox and IE&apos;s behavior, history reload can only be navigated to the self frame.

I&apos;d say &quot;can only navigate the self frame&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280556</commentid>
    <comment_count>12</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-09-16 23:54:19 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 67782 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67782&amp;action=prettypatch
&gt; 
&gt; &gt; WebCore/loader/RedirectScheduler.cpp:164
&gt; &gt; +            // To follow Firefox and IE&apos;s behavior, history reload can only be navigated to the self frame.
&gt; 
&gt; I&apos;d say &quot;can only navigate the self frame&quot;

Thanks Adam! Abhishek will help on landing it with taking your comment soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280686</commentid>
    <comment_count>13</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2010-09-17 09:37:56 -0700</bug_when>
    <thetext>Committed r67716: &lt;http://trac.webkit.org/changeset/67716&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66886</attachid>
            <date>2010-09-08 05:52:33 -0700</date>
            <delta_ts>2010-09-08 06:15:10 -0700</delta_ts>
            <desc>fix patch v1</desc>
            <filename>patch002.txt</filename>
            <type>text/plain</type>
            <size>11158</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Njk3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDktMDggIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXgg
YSBidWcgdG8gc3RvcCBoaXN0b3J5IHJlbG9hZCBuYXZpZ2F0aW9uIHRvIGJ5cGFzcyBXZWJLaXQn
cworICAgICAgICBwb3B1cCBibG9ja2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDUzNjkKKworICAgICAgICBUZXN0OiBmYXN0L2V2ZW50cy9wb3B1
cC1ibG9ja2VkLWZyb20taGlzdG9yeS1yZWxvYWQuaHRtbAorCisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3Rl
ZCk6CisgICAgICAgIENoZWNrIHRoZSB0YXJnZXQgZnJhbWUgdG8gc2VlIHdoZXRoZXIgaXQgaXMg
YSBuZXcgZnJhbWUgd2luZG93CisgICAgICAgIGFuZCB3aGV0aGVyIGl0IGlzIGFsbG93ZWQgdG8g
Y3JlYXRlIGluIGhpc3RvcnkgcmVsb2FkIG5hdmlnYXRpb24uCisgICAgICAgICogbG9hZGVyL1Jl
ZGlyZWN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZE5hdmlnYXRp
b246OlNjaGVkdWxlZE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkTmF2
aWdhdGlvbjo6d2FzVXNlckdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkVVJM
TmF2aWdhdGlvbjo6U2NoZWR1bGVkVVJMTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y2hlZHVsZWRVUkxOYXZpZ2F0aW9uOjpmaXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxl
ZFVSTE5hdmlnYXRpb246OnJlZmVycmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEhp
c3RvcnlOYXZpZ2F0aW9uOjpTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbjo6ZmlyZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWRGb3JtU3VibWlzc2lvbjo6U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb246OmZpcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24p
OgorICAgICAgICBNb3ZlIHRoZSBtX3dhc1VzZXJHZXN0dXJlIHRvIGJhc2UgY2xhc3MgU2NoZWR1
bGVkTmF2aWdhdGlvbiBhbmQKKyAgICAgICAgcmVzdG9yZSB0aGUgY29ycmVjdCBnZXN0dXJlIHN0
YXRlIGR1cmluZyB0aGUgYXN5bmNocm9ub3VzIGhpc3RvcnkKKyAgICAgICAgcmVsb2FkIG5hdmln
YXRpb24uCisKIDIwMTAtMDktMDggIEp1c3RpbiBTY2h1aCAgPGpzY2h1aEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpJbmRleDogV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNjY5NTApCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsMTAgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgUmVzbwogICAgIFN0cmluZyB0YXJnZXQgPSBwYXNzZWRU
YXJnZXQ7CiAgICAgaWYgKHRhcmdldC5pc0VtcHR5KCkpCiAgICAgICAgIHRhcmdldCA9IG1fZnJh
bWUtPmRvY3VtZW50KCktPmJhc2VUYXJnZXQoKTsKKyAgICAvLyBDaGVjayB3aGV0aGVyIGEgbmV3
IHdpbmRvdyBpcyBhbGxvd2VkIHRvIGNyZWF0ZSBmb3IgbmF2aWdhdGlvbi4KKyAgICBGcmFtZSog
dGFyZ2V0RnJhbWUgPSBtX2ZyYW1lLT50cmVlKCktPmZpbmQodGFyZ2V0KTsKKyAgICBpZiAoIXRh
cmdldEZyYW1lICYmICFET01XaW5kb3c6OmFsbG93UG9wVXAobV9mcmFtZSkgJiYgIWlzUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKCkpCisgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lTG9hZFJlcXVl
c3QgZnJhbWVSZXF1ZXN0KHJlcXVlc3QsIHRhcmdldCk7CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVy
L1JlZGlyZWN0U2NoZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9SZWRp
cmVjdFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDY2OTUwKQorKysgV2ViQ29yZS9sb2FkZXIvUmVk
aXJlY3RTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMiArNTIsMTMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY2hlZHVsZWROYXZpZ2F0aW9uIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAgICBTY2hlZHVsZWROYXZpZ2F0aW9uKGRvdWJsZSBkZWxh
eSwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBib29sIHdhc0R1
cmluZ0xvYWQsIGJvb2wgaXNMb2NhdGlvbkNoYW5nZSkKKyAgICBTY2hlZHVsZWROYXZpZ2F0aW9u
KGRvdWJsZSBkZWxheSwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0
LCBib29sIHdhc0R1cmluZ0xvYWQsIGJvb2wgaXNMb2NhdGlvbkNoYW5nZSwgYm9vbCB3YXNVc2Vy
R2VzdHVyZSkKICAgICAgICAgOiBtX2RlbGF5KGRlbGF5KQogICAgICAgICAsIG1fbG9ja0hpc3Rv
cnkobG9ja0hpc3RvcnkpCiAgICAgICAgICwgbV9sb2NrQmFja0ZvcndhcmRMaXN0KGxvY2tCYWNr
Rm9yd2FyZExpc3QpCiAgICAgICAgICwgbV93YXNEdXJpbmdMb2FkKHdhc0R1cmluZ0xvYWQpCiAg
ICAgICAgICwgbV9pc0xvY2F0aW9uQ2hhbmdlKGlzTG9jYXRpb25DaGFuZ2UpCisgICAgICAgICwg
bV93YXNVc2VyR2VzdHVyZSh3YXNVc2VyR2VzdHVyZSkKICAgICB7CiAgICAgfQogICAgIHZpcnR1
YWwgflNjaGVkdWxlZE5hdmlnYXRpb24oKSB7IH0KQEAgLTczLDYgKzc0LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9ja0JhY2tG
b3J3YXJkTGlzdDsgfQogICAgIGJvb2wgd2FzRHVyaW5nTG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1f
d2FzRHVyaW5nTG9hZDsgfQogICAgIGJvb2wgaXNMb2NhdGlvbkNoYW5nZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNMb2NhdGlvbkNoYW5nZTsgfQorICAgIGJvb2wgd2FzVXNlckdlc3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3dhc1VzZXJHZXN0dXJlOyB9CiAKIHByaXZhdGU6CiAgICAgZG91YmxlIG1f
ZGVsYXk7CkBAIC04MCwyMiArODIsMjIgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbG9ja0JhY2tG
b3J3YXJkTGlzdDsKICAgICBib29sIG1fd2FzRHVyaW5nTG9hZDsKICAgICBib29sIG1faXNMb2Nh
dGlvbkNoYW5nZTsKKyAgICBib29sIG1fd2FzVXNlckdlc3R1cmU7CQogfTsKIAogY2xhc3MgU2No
ZWR1bGVkVVJMTmF2aWdhdGlvbiA6IHB1YmxpYyBTY2hlZHVsZWROYXZpZ2F0aW9uIHsKIHB1Ymxp
YzoKICAgICBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uKGRvdWJsZSBkZWxheSwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9j
a0JhY2tGb3J3YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSwgYm9vbCBkdXJpbmdMb2FkLCBi
b29sIGlzTG9jYXRpb25DaGFuZ2UpCi0gICAgICAgIDogU2NoZWR1bGVkTmF2aWdhdGlvbihkZWxh
eSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQsIGlzTG9jYXRp
b25DaGFuZ2UpCisgICAgICAgIDogU2NoZWR1bGVkTmF2aWdhdGlvbihkZWxheSwgbG9ja0hpc3Rv
cnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQsIGlzTG9jYXRpb25DaGFuZ2UsIHdh
c1VzZXJHZXN0dXJlKQogICAgICAgICAsIG1fdXJsKHVybCkKICAgICAgICAgLCBtX3JlZmVycmVy
KHJlZmVycmVyKQotICAgICAgICAsIG1fd2FzVXNlckdlc3R1cmUod2FzVXNlckdlc3R1cmUpCiAg
ICAgICAgICwgbV9oYXZlVG9sZENsaWVudChmYWxzZSkKICAgICB7CiAgICAgfQogCiAgICAgdmly
dHVhbCB2b2lkIGZpcmUoRnJhbWUqIGZyYW1lKQogICAgIHsKLSAgICAgICAgZnJhbWUtPmxvYWRl
cigpLT5jaGFuZ2VMb2NhdGlvbihLVVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmwpLCBtX3JlZmVy
cmVyLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIG1fd2FzVXNlckdlc3R1
cmUsIGZhbHNlKTsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihLVVJM
KFBhcnNlZFVSTFN0cmluZywgbV91cmwpLCBtX3JlZmVycmVyLCBsb2NrSGlzdG9yeSgpLCBsb2Nr
QmFja0ZvcndhcmRMaXN0KCksIHdhc1VzZXJHZXN0dXJlKCksIGZhbHNlKTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRUaW1lcihGcmFtZSogZnJhbWUsIFRpbWVyPFJlZGlyZWN0
U2NoZWR1bGVyPiogdGltZXIpCkBAIC0xMTUsMTIgKzExNywxMCBAQCBwdWJsaWM6CiAKICAgICBT
dHJpbmcgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBTdHJpbmcgcmVmZXJyZXIo
KSBjb25zdCB7IHJldHVybiBtX3JlZmVycmVyOyB9Ci0gICAgYm9vbCB3YXNVc2VyR2VzdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fd2FzVXNlckdlc3R1cmU7IH0KIAogcHJpdmF0ZToKICAgICBTdHJp
bmcgbV91cmw7CiAgICAgU3RyaW5nIG1fcmVmZXJyZXI7Ci0gICAgYm9vbCBtX3dhc1VzZXJHZXN0
dXJlOwogICAgIGJvb2wgbV9oYXZlVG9sZENsaWVudDsKIH07CiAKQEAgLTE1MSwxNCArMTUxLDE2
IEBAIHB1YmxpYzoKIAogY2xhc3MgU2NoZWR1bGVkSGlzdG9yeU5hdmlnYXRpb24gOiBwdWJsaWMg
U2NoZWR1bGVkTmF2aWdhdGlvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU2NoZWR1bGVkSGlz
dG9yeU5hdmlnYXRpb24oaW50IGhpc3RvcnlTdGVwcykgOiBTY2hlZHVsZWROYXZpZ2F0aW9uKDAs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpLCBtX2hpc3RvcnlTdGVwcyhoaXN0b3J5U3RlcHMp
IHsgfQorICAgIGV4cGxpY2l0IFNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uKGludCBoaXN0b3J5
U3RlcHMsIGJvb2wgd2FzVXNlckdlc3R1cmUpIDogU2NoZWR1bGVkTmF2aWdhdGlvbigwLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB3YXNVc2VyR2VzdHVyZSksIG1faGlzdG9yeVN0ZXBzKGhp
c3RvcnlTdGVwcykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZmlyZShGcmFtZSogZnJhbWUpCiAg
ICAgeworICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHdhc1Vz
ZXJHZXN0dXJlKCkgPyBEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogRGVmaW5pdGVs
eU5vdFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CisKICAgICAgICAgRnJhbWVMb2FkZXIqIGxvYWRl
ciA9IGZyYW1lLT5sb2FkZXIoKTsKICAgICAgICAgaWYgKCFtX2hpc3RvcnlTdGVwcykgewogICAg
ICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBnbygwKSBmcm9tIGEgZnJhbWUgLT4gcmVsb2Fk
IG9ubHkgdGhlIGZyYW1lCi0gICAgICAgICAgICBsb2FkZXItPnVybFNlbGVjdGVkKGxvYWRlci0+
dXJsKCksICIiLCAwLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIGZhbHNl
LCBTZW5kUmVmZXJyZXIpOworICAgICAgICAgICAgbG9hZGVyLT51cmxTZWxlY3RlZChsb2FkZXIt
PnVybCgpLCAiIiwgMCwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCB3YXNV
c2VyR2VzdHVyZSgpLCBTZW5kUmVmZXJyZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIC8vIGdvKGkhPTApIGZyb20gYSBmcmFtZSBuYXZpZ2F0ZXMgaW50byB0aGUg
aGlzdG9yeSBvZiB0aGUgZnJhbWUgb25seSwKQEAgLTE3MywxNyArMTc1LDE2IEBAIHByaXZhdGU6
CiBjbGFzcyBTY2hlZHVsZWRGb3JtU3VibWlzc2lvbiA6IHB1YmxpYyBTY2hlZHVsZWROYXZpZ2F0
aW9uIHsKIHB1YmxpYzoKICAgICBTY2hlZHVsZWRGb3JtU3VibWlzc2lvbihQYXNzUmVmUHRyPEZv
cm1TdWJtaXNzaW9uPiBzdWJtaXNzaW9uLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wg
ZHVyaW5nTG9hZCwgYm9vbCB3YXNVc2VyR2VzdHVyZSkKLSAgICAgICAgOiBTY2hlZHVsZWROYXZp
Z2F0aW9uKDAsIHN1Ym1pc3Npb24tPmxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3Qs
IGR1cmluZ0xvYWQsIHRydWUpCisgICAgICAgIDogU2NoZWR1bGVkTmF2aWdhdGlvbigwLCBzdWJt
aXNzaW9uLT5sb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkLCB0
cnVlLCB3YXNVc2VyR2VzdHVyZSkKICAgICAgICAgLCBtX3N1Ym1pc3Npb24oc3VibWlzc2lvbikK
ICAgICAgICAgLCBtX2hhdmVUb2xkQ2xpZW50KGZhbHNlKQotICAgICAgICAsIG1fd2FzVXNlckdl
c3R1cmUod2FzVXNlckdlc3R1cmUpCiAgICAgewogICAgICAgICBBU1NFUlQobV9zdWJtaXNzaW9u
LT5zdGF0ZSgpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZmlyZShGcmFtZSogZnJhbWUp
CiAgICAgewotICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKG1f
d2FzVXNlckdlc3R1cmUgPyBEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogRGVmaW5p
dGVseU5vdFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CisgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNh
dG9yIGdlc3R1cmVJbmRpY2F0b3Iod2FzVXNlckdlc3R1cmUoKSA/IERlZmluaXRlbHlQcm9jZXNz
aW5nVXNlckdlc3R1cmUgOiBEZWZpbml0ZWx5Tm90UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKIAog
ICAgICAgICAvLyBUaGUgc3VibWl0Rm9ybSBmdW5jdGlvbiB3aWxsIGZpbmQgYSB0YXJnZXQgZnJh
bWUgYmVmb3JlIHVzaW5nIHRoZSByZWRpcmVjdGlvbiB0aW1lci4KICAgICAgICAgLy8gTm93IHRo
YXQgdGhlIHRpbWVyIGhhcyBmaXJlZCwgd2UgbmVlZCB0byByZXBlYXQgdGhlIHNlY3VyaXR5IGNo
ZWNrIHdoaWNoIG5vcm1hbGx5IGlzIGRvbmUgd2hlbgpAQCAtMjE0LDcgKzIxNSw2IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBtX3N1Ym1pc3Npb247CiAg
ICAgYm9vbCBtX2hhdmVUb2xkQ2xpZW50OwotICAgIGJvb2wgbV93YXNVc2VyR2VzdHVyZTsKIH07
CiAKIFJlZGlyZWN0U2NoZWR1bGVyOjpSZWRpcmVjdFNjaGVkdWxlcihGcmFtZSogZnJhbWUpCkBA
IC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5
TgogICAgIH0KICAgICAKICAgICAvLyBJbiBhbGwgb3RoZXIgY2FzZXMsIHNjaGVkdWxlIHRoZSBo
aXN0b3J5IHRyYXZlcnNhbCB0byBvY2N1ciBhc3luY2hyb25vdXNseS4KLSAgICBzY2hlZHVsZShh
ZG9wdFB0cihuZXcgU2NoZWR1bGVkSGlzdG9yeU5hdmlnYXRpb24oc3RlcHMpKSk7CisgICAgc2No
ZWR1bGUoYWRvcHRQdHIobmV3IFNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uKHN0ZXBzLCBtX2Zy
YW1lLT5sb2FkZXIoKS0+aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkpKTsKIH0KIAogdm9pZCBS
ZWRpcmVjdFNjaGVkdWxlcjo6dGltZXJGaXJlZChUaW1lcjxSZWRpcmVjdFNjaGVkdWxlcj4qKQpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gNjY5NzMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wOS0wOCAgSm9obm55IERpbmcgIDxqbmRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZpeCBhIGJ1ZyB0byBzdG9wIGhpc3RvcnkgcmVsb2FkIG5hdmlnYXRpb24gdG8gYnlw
YXNzIFdlYktpdCdzCisgICAgICAgIHBvcHVwIGJsb2NrZXIuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTM2OQorCisgICAgICAgICogZmFzdC9ldmVu
dHMvcG9wdXAtYmxvY2tlZC1mcm9tLWhpc3RvcnktcmVsb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLWhpc3RvcnktcmVsb2Fk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9oaXN0b3J5LXJl
bG9hZC1pZnJhbWUuaHRtbDogQWRkZWQuCisKIDIwMTAtMDktMDggIEp1c3RpbiBTY2h1aCAgPGpz
Y2h1aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJt
YW5uLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLWhp
c3RvcnktcmVsb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20taGlzdG9yeS1yZWxvYWQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9t
LWhpc3RvcnktcmVsb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBA
CisKK1doZW4gb3BlbmluZyBhIHBhZ2UgaW4gYSBuZXcgZnJhbWUgYnkgdXNpbmcgaGlzdG9yeS5n
bygwKSB3aXRob3V0IHVzZXIgZ2VzdHVyZSwgd2Via2l0IHNob3VsZCB0ZXN0IG91dCB0aGF0IHRo
ZSBvcGVuaW5nIGlzIG5vdCBpbml0aWF0ZWQgYnkgdXNlci4gVGhpcyBpcyBhIHRlc3QgY2FzZSBm
b3IgYnVnIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTM2OS4KK1BB
U1NFRApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLWhp
c3RvcnktcmVsb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
cG9wdXAtYmxvY2tlZC1mcm9tLWhpc3RvcnktcmVsb2FkLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20taGlzdG9yeS1yZWxvYWQu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dz
KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQodHJ1
ZSk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hl
bkNvbXBsZXRlKHRydWUpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICAvLyBSZWNvcmQgY3VycmVudCB3aW5kb3cgY291bnQuCisgICAgd2luZG93LndpbmRv
d0NvdW50ID0gd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndpbmRvd0NvdW50KCk7Cit9Citm
dW5jdGlvbiB0ZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndpbmRvd0NvdW50KCkgPT0gd2luZG93LndpbmRv
d0NvdW50KQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVy
VGV4dCA9ICJQQVNTRUQiOworICAgIC8vIENsb3NlIHRoZSB0ZXN0LgorICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJzZXRUaW1lb3V0KHRlc3QsIDApIj4KKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvaGlzdG9y
eS1yZWxvYWQtaWZyYW1lLmh0bWwiPjwvaWZyYW1lPjxicj4KK1doZW4gb3BlbmluZyBhIHBhZ2Ug
aW4gYSBuZXcgZnJhbWUgYnkgdXNpbmcgaGlzdG9yeS5nbygwKSB3aXRob3V0IHVzZXIgZ2VzdHVy
ZSwgd2Via2l0IHNob3VsZCB0ZXN0IG91dCB0aGF0IHRoZSBvcGVuaW5nIGlzIG5vdCBpbml0aWF0
ZWQgYnkgdXNlci4gVGhpcyBpcyBhIHRlc3QgY2FzZSBmb3IgYnVnIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTM2OS4KKzxkaXYgaWQ9ImNvbnNvbGUiPkZBSUxFRDwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9y
ZXNvdXJjZXMvaGlzdG9yeS1yZWxvYWQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL2hpc3RvcnktcmVsb2FkLWlmcmFtZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL2hpc3Rvcnkt
cmVsb2FkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PGJhc2UgdGFyZ2V0PSJzb21lIj4KKzxzY3JpcHQ+CitoaXN0b3J5LmdvKCk7Cis8L3NjcmlwdD4K
Kzxib2R5PgoraGlzdG9yeSByZWxvYWQuCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66889</attachid>
            <date>2010-09-08 06:15:10 -0700</date>
            <delta_ts>2010-09-13 04:20:13 -0700</delta_ts>
            <desc>fix patch v1</desc>
            <filename>patch002.txt</filename>
            <type>text/plain</type>
            <size>11472</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Njk3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDktMDggIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXgg
YSBidWcgdG8gc3RvcCBoaXN0b3J5IHJlbG9hZCBuYXZpZ2F0aW9uIHRvIGJ5cGFzcyBXZWJLaXQn
cworICAgICAgICBwb3B1cCBibG9ja2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDUzNjkKKworICAgICAgICBUZXN0OiBmYXN0L2V2ZW50cy9wb3B1
cC1ibG9ja2VkLWZyb20taGlzdG9yeS1yZWxvYWQuaHRtbAorCisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3Rl
ZCk6CisgICAgICAgIENoZWNrIHRoZSB0YXJnZXQgZnJhbWUgdG8gc2VlIHdoZXRoZXIgaXQgaXMg
YSBuZXcgZnJhbWUgd2luZG93CisgICAgICAgIGFuZCB3aGV0aGVyIGl0IGlzIGFsbG93ZWQgdG8g
Y3JlYXRlIGluIGhpc3RvcnkgcmVsb2FkIG5hdmlnYXRpb24uCisgICAgICAgICogbG9hZGVyL1Jl
ZGlyZWN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZE5hdmlnYXRp
b246OlNjaGVkdWxlZE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkTmF2
aWdhdGlvbjo6d2FzVXNlckdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkVVJM
TmF2aWdhdGlvbjo6U2NoZWR1bGVkVVJMTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y2hlZHVsZWRVUkxOYXZpZ2F0aW9uOjpmaXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxl
ZFVSTE5hdmlnYXRpb246OnJlZmVycmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEhp
c3RvcnlOYXZpZ2F0aW9uOjpTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbjo6ZmlyZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWRGb3JtU3VibWlzc2lvbjo6U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb246OmZpcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24p
OgorICAgICAgICBNb3ZlIHRoZSBtX3dhc1VzZXJHZXN0dXJlIHRvIGJhc2UgY2xhc3MgU2NoZWR1
bGVkTmF2aWdhdGlvbiBhbmQKKyAgICAgICAgcmVzdG9yZSB0aGUgY29ycmVjdCBnZXN0dXJlIHN0
YXRlIGR1cmluZyB0aGUgYXN5bmNocm9ub3VzIGhpc3RvcnkKKyAgICAgICAgcmVsb2FkIG5hdmln
YXRpb24uCisKIDIwMTAtMDktMDggIEp1c3RpbiBTY2h1aCAgPGpzY2h1aEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpJbmRleDogV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNjY5NTApCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsMTAgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgUmVzbwogICAgIFN0cmluZyB0YXJnZXQgPSBwYXNzZWRU
YXJnZXQ7CiAgICAgaWYgKHRhcmdldC5pc0VtcHR5KCkpCiAgICAgICAgIHRhcmdldCA9IG1fZnJh
bWUtPmRvY3VtZW50KCktPmJhc2VUYXJnZXQoKTsKKyAgICAvLyBDaGVjayB3aGV0aGVyIGEgbmV3
IHdpbmRvdyBpcyBhbGxvd2VkIHRvIGNyZWF0ZSBmb3IgbmF2aWdhdGlvbi4KKyAgICBGcmFtZSog
dGFyZ2V0RnJhbWUgPSBtX2ZyYW1lLT50cmVlKCktPmZpbmQodGFyZ2V0KTsKKyAgICBpZiAoIXRh
cmdldEZyYW1lICYmICFET01XaW5kb3c6OmFsbG93UG9wVXAobV9mcmFtZSkgJiYgIWlzUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKCkpCisgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lTG9hZFJlcXVl
c3QgZnJhbWVSZXF1ZXN0KHJlcXVlc3QsIHRhcmdldCk7CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVy
L1JlZGlyZWN0U2NoZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9SZWRp
cmVjdFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDY2OTUwKQorKysgV2ViQ29yZS9sb2FkZXIvUmVk
aXJlY3RTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw5ICs0MSw5IEBACiAjaW5j
bHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaCIKLSNpbmNsdWRlICJIaXN0b3J5SXRlbS5o
IgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVy
RWxlbWVudC5oIgorI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CkBAIC01MiwxMiArNTIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
Y2hlZHVsZWROYXZpZ2F0aW9uIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAgICBT
Y2hlZHVsZWROYXZpZ2F0aW9uKGRvdWJsZSBkZWxheSwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBs
b2NrQmFja0ZvcndhcmRMaXN0LCBib29sIHdhc0R1cmluZ0xvYWQsIGJvb2wgaXNMb2NhdGlvbkNo
YW5nZSkKKyAgICBTY2hlZHVsZWROYXZpZ2F0aW9uKGRvdWJsZSBkZWxheSwgYm9vbCBsb2NrSGlz
dG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBib29sIHdhc0R1cmluZ0xvYWQsIGJvb2wg
aXNMb2NhdGlvbkNoYW5nZSwgYm9vbCB3YXNVc2VyR2VzdHVyZSkKICAgICAgICAgOiBtX2RlbGF5
KGRlbGF5KQogICAgICAgICAsIG1fbG9ja0hpc3RvcnkobG9ja0hpc3RvcnkpCiAgICAgICAgICwg
bV9sb2NrQmFja0ZvcndhcmRMaXN0KGxvY2tCYWNrRm9yd2FyZExpc3QpCiAgICAgICAgICwgbV93
YXNEdXJpbmdMb2FkKHdhc0R1cmluZ0xvYWQpCiAgICAgICAgICwgbV9pc0xvY2F0aW9uQ2hhbmdl
KGlzTG9jYXRpb25DaGFuZ2UpCisgICAgICAgICwgbV93YXNVc2VyR2VzdHVyZSh3YXNVc2VyR2Vz
dHVyZSkKICAgICB7CiAgICAgfQogICAgIHZpcnR1YWwgflNjaGVkdWxlZE5hdmlnYXRpb24oKSB7
IH0KQEAgLTczLDYgKzc0LDcgQEAgcHVibGljOgogICAgIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlz
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9ja0JhY2tGb3J3YXJkTGlzdDsgfQogICAgIGJvb2wgd2Fz
RHVyaW5nTG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzRHVyaW5nTG9hZDsgfQogICAgIGJvb2wg
aXNMb2NhdGlvbkNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNMb2NhdGlvbkNoYW5nZTsgfQor
ICAgIGJvb2wgd2FzVXNlckdlc3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dhc1VzZXJHZXN0dXJl
OyB9CiAKIHByaXZhdGU6CiAgICAgZG91YmxlIG1fZGVsYXk7CkBAIC04MCwyMiArODIsMjIgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fbG9ja0JhY2tGb3J3YXJkTGlzdDsKICAgICBib29sIG1fd2Fz
RHVyaW5nTG9hZDsKICAgICBib29sIG1faXNMb2NhdGlvbkNoYW5nZTsKKyAgICBib29sIG1fd2Fz
VXNlckdlc3R1cmU7CiB9OwogCiBjbGFzcyBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uIDogcHVibGlj
IFNjaGVkdWxlZE5hdmlnYXRpb24gewogcHVibGljOgogICAgIFNjaGVkdWxlZFVSTE5hdmlnYXRp
b24oZG91YmxlIGRlbGF5LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBib29sIHdhc1Vz
ZXJHZXN0dXJlLCBib29sIGR1cmluZ0xvYWQsIGJvb2wgaXNMb2NhdGlvbkNoYW5nZSkKLSAgICAg
ICAgOiBTY2hlZHVsZWROYXZpZ2F0aW9uKGRlbGF5LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3
YXJkTGlzdCwgZHVyaW5nTG9hZCwgaXNMb2NhdGlvbkNoYW5nZSkKKyAgICAgICAgOiBTY2hlZHVs
ZWROYXZpZ2F0aW9uKGRlbGF5LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVy
aW5nTG9hZCwgaXNMb2NhdGlvbkNoYW5nZSwgd2FzVXNlckdlc3R1cmUpCiAgICAgICAgICwgbV91
cmwodXJsKQogICAgICAgICAsIG1fcmVmZXJyZXIocmVmZXJyZXIpCi0gICAgICAgICwgbV93YXNV
c2VyR2VzdHVyZSh3YXNVc2VyR2VzdHVyZSkKICAgICAgICAgLCBtX2hhdmVUb2xkQ2xpZW50KGZh
bHNlKQogICAgIHsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZmlyZShGcmFtZSogZnJhbWUp
CiAgICAgewotICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNoYW5nZUxvY2F0aW9uKEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCBtX3VybCksIG1fcmVmZXJyZXIsIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNr
Rm9yd2FyZExpc3QoKSwgbV93YXNVc2VyR2VzdHVyZSwgZmFsc2UpOworICAgICAgICBmcmFtZS0+
bG9hZGVyKCktPmNoYW5nZUxvY2F0aW9uKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybCksIG1f
cmVmZXJyZXIsIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgd2FzVXNlckdl
c3R1cmUoKSwgZmFsc2UpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFRpbWVy
KEZyYW1lKiBmcmFtZSwgVGltZXI8UmVkaXJlY3RTY2hlZHVsZXI+KiB0aW1lcikKQEAgLTExNSwx
MiArMTE3LDEwIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiBt
X3VybDsgfQogICAgIFN0cmluZyByZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJyZXI7
IH0KLSAgICBib29sIHdhc1VzZXJHZXN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93YXNVc2VyR2Vz
dHVyZTsgfQogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3VybDsKICAgICBTdHJpbmcgbV9yZWZl
cnJlcjsKLSAgICBib29sIG1fd2FzVXNlckdlc3R1cmU7CiAgICAgYm9vbCBtX2hhdmVUb2xkQ2xp
ZW50OwogfTsKIApAQCAtMTUxLDE0ICsxNTEsMTYgQEAgcHVibGljOgogCiBjbGFzcyBTY2hlZHVs
ZWRIaXN0b3J5TmF2aWdhdGlvbiA6IHB1YmxpYyBTY2hlZHVsZWROYXZpZ2F0aW9uIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbihpbnQgaGlzdG9yeVN0
ZXBzKSA6IFNjaGVkdWxlZE5hdmlnYXRpb24oMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSks
IG1faGlzdG9yeVN0ZXBzKGhpc3RvcnlTdGVwcykgeyB9CisgICAgZXhwbGljaXQgU2NoZWR1bGVk
SGlzdG9yeU5hdmlnYXRpb24oaW50IGhpc3RvcnlTdGVwcywgYm9vbCB3YXNVc2VyR2VzdHVyZSkg
OiBTY2hlZHVsZWROYXZpZ2F0aW9uKDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIHdhc1Vz
ZXJHZXN0dXJlKSwgbV9oaXN0b3J5U3RlcHMoaGlzdG9yeVN0ZXBzKSB7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBmaXJlKEZyYW1lKiBmcmFtZSkKICAgICB7CisgICAgICAgIFVzZXJHZXN0dXJlSW5k
aWNhdG9yIGdlc3R1cmVJbmRpY2F0b3Iod2FzVXNlckdlc3R1cmUoKSA/IERlZmluaXRlbHlQcm9j
ZXNzaW5nVXNlckdlc3R1cmUgOiBEZWZpbml0ZWx5Tm90UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsK
KwogICAgICAgICBGcmFtZUxvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwogICAgICAg
ICBpZiAoIW1faGlzdG9yeVN0ZXBzKSB7CiAgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9y
IGdvKDApIGZyb20gYSBmcmFtZSAtPiByZWxvYWQgb25seSB0aGUgZnJhbWUKLSAgICAgICAgICAg
IGxvYWRlci0+dXJsU2VsZWN0ZWQobG9hZGVyLT51cmwoKSwgIiIsIDAsIGxvY2tIaXN0b3J5KCks
IGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgZmFsc2UsIFNlbmRSZWZlcnJlcik7CisgICAgICAgICAg
ICBsb2FkZXItPnVybFNlbGVjdGVkKGxvYWRlci0+dXJsKCksICIiLCAwLCBsb2NrSGlzdG9yeSgp
LCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIHdhc1VzZXJHZXN0dXJlKCksIFNlbmRSZWZlcnJlcik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gZ28oaSE9MCkgZnJv
bSBhIGZyYW1lIG5hdmlnYXRlcyBpbnRvIHRoZSBoaXN0b3J5IG9mIHRoZSBmcmFtZSBvbmx5LApA
QCAtMTczLDE3ICsxNzUsMTYgQEAgcHJpdmF0ZToKIGNsYXNzIFNjaGVkdWxlZEZvcm1TdWJtaXNz
aW9uIDogcHVibGljIFNjaGVkdWxlZE5hdmlnYXRpb24gewogcHVibGljOgogICAgIFNjaGVkdWxl
ZEZvcm1TdWJtaXNzaW9uKFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IHN1Ym1pc3Npb24sIGJv
b2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCBkdXJpbmdMb2FkLCBib29sIHdhc1VzZXJHZXN0
dXJlKQotICAgICAgICA6IFNjaGVkdWxlZE5hdmlnYXRpb24oMCwgc3VibWlzc2lvbi0+bG9ja0hp
c3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCwgdHJ1ZSkKKyAgICAgICAg
OiBTY2hlZHVsZWROYXZpZ2F0aW9uKDAsIHN1Ym1pc3Npb24tPmxvY2tIaXN0b3J5KCksIGxvY2tC
YWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQsIHRydWUsIHdhc1VzZXJHZXN0dXJlKQogICAgICAg
ICAsIG1fc3VibWlzc2lvbihzdWJtaXNzaW9uKQogICAgICAgICAsIG1faGF2ZVRvbGRDbGllbnQo
ZmFsc2UpCi0gICAgICAgICwgbV93YXNVc2VyR2VzdHVyZSh3YXNVc2VyR2VzdHVyZSkKICAgICB7
CiAgICAgICAgIEFTU0VSVChtX3N1Ym1pc3Npb24tPnN0YXRlKCkpOwogICAgIH0KIAogICAgIHZp
cnR1YWwgdm9pZCBmaXJlKEZyYW1lKiBmcmFtZSkKICAgICB7Ci0gICAgICAgIFVzZXJHZXN0dXJl
SW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IobV93YXNVc2VyR2VzdHVyZSA/IERlZmluaXRlbHlQ
cm9jZXNzaW5nVXNlckdlc3R1cmUgOiBEZWZpbml0ZWx5Tm90UHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KTsKKyAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcih3YXNVc2Vy
R2VzdHVyZSgpID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IERlZmluaXRlbHlO
b3RQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogCiAgICAgICAgIC8vIFRoZSBzdWJtaXRGb3JtIGZ1
bmN0aW9uIHdpbGwgZmluZCBhIHRhcmdldCBmcmFtZSBiZWZvcmUgdXNpbmcgdGhlIHJlZGlyZWN0
aW9uIHRpbWVyLgogICAgICAgICAvLyBOb3cgdGhhdCB0aGUgdGltZXIgaGFzIGZpcmVkLCB3ZSBu
ZWVkIHRvIHJlcGVhdCB0aGUgc2VjdXJpdHkgY2hlY2sgd2hpY2ggbm9ybWFsbHkgaXMgZG9uZSB3
aGVuCkBAIC0yMTQsNyArMjE1LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSZWZQdHI8Rm9y
bVN1Ym1pc3Npb24+IG1fc3VibWlzc2lvbjsKICAgICBib29sIG1faGF2ZVRvbGRDbGllbnQ7Ci0g
ICAgYm9vbCBtX3dhc1VzZXJHZXN0dXJlOwogfTsKIAogUmVkaXJlY3RTY2hlZHVsZXI6OlJlZGly
ZWN0U2NoZWR1bGVyKEZyYW1lKiBmcmFtZSkKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIFJlZGly
ZWN0U2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlOCiAgICAgfQogICAgIAogICAgIC8vIEluIGFs
bCBvdGhlciBjYXNlcywgc2NoZWR1bGUgdGhlIGhpc3RvcnkgdHJhdmVyc2FsIHRvIG9jY3VyIGFz
eW5jaHJvbm91c2x5LgotICAgIHNjaGVkdWxlKGFkb3B0UHRyKG5ldyBTY2hlZHVsZWRIaXN0b3J5
TmF2aWdhdGlvbihzdGVwcykpKTsKKyAgICBzY2hlZHVsZShhZG9wdFB0cihuZXcgU2NoZWR1bGVk
SGlzdG9yeU5hdmlnYXRpb24oc3RlcHMsIG1fZnJhbWUtPmxvYWRlcigpLT5pc1Byb2Nlc3NpbmdV
c2VyR2VzdHVyZSgpKSkpOwogfQogCiB2b2lkIFJlZGlyZWN0U2NoZWR1bGVyOjp0aW1lckZpcmVk
KFRpbWVyPFJlZGlyZWN0U2NoZWR1bGVyPiopCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2Njk3MykKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDEwLTA5LTA4ICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGEgYnVnIHRvIHN0b3AgaGlz
dG9yeSByZWxvYWQgbmF2aWdhdGlvbiB0byBieXBhc3MgV2ViS2l0J3MKKyAgICAgICAgcG9wdXAg
YmxvY2tlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ1MzY5CisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20taGlzdG9y
eS1yZWxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9wb3B1
cC1ibG9ja2VkLWZyb20taGlzdG9yeS1yZWxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9ldmVudHMvcmVzb3VyY2VzL2hpc3RvcnktcmVsb2FkLWlmcmFtZS5odG1sOiBBZGRlZC4KKwog
MjAxMC0wOS0wOCAgSnVzdGluIFNjaHVoICA8anNjaHVoQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20taGlzdG9yeS1yZWxvYWQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1o
aXN0b3J5LXJlbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20taGlzdG9yeS1yZWxvYWQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKKworV2hlbiBvcGVuaW5nIGEgcGFnZSBpbiBh
IG5ldyBmcmFtZSBieSB1c2luZyBoaXN0b3J5LmdvKDApIHdpdGhvdXQgdXNlciBnZXN0dXJlLCB3
ZWJraXQgc2hvdWxkIHRlc3Qgb3V0IHRoYXQgdGhlIG9wZW5pbmcgaXMgbm90IGluaXRpYXRlZCBi
eSB1c2VyLiBUaGlzIGlzIGEgdGVzdCBjYXNlIGZvciBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ1MzY5LgorUEFTU0VECkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20taGlzdG9yeS1yZWxvYWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20taGlzdG9yeS1y
ZWxvYWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVw
LWJsb2NrZWQtZnJvbS1oaXN0b3J5LXJlbG9hZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI4IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIC8vIFJlY29yZCBjdXJyZW50IHdp
bmRvdyBjb3VudC4KKyAgICB3aW5kb3cud2luZG93Q291bnQgPSB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIud2luZG93Q291bnQoKTsKK30KK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
d2luZG93Q291bnQoKSA9PSB3aW5kb3cud2luZG93Q291bnQpCisgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJUZXh0ID0gIlBBU1NFRCI7CisgICAgLy8gQ2xv
c2UgdGhlIHRlc3QuCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQodGVzdCwgMCkiPgor
PGlmcmFtZSBzcmM9InJlc291cmNlcy9oaXN0b3J5LXJlbG9hZC1pZnJhbWUuaHRtbCI+PC9pZnJh
bWU+PGJyPgorV2hlbiBvcGVuaW5nIGEgcGFnZSBpbiBhIG5ldyBmcmFtZSBieSB1c2luZyBoaXN0
b3J5LmdvKDApIHdpdGhvdXQgdXNlciBnZXN0dXJlLCB3ZWJraXQgc2hvdWxkIHRlc3Qgb3V0IHRo
YXQgdGhlIG9wZW5pbmcgaXMgbm90IGluaXRpYXRlZCBieSB1c2VyLiBUaGlzIGlzIGEgdGVzdCBj
YXNlIGZvciBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MzY5
LgorPGRpdiBpZD0iY29uc29sZSI+RkFJTEVEPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9oaXN0b3J5LXJlbG9hZC1pZnJh
bWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMv
aGlzdG9yeS1yZWxvYWQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9yZXNvdXJjZXMvaGlzdG9yeS1yZWxvYWQtaWZyYW1lLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8YmFzZSB0YXJnZXQ9InNvbWUiPgorPHNjcmlw
dD4KK2hpc3RvcnkuZ28oKTsKKzwvc2NyaXB0PgorPGJvZHk+CitoaXN0b3J5IHJlbG9hZC4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67396</attachid>
            <date>2010-09-13 04:19:42 -0700</date>
            <delta_ts>2010-09-16 12:35:51 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>patch002.txt</filename>
            <type>text/plain</type>
            <size>11369</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzM3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMDktMDggIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXgg
YSBidWcgdG8gc3RvcCBoaXN0b3J5IHJlbG9hZCBuYXZpZ2F0aW9uIHRvIGJ5cGFzcyBXZWJLaXQn
cworICAgICAgICBwb3B1cCBibG9ja2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDUzNjkKKworICAgICAgICBUZXN0OiBmYXN0L2V2ZW50cy9wb3B1
cC1ibG9ja2VkLWZyb20taGlzdG9yeS1yZWxvYWQuaHRtbAorCisgICAgICAgICogbG9hZGVyL1Jl
ZGlyZWN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZE5hdmlnYXRp
b246OlNjaGVkdWxlZE5hdmlnYXRpb24pOgorICAgICAgICBNb3ZlIHRoZSBtX3dhc1VzZXJHZXN0
dXJlIHRvIGJhc2UgY2xhc3MgU2NoZWR1bGVkTmF2aWdhdGlvbiBhbmQKKyAgICAgICAgcmVzdG9y
ZSB0aGUgY29ycmVjdCBnZXN0dXJlIHN0YXRlIGR1cmluZyB0aGUgYXN5bmNocm9ub3VzIGhpc3Rv
cnkKKyAgICAgICAgcmVsb2FkIG5hdmlnYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVs
ZWROYXZpZ2F0aW9uOjp3YXNVc2VyR2VzdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVs
ZWRVUkxOYXZpZ2F0aW9uOjpTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjaGVkdWxlZFVSTE5hdmlnYXRpb246OmZpcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2No
ZWR1bGVkVVJMTmF2aWdhdGlvbjo6cmVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1
bGVkSGlzdG9yeU5hdmlnYXRpb246OlNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uOjpmaXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uOjpTY2hlZHVsZWRGb3JtU3VibWlzc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRGb3JtU3VibWlzc2lvbjo6ZmlyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5TmF2aWdh
dGlvbik6CisgICAgICAgIENoZWNrIHRoZSB0YXJnZXQgZnJhbWUgdG8gc2VlIHdoZXRoZXIgYSBu
ZXcgZnJhbWUgd2luZG93IGlzCisgICAgICAgIGFsbG93ZWQgdG8gY3JlYXRlIGluIGhpc3Rvcnkg
cmVsb2FkIG5hdmlnYXRpb24uCisKIDIwMTAtMDgtMjcgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtv
aXZpc3RvLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcAkocmV2aXNpb24g
NjcxNTgpCisrKyBXZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJSZWRpcmVjdFNjaGVkdWxlci5oIgog
CiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0LmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUg
IkZvcm1TdGF0ZS5oIgpAQCAtNDEsOSArNDIsOSBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVl
c3QuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyU3Rh
dGVNYWNoaW5lLmgiCi0jaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJIVE1MRm9y
bUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVy
ZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtNTIsMTIgKzUz
LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NoZWR1bGVkTmF2aWdhdGlvbiA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgU2NoZWR1bGVkTmF2aWdhdGlvbihk
b3VibGUgZGVsYXksIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwg
Ym9vbCB3YXNEdXJpbmdMb2FkLCBib29sIGlzTG9jYXRpb25DaGFuZ2UpCisgICAgU2NoZWR1bGVk
TmF2aWdhdGlvbihkb3VibGUgZGVsYXksIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tG
b3J3YXJkTGlzdCwgYm9vbCB3YXNEdXJpbmdMb2FkLCBib29sIGlzTG9jYXRpb25DaGFuZ2UsIGJv
b2wgd2FzVXNlckdlc3R1cmUpCiAgICAgICAgIDogbV9kZWxheShkZWxheSkKICAgICAgICAgLCBt
X2xvY2tIaXN0b3J5KGxvY2tIaXN0b3J5KQogICAgICAgICAsIG1fbG9ja0JhY2tGb3J3YXJkTGlz
dChsb2NrQmFja0ZvcndhcmRMaXN0KQogICAgICAgICAsIG1fd2FzRHVyaW5nTG9hZCh3YXNEdXJp
bmdMb2FkKQogICAgICAgICAsIG1faXNMb2NhdGlvbkNoYW5nZShpc0xvY2F0aW9uQ2hhbmdlKQor
ICAgICAgICAsIG1fd2FzVXNlckdlc3R1cmUod2FzVXNlckdlc3R1cmUpCiAgICAgewogICAgIH0K
ICAgICB2aXJ0dWFsIH5TY2hlZHVsZWROYXZpZ2F0aW9uKCkgeyB9CkBAIC03Myw2ICs3NSw3IEBA
IHB1YmxpYzoKICAgICBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QoKSBjb25zdCB7IHJldHVybiBt
X2xvY2tCYWNrRm9yd2FyZExpc3Q7IH0KICAgICBib29sIHdhc0R1cmluZ0xvYWQoKSBjb25zdCB7
IHJldHVybiBtX3dhc0R1cmluZ0xvYWQ7IH0KICAgICBib29sIGlzTG9jYXRpb25DaGFuZ2UoKSBj
b25zdCB7IHJldHVybiBtX2lzTG9jYXRpb25DaGFuZ2U7IH0KKyAgICBib29sIHdhc1VzZXJHZXN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV93YXNVc2VyR2VzdHVyZTsgfQogCiBwcml2YXRlOgogICAg
IGRvdWJsZSBtX2RlbGF5OwpAQCAtODAsMjIgKzgzLDIyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2xvY2tCYWNrRm9yd2FyZExpc3Q7CiAgICAgYm9vbCBtX3dhc0R1cmluZ0xvYWQ7CiAgICAgYm9v
bCBtX2lzTG9jYXRpb25DaGFuZ2U7CisgICAgYm9vbCBtX3dhc1VzZXJHZXN0dXJlOwogfTsKIAog
Y2xhc3MgU2NoZWR1bGVkVVJMTmF2aWdhdGlvbiA6IHB1YmxpYyBTY2hlZHVsZWROYXZpZ2F0aW9u
IHsKIHB1YmxpYzoKICAgICBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uKGRvdWJsZSBkZWxheSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3Rvcnks
IGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSwgYm9vbCBkdXJp
bmdMb2FkLCBib29sIGlzTG9jYXRpb25DaGFuZ2UpCi0gICAgICAgIDogU2NoZWR1bGVkTmF2aWdh
dGlvbihkZWxheSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQs
IGlzTG9jYXRpb25DaGFuZ2UpCisgICAgICAgIDogU2NoZWR1bGVkTmF2aWdhdGlvbihkZWxheSwg
bG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQsIGlzTG9jYXRpb25D
aGFuZ2UsIHdhc1VzZXJHZXN0dXJlKQogICAgICAgICAsIG1fdXJsKHVybCkKICAgICAgICAgLCBt
X3JlZmVycmVyKHJlZmVycmVyKQotICAgICAgICAsIG1fd2FzVXNlckdlc3R1cmUod2FzVXNlckdl
c3R1cmUpCiAgICAgICAgICwgbV9oYXZlVG9sZENsaWVudChmYWxzZSkKICAgICB7CiAgICAgfQog
CiAgICAgdmlydHVhbCB2b2lkIGZpcmUoRnJhbWUqIGZyYW1lKQogICAgIHsKLSAgICAgICAgZnJh
bWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihLVVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmwp
LCBtX3JlZmVycmVyLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIG1fd2Fz
VXNlckdlc3R1cmUsIGZhbHNlKTsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2Nh
dGlvbihLVVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmwpLCBtX3JlZmVycmVyLCBsb2NrSGlzdG9y
eSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIHdhc1VzZXJHZXN0dXJlKCksIGZhbHNlKTsKICAg
ICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRUaW1lcihGcmFtZSogZnJhbWUsIFRpbWVy
PFJlZGlyZWN0U2NoZWR1bGVyPiogdGltZXIpCkBAIC0xMTUsMTIgKzExOCwxMCBAQCBwdWJsaWM6
CiAKICAgICBTdHJpbmcgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBTdHJpbmcg
cmVmZXJyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlZmVycmVyOyB9Ci0gICAgYm9vbCB3YXNVc2Vy
R2VzdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzVXNlckdlc3R1cmU7IH0KIAogcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV91cmw7CiAgICAgU3RyaW5nIG1fcmVmZXJyZXI7Ci0gICAgYm9vbCBtX3dh
c1VzZXJHZXN0dXJlOwogICAgIGJvb2wgbV9oYXZlVG9sZENsaWVudDsKIH07CiAKQEAgLTE1MSwx
NCArMTUyLDE2IEBAIHB1YmxpYzoKIAogY2xhc3MgU2NoZWR1bGVkSGlzdG9yeU5hdmlnYXRpb24g
OiBwdWJsaWMgU2NoZWR1bGVkTmF2aWdhdGlvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU2No
ZWR1bGVkSGlzdG9yeU5hdmlnYXRpb24oaW50IGhpc3RvcnlTdGVwcykgOiBTY2hlZHVsZWROYXZp
Z2F0aW9uKDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpLCBtX2hpc3RvcnlTdGVwcyhoaXN0
b3J5U3RlcHMpIHsgfQorICAgIGV4cGxpY2l0IFNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uKGlu
dCBoaXN0b3J5U3RlcHMsIGJvb2wgd2FzVXNlckdlc3R1cmUpIDogU2NoZWR1bGVkTmF2aWdhdGlv
bigwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB3YXNVc2VyR2VzdHVyZSksIG1faGlzdG9y
eVN0ZXBzKGhpc3RvcnlTdGVwcykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZmlyZShGcmFtZSog
ZnJhbWUpCiAgICAgeworICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNh
dG9yKHdhc1VzZXJHZXN0dXJlKCkgPyBEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDog
RGVmaW5pdGVseU5vdFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CisKICAgICAgICAgRnJhbWVMb2Fk
ZXIqIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKTsKICAgICAgICAgaWYgKCFtX2hpc3RvcnlTdGVw
cykgewogICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBnbygwKSBmcm9tIGEgZnJhbWUg
LT4gcmVsb2FkIG9ubHkgdGhlIGZyYW1lCi0gICAgICAgICAgICBsb2FkZXItPnVybFNlbGVjdGVk
KGxvYWRlci0+dXJsKCksICIiLCAwLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0
KCksIGZhbHNlLCBTZW5kUmVmZXJyZXIpOworICAgICAgICAgICAgbG9hZGVyLT51cmxTZWxlY3Rl
ZChsb2FkZXItPnVybCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVRhcmdldCgpLCAwLCBsb2Nr
SGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIHdhc1VzZXJHZXN0dXJlKCksIFNlbmRS
ZWZlcnJlcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gZ28o
aSE9MCkgZnJvbSBhIGZyYW1lIG5hdmlnYXRlcyBpbnRvIHRoZSBoaXN0b3J5IG9mIHRoZSBmcmFt
ZSBvbmx5LApAQCAtMTczLDE3ICsxNzYsMTYgQEAgcHJpdmF0ZToKIGNsYXNzIFNjaGVkdWxlZEZv
cm1TdWJtaXNzaW9uIDogcHVibGljIFNjaGVkdWxlZE5hdmlnYXRpb24gewogcHVibGljOgogICAg
IFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uKFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IHN1Ym1p
c3Npb24sIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCBkdXJpbmdMb2FkLCBib29sIHdh
c1VzZXJHZXN0dXJlKQotICAgICAgICA6IFNjaGVkdWxlZE5hdmlnYXRpb24oMCwgc3VibWlzc2lv
bi0+bG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCwgdHJ1ZSkK
KyAgICAgICAgOiBTY2hlZHVsZWROYXZpZ2F0aW9uKDAsIHN1Ym1pc3Npb24tPmxvY2tIaXN0b3J5
KCksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQsIHRydWUsIHdhc1VzZXJHZXN0dXJl
KQogICAgICAgICAsIG1fc3VibWlzc2lvbihzdWJtaXNzaW9uKQogICAgICAgICAsIG1faGF2ZVRv
bGRDbGllbnQoZmFsc2UpCi0gICAgICAgICwgbV93YXNVc2VyR2VzdHVyZSh3YXNVc2VyR2VzdHVy
ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3N1Ym1pc3Npb24tPnN0YXRlKCkpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgdm9pZCBmaXJlKEZyYW1lKiBmcmFtZSkKICAgICB7Ci0gICAgICAgIFVz
ZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IobV93YXNVc2VyR2VzdHVyZSA/IERl
ZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBEZWZpbml0ZWx5Tm90UHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKTsKKyAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRv
cih3YXNVc2VyR2VzdHVyZSgpID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IERl
ZmluaXRlbHlOb3RQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogCiAgICAgICAgIC8vIFRoZSBzdWJt
aXRGb3JtIGZ1bmN0aW9uIHdpbGwgZmluZCBhIHRhcmdldCBmcmFtZSBiZWZvcmUgdXNpbmcgdGhl
IHJlZGlyZWN0aW9uIHRpbWVyLgogICAgICAgICAvLyBOb3cgdGhhdCB0aGUgdGltZXIgaGFzIGZp
cmVkLCB3ZSBuZWVkIHRvIHJlcGVhdCB0aGUgc2VjdXJpdHkgY2hlY2sgd2hpY2ggbm9ybWFsbHkg
aXMgZG9uZSB3aGVuCkBAIC0yMTQsNyArMjE2LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBS
ZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IG1fc3VibWlzc2lvbjsKICAgICBib29sIG1faGF2ZVRvbGRD
bGllbnQ7Ci0gICAgYm9vbCBtX3dhc1VzZXJHZXN0dXJlOwogfTsKIAogUmVkaXJlY3RTY2hlZHVs
ZXI6OlJlZGlyZWN0U2NoZWR1bGVyKEZyYW1lKiBmcmFtZSkKQEAgLTM0NCw5ICszNDUsMTcgQEAg
dm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5TgogICAgICAgICBjYW5jZWwo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKworICAgIC8vIENoZWNrIHdoZXRoZXIg
YSBuZXcgd2luZG93IGlzIGFsbG93ZWQgdG8gY3JlYXRlIGZvciBhIGhpc3RvcnkgcmVsb2FkIG5h
dmlnYXRpb24uCisgICAgYm9vbCBpc1VzZXJHZXN0dXJlID0gbV9mcmFtZS0+bG9hZGVyKCktPmlz
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CisgICAgaWYgKCFzdGVwcykgeworICAgICAgICAvLyBI
aXN0b3J5IHJlbG9hZCB1c2VzIHRoZSBiYXNlIHRhcmdldCBhcyB0YXJnZXQgZnJhbWUuCisgICAg
ICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS0+ZmluZChtX2ZyYW1lLT5k
b2N1bWVudCgpLT5iYXNlVGFyZ2V0KCkpOworICAgICAgICBpZiAoIXRhcmdldEZyYW1lICYmICFE
T01XaW5kb3c6OmFsbG93UG9wVXAobV9mcmFtZSkgJiYgIWlzVXNlckdlc3R1cmUpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgfQogICAgIC8vIEluIGFsbCBvdGhlciBjYXNlcywgc2NoZWR1bGUg
dGhlIGhpc3RvcnkgdHJhdmVyc2FsIHRvIG9jY3VyIGFzeW5jaHJvbm91c2x5LgotICAgIHNjaGVk
dWxlKGFkb3B0UHRyKG5ldyBTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbihzdGVwcykpKTsKKyAg
ICBzY2hlZHVsZShhZG9wdFB0cihuZXcgU2NoZWR1bGVkSGlzdG9yeU5hdmlnYXRpb24oc3RlcHMs
IGlzVXNlckdlc3R1cmUpKSk7CiB9CiAKIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnRpbWVyRmly
ZWQoVGltZXI8UmVkaXJlY3RTY2hlZHVsZXI+KikKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY3Mzc2KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDktMDggIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggYSBidWcgdG8gc3RvcCBo
aXN0b3J5IHJlbG9hZCBuYXZpZ2F0aW9uIHRvIGJ5cGFzcyBXZWJLaXQncworICAgICAgICBwb3B1
cCBibG9ja2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDUzNjkKKworICAgICAgICAqIGZhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1oaXN0
b3J5LXJlbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3Bv
cHVwLWJsb2NrZWQtZnJvbS1oaXN0b3J5LXJlbG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9yZXNvdXJjZXMvaGlzdG9yeS1yZWxvYWQtaWZyYW1lLmh0bWw6IEFkZGVkLgor
CiAyMDEwLTA4LTI3ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1oaXN0b3J5LXJlbG9hZC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxv
Y2tlZC1mcm9tLWhpc3RvcnktcmVsb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1oaXN0b3J5LXJlbG9hZC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorCitXaGVuIG9wZW5pbmcg
YSBwYWdlIGluIGEgbmV3IGZyYW1lIGJ5IHVzaW5nIGhpc3RvcnkuZ28oMCkgd2l0aG91dCB1c2Vy
IGdlc3R1cmUsIHdlYmtpdCBzaG91bGQgdGVzdCBvdXQgdGhhdCB0aGUgb3BlbmluZyBpcyBub3Qg
aW5pdGlhdGVkIGJ5IHVzZXIuIFRoaXMgaXMgYSB0ZXN0IGNhc2UgZm9yIGJ1ZyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUzNjkuCitQQVNTRUQKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1oaXN0b3J5LXJlbG9hZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJv
bS1oaXN0b3J5LXJlbG9hZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLWhpc3RvcnktcmVsb2FkLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgLy8gUmVjb3Jk
IGN1cnJlbnQgd2luZG93IGNvdW50LgorICAgIHdpbmRvdy53aW5kb3dDb3VudCA9IHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci53aW5kb3dDb3VudCgpOworfQorZnVuY3Rpb24gdGVzdCgpIHsK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci53aW5kb3dDb3VudCgpID09IHdpbmRvdy53aW5kb3dDb3VudCkKKyAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQgPSAiUEFTU0VEIjsK
KyAgICAvLyBDbG9zZSB0aGUgdGVzdC4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dCh0
ZXN0LCAwKSI+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2hpc3RvcnktcmVsb2FkLWlmcmFtZS5o
dG1sIj48L2lmcmFtZT48YnI+CitXaGVuIG9wZW5pbmcgYSBwYWdlIGluIGEgbmV3IGZyYW1lIGJ5
IHVzaW5nIGhpc3RvcnkuZ28oMCkgd2l0aG91dCB1c2VyIGdlc3R1cmUsIHdlYmtpdCBzaG91bGQg
dGVzdCBvdXQgdGhhdCB0aGUgb3BlbmluZyBpcyBub3QgaW5pdGlhdGVkIGJ5IHVzZXIuIFRoaXMg
aXMgYSB0ZXN0IGNhc2UgZm9yIGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDUzNjkuCis8ZGl2IGlkPSJjb25zb2xlIj5GQUlMRUQ8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL2hpc3Rvcnkt
cmVsb2FkLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3Jlc291cmNlcy9oaXN0b3J5LXJlbG9hZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9oaXN0b3J5LXJlbG9hZC1pZnJhbWUuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxiYXNlIHRhcmdldD0ic29t
ZSI+Cis8c2NyaXB0PgoraGlzdG9yeS5nbygpOworPC9zY3JpcHQ+Cis8Ym9keT4KK2hpc3Rvcnkg
cmVsb2FkLgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67782</attachid>
            <date>2010-09-16 05:07:06 -0700</date>
            <delta_ts>2010-09-16 23:08:30 -0700</delta_ts>
            <desc>patch v3,  only allow the history reload to navigate in the self frame.</desc>
            <filename>patch002.2.txt</filename>
            <type>text/plain</type>
            <size>10765</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzYwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMDktMTYgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdG9w
IGhpc3RvcnkgcmVsb2FkIG5hdmlnYXRpb24gdG8gYnlwYXNzIFdlYktpdCdzIHBvcHVwIGJsb2Nr
ZXIuCisgICAgICAgIE5vdyBoaXN0b3J5IHJlbG9hZCBjYW4gb25seSBuYXZpZ2F0ZSB0aGUgcGFn
ZSBpbiBzZWxmIGZyYW1lLCBubyBtYXR0ZXIKKyAgICAgICAgd2hhdCB0YXJnZXQgZnJhbWUgaXMg
ZGVmaW5lZCBpbiA8YmFzZT4gYW5kIG5vIG5ldyB3aW5kb3cgY2FuIGJlIGNyZWF0ZWQuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTM2OQorCisgICAg
ICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1oaXN0b3J5LXJlbG9hZC5o
dG1sCisKKyAgICAgICAgKiBsb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NoZWR1bGVkTmF2aWdhdGlvbjo6U2NoZWR1bGVkTmF2aWdhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY2hlZHVsZWROYXZpZ2F0aW9uOjp3YXNVc2VyR2VzdHVyZSk6CisgICAg
ICAgIE1vdmUgdGhlIG1fd2FzVXNlckdlc3R1cmUgdG8gYmFzZSBjbGFzcyBTY2hlZHVsZWROYXZp
Z2F0aW9uLiBUaGVuIGFsbAorICAgICAgICBhc3luY2hyb25vdXMgbmF2aWdhdGlvbiBzaXR1YXRp
b25zIGNhbiByZXN0b3JlIHRoZSBjb3JyZWN0IGdlc3R1cmUgc3RhdGUKKyAgICAgICAgZHVyaW5n
IHRoZSByZWFsIG5hdmlnYXRpb24gcHJvY2Vzcy4KKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxl
ZFVSTE5hdmlnYXRpb246OlNjaGVkdWxlZFVSTE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U2NoZWR1bGVkVVJMTmF2aWdhdGlvbjo6ZmlyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY2hl
ZHVsZWRVUkxOYXZpZ2F0aW9uOjpyZWZlcnJlcik6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVs
ZWRIaXN0b3J5TmF2aWdhdGlvbjo6U2NoZWR1bGVkSGlzdG9yeU5hdmlnYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2NoZWR1bGVkSGlzdG9yeU5hdmlnYXRpb246OmZpcmUpOgorICAgICAgICAo
V2ViQ29yZTo6U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb246OlNjaGVkdWxlZEZvcm1TdWJtaXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uOjpmaXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0
aW9uKToKKwogMjAxMC0wOS0xNiAgWW9uZyBMaSAgPHlvbGlAcmltLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtvcy4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1JlZGlyZWN0
U2NoZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVk
dWxlci5jcHAJKHJldmlzaW9uIDY3MzgyKQorKysgV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hl
ZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUmVk
aXJlY3RTY2hlZHVsZXIuaCIKIAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgorI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAi
RXZlbnQuaCIKICNpbmNsdWRlICJGb3JtU3RhdGUuaCIKQEAgLTQxLDkgKzQyLDkgQEAKICNpbmNs
dWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oIgotI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgi
CiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJF
bGVtZW50LmgiCisjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KQEAgLTUyLDEyICs1MywxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNj
aGVkdWxlZE5hdmlnYXRpb24gOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgotICAgIFNj
aGVkdWxlZE5hdmlnYXRpb24oZG91YmxlIGRlbGF5LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxv
Y2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzRHVyaW5nTG9hZCwgYm9vbCBpc0xvY2F0aW9uQ2hh
bmdlKQorICAgIFNjaGVkdWxlZE5hdmlnYXRpb24oZG91YmxlIGRlbGF5LCBib29sIGxvY2tIaXN0
b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzRHVyaW5nTG9hZCwgYm9vbCBp
c0xvY2F0aW9uQ2hhbmdlLCBib29sIHdhc1VzZXJHZXN0dXJlKQogICAgICAgICA6IG1fZGVsYXko
ZGVsYXkpCiAgICAgICAgICwgbV9sb2NrSGlzdG9yeShsb2NrSGlzdG9yeSkKICAgICAgICAgLCBt
X2xvY2tCYWNrRm9yd2FyZExpc3QobG9ja0JhY2tGb3J3YXJkTGlzdCkKICAgICAgICAgLCBtX3dh
c0R1cmluZ0xvYWQod2FzRHVyaW5nTG9hZCkKICAgICAgICAgLCBtX2lzTG9jYXRpb25DaGFuZ2Uo
aXNMb2NhdGlvbkNoYW5nZSkKKyAgICAgICAgLCBtX3dhc1VzZXJHZXN0dXJlKHdhc1VzZXJHZXN0
dXJlKQogICAgIHsKICAgICB9CiAgICAgdmlydHVhbCB+U2NoZWR1bGVkTmF2aWdhdGlvbigpIHsg
fQpAQCAtNzMsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0
KCkgY29uc3QgeyByZXR1cm4gbV9sb2NrQmFja0ZvcndhcmRMaXN0OyB9CiAgICAgYm9vbCB3YXNE
dXJpbmdMb2FkKCkgY29uc3QgeyByZXR1cm4gbV93YXNEdXJpbmdMb2FkOyB9CiAgICAgYm9vbCBp
c0xvY2F0aW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9pc0xvY2F0aW9uQ2hhbmdlOyB9Cisg
ICAgYm9vbCB3YXNVc2VyR2VzdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzVXNlckdlc3R1cmU7
IH0KIAogcHJpdmF0ZToKICAgICBkb3VibGUgbV9kZWxheTsKQEAgLTgwLDIyICs4MywyMiBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9sb2NrQmFja0ZvcndhcmRMaXN0OwogICAgIGJvb2wgbV93YXNE
dXJpbmdMb2FkOwogICAgIGJvb2wgbV9pc0xvY2F0aW9uQ2hhbmdlOworICAgIGJvb2wgbV93YXNV
c2VyR2VzdHVyZTsKIH07CiAKIGNsYXNzIFNjaGVkdWxlZFVSTE5hdmlnYXRpb24gOiBwdWJsaWMg
U2NoZWR1bGVkTmF2aWdhdGlvbiB7CiBwdWJsaWM6CiAgICAgU2NoZWR1bGVkVVJMTmF2aWdhdGlv
bihkb3VibGUgZGVsYXksIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzVXNl
ckdlc3R1cmUsIGJvb2wgZHVyaW5nTG9hZCwgYm9vbCBpc0xvY2F0aW9uQ2hhbmdlKQotICAgICAg
ICA6IFNjaGVkdWxlZE5hdmlnYXRpb24oZGVsYXksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0Zvcndh
cmRMaXN0LCBkdXJpbmdMb2FkLCBpc0xvY2F0aW9uQ2hhbmdlKQorICAgICAgICA6IFNjaGVkdWxl
ZE5hdmlnYXRpb24oZGVsYXksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJp
bmdMb2FkLCBpc0xvY2F0aW9uQ2hhbmdlLCB3YXNVc2VyR2VzdHVyZSkKICAgICAgICAgLCBtX3Vy
bCh1cmwpCiAgICAgICAgICwgbV9yZWZlcnJlcihyZWZlcnJlcikKLSAgICAgICAgLCBtX3dhc1Vz
ZXJHZXN0dXJlKHdhc1VzZXJHZXN0dXJlKQogICAgICAgICAsIG1faGF2ZVRvbGRDbGllbnQoZmFs
c2UpCiAgICAgewogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBmaXJlKEZyYW1lKiBmcmFtZSkK
ICAgICB7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2hhbmdlTG9jYXRpb24oS1VSTChQYXJz
ZWRVUkxTdHJpbmcsIG1fdXJsKSwgbV9yZWZlcnJlciwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tG
b3J3YXJkTGlzdCgpLCBtX3dhc1VzZXJHZXN0dXJlLCBmYWxzZSk7CisgICAgICAgIGZyYW1lLT5s
b2FkZXIoKS0+Y2hhbmdlTG9jYXRpb24oS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1fdXJsKSwgbV9y
ZWZlcnJlciwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCB3YXNVc2VyR2Vz
dHVyZSgpLCBmYWxzZSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0VGltZXIo
RnJhbWUqIGZyYW1lLCBUaW1lcjxSZWRpcmVjdFNjaGVkdWxlcj4qIHRpbWVyKQpAQCAtMTE1LDEy
ICsxMTgsMTAgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXJsOyB9CiAgICAgU3RyaW5nIHJlZmVycmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcnJlcjsg
fQotICAgIGJvb2wgd2FzVXNlckdlc3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dhc1VzZXJHZXN0
dXJlOyB9CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdXJsOwogICAgIFN0cmluZyBtX3JlZmVy
cmVyOwotICAgIGJvb2wgbV93YXNVc2VyR2VzdHVyZTsKICAgICBib29sIG1faGF2ZVRvbGRDbGll
bnQ7CiB9OwogCkBAIC0xNTEsMTQgKzE1MiwxNyBAQCBwdWJsaWM6CiAKIGNsYXNzIFNjaGVkdWxl
ZEhpc3RvcnlOYXZpZ2F0aW9uIDogcHVibGljIFNjaGVkdWxlZE5hdmlnYXRpb24gewogcHVibGlj
OgotICAgIGV4cGxpY2l0IFNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uKGludCBoaXN0b3J5U3Rl
cHMpIDogU2NoZWR1bGVkTmF2aWdhdGlvbigwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKSwg
bV9oaXN0b3J5U3RlcHMoaGlzdG9yeVN0ZXBzKSB7IH0KKyAgICBleHBsaWNpdCBTY2hlZHVsZWRI
aXN0b3J5TmF2aWdhdGlvbihpbnQgaGlzdG9yeVN0ZXBzLCBib29sIHdhc1VzZXJHZXN0dXJlKSA6
IFNjaGVkdWxlZE5hdmlnYXRpb24oMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgd2FzVXNl
ckdlc3R1cmUpLCBtX2hpc3RvcnlTdGVwcyhoaXN0b3J5U3RlcHMpIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGZpcmUoRnJhbWUqIGZyYW1lKQogICAgIHsKKyAgICAgICAgVXNlckdlc3R1cmVJbmRp
Y2F0b3IgZ2VzdHVyZUluZGljYXRvcih3YXNVc2VyR2VzdHVyZSgpID8gRGVmaW5pdGVseVByb2Nl
c3NpbmdVc2VyR2VzdHVyZSA6IERlZmluaXRlbHlOb3RQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwor
CiAgICAgICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7CiAgICAgICAg
IGlmICghbV9oaXN0b3J5U3RlcHMpIHsKICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3Ig
Z28oMCkgZnJvbSBhIGZyYW1lIC0+IHJlbG9hZCBvbmx5IHRoZSBmcmFtZQotICAgICAgICAgICAg
bG9hZGVyLT51cmxTZWxlY3RlZChsb2FkZXItPnVybCgpLCAiIiwgMCwgbG9ja0hpc3RvcnkoKSwg
bG9ja0JhY2tGb3J3YXJkTGlzdCgpLCBmYWxzZSwgU2VuZFJlZmVycmVyKTsKKyAgICAgICAgICAg
IC8vIFRvIGZvbGxvdyBGaXJlZm94IGFuZCBJRSdzIGJlaGF2aW9yLCBoaXN0b3J5IHJlbG9hZCBj
YW4gb25seSBiZSBuYXZpZ2F0ZWQgdG8gdGhlIHNlbGYgZnJhbWUuCisgICAgICAgICAgICBsb2Fk
ZXItPnVybFNlbGVjdGVkKGxvYWRlci0+dXJsKCksICJfc2VsZiIsIDAsIGxvY2tIaXN0b3J5KCks
IGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgd2FzVXNlckdlc3R1cmUoKSwgU2VuZFJlZmVycmVyKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAvLyBnbyhpIT0wKSBmcm9t
IGEgZnJhbWUgbmF2aWdhdGVzIGludG8gdGhlIGhpc3Rvcnkgb2YgdGhlIGZyYW1lIG9ubHksCkBA
IC0xNzMsMTcgKzE3NywxNiBAQCBwcml2YXRlOgogY2xhc3MgU2NoZWR1bGVkRm9ybVN1Ym1pc3Np
b24gOiBwdWJsaWMgU2NoZWR1bGVkTmF2aWdhdGlvbiB7CiBwdWJsaWM6CiAgICAgU2NoZWR1bGVk
Rm9ybVN1Ym1pc3Npb24oUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gc3VibWlzc2lvbiwgYm9v
bCBsb2NrQmFja0ZvcndhcmRMaXN0LCBib29sIGR1cmluZ0xvYWQsIGJvb2wgd2FzVXNlckdlc3R1
cmUpCi0gICAgICAgIDogU2NoZWR1bGVkTmF2aWdhdGlvbigwLCBzdWJtaXNzaW9uLT5sb2NrSGlz
dG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkLCB0cnVlKQorICAgICAgICA6
IFNjaGVkdWxlZE5hdmlnYXRpb24oMCwgc3VibWlzc2lvbi0+bG9ja0hpc3RvcnkoKSwgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCwgdHJ1ZSwgd2FzVXNlckdlc3R1cmUpCiAgICAgICAg
ICwgbV9zdWJtaXNzaW9uKHN1Ym1pc3Npb24pCiAgICAgICAgICwgbV9oYXZlVG9sZENsaWVudChm
YWxzZSkKLSAgICAgICAgLCBtX3dhc1VzZXJHZXN0dXJlKHdhc1VzZXJHZXN0dXJlKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1fc3VibWlzc2lvbi0+c3RhdGUoKSk7CiAgICAgfQogCiAgICAgdmly
dHVhbCB2b2lkIGZpcmUoRnJhbWUqIGZyYW1lKQogICAgIHsKLSAgICAgICAgVXNlckdlc3R1cmVJ
bmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihtX3dhc1VzZXJHZXN0dXJlID8gRGVmaW5pdGVseVBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSA6IERlZmluaXRlbHlOb3RQcm9jZXNzaW5nVXNlckdlc3R1cmUp
OworICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHdhc1VzZXJH
ZXN0dXJlKCkgPyBEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5v
dFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAKICAgICAgICAgLy8gVGhlIHN1Ym1pdEZvcm0gZnVu
Y3Rpb24gd2lsbCBmaW5kIGEgdGFyZ2V0IGZyYW1lIGJlZm9yZSB1c2luZyB0aGUgcmVkaXJlY3Rp
b24gdGltZXIuCiAgICAgICAgIC8vIE5vdyB0aGF0IHRoZSB0aW1lciBoYXMgZmlyZWQsIHdlIG5l
ZWQgdG8gcmVwZWF0IHRoZSBzZWN1cml0eSBjaGVjayB3aGljaCBub3JtYWxseSBpcyBkb25lIHdo
ZW4KQEAgLTIxNCw3ICsyMTcsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFJlZlB0cjxGb3Jt
U3VibWlzc2lvbj4gbV9zdWJtaXNzaW9uOwogICAgIGJvb2wgbV9oYXZlVG9sZENsaWVudDsKLSAg
ICBib29sIG1fd2FzVXNlckdlc3R1cmU7CiB9OwogCiBSZWRpcmVjdFNjaGVkdWxlcjo6UmVkaXJl
Y3RTY2hlZHVsZXIoRnJhbWUqIGZyYW1lKQpAQCAtMzQ0LDkgKzM0Niw5IEBAIHZvaWQgUmVkaXJl
Y3RTY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU4KICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICAvLyBJbiBhbGwgb3RoZXIgY2FzZXMsIHNjaGVk
dWxlIHRoZSBoaXN0b3J5IHRyYXZlcnNhbCB0byBvY2N1ciBhc3luY2hyb25vdXNseS4KLSAgICBz
Y2hlZHVsZShhZG9wdFB0cihuZXcgU2NoZWR1bGVkSGlzdG9yeU5hdmlnYXRpb24oc3RlcHMpKSk7
CisgICAgc2NoZWR1bGUoYWRvcHRQdHIobmV3IFNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uKHN0
ZXBzLCBtX2ZyYW1lLT5sb2FkZXIoKS0+aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkpKTsKIH0K
IAogdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6dGltZXJGaXJlZChUaW1lcjxSZWRpcmVjdFNjaGVk
dWxlcj4qKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjc2MDQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wOS0xNiAgSm9obm55IERp
bmcgIDxqbmRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFN0b3AgaGlzdG9yeSByZWxvYWQgbmF2aWdhdGlvbiB0byBieXBhc3Mg
V2ViS2l0J3MgcG9wdXAgYmxvY2tlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ1MzY5CisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9wb3B1cC1ibG9j
a2VkLWZyb20taGlzdG9yeS1yZWxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20taGlzdG9yeS1yZWxvYWQuaHRtbDogQWRkZWQu
CisKIDIwMTAtMDktMTYgIFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgR2VvcmdlIFN0YWlrb3MuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1
cC1ibG9ja2VkLWZyb20taGlzdG9yeS1yZWxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1oaXN0b3J5LXJlbG9h
ZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9w
b3B1cC1ibG9ja2VkLWZyb20taGlzdG9yeS1yZWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDMgQEAKK0hpc3RvcnkgcmVsb2FkIGNhbiBvbmx5IG5hdmlnYXRlIHRoZSBw
YWdlIGluIHRoZSBzZWxmIGZyYW1lLCBubyBtYXR0ZXIgd2hhdCB0YXJnZXQgZnJhbWUgaXMgZGVm
aW5lZCBpbiBiYXNlIHRhZyBhbmQgbm8gbmV3IHdpbmRvdyBjYW4gYmUgY3JlYXRlZC4gVGhpcyBp
cyBhIHRlc3QgY2FzZSBmb3IgYnVnIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NTM2OS4KK2xvYWQgY291bnQgOiAyCitQQVNTRUQKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1oaXN0b3J5LXJlbG9hZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1oaXN0b3J5
LXJlbG9hZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9w
dXAtYmxvY2tlZC1mcm9tLWhpc3RvcnktcmVsb2FkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgLy8gUmVjb3JkIGN1cnJlbnQg
d2luZG93IGNvdW50LgorICAgIHdpbmRvdy53aW5kb3dDb3VudCA9IHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci53aW5kb3dDb3VudCgpOworfQorZnVuY3Rpb24gdGVzdERvbmUoKSB7CisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIud2luZG93Q291bnQoKSA9PSB3aW5kb3cud2luZG93Q291bnQpCisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJUZXh0ID0gIlBBU1NFRCI7CisgICAg
Ly8gQ2xvc2UgdGhlIHRlc3QuCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSI+CitIaXN0b3J5IHJlbG9hZCBjYW4gb25s
eSBuYXZpZ2F0ZSB0aGUgcGFnZSBpbiB0aGUgc2VsZiBmcmFtZSwgbm8gbWF0dGVyIHdoYXQgdGFy
Z2V0IGZyYW1lIGlzIGRlZmluZWQgaW4gYmFzZSB0YWcgYW5kIG5vIG5ldyB3aW5kb3cgY2FuIGJl
IGNyZWF0ZWQuIFRoaXMgaXMgYSB0ZXN0IGNhc2UgZm9yIGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUzNjkuCis8ZGl2IGlkPSJsb2FkQ291bnQiPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+RkFJTEVEPC9kaXY+Cis8c2NyaXB0PgoraWYgKCFzZXNzaW9uU3Rv
cmFnZS5sb2FkQ291bnQpCisgICBzZXNzaW9uU3RvcmFnZS5sb2FkQ291bnQgPSAxOworZWxzZQor
ICAgc2Vzc2lvblN0b3JhZ2UubG9hZENvdW50ID0gcGFyc2VJbnQoc2Vzc2lvblN0b3JhZ2UubG9h
ZENvdW50LCAxMCkgKyAxOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvYWRDb3VudCIpLmlu
bmVyVGV4dCA9ICJsb2FkIGNvdW50IDogIiArIHNlc3Npb25TdG9yYWdlLmxvYWRDb3VudDsKK2lm
ICgyID09IHNlc3Npb25TdG9yYWdlLmxvYWRDb3VudCkKKyAgICB0ZXN0RG9uZSgpOworZWxzZQor
ICAgIGhpc3RvcnkuZ28oKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>
<flag name="review"
          id="57180"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>