<?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>28914</bug_id>
          
          <creation_ts>2009-09-02 11:39:17 -0700</creation_ts>
          <short_desc>Add a test for iframe shims and windowed plugin</short_desc>
          <delta_ts>2009-09-22 10:19:35 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>29100</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Victor Wang">victorw</reporter>
          <assigned_to name="Victor Wang">victorw</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>pam</cc>
    
    <cc>sam</cc>
    
    <cc>tulrich</cc>
    
    <cc>victorw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>144256</commentid>
    <comment_count>0</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2009-09-02 11:39:17 -0700</bug_when>
    <thetext>Add a test to test iframe shims can be used to overlay html above a windows plugin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144257</commentid>
    <comment_count>1</comment_count>
      <attachid>38935</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2009-09-02 11:44:42 -0700</bug_when>
    <thetext>Created attachment 38935
Add layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144258</commentid>
    <comment_count>2</comment_count>
      <attachid>38936</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2009-09-02 11:49:16 -0700</bug_when>
    <thetext>Created attachment 38936
Proposed patch

Remove the incorrect entry in Changlog in previous attachment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144354</commentid>
    <comment_count>3</comment_count>
      <attachid>38956</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2009-09-02 17:41:41 -0700</bug_when>
    <thetext>Created attachment 38956
Updated patch (indent 4 spaces instead of 2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144544</commentid>
    <comment_count>4</comment_count>
      <attachid>38996</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2009-09-03 10:45:49 -0700</bug_when>
    <thetext>Created attachment 38996
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144546</commentid>
    <comment_count>5</comment_count>
      <attachid>38996</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-09-03 10:54:52 -0700</bug_when>
    <thetext>Comment on attachment 38996
Updated patch

Quite a few of style issues below:

&gt; Index: LayoutTests/ChangeLog
&gt; ===================================================================
&gt; --- LayoutTests/ChangeLog	(revision 47984)
&gt; +++ LayoutTests/ChangeLog	(working copy)
&gt; @@ -1,3 +1,18 @@
&gt; +2009-09-02  Victor Wang  &lt;victorw@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=28914
&gt; +
&gt; +        Add layout test to test iframe shim can be used
&gt; +        to overlay html above a windowed plugin. It checks
&gt; +        premutations of iframe shimes in relationship to 

shimes =&gt; shims.

&gt; +    var HEIGHT = 100;
width

&gt; +    var WIDTH = 100;
height

&gt; +        i.style.filter=&apos;progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)&apos;;

This is IE-specific. Why do we need it here?

&gt; +        var case_id = items;

caseId

&gt; +        var expect_clickable = tags.expect &amp;&amp; tags.expect.indexOf(&apos;UNDER&apos;) == -1;

expectClickable

&gt; +        expected_clicks[case_id] = expect_clickable;

expectedClicks

&gt; +        var plugin_div_z;

pluginDivZ

&gt; +        var overlay_div_z_iframe;

overlayDivZIframe

&gt; +        var overlay_div_z_overlay;

overlayDivZOverlay, and below, lots of underscore_delimited_var_names. WebKit convention is camelCase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144555</commentid>
    <comment_count>6</comment_count>
      <attachid>39000</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2009-09-03 11:48:51 -0700</bug_when>
    <thetext>Created attachment 39000
Updated patch with style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144576</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-09-03 13:06:36 -0700</bug_when>
    <thetext>What is an iframe shim?  I am not familiar with this term in this context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144581</commentid>
    <comment_count>8</comment_count>
      <attachid>39004</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2009-09-03 13:21:33 -0700</bug_when>
    <thetext>Created attachment 39004
Updated patch with style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144585</commentid>
    <comment_count>9</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-09-03 13:37:06 -0700</bug_when>
    <thetext>iframe-shims are a fairly common hack to get around z-ordering issues with windowed plugins. For example, for a menu that needs to overlay on top of windowed flash. Since on Windows, windowed plugins are in their own HWND, they don&apos;t respect z-index and go on top of the menu. Iframes in IE/FF historically have been implemented using an HWND, so if you put an iframe behind the menu, it will block the paint of the plugin and allow your menu to show on top.

A google search for iframe shim shows a lot of hits for this sort of thing. For a real-world example, look at any html dialog in any Google product (e.g. gmail, docs, etc.).

Thatcher added support for this behavior to Chromium by clipping plugins when there&apos;s an iframe above them. There&apos;s a FIXME to move that logic into platform-agnostic code. This is the layout-test for that behavior (matches IE).

I don&apos;t remember the details, but I think making it platform-agnostic was non-trivial, which is why it wasn&apos;t done that way to start with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144586</commentid>
    <comment_count>10</comment_count>
    <who name="Thatcher Ulrich">tulrich</who>
    <bug_when>2009-09-03 13:46:04 -0700</bug_when>
    <thetext>A couple notes to add to what Ojan said:

On Linux+FF, iframe shims work very similarly and fill the same need as on the Windows browsers.

On Mac, iframe shims are largely irrelevant -- there is no such thing as a windowed plugin so the HTML compositing model generally does the right thing.  (There remain many complications when working with an OpenGL plugin, but iframe shims never helped with that on Mac, so the Google Earth Plugin has to use even worse workarounds.)

There&apos;s an early description of the technique here: http://www.macridesweb.com/oltest/IframeShim.html

I have a test page that explores some aspects of the technique: http://tulrich.com/iframe_shims/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144591</commentid>
    <comment_count>11</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2009-09-03 13:51:18 -0700</bug_when>
    <thetext>Thanks Ojan and Thatcher on providing more background about this test.

Dimitri Glazkov,
I fixed the style issue (sorry, I thought the webkit style guide is for c/c++ code, not layout test). The IE specific filter is not required so I removed it. Please take another look and let me know if you have more comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145835</commentid>
    <comment_count>12</comment_count>
      <attachid>39004</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-09-09 10:45:58 -0700</bug_when>
    <thetext>Comment on attachment 39004
Updated patch with style fixes

Almost there!

&gt; +                if (!tags.pluginNorelative) {
&gt; +                    parentdiv.style.position = &apos;relative&apos;;
&gt; +                }

No braces around one-liners.

&gt; +
&gt; +                if (pluginDivZ) {
&gt; +                    parentdiv.style.zIndex = pluginDivZ;
&gt; +                }

Ditto.

&gt; +                root.appendChild(parentdiv);
&gt; +            } else {
&gt; +                if (!tags.pluginNorelative) {
&gt; +                    pd.style.position = &apos;relative&apos;;

Ditto.


&gt; +            if (overlayDivZIframe) {
&gt; +                id.style.zIndex = overlayDivZIframe;

Ditto.


&gt; +            if (overlayDivZOverlay) {
&gt; +            od.style.zIndex = overlayDivZOverlay;
&gt; +            }

No braces + indent.

&gt; +                if (overlayDivZOverlay) {
&gt; +                    parentdiv.style.zIndex = overlayDivZOverlay;
&gt; +                }

No braces.

&gt; +        for (k in expectedClicks) {
&gt; +            if (expectedClicks[k] &amp;&amp; !clicks[k]) {
&gt; +                waitingForMoreClicks = true;
&gt; +	    } else if (!expectedClicks[k] &amp;&amp; clicks[k]) {

Indent issue here. Should be one more to indent w/if?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145843</commentid>
    <comment_count>13</comment_count>
      <attachid>39279</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2009-09-09 11:01:24 -0700</bug_when>
    <thetext>Created attachment 39279
Patch with style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145846</commentid>
    <comment_count>14</comment_count>
      <attachid>39280</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2009-09-09 11:05:47 -0700</bug_when>
    <thetext>Created attachment 39280
More style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145850</commentid>
    <comment_count>15</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2009-09-09 11:07:07 -0700</bug_when>
    <thetext>done. please take another look. thanks!
(In reply to comment #12)
&gt; (From update of attachment 39004 [details])
&gt; Almost there!
&gt; 
&gt; &gt; +                if (!tags.pluginNorelative) {
&gt; &gt; +                    parentdiv.style.position = &apos;relative&apos;;
&gt; &gt; +                }
&gt; 
&gt; No braces around one-liners.
&gt; 
&gt; &gt; +
&gt; &gt; +                if (pluginDivZ) {
&gt; &gt; +                    parentdiv.style.zIndex = pluginDivZ;
&gt; &gt; +                }
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; +                root.appendChild(parentdiv);
&gt; &gt; +            } else {
&gt; &gt; +                if (!tags.pluginNorelative) {
&gt; &gt; +                    pd.style.position = &apos;relative&apos;;
&gt; 
&gt; Ditto.
&gt; 
&gt; 
&gt; &gt; +            if (overlayDivZIframe) {
&gt; &gt; +                id.style.zIndex = overlayDivZIframe;
&gt; 
&gt; Ditto.
&gt; 
&gt; 
&gt; &gt; +            if (overlayDivZOverlay) {
&gt; &gt; +            od.style.zIndex = overlayDivZOverlay;
&gt; &gt; +            }
&gt; 
&gt; No braces + indent.
&gt; 
&gt; &gt; +                if (overlayDivZOverlay) {
&gt; &gt; +                    parentdiv.style.zIndex = overlayDivZOverlay;
&gt; &gt; +                }
&gt; 
&gt; No braces.
&gt; 
&gt; &gt; +        for (k in expectedClicks) {
&gt; &gt; +            if (expectedClicks[k] &amp;&amp; !clicks[k]) {
&gt; &gt; +                waitingForMoreClicks = true;
&gt; &gt; +	    } else if (!expectedClicks[k] &amp;&amp; clicks[k]) {
&gt; 
&gt; Indent issue here. Should be one more to indent w/if?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145868</commentid>
    <comment_count>16</comment_count>
      <attachid>39280</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-09-09 11:35:47 -0700</bug_when>
    <thetext>Comment on attachment 39280
More style fixes

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145878</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 11:47:27 -0700</bug_when>
    <thetext>Strange.

fatal: pathspec &apos;LayoutTests/plugins/resources/simple_blank.swf&apos; did not match any files

But yet svn-apply exit&apos;d 0.  I think that something is broken with svn-apply!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145881</commentid>
    <comment_count>18</comment_count>
      <attachid>39280</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 11:55:36 -0700</bug_when>
    <thetext>Comment on attachment 39280
More style fixes

Filed bug 29100.  But the commit-queue can&apos;t handle this patch, and I think I&apos;m going to have to turn it off until I can fix bug 29100.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145923</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 14:13:30 -0700</bug_when>
    <thetext>Did you modify this patch by hand, or is this a patch produced straight from svn-create-patch?  However the binary file was added seems to have confused svn-apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145928</commentid>
    <comment_count>20</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2009-09-09 14:19:07 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Did you modify this patch by hand, or is this a patch produced straight from
&gt; svn-create-patch?  However the binary file was added seems to have confused
&gt; svn-apply.

The patch was created by svn-create-patch. The binary file has a prop set to svnLmime-type application/octet-stream, should this be changed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145929</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 14:20:12 -0700</bug_when>
    <thetext>No, I think our scripts are just broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145931</commentid>
    <comment_count>22</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2009-09-09 14:22:06 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; No, I think our scripts are just broken.

OK. Thanks for your help! Let me know of anything need from me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148896</commentid>
    <comment_count>23</comment_count>
      <attachid>39280</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-21 16:34:35 -0700</bug_when>
    <thetext>Comment on attachment 39280
More style fixes

OK.  I&apos;ve fixed bug 29100 and am now running the commit-queue with the patch applied.  This should land properly now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148899</commentid>
    <comment_count>24</comment_count>
      <attachid>39280</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-21 16:43:48 -0700</bug_when>
    <thetext>Comment on attachment 39280
More style fixes

Never mind.  I don&apos;t have a patched copy running locally.  We&apos;ll just wait for bug 29100 to be resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149088</commentid>
    <comment_count>25</comment_count>
      <attachid>39280</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-22 10:19:28 -0700</bug_when>
    <thetext>Comment on attachment 39280
More style fixes

Clearing flags on attachment: 39280

Committed r48638: &lt;http://trac.webkit.org/changeset/48638&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149089</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-22 10:19:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38935</attachid>
            <date>2009-09-02 11:44:42 -0700</date>
            <delta_ts>2009-09-02 11:49:16 -0700</delta_ts>
            <desc>Add layout test</desc>
            <filename>iframe-shims.txt</filename>
            <type>text/plain</type>
            <size>10985</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ3OTgwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDktMDktMDIgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4OTE0
CisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IHRvIHRlc3QgaWZyYW1lIHNoaW0gY2FuIGJlIHVz
ZWQKKyAgICAgICAgdG8gb3ZlcmxheSBodG1sIGFib3ZlIGEgd2luZG93ZWQgcGx1Z2luLiBJdCBj
aGVja3MKKyAgICAgICAgcHJlbXV0YXRpb25zIG9mIGlmcmFtZSBzaGltZXMgaW4gcmVsYXRpb25z
aGlwIHRvIAorICAgICAgICBwbHVnaW4uCisKKyAgICAgICAgKiBwbHVnaW5zL2lmcmFtZS1zaGlt
cy1leHBlY3RlZC50eHQ6IEFkZGVkIHdpdGggcHJvcGVydHkgc3ZuOmVvbC1zdHlsZS4KKyAgICAg
ICAgKiBwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sOiBBZGRlZCB3aXRoIHByb3BlcnR5IHN2bjpl
b2wtc3R5bGUuCisgICAgICAgICogcGx1Z2lucy9yZXNvdXJjZXMvc2ltcGxlX2JsYW5rLnN3Zjog
QWRkZWQgd2l0aCBwcm9wZXJ0eSBzdm46bWltZS10eXBlLgorCisyMDA5LTA5LTAxICBWaWN0b3Ig
V2FuZyAgPHZpY3RvcndAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yODg3OQorCisgICAgICAgIEZpeCBmYXN0L2RvbS9TdHlsZVNoZWV0L293bmVyTm9kZS1s
aWZldGltZS0yLmh0bWwKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgV2ViS2l0IDxsaW5rPiBub2Rl
cyB3aWxsIG9ubHkgaGF2ZSBhCisgICAgICAgIHN0eWxlIHNoZWV0IGNyZWF0ZWQgaWYgdGhleSBo
YXZlIGhyZWYgYXR0cmlidXRlLgorICAgICAgICBUaGUgc3JjIGF0dHJpYnV0ZSB0byBub24tZXhp
c3RhbnQgY3NzIGRvZXNuJ3Qgd29yay4KKyAgICAgICAgQ2hhbmdlIHNyYyB0byBocmVmIHRvIG1h
a2UgdGhpcyB0ZXN0IHdvcmtzIGluIFdlYktpdC4gCisKKyAgICAgICAgQWxzbyB1cGRhdGUgdGhl
IGV4cGVjdGF0aW9uIHJlc3VsdC4KKworICAgICAgICAqIGZhc3QvZG9tL1N0eWxlU2hlZXQvb3du
ZXJOb2RlLWxpZmV0aW1lLTItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1N0eWxl
U2hlZXQvb3duZXJOb2RlLWxpZmV0aW1lLTIuaHRtbDoKKwogMjAwOS0wOS0wMiAgQmVuIE11cmRv
Y2ggIDxiZW5tQGdvb2dsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI4NzM3CkluZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL2lmcmFtZS1z
aGltcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9pZnJh
bWUtc2hpbXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGx1Z2lu
cy9pZnJhbWUtc2hpbXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBA
CitUZXN0IHRoYXQgaWZyYW1lIHNoaW1zIGNhbiBiZSB1c2VkIHRvIG92ZXJsYXkgSFRNTCBhYm92
ZSBhIHdpbmRvd2VkIHBsdWdpbi4gVGhlIHJlZCBzcXVhcmVzIHNob3VsZCBiZSBoaWRkZW4gYnkg
dGhlIGJsdWUgZmxhc2ggcGx1Z2lucywgYW5kIHRoZSBncmVlbiBzcXVhcmVzIHNob3VsZCBhcHBl
YXIgb3ZlciB0aGUgcGx1Z2lucy4gVG8gdGVzdCBpbnRlcmFjdGl2ZWx5LCBjbGljayBvdmVyIHRo
ZSBidXR0b25zIG9uIHRoZSBzcXVhcmVzLiBZb3Ugc2hvdWxkIG5vdCBiZSBhYmxlIHRvIHJlYWNo
IHRoZSByZWQgc3F1YXJlcycgYnV0dG9ucy4KKworUHJpbnRzICJTVUNDRVNTIiBvbiBzdWNjZXNz
LCAiRkFJTFVSRSIgb24gZmFpbHVyZS4KKworU1VDQ0VTUworCisKKworCisKKworCisKKworCisK
KworCisKKworCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsdWdpbnMvaWZy
YW1lLXNoaW1zLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAg
KyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIzNiBAQAorPGh0bWw+PGhlYWQ+Cis8c2NyaXB0PgorICAgIHZhciBl
eHBlY3RlZF9jbGlja3MgPSBbXTsKKyAgICB2YXIgY2xpY2tzID0gW107CisKKyAgICB2YXIgSEVJ
R0hUID0gMTAwOworICAgIHZhciBXSURUSCA9IDEwMDsKKyAgICB2YXIgaXRlbXMgPSAwOworCisg
ICAgZnVuY3Rpb24gbWFrZVBsdWdpbkVsZW1lbnQoKSB7CisgICAgICB2YXIgZiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2VtYmVkJyk7CisgICAgICBmLnNldEF0dHJpYnV0ZSgnaWQnLCAnc3dm
X2VtYmVkXycgKyBpdGVtcyk7CisgICAgICBmLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBXSURUSCAr
ICcnKTsKKyAgICAgIGYuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBIRUlHSFQgKyAnJyk7CisgICAg
ICBmLnNldEF0dHJpYnV0ZSgnd21vZGUnLCAnd2luZG93Jyk7CisgICAgICBmLnNldEF0dHJpYnV0
ZSgnbG9vcCcsICdmYWxzZScpOworICAgICAgZi5zZXRBdHRyaWJ1dGUoJ3NyYycsICdyZXNvdXJj
ZXMvc2ltcGxlX2JsYW5rLnN3ZicpOworICAgICAgZi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnYXBw
bGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gnKTsKKyAgICAgIHJldHVybiBmOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIG1ha2VJZnJhbWVEaXYoKSB7CisgICAgICB2YXIgaSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgICAgaS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0
ZSc7CisgICAgICBpLnN0eWxlLnRvcCA9ICcxMHB4JzsKKyAgICAgIGkuc3R5bGUubGVmdCA9ICcz
MHB4JzsKKyAgICAgIGkuc3R5bGUud2lkdGggPSAnODBweCc7CisgICAgICBpLnN0eWxlLmhlaWdo
dCA9ICc4MHB4JzsKKyAgICAgIGkuc3R5bGUuZmlsdGVyPSdwcm9naWQ6RFhJbWFnZVRyYW5zZm9y
bS5NaWNyb3NvZnQuQWxwaGEoc3R5bGU9MCxvcGFjaXR5PTApJzsKKyAgICAgIGkuc2V0QXR0cmli
dXRlKCdmcmFtZWJvcmRlcicsICcwJyk7CisgICAgICBpLnNldEF0dHJpYnV0ZSgnc3JjJywgJ2ph
dmFzY3JpcHQ6dm9pZCgwKTsnKTsKKyAgICAgIHJldHVybiBpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIG1ha2VPdmVybGF5RGl2KGNvbG9yLCBjYXNlX2lkKSB7CisgICAgICB2YXIgbyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgby5zdHlsZS5wb3NpdGlvbiA9ICdhYnNv
bHV0ZSc7CisgICAgICBvLnN0eWxlLnRvcCA9ICcxMHB4JzsKKyAgICAgIG8uc3R5bGUubGVmdCA9
ICczMHB4JzsKKyAgICAgIG8uc3R5bGUud2lkdGggPSAnODBweCc7CisgICAgICBvLnN0eWxlLmhl
aWdodCA9ICc4MHB4JzsKKyAgICAgIG8uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gY29sb3I7Cisg
ICAgICBvLnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7CisgICAgICBvLmlubmVySFRNTCA9ICc8
aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0dG9uJyArIGNhc2VfaWQgKyAnIiAnICsKKyAgICAg
ICAgICAnb25jbGljaz0iZG9DbGljaygnICsgY2FzZV9pZCArCisgICAgICAgICAgJyk7IiB2YWx1
ZT0iY2xpY2ttZSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDsgbGVmdDogMTA7
IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7Ii8+JzsKKyAgICAgIHJldHVybiBvOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGFkZENhc2UoeCwgeSwgdGFncykgeworICAgICAgdmFyIGNhc2VfaWQg
PSBpdGVtczsKKyAgICAgIGl0ZW1zKys7CisKKyAgICAgIHZhciBleHBlY3RfY2xpY2thYmxlID0g
dGFncy5leHBlY3QgJiYgdGFncy5leHBlY3QuaW5kZXhPZignVU5ERVInKSA9PSAtMTsKKyAgICAg
IGV4cGVjdGVkX2NsaWNrc1tjYXNlX2lkXSA9IGV4cGVjdF9jbGlja2FibGU7CisKKyAgICAgIHZh
ciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJyk7CisgICAg
ICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgcm9vdC5z
dHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICByb290LnN0eWxlLmxlZnQgPSB4ICog
KFdJRFRIICsgNDApICsgJ3B4JzsKKyAgICAgIHJvb3Quc3R5bGUudG9wID0geSAqIChIRUlHSFQg
KyAyMCkgKyAncHgnOworICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAg
ICB2YXIgcGx1Z2luX2Rpdl96OworICAgICAgdmFyIG92ZXJsYXlfZGl2X3pfaWZyYW1lOworICAg
ICAgdmFyIG92ZXJsYXlfZGl2X3pfb3ZlcmxheTsKKyAgICAgIGlmICh0YWdzLnBsdWdpbl9sb3dl
cnopIHsKKyAgICAgICAgcGx1Z2luX2Rpdl96ID0gMTAwOworICAgICAgICBvdmVybGF5X2Rpdl96
X2lmcmFtZSA9IDIwMDsKKyAgICAgICAgb3ZlcmxheV9kaXZfel9vdmVybGF5ID0gMjAxOworICAg
ICAgfSBlbHNlIGlmICh0YWdzLnBsdWdpbl9oaWdoZXJ6KSB7CisgICAgICAgIHBsdWdpbl9kaXZf
eiA9IDIwMDsKKyAgICAgICAgb3ZlcmxheV9kaXZfel9pZnJhbWUgPSAxMDA7CisgICAgICAgIG92
ZXJsYXlfZGl2X3pfb3ZlcmxheSA9IDEwMTsKKyAgICAgIH0gZWxzZSBpZiAodGFncy5wbHVnaW5f
ZXF1YWx6KSB7CisgICAgICAgIHBsdWdpbl9kaXZfeiA9IDEwMDsKKyAgICAgICAgb3ZlcmxheV9k
aXZfel9pZnJhbWUgPSAxMDA7CisgICAgICAgIG92ZXJsYXlfZGl2X3pfb3ZlcmxheSA9IDEwMDsK
KyAgICAgIH0KKworICAgIHZhciBhcHBlbmRfcGx1Z2luID0gZnVuY3Rpb24oKSB7CisgICAgICB2
YXIgcGQgPSBtYWtlUGx1Z2luRWxlbWVudCgpOworICAgICAgaWYgKHRhZ3MucGx1Z2luX2luc2lk
ZV9kaXYgfHwgcGx1Z2luX2Rpdl96KSB7CisgICAgICAgIHZhciBwYXJlbnRkaXYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgcGFyZW50ZGl2LmFwcGVuZENoaWxkKHBk
KQorICAgICAgICBpZiAoIXRhZ3MucGx1Z2luX25vcmVsYXRpdmUpIHsKKyAgICAgICAgICBwYXJl
bnRkaXYuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHBsdWdpbl9kaXZfeikgeworICAgICAgICAgIHBhcmVudGRpdi5zdHlsZS56SW5kZXggPSBw
bHVnaW5fZGl2X3o7CisgICAgICAgIH0KKyAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChwYXJlbnRk
aXYpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCF0YWdzLnBsdWdpbl9ub3JlbGF0aXZl
KSB7CisgICAgICAgICAgcGQuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOworICAgICAgICB9
CisgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQocGQpOworICAgICAgfQorICAgIH07CisKKyAgICB2
YXIgYXBwZW5kX292ZXJsYXkgPSBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBpZCA9IG1ha2VJZnJh
bWVEaXYoKTsKKyAgICAgIGlmIChvdmVybGF5X2Rpdl96X2lmcmFtZSkgeworICAgICAgICBpZC5z
dHlsZS56SW5kZXggPSBvdmVybGF5X2Rpdl96X2lmcmFtZTsKKyAgICAgIH0KKworICAgICAgdmFy
IG9kID0gbWFrZU92ZXJsYXlEaXYoZXhwZWN0X2NsaWNrYWJsZSA/ICdncmVlbicgOiAncmVkJywg
Y2FzZV9pZCk7CisgICAgICBvZC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICBp
ZiAob3ZlcmxheV9kaXZfel9vdmVybGF5KSB7CisgICAgICAgIG9kLnN0eWxlLnpJbmRleCA9IG92
ZXJsYXlfZGl2X3pfb3ZlcmxheTsKKyAgICAgIH0KKworICAgICAgaWYgKHRhZ3Mub3ZlcmxheV9p
bnNpZGVfZGl2KSB7CisgICAgICAgIHZhciBwYXJlbnRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICAgICAgaWYgKG92ZXJsYXlfZGl2X3pfb3ZlcmxheSkgeworICAgICAg
ICAgIHBhcmVudGRpdi5zdHlsZS56SW5kZXggPSBvdmVybGF5X2Rpdl96X292ZXJsYXk7CisgICAg
ICAgIH0KKworICAgICAgICBwYXJlbnRkaXYuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOwor
ICAgICAgICBwYXJlbnRkaXYuc3R5bGUudG9wID0gJzBweCc7CisgICAgICAgIHBhcmVudGRpdi5z
dHlsZS5sZWZ0ID0gJzBweCc7CisgICAgICAgIHBhcmVudGRpdi5hcHBlbmRDaGlsZChpZCk7Cisg
ICAgICAgIHBhcmVudGRpdi5hcHBlbmRDaGlsZChvZCk7CisgICAgICAgIHJvb3QuYXBwZW5kQ2hp
bGQocGFyZW50ZGl2KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQo
aWQpOworICAgICAgICByb290LmFwcGVuZENoaWxkKG9kKTsKKyAgICAgIH0KKyAgICB9OworCisg
ICAgaWYgKHRhZ3Mub3ZlcmxheV9lYXJsaWVyKSB7CisgICAgICBhcHBlbmRfb3ZlcmxheSgpOwor
ICAgICAgYXBwZW5kX3BsdWdpbigpOworICAgIH0gZWxzZSB7CisgICAgICBhcHBlbmRfcGx1Z2lu
KCk7CisgICAgICBhcHBlbmRfb3ZlcmxheSgpOworICAgIH0KKyAgfQorCisgIGZ1bmN0aW9uIGRv
Q2xpY2soaWQpIHsKKyAgICBjbGlja3NbaWRdID0gdHJ1ZTsKKworICAgIC8vIENoZWNrIHN1Y2Nl
c3MvZmFpbHVyZS4KKyAgICB2YXIgb3V0cHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91
dHB1dCIpOworICAgIHZhciB3YWl0aW5nX2Zvcl9tb3JlX2NsaWNrcyA9IGZhbHNlOworICAgIHZh
ciBrOworICAgIGZvciAoayBpbiBleHBlY3RlZF9jbGlja3MpIHsKKyAgICAgIGlmIChleHBlY3Rl
ZF9jbGlja3Nba10gJiYgIWNsaWNrc1trXSkgeworICAgICAgICB3YWl0aW5nX2Zvcl9tb3JlX2Ns
aWNrcyA9IHRydWU7CisgICAgICB9IGVsc2UgaWYgKCFleHBlY3RlZF9jbGlja3Nba10gJiYgY2xp
Y2tzW2tdKSB7CisgICAgICAgIG91dHB1dC5pbm5lckhUTUwgPSAnRkFJTFVSRSc7CisgICAgICAg
IHJldHVybjsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXdhaXRpbmdfZm9yX21vcmVfY2xp
Y2tzKSB7CisgICAgICBvdXRwdXQuaW5uZXJIVE1MID0gJ1NVQ0NFU1MnOworICAgICAgcmV0dXJu
OworICAgIH0KKyAgfQorCisgIGZ1bmN0aW9uIGluaXQoKSB7CisgICAgYWRkQ2FzZSgwLCAwLCB7
ZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgYWRkQ2FzZSgxLCAwLCB7J292ZXJsYXlfZWFy
bGllcic6MSwgJ292ZXJsYXlfaW5zaWRlX2Rpdic6IDEsICdwbHVnaW5faW5zaWRlX2Rpdic6MSwg
ZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgIGFkZENhc2UoMiwgMCwgeydwbHVnaW5fbG93
ZXJ6JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICBhZGRDYXNlKDMsIDAsIHsncGx1
Z2luX2hpZ2hlcnonOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRFUid9KTsKKyAgICBhZGRDYXNlKDAs
IDEsIHsnb3ZlcmxheV9pbnNpZGVfZGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAg
ICBhZGRDYXNlKDEsIDEsIHsncGx1Z2luX2xvd2Vyeic6MSwgJ292ZXJsYXlfaW5zaWRlX2Rpdic6
MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgYWRkQ2FzZSgyLCAxLCB7J3BsdWdpbl9o
aWdoZXJ6JzoxLCAnb3ZlcmxheV9pbnNpZGVfZGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgVU5ERVIn
fSk7CisgICAgYWRkQ2FzZSgwLCAyLCB7J3BsdWdpbl9lcXVhbHonOjEsICdvdmVybGF5X2luc2lk
ZV9kaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgIGFkZENhc2UoMSwgMiwgeydw
bHVnaW5fZXF1YWx6JzoxLCAnb3ZlcmxheV9pbnNpZGVfZGl2JzoxLCAnb3ZlcmxheV9lYXJsaWVy
JzoxLCBleHBlY3Q6J292ZXJsYXkgVU5ERVInfSk7CisgICAgYWRkQ2FzZSgyLCAyLCB7J292ZXJs
YXlfZWFybGllcic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgIGFkZENhc2UoMywg
MiwgeydvdmVybGF5X2VhcmxpZXInOjEsICdwbHVnaW5fbm9yZWxhdGl2ZSc6MSwgZXhwZWN0Oidv
dmVybGF5IE9WRVInfSk7CisgICAgYWRkQ2FzZSgwLCAzLCB7J3BsdWdpbl9ub3JlbGF0aXZlJzox
LCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICBhZGRDYXNlKDEsIDMsIHsnb3ZlcmxheV9l
YXJsaWVyJzoxLCAncGx1Z2luX25vcmVsYXRpdmUnOjEsICdwbHVnaW5faW5zaWRlX2Rpdic6MSwg
ZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgYWRkQ2FzZSgyLCAzLCB7J3BsdWdpbl9ub3Jl
bGF0aXZlJzoxLCAncGx1Z2luX2luc2lkZV9kaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30p
OworCisgICAgcnVuVGVzdCgpOworICB9CisKKyAgLy8gQXV0b21hdGlvbjogdHJ5IHRvIGNsaWNr
IG9uIGVhY2ggYnV0dG9uLgorICB2YXIgbmV4dF9pZF90b19jbGljayA9IDA7CisKKyAgZnVuY3Rp
b24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAg
c2V0VGltZW91dChkb05leHRDbGljaywgMCk7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gbW92
ZU1vdXNlT3ZlcihlbGVtX25hbWUpIHsKKyAgICB2YXIgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGVsZW1fbmFtZSk7CisgICAgdmFyIHggPSBlbGVtLm9mZnNldExlZnQgKyBlbGVtLnNj
cm9sbFdpZHRoIC8gMjsKKyAgICB2YXIgeSA9IGVsZW0ub2Zmc2V0VG9wICsgZWxlbS5zY3JvbGxI
ZWlnaHQgLyAyOworICAgIHZhciBvZmZzZXRQYXJlbnQgPSBlbGVtLm9mZnNldFBhcmVudDsKKyAg
ICB3aGlsZSAob2Zmc2V0UGFyZW50KSB7CisgICAgICB4ICs9IG9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgeSArPSBvZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgb2Zmc2V0UGFy
ZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDsKKyAgICB9CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oeCwgeSk7CisgIH0KKworICBmdW5jdGlvbiBkb05leHRDbGljaygpIHsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgaWYgKG5leHRfaWRfdG9fY2xpY2sgPCBleHBl
Y3RlZF9jbGlja3MubGVuZ3RoKSB7CisgICAgICBtb3ZlTW91c2VPdmVyKCdidXR0b24nICsgbmV4
dF9pZF90b19jbGljayk7CisgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgIG5l
eHRfaWRfdG9fY2xpY2srKzsKKyAgICAgIHNldFRpbWVvdXQoZG9OZXh0Q2xpY2ssIDApOworICAg
IH0gZWxzZSB7CisgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSwgMCk7CisgICAgfQorICB9
CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorCisgICAgPHA+
VGVzdCB0aGF0IGlmcmFtZSBzaGltcyBjYW4gYmUgdXNlZCB0byBvdmVybGF5IEhUTUwgYWJvdmUg
YQorICAgIHdpbmRvd2VkIHBsdWdpbi4gVGhlIHJlZCBzcXVhcmVzIHNob3VsZCBiZSBoaWRkZW4g
YnkgdGhlIGJsdWUKKyAgICBmbGFzaCBwbHVnaW5zLCBhbmQgdGhlIGdyZWVuIHNxdWFyZXMgc2hv
dWxkIGFwcGVhciBvdmVyIHRoZQorICAgIHBsdWdpbnMuIFRvIHRlc3QgaW50ZXJhY3RpdmVseSwg
Y2xpY2sgb3ZlciB0aGUgYnV0dG9ucyBvbiB0aGUKKyAgICBzcXVhcmVzLiBZb3Ugc2hvdWxkIG5v
dCBiZSBhYmxlIHRvIHJlYWNoIHRoZSByZWQgc3F1YXJlcycKKyAgICBidXR0b25zLjwvcD4KKwor
ICAgIDxwPlByaW50cyAiU1VDQ0VTUyIgb24gc3VjY2VzcywgIkZBSUxVUkUiIG9uIGZhaWx1cmUu
PC9wPgorICAgIDxkaXYgaWQ9b3V0cHV0Pk5PTkU8L2Rpdj4KKyAgICA8ZGl2IGlkPSJjb250YWlu
ZXIiIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7Ij48L2Rpdj4KKworPC9ib2R5PgorPC9odG1s
PgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGx1Z2lucy9pZnJhbWUtc2hpbXMu
aHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91
dFRlc3RzL3BsdWdpbnMvcmVzb3VyY2VzL3NpbXBsZV9ibGFuay5zd2YKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5u
b3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9
IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVz
dHMvcGx1Z2lucy9yZXNvdXJjZXMvc2ltcGxlX2JsYW5rLnN3ZgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2
bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCgpRMWRUQngwQUFBQjQy
aXRnNEdsZ1lKakd3TUREeU9ETXhNRHczNEdCZ1FFQUpQUURKQT09Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38936</attachid>
            <date>2009-09-02 11:49:16 -0700</date>
            <delta_ts>2009-09-03 10:50:27 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>iframe-shims.txt</filename>
            <type>text/plain</type>
            <size>10360</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ3OTg0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDktMDIgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4OTE0
CisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IHRvIHRlc3QgaWZyYW1lIHNoaW0gY2FuIGJlIHVz
ZWQKKyAgICAgICAgdG8gb3ZlcmxheSBodG1sIGFib3ZlIGEgd2luZG93ZWQgcGx1Z2luLiBJdCBj
aGVja3MKKyAgICAgICAgcHJlbXV0YXRpb25zIG9mIGlmcmFtZSBzaGltZXMgaW4gcmVsYXRpb25z
aGlwIHRvIAorICAgICAgICBwbHVnaW4uCisKKyAgICAgICAgKiBwbHVnaW5zL2lmcmFtZS1zaGlt
cy1leHBlY3RlZC50eHQ6IEFkZGVkIHdpdGggcHJvcGVydHkgc3ZuOmVvbC1zdHlsZS4KKyAgICAg
ICAgKiBwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sOiBBZGRlZCB3aXRoIHByb3BlcnR5IHN2bjpl
b2wtc3R5bGUuCisgICAgICAgICogcGx1Z2lucy9yZXNvdXJjZXMvc2ltcGxlX2JsYW5rLnN3Zjog
QWRkZWQgd2l0aCBwcm9wZXJ0eSBzdm46bWltZS10eXBlLgorCiAyMDA5LTA5LTAyICBCZW4gTXVy
ZG9jaCAgPGJlbm1AZ29vZ2xlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjg3MzcKSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1l
LXNoaW1zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5zL2lm
cmFtZS1zaGltcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbHVn
aW5zL2lmcmFtZS1zaGltcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIg
QEAKK1Rlc3QgdGhhdCBpZnJhbWUgc2hpbXMgY2FuIGJlIHVzZWQgdG8gb3ZlcmxheSBIVE1MIGFi
b3ZlIGEgd2luZG93ZWQgcGx1Z2luLiBUaGUgcmVkIHNxdWFyZXMgc2hvdWxkIGJlIGhpZGRlbiBi
eSB0aGUgYmx1ZSBmbGFzaCBwbHVnaW5zLCBhbmQgdGhlIGdyZWVuIHNxdWFyZXMgc2hvdWxkIGFw
cGVhciBvdmVyIHRoZSBwbHVnaW5zLiBUbyB0ZXN0IGludGVyYWN0aXZlbHksIGNsaWNrIG92ZXIg
dGhlIGJ1dHRvbnMgb24gdGhlIHNxdWFyZXMuIFlvdSBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVh
Y2ggdGhlIHJlZCBzcXVhcmVzJyBidXR0b25zLgorCitQcmludHMgIlNVQ0NFU1MiIG9uIHN1Y2Nl
c3MsICJGQUlMVVJFIiBvbiBmYWlsdXJlLgorCitTVUNDRVNTCisKKworCisKKworCisKKworCisK
KworCisKKworCisKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGx1Z2lucy9p
ZnJhbWUtc2hpbXMtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQog
ICArIG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjM2IEBACis8aHRtbD48aGVhZD4KKzxzY3JpcHQ+CisgICAgdmFy
IGV4cGVjdGVkX2NsaWNrcyA9IFtdOworICAgIHZhciBjbGlja3MgPSBbXTsKKworICAgIHZhciBI
RUlHSFQgPSAxMDA7CisgICAgdmFyIFdJRFRIID0gMTAwOworICAgIHZhciBpdGVtcyA9IDA7CisK
KyAgICBmdW5jdGlvbiBtYWtlUGx1Z2luRWxlbWVudCgpIHsKKyAgICAgIHZhciBmID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZW1iZWQnKTsKKyAgICAgIGYuc2V0QXR0cmlidXRlKCdpZCcsICdz
d2ZfZW1iZWRfJyArIGl0ZW1zKTsKKyAgICAgIGYuc2V0QXR0cmlidXRlKCd3aWR0aCcsIFdJRFRI
ICsgJycpOworICAgICAgZi5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIEhFSUdIVCArICcnKTsKKyAg
ICAgIGYuc2V0QXR0cmlidXRlKCd3bW9kZScsICd3aW5kb3cnKTsKKyAgICAgIGYuc2V0QXR0cmli
dXRlKCdsb29wJywgJ2ZhbHNlJyk7CisgICAgICBmLnNldEF0dHJpYnV0ZSgnc3JjJywgJ3Jlc291
cmNlcy9zaW1wbGVfYmxhbmsuc3dmJyk7CisgICAgICBmLnNldEF0dHJpYnV0ZSgndHlwZScsICdh
cHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCcpOworICAgICAgcmV0dXJuIGY7CisgICAgfQor
CisgICAgZnVuY3Rpb24gbWFrZUlmcmFtZURpdigpIHsKKyAgICAgIHZhciBpID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgICBpLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29s
dXRlJzsKKyAgICAgIGkuc3R5bGUudG9wID0gJzEwcHgnOworICAgICAgaS5zdHlsZS5sZWZ0ID0g
JzMwcHgnOworICAgICAgaS5zdHlsZS53aWR0aCA9ICc4MHB4JzsKKyAgICAgIGkuc3R5bGUuaGVp
Z2h0ID0gJzgwcHgnOworICAgICAgaS5zdHlsZS5maWx0ZXI9J3Byb2dpZDpEWEltYWdlVHJhbnNm
b3JtLk1pY3Jvc29mdC5BbHBoYShzdHlsZT0wLG9wYWNpdHk9MCknOworICAgICAgaS5zZXRBdHRy
aWJ1dGUoJ2ZyYW1lYm9yZGVyJywgJzAnKTsKKyAgICAgIGkuc2V0QXR0cmlidXRlKCdzcmMnLCAn
amF2YXNjcmlwdDp2b2lkKDApOycpOworICAgICAgcmV0dXJuIGk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gbWFrZU92ZXJsYXlEaXYoY29sb3IsIGNhc2VfaWQpIHsKKyAgICAgIHZhciBvID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICBvLnN0eWxlLnBvc2l0aW9uID0gJ2Fi
c29sdXRlJzsKKyAgICAgIG8uc3R5bGUudG9wID0gJzEwcHgnOworICAgICAgby5zdHlsZS5sZWZ0
ID0gJzMwcHgnOworICAgICAgby5zdHlsZS53aWR0aCA9ICc4MHB4JzsKKyAgICAgIG8uc3R5bGUu
aGVpZ2h0ID0gJzgwcHgnOworICAgICAgby5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsK
KyAgICAgIG8uc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJzsKKyAgICAgIG8uaW5uZXJIVE1MID0g
JzxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJidXR0b24nICsgY2FzZV9pZCArICciICcgKworICAg
ICAgICAgICdvbmNsaWNrPSJkb0NsaWNrKCcgKyBjYXNlX2lkICsKKyAgICAgICAgICAnKTsiIHZh
bHVlPSJjbGlja21lIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwOyBsZWZ0OiAx
MDsgd2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiLz4nOworICAgICAgcmV0dXJuIG87CisgICAg
fQorCisgICAgZnVuY3Rpb24gYWRkQ2FzZSh4LCB5LCB0YWdzKSB7CisgICAgICB2YXIgY2FzZV9p
ZCA9IGl0ZW1zOworICAgICAgaXRlbXMrKzsKKworICAgICAgdmFyIGV4cGVjdF9jbGlja2FibGUg
PSB0YWdzLmV4cGVjdCAmJiB0YWdzLmV4cGVjdC5pbmRleE9mKCdVTkRFUicpID09IC0xOworICAg
ICAgZXhwZWN0ZWRfY2xpY2tzW2Nhc2VfaWRdID0gZXhwZWN0X2NsaWNrYWJsZTsKKworICAgICAg
dmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKTsKKyAg
ICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICByb290
LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICAgIHJvb3Quc3R5bGUubGVmdCA9IHgg
KiAoV0lEVEggKyA0MCkgKyAncHgnOworICAgICAgcm9vdC5zdHlsZS50b3AgPSB5ICogKEhFSUdI
VCArIDIwKSArICdweCc7CisgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAg
ICAgIHZhciBwbHVnaW5fZGl2X3o7CisgICAgICB2YXIgb3ZlcmxheV9kaXZfel9pZnJhbWU7Cisg
ICAgICB2YXIgb3ZlcmxheV9kaXZfel9vdmVybGF5OworICAgICAgaWYgKHRhZ3MucGx1Z2luX2xv
d2VyeikgeworICAgICAgICBwbHVnaW5fZGl2X3ogPSAxMDA7CisgICAgICAgIG92ZXJsYXlfZGl2
X3pfaWZyYW1lID0gMjAwOworICAgICAgICBvdmVybGF5X2Rpdl96X292ZXJsYXkgPSAyMDE7Cisg
ICAgICB9IGVsc2UgaWYgKHRhZ3MucGx1Z2luX2hpZ2hlcnopIHsKKyAgICAgICAgcGx1Z2luX2Rp
dl96ID0gMjAwOworICAgICAgICBvdmVybGF5X2Rpdl96X2lmcmFtZSA9IDEwMDsKKyAgICAgICAg
b3ZlcmxheV9kaXZfel9vdmVybGF5ID0gMTAxOworICAgICAgfSBlbHNlIGlmICh0YWdzLnBsdWdp
bl9lcXVhbHopIHsKKyAgICAgICAgcGx1Z2luX2Rpdl96ID0gMTAwOworICAgICAgICBvdmVybGF5
X2Rpdl96X2lmcmFtZSA9IDEwMDsKKyAgICAgICAgb3ZlcmxheV9kaXZfel9vdmVybGF5ID0gMTAw
OworICAgICAgfQorCisgICAgdmFyIGFwcGVuZF9wbHVnaW4gPSBmdW5jdGlvbigpIHsKKyAgICAg
IHZhciBwZCA9IG1ha2VQbHVnaW5FbGVtZW50KCk7CisgICAgICBpZiAodGFncy5wbHVnaW5faW5z
aWRlX2RpdiB8fCBwbHVnaW5fZGl2X3opIHsKKyAgICAgICAgdmFyIHBhcmVudGRpdiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBwYXJlbnRkaXYuYXBwZW5kQ2hpbGQo
cGQpCisgICAgICAgIGlmICghdGFncy5wbHVnaW5fbm9yZWxhdGl2ZSkgeworICAgICAgICAgIHBh
cmVudGRpdi5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAocGx1Z2luX2Rpdl96KSB7CisgICAgICAgICAgcGFyZW50ZGl2LnN0eWxlLnpJbmRleCA9
IHBsdWdpbl9kaXZfejsKKyAgICAgICAgfQorICAgICAgICByb290LmFwcGVuZENoaWxkKHBhcmVu
dGRpdik7CisgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXRhZ3MucGx1Z2luX25vcmVsYXRp
dmUpIHsKKyAgICAgICAgICBwZC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CisgICAgICAg
IH0KKyAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChwZCk7CisgICAgICB9CisgICAgfTsKKworICAg
IHZhciBhcHBlbmRfb3ZlcmxheSA9IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGlkID0gbWFrZUlm
cmFtZURpdigpOworICAgICAgaWYgKG92ZXJsYXlfZGl2X3pfaWZyYW1lKSB7CisgICAgICAgIGlk
LnN0eWxlLnpJbmRleCA9IG92ZXJsYXlfZGl2X3pfaWZyYW1lOworICAgICAgfQorCisgICAgICB2
YXIgb2QgPSBtYWtlT3ZlcmxheURpdihleHBlY3RfY2xpY2thYmxlID8gJ2dyZWVuJyA6ICdyZWQn
LCBjYXNlX2lkKTsKKyAgICAgIG9kLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICAg
IGlmIChvdmVybGF5X2Rpdl96X292ZXJsYXkpIHsKKyAgICAgICAgb2Quc3R5bGUuekluZGV4ID0g
b3ZlcmxheV9kaXZfel9vdmVybGF5OworICAgICAgfQorCisgICAgICBpZiAodGFncy5vdmVybGF5
X2luc2lkZV9kaXYpIHsKKyAgICAgICAgdmFyIHBhcmVudGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgICAgICBpZiAob3ZlcmxheV9kaXZfel9vdmVybGF5KSB7CisgICAg
ICAgICAgcGFyZW50ZGl2LnN0eWxlLnpJbmRleCA9IG92ZXJsYXlfZGl2X3pfb3ZlcmxheTsKKyAg
ICAgICAgfQorCisgICAgICAgIHBhcmVudGRpdi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7
CisgICAgICAgIHBhcmVudGRpdi5zdHlsZS50b3AgPSAnMHB4JzsKKyAgICAgICAgcGFyZW50ZGl2
LnN0eWxlLmxlZnQgPSAnMHB4JzsKKyAgICAgICAgcGFyZW50ZGl2LmFwcGVuZENoaWxkKGlkKTsK
KyAgICAgICAgcGFyZW50ZGl2LmFwcGVuZENoaWxkKG9kKTsKKyAgICAgICAgcm9vdC5hcHBlbmRD
aGlsZChwYXJlbnRkaXYpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcm9vdC5hcHBlbmRDaGls
ZChpZCk7CisgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQob2QpOworICAgICAgfQorICAgIH07CisK
KyAgICBpZiAodGFncy5vdmVybGF5X2VhcmxpZXIpIHsKKyAgICAgIGFwcGVuZF9vdmVybGF5KCk7
CisgICAgICBhcHBlbmRfcGx1Z2luKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGFwcGVuZF9wbHVn
aW4oKTsKKyAgICAgIGFwcGVuZF9vdmVybGF5KCk7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24g
ZG9DbGljayhpZCkgeworICAgIGNsaWNrc1tpZF0gPSB0cnVlOworCisgICAgLy8gQ2hlY2sgc3Vj
Y2Vzcy9mYWlsdXJlLgorICAgIHZhciBvdXRwdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
b3V0cHV0Iik7CisgICAgdmFyIHdhaXRpbmdfZm9yX21vcmVfY2xpY2tzID0gZmFsc2U7CisgICAg
dmFyIGs7CisgICAgZm9yIChrIGluIGV4cGVjdGVkX2NsaWNrcykgeworICAgICAgaWYgKGV4cGVj
dGVkX2NsaWNrc1trXSAmJiAhY2xpY2tzW2tdKSB7CisgICAgICAgIHdhaXRpbmdfZm9yX21vcmVf
Y2xpY2tzID0gdHJ1ZTsKKyAgICAgIH0gZWxzZSBpZiAoIWV4cGVjdGVkX2NsaWNrc1trXSAmJiBj
bGlja3Nba10pIHsKKyAgICAgICAgb3V0cHV0LmlubmVySFRNTCA9ICdGQUlMVVJFJzsKKyAgICAg
ICAgcmV0dXJuOworICAgICAgfQorICAgIH0KKworICAgIGlmICghd2FpdGluZ19mb3JfbW9yZV9j
bGlja3MpIHsKKyAgICAgIG91dHB1dC5pbm5lckhUTUwgPSAnU1VDQ0VTUyc7CisgICAgICByZXR1
cm47CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICBhZGRDYXNlKDAsIDAs
IHtleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICBhZGRDYXNlKDEsIDAsIHsnb3ZlcmxheV9l
YXJsaWVyJzoxLCAnb3ZlcmxheV9pbnNpZGVfZGl2JzogMSwgJ3BsdWdpbl9pbnNpZGVfZGl2Jzox
LCBleHBlY3Q6J292ZXJsYXkgVU5ERVInfSk7CisgICAgYWRkQ2FzZSgyLCAwLCB7J3BsdWdpbl9s
b3dlcnonOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgIGFkZENhc2UoMywgMCwgeydw
bHVnaW5faGlnaGVyeic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgIGFkZENhc2Uo
MCwgMSwgeydvdmVybGF5X2luc2lkZV9kaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOwor
ICAgIGFkZENhc2UoMSwgMSwgeydwbHVnaW5fbG93ZXJ6JzoxLCAnb3ZlcmxheV9pbnNpZGVfZGl2
JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICBhZGRDYXNlKDIsIDEsIHsncGx1Z2lu
X2hpZ2hlcnonOjEsICdvdmVybGF5X2luc2lkZV9kaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRF
Uid9KTsKKyAgICBhZGRDYXNlKDAsIDIsIHsncGx1Z2luX2VxdWFseic6MSwgJ292ZXJsYXlfaW5z
aWRlX2Rpdic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgYWRkQ2FzZSgxLCAyLCB7
J3BsdWdpbl9lcXVhbHonOjEsICdvdmVybGF5X2luc2lkZV9kaXYnOjEsICdvdmVybGF5X2Vhcmxp
ZXInOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRFUid9KTsKKyAgICBhZGRDYXNlKDIsIDIsIHsnb3Zl
cmxheV9lYXJsaWVyJzoxLCBleHBlY3Q6J292ZXJsYXkgVU5ERVInfSk7CisgICAgYWRkQ2FzZSgz
LCAyLCB7J292ZXJsYXlfZWFybGllcic6MSwgJ3BsdWdpbl9ub3JlbGF0aXZlJzoxLCBleHBlY3Q6
J292ZXJsYXkgT1ZFUid9KTsKKyAgICBhZGRDYXNlKDAsIDMsIHsncGx1Z2luX25vcmVsYXRpdmUn
OjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgIGFkZENhc2UoMSwgMywgeydvdmVybGF5
X2VhcmxpZXInOjEsICdwbHVnaW5fbm9yZWxhdGl2ZSc6MSwgJ3BsdWdpbl9pbnNpZGVfZGl2Jzox
LCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICBhZGRDYXNlKDIsIDMsIHsncGx1Z2luX25v
cmVsYXRpdmUnOjEsICdwbHVnaW5faW5zaWRlX2Rpdic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVIn
fSk7CisKKyAgICBydW5UZXN0KCk7CisgIH0KKworICAvLyBBdXRvbWF0aW9uOiB0cnkgdG8gY2xp
Y2sgb24gZWFjaCBidXR0b24uCisgIHZhciBuZXh0X2lkX3RvX2NsaWNrID0gMDsKKworICBmdW5j
dGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYg
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICBzZXRUaW1lb3V0KGRvTmV4dENsaWNrLCAwKTsKKyAgICB9CisgIH0KKworICBmdW5jdGlvbiBt
b3ZlTW91c2VPdmVyKGVsZW1fbmFtZSkgeworICAgIHZhciBlbGVtID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoZWxlbV9uYW1lKTsKKyAgICB2YXIgeCA9IGVsZW0ub2Zmc2V0TGVmdCArIGVsZW0u
c2Nyb2xsV2lkdGggLyAyOworICAgIHZhciB5ID0gZWxlbS5vZmZzZXRUb3AgKyBlbGVtLnNjcm9s
bEhlaWdodCAvIDI7CisgICAgdmFyIG9mZnNldFBhcmVudCA9IGVsZW0ub2Zmc2V0UGFyZW50Owor
ICAgIHdoaWxlIChvZmZzZXRQYXJlbnQpIHsKKyAgICAgIHggKz0gb2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICB5ICs9IG9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICBvZmZzZXRQ
YXJlbnQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50OworICAgIH0KKyAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgfQorCisgIGZ1bmN0aW9uIGRvTmV4dENsaWNrKCkgewor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBpZiAobmV4dF9pZF90b19jbGljayA8IGV4
cGVjdGVkX2NsaWNrcy5sZW5ndGgpIHsKKyAgICAgIG1vdmVNb3VzZU92ZXIoJ2J1dHRvbicgKyBu
ZXh0X2lkX3RvX2NsaWNrKTsKKyAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAg
bmV4dF9pZF90b19jbGljaysrOworICAgICAgc2V0VGltZW91dChkb05leHRDbGljaywgMCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9LCAwKTsKKyAgICB9Cisg
IH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImluaXQoKSI+CisKKyAgICA8
cD5UZXN0IHRoYXQgaWZyYW1lIHNoaW1zIGNhbiBiZSB1c2VkIHRvIG92ZXJsYXkgSFRNTCBhYm92
ZSBhCisgICAgd2luZG93ZWQgcGx1Z2luLiBUaGUgcmVkIHNxdWFyZXMgc2hvdWxkIGJlIGhpZGRl
biBieSB0aGUgYmx1ZQorICAgIGZsYXNoIHBsdWdpbnMsIGFuZCB0aGUgZ3JlZW4gc3F1YXJlcyBz
aG91bGQgYXBwZWFyIG92ZXIgdGhlCisgICAgcGx1Z2lucy4gVG8gdGVzdCBpbnRlcmFjdGl2ZWx5
LCBjbGljayBvdmVyIHRoZSBidXR0b25zIG9uIHRoZQorICAgIHNxdWFyZXMuIFlvdSBzaG91bGQg
bm90IGJlIGFibGUgdG8gcmVhY2ggdGhlIHJlZCBzcXVhcmVzJworICAgIGJ1dHRvbnMuPC9wPgor
CisgICAgPHA+UHJpbnRzICJTVUNDRVNTIiBvbiBzdWNjZXNzLCAiRkFJTFVSRSIgb24gZmFpbHVy
ZS48L3A+CisgICAgPGRpdiBpZD1vdXRwdXQ+Tk9ORTwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnRh
aW5lciIgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsiPjwvZGl2PgorCis8L2JvZHk+Cis8L2h0
bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbHVnaW5zL2lmcmFtZS1zaGlt
cy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5
b3V0VGVzdHMvcGx1Z2lucy9yZXNvdXJjZXMvc2ltcGxlX2JsYW5rLnN3Zgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNh
bm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBl
ID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy9wbHVnaW5zL3Jlc291cmNlcy9zaW1wbGVfYmxhbmsuc3dmCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTog
c3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKClExZFRCeDBBQUFC
NDJpdGc0R2xnWUpqR3dNRER5T0RNeE1EdzM0R0JnUUVBSlBRREpBPT0KCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38956</attachid>
            <date>2009-09-02 17:41:41 -0700</date>
            <delta_ts>2009-09-03 10:49:12 -0700</delta_ts>
            <desc>Updated patch (indent 4 spaces instead of 2)</desc>
            <filename>iframe-shims.txt</filename>
            <type>text/plain</type>
            <size>11196</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ3OTg0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDktMDIgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4OTE0
CisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IHRvIHRlc3QgaWZyYW1lIHNoaW0gY2FuIGJlIHVz
ZWQKKyAgICAgICAgdG8gb3ZlcmxheSBodG1sIGFib3ZlIGEgd2luZG93ZWQgcGx1Z2luLiBJdCBj
aGVja3MKKyAgICAgICAgcHJlbXV0YXRpb25zIG9mIGlmcmFtZSBzaGltZXMgaW4gcmVsYXRpb25z
aGlwIHRvIAorICAgICAgICBwbHVnaW4uCisKKyAgICAgICAgKiBwbHVnaW5zL2lmcmFtZS1zaGlt
cy1leHBlY3RlZC50eHQ6IEFkZGVkIHdpdGggcHJvcGVydHkgc3ZuOmVvbC1zdHlsZS4KKyAgICAg
ICAgKiBwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sOiBBZGRlZCB3aXRoIHByb3BlcnR5IHN2bjpl
b2wtc3R5bGUuCisgICAgICAgICogcGx1Z2lucy9yZXNvdXJjZXMvc2ltcGxlX2JsYW5rLnN3Zjog
QWRkZWQgd2l0aCBwcm9wZXJ0eSBzdm46bWltZS10eXBlLgorCiAyMDA5LTA5LTAyICBCZW4gTXVy
ZG9jaCAgPGJlbm1AZ29vZ2xlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjg3MzcKSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1l
LXNoaW1zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5zL2lm
cmFtZS1zaGltcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbHVn
aW5zL2lmcmFtZS1zaGltcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIg
QEAKK1Rlc3QgdGhhdCBpZnJhbWUgc2hpbXMgY2FuIGJlIHVzZWQgdG8gb3ZlcmxheSBIVE1MIGFi
b3ZlIGEgd2luZG93ZWQgcGx1Z2luLiBUaGUgcmVkIHNxdWFyZXMgc2hvdWxkIGJlIGhpZGRlbiBi
eSB0aGUgYmx1ZSBmbGFzaCBwbHVnaW5zLCBhbmQgdGhlIGdyZWVuIHNxdWFyZXMgc2hvdWxkIGFw
cGVhciBvdmVyIHRoZSBwbHVnaW5zLiBUbyB0ZXN0IGludGVyYWN0aXZlbHksIGNsaWNrIG92ZXIg
dGhlIGJ1dHRvbnMgb24gdGhlIHNxdWFyZXMuIFlvdSBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVh
Y2ggdGhlIHJlZCBzcXVhcmVzJyBidXR0b25zLgorCitQcmludHMgIlNVQ0NFU1MiIG9uIHN1Y2Nl
c3MsICJGQUlMVVJFIiBvbiBmYWlsdXJlLgorCitTVUNDRVNTCisKKworCisKKworCisKKworCisK
KworCisKKworCisKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGx1Z2lucy9p
ZnJhbWUtc2hpbXMtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQog
ICArIG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjQzIEBACis8aHRtbD48aGVhZD4KKzxzY3JpcHQ+CisgICAgdmFy
IGV4cGVjdGVkX2NsaWNrcyA9IFtdOworICAgIHZhciBjbGlja3MgPSBbXTsKKworICAgIHZhciBI
RUlHSFQgPSAxMDA7CisgICAgdmFyIFdJRFRIID0gMTAwOworICAgIHZhciBpdGVtcyA9IDA7CisK
KyAgICBmdW5jdGlvbiBtYWtlUGx1Z2luRWxlbWVudCgpCisgICAgeworICAgICAgICB2YXIgZiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2VtYmVkJyk7CisgICAgICAgIGYuc2V0QXR0cmlidXRl
KCdpZCcsICdzd2ZfZW1iZWRfJyArIGl0ZW1zKTsKKyAgICAgICAgZi5zZXRBdHRyaWJ1dGUoJ3dp
ZHRoJywgV0lEVEggKyAnJyk7CisgICAgICAgIGYuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBIRUlH
SFQgKyAnJyk7CisgICAgICAgIGYuc2V0QXR0cmlidXRlKCd3bW9kZScsICd3aW5kb3cnKTsKKyAg
ICAgICAgZi5zZXRBdHRyaWJ1dGUoJ2xvb3AnLCAnZmFsc2UnKTsKKyAgICAgICAgZi5zZXRBdHRy
aWJ1dGUoJ3NyYycsICdyZXNvdXJjZXMvc2ltcGxlX2JsYW5rLnN3ZicpOworICAgICAgICBmLnNl
dEF0dHJpYnV0ZSgndHlwZScsICdhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCcpOworICAg
ICAgICByZXR1cm4gZjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtYWtlSWZyYW1lRGl2KCkKKyAg
ICB7CisgICAgICAgIHZhciBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7Cisg
ICAgICAgIGkuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOworICAgICAgICBpLnN0eWxlLnRv
cCA9ICcxMHB4JzsKKyAgICAgICAgaS5zdHlsZS5sZWZ0ID0gJzMwcHgnOworICAgICAgICBpLnN0
eWxlLndpZHRoID0gJzgwcHgnOworICAgICAgICBpLnN0eWxlLmhlaWdodCA9ICc4MHB4JzsKKyAg
ICAgICAgaS5zdHlsZS5maWx0ZXI9J3Byb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5B
bHBoYShzdHlsZT0wLG9wYWNpdHk9MCknOworICAgICAgICBpLnNldEF0dHJpYnV0ZSgnZnJhbWVi
b3JkZXInLCAnMCcpOworICAgICAgICBpLnNldEF0dHJpYnV0ZSgnc3JjJywgJ2phdmFzY3JpcHQ6
dm9pZCgwKTsnKTsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisgICAgZnVuY3Rpb24gbWFr
ZU92ZXJsYXlEaXYoY29sb3IsIGNhc2VfaWQpCisgICAgeworICAgICAgICB2YXIgbyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBvLnN0eWxlLnBvc2l0aW9uID0gJ2Fi
c29sdXRlJzsKKyAgICAgICAgby5zdHlsZS50b3AgPSAnMTBweCc7CisgICAgICAgIG8uc3R5bGUu
bGVmdCA9ICczMHB4JzsKKyAgICAgICAgby5zdHlsZS53aWR0aCA9ICc4MHB4JzsKKyAgICAgICAg
by5zdHlsZS5oZWlnaHQgPSAnODBweCc7CisgICAgICAgIG8uc3R5bGUuYmFja2dyb3VuZENvbG9y
ID0gY29sb3I7CisgICAgICAgIG8uc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJzsKKyAgICAgICAg
by5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImJ1dHRvbicgKyBjYXNlX2lk
ICsgJyIgJyArCisgICAgICAgICAgICAnb25jbGljaz0iZG9DbGljaygnICsgY2FzZV9pZCArCisg
ICAgICAgICAgICAnKTsiIHZhbHVlPSJjbGlja21lIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDEwOyBsZWZ0OiAxMDsgd2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiLz4nOworICAg
ICAgICByZXR1cm4gbzsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRDYXNlKHgsIHksIHRhZ3Mp
CisgICAgeworICAgICAgICB2YXIgY2FzZV9pZCA9IGl0ZW1zOworICAgICAgICBpdGVtcysrOwor
CisgICAgICAgIHZhciBleHBlY3RfY2xpY2thYmxlID0gdGFncy5leHBlY3QgJiYgdGFncy5leHBl
Y3QuaW5kZXhPZignVU5ERVInKSA9PSAtMTsKKyAgICAgICAgZXhwZWN0ZWRfY2xpY2tzW2Nhc2Vf
aWRdID0gZXhwZWN0X2NsaWNrYWJsZTsKKworICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOworICAgICAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICByb290LnN0eWxlLnBvc2l0aW9uID0g
J2Fic29sdXRlJzsKKyAgICAgICAgcm9vdC5zdHlsZS5sZWZ0ID0geCAqIChXSURUSCArIDQwKSAr
ICdweCc7CisgICAgICAgIHJvb3Quc3R5bGUudG9wID0geSAqIChIRUlHSFQgKyAyMCkgKyAncHgn
OworICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICAgICAgdmFyIHBs
dWdpbl9kaXZfejsKKyAgICAgICAgdmFyIG92ZXJsYXlfZGl2X3pfaWZyYW1lOworICAgICAgICB2
YXIgb3ZlcmxheV9kaXZfel9vdmVybGF5OworICAgICAgICBpZiAodGFncy5wbHVnaW5fbG93ZXJ6
KSB7CisgICAgICAgICAgICBwbHVnaW5fZGl2X3ogPSAxMDA7CisgICAgICAgICAgICBvdmVybGF5
X2Rpdl96X2lmcmFtZSA9IDIwMDsKKyAgICAgICAgICAgIG92ZXJsYXlfZGl2X3pfb3ZlcmxheSA9
IDIwMTsKKyAgICAgICAgfSBlbHNlIGlmICh0YWdzLnBsdWdpbl9oaWdoZXJ6KSB7CisgICAgICAg
ICAgICBwbHVnaW5fZGl2X3ogPSAyMDA7CisgICAgICAgICAgICBvdmVybGF5X2Rpdl96X2lmcmFt
ZSA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJsYXlfZGl2X3pfb3ZlcmxheSA9IDEwMTsKKyAgICAg
ICAgfSBlbHNlIGlmICh0YWdzLnBsdWdpbl9lcXVhbHopIHsKKyAgICAgICAgICAgIHBsdWdpbl9k
aXZfeiA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJsYXlfZGl2X3pfaWZyYW1lID0gMTAwOworICAg
ICAgICAgICAgb3ZlcmxheV9kaXZfel9vdmVybGF5ID0gMTAwOworICAgICAgICB9CisKKyAgICAg
ICAgdmFyIGFwcGVuZF9wbHVnaW4gPSBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwZCA9IG1ha2VQbHVnaW5FbGVtZW50KCk7CisgICAgICAgICAgICBpZiAodGFncy5wbHVn
aW5faW5zaWRlX2RpdiB8fCBwbHVnaW5fZGl2X3opIHsKKyAgICAgICAgICAgICAgICB2YXIgcGFy
ZW50ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICAgICAg
cGFyZW50ZGl2LmFwcGVuZENoaWxkKHBkKQorICAgICAgICAgICAgICAgIGlmICghdGFncy5wbHVn
aW5fbm9yZWxhdGl2ZSkgeworICAgICAgICAgICAgICAgICAgICBwYXJlbnRkaXYuc3R5bGUucG9z
aXRpb24gPSAncmVsYXRpdmUnOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGlmIChwbHVnaW5fZGl2X3opIHsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50ZGl2LnN0eWxl
LnpJbmRleCA9IHBsdWdpbl9kaXZfejsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgcm9vdC5hcHBlbmRDaGlsZChwYXJlbnRkaXYpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIXRhZ3MucGx1Z2luX25vcmVsYXRpdmUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcGQuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICByb290LmFwcGVuZENoaWxkKHBkKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfTsKKworICAgICAgICB2YXIgYXBwZW5kX292ZXJsYXkgPSBmdW5jdGlvbigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZCA9IG1ha2VJZnJhbWVEaXYoKTsKKyAgICAgICAg
ICAgIGlmIChvdmVybGF5X2Rpdl96X2lmcmFtZSkgeworICAgICAgICAgICAgICAgIGlkLnN0eWxl
LnpJbmRleCA9IG92ZXJsYXlfZGl2X3pfaWZyYW1lOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgb2QgPSBtYWtlT3ZlcmxheURpdihleHBlY3RfY2xpY2thYmxlID8gJ2dyZWVuJyA6
ICdyZWQnLCBjYXNlX2lkKTsKKyAgICAgICAgICAgIG9kLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29s
dXRlJzsKKyAgICAgICAgICAgIGlmIChvdmVybGF5X2Rpdl96X292ZXJsYXkpIHsKKyAgICAgICAg
ICAgIG9kLnN0eWxlLnpJbmRleCA9IG92ZXJsYXlfZGl2X3pfb3ZlcmxheTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKHRhZ3Mub3ZlcmxheV9pbnNpZGVfZGl2KSB7CisgICAgICAg
ICAgICAgICAgdmFyIHBhcmVudGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgICAgICAgICAgICAgIGlmIChvdmVybGF5X2Rpdl96X292ZXJsYXkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcGFyZW50ZGl2LnN0eWxlLnpJbmRleCA9IG92ZXJsYXlfZGl2X3pfb3ZlcmxheTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBwYXJlbnRkaXYuc3R5bGUucG9z
aXRpb24gPSAnYWJzb2x1dGUnOworICAgICAgICAgICAgICAgIHBhcmVudGRpdi5zdHlsZS50b3Ag
PSAnMHB4JzsKKyAgICAgICAgICAgICAgICBwYXJlbnRkaXYuc3R5bGUubGVmdCA9ICcwcHgnOwor
ICAgICAgICAgICAgICAgIHBhcmVudGRpdi5hcHBlbmRDaGlsZChpZCk7CisgICAgICAgICAgICAg
ICAgcGFyZW50ZGl2LmFwcGVuZENoaWxkKG9kKTsKKyAgICAgICAgICAgICAgICByb290LmFwcGVu
ZENoaWxkKHBhcmVudGRpdik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHJvb3QuYXBwZW5kQ2hpbGQoaWQpOworICAgICAgICAgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQo
b2QpOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh0YWdzLm92ZXJs
YXlfZWFybGllcikgeworICAgICAgICAgICAgYXBwZW5kX292ZXJsYXkoKTsKKyAgICAgICAgICAg
IGFwcGVuZF9wbHVnaW4oKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFwcGVuZF9w
bHVnaW4oKTsKKyAgICAgICAgICAgIGFwcGVuZF9vdmVybGF5KCk7CisgICAgICAgIH0KKyAgICAg
fQorCisgICAgZnVuY3Rpb24gZG9DbGljayhpZCkKKyAgICB7CisgICAgICAgIGNsaWNrc1tpZF0g
PSB0cnVlOworCisgICAgICAgIC8vIENoZWNrIHN1Y2Nlc3MvZmFpbHVyZS4KKyAgICAgICAgdmFy
IG91dHB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKTsKKyAgICAgICAgdmFy
IHdhaXRpbmdfZm9yX21vcmVfY2xpY2tzID0gZmFsc2U7CisgICAgICAgIHZhciBrOworICAgICAg
ICBmb3IgKGsgaW4gZXhwZWN0ZWRfY2xpY2tzKSB7CisgICAgICAgICAgICBpZiAoZXhwZWN0ZWRf
Y2xpY2tzW2tdICYmICFjbGlja3Nba10pIHsKKyAgICAgICAgICAgICAgICB3YWl0aW5nX2Zvcl9t
b3JlX2NsaWNrcyA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFleHBlY3RlZF9jbGlj
a3Nba10gJiYgY2xpY2tzW2tdKSB7CisgICAgICAgICAgICAgICAgb3V0cHV0LmlubmVySFRNTCA9
ICdGQUlMVVJFJzsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIXdhaXRpbmdfZm9yX21vcmVfY2xpY2tzKSB7CisgICAgICAg
ICAgICBvdXRwdXQuaW5uZXJIVE1MID0gJ1NVQ0NFU1MnOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICAgICAgYWRkQ2Fz
ZSgwLCAwLCB7ZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMSwgMCwg
eydvdmVybGF5X2VhcmxpZXInOjEsICdvdmVybGF5X2luc2lkZV9kaXYnOiAxLCAncGx1Z2luX2lu
c2lkZV9kaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgy
LCAwLCB7J3BsdWdpbl9sb3dlcnonOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAg
ICBhZGRDYXNlKDMsIDAsIHsncGx1Z2luX2hpZ2hlcnonOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRF
Uid9KTsKKyAgICAgICAgYWRkQ2FzZSgwLCAxLCB7J292ZXJsYXlfaW5zaWRlX2Rpdic6MSwgZXhw
ZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMSwgMSwgeydwbHVnaW5fbG93
ZXJ6JzoxLCAnb3ZlcmxheV9pbnNpZGVfZGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsK
KyAgICAgICAgYWRkQ2FzZSgyLCAxLCB7J3BsdWdpbl9oaWdoZXJ6JzoxLCAnb3ZlcmxheV9pbnNp
ZGVfZGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgVU5ERVInfSk7CisgICAgICAgIGFkZENhc2UoMCwg
MiwgeydwbHVnaW5fZXF1YWx6JzoxLCAnb3ZlcmxheV9pbnNpZGVfZGl2JzoxLCBleHBlY3Q6J292
ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgxLCAyLCB7J3BsdWdpbl9lcXVhbHonOjEs
ICdvdmVybGF5X2luc2lkZV9kaXYnOjEsICdvdmVybGF5X2VhcmxpZXInOjEsIGV4cGVjdDonb3Zl
cmxheSBVTkRFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgyLCAyLCB7J292ZXJsYXlfZWFybGllcic6
MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgICAgICBhZGRDYXNlKDMsIDIsIHsnb3Zl
cmxheV9lYXJsaWVyJzoxLCAncGx1Z2luX25vcmVsYXRpdmUnOjEsIGV4cGVjdDonb3ZlcmxheSBP
VkVSJ30pOworICAgICAgICBhZGRDYXNlKDAsIDMsIHsncGx1Z2luX25vcmVsYXRpdmUnOjEsIGV4
cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBhZGRDYXNlKDEsIDMsIHsnb3ZlcmxheV9l
YXJsaWVyJzoxLCAncGx1Z2luX25vcmVsYXRpdmUnOjEsICdwbHVnaW5faW5zaWRlX2Rpdic6MSwg
ZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMiwgMywgeydwbHVnaW5f
bm9yZWxhdGl2ZSc6MSwgJ3BsdWdpbl9pbnNpZGVfZGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZF
Uid9KTsKKworICAgICAgICBydW5UZXN0KCk7CisgICAgfQorCisgICAgLy8gQXV0b21hdGlvbjog
dHJ5IHRvIGNsaWNrIG9uIGVhY2ggYnV0dG9uLgorICAgIHZhciBuZXh0X2lkX3RvX2NsaWNrID0g
MDsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGRvTmV4dENs
aWNrLCAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIG1vdmVNb3VzZU92ZXIo
ZWxlbV9uYW1lKSB7CisgICAgICAgIHZhciBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ZWxlbV9uYW1lKTsKKyAgICAgICAgdmFyIHggPSBlbGVtLm9mZnNldExlZnQgKyBlbGVtLnNjcm9s
bFdpZHRoIC8gMjsKKyAgICAgICAgdmFyIHkgPSBlbGVtLm9mZnNldFRvcCArIGVsZW0uc2Nyb2xs
SGVpZ2h0IC8gMjsKKyAgICAgICAgdmFyIG9mZnNldFBhcmVudCA9IGVsZW0ub2Zmc2V0UGFyZW50
OworICAgICAgICB3aGlsZSAob2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICB4ICs9IG9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgeSArPSBvZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVu
dDsKKyAgICAgICAgfQorICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBkb05leHRDbGljaygpIHsKKyAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworICAgICAgICBpZiAobmV4dF9pZF90b19jbGljayA8IGV4cGVjdGVkX2NsaWNr
cy5sZW5ndGgpIHsKKyAgICAgICAgICAgIG1vdmVNb3VzZU92ZXIoJ2J1dHRvbicgKyBuZXh0X2lk
X3RvX2NsaWNrKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAg
ICAgICAgbmV4dF9pZF90b19jbGljaysrOworICAgICAgICAgICAgc2V0VGltZW91dChkb05leHRD
bGljaywgMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICB9CisgICAgfQorCis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0iaW5pdCgpIj4KKworICAgIDxwPlRlc3QgdGhhdCBpZnJhbWUg
c2hpbXMgY2FuIGJlIHVzZWQgdG8gb3ZlcmxheSBIVE1MIGFib3ZlIGEKKyAgICB3aW5kb3dlZCBw
bHVnaW4uIFRoZSByZWQgc3F1YXJlcyBzaG91bGQgYmUgaGlkZGVuIGJ5IHRoZSBibHVlCisgICAg
Zmxhc2ggcGx1Z2lucywgYW5kIHRoZSBncmVlbiBzcXVhcmVzIHNob3VsZCBhcHBlYXIgb3ZlciB0
aGUKKyAgICBwbHVnaW5zLiBUbyB0ZXN0IGludGVyYWN0aXZlbHksIGNsaWNrIG92ZXIgdGhlIGJ1
dHRvbnMgb24gdGhlCisgICAgc3F1YXJlcy4gWW91IHNob3VsZCBub3QgYmUgYWJsZSB0byByZWFj
aCB0aGUgcmVkIHNxdWFyZXMnCisgICAgYnV0dG9ucy48L3A+CisKKyAgICA8cD5QcmludHMgIlNV
Q0NFU1MiIG9uIHN1Y2Nlc3MsICJGQUlMVVJFIiBvbiBmYWlsdXJlLjwvcD4KKyAgICA8ZGl2IGlk
PW91dHB1dD5OT05FPC9kaXY+CisgICAgPGRpdiBpZD0iY29udGFpbmVyIiBzdHlsZT0icG9zaXRp
b246IHJlbGF0aXZlOyI+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5n
ZXMgb246IExheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpO
YW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL3Jl
c291cmNlcy9zaW1wbGVfYmxhbmsuc3dmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUg
bWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsdWdpbnMvcmVzb3Vy
Y2VzL3NpbXBsZV9ibGFuay5zd2YKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsg
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgoKUTFkVEJ4MEFBQUI0Mml0ZzRHbGdZSmpHd01ERHlP
RE14TUR3MzRHQmdRRUFKUFFESkE9PQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38996</attachid>
            <date>2009-09-03 10:45:49 -0700</date>
            <delta_ts>2009-09-03 11:50:12 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>iframe-shims.txt</filename>
            <type>text/plain</type>
            <size>11161</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ3OTg0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDktMDIgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4OTE0
CisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IHRvIHRlc3QgaWZyYW1lIHNoaW0gY2FuIGJlIHVz
ZWQKKyAgICAgICAgdG8gb3ZlcmxheSBodG1sIGFib3ZlIGEgd2luZG93ZWQgcGx1Z2luLiBJdCBj
aGVja3MKKyAgICAgICAgcHJlbXV0YXRpb25zIG9mIGlmcmFtZSBzaGltZXMgaW4gcmVsYXRpb25z
aGlwIHRvIAorICAgICAgICBwbHVnaW4uCisKKyAgICAgICAgKiBwbHVnaW5zL2lmcmFtZS1zaGlt
cy1leHBlY3RlZC50eHQ6IEFkZGVkIHdpdGggcHJvcGVydHkgc3ZuOmVvbC1zdHlsZS4KKyAgICAg
ICAgKiBwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sOiBBZGRlZCB3aXRoIHByb3BlcnR5IHN2bjpl
b2wtc3R5bGUuCisgICAgICAgICogcGx1Z2lucy9yZXNvdXJjZXMvc2ltcGxlX2JsYW5rLnN3Zjog
QWRkZWQgd2l0aCBwcm9wZXJ0eSBzdm46bWltZS10eXBlLgorCiAyMDA5LTA5LTAyICBCZW4gTXVy
ZG9jaCAgPGJlbm1AZ29vZ2xlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjg3MzcKSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1l
LXNoaW1zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5zL2lm
cmFtZS1zaGltcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbHVn
aW5zL2lmcmFtZS1zaGltcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBA
QAorVGVzdCB0aGF0IGlmcmFtZSBzaGltcyBjYW4gYmUgdXNlZCB0byBvdmVybGF5IEhUTUwgYWJv
dmUgYSB3aW5kb3dlZCBwbHVnaW4uIFRoZSByZWQgc3F1YXJlcyBzaG91bGQgYmUgaGlkZGVuIGJ5
IHRoZSBibHVlIGZsYXNoIHBsdWdpbnMsIGFuZCB0aGUgZ3JlZW4gc3F1YXJlcyBzaG91bGQgYXBw
ZWFyIG92ZXIgdGhlIHBsdWdpbnMuIFRvIHRlc3QgaW50ZXJhY3RpdmVseSwgY2xpY2sgb3ZlciB0
aGUgYnV0dG9ucyBvbiB0aGUgc3F1YXJlcy4gWW91IHNob3VsZCBub3QgYmUgYWJsZSB0byByZWFj
aCB0aGUgcmVkIHNxdWFyZXMnIGJ1dHRvbnMuCisKK1ByaW50cyAiU1VDQ0VTUyIgb24gc3VjY2Vz
cywgIkZBSUxVUkUiIG9uIGZhaWx1cmUuCisKK1NVQ0NFU1MKClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLWV4cGVjdGVkLnR4dApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9wbHVn
aW5zL2lmcmFtZS1zaGltcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMv
aWZyYW1lLXNoaW1zLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbHVnaW5zL2lm
cmFtZS1zaGltcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0MyBAQAorPGh0bWw+PGhl
YWQ+Cis8c2NyaXB0PgorICAgIHZhciBleHBlY3RlZF9jbGlja3MgPSBbXTsKKyAgICB2YXIgY2xp
Y2tzID0gW107CisKKyAgICB2YXIgSEVJR0hUID0gMTAwOworICAgIHZhciBXSURUSCA9IDEwMDsK
KyAgICB2YXIgaXRlbXMgPSAwOworCisgICAgZnVuY3Rpb24gbWFrZVBsdWdpbkVsZW1lbnQoKQor
ICAgIHsKKyAgICAgICAgdmFyIGYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdlbWJlZCcpOwor
ICAgICAgICBmLnNldEF0dHJpYnV0ZSgnaWQnLCAnc3dmX2VtYmVkXycgKyBpdGVtcyk7CisgICAg
ICAgIGYuc2V0QXR0cmlidXRlKCd3aWR0aCcsIFdJRFRIICsgJycpOworICAgICAgICBmLnNldEF0
dHJpYnV0ZSgnaGVpZ2h0JywgSEVJR0hUICsgJycpOworICAgICAgICBmLnNldEF0dHJpYnV0ZSgn
d21vZGUnLCAnd2luZG93Jyk7CisgICAgICAgIGYuc2V0QXR0cmlidXRlKCdsb29wJywgJ2ZhbHNl
Jyk7CisgICAgICAgIGYuc2V0QXR0cmlidXRlKCdzcmMnLCAncmVzb3VyY2VzL3NpbXBsZV9ibGFu
ay5zd2YnKTsKKyAgICAgICAgZi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnYXBwbGljYXRpb24veC1z
aG9ja3dhdmUtZmxhc2gnKTsKKyAgICAgICAgcmV0dXJuIGY7CisgICAgfQorCisgICAgZnVuY3Rp
b24gbWFrZUlmcmFtZURpdigpCisgICAgeworICAgICAgICB2YXIgaSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgICAgICBpLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRl
JzsKKyAgICAgICAgaS5zdHlsZS50b3AgPSAnMTBweCc7CisgICAgICAgIGkuc3R5bGUubGVmdCA9
ICczMHB4JzsKKyAgICAgICAgaS5zdHlsZS53aWR0aCA9ICc4MHB4JzsKKyAgICAgICAgaS5zdHls
ZS5oZWlnaHQgPSAnODBweCc7CisgICAgICAgIGkuc3R5bGUuZmlsdGVyPSdwcm9naWQ6RFhJbWFn
ZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoc3R5bGU9MCxvcGFjaXR5PTApJzsKKyAgICAgICAg
aS5zZXRBdHRyaWJ1dGUoJ2ZyYW1lYm9yZGVyJywgJzAnKTsKKyAgICAgICAgaS5zZXRBdHRyaWJ1
dGUoJ3NyYycsICdqYXZhc2NyaXB0OnZvaWQoMCk7Jyk7CisgICAgICAgIHJldHVybiBpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIG1ha2VPdmVybGF5RGl2KGNvbG9yLCBjYXNlX2lkKQorICAgIHsK
KyAgICAgICAgdmFyIG8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAg
by5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICAgIG8uc3R5bGUudG9wID0gJzEw
cHgnOworICAgICAgICBvLnN0eWxlLmxlZnQgPSAnMzBweCc7CisgICAgICAgIG8uc3R5bGUud2lk
dGggPSAnODBweCc7CisgICAgICAgIG8uc3R5bGUuaGVpZ2h0ID0gJzgwcHgnOworICAgICAgICBv
LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGNvbG9yOworICAgICAgICBvLnN0eWxlLm92ZXJmbG93
ID0gJ2hpZGRlbic7CisgICAgICAgIG8uaW5uZXJIVE1MID0gJzxpbnB1dCB0eXBlPSJidXR0b24i
IGlkPSJidXR0b24nICsgY2FzZV9pZCArICciICcgKworICAgICAgICAgICAgJ29uY2xpY2s9ImRv
Q2xpY2soJyArIGNhc2VfaWQgKworICAgICAgICAgICAgJyk7IiB2YWx1ZT0iY2xpY2ttZSIgc3R5
bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDsgbGVmdDogMTA7IHdpZHRoOiA2MHB4OyBo
ZWlnaHQ6IDYwcHg7Ii8+JzsKKyAgICAgICAgcmV0dXJuIG87CisgICAgfQorCisgICAgZnVuY3Rp
b24gYWRkQ2FzZSh4LCB5LCB0YWdzKQorICAgIHsKKyAgICAgICAgdmFyIGNhc2VfaWQgPSBpdGVt
czsKKyAgICAgICAgaXRlbXMrKzsKKworICAgICAgICB2YXIgZXhwZWN0X2NsaWNrYWJsZSA9IHRh
Z3MuZXhwZWN0ICYmIHRhZ3MuZXhwZWN0LmluZGV4T2YoJ1VOREVSJykgPT0gLTE7CisgICAgICAg
IGV4cGVjdGVkX2NsaWNrc1tjYXNlX2lkXSA9IGV4cGVjdF9jbGlja2FibGU7CisKKyAgICAgICAg
dmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKTsKKyAg
ICAgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAg
cm9vdC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICAgIHJvb3Quc3R5bGUubGVm
dCA9IHggKiAoV0lEVEggKyA0MCkgKyAncHgnOworICAgICAgICByb290LnN0eWxlLnRvcCA9IHkg
KiAoSEVJR0hUICsgMjApICsgJ3B4JzsKKyAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHJv
b3QpOworCisgICAgICAgIHZhciBwbHVnaW5fZGl2X3o7CisgICAgICAgIHZhciBvdmVybGF5X2Rp
dl96X2lmcmFtZTsKKyAgICAgICAgdmFyIG92ZXJsYXlfZGl2X3pfb3ZlcmxheTsKKyAgICAgICAg
aWYgKHRhZ3MucGx1Z2luX2xvd2VyeikgeworICAgICAgICAgICAgcGx1Z2luX2Rpdl96ID0gMTAw
OworICAgICAgICAgICAgb3ZlcmxheV9kaXZfel9pZnJhbWUgPSAyMDA7CisgICAgICAgICAgICBv
dmVybGF5X2Rpdl96X292ZXJsYXkgPSAyMDE7CisgICAgICAgIH0gZWxzZSBpZiAodGFncy5wbHVn
aW5faGlnaGVyeikgeworICAgICAgICAgICAgcGx1Z2luX2Rpdl96ID0gMjAwOworICAgICAgICAg
ICAgb3ZlcmxheV9kaXZfel9pZnJhbWUgPSAxMDA7CisgICAgICAgICAgICBvdmVybGF5X2Rpdl96
X292ZXJsYXkgPSAxMDE7CisgICAgICAgIH0gZWxzZSBpZiAodGFncy5wbHVnaW5fZXF1YWx6KSB7
CisgICAgICAgICAgICBwbHVnaW5fZGl2X3ogPSAxMDA7CisgICAgICAgICAgICBvdmVybGF5X2Rp
dl96X2lmcmFtZSA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJsYXlfZGl2X3pfb3ZlcmxheSA9IDEw
MDsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBhcHBlbmRfcGx1Z2luID0gZnVuY3Rpb24oKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcGQgPSBtYWtlUGx1Z2luRWxlbWVudCgpOworICAg
ICAgICAgICAgaWYgKHRhZ3MucGx1Z2luX2luc2lkZV9kaXYgfHwgcGx1Z2luX2Rpdl96KSB7Cisg
ICAgICAgICAgICAgICAgdmFyIHBhcmVudGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgICAgICAgICAgICAgIHBhcmVudGRpdi5hcHBlbmRDaGlsZChwZCkKKyAgICAgICAg
ICAgICAgICBpZiAoIXRhZ3MucGx1Z2luX25vcmVsYXRpdmUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcGFyZW50ZGl2LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJzsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBpZiAocGx1Z2luX2Rpdl96KSB7CisgICAgICAgICAgICAg
ICAgICAgIHBhcmVudGRpdi5zdHlsZS56SW5kZXggPSBwbHVnaW5fZGl2X3o7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFyZW50ZGl2KTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCF0YWdzLnBsdWdpbl9ub3Jl
bGF0aXZlKSB7CisgICAgICAgICAgICAgICAgICAgIHBkLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0
aXZlJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGls
ZChwZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgdmFyIGFwcGVuZF9v
dmVybGF5ID0gZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWQgPSBtYWtl
SWZyYW1lRGl2KCk7CisgICAgICAgICAgICBpZiAob3ZlcmxheV9kaXZfel9pZnJhbWUpIHsKKyAg
ICAgICAgICAgICAgICBpZC5zdHlsZS56SW5kZXggPSBvdmVybGF5X2Rpdl96X2lmcmFtZTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIG9kID0gbWFrZU92ZXJsYXlEaXYoZXhwZWN0
X2NsaWNrYWJsZSA/ICdncmVlbicgOiAncmVkJywgY2FzZV9pZCk7CisgICAgICAgICAgICBvZC5z
dHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICAgICAgICBpZiAob3ZlcmxheV9kaXZf
el9vdmVybGF5KSB7CisgICAgICAgICAgICBvZC5zdHlsZS56SW5kZXggPSBvdmVybGF5X2Rpdl96
X292ZXJsYXk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0YWdzLm92ZXJsYXlf
aW5zaWRlX2RpdikgeworICAgICAgICAgICAgICAgIHZhciBwYXJlbnRkaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgICAgICAgICBpZiAob3ZlcmxheV9kaXZfel9v
dmVybGF5KSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudGRpdi5zdHlsZS56SW5kZXggPSBv
dmVybGF5X2Rpdl96X292ZXJsYXk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgcGFyZW50ZGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICAgICAgICAgICAg
ICBwYXJlbnRkaXYuc3R5bGUudG9wID0gJzBweCc7CisgICAgICAgICAgICAgICAgcGFyZW50ZGl2
LnN0eWxlLmxlZnQgPSAnMHB4JzsKKyAgICAgICAgICAgICAgICBwYXJlbnRkaXYuYXBwZW5kQ2hp
bGQoaWQpOworICAgICAgICAgICAgICAgIHBhcmVudGRpdi5hcHBlbmRDaGlsZChvZCk7CisgICAg
ICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChwYXJlbnRkaXYpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICByb290LmFwcGVuZENoaWxkKGlkKTsKKyAgICAgICAgICAg
ICAgICByb290LmFwcGVuZENoaWxkKG9kKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKwor
ICAgICAgICBpZiAodGFncy5vdmVybGF5X2VhcmxpZXIpIHsKKyAgICAgICAgICAgIGFwcGVuZF9v
dmVybGF5KCk7CisgICAgICAgICAgICBhcHBlbmRfcGx1Z2luKCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBhcHBlbmRfcGx1Z2luKCk7CisgICAgICAgICAgICBhcHBlbmRfb3Zlcmxh
eSgpOworICAgICAgICB9CisgICAgIH0KKworICAgIGZ1bmN0aW9uIGRvQ2xpY2soaWQpCisgICAg
eworICAgICAgICBjbGlja3NbaWRdID0gdHJ1ZTsKKworICAgICAgICAvLyBDaGVjayBzdWNjZXNz
L2ZhaWx1cmUuCisgICAgICAgIHZhciBvdXRwdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
b3V0cHV0Iik7CisgICAgICAgIHZhciB3YWl0aW5nX2Zvcl9tb3JlX2NsaWNrcyA9IGZhbHNlOwor
ICAgICAgICB2YXIgazsKKyAgICAgICAgZm9yIChrIGluIGV4cGVjdGVkX2NsaWNrcykgeworICAg
ICAgICAgICAgaWYgKGV4cGVjdGVkX2NsaWNrc1trXSAmJiAhY2xpY2tzW2tdKSB7CisgICAgICAg
ICAgICAgICAgd2FpdGluZ19mb3JfbW9yZV9jbGlja3MgPSB0cnVlOworICAgICAgICAgICAgfSBl
bHNlIGlmICghZXhwZWN0ZWRfY2xpY2tzW2tdICYmIGNsaWNrc1trXSkgeworICAgICAgICAgICAg
ICAgIG91dHB1dC5pbm5lckhUTUwgPSAnRkFJTFVSRSc7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCF3YWl0aW5nX2Zvcl9t
b3JlX2NsaWNrcykgeworICAgICAgICAgICAgb3V0cHV0LmlubmVySFRNTCA9ICdTVUNDRVNTJzsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGlu
aXQoKSB7CisgICAgICAgIGFkZENhc2UoMCwgMCwge2V4cGVjdDonb3ZlcmxheSBPVkVSJ30pOwor
ICAgICAgICBhZGRDYXNlKDEsIDAsIHsnb3ZlcmxheV9lYXJsaWVyJzoxLCAnb3ZlcmxheV9pbnNp
ZGVfZGl2JzogMSwgJ3BsdWdpbl9pbnNpZGVfZGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgVU5ERVIn
fSk7CisgICAgICAgIGFkZENhc2UoMiwgMCwgeydwbHVnaW5fbG93ZXJ6JzoxLCBleHBlY3Q6J292
ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgzLCAwLCB7J3BsdWdpbl9oaWdoZXJ6Jzox
LCBleHBlY3Q6J292ZXJsYXkgVU5ERVInfSk7CisgICAgICAgIGFkZENhc2UoMCwgMSwgeydvdmVy
bGF5X2luc2lkZV9kaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBhZGRD
YXNlKDEsIDEsIHsncGx1Z2luX2xvd2Vyeic6MSwgJ292ZXJsYXlfaW5zaWRlX2Rpdic6MSwgZXhw
ZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMiwgMSwgeydwbHVnaW5faGln
aGVyeic6MSwgJ292ZXJsYXlfaW5zaWRlX2Rpdic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30p
OworICAgICAgICBhZGRDYXNlKDAsIDIsIHsncGx1Z2luX2VxdWFseic6MSwgJ292ZXJsYXlfaW5z
aWRlX2Rpdic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMSwg
MiwgeydwbHVnaW5fZXF1YWx6JzoxLCAnb3ZlcmxheV9pbnNpZGVfZGl2JzoxLCAnb3ZlcmxheV9l
YXJsaWVyJzoxLCBleHBlY3Q6J292ZXJsYXkgVU5ERVInfSk7CisgICAgICAgIGFkZENhc2UoMiwg
MiwgeydvdmVybGF5X2VhcmxpZXInOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRFUid9KTsKKyAgICAg
ICAgYWRkQ2FzZSgzLCAyLCB7J292ZXJsYXlfZWFybGllcic6MSwgJ3BsdWdpbl9ub3JlbGF0aXZl
JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgwLCAzLCB7J3Bs
dWdpbl9ub3JlbGF0aXZlJzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRk
Q2FzZSgxLCAzLCB7J292ZXJsYXlfZWFybGllcic6MSwgJ3BsdWdpbl9ub3JlbGF0aXZlJzoxLCAn
cGx1Z2luX2luc2lkZV9kaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBh
ZGRDYXNlKDIsIDMsIHsncGx1Z2luX25vcmVsYXRpdmUnOjEsICdwbHVnaW5faW5zaWRlX2Rpdic6
MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisKKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0K
KworICAgIC8vIEF1dG9tYXRpb246IHRyeSB0byBjbGljayBvbiBlYWNoIGJ1dHRvbi4KKyAgICB2
YXIgbmV4dF9pZF90b19jbGljayA9IDA7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAg
ICAgc2V0VGltZW91dChkb05leHRDbGljaywgMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBm
dW5jdGlvbiBtb3ZlTW91c2VPdmVyKGVsZW1fbmFtZSkgeworICAgICAgICB2YXIgZWxlbSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1fbmFtZSk7CisgICAgICAgIHZhciB4ID0gZWxlbS5v
ZmZzZXRMZWZ0ICsgZWxlbS5zY3JvbGxXaWR0aCAvIDI7CisgICAgICAgIHZhciB5ID0gZWxlbS5v
ZmZzZXRUb3AgKyBlbGVtLnNjcm9sbEhlaWdodCAvIDI7CisgICAgICAgIHZhciBvZmZzZXRQYXJl
bnQgPSBlbGVtLm9mZnNldFBhcmVudDsKKyAgICAgICAgd2hpbGUgKG9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgeCArPSBvZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHkg
Kz0gb2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgIG9mZnNldFBhcmVudCA9IG9m
ZnNldFBhcmVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgIH0KKyAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oeCwgeSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZG9OZXh0Q2xpY2soKSB7
CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgaWYgKG5leHRfaWRfdG9f
Y2xpY2sgPCBleHBlY3RlZF9jbGlja3MubGVuZ3RoKSB7CisgICAgICAgICAgICBtb3ZlTW91c2VP
dmVyKCdidXR0b24nICsgbmV4dF9pZF90b19jbGljayk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIG5leHRfaWRfdG9fY2xpY2srKzsKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZG9OZXh0Q2xpY2ssIDApOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfQor
ICAgIH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImluaXQoKSI+CisKKyAg
ICA8cD5UZXN0IHRoYXQgaWZyYW1lIHNoaW1zIGNhbiBiZSB1c2VkIHRvIG92ZXJsYXkgSFRNTCBh
Ym92ZSBhCisgICAgd2luZG93ZWQgcGx1Z2luLiBUaGUgcmVkIHNxdWFyZXMgc2hvdWxkIGJlIGhp
ZGRlbiBieSB0aGUgYmx1ZQorICAgIGZsYXNoIHBsdWdpbnMsIGFuZCB0aGUgZ3JlZW4gc3F1YXJl
cyBzaG91bGQgYXBwZWFyIG92ZXIgdGhlCisgICAgcGx1Z2lucy4gVG8gdGVzdCBpbnRlcmFjdGl2
ZWx5LCBjbGljayBvdmVyIHRoZSBidXR0b25zIG9uIHRoZQorICAgIHNxdWFyZXMuIFlvdSBzaG91
bGQgbm90IGJlIGFibGUgdG8gcmVhY2ggdGhlIHJlZCBzcXVhcmVzJworICAgIGJ1dHRvbnMuPC9w
PgorCisgICAgPHA+UHJpbnRzICJTVUNDRVNTIiBvbiBzdWNjZXNzLCAiRkFJTFVSRSIgb24gZmFp
bHVyZS48L3A+CisgICAgPGRpdiBpZD1vdXRwdXQ+Tk9ORTwvZGl2PgorICAgIDxkaXYgaWQ9ImNv
bnRhaW5lciIgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsiPjwvZGl2PgorCis8L2JvZHk+Cis8
L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbHVnaW5zL2lmcmFtZS1z
aGltcy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDog
TGF5b3V0VGVzdHMvcGx1Z2lucy9yZXNvdXJjZXMvc2ltcGxlX2JsYW5rLnN3Zgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10
eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlv
dXRUZXN0cy9wbHVnaW5zL3Jlc291cmNlcy9zaW1wbGVfYmxhbmsuc3dmCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFt
ZTogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKClExZFRCeDBB
QUFCNDJpdGc0R2xnWUpqR3dNRER5T0RNeE1EdzM0R0JnUUVBSlBRREpBPT0KCg==
</data>
<flag name="review"
          id="20015"
          type_id="1"
          status="-"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39000</attachid>
            <date>2009-09-03 11:48:51 -0700</date>
            <delta_ts>2009-09-03 13:21:33 -0700</delta_ts>
            <desc>Updated patch with style fixes</desc>
            <filename>iframe-shims.txt</filename>
            <type>text/plain</type>
            <size>11045</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ3OTg0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDktMDIgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4OTE0
CisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IHRvIHRlc3QgaWZyYW1lIHNoaW0gY2FuIGJlIHVz
ZWQKKyAgICAgICAgdG8gb3ZlcmxheSBodG1sIGFib3ZlIGEgd2luZG93ZWQgcGx1Z2luLiBJdCBj
aGVja3MKKyAgICAgICAgcHJlbXV0YXRpb25zIG9mIGlmcmFtZSBzaGltcyBpbiByZWxhdGlvbnNo
aXAgdG8gCisgICAgICAgIHBsdWdpbi4KKworICAgICAgICAqIHBsdWdpbnMvaWZyYW1lLXNoaW1z
LWV4cGVjdGVkLnR4dDogQWRkZWQgd2l0aCBwcm9wZXJ0eSBzdm46ZW9sLXN0eWxlLgorICAgICAg
ICAqIHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWw6IEFkZGVkIHdpdGggcHJvcGVydHkgc3ZuOmVv
bC1zdHlsZS4KKyAgICAgICAgKiBwbHVnaW5zL3Jlc291cmNlcy9zaW1wbGVfYmxhbmsuc3dmOiBB
ZGRlZCB3aXRoIHByb3BlcnR5IHN2bjptaW1lLXR5cGUuCisKIDIwMDktMDktMDIgIEJlbiBNdXJk
b2NoICA8YmVubUBnb29nbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yODczNwpJbmRleDogTGF5b3V0VGVzdHMvcGx1Z2lucy9pZnJhbWUt
c2hpbXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMvaWZy
YW1lLXNoaW1zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsdWdp
bnMvaWZyYW1lLXNoaW1zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBA
QAorVGVzdCB0aGF0IGlmcmFtZSBzaGltcyBjYW4gYmUgdXNlZCB0byBvdmVybGF5IEhUTUwgYWJv
dmUgYSB3aW5kb3dlZCBwbHVnaW4uIFRoZSByZWQgc3F1YXJlcyBzaG91bGQgYmUgaGlkZGVuIGJ5
IHRoZSBibHVlIGZsYXNoIHBsdWdpbnMsIGFuZCB0aGUgZ3JlZW4gc3F1YXJlcyBzaG91bGQgYXBw
ZWFyIG92ZXIgdGhlIHBsdWdpbnMuIFRvIHRlc3QgaW50ZXJhY3RpdmVseSwgY2xpY2sgb3ZlciB0
aGUgYnV0dG9ucyBvbiB0aGUgc3F1YXJlcy4gWW91IHNob3VsZCBub3QgYmUgYWJsZSB0byByZWFj
aCB0aGUgcmVkIHNxdWFyZXMnIGJ1dHRvbnMuCisKK1ByaW50cyAiU1VDQ0VTUyIgb24gc3VjY2Vz
cywgIkZBSUxVUkUiIG9uIGZhaWx1cmUuCisKK1NVQ0NFU1MKKworCisKKworCisKKworCisKKwor
CisKKworCisKKworCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbHVnaW5zL2lm
cmFtZS1zaGltcy1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAg
ICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyNDMgQEAKKzxodG1sPjxoZWFkPgorPHNjcmlwdD4KKyAgICB2YXIg
ZXhwZWN0ZWRDbGlja3MgPSBbXTsKKyAgICB2YXIgY2xpY2tzID0gW107CisKKyAgICB2YXIgaGVp
Z2h0ID0gMTAwOworICAgIHZhciB3aWR0aCA9IDEwMDsKKyAgICB2YXIgaXRlbXMgPSAwOworCisg
ICAgZnVuY3Rpb24gbWFrZVBsdWdpbkVsZW1lbnQoKQorICAgIHsKKyAgICAgICAgdmFyIGYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdlbWJlZCcpOworICAgICAgICBmLnNldEF0dHJpYnV0ZSgn
aWQnLCAnc3dmX2VtYmVkXycgKyBpdGVtcyk7CisgICAgICAgIGYuc2V0QXR0cmlidXRlKCd3aWR0
aCcsIHdpZHRoICsgJycpOworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgaGVpZ2h0
ICsgJycpOworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnd21vZGUnLCAnd2luZG93Jyk7CisgICAg
ICAgIGYuc2V0QXR0cmlidXRlKCdsb29wJywgJ2ZhbHNlJyk7CisgICAgICAgIGYuc2V0QXR0cmli
dXRlKCdzcmMnLCAncmVzb3VyY2VzL3NpbXBsZV9ibGFuay5zd2YnKTsKKyAgICAgICAgZi5zZXRB
dHRyaWJ1dGUoJ3R5cGUnLCAnYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gnKTsKKyAgICAg
ICAgcmV0dXJuIGY7CisgICAgfQorCisgICAgZnVuY3Rpb24gbWFrZUlmcmFtZURpdigpCisgICAg
eworICAgICAgICB2YXIgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAg
ICAgICBpLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICAgICAgaS5zdHlsZS50b3Ag
PSAnMTBweCc7CisgICAgICAgIGkuc3R5bGUubGVmdCA9ICczMHB4JzsKKyAgICAgICAgaS5zdHls
ZS53aWR0aCA9ICc4MHB4JzsKKyAgICAgICAgaS5zdHlsZS5oZWlnaHQgPSAnODBweCc7CisgICAg
ICAgIGkuc3R5bGUuZmlsdGVyPSdwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxw
aGEoc3R5bGU9MCxvcGFjaXR5PTApJzsKKyAgICAgICAgaS5zZXRBdHRyaWJ1dGUoJ2ZyYW1lYm9y
ZGVyJywgJzAnKTsKKyAgICAgICAgaS5zZXRBdHRyaWJ1dGUoJ3NyYycsICdqYXZhc2NyaXB0OnZv
aWQoMCk7Jyk7CisgICAgICAgIHJldHVybiBpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG1ha2VP
dmVybGF5RGl2KGNvbG9yLCBjYXNlSWQpCisgICAgeworICAgICAgICB2YXIgbyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBvLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29s
dXRlJzsKKyAgICAgICAgby5zdHlsZS50b3AgPSAnMTBweCc7CisgICAgICAgIG8uc3R5bGUubGVm
dCA9ICczMHB4JzsKKyAgICAgICAgby5zdHlsZS53aWR0aCA9ICc4MHB4JzsKKyAgICAgICAgby5z
dHlsZS5oZWlnaHQgPSAnODBweCc7CisgICAgICAgIG8uc3R5bGUuYmFja2dyb3VuZENvbG9yID0g
Y29sb3I7CisgICAgICAgIG8uc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJzsKKyAgICAgICAgby5p
bm5lckhUTUwgPSAnPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImJ1dHRvbicgKyBjYXNlSWQgKyAn
IiAnICsKKyAgICAgICAgICAgICdvbmNsaWNrPSJkb0NsaWNrKCcgKyBjYXNlSWQgKworICAgICAg
ICAgICAgJyk7IiB2YWx1ZT0iY2xpY2ttZSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9w
OiAxMDsgbGVmdDogMTA7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7Ii8+JzsKKyAgICAgICAg
cmV0dXJuIG87CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkQ2FzZSh4LCB5LCB0YWdzKQorICAg
IHsKKyAgICAgICAgdmFyIGNhc2VJZCA9IGl0ZW1zOworICAgICAgICBpdGVtcysrOworCisgICAg
ICAgIHZhciBleHBlY3RDbGlja2FibGUgPSB0YWdzLmV4cGVjdCAmJiB0YWdzLmV4cGVjdC5pbmRl
eE9mKCdVTkRFUicpID09IC0xOworICAgICAgICBleHBlY3RlZENsaWNrc1tjYXNlSWRdID0gZXhw
ZWN0Q2xpY2thYmxlOworCisgICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29udGFpbmVyJyk7CisgICAgICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CisgICAgICAgIHJvb3Quc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUn
OworICAgICAgICByb290LnN0eWxlLmxlZnQgPSB4ICogKHdpZHRoICsgNDApICsgJ3B4JzsKKyAg
ICAgICAgcm9vdC5zdHlsZS50b3AgPSB5ICogKGhlaWdodCArIDIwKSArICdweCc7CisgICAgICAg
IGNvbnRhaW5lci5hcHBlbmRDaGlsZChyb290KTsKKworICAgICAgICB2YXIgcGx1Z2luRGl2WjsK
KyAgICAgICAgdmFyIG92ZXJsYXlEaXZaSWZyYW1lOworICAgICAgICB2YXIgb3ZlcmxheURpdlpP
dmVybGF5OworICAgICAgICBpZiAodGFncy5wbHVnaW5Mb3dlcnopIHsKKyAgICAgICAgICAgIHBs
dWdpbkRpdlogPSAxMDA7CisgICAgICAgICAgICBvdmVybGF5RGl2WklmcmFtZSA9IDIwMDsKKyAg
ICAgICAgICAgIG92ZXJsYXlEaXZaT3ZlcmxheSA9IDIwMTsKKyAgICAgICAgfSBlbHNlIGlmICh0
YWdzLnBsdWdpbkhpZ2hlcnopIHsKKyAgICAgICAgICAgIHBsdWdpbkRpdlogPSAyMDA7CisgICAg
ICAgICAgICBvdmVybGF5RGl2WklmcmFtZSA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJsYXlEaXZa
T3ZlcmxheSA9IDEwMTsKKyAgICAgICAgfSBlbHNlIGlmICh0YWdzLnBsdWdpbkVxdWFseikgewor
ICAgICAgICAgICAgcGx1Z2luRGl2WiA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJsYXlEaXZaSWZy
YW1lID0gMTAwOworICAgICAgICAgICAgb3ZlcmxheURpdlpPdmVybGF5ID0gMTAwOworICAgICAg
ICB9CisKKyAgICAgICAgdmFyIGFwcGVuZFBsdWdpbiA9IGZ1bmN0aW9uKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBkID0gbWFrZVBsdWdpbkVsZW1lbnQoKTsKKyAgICAgICAgICAgIGlm
ICh0YWdzLnBsdWdpbkluc2lkZURpdiB8fCBwbHVnaW5EaXZaKSB7CisgICAgICAgICAgICAgICAg
dmFyIHBhcmVudGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICAg
ICAgICAgIHBhcmVudGRpdi5hcHBlbmRDaGlsZChwZCkKKyAgICAgICAgICAgICAgICBpZiAoIXRh
Z3MucGx1Z2luTm9yZWxhdGl2ZSkgeworICAgICAgICAgICAgICAgICAgICBwYXJlbnRkaXYuc3R5
bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGlmIChwbHVnaW5EaXZaKSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudGRpdi5z
dHlsZS56SW5kZXggPSBwbHVnaW5EaXZaOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICByb290LmFwcGVuZENoaWxkKHBhcmVudGRpdik7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmICghdGFncy5wbHVnaW5Ob3JlbGF0aXZlKSB7CisgICAgICAgICAg
ICAgICAgICAgIHBkLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJzsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChwZCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH07CisKKyAgICAgICAgdmFyIGFwcGVuZE92ZXJsYXkgPSBmdW5jdGlvbigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZCA9IG1ha2VJZnJhbWVEaXYoKTsKKyAgICAgICAg
ICAgIGlmIChvdmVybGF5RGl2WklmcmFtZSkgeworICAgICAgICAgICAgICAgIGlkLnN0eWxlLnpJ
bmRleCA9IG92ZXJsYXlEaXZaSWZyYW1lOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgb2QgPSBtYWtlT3ZlcmxheURpdihleHBlY3RDbGlja2FibGUgPyAnZ3JlZW4nIDogJ3JlZCcs
IGNhc2VJZCk7CisgICAgICAgICAgICBvZC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7Cisg
ICAgICAgICAgICBpZiAob3ZlcmxheURpdlpPdmVybGF5KSB7CisgICAgICAgICAgICBvZC5zdHls
ZS56SW5kZXggPSBvdmVybGF5RGl2Wk92ZXJsYXk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmICh0YWdzLm92ZXJsYXlJbnNpZGVEaXYpIHsKKyAgICAgICAgICAgICAgICB2YXIgcGFy
ZW50ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICAgICAg
aWYgKG92ZXJsYXlEaXZaT3ZlcmxheSkgeworICAgICAgICAgICAgICAgICAgICBwYXJlbnRkaXYu
c3R5bGUuekluZGV4ID0gb3ZlcmxheURpdlpPdmVybGF5OworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIHBhcmVudGRpdi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7Cisg
ICAgICAgICAgICAgICAgcGFyZW50ZGl2LnN0eWxlLnRvcCA9ICcwcHgnOworICAgICAgICAgICAg
ICAgIHBhcmVudGRpdi5zdHlsZS5sZWZ0ID0gJzBweCc7CisgICAgICAgICAgICAgICAgcGFyZW50
ZGl2LmFwcGVuZENoaWxkKGlkKTsKKyAgICAgICAgICAgICAgICBwYXJlbnRkaXYuYXBwZW5kQ2hp
bGQob2QpOworICAgICAgICAgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFyZW50ZGl2KTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChpZCk7
CisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChvZCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisKKyAgICAgICAgaWYgKHRhZ3Mub3ZlcmxheUVhcmxpZXIpIHsKKyAgICAgICAg
ICAgIGFwcGVuZE92ZXJsYXkoKTsKKyAgICAgICAgICAgIGFwcGVuZFBsdWdpbigpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgYXBwZW5kUGx1Z2luKCk7CisgICAgICAgICAgICBhcHBl
bmRPdmVybGF5KCk7CisgICAgICAgIH0KKyAgICAgfQorCisgICAgZnVuY3Rpb24gZG9DbGljayhp
ZCkKKyAgICB7CisgICAgICAgIGNsaWNrc1tpZF0gPSB0cnVlOworCisgICAgICAgIC8vIENoZWNr
IHN1Y2Nlc3MvZmFpbHVyZS4KKyAgICAgICAgdmFyIG91dHB1dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJvdXRwdXQiKTsKKyAgICAgICAgdmFyIHdhaXRpbmdGb3JNb3JlQ2xpY2tzID0gZmFs
c2U7CisgICAgICAgIHZhciBrOworICAgICAgICBmb3IgKGsgaW4gZXhwZWN0ZWRDbGlja3MpIHsK
KyAgICAgICAgICAgIGlmIChleHBlY3RlZENsaWNrc1trXSAmJiAhY2xpY2tzW2tdKSB7CisgICAg
ICAgICAgICAgICAgd2FpdGluZ0Zvck1vcmVDbGlja3MgPSB0cnVlOworCSAgICB9IGVsc2UgaWYg
KCFleHBlY3RlZENsaWNrc1trXSAmJiBjbGlja3Nba10pIHsKKyAgICAgICAgICAgICAgICBvdXRw
dXQuaW5uZXJIVE1MID0gJ0ZBSUxVUkUnOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghd2FpdGluZ0Zvck1vcmVDbGlja3Mp
IHsKKyAgICAgICAgICAgIG91dHB1dC5pbm5lckhUTUwgPSAnU1VDQ0VTUyc7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBpbml0KCkgeworICAg
ICAgICBhZGRDYXNlKDAsIDAsIHtleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRk
Q2FzZSgxLCAwLCB7J292ZXJsYXlFYXJsaWVyJzoxLCAnb3ZlcmxheUluc2lkZURpdic6IDEsICdw
bHVnaW5JbnNpZGVEaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRFUid9KTsKKyAgICAgICAgYWRk
Q2FzZSgyLCAwLCB7J3BsdWdpbkxvd2Vyeic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7Cisg
ICAgICAgIGFkZENhc2UoMywgMCwgeydwbHVnaW5IaWdoZXJ6JzoxLCBleHBlY3Q6J292ZXJsYXkg
VU5ERVInfSk7CisgICAgICAgIGFkZENhc2UoMCwgMSwgeydvdmVybGF5SW5zaWRlRGl2JzoxLCBl
eHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgxLCAxLCB7J3BsdWdpbkxv
d2Vyeic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOwor
ICAgICAgICBhZGRDYXNlKDIsIDEsIHsncGx1Z2luSGlnaGVyeic6MSwgJ292ZXJsYXlJbnNpZGVE
aXYnOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgwLCAyLCB7
J3BsdWdpbkVxdWFseic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBP
VkVSJ30pOworICAgICAgICBhZGRDYXNlKDEsIDIsIHsncGx1Z2luRXF1YWx6JzoxLCAnb3Zlcmxh
eUluc2lkZURpdic6MSwgJ292ZXJsYXlFYXJsaWVyJzoxLCBleHBlY3Q6J292ZXJsYXkgVU5ERVIn
fSk7CisgICAgICAgIGFkZENhc2UoMiwgMiwgeydvdmVybGF5RWFybGllcic6MSwgZXhwZWN0Oidv
dmVybGF5IFVOREVSJ30pOworICAgICAgICBhZGRDYXNlKDMsIDIsIHsnb3ZlcmxheUVhcmxpZXIn
OjEsICdwbHVnaW5Ob3JlbGF0aXZlJzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAg
ICAgYWRkQ2FzZSgwLCAzLCB7J3BsdWdpbk5vcmVsYXRpdmUnOjEsIGV4cGVjdDonb3ZlcmxheSBP
VkVSJ30pOworICAgICAgICBhZGRDYXNlKDEsIDMsIHsnb3ZlcmxheUVhcmxpZXInOjEsICdwbHVn
aW5Ob3JlbGF0aXZlJzoxLCAncGx1Z2luSW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZF
Uid9KTsKKyAgICAgICAgYWRkQ2FzZSgyLCAzLCB7J3BsdWdpbk5vcmVsYXRpdmUnOjEsICdwbHVn
aW5JbnNpZGVEaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworCisgICAgICAgIHJ1blRl
c3QoKTsKKyAgICB9CisKKyAgICAvLyBBdXRvbWF0aW9uOiB0cnkgdG8gY2xpY2sgb24gZWFjaCBi
dXR0b24uCisgICAgdmFyIG5leHRJZFRvQ2xpY2sgPSAwOworCisgICAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZG9OZXh0Q2xpY2ssIDApOworICAgICAgICB9CisgICAg
fQorCisgICAgZnVuY3Rpb24gbW92ZU1vdXNlT3ZlcihlbGVtTmFtZSkgeworICAgICAgICB2YXIg
ZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1OYW1lKTsKKyAgICAgICAgdmFyIHgg
PSBlbGVtLm9mZnNldExlZnQgKyBlbGVtLnNjcm9sbFdpZHRoIC8gMjsKKyAgICAgICAgdmFyIHkg
PSBlbGVtLm9mZnNldFRvcCArIGVsZW0uc2Nyb2xsSGVpZ2h0IC8gMjsKKyAgICAgICAgdmFyIG9m
ZnNldFBhcmVudCA9IGVsZW0ub2Zmc2V0UGFyZW50OworICAgICAgICB3aGlsZSAob2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICB4ICs9IG9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgeSArPSBvZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgb2Zmc2V0UGFy
ZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgfQorICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkb05leHRD
bGljaygpIHsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICBpZiAobmV4
dElkVG9DbGljayA8IGV4cGVjdGVkQ2xpY2tzLmxlbmd0aCkgeworICAgICAgICAgICAgbW92ZU1v
dXNlT3ZlcignYnV0dG9uJyArIG5leHRJZFRvQ2xpY2spOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBuZXh0SWRUb0NsaWNrKys7CisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGRvTmV4dENsaWNrLCAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0KKyAg
ICB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorCisgICAg
PHA+VGVzdCB0aGF0IGlmcmFtZSBzaGltcyBjYW4gYmUgdXNlZCB0byBvdmVybGF5IEhUTUwgYWJv
dmUgYQorICAgIHdpbmRvd2VkIHBsdWdpbi4gVGhlIHJlZCBzcXVhcmVzIHNob3VsZCBiZSBoaWRk
ZW4gYnkgdGhlIGJsdWUKKyAgICBmbGFzaCBwbHVnaW5zLCBhbmQgdGhlIGdyZWVuIHNxdWFyZXMg
c2hvdWxkIGFwcGVhciBvdmVyIHRoZQorICAgIHBsdWdpbnMuIFRvIHRlc3QgaW50ZXJhY3RpdmVs
eSwgY2xpY2sgb3ZlciB0aGUgYnV0dG9ucyBvbiB0aGUKKyAgICBzcXVhcmVzLiBZb3Ugc2hvdWxk
IG5vdCBiZSBhYmxlIHRvIHJlYWNoIHRoZSByZWQgc3F1YXJlcycKKyAgICBidXR0b25zLjwvcD4K
KworICAgIDxwPlByaW50cyAiU1VDQ0VTUyIgb24gc3VjY2VzcywgIkZBSUxVUkUiIG9uIGZhaWx1
cmUuPC9wPgorICAgIDxkaXYgaWQ9b3V0cHV0Pk5PTkU8L2Rpdj4KKyAgICA8ZGl2IGlkPSJjb250
YWluZXIiIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7Ij48L2Rpdj4KKworPC9ib2R5PgorPC9o
dG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGx1Z2lucy9pZnJhbWUtc2hp
bXMuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExh
eW91dFRlc3RzL3BsdWdpbnMvcmVzb3VyY2VzL3NpbXBsZV9ibGFuay5zd2YKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpD
YW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlw
ZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0
VGVzdHMvcGx1Z2lucy9yZXNvdXJjZXMvc2ltcGxlX2JsYW5rLnN3ZgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6
IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCgpRMWRUQngwQUFB
QjQyaXRnNEdsZ1lKakd3TUREeU9ETXhNRHczNEdCZ1FFQUpQUURKQT09Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39004</attachid>
            <date>2009-09-03 13:21:33 -0700</date>
            <delta_ts>2009-09-09 11:01:24 -0700</delta_ts>
            <desc>Updated patch with style fixes</desc>
            <filename>iframe-shims.txt</filename>
            <type>text/plain</type>
            <size>10959</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ3OTg0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDktMDIgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4OTE0
CisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IHRvIHRlc3QgaWZyYW1lIHNoaW0gY2FuIGJlIHVz
ZWQKKyAgICAgICAgdG8gb3ZlcmxheSBodG1sIGFib3ZlIGEgd2luZG93ZWQgcGx1Z2luLiBJdCBj
aGVja3MKKyAgICAgICAgcHJlbXV0YXRpb25zIG9mIGlmcmFtZSBzaGltcyBpbiByZWxhdGlvbnNo
aXAgdG8gCisgICAgICAgIHBsdWdpbi4KKworICAgICAgICAqIHBsdWdpbnMvaWZyYW1lLXNoaW1z
LWV4cGVjdGVkLnR4dDogQWRkZWQgd2l0aCBwcm9wZXJ0eSBzdm46ZW9sLXN0eWxlLgorICAgICAg
ICAqIHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWw6IEFkZGVkIHdpdGggcHJvcGVydHkgc3ZuOmVv
bC1zdHlsZS4KKyAgICAgICAgKiBwbHVnaW5zL3Jlc291cmNlcy9zaW1wbGVfYmxhbmsuc3dmOiBB
ZGRlZCB3aXRoIHByb3BlcnR5IHN2bjptaW1lLXR5cGUuCisKIDIwMDktMDktMDIgIEJlbiBNdXJk
b2NoICA8YmVubUBnb29nbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yODczNwpJbmRleDogTGF5b3V0VGVzdHMvcGx1Z2lucy9pZnJhbWUt
c2hpbXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMvaWZy
YW1lLXNoaW1zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsdWdp
bnMvaWZyYW1lLXNoaW1zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBA
QAorVGVzdCB0aGF0IGlmcmFtZSBzaGltcyBjYW4gYmUgdXNlZCB0byBvdmVybGF5IEhUTUwgYWJv
dmUgYSB3aW5kb3dlZCBwbHVnaW4uIFRoZSByZWQgc3F1YXJlcyBzaG91bGQgYmUgaGlkZGVuIGJ5
IHRoZSBibHVlIGZsYXNoIHBsdWdpbnMsIGFuZCB0aGUgZ3JlZW4gc3F1YXJlcyBzaG91bGQgYXBw
ZWFyIG92ZXIgdGhlIHBsdWdpbnMuIFRvIHRlc3QgaW50ZXJhY3RpdmVseSwgY2xpY2sgb3ZlciB0
aGUgYnV0dG9ucyBvbiB0aGUgc3F1YXJlcy4gWW91IHNob3VsZCBub3QgYmUgYWJsZSB0byByZWFj
aCB0aGUgcmVkIHNxdWFyZXMnIGJ1dHRvbnMuCisKK1ByaW50cyAiU1VDQ0VTUyIgb24gc3VjY2Vz
cywgIkZBSUxVUkUiIG9uIGZhaWx1cmUuCisKK1NVQ0NFU1MKKworCisKKworCisKKworCisKKwor
CisKKworCisKKworCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbHVnaW5zL2lm
cmFtZS1zaGltcy1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAg
ICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyNDIgQEAKKzxodG1sPjxoZWFkPgorPHNjcmlwdD4KKyAgICB2YXIg
ZXhwZWN0ZWRDbGlja3MgPSBbXTsKKyAgICB2YXIgY2xpY2tzID0gW107CisKKyAgICB2YXIgaGVp
Z2h0ID0gMTAwOworICAgIHZhciB3aWR0aCA9IDEwMDsKKyAgICB2YXIgaXRlbXMgPSAwOworCisg
ICAgZnVuY3Rpb24gbWFrZVBsdWdpbkVsZW1lbnQoKQorICAgIHsKKyAgICAgICAgdmFyIGYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdlbWJlZCcpOworICAgICAgICBmLnNldEF0dHJpYnV0ZSgn
aWQnLCAnc3dmX2VtYmVkXycgKyBpdGVtcyk7CisgICAgICAgIGYuc2V0QXR0cmlidXRlKCd3aWR0
aCcsIHdpZHRoICsgJycpOworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgaGVpZ2h0
ICsgJycpOworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnd21vZGUnLCAnd2luZG93Jyk7CisgICAg
ICAgIGYuc2V0QXR0cmlidXRlKCdsb29wJywgJ2ZhbHNlJyk7CisgICAgICAgIGYuc2V0QXR0cmli
dXRlKCdzcmMnLCAncmVzb3VyY2VzL3NpbXBsZV9ibGFuay5zd2YnKTsKKyAgICAgICAgZi5zZXRB
dHRyaWJ1dGUoJ3R5cGUnLCAnYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gnKTsKKyAgICAg
ICAgcmV0dXJuIGY7CisgICAgfQorCisgICAgZnVuY3Rpb24gbWFrZUlmcmFtZURpdigpCisgICAg
eworICAgICAgICB2YXIgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAg
ICAgICBpLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICAgICAgaS5zdHlsZS50b3Ag
PSAnMTBweCc7CisgICAgICAgIGkuc3R5bGUubGVmdCA9ICczMHB4JzsKKyAgICAgICAgaS5zdHls
ZS53aWR0aCA9ICc4MHB4JzsKKyAgICAgICAgaS5zdHlsZS5oZWlnaHQgPSAnODBweCc7CisgICAg
ICAgIGkuc2V0QXR0cmlidXRlKCdmcmFtZWJvcmRlcicsICcwJyk7CisgICAgICAgIGkuc2V0QXR0
cmlidXRlKCdzcmMnLCAnamF2YXNjcmlwdDp2b2lkKDApOycpOworICAgICAgICByZXR1cm4gaTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBtYWtlT3ZlcmxheURpdihjb2xvciwgY2FzZUlkKQorICAg
IHsKKyAgICAgICAgdmFyIG8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAg
ICAgby5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICAgIG8uc3R5bGUudG9wID0g
JzEwcHgnOworICAgICAgICBvLnN0eWxlLmxlZnQgPSAnMzBweCc7CisgICAgICAgIG8uc3R5bGUu
d2lkdGggPSAnODBweCc7CisgICAgICAgIG8uc3R5bGUuaGVpZ2h0ID0gJzgwcHgnOworICAgICAg
ICBvLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGNvbG9yOworICAgICAgICBvLnN0eWxlLm92ZXJm
bG93ID0gJ2hpZGRlbic7CisgICAgICAgIG8uaW5uZXJIVE1MID0gJzxpbnB1dCB0eXBlPSJidXR0
b24iIGlkPSJidXR0b24nICsgY2FzZUlkICsgJyIgJyArCisgICAgICAgICAgICAnb25jbGljaz0i
ZG9DbGljaygnICsgY2FzZUlkICsKKyAgICAgICAgICAgICcpOyIgdmFsdWU9ImNsaWNrbWUiIHN0
eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTA7IGxlZnQ6IDEwOyB3aWR0aDogNjBweDsg
aGVpZ2h0OiA2MHB4OyIvPic7CisgICAgICAgIHJldHVybiBvOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGFkZENhc2UoeCwgeSwgdGFncykKKyAgICB7CisgICAgICAgIHZhciBjYXNlSWQgPSBpdGVt
czsKKyAgICAgICAgaXRlbXMrKzsKKworICAgICAgICB2YXIgZXhwZWN0Q2xpY2thYmxlID0gdGFn
cy5leHBlY3QgJiYgdGFncy5leHBlY3QuaW5kZXhPZignVU5ERVInKSA9PSAtMTsKKyAgICAgICAg
ZXhwZWN0ZWRDbGlja3NbY2FzZUlkXSA9IGV4cGVjdENsaWNrYWJsZTsKKworICAgICAgICB2YXIg
Y29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOworICAgICAg
ICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICByb290
LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICAgICAgcm9vdC5zdHlsZS5sZWZ0ID0g
eCAqICh3aWR0aCArIDQwKSArICdweCc7CisgICAgICAgIHJvb3Quc3R5bGUudG9wID0geSAqICho
ZWlnaHQgKyAyMCkgKyAncHgnOworICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQocm9vdCk7
CisKKyAgICAgICAgdmFyIHBsdWdpbkRpdlo7CisgICAgICAgIHZhciBvdmVybGF5RGl2WklmcmFt
ZTsKKyAgICAgICAgdmFyIG92ZXJsYXlEaXZaT3ZlcmxheTsKKyAgICAgICAgaWYgKHRhZ3MucGx1
Z2luTG93ZXJ6KSB7CisgICAgICAgICAgICBwbHVnaW5EaXZaID0gMTAwOworICAgICAgICAgICAg
b3ZlcmxheURpdlpJZnJhbWUgPSAyMDA7CisgICAgICAgICAgICBvdmVybGF5RGl2Wk92ZXJsYXkg
PSAyMDE7CisgICAgICAgIH0gZWxzZSBpZiAodGFncy5wbHVnaW5IaWdoZXJ6KSB7CisgICAgICAg
ICAgICBwbHVnaW5EaXZaID0gMjAwOworICAgICAgICAgICAgb3ZlcmxheURpdlpJZnJhbWUgPSAx
MDA7CisgICAgICAgICAgICBvdmVybGF5RGl2Wk92ZXJsYXkgPSAxMDE7CisgICAgICAgIH0gZWxz
ZSBpZiAodGFncy5wbHVnaW5FcXVhbHopIHsKKyAgICAgICAgICAgIHBsdWdpbkRpdlogPSAxMDA7
CisgICAgICAgICAgICBvdmVybGF5RGl2WklmcmFtZSA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJs
YXlEaXZaT3ZlcmxheSA9IDEwMDsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBhcHBlbmRQbHVn
aW4gPSBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwZCA9IG1ha2VQbHVn
aW5FbGVtZW50KCk7CisgICAgICAgICAgICBpZiAodGFncy5wbHVnaW5JbnNpZGVEaXYgfHwgcGx1
Z2luRGl2WikgeworICAgICAgICAgICAgICAgIHZhciBwYXJlbnRkaXYgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgICAgICAgICBwYXJlbnRkaXYuYXBwZW5kQ2hpbGQo
cGQpCisgICAgICAgICAgICAgICAgaWYgKCF0YWdzLnBsdWdpbk5vcmVsYXRpdmUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcGFyZW50ZGl2LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJzsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAocGx1Z2luRGl2WikgeworICAg
ICAgICAgICAgICAgICAgICBwYXJlbnRkaXYuc3R5bGUuekluZGV4ID0gcGx1Z2luRGl2WjsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChwYXJlbnRk
aXYpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRhZ3MucGx1
Z2luTm9yZWxhdGl2ZSkgeworICAgICAgICAgICAgICAgICAgICBwZC5zdHlsZS5wb3NpdGlvbiA9
ICdyZWxhdGl2ZSc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJvb3QuYXBw
ZW5kQ2hpbGQocGQpOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHZhciBh
cHBlbmRPdmVybGF5ID0gZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWQg
PSBtYWtlSWZyYW1lRGl2KCk7CisgICAgICAgICAgICBpZiAob3ZlcmxheURpdlpJZnJhbWUpIHsK
KyAgICAgICAgICAgICAgICBpZC5zdHlsZS56SW5kZXggPSBvdmVybGF5RGl2WklmcmFtZTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIG9kID0gbWFrZU92ZXJsYXlEaXYoZXhwZWN0
Q2xpY2thYmxlID8gJ2dyZWVuJyA6ICdyZWQnLCBjYXNlSWQpOworICAgICAgICAgICAgb2Quc3R5
bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOworICAgICAgICAgICAgaWYgKG92ZXJsYXlEaXZaT3Zl
cmxheSkgeworICAgICAgICAgICAgb2Quc3R5bGUuekluZGV4ID0gb3ZlcmxheURpdlpPdmVybGF5
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGFncy5vdmVybGF5SW5zaWRlRGl2
KSB7CisgICAgICAgICAgICAgICAgdmFyIHBhcmVudGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgICAgICAgICAgICAgIGlmIChvdmVybGF5RGl2Wk92ZXJsYXkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgcGFyZW50ZGl2LnN0eWxlLnpJbmRleCA9IG92ZXJsYXlEaXZaT3Zl
cmxheTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBwYXJlbnRkaXYuc3R5
bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOworICAgICAgICAgICAgICAgIHBhcmVudGRpdi5zdHls
ZS50b3AgPSAnMHB4JzsKKyAgICAgICAgICAgICAgICBwYXJlbnRkaXYuc3R5bGUubGVmdCA9ICcw
cHgnOworICAgICAgICAgICAgICAgIHBhcmVudGRpdi5hcHBlbmRDaGlsZChpZCk7CisgICAgICAg
ICAgICAgICAgcGFyZW50ZGl2LmFwcGVuZENoaWxkKG9kKTsKKyAgICAgICAgICAgICAgICByb290
LmFwcGVuZENoaWxkKHBhcmVudGRpdik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoaWQpOworICAgICAgICAgICAgICAgIHJvb3QuYXBwZW5k
Q2hpbGQob2QpOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh0YWdz
Lm92ZXJsYXlFYXJsaWVyKSB7CisgICAgICAgICAgICBhcHBlbmRPdmVybGF5KCk7CisgICAgICAg
ICAgICBhcHBlbmRQbHVnaW4oKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFwcGVu
ZFBsdWdpbigpOworICAgICAgICAgICAgYXBwZW5kT3ZlcmxheSgpOworICAgICAgICB9CisgICAg
IH0KKworICAgIGZ1bmN0aW9uIGRvQ2xpY2soaWQpCisgICAgeworICAgICAgICBjbGlja3NbaWRd
ID0gdHJ1ZTsKKworICAgICAgICAvLyBDaGVjayBzdWNjZXNzL2ZhaWx1cmUuCisgICAgICAgIHZh
ciBvdXRwdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0Iik7CisgICAgICAgIHZh
ciB3YWl0aW5nRm9yTW9yZUNsaWNrcyA9IGZhbHNlOworICAgICAgICB2YXIgazsKKyAgICAgICAg
Zm9yIChrIGluIGV4cGVjdGVkQ2xpY2tzKSB7CisgICAgICAgICAgICBpZiAoZXhwZWN0ZWRDbGlj
a3Nba10gJiYgIWNsaWNrc1trXSkgeworICAgICAgICAgICAgICAgIHdhaXRpbmdGb3JNb3JlQ2xp
Y2tzID0gdHJ1ZTsKKwkgICAgfSBlbHNlIGlmICghZXhwZWN0ZWRDbGlja3Nba10gJiYgY2xpY2tz
W2tdKSB7CisgICAgICAgICAgICAgICAgb3V0cHV0LmlubmVySFRNTCA9ICdGQUlMVVJFJzsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIXdhaXRpbmdGb3JNb3JlQ2xpY2tzKSB7CisgICAgICAgICAgICBvdXRwdXQuaW5uZXJI
VE1MID0gJ1NVQ0NFU1MnOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQor
CisgICAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICAgICAgYWRkQ2FzZSgwLCAwLCB7ZXhwZWN0Oidv
dmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMSwgMCwgeydvdmVybGF5RWFybGllcic6
MSwgJ292ZXJsYXlJbnNpZGVEaXYnOiAxLCAncGx1Z2luSW5zaWRlRGl2JzoxLCBleHBlY3Q6J292
ZXJsYXkgVU5ERVInfSk7CisgICAgICAgIGFkZENhc2UoMiwgMCwgeydwbHVnaW5Mb3dlcnonOjEs
IGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBhZGRDYXNlKDMsIDAsIHsncGx1Z2lu
SGlnaGVyeic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgICAgICBhZGRDYXNlKDAs
IDEsIHsnb3ZlcmxheUluc2lkZURpdic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAg
ICAgIGFkZENhc2UoMSwgMSwgeydwbHVnaW5Mb3dlcnonOjEsICdvdmVybGF5SW5zaWRlRGl2Jzox
LCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgyLCAxLCB7J3BsdWdp
bkhpZ2hlcnonOjEsICdvdmVybGF5SW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgVU5ERVIn
fSk7CisgICAgICAgIGFkZENhc2UoMCwgMiwgeydwbHVnaW5FcXVhbHonOjEsICdvdmVybGF5SW5z
aWRlRGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgxLCAy
LCB7J3BsdWdpbkVxdWFseic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOjEsICdvdmVybGF5RWFybGll
cic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgICAgICBhZGRDYXNlKDIsIDIsIHsn
b3ZlcmxheUVhcmxpZXInOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRFUid9KTsKKyAgICAgICAgYWRk
Q2FzZSgzLCAyLCB7J292ZXJsYXlFYXJsaWVyJzoxLCAncGx1Z2luTm9yZWxhdGl2ZSc6MSwgZXhw
ZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMCwgMywgeydwbHVnaW5Ob3Jl
bGF0aXZlJzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgxLCAz
LCB7J292ZXJsYXlFYXJsaWVyJzoxLCAncGx1Z2luTm9yZWxhdGl2ZSc6MSwgJ3BsdWdpbkluc2lk
ZURpdic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMiwgMywg
eydwbHVnaW5Ob3JlbGF0aXZlJzoxLCAncGx1Z2luSW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJs
YXkgT1ZFUid9KTsKKworICAgICAgICBydW5UZXN0KCk7CisgICAgfQorCisgICAgLy8gQXV0b21h
dGlvbjogdHJ5IHRvIGNsaWNrIG9uIGVhY2ggYnV0dG9uLgorICAgIHZhciBuZXh0SWRUb0NsaWNr
ID0gMDsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGRvTmV4
dENsaWNrLCAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIG1vdmVNb3VzZU92
ZXIoZWxlbU5hbWUpIHsKKyAgICAgICAgdmFyIGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZChlbGVtTmFtZSk7CisgICAgICAgIHZhciB4ID0gZWxlbS5vZmZzZXRMZWZ0ICsgZWxlbS5zY3Jv
bGxXaWR0aCAvIDI7CisgICAgICAgIHZhciB5ID0gZWxlbS5vZmZzZXRUb3AgKyBlbGVtLnNjcm9s
bEhlaWdodCAvIDI7CisgICAgICAgIHZhciBvZmZzZXRQYXJlbnQgPSBlbGVtLm9mZnNldFBhcmVu
dDsKKyAgICAgICAgd2hpbGUgKG9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgeCArPSBvZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHkgKz0gb2Zmc2V0UGFyZW50Lm9mZnNl
dFRvcDsKKyAgICAgICAgICAgIG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgIH0KKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gZG9OZXh0Q2xpY2soKSB7CisgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKKyAgICAgICAgaWYgKG5leHRJZFRvQ2xpY2sgPCBleHBlY3RlZENsaWNrcy5s
ZW5ndGgpIHsKKyAgICAgICAgICAgIG1vdmVNb3VzZU92ZXIoJ2J1dHRvbicgKyBuZXh0SWRUb0Ns
aWNrKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAg
bmV4dElkVG9DbGljaysrOworICAgICAgICAgICAgc2V0VGltZW91dChkb05leHRDbGljaywgMCk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgICAgIH0sIDApOworICAgICAgICB9CisgICAgfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0iaW5pdCgpIj4KKworICAgIDxwPlRlc3QgdGhhdCBpZnJhbWUgc2hpbXMgY2Fu
IGJlIHVzZWQgdG8gb3ZlcmxheSBIVE1MIGFib3ZlIGEKKyAgICB3aW5kb3dlZCBwbHVnaW4uIFRo
ZSByZWQgc3F1YXJlcyBzaG91bGQgYmUgaGlkZGVuIGJ5IHRoZSBibHVlCisgICAgZmxhc2ggcGx1
Z2lucywgYW5kIHRoZSBncmVlbiBzcXVhcmVzIHNob3VsZCBhcHBlYXIgb3ZlciB0aGUKKyAgICBw
bHVnaW5zLiBUbyB0ZXN0IGludGVyYWN0aXZlbHksIGNsaWNrIG92ZXIgdGhlIGJ1dHRvbnMgb24g
dGhlCisgICAgc3F1YXJlcy4gWW91IHNob3VsZCBub3QgYmUgYWJsZSB0byByZWFjaCB0aGUgcmVk
IHNxdWFyZXMnCisgICAgYnV0dG9ucy48L3A+CisKKyAgICA8cD5QcmludHMgIlNVQ0NFU1MiIG9u
IHN1Y2Nlc3MsICJGQUlMVVJFIiBvbiBmYWlsdXJlLjwvcD4KKyAgICA8ZGl2IGlkPW91dHB1dD5O
T05FPC9kaXY+CisgICAgPGRpdiBpZD0iY29udGFpbmVyIiBzdHlsZT0icG9zaXRpb246IHJlbGF0
aXZlOyI+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46
ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL3Jlc291cmNlcy9z
aW1wbGVfYmxhbmsuc3dmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFz
IGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0K
ClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsdWdpbnMvcmVzb3VyY2VzL3NpbXBs
ZV9ibGFuay5zd2YKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtCgoKUTFkVEJ4MEFBQUI0Mml0ZzRHbGdZSmpHd01ERHlPRE14TUR3MzRH
QmdRRUFKUFFESkE9PQoK
</data>
<flag name="review"
          id="20024"
          type_id="1"
          status="-"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39279</attachid>
            <date>2009-09-09 11:01:24 -0700</date>
            <delta_ts>2009-09-09 11:05:47 -0700</delta_ts>
            <desc>Patch with style fixes</desc>
            <filename>iframe-shims.txt</filename>
            <type>text/plain</type>
            <size>10828</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ4MjEyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDktMDIgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4OTE0
CisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IHRvIHRlc3QgaWZyYW1lIHNoaW0gY2FuIGJlIHVz
ZWQKKyAgICAgICAgdG8gb3ZlcmxheSBodG1sIGFib3ZlIGEgd2luZG93ZWQgcGx1Z2luLiBJdCBj
aGVja3MKKyAgICAgICAgcHJlbXV0YXRpb25zIG9mIGlmcmFtZSBzaGltcyBpbiByZWxhdGlvbnNo
aXAgdG8gCisgICAgICAgIHBsdWdpbi4KKworICAgICAgICAqIHBsdWdpbnMvaWZyYW1lLXNoaW1z
LWV4cGVjdGVkLnR4dDogQWRkZWQgd2l0aCBwcm9wZXJ0eSBzdm46ZW9sLXN0eWxlLgorICAgICAg
ICAqIHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWw6IEFkZGVkIHdpdGggcHJvcGVydHkgc3ZuOmVv
bC1zdHlsZS4KKyAgICAgICAgKiBwbHVnaW5zL3Jlc291cmNlcy9zaW1wbGVfYmxhbmsuc3dmOiBB
ZGRlZCB3aXRoIHByb3BlcnR5IHN2bjptaW1lLXR5cGUuCisKIDIwMDktMDktMDkgIEVyaWsgQXJ2
aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBM
ZXZpbi4KSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5zL2lmcmFtZS1zaGltcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbHVnaW5zL2lmcmFtZS1zaGltcy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3QgdGhhdCBpZnJh
bWUgc2hpbXMgY2FuIGJlIHVzZWQgdG8gb3ZlcmxheSBIVE1MIGFib3ZlIGEgd2luZG93ZWQgcGx1
Z2luLiBUaGUgcmVkIHNxdWFyZXMgc2hvdWxkIGJlIGhpZGRlbiBieSB0aGUgYmx1ZSBmbGFzaCBw
bHVnaW5zLCBhbmQgdGhlIGdyZWVuIHNxdWFyZXMgc2hvdWxkIGFwcGVhciBvdmVyIHRoZSBwbHVn
aW5zLiBUbyB0ZXN0IGludGVyYWN0aXZlbHksIGNsaWNrIG92ZXIgdGhlIGJ1dHRvbnMgb24gdGhl
IHNxdWFyZXMuIFlvdSBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVhY2ggdGhlIHJlZCBzcXVhcmVz
JyBidXR0b25zLgorCitQcmludHMgIlNVQ0NFU1MiIG9uIHN1Y2Nlc3MsICJGQUlMVVJFIiBvbiBm
YWlsdXJlLgorCitTVUNDRVNTCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGx1Z2lucy9pZnJhbWUtc2hpbXMtZXhwZWN0
ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6
IExheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjM4IEBACis8aHRtbD48aGVhZD4KKzxzY3JpcHQ+CisgICAgdmFyIGV4cGVjdGVkQ2xpY2tzID0g
W107CisgICAgdmFyIGNsaWNrcyA9IFtdOworCisgICAgdmFyIGhlaWdodCA9IDEwMDsKKyAgICB2
YXIgd2lkdGggPSAxMDA7CisgICAgdmFyIGl0ZW1zID0gMDsKKworICAgIGZ1bmN0aW9uIG1ha2VQ
bHVnaW5FbGVtZW50KCkKKyAgICB7CisgICAgICAgIHZhciBmID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZW1iZWQnKTsKKyAgICAgICAgZi5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3N3Zl9lbWJlZF8n
ICsgaXRlbXMpOworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCB3aWR0aCArICcnKTsK
KyAgICAgICAgZi5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIGhlaWdodCArICcnKTsKKyAgICAgICAg
Zi5zZXRBdHRyaWJ1dGUoJ3dtb2RlJywgJ3dpbmRvdycpOworICAgICAgICBmLnNldEF0dHJpYnV0
ZSgnbG9vcCcsICdmYWxzZScpOworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnc3JjJywgJ3Jlc291
cmNlcy9zaW1wbGVfYmxhbmsuc3dmJyk7CisgICAgICAgIGYuc2V0QXR0cmlidXRlKCd0eXBlJywg
J2FwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoJyk7CisgICAgICAgIHJldHVybiBmOworICAg
IH0KKworICAgIGZ1bmN0aW9uIG1ha2VJZnJhbWVEaXYoKQorICAgIHsKKyAgICAgICAgdmFyIGkg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICAgICAgaS5zdHlsZS5wb3Np
dGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICAgIGkuc3R5bGUudG9wID0gJzEwcHgnOworICAgICAg
ICBpLnN0eWxlLmxlZnQgPSAnMzBweCc7CisgICAgICAgIGkuc3R5bGUud2lkdGggPSAnODBweCc7
CisgICAgICAgIGkuc3R5bGUuaGVpZ2h0ID0gJzgwcHgnOworICAgICAgICBpLnNldEF0dHJpYnV0
ZSgnZnJhbWVib3JkZXInLCAnMCcpOworICAgICAgICBpLnNldEF0dHJpYnV0ZSgnc3JjJywgJ2ph
dmFzY3JpcHQ6dm9pZCgwKTsnKTsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gbWFrZU92ZXJsYXlEaXYoY29sb3IsIGNhc2VJZCkKKyAgICB7CisgICAgICAgIHZhciBv
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIG8uc3R5bGUucG9zaXRp
b24gPSAnYWJzb2x1dGUnOworICAgICAgICBvLnN0eWxlLnRvcCA9ICcxMHB4JzsKKyAgICAgICAg
by5zdHlsZS5sZWZ0ID0gJzMwcHgnOworICAgICAgICBvLnN0eWxlLndpZHRoID0gJzgwcHgnOwor
ICAgICAgICBvLnN0eWxlLmhlaWdodCA9ICc4MHB4JzsKKyAgICAgICAgby5zdHlsZS5iYWNrZ3Jv
dW5kQ29sb3IgPSBjb2xvcjsKKyAgICAgICAgby5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nOwor
ICAgICAgICBvLmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0dG9uJyAr
IGNhc2VJZCArICciICcgKworICAgICAgICAgICAgJ29uY2xpY2s9ImRvQ2xpY2soJyArIGNhc2VJ
ZCArCisgICAgICAgICAgICAnKTsiIHZhbHVlPSJjbGlja21lIiBzdHlsZT0icG9zaXRpb246IGFi
c29sdXRlOyB0b3A6IDEwOyBsZWZ0OiAxMDsgd2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiLz4n
OworICAgICAgICByZXR1cm4gbzsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRDYXNlKHgsIHks
IHRhZ3MpCisgICAgeworICAgICAgICB2YXIgY2FzZUlkID0gaXRlbXM7CisgICAgICAgIGl0ZW1z
Kys7CisKKyAgICAgICAgdmFyIGV4cGVjdENsaWNrYWJsZSA9IHRhZ3MuZXhwZWN0ICYmIHRhZ3Mu
ZXhwZWN0LmluZGV4T2YoJ1VOREVSJykgPT0gLTE7CisgICAgICAgIGV4cGVjdGVkQ2xpY2tzW2Nh
c2VJZF0gPSBleHBlY3RDbGlja2FibGU7CisKKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKTsKKyAgICAgICAgdmFyIHJvb3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgcm9vdC5zdHlsZS5wb3NpdGlvbiA9
ICdhYnNvbHV0ZSc7CisgICAgICAgIHJvb3Quc3R5bGUubGVmdCA9IHggKiAod2lkdGggKyA0MCkg
KyAncHgnOworICAgICAgICByb290LnN0eWxlLnRvcCA9IHkgKiAoaGVpZ2h0ICsgMjApICsgJ3B4
JzsKKyAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgICAgIHZhciBw
bHVnaW5EaXZaOworICAgICAgICB2YXIgb3ZlcmxheURpdlpJZnJhbWU7CisgICAgICAgIHZhciBv
dmVybGF5RGl2Wk92ZXJsYXk7CisgICAgICAgIGlmICh0YWdzLnBsdWdpbkxvd2VyeikgeworICAg
ICAgICAgICAgcGx1Z2luRGl2WiA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJsYXlEaXZaSWZyYW1l
ID0gMjAwOworICAgICAgICAgICAgb3ZlcmxheURpdlpPdmVybGF5ID0gMjAxOworICAgICAgICB9
IGVsc2UgaWYgKHRhZ3MucGx1Z2luSGlnaGVyeikgeworICAgICAgICAgICAgcGx1Z2luRGl2WiA9
IDIwMDsKKyAgICAgICAgICAgIG92ZXJsYXlEaXZaSWZyYW1lID0gMTAwOworICAgICAgICAgICAg
b3ZlcmxheURpdlpPdmVybGF5ID0gMTAxOworICAgICAgICB9IGVsc2UgaWYgKHRhZ3MucGx1Z2lu
RXF1YWx6KSB7CisgICAgICAgICAgICBwbHVnaW5EaXZaID0gMTAwOworICAgICAgICAgICAgb3Zl
cmxheURpdlpJZnJhbWUgPSAxMDA7CisgICAgICAgICAgICBvdmVybGF5RGl2Wk92ZXJsYXkgPSAx
MDA7CisgICAgICAgIH0KKworICAgICAgICB2YXIgYXBwZW5kUGx1Z2luID0gZnVuY3Rpb24oKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcGQgPSBtYWtlUGx1Z2luRWxlbWVudCgpOworICAg
ICAgICAgICAgaWYgKHRhZ3MucGx1Z2luSW5zaWRlRGl2IHx8IHBsdWdpbkRpdlopIHsKKyAgICAg
ICAgICAgICAgICB2YXIgcGFyZW50ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgICAgICAgICAgICAgcGFyZW50ZGl2LmFwcGVuZENoaWxkKHBkKQorICAgICAgICAgICAg
ICAgIGlmICghdGFncy5wbHVnaW5Ob3JlbGF0aXZlKQorICAgICAgICAgICAgICAgICAgICBwYXJl
bnRkaXYuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOworCisgICAgICAgICAgICAgICAgaWYg
KHBsdWdpbkRpdlopCisgICAgICAgICAgICAgICAgICAgIHBhcmVudGRpdi5zdHlsZS56SW5kZXgg
PSBwbHVnaW5EaXZaOworCisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChwYXJlbnRk
aXYpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRhZ3MucGx1
Z2luTm9yZWxhdGl2ZSkKKyAgICAgICAgICAgICAgICAgICAgcGQuc3R5bGUucG9zaXRpb24gPSAn
cmVsYXRpdmUnOworCisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChwZCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgdmFyIGFwcGVuZE92ZXJsYXkgPSBmdW5j
dGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZCA9IG1ha2VJZnJhbWVEaXYoKTsK
KyAgICAgICAgICAgIGlmIChvdmVybGF5RGl2WklmcmFtZSkKKyAgICAgICAgICAgICAgICBpZC5z
dHlsZS56SW5kZXggPSBvdmVybGF5RGl2WklmcmFtZTsKKworICAgICAgICAgICAgdmFyIG9kID0g
bWFrZU92ZXJsYXlEaXYoZXhwZWN0Q2xpY2thYmxlID8gJ2dyZWVuJyA6ICdyZWQnLCBjYXNlSWQp
OworICAgICAgICAgICAgb2Quc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOworICAgICAgICAg
ICAgaWYgKG92ZXJsYXlEaXZaT3ZlcmxheSkKKyAgICAgICAgICAgICAgICBvZC5zdHlsZS56SW5k
ZXggPSBvdmVybGF5RGl2Wk92ZXJsYXk7CisKKyAgICAgICAgICAgIGlmICh0YWdzLm92ZXJsYXlJ
bnNpZGVEaXYpIHsKKyAgICAgICAgICAgICAgICB2YXIgcGFyZW50ZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICAgICAgaWYgKG92ZXJsYXlEaXZaT3Zlcmxh
eSkKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50ZGl2LnN0eWxlLnpJbmRleCA9IG92ZXJsYXlE
aXZaT3ZlcmxheTsKKworICAgICAgICAgICAgICAgIHBhcmVudGRpdi5zdHlsZS5wb3NpdGlvbiA9
ICdhYnNvbHV0ZSc7CisgICAgICAgICAgICAgICAgcGFyZW50ZGl2LnN0eWxlLnRvcCA9ICcwcHgn
OworICAgICAgICAgICAgICAgIHBhcmVudGRpdi5zdHlsZS5sZWZ0ID0gJzBweCc7CisgICAgICAg
ICAgICAgICAgcGFyZW50ZGl2LmFwcGVuZENoaWxkKGlkKTsKKyAgICAgICAgICAgICAgICBwYXJl
bnRkaXYuYXBwZW5kQ2hpbGQob2QpOworICAgICAgICAgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQo
cGFyZW50ZGl2KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcm9vdC5h
cHBlbmRDaGlsZChpZCk7CisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChvZCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHRhZ3Mub3ZlcmxheUVhcmxp
ZXIpIHsKKyAgICAgICAgICAgIGFwcGVuZE92ZXJsYXkoKTsKKyAgICAgICAgICAgIGFwcGVuZFBs
dWdpbigpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXBwZW5kUGx1Z2luKCk7Cisg
ICAgICAgICAgICBhcHBlbmRPdmVybGF5KCk7CisgICAgICAgIH0KKyAgICAgfQorCisgICAgZnVu
Y3Rpb24gZG9DbGljayhpZCkKKyAgICB7CisgICAgICAgIGNsaWNrc1tpZF0gPSB0cnVlOworCisg
ICAgICAgIC8vIENoZWNrIHN1Y2Nlc3MvZmFpbHVyZS4KKyAgICAgICAgdmFyIG91dHB1dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKTsKKyAgICAgICAgdmFyIHdhaXRpbmdGb3JN
b3JlQ2xpY2tzID0gZmFsc2U7CisgICAgICAgIHZhciBrOworICAgICAgICBmb3IgKGsgaW4gZXhw
ZWN0ZWRDbGlja3MpIHsKKyAgICAgICAgICAgIGlmIChleHBlY3RlZENsaWNrc1trXSAmJiAhY2xp
Y2tzW2tdKQorICAgICAgICAgICAgICAgIHdhaXRpbmdGb3JNb3JlQ2xpY2tzID0gdHJ1ZTsKKwkg
ICAgZWxzZSBpZiAoIWV4cGVjdGVkQ2xpY2tzW2tdICYmIGNsaWNrc1trXSkgeworICAgICAgICAg
ICAgICAgIG91dHB1dC5pbm5lckhUTUwgPSAnRkFJTFVSRSc7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCF3YWl0aW5nRm9y
TW9yZUNsaWNrcykgeworICAgICAgICAgICAgb3V0cHV0LmlubmVySFRNTCA9ICdTVUNDRVNTJzsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGlu
aXQoKSB7CisgICAgICAgIGFkZENhc2UoMCwgMCwge2V4cGVjdDonb3ZlcmxheSBPVkVSJ30pOwor
ICAgICAgICBhZGRDYXNlKDEsIDAsIHsnb3ZlcmxheUVhcmxpZXInOjEsICdvdmVybGF5SW5zaWRl
RGl2JzogMSwgJ3BsdWdpbkluc2lkZURpdic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOwor
ICAgICAgICBhZGRDYXNlKDIsIDAsIHsncGx1Z2luTG93ZXJ6JzoxLCBleHBlY3Q6J292ZXJsYXkg
T1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgzLCAwLCB7J3BsdWdpbkhpZ2hlcnonOjEsIGV4cGVj
dDonb3ZlcmxheSBVTkRFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgwLCAxLCB7J292ZXJsYXlJbnNp
ZGVEaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBhZGRDYXNlKDEsIDEs
IHsncGx1Z2luTG93ZXJ6JzoxLCAnb3ZlcmxheUluc2lkZURpdic6MSwgZXhwZWN0OidvdmVybGF5
IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMiwgMSwgeydwbHVnaW5IaWdoZXJ6JzoxLCAnb3Zl
cmxheUluc2lkZURpdic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgICAgICBhZGRD
YXNlKDAsIDIsIHsncGx1Z2luRXF1YWx6JzoxLCAnb3ZlcmxheUluc2lkZURpdic6MSwgZXhwZWN0
OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMSwgMiwgeydwbHVnaW5FcXVhbHon
OjEsICdvdmVybGF5SW5zaWRlRGl2JzoxLCAnb3ZlcmxheUVhcmxpZXInOjEsIGV4cGVjdDonb3Zl
cmxheSBVTkRFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgyLCAyLCB7J292ZXJsYXlFYXJsaWVyJzox
LCBleHBlY3Q6J292ZXJsYXkgVU5ERVInfSk7CisgICAgICAgIGFkZENhc2UoMywgMiwgeydvdmVy
bGF5RWFybGllcic6MSwgJ3BsdWdpbk5vcmVsYXRpdmUnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVS
J30pOworICAgICAgICBhZGRDYXNlKDAsIDMsIHsncGx1Z2luTm9yZWxhdGl2ZSc6MSwgZXhwZWN0
OidvdmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMSwgMywgeydvdmVybGF5RWFybGll
cic6MSwgJ3BsdWdpbk5vcmVsYXRpdmUnOjEsICdwbHVnaW5JbnNpZGVEaXYnOjEsIGV4cGVjdDon
b3ZlcmxheSBPVkVSJ30pOworICAgICAgICBhZGRDYXNlKDIsIDMsIHsncGx1Z2luTm9yZWxhdGl2
ZSc6MSwgJ3BsdWdpbkluc2lkZURpdic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7CisKKyAg
ICAgICAgcnVuVGVzdCgpOworICAgIH0KKworICAgIC8vIEF1dG9tYXRpb246IHRyeSB0byBjbGlj
ayBvbiBlYWNoIGJ1dHRvbi4KKyAgICB2YXIgbmV4dElkVG9DbGljayA9IDA7CisKKyAgICBmdW5j
dGlvbiBydW5UZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
ICYmIHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICAgICAgc2V0VGltZW91dChkb05leHRDbGljaywgMCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBtb3ZlTW91c2VPdmVyKGVsZW1OYW1lKSB7Cisg
ICAgICAgIHZhciBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbU5hbWUpOworICAg
ICAgICB2YXIgeCA9IGVsZW0ub2Zmc2V0TGVmdCArIGVsZW0uc2Nyb2xsV2lkdGggLyAyOworICAg
ICAgICB2YXIgeSA9IGVsZW0ub2Zmc2V0VG9wICsgZWxlbS5zY3JvbGxIZWlnaHQgLyAyOworICAg
ICAgICB2YXIgb2Zmc2V0UGFyZW50ID0gZWxlbS5vZmZzZXRQYXJlbnQ7CisgICAgICAgIHdoaWxl
IChvZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgIHggKz0gb2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICB5ICs9IG9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICBvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50OworICAgICAgICB9Cisg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGRvTmV4dENsaWNrKCkgeworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAg
ICAgIGlmIChuZXh0SWRUb0NsaWNrIDwgZXhwZWN0ZWRDbGlja3MubGVuZ3RoKSB7CisgICAgICAg
ICAgICBtb3ZlTW91c2VPdmVyKCdidXR0b24nICsgbmV4dElkVG9DbGljayk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIG5leHRJZFRvQ2xpY2srKzsK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZG9OZXh0Q2xpY2ssIDApOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9LCAwKTsKKyAg
ICAgICAgfQorICAgIH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImluaXQo
KSI+CisKKyAgICA8cD5UZXN0IHRoYXQgaWZyYW1lIHNoaW1zIGNhbiBiZSB1c2VkIHRvIG92ZXJs
YXkgSFRNTCBhYm92ZSBhCisgICAgd2luZG93ZWQgcGx1Z2luLiBUaGUgcmVkIHNxdWFyZXMgc2hv
dWxkIGJlIGhpZGRlbiBieSB0aGUgYmx1ZQorICAgIGZsYXNoIHBsdWdpbnMsIGFuZCB0aGUgZ3Jl
ZW4gc3F1YXJlcyBzaG91bGQgYXBwZWFyIG92ZXIgdGhlCisgICAgcGx1Z2lucy4gVG8gdGVzdCBp
bnRlcmFjdGl2ZWx5LCBjbGljayBvdmVyIHRoZSBidXR0b25zIG9uIHRoZQorICAgIHNxdWFyZXMu
IFlvdSBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVhY2ggdGhlIHJlZCBzcXVhcmVzJworICAgIGJ1
dHRvbnMuPC9wPgorCisgICAgPHA+UHJpbnRzICJTVUNDRVNTIiBvbiBzdWNjZXNzLCAiRkFJTFVS
RSIgb24gZmFpbHVyZS48L3A+CisgICAgPGRpdiBpZD1vdXRwdXQ+Tk9ORTwvZGl2PgorICAgIDxk
aXYgaWQ9ImNvbnRhaW5lciIgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsiPjwvZGl2PgorCis8
L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbHVnaW5z
L2lmcmFtZS1zaGltcy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExG
CgpJbmRleDogTGF5b3V0VGVzdHMvcGx1Z2lucy9yZXNvdXJjZXMvc2ltcGxlX2JsYW5rLnN3Zgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpz
dm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBMYXlvdXRUZXN0cy9wbHVnaW5zL3Jlc291cmNlcy9zaW1wbGVfYmxhbmsuc3dmCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoK
ClExZFRCeDBBQUFCNDJpdGc0R2xnWUpqR3dNRER5T0RNeE1EdzM0R0JnUUVBSlBRREpBPT0KCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39280</attachid>
            <date>2009-09-09 11:05:47 -0700</date>
            <delta_ts>2009-09-22 10:19:27 -0700</delta_ts>
            <desc>More style fixes</desc>
            <filename>iframe-shims.txt</filename>
            <type>text/plain</type>
            <size>10835</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ4MjEyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDktMDIgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4OTE0
CisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IHRvIHRlc3QgaWZyYW1lIHNoaW0gY2FuIGJlIHVz
ZWQKKyAgICAgICAgdG8gb3ZlcmxheSBodG1sIGFib3ZlIGEgd2luZG93ZWQgcGx1Z2luLiBJdCBj
aGVja3MKKyAgICAgICAgcHJlbXV0YXRpb25zIG9mIGlmcmFtZSBzaGltcyBpbiByZWxhdGlvbnNo
aXAgdG8gCisgICAgICAgIHBsdWdpbi4KKworICAgICAgICAqIHBsdWdpbnMvaWZyYW1lLXNoaW1z
LWV4cGVjdGVkLnR4dDogQWRkZWQgd2l0aCBwcm9wZXJ0eSBzdm46ZW9sLXN0eWxlLgorICAgICAg
ICAqIHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWw6IEFkZGVkIHdpdGggcHJvcGVydHkgc3ZuOmVv
bC1zdHlsZS4KKyAgICAgICAgKiBwbHVnaW5zL3Jlc291cmNlcy9zaW1wbGVfYmxhbmsuc3dmOiBB
ZGRlZCB3aXRoIHByb3BlcnR5IHN2bjptaW1lLXR5cGUuCisKIDIwMDktMDktMDkgIEVyaWsgQXJ2
aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBM
ZXZpbi4KSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5zL2lmcmFtZS1zaGltcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbHVnaW5zL2lmcmFtZS1zaGltcy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3QgdGhhdCBpZnJh
bWUgc2hpbXMgY2FuIGJlIHVzZWQgdG8gb3ZlcmxheSBIVE1MIGFib3ZlIGEgd2luZG93ZWQgcGx1
Z2luLiBUaGUgcmVkIHNxdWFyZXMgc2hvdWxkIGJlIGhpZGRlbiBieSB0aGUgYmx1ZSBmbGFzaCBw
bHVnaW5zLCBhbmQgdGhlIGdyZWVuIHNxdWFyZXMgc2hvdWxkIGFwcGVhciBvdmVyIHRoZSBwbHVn
aW5zLiBUbyB0ZXN0IGludGVyYWN0aXZlbHksIGNsaWNrIG92ZXIgdGhlIGJ1dHRvbnMgb24gdGhl
IHNxdWFyZXMuIFlvdSBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVhY2ggdGhlIHJlZCBzcXVhcmVz
JyBidXR0b25zLgorCitQcmludHMgIlNVQ0NFU1MiIG9uIHN1Y2Nlc3MsICJGQUlMVVJFIiBvbiBm
YWlsdXJlLgorCitTVUNDRVNTCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGx1Z2lucy9pZnJhbWUtc2hpbXMtZXhwZWN0
ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6
IExheW91dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjM4IEBACis8aHRtbD48aGVhZD4KKzxzY3JpcHQ+CisgICAgdmFyIGV4cGVjdGVkQ2xpY2tzID0g
W107CisgICAgdmFyIGNsaWNrcyA9IFtdOworCisgICAgdmFyIGhlaWdodCA9IDEwMDsKKyAgICB2
YXIgd2lkdGggPSAxMDA7CisgICAgdmFyIGl0ZW1zID0gMDsKKworICAgIGZ1bmN0aW9uIG1ha2VQ
bHVnaW5FbGVtZW50KCkKKyAgICB7CisgICAgICAgIHZhciBmID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZW1iZWQnKTsKKyAgICAgICAgZi5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3N3Zl9lbWJlZF8n
ICsgaXRlbXMpOworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCB3aWR0aCArICcnKTsK
KyAgICAgICAgZi5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIGhlaWdodCArICcnKTsKKyAgICAgICAg
Zi5zZXRBdHRyaWJ1dGUoJ3dtb2RlJywgJ3dpbmRvdycpOworICAgICAgICBmLnNldEF0dHJpYnV0
ZSgnbG9vcCcsICdmYWxzZScpOworICAgICAgICBmLnNldEF0dHJpYnV0ZSgnc3JjJywgJ3Jlc291
cmNlcy9zaW1wbGVfYmxhbmsuc3dmJyk7CisgICAgICAgIGYuc2V0QXR0cmlidXRlKCd0eXBlJywg
J2FwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoJyk7CisgICAgICAgIHJldHVybiBmOworICAg
IH0KKworICAgIGZ1bmN0aW9uIG1ha2VJZnJhbWVEaXYoKQorICAgIHsKKyAgICAgICAgdmFyIGkg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICAgICAgaS5zdHlsZS5wb3Np
dGlvbiA9ICdhYnNvbHV0ZSc7CisgICAgICAgIGkuc3R5bGUudG9wID0gJzEwcHgnOworICAgICAg
ICBpLnN0eWxlLmxlZnQgPSAnMzBweCc7CisgICAgICAgIGkuc3R5bGUud2lkdGggPSAnODBweCc7
CisgICAgICAgIGkuc3R5bGUuaGVpZ2h0ID0gJzgwcHgnOworICAgICAgICBpLnNldEF0dHJpYnV0
ZSgnZnJhbWVib3JkZXInLCAnMCcpOworICAgICAgICBpLnNldEF0dHJpYnV0ZSgnc3JjJywgJ2ph
dmFzY3JpcHQ6dm9pZCgwKTsnKTsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gbWFrZU92ZXJsYXlEaXYoY29sb3IsIGNhc2VJZCkKKyAgICB7CisgICAgICAgIHZhciBv
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIG8uc3R5bGUucG9zaXRp
b24gPSAnYWJzb2x1dGUnOworICAgICAgICBvLnN0eWxlLnRvcCA9ICcxMHB4JzsKKyAgICAgICAg
by5zdHlsZS5sZWZ0ID0gJzMwcHgnOworICAgICAgICBvLnN0eWxlLndpZHRoID0gJzgwcHgnOwor
ICAgICAgICBvLnN0eWxlLmhlaWdodCA9ICc4MHB4JzsKKyAgICAgICAgby5zdHlsZS5iYWNrZ3Jv
dW5kQ29sb3IgPSBjb2xvcjsKKyAgICAgICAgby5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nOwor
ICAgICAgICBvLmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0dG9uJyAr
IGNhc2VJZCArICciICcgKworICAgICAgICAgICAgJ29uY2xpY2s9ImRvQ2xpY2soJyArIGNhc2VJ
ZCArCisgICAgICAgICAgICAnKTsiIHZhbHVlPSJjbGlja21lIiBzdHlsZT0icG9zaXRpb246IGFi
c29sdXRlOyB0b3A6IDEwOyBsZWZ0OiAxMDsgd2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiLz4n
OworICAgICAgICByZXR1cm4gbzsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRDYXNlKHgsIHks
IHRhZ3MpCisgICAgeworICAgICAgICB2YXIgY2FzZUlkID0gaXRlbXM7CisgICAgICAgIGl0ZW1z
Kys7CisKKyAgICAgICAgdmFyIGV4cGVjdENsaWNrYWJsZSA9IHRhZ3MuZXhwZWN0ICYmIHRhZ3Mu
ZXhwZWN0LmluZGV4T2YoJ1VOREVSJykgPT0gLTE7CisgICAgICAgIGV4cGVjdGVkQ2xpY2tzW2Nh
c2VJZF0gPSBleHBlY3RDbGlja2FibGU7CisKKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKTsKKyAgICAgICAgdmFyIHJvb3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgcm9vdC5zdHlsZS5wb3NpdGlvbiA9
ICdhYnNvbHV0ZSc7CisgICAgICAgIHJvb3Quc3R5bGUubGVmdCA9IHggKiAod2lkdGggKyA0MCkg
KyAncHgnOworICAgICAgICByb290LnN0eWxlLnRvcCA9IHkgKiAoaGVpZ2h0ICsgMjApICsgJ3B4
JzsKKyAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgICAgIHZhciBw
bHVnaW5EaXZaOworICAgICAgICB2YXIgb3ZlcmxheURpdlpJZnJhbWU7CisgICAgICAgIHZhciBv
dmVybGF5RGl2Wk92ZXJsYXk7CisgICAgICAgIGlmICh0YWdzLnBsdWdpbkxvd2VyeikgeworICAg
ICAgICAgICAgcGx1Z2luRGl2WiA9IDEwMDsKKyAgICAgICAgICAgIG92ZXJsYXlEaXZaSWZyYW1l
ID0gMjAwOworICAgICAgICAgICAgb3ZlcmxheURpdlpPdmVybGF5ID0gMjAxOworICAgICAgICB9
IGVsc2UgaWYgKHRhZ3MucGx1Z2luSGlnaGVyeikgeworICAgICAgICAgICAgcGx1Z2luRGl2WiA9
IDIwMDsKKyAgICAgICAgICAgIG92ZXJsYXlEaXZaSWZyYW1lID0gMTAwOworICAgICAgICAgICAg
b3ZlcmxheURpdlpPdmVybGF5ID0gMTAxOworICAgICAgICB9IGVsc2UgaWYgKHRhZ3MucGx1Z2lu
RXF1YWx6KSB7CisgICAgICAgICAgICBwbHVnaW5EaXZaID0gMTAwOworICAgICAgICAgICAgb3Zl
cmxheURpdlpJZnJhbWUgPSAxMDA7CisgICAgICAgICAgICBvdmVybGF5RGl2Wk92ZXJsYXkgPSAx
MDA7CisgICAgICAgIH0KKworICAgICAgICB2YXIgYXBwZW5kUGx1Z2luID0gZnVuY3Rpb24oKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcGQgPSBtYWtlUGx1Z2luRWxlbWVudCgpOworICAg
ICAgICAgICAgaWYgKHRhZ3MucGx1Z2luSW5zaWRlRGl2IHx8IHBsdWdpbkRpdlopIHsKKyAgICAg
ICAgICAgICAgICB2YXIgcGFyZW50ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgICAgICAgICAgICAgcGFyZW50ZGl2LmFwcGVuZENoaWxkKHBkKQorICAgICAgICAgICAg
ICAgIGlmICghdGFncy5wbHVnaW5Ob3JlbGF0aXZlKQorICAgICAgICAgICAgICAgICAgICBwYXJl
bnRkaXYuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOworCisgICAgICAgICAgICAgICAgaWYg
KHBsdWdpbkRpdlopCisgICAgICAgICAgICAgICAgICAgIHBhcmVudGRpdi5zdHlsZS56SW5kZXgg
PSBwbHVnaW5EaXZaOworCisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChwYXJlbnRk
aXYpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRhZ3MucGx1
Z2luTm9yZWxhdGl2ZSkKKyAgICAgICAgICAgICAgICAgICAgcGQuc3R5bGUucG9zaXRpb24gPSAn
cmVsYXRpdmUnOworCisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChwZCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgdmFyIGFwcGVuZE92ZXJsYXkgPSBmdW5j
dGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZCA9IG1ha2VJZnJhbWVEaXYoKTsK
KyAgICAgICAgICAgIGlmIChvdmVybGF5RGl2WklmcmFtZSkKKyAgICAgICAgICAgICAgICBpZC5z
dHlsZS56SW5kZXggPSBvdmVybGF5RGl2WklmcmFtZTsKKworICAgICAgICAgICAgdmFyIG9kID0g
bWFrZU92ZXJsYXlEaXYoZXhwZWN0Q2xpY2thYmxlID8gJ2dyZWVuJyA6ICdyZWQnLCBjYXNlSWQp
OworICAgICAgICAgICAgb2Quc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOworICAgICAgICAg
ICAgaWYgKG92ZXJsYXlEaXZaT3ZlcmxheSkKKyAgICAgICAgICAgICAgICBvZC5zdHlsZS56SW5k
ZXggPSBvdmVybGF5RGl2Wk92ZXJsYXk7CisKKyAgICAgICAgICAgIGlmICh0YWdzLm92ZXJsYXlJ
bnNpZGVEaXYpIHsKKyAgICAgICAgICAgICAgICB2YXIgcGFyZW50ZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICAgICAgaWYgKG92ZXJsYXlEaXZaT3Zlcmxh
eSkKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50ZGl2LnN0eWxlLnpJbmRleCA9IG92ZXJsYXlE
aXZaT3ZlcmxheTsKKworICAgICAgICAgICAgICAgIHBhcmVudGRpdi5zdHlsZS5wb3NpdGlvbiA9
ICdhYnNvbHV0ZSc7CisgICAgICAgICAgICAgICAgcGFyZW50ZGl2LnN0eWxlLnRvcCA9ICcwcHgn
OworICAgICAgICAgICAgICAgIHBhcmVudGRpdi5zdHlsZS5sZWZ0ID0gJzBweCc7CisgICAgICAg
ICAgICAgICAgcGFyZW50ZGl2LmFwcGVuZENoaWxkKGlkKTsKKyAgICAgICAgICAgICAgICBwYXJl
bnRkaXYuYXBwZW5kQ2hpbGQob2QpOworICAgICAgICAgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQo
cGFyZW50ZGl2KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcm9vdC5h
cHBlbmRDaGlsZChpZCk7CisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChvZCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHRhZ3Mub3ZlcmxheUVhcmxp
ZXIpIHsKKyAgICAgICAgICAgIGFwcGVuZE92ZXJsYXkoKTsKKyAgICAgICAgICAgIGFwcGVuZFBs
dWdpbigpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXBwZW5kUGx1Z2luKCk7Cisg
ICAgICAgICAgICBhcHBlbmRPdmVybGF5KCk7CisgICAgICAgIH0KKyAgICAgfQorCisgICAgZnVu
Y3Rpb24gZG9DbGljayhpZCkKKyAgICB7CisgICAgICAgIGNsaWNrc1tpZF0gPSB0cnVlOworCisg
ICAgICAgIC8vIENoZWNrIHN1Y2Nlc3MvZmFpbHVyZS4KKyAgICAgICAgdmFyIG91dHB1dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKTsKKyAgICAgICAgdmFyIHdhaXRpbmdGb3JN
b3JlQ2xpY2tzID0gZmFsc2U7CisgICAgICAgIHZhciBrOworICAgICAgICBmb3IgKGsgaW4gZXhw
ZWN0ZWRDbGlja3MpIHsKKyAgICAgICAgICAgIGlmIChleHBlY3RlZENsaWNrc1trXSAmJiAhY2xp
Y2tzW2tdKQorICAgICAgICAgICAgICAgIHdhaXRpbmdGb3JNb3JlQ2xpY2tzID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKCFleHBlY3RlZENsaWNrc1trXSAmJiBjbGlja3Nba10pIHsKKyAg
ICAgICAgICAgICAgICBvdXRwdXQuaW5uZXJIVE1MID0gJ0ZBSUxVUkUnOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghd2Fp
dGluZ0Zvck1vcmVDbGlja3MpIHsKKyAgICAgICAgICAgIG91dHB1dC5pbm5lckhUTUwgPSAnU1VD
Q0VTUyc7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5j
dGlvbiBpbml0KCkgeworICAgICAgICBhZGRDYXNlKDAsIDAsIHtleHBlY3Q6J292ZXJsYXkgT1ZF
Uid9KTsKKyAgICAgICAgYWRkQ2FzZSgxLCAwLCB7J292ZXJsYXlFYXJsaWVyJzoxLCAnb3Zlcmxh
eUluc2lkZURpdic6IDEsICdwbHVnaW5JbnNpZGVEaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRF
Uid9KTsKKyAgICAgICAgYWRkQ2FzZSgyLCAwLCB7J3BsdWdpbkxvd2Vyeic6MSwgZXhwZWN0Oidv
dmVybGF5IE9WRVInfSk7CisgICAgICAgIGFkZENhc2UoMywgMCwgeydwbHVnaW5IaWdoZXJ6Jzox
LCBleHBlY3Q6J292ZXJsYXkgVU5ERVInfSk7CisgICAgICAgIGFkZENhc2UoMCwgMSwgeydvdmVy
bGF5SW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2Fz
ZSgxLCAxLCB7J3BsdWdpbkxvd2Vyeic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOjEsIGV4cGVjdDon
b3ZlcmxheSBPVkVSJ30pOworICAgICAgICBhZGRDYXNlKDIsIDEsIHsncGx1Z2luSGlnaGVyeic6
MSwgJ292ZXJsYXlJbnNpZGVEaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRFUid9KTsKKyAgICAg
ICAgYWRkQ2FzZSgwLCAyLCB7J3BsdWdpbkVxdWFseic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOjEs
IGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBhZGRDYXNlKDEsIDIsIHsncGx1Z2lu
RXF1YWx6JzoxLCAnb3ZlcmxheUluc2lkZURpdic6MSwgJ292ZXJsYXlFYXJsaWVyJzoxLCBleHBl
Y3Q6J292ZXJsYXkgVU5ERVInfSk7CisgICAgICAgIGFkZENhc2UoMiwgMiwgeydvdmVybGF5RWFy
bGllcic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVSJ30pOworICAgICAgICBhZGRDYXNlKDMsIDIs
IHsnb3ZlcmxheUVhcmxpZXInOjEsICdwbHVnaW5Ob3JlbGF0aXZlJzoxLCBleHBlY3Q6J292ZXJs
YXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgwLCAzLCB7J3BsdWdpbk5vcmVsYXRpdmUnOjEs
IGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOworICAgICAgICBhZGRDYXNlKDEsIDMsIHsnb3Zlcmxh
eUVhcmxpZXInOjEsICdwbHVnaW5Ob3JlbGF0aXZlJzoxLCAncGx1Z2luSW5zaWRlRGl2JzoxLCBl
eHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKKyAgICAgICAgYWRkQ2FzZSgyLCAzLCB7J3BsdWdpbk5v
cmVsYXRpdmUnOjEsICdwbHVnaW5JbnNpZGVEaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30p
OworCisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9CisKKyAgICAvLyBBdXRvbWF0aW9uOiB0cnkg
dG8gY2xpY2sgb24gZWFjaCBidXR0b24uCisgICAgdmFyIG5leHRJZFRvQ2xpY2sgPSAwOworCisg
ICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZG9OZXh0Q2xpY2ssIDAp
OworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gbW92ZU1vdXNlT3ZlcihlbGVtTmFt
ZSkgeworICAgICAgICB2YXIgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1OYW1l
KTsKKyAgICAgICAgdmFyIHggPSBlbGVtLm9mZnNldExlZnQgKyBlbGVtLnNjcm9sbFdpZHRoIC8g
MjsKKyAgICAgICAgdmFyIHkgPSBlbGVtLm9mZnNldFRvcCArIGVsZW0uc2Nyb2xsSGVpZ2h0IC8g
MjsKKyAgICAgICAgdmFyIG9mZnNldFBhcmVudCA9IGVsZW0ub2Zmc2V0UGFyZW50OworICAgICAg
ICB3aGlsZSAob2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICB4ICs9IG9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgeSArPSBvZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgfQorICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBkb05leHRDbGljaygpIHsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgp
OworICAgICAgICBpZiAobmV4dElkVG9DbGljayA8IGV4cGVjdGVkQ2xpY2tzLmxlbmd0aCkgewor
ICAgICAgICAgICAgbW92ZU1vdXNlT3ZlcignYnV0dG9uJyArIG5leHRJZFRvQ2xpY2spOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBuZXh0SWRUb0Ns
aWNrKys7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGRvTmV4dENsaWNrLCAwKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSwg
MCk7CisgICAgICAgIH0KKyAgICB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJpbml0KCkiPgorCisgICAgPHA+VGVzdCB0aGF0IGlmcmFtZSBzaGltcyBjYW4gYmUgdXNlZCB0
byBvdmVybGF5IEhUTUwgYWJvdmUgYQorICAgIHdpbmRvd2VkIHBsdWdpbi4gVGhlIHJlZCBzcXVh
cmVzIHNob3VsZCBiZSBoaWRkZW4gYnkgdGhlIGJsdWUKKyAgICBmbGFzaCBwbHVnaW5zLCBhbmQg
dGhlIGdyZWVuIHNxdWFyZXMgc2hvdWxkIGFwcGVhciBvdmVyIHRoZQorICAgIHBsdWdpbnMuIFRv
IHRlc3QgaW50ZXJhY3RpdmVseSwgY2xpY2sgb3ZlciB0aGUgYnV0dG9ucyBvbiB0aGUKKyAgICBz
cXVhcmVzLiBZb3Ugc2hvdWxkIG5vdCBiZSBhYmxlIHRvIHJlYWNoIHRoZSByZWQgc3F1YXJlcycK
KyAgICBidXR0b25zLjwvcD4KKworICAgIDxwPlByaW50cyAiU1VDQ0VTUyIgb24gc3VjY2Vzcywg
IkZBSUxVUkUiIG9uIGZhaWx1cmUuPC9wPgorICAgIDxkaXYgaWQ9b3V0cHV0Pk5PTkU8L2Rpdj4K
KyAgICA8ZGl2IGlkPSJjb250YWluZXIiIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7Ij48L2Rp
dj4KKworPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMv
cGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUK
ICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvcmVzb3VyY2VzL3NpbXBsZV9ibGFu
ay5zd2YKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkg
dHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGx1Z2lucy9yZXNvdXJjZXMvc2ltcGxlX2JsYW5rLnN3
ZgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0KCgpRMWRUQngwQUFBQjQyaXRnNEdsZ1lKakd3TUREeU9ETXhNRHczNEdCZ1FFQUpQUURK
QT09Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>