<?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>7579</bug_id>
          
          <creation_ts>2006-03-03 14:56:10 -0800</creation_ts>
          <short_desc>TinyMCE: Implement execCommand(insertImage, ...)</short_desc>
          <delta_ts>2006-03-08 14:59:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>6627</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Garcia">justin.garcia</reporter>
          <assigned_to name="Justin Garcia">justin.garcia</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>35014</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-03-03 14:56:10 -0800</bug_when>
    <thetext>Implement execCommand insertImage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35361</commentid>
    <comment_count>1</comment_count>
      <attachid>6911</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-03-07 01:09:12 -0800</bug_when>
    <thetext>Created attachment 6911
patch

Implemented InsertHTML and added a layout test.
ReplaceSelectionCommand wasn&apos;t pruning empty non-blockflow containers (like &lt;span&gt;&lt;/span&gt;), or empty blockflow containers with non-zero height (like &lt;div style=&quot;border: 1px solid black;&quot;&gt;&lt;/div&gt;).

-            QPtrList&lt;NodeImpl&gt; blocks;
-            NodeImpl *node = beyondEndNode-&gt;enclosingInlineElement();
-            NodeImpl *refNode = m_lastNodeInserted.get();
+            NodeImpl* node = beyondEndNode-&gt;enclosingInlineElement();
+            NodeImpl* refNode = m_lastNodeInserted.get();
+            NodeImpl* nodeToPrune = node-&gt;parentNode();
             while (node) {
                 if (node-&gt;isBlockFlowOrBlockTable())
                     break;
                     
                 NodeImpl *next = node-&gt;nextSibling();
-                blocks.append(node-&gt;enclosingBlockFlowElement());
                 computeAndStoreNodeDesiredStyle(node, styles);
                 removeNode(node);

Using a QPtrList wasn&apos;t unnecessary.  We&apos;re removing siblings, no more than one enclosingBlockFlowElement would have survived this removal.
Use parentNode() instead of enclosingBlockFlowElement(), if we only want to prune blockFlows, that should be part of the pruning rule inside shouldPruneNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35424</commentid>
    <comment_count>2</comment_count>
      <attachid>6911</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-07 08:58:20 -0800</bug_when>
    <thetext>Comment on attachment 6911
patch

I don&apos;t think enabledPaste is a good name for the function any more if it&apos;s being used for other insertion. Are you sure that&apos;s the right function to use?

I think ReplaceSelectionCommand::prune would read better as a for loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35459</commentid>
    <comment_count>3</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-03-07 14:33:51 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 6911 [edit])
&gt; I don&apos;t think enabledPaste is a good name for the function any more if it&apos;s
&gt; being used for other insertion. Are you sure that&apos;s the right function to use?

Inadvertently yes, but that&apos;s because enabledPaste is wrong and doesn&apos;t check that there is something on the pasteboard.  I also found that most of these enabledXXX methods don&apos;t check that the selection for editability, which seems wrong to me.  I should fix this.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35476</commentid>
    <comment_count>4</comment_count>
    <who name="David Harrison">harrison</who>
    <bug_when>2006-03-07 18:35:23 -0800</bug_when>
    <thetext>shouldPruneNode() will return true for a rendered leaf node (because it has a no rendered children).  r-

Also, &quot;prune&quot; is not an appropriate name because a) it does not necessarily remove any nodes, and b) it may remove more than just the passed node.  Maybe &quot;removeEnclosingUnrenderedSubtree&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35490</commentid>
    <comment_count>5</comment_count>
      <attachid>6931</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-03-07 23:00:52 -0800</bug_when>
    <thetext>Created attachment 6931
patch

&gt; I don&apos;t think enabledPaste is a good name for the function any more if it&apos;s
&gt; being used for other insertion. Are you sure that&apos;s the right function to use?

I changed this and now use enabledAnySelection.  The enabledXXX functions need work, I filed 7650.

&gt; I think ReplaceSelectionCommand::prune would read better as a for loop.

I disagree, I left the while loop in.

&gt; shouldPruneNode() will return true for a rendered leaf node (because it has a
&gt; no rendered children).  r-

True, but it will never be passed a leaf because 1) prune is only passed containers and 2) prune only ascends straight upward.

&gt; Also, &quot;prune&quot; is not an appropriate name because a) it does not necessarily remove any nodes

I don&apos;t think prune implies that nodes will necessarily be removed, only that they will be removed if they are superfluous.

&gt; b) it may remove more than just the passed node.

To make it clear what may be pruned I made the function into removeNodeAndPruneAncestors.  This also frees us from worrying that we&apos;ll prune leaves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35495</commentid>
    <comment_count>6</comment_count>
      <attachid>6931</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-08 00:19:51 -0800</bug_when>
    <thetext>Comment on attachment 6931
patch

Is it correct to just append the value between two single quote characters? Don&apos;t we have to do some escaping to handle special characters?

Do we need a local variable for baseURL? If it&apos;s just &quot;&quot;, why not just pass &quot;&quot; to the function?

Is &quot;&quot; the right thing to use for the base URL? How did you test that in other browsers?

I guess the local variable for selectReplacement is a way to document what the false is, but I&apos;d probably just use &quot;false&quot; for brevity.

A note about the &quot;user interface&quot; variant: To implement that properly we&apos;ll have to involve the WebView&apos;s delegate as we do for window.alert -- we never want WebKit to put up a sheet or a dialog box without giving the application control.

Overall looks great to me. I&apos;ll set review+ despite the special character issue, but that&apos;s worth considering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35567</commentid>
    <comment_count>7</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-03-08 14:59:59 -0800</bug_when>
    <thetext>Removed the selectReplacement bool and insert the image by creating an image, setting its src, then putting it into a fragment.  Using createFragmentFromMarkup seemed too heavyweight to me.  This avoids the escaping issue.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6911</attachid>
            <date>2006-03-07 01:09:12 -0800</date>
            <delta_ts>2006-03-07 23:00:52 -0800</delta_ts>
            <desc>patch</desc>
            <filename>7579.txt</filename>
            <type>text/plain</type>
            <size>12172</size>
            <attacher name="Justin Garcia">justin.garcia</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0SW1hZ2UtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5z
ZXJ0SW1hZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC9pbnNlcnRJbWFnZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjQgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFu
Z2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2Yg
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgorRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3Rl
ZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAxIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2YgRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0g
c3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCitF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20g
MSBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mIERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAyIG9mIERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDIgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZm
aW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UK
K0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCitsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJl
bmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgzNgorICAgICAgICBSZW5kZXJUZXh0IHtU
RVhUfSBhdCAoMCwwKSBzaXplIDc0OHgzNgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDMwNjogIlRoaXMgaXMgYSB0ZXN0IG9mIGV4ZWNDb21tYW5kKEluc2VydEltYWdlLCAuLi4p
LiAiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDMwNiwwKSB3aWR0aCA0NDI6ICJUaGUgZmlyc3Qg
dGVzdCBwYXNzZXMgZXhlY0NvbW1hbmQgYSBwYXRoIHRvIGEgdmFsaWQgaW1hZ2UsIHRoZSBzZWNv
bmQiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDM2OTogInBhc3NlcyBleGVj
Q29tbWFuZCBhIHBhdGggd2hlcmUgbm8gaW1hZ2Ugc2hvdWxkIGV4aXN0LiIKKyAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDUyKSBzaXplIDc4NHgxMDMKKyAgICAgICAgUmVuZGVySW1hZ2Ug
e0lNR30gYXQgKDAsMCkgc2l6ZSA3NngxMDMKKyAgICAgICAgUmVuZGVySW1hZ2Uge0lNR30gYXQg
KDc2LDgzKSBzaXplIDIweDIwCisgICAgICBSZW5kZXJCbG9jayB7VUx9IGF0ICgwLDE3MSkgc2l6
ZSA3ODR4MAorY2FyZXQ6IHBvc2l0aW9uIDEgb2YgY2hpbGQgMSB7SU1HfSBvZiBjaGlsZCAzIHtE
SVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CkluZGV4
OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydEltYWdlLWV4cGVjdGVkLmNo
ZWNrc3VtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5z
ZXJ0SW1hZ2UtZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydEltYWdlLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxIEBACitlYzU3MmEwODVmZDBiN2U4NDgxYzk5YzEwMmE0YTlkMQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvaW5zZXJ0SW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL2luc2VydEltYWdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydEltYWdlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0uLi9lZGl0aW5nLmpzIGxh
bmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImxpIik7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSht
ZXNzYWdlKTsKKyAgICBsaS5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICBjb25zb2xlLmFwcGVuZENo
aWxkKGxpKTsKK30KKworZnVuY3Rpb24gZWRpdGluZ1Rlc3QoKSB7CisgICAgaW5zZXJ0SW1hZ2VD
b21tYW5kKCIuLi9yZXNvdXJjZXMvYWJlLmpwZyIpOworICAgIGluc2VydEltYWdlQ29tbWFuZCgi
Li4vcmVzb3VyY2VzL2RvLW5vdC1uYW1lLWFuLWltYWdlLXRoaXMuanBnIik7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKworPGJvZHk+Cis8cD5UaGlzIGlzIGEgdGVzdCBvZiBleGVjQ29tbWFuZChJ
bnNlcnRJbWFnZSwgLi4uKS4gIFRoZSBmaXJzdCB0ZXN0IHBhc3NlcyBleGVjQ29tbWFuZCBhIHBh
dGggdG8gYSB2YWxpZCBpbWFnZSwgdGhlIHNlY29uZCBwYXNzZXMgZXhlY0NvbW1hbmQgYSBwYXRo
IHdoZXJlIG5vIGltYWdlIHNob3VsZCBleGlzdC48L3A+CisKKzxkaXYgaWQ9InRlc3QiIGNvbnRl
bnRlZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Cis8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+Cis8c2NyaXB0
PgorcnVuRWRpdGluZ1Rlc3QoKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+CisKKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL2luc2VydEltYWdlLWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5
OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL2luc2VydEltYWdlLWV4cGVjdGVkLnBuZwpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2
bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvMzk3Njg3Mi1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkLzM5NzY4NzItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxMzE2OCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC8zOTc2ODcy
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogICAgICAgICAg
IFJlbmRlcklubGluZSB7Qn0gYXQgKDAsMCkgc2l6ZSAxODd4MTgKICAgICAgICAgICAgIFJlbmRl
clRleHQge1RFWFR9IGF0ICgxLDEpIHNpemUgMTg3eDE4CiAgICAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgxLDEpIHdpZHRoIDE4NzogInRoaXMgdGV4dCBzaG91bGQgZW5kIHVwIGJvbGQiCi0gICAg
ICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDB4MTgKICAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsMjApIHNpemUgNzg0eDIwIFtib3JkZXI6ICgxcHggc29saWQgI0ZG
MDAwMCldCiAgICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDE4N3gxOAog
ICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDEsMSkgc2l6ZSAxODd4MTgKSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvZWRpdGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL2VkaXRpbmcuanMJKHJldmlzaW9uIDEzMTY4KQorKysgTGF5b3V0VGVzdHMvZWRp
dGluZy9lZGl0aW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNjEsNiArMzYxLDIxIEBACiAKIC8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitmdW5jdGlv
biBleGVjSW5zZXJ0SW1hZ2VDb21tYW5kKGltZ1NyYykgeworICAgIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCJJbnNlcnRJbWFnZSIsIGZhbHNlLCBpbWdTcmMpOworfQorZnVuY3Rpb24gaW5zZXJ0SW1h
Z2VDb21tYW5kKGltZ1NyYykgeworICAgIGlmIChjb21tYW5kRGVsYXkgPiAwKSB7CisgICAgICAg
IHdpbmRvdy5zZXRUaW1lb3V0KGV4ZWNJbnNlcnRJbWFnZUNvbW1hbmQsIGNvbW1hbmRDb3VudCAq
IGNvbW1hbmREZWxheSwgaW1nU3JjKTsKKyAgICAgICAgY29tbWFuZENvdW50Kys7CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgICBleGVjSW5zZXJ0SW1hZ2VDb21tYW5kKGltZ1NyYyk7CisgICAg
fQorfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KwogZnVuY3Rpb24gZXhlY0luc2VydExpbmVCcmVha0NvbW1hbmQoKSB7CiAgICAgZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoIkluc2VydExpbmVCcmVhayIpOwogfQpJbmRleDogV2ViQ29yZS9lZGl0aW5n
L2pzZWRpdGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL2pzZWRpdGluZy5j
cHAJKHJldmlzaW9uIDEzMTY4KQorKysgV2ViQ29yZS9lZGl0aW5nL2pzZWRpdGluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0NCw2ICsyNDQsMjEgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
Ym9vbCBleGVjSW5zZXJ0SW1hZ2UoRnJhbWUqIGZyYW1lLCBib29sIHVzZXJJbnRlcmZhY2UsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgLy8gRklYTUU6IElmIHVzZXJJbnRlcmZhY2UgaXMg
dHJ1ZSwgd2Ugc2hvdWxkIGRpc3BsYXkgYSBkaWFsb2cgYm94IGFuZCBsZXQgdGhlIHVzZXIgY2hv
b3NlIGEgbG9jYWwgaW1hZ2UuCisgICAgaWYgKHVzZXJJbnRlcmZhY2UpCisgICAgICAgIExPR19F
UlJPUigiQSBkaWFsb2cgYm94IGZvciBpbWFnZSBpbnNlcnRpb24gaXMgbm90IHlldCBpbXBsZW1l
bnRlZC5cbiIpOworICAgICAgICAKKyAgICBRU3RyaW5nIGJhc2VVUkwgPSAiIjsKKyAgICBTdHJp
bmcgbWFya3VwID0gIjxpbWcgc3JjPSciICsgdmFsdWUgKyAiJz4iOworICAgIGJvb2wgc2VsZWN0
UmVwbGFjZW1lbnQgPSBmYWxzZTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudEltcGw+IGZy
YWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGZyYW1lLT5kb2N1bWVudCgpLCBtYXJr
dXAucXN0cmluZygpLCBiYXNlVVJMKTsKKyAgICBFZGl0Q29tbWFuZFB0ciBjbWQobmV3IFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kKGZyYW1lLT5kb2N1bWVudCgpLCBmcmFnbWVudC5nZXQoKSwgc2Vs
ZWN0UmVwbGFjZW1lbnQpKTsKKyAgICBjbWQuYXBwbHkoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogYm9vbCBleGVjSW5kZW50KEZyYW1lICpmcmFtZSwgYm9vbCB1c2VySW50ZXJmYWNlLCBjb25z
dCBET01TdHJpbmcgJnZhbHVlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCkBAIC01Mjgs
NyArNTQzLDggQEAKICAgICAgICAgeyAiRm9yZUNvbG9yIiwgeyBleGVjRm9yZUNvbG9yLCBlbmFi
bGVkQW55U2VsZWN0aW9uLCBzdGF0ZU5vbmUsIHZhbHVlRm9yZUNvbG9yIH0gfSwKICAgICAgICAg
eyAiRm9yd2FyZERlbGV0ZSIsIHsgZXhlY0ZvcndhcmREZWxldGUsIGVuYWJsZWRBbnlTZWxlY3Rp
b24sIHN0YXRlTm9uZSwgdmFsdWVOdWxsIH0gfSwKICAgICAgICAgeyAiSW5kZW50IiwgeyBleGVj
SW5kZW50LCBlbmFibGVkQW55U2VsZWN0aW9uLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCB9IH0sCi0g
ICAgICAgIHsgIkluc2VydEhUTUwiLCB7IGV4ZWNJbnNlcnRIVE1MLCBlbmFibGVkQW55U2VsZWN0
aW9uLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCB9IH0sCisgICAgICAgIHsgIkluc2VydEhUTUwiLCB7
IGV4ZWNJbnNlcnRIVE1MLCBlbmFibGVkUGFzdGUsIHN0YXRlTm9uZSwgdmFsdWVOdWxsIH0gfSwK
KyAgICAgICAgeyAiSW5zZXJ0SW1hZ2UiLCB7IGV4ZWNJbnNlcnRJbWFnZSwgZW5hYmxlZFBhc3Rl
LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCB9IH0sCiAgICAgICAgIHsgIkluc2VydExpbmVCcmVhayIs
IHsgZXhlY0luc2VydExpbmVCcmVhaywgZW5hYmxlZEFueVNlbGVjdGlvbiwgc3RhdGVOb25lLCB2
YWx1ZU51bGwgfSB9LAogICAgICAgICB7ICJJbnNlcnRQYXJhZ3JhcGgiLCB7IGV4ZWNJbnNlcnRQ
YXJhZ3JhcGgsIGVuYWJsZWRBbnlTZWxlY3Rpb24sIHN0YXRlTm9uZSwgdmFsdWVOdWxsIH0gfSwK
ICAgICAgICAgeyAiSW5zZXJ0TmV3bGluZUluUXVvdGVkQ29udGVudCIsIHsgZXhlY0luc2VydE5l
d2xpbmVJblF1b3RlZENvbnRlbnQsIGVuYWJsZWRBbnlTZWxlY3Rpb24sIHN0YXRlTm9uZSwgdmFs
dWVOdWxsIH0gfSwKQEAgLTU3Niw3ICs1OTIsNiBAQAogICAgICAgICAvLyBJbnNlcnRGaWVsZFNl
dCAobm90IHN1cHBvcnRlZCkKICAgICAgICAgLy8gSW5zZXJ0SG9yaXpvbnRhbFJ1bGUgKG5vdCBz
dXBwb3J0ZWQpCiAgICAgICAgIC8vIEluc2VydElGcmFtZSAobm90IHN1cHBvcnRlZCkKLSAgICAg
ICAgLy8gSW5zZXJ0SW1hZ2UgKG5vdCBzdXBwb3J0ZWQpCiAgICAgICAgIC8vIEluc2VydElucHV0
QnV0dG9uIChub3Qgc3VwcG9ydGVkKQogICAgICAgICAvLyBJbnNlcnRJbnB1dENoZWNrYm94IChu
b3Qgc3VwcG9ydGVkKQogICAgICAgICAvLyBJbnNlcnRJbnB1dEZpbGVVcGxvYWQgKG5vdCBzdXBw
b3J0ZWQpCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAJKHJldmlzaW9uIDEzMTY4KQorKysgV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25D
b21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk2LDYgKzI5NiwyNiBAQAogICAgIHJldHVy
biBtYXRjaE5lYXJlc3RCbG9ja3F1b3RlQ29sb3JTdHJpbmc7CiB9CiAKK2Jvb2wgc2hvdWxkUHJ1
bmVOb2RlKE5vZGVJbXBsKiBub2RlKQoreworICAgIC8vIENoYW5naW5nIHRoaXMgcnVsZSBtYXkg
cmVxdWlyZSB0aGF0IHlvdSBhZGQgYW4gdXBkYXRlTGF5b3V0KCkgY2FsbCBiZWxvdy4KKyAgICBy
ZXR1cm4gbm9kZSAmJiAoIW5vZGUtPnJlbmRlcmVyKCkgfHwgIW5vZGUtPnJlbmRlcmVyKCktPmZp
cnN0Q2hpbGQoKSk7Cit9CisKKy8vIEZJWE1FOiBEbyBwcnVuaW5nIG9uY2UsIGF0IHRoZSBlbmQg
b2YgdGhlIGVkaXRpbmcgb3BlcmF0aW9uLgorLy8gRklYTUU6IE1vdmUgdGhpcyBzb21ld2hlcmUg
c28gdGhhdCB0aGUgb3RoZXIgZWRpdGluZyBvcGVyYXRpb25zIGNhbiB1c2UgaXQuCit2b2lkIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpwcnVuZShOb2RlSW1wbCogbm9kZSkKK3sKKyAgICB3aGls
ZSAobm9kZSkgeworICAgICAgICBOb2RlSW1wbCogcGFyZW50ID0gbm9kZS0+cGFyZW50KCk7Cisg
ICAgICAgIC8vIE5vIHVwZGF0ZUxheW91dCgpIHJlcXVpcmVkIGZvciB0aGUgY3VycmVudCBwcnVu
aW5nIHJ1bGUuCisgICAgICAgIGlmICghc2hvdWxkUHJ1bmVOb2RlKG5vZGUpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICByZW1vdmVOb2RlKG5vZGUpOworICAgICAgICBub2RlID0gcGFy
ZW50OworICAgIH0KK30KKwogdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Zml4dXBOb2Rl
U3R5bGVzKGNvbnN0IFFWYWx1ZUxpc3Q8Tm9kZURlc2lyZWRTdHlsZT4gJmxpc3QpCiB7CiAgICAg
Ly8gVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBtYXBwZWQgImRlc2lyZWQgc3R5bGUiIHRvIGFwcGx5
IHRoZSBhZGRpdGlvbmFsIHN0eWxlIG5lZWRlZCwgaWYgYW55LApAQCAtNzkxLDE1ICs4MTEsMTQg
QEAKICAgICAgICAgaWYgKGJleW9uZEVuZE5vZGUpIHsKICAgICAgICAgICAgIHVwZGF0ZUxheW91
dCgpOwogICAgICAgICAgICAgUVZhbHVlTGlzdDxOb2RlRGVzaXJlZFN0eWxlPiBzdHlsZXM7Ci0g
ICAgICAgICAgICBRUHRyTGlzdDxOb2RlSW1wbD4gYmxvY2tzOwotICAgICAgICAgICAgTm9kZUlt
cGwgKm5vZGUgPSBiZXlvbmRFbmROb2RlLT5lbmNsb3NpbmdJbmxpbmVFbGVtZW50KCk7Ci0gICAg
ICAgICAgICBOb2RlSW1wbCAqcmVmTm9kZSA9IG1fbGFzdE5vZGVJbnNlcnRlZC5nZXQoKTsKKyAg
ICAgICAgICAgIE5vZGVJbXBsKiBub2RlID0gYmV5b25kRW5kTm9kZS0+ZW5jbG9zaW5nSW5saW5l
RWxlbWVudCgpOworICAgICAgICAgICAgTm9kZUltcGwqIHJlZk5vZGUgPSBtX2xhc3ROb2RlSW5z
ZXJ0ZWQuZ2V0KCk7CisgICAgICAgICAgICBOb2RlSW1wbCogbm9kZVRvUHJ1bmUgPSBub2RlLT5w
YXJlbnROb2RlKCk7CiAgICAgICAgICAgICB3aGlsZSAobm9kZSkgewogICAgICAgICAgICAgICAg
IGlmIChub2RlLT5pc0Jsb2NrRmxvd09yQmxvY2tUYWJsZSgpKQogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTm9kZUltcGwg
Km5leHQgPSBub2RlLT5uZXh0U2libGluZygpOwotICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBl
bmQobm9kZS0+ZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudCgpKTsKICAgICAgICAgICAgICAgICBj
b21wdXRlQW5kU3RvcmVOb2RlRGVzaXJlZFN0eWxlKG5vZGUsIHN0eWxlcyk7CiAgICAgICAgICAg
ICAgICAgcmVtb3ZlTm9kZShub2RlKTsKICAgICAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVw
ZGF0ZSBpbnNlcnRlZCBub2RlIHZhcmlhYmxlcy4KQEAgLTgxMCwxOCArODI5LDggQEAKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbm9kZSA9IG5leHQ7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB1cGRhdGVMYXlvdXQoKTsKLSAgICAgICAgICAgIGZvciAo
UVB0ckxpc3RJdGVyYXRvcjxOb2RlSW1wbD4gaXQoYmxvY2tzKTsgaXQuY3VycmVudCgpOyArK2l0
KSB7Ci0gICAgICAgICAgICAgICAgTm9kZUltcGwgKmJsb2NrVG9SZW1vdmUgPSBpdC5jdXJyZW50
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFibG9ja1RvUmVtb3ZlLT5pbkRvY3VtZW50KCkpCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmICghYmxvY2tU
b1JlbW92ZS0+cmVuZGVyZXIoKSB8fCAhYmxvY2tUb1JlbW92ZS0+cmVuZGVyZXIoKS0+Zmlyc3RD
aGlsZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChibG9ja1RvUmVtb3ZlLT5wYXJlbnRO
b2RlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKGJsb2NrVG9SZW1v
dmUtPnBhcmVudE5vZGUoKS0+ZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudCgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmVtb3ZlTm9kZShibG9ja1RvUmVtb3ZlKTsKLSAgICAgICAgICAgICAgICAg
ICAgdXBkYXRlTGF5b3V0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBwcnVuZShub2RlVG9QcnVuZSk7CiAKICAgICAgICAgICAg
IGZpeHVwTm9kZVN0eWxlcyhzdHlsZXMpOwogICAgICAgICB9CkBAIC04NDUsMTEgKzg1NCwxMCBA
QAogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcGxhY2Vob2xkZXJQb3MobGluZVBsYWNlaG9sZGVy
LCBsaW5lUGxhY2Vob2xkZXItPnJlbmRlcmVyKCktPmNhcmV0TWluT2Zmc2V0KCksIERPV05TVFJF
QU0pOwogICAgICAgICBpZiAocGxhY2Vob2xkZXJQb3MubmV4dCgpLmlzTnVsbCgpIHx8CiAgICAg
ICAgICAgICAhKGlzU3RhcnRPZkxpbmUocGxhY2Vob2xkZXJQb3MpICYmIGlzRW5kT2ZMaW5lKHBs
YWNlaG9sZGVyUG9zKSkpIHsKLSAgICAgICAgICAgIE5vZGVJbXBsICpibG9jayA9IGxpbmVQbGFj
ZWhvbGRlci0+ZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudCgpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBOb2RlSW1wbCogbm9kZVRvUHJ1bmUgPSBsaW5lUGxhY2Vob2xkZXItPnBhcmVudE5v
ZGUoKTsKICAgICAgICAgICAgIHJlbW92ZU5vZGUobGluZVBsYWNlaG9sZGVyKTsKLSAgICAgICAg
ICAgIHVwZGF0ZUxheW91dCgpOwotICAgICAgICAgICAgaWYgKCFibG9jay0+cmVuZGVyZXIoKSB8
fCBibG9jay0+cmVuZGVyZXIoKS0+aGVpZ2h0KCkgPT0gMCkKLSAgICAgICAgICAgICAgICByZW1v
dmVOb2RlKGJsb2NrKTsKKyAgICAgICAgICAgIHBydW5lKG5vZGVUb1BydW5lKTsKICAgICAgICAg
fQogICAgIH0KIH0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5oCShyZXZpc2lvbiAxMzE2OCkKKysrIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDcgQEAKICAgICB2b2lkIHVw
ZGF0ZU5vZGVzSW5zZXJ0ZWQoTm9kZUltcGwgKik7CiAgICAgdm9pZCBmaXh1cE5vZGVTdHlsZXMo
Y29uc3QgUVZhbHVlTGlzdDxOb2RlRGVzaXJlZFN0eWxlPiAmKTsKICAgICB2b2lkIHJlbW92ZUxp
bmVQbGFjZWhvbGRlcklmTmVlZGVkKE5vZGVJbXBsICopOworICAgIHZvaWQgcHJ1bmUoTm9kZUlt
cGwqKTsKIAogICAgIFJlcGxhY2VtZW50RnJhZ21lbnQgbV9mcmFnbWVudDsKICAgICBSZWZQdHI8
Tm9kZUltcGw+IG1fZmlyc3ROb2RlSW5zZXJ0ZWQ7Cg==
</data>
<flag name="review"
          id="1784"
          type_id="1"
          status="-"
          setter="harrison"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6931</attachid>
            <date>2006-03-07 23:00:52 -0800</date>
            <delta_ts>2006-03-08 00:19:51 -0800</delta_ts>
            <desc>patch</desc>
            <filename>7579.txt</filename>
            <type>text/plain</type>
            <size>12389</size>
            <attacher name="Justin Garcia">justin.garcia</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0SW1hZ2UtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5z
ZXJ0SW1hZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC9pbnNlcnRJbWFnZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjQgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFu
Z2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2Yg
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgorRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3Rl
ZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAxIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2YgRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0g
c3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCitF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20g
MSBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mIERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAyIG9mIERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDIgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZm
aW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UK
K0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCitsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJl
bmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgzNgorICAgICAgICBSZW5kZXJUZXh0IHtU
RVhUfSBhdCAoMCwwKSBzaXplIDc0OHgzNgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDMwNjogIlRoaXMgaXMgYSB0ZXN0IG9mIGV4ZWNDb21tYW5kKEluc2VydEltYWdlLCAuLi4p
LiAiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDMwNiwwKSB3aWR0aCA0NDI6ICJUaGUgZmlyc3Qg
dGVzdCBwYXNzZXMgZXhlY0NvbW1hbmQgYSBwYXRoIHRvIGEgdmFsaWQgaW1hZ2UsIHRoZSBzZWNv
bmQiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDM2OTogInBhc3NlcyBleGVj
Q29tbWFuZCBhIHBhdGggd2hlcmUgbm8gaW1hZ2Ugc2hvdWxkIGV4aXN0LiIKKyAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDUyKSBzaXplIDc4NHgxMDMKKyAgICAgICAgUmVuZGVySW1hZ2Ug
e0lNR30gYXQgKDAsMCkgc2l6ZSA3NngxMDMKKyAgICAgICAgUmVuZGVySW1hZ2Uge0lNR30gYXQg
KDc2LDgzKSBzaXplIDIweDIwCisgICAgICBSZW5kZXJCbG9jayB7VUx9IGF0ICgwLDE3MSkgc2l6
ZSA3ODR4MAorY2FyZXQ6IHBvc2l0aW9uIDEgb2YgY2hpbGQgMSB7SU1HfSBvZiBjaGlsZCAzIHtE
SVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CkluZGV4
OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydEltYWdlLWV4cGVjdGVkLmNo
ZWNrc3VtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5z
ZXJ0SW1hZ2UtZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydEltYWdlLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxIEBACitlYzU3MmEwODVmZDBiN2U4NDgxYzk5YzEwMmE0YTlkMQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvaW5zZXJ0SW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL2luc2VydEltYWdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydEltYWdlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0uLi9lZGl0aW5nLmpzIGxh
bmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImxpIik7CisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSht
ZXNzYWdlKTsKKyAgICBsaS5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICBjb25zb2xlLmFwcGVuZENo
aWxkKGxpKTsKK30KKworZnVuY3Rpb24gZWRpdGluZ1Rlc3QoKSB7CisgICAgaW5zZXJ0SW1hZ2VD
b21tYW5kKCIuLi9yZXNvdXJjZXMvYWJlLmpwZyIpOworICAgIGluc2VydEltYWdlQ29tbWFuZCgi
Li4vcmVzb3VyY2VzL2RvLW5vdC1uYW1lLWFuLWltYWdlLXRoaXMuanBnIik7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKworPGJvZHk+Cis8cD5UaGlzIGlzIGEgdGVzdCBvZiBleGVjQ29tbWFuZChJ
bnNlcnRJbWFnZSwgLi4uKS4gIFRoZSBmaXJzdCB0ZXN0IHBhc3NlcyBleGVjQ29tbWFuZCBhIHBh
dGggdG8gYSB2YWxpZCBpbWFnZSwgdGhlIHNlY29uZCBwYXNzZXMgZXhlY0NvbW1hbmQgYSBwYXRo
IHdoZXJlIG5vIGltYWdlIHNob3VsZCBleGlzdC48L3A+CisKKzxkaXYgaWQ9InRlc3QiIGNvbnRl
bnRlZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Cis8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+Cis8c2NyaXB0
PgorcnVuRWRpdGluZ1Rlc3QoKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+CisKKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL2luc2VydEltYWdlLWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5
OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL2luc2VydEltYWdlLWV4cGVjdGVkLnBuZwpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2
bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvMzk3Njg3Mi1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkLzM5NzY4NzItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxMzIwMSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC8zOTc2ODcy
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogICAgICAgICAg
IFJlbmRlcklubGluZSB7Qn0gYXQgKDAsMCkgc2l6ZSAxODd4MTgKICAgICAgICAgICAgIFJlbmRl
clRleHQge1RFWFR9IGF0ICgxLDEpIHNpemUgMTg3eDE4CiAgICAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgxLDEpIHdpZHRoIDE4NzogInRoaXMgdGV4dCBzaG91bGQgZW5kIHVwIGJvbGQiCi0gICAg
ICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDB4MTgKICAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsMjApIHNpemUgNzg0eDIwIFtib3JkZXI6ICgxcHggc29saWQgI0ZG
MDAwMCldCiAgICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDE4N3gxOAog
ICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDEsMSkgc2l6ZSAxODd4MTgKSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvZWRpdGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL2VkaXRpbmcuanMJKHJldmlzaW9uIDEzMjAxKQorKysgTGF5b3V0VGVzdHMvZWRp
dGluZy9lZGl0aW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNjEsNiArMzYxLDIxIEBACiAKIC8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitmdW5jdGlv
biBleGVjSW5zZXJ0SW1hZ2VDb21tYW5kKGltZ1NyYykgeworICAgIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCJJbnNlcnRJbWFnZSIsIGZhbHNlLCBpbWdTcmMpOworfQorZnVuY3Rpb24gaW5zZXJ0SW1h
Z2VDb21tYW5kKGltZ1NyYykgeworICAgIGlmIChjb21tYW5kRGVsYXkgPiAwKSB7CisgICAgICAg
IHdpbmRvdy5zZXRUaW1lb3V0KGV4ZWNJbnNlcnRJbWFnZUNvbW1hbmQsIGNvbW1hbmRDb3VudCAq
IGNvbW1hbmREZWxheSwgaW1nU3JjKTsKKyAgICAgICAgY29tbWFuZENvdW50Kys7CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgICBleGVjSW5zZXJ0SW1hZ2VDb21tYW5kKGltZ1NyYyk7CisgICAg
fQorfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KwogZnVuY3Rpb24gZXhlY0luc2VydExpbmVCcmVha0NvbW1hbmQoKSB7CiAgICAgZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoIkluc2VydExpbmVCcmVhayIpOwogfQpJbmRleDogV2ViQ29yZS9lZGl0aW5n
L2pzZWRpdGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL2pzZWRpdGluZy5j
cHAJKHJldmlzaW9uIDEzMTY4KQorKysgV2ViQ29yZS9lZGl0aW5nL2pzZWRpdGluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0NCw2ICsyNDQsMjEgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
Ym9vbCBleGVjSW5zZXJ0SW1hZ2UoRnJhbWUqIGZyYW1lLCBib29sIHVzZXJJbnRlcmZhY2UsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgLy8gRklYTUU6IElmIHVzZXJJbnRlcmZhY2UgaXMg
dHJ1ZSwgd2Ugc2hvdWxkIGRpc3BsYXkgYSBkaWFsb2cgYm94IGFuZCBsZXQgdGhlIHVzZXIgY2hv
b3NlIGEgbG9jYWwgaW1hZ2UuCisgICAgaWYgKHVzZXJJbnRlcmZhY2UpCisgICAgICAgIExPR19F
UlJPUigiQSBkaWFsb2cgYm94IGZvciBpbWFnZSBpbnNlcnRpb24gaXMgbm90IHlldCBpbXBsZW1l
bnRlZC5cbiIpOworICAgICAgICAKKyAgICBRU3RyaW5nIGJhc2VVUkwgPSAiIjsKKyAgICBTdHJp
bmcgbWFya3VwID0gIjxpbWcgc3JjPSciICsgdmFsdWUgKyAiJz4iOworICAgIGJvb2wgc2VsZWN0
UmVwbGFjZW1lbnQgPSBmYWxzZTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudEltcGw+IGZy
YWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGZyYW1lLT5kb2N1bWVudCgpLCBtYXJr
dXAucXN0cmluZygpLCBiYXNlVVJMKTsKKyAgICBFZGl0Q29tbWFuZFB0ciBjbWQobmV3IFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kKGZyYW1lLT5kb2N1bWVudCgpLCBmcmFnbWVudC5nZXQoKSwgc2Vs
ZWN0UmVwbGFjZW1lbnQpKTsKKyAgICBjbWQuYXBwbHkoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogYm9vbCBleGVjSW5kZW50KEZyYW1lICpmcmFtZSwgYm9vbCB1c2VySW50ZXJmYWNlLCBjb25z
dCBET01TdHJpbmcgJnZhbHVlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCkBAIC01Mjks
NiArNTQ0LDcgQEAKICAgICAgICAgeyAiRm9yd2FyZERlbGV0ZSIsIHsgZXhlY0ZvcndhcmREZWxl
dGUsIGVuYWJsZWRBbnlTZWxlY3Rpb24sIHN0YXRlTm9uZSwgdmFsdWVOdWxsIH0gfSwKICAgICAg
ICAgeyAiSW5kZW50IiwgeyBleGVjSW5kZW50LCBlbmFibGVkQW55U2VsZWN0aW9uLCBzdGF0ZU5v
bmUsIHZhbHVlTnVsbCB9IH0sCiAgICAgICAgIHsgIkluc2VydEhUTUwiLCB7IGV4ZWNJbnNlcnRI
VE1MLCBlbmFibGVkQW55U2VsZWN0aW9uLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCB9IH0sCisgICAg
ICAgIHsgIkluc2VydEltYWdlIiwgeyBleGVjSW5zZXJ0SW1hZ2UsIGVuYWJsZWRBbnlTZWxlY3Rp
b24sIHN0YXRlTm9uZSwgdmFsdWVOdWxsIH0gfSwKICAgICAgICAgeyAiSW5zZXJ0TGluZUJyZWFr
IiwgeyBleGVjSW5zZXJ0TGluZUJyZWFrLCBlbmFibGVkQW55U2VsZWN0aW9uLCBzdGF0ZU5vbmUs
IHZhbHVlTnVsbCB9IH0sCiAgICAgICAgIHsgIkluc2VydFBhcmFncmFwaCIsIHsgZXhlY0luc2Vy
dFBhcmFncmFwaCwgZW5hYmxlZEFueVNlbGVjdGlvbiwgc3RhdGVOb25lLCB2YWx1ZU51bGwgfSB9
LAogICAgICAgICB7ICJJbnNlcnROZXdsaW5lSW5RdW90ZWRDb250ZW50IiwgeyBleGVjSW5zZXJ0
TmV3bGluZUluUXVvdGVkQ29udGVudCwgZW5hYmxlZEFueVNlbGVjdGlvbiwgc3RhdGVOb25lLCB2
YWx1ZU51bGwgfSB9LApAQCAtNTc2LDcgKzU5Miw2IEBACiAgICAgICAgIC8vIEluc2VydEZpZWxk
U2V0IChub3Qgc3VwcG9ydGVkKQogICAgICAgICAvLyBJbnNlcnRIb3Jpem9udGFsUnVsZSAobm90
IHN1cHBvcnRlZCkKICAgICAgICAgLy8gSW5zZXJ0SUZyYW1lIChub3Qgc3VwcG9ydGVkKQotICAg
ICAgICAvLyBJbnNlcnRJbWFnZSAobm90IHN1cHBvcnRlZCkKICAgICAgICAgLy8gSW5zZXJ0SW5w
dXRCdXR0b24gKG5vdCBzdXBwb3J0ZWQpCiAgICAgICAgIC8vIEluc2VydElucHV0Q2hlY2tib3gg
KG5vdCBzdXBwb3J0ZWQpCiAgICAgICAgIC8vIEluc2VydElucHV0RmlsZVVwbG9hZCAobm90IHN1
cHBvcnRlZCkKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAkocmV2aXNpb24gMTMxNjgpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTYsNiArMjk2LDIxIEBACiAgICAgcmV0
dXJuIG1hdGNoTmVhcmVzdEJsb2NrcXVvdGVDb2xvclN0cmluZzsKIH0KIAorLy8gRklYTUU6IE1v
dmUgdGhpcyBzb21ld2hlcmUgc28gdGhhdCB0aGUgb3RoZXIgZWRpdGluZyBvcGVyYXRpb25zIGNh
biB1c2UgaXQgdG8gY2xlYW4gdXAgYWZ0ZXIgdGhlbXNlbHZlcy4KK3ZvaWQgUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OnJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyhOb2RlSW1wbCogbm9kZSkK
K3sKKyAgICBOb2RlSW1wbCogcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgIHJlbW92
ZU5vZGUobm9kZSk7CisgICAgd2hpbGUgKHBhcmVudCkgeworICAgICAgICBOb2RlSW1wbCogbmV4
dFBhcmVudCA9IHBhcmVudC0+cGFyZW50Tm9kZSgpOworICAgICAgICAvLyBJZiB5b3UgY2hhbmdl
IHRoaXMgcnVsZSB5b3UgbWF5IGhhdmUgdG8gYWRkIGFuIHVwZGF0ZUxheW91dCgpIGhlcmUuCisg
ICAgICAgIGlmIChwYXJlbnQtPnJlbmRlcmVyKCkgJiYgcGFyZW50LT5yZW5kZXJlcigpLT5maXJz
dENoaWxkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHJlbW92ZU5vZGUocGFyZW50
KTsKKyAgICAgICAgcGFyZW50ID0gbmV4dFBhcmVudDsKKyAgICB9Cit9CisKIHZvaWQgUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OmZpeHVwTm9kZVN0eWxlcyhjb25zdCBRVmFsdWVMaXN0PE5vZGVE
ZXNpcmVkU3R5bGU+ICZsaXN0KQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgbWFw
cGVkICJkZXNpcmVkIHN0eWxlIiB0byBhcHBseSB0aGUgYWRkaXRpb25hbCBzdHlsZSBuZWVkZWQs
IGlmIGFueSwKQEAgLTc5MSwxNyArODA2LDE2IEBACiAgICAgICAgIGlmIChiZXlvbmRFbmROb2Rl
KSB7CiAgICAgICAgICAgICB1cGRhdGVMYXlvdXQoKTsKICAgICAgICAgICAgIFFWYWx1ZUxpc3Q8
Tm9kZURlc2lyZWRTdHlsZT4gc3R5bGVzOwotICAgICAgICAgICAgUVB0ckxpc3Q8Tm9kZUltcGw+
IGJsb2NrczsKLSAgICAgICAgICAgIE5vZGVJbXBsICpub2RlID0gYmV5b25kRW5kTm9kZS0+ZW5j
bG9zaW5nSW5saW5lRWxlbWVudCgpOwotICAgICAgICAgICAgTm9kZUltcGwgKnJlZk5vZGUgPSBt
X2xhc3ROb2RlSW5zZXJ0ZWQuZ2V0KCk7CisgICAgICAgICAgICBOb2RlSW1wbCogbm9kZSA9IGJl
eW9uZEVuZE5vZGUtPmVuY2xvc2luZ0lubGluZUVsZW1lbnQoKTsKKyAgICAgICAgICAgIE5vZGVJ
bXBsKiByZWZOb2RlID0gbV9sYXN0Tm9kZUluc2VydGVkLmdldCgpOworICAgICAgICAgICAgCiAg
ICAgICAgICAgICB3aGlsZSAobm9kZSkgewogICAgICAgICAgICAgICAgIGlmIChub2RlLT5pc0Js
b2NrRmxvd09yQmxvY2tUYWJsZSgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTm9kZUltcGwgKm5leHQgPSBub2RlLT5u
ZXh0U2libGluZygpOwotICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQobm9kZS0+ZW5jbG9z
aW5nQmxvY2tGbG93RWxlbWVudCgpKTsKICAgICAgICAgICAgICAgICBjb21wdXRlQW5kU3RvcmVO
b2RlRGVzaXJlZFN0eWxlKG5vZGUsIHN0eWxlcyk7Ci0gICAgICAgICAgICAgICAgcmVtb3ZlTm9k
ZShub2RlKTsKKyAgICAgICAgICAgICAgICByZW1vdmVOb2RlQW5kUHJ1bmVBbmNlc3RvcnMobm9k
ZSk7CiAgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1cGRhdGUgaW5zZXJ0ZWQgbm9kZSB2
YXJpYWJsZXMuCiAgICAgICAgICAgICAgICAgaW5zZXJ0Tm9kZUFmdGVyKG5vZGUsIHJlZk5vZGUp
OwogICAgICAgICAgICAgICAgIHJlZk5vZGUgPSBub2RlOwpAQCAtODEwLDE4ICs4MjQsNiBAQAog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBub2RlID0gbmV4dDsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVwZGF0ZUxheW91dCgpOwotICAgICAgICAgICAg
Zm9yIChRUHRyTGlzdEl0ZXJhdG9yPE5vZGVJbXBsPiBpdChibG9ja3MpOyBpdC5jdXJyZW50KCk7
ICsraXQpIHsKLSAgICAgICAgICAgICAgICBOb2RlSW1wbCAqYmxvY2tUb1JlbW92ZSA9IGl0LmN1
cnJlbnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWJsb2NrVG9SZW1vdmUtPmluRG9jdW1lbnQo
KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKCFi
bG9ja1RvUmVtb3ZlLT5yZW5kZXJlcigpIHx8ICFibG9ja1RvUmVtb3ZlLT5yZW5kZXJlcigpLT5m
aXJzdENoaWxkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrVG9SZW1vdmUtPnBh
cmVudE5vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQoYmxvY2tU
b1JlbW92ZS0+cGFyZW50Tm9kZSgpLT5lbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KCkpOwotICAg
ICAgICAgICAgICAgICAgICByZW1vdmVOb2RlKGJsb2NrVG9SZW1vdmUpOwotICAgICAgICAgICAg
ICAgICAgICB1cGRhdGVMYXlvdXQoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGZpeHVwTm9kZVN0eWxlcyhzdHlsZXMpOwogICAgICAgICB9CkBAIC04
NDUsMTEgKzg0Nyw4IEBACiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwbGFjZWhvbGRlclBvcyhs
aW5lUGxhY2Vob2xkZXIsIGxpbmVQbGFjZWhvbGRlci0+cmVuZGVyZXIoKS0+Y2FyZXRNaW5PZmZz
ZXQoKSwgRE9XTlNUUkVBTSk7CiAgICAgICAgIGlmIChwbGFjZWhvbGRlclBvcy5uZXh0KCkuaXNO
dWxsKCkgfHwKICAgICAgICAgICAgICEoaXNTdGFydE9mTGluZShwbGFjZWhvbGRlclBvcykgJiYg
aXNFbmRPZkxpbmUocGxhY2Vob2xkZXJQb3MpKSkgewotICAgICAgICAgICAgTm9kZUltcGwgKmJs
b2NrID0gbGluZVBsYWNlaG9sZGVyLT5lbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KCk7Ci0gICAg
ICAgICAgICByZW1vdmVOb2RlKGxpbmVQbGFjZWhvbGRlcik7Ci0gICAgICAgICAgICB1cGRhdGVM
YXlvdXQoKTsKLSAgICAgICAgICAgIGlmICghYmxvY2stPnJlbmRlcmVyKCkgfHwgYmxvY2stPnJl
bmRlcmVyKCktPmhlaWdodCgpID09IDApCi0gICAgICAgICAgICAgICAgcmVtb3ZlTm9kZShibG9j
ayk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9y
cyhsaW5lUGxhY2Vob2xkZXIpOwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9l
ZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvaHRt
bGVkaXRpbmcuY3BwCShyZXZpc2lvbiAxMzE2OCkKKysrIFdlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw3ICsxOTIsNyBAQAogICAgIHJldHVybiBu
b25CcmVha2luZ1NwYWNlU3RyaW5nOwogfQogCi0vLyBGSVhNRTogV2h5IHVzZSB0aGlzIGluc3Rl
YWQgb2YgbWF4RGVlcE9mZnNldD8/PworLy8gRklYTUU6IFdoeSB1c2UgdGhpcyBpbnN0ZWFkIG9m
IG1heERlZXBPZmZzZXQ/CiBzdGF0aWMgaW50IG1heFJhbmdlT2Zmc2V0KE5vZGVJbXBsICpuKQog
ewogICAgIGlmIChuLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSkKSW5kZXg6IFdlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCShyZXZpc2lvbiAxMzE2OCkKKysrIFdlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIs
NiArMTIyLDcgQEAKICAgICB2b2lkIHVwZGF0ZU5vZGVzSW5zZXJ0ZWQoTm9kZUltcGwgKik7CiAg
ICAgdm9pZCBmaXh1cE5vZGVTdHlsZXMoY29uc3QgUVZhbHVlTGlzdDxOb2RlRGVzaXJlZFN0eWxl
PiAmKTsKICAgICB2b2lkIHJlbW92ZUxpbmVQbGFjZWhvbGRlcklmTmVlZGVkKE5vZGVJbXBsICop
OworICAgIHZvaWQgcmVtb3ZlTm9kZUFuZFBydW5lQW5jZXN0b3JzKE5vZGVJbXBsKik7CiAKICAg
ICBSZXBsYWNlbWVudEZyYWdtZW50IG1fZnJhZ21lbnQ7CiAgICAgUmVmUHRyPE5vZGVJbXBsPiBt
X2ZpcnN0Tm9kZUluc2VydGVkOwo=
</data>
<flag name="review"
          id="1790"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>