<?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>72630</bug_id>
          
          <creation_ts>2011-11-17 10:15:32 -0800</creation_ts>
          <short_desc>[Chromium] Calls to paintContentsIfDirty() and updateCompositorResources() should be balanced.</short_desc>
          <delta_ts>2011-11-17 16:49:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>71388</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>504952</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-17 10:15:32 -0800</bug_when>
    <thetext>Layer property changes during paintContent() can leave the layer in an invalid state as paintContentsIfDirty() has been called without a matching updateCompositorResources() call. Removing conditionals around these calls ensure they are balanced.

This change can result in unnecessary uploads but that can be properly solved using this change: https://bugs.webkit.org/show_bug.cgi?id=72192</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504984</commentid>
    <comment_count>1</comment_count>
      <attachid>115620</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-17 10:44:06 -0800</bug_when>
    <thetext>Created attachment 115620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505035</commentid>
    <comment_count>2</comment_count>
      <attachid>115620</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-17 11:44:27 -0800</bug_when>
    <thetext>Comment on attachment 115620
Patch

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

I wish there were some better way to assert that this never happened in practice.  Do you think it&apos;d be a good idea to store the compositor frame that is being painted in TiledLayerChromium::prepareToUpdate and assert/early-out if the frame number is different during TiledLayerChromium::updateCompositorResources?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:-339
&gt; -    if (layer-&gt;drawsContent())
&gt; -        layer-&gt;paintContentsIfDirty();

Can you leave the drawsContent() check both here and in updateCompositorResources? Otherwise, you&apos;re going to trip asserts like the ASSERT(drawsContent()) in VideoLayerChromium::updateCompositorResources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505047</commentid>
    <comment_count>3</comment_count>
      <attachid>115642</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-17 11:50:09 -0800</bug_when>
    <thetext>Created attachment 115642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505056</commentid>
    <comment_count>4</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-17 11:54:15 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 115620 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115620&amp;action=review
&gt; 
&gt; I wish there were some better way to assert that this never happened in practice.  Do you think it&apos;d be a good idea to store the compositor frame that is being painted in TiledLayerChromium::prepareToUpdate and assert/early-out if the frame number is different during TiledLayerChromium::updateCompositorResources?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:-339
&gt; &gt; -    if (layer-&gt;drawsContent())
&gt; &gt; -        layer-&gt;paintContentsIfDirty();
&gt; 
&gt; Can you leave the drawsContent() check both here and in updateCompositorResources? Otherwise, you&apos;re going to trip asserts like the ASSERT(drawsContent()) in VideoLayerChromium::updateCompositorResources.

Realized this just after uploading the previous patch. I think my new patch handles this properly. We need to make sure that if one of these calls are made the other needs to be made as well. It will be easy to avoid both calls when 72192 has landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505089</commentid>
    <comment_count>5</comment_count>
      <attachid>115642</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-17 12:19:22 -0800</bug_when>
    <thetext>Comment on attachment 115642
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:338
&gt;  static void paintContentsIfDirty(LayerChromium* layer)
&gt;  {
&gt; -    if (layer-&gt;drawsContent())
&gt; -        layer-&gt;paintContentsIfDirty();
&gt; +    layer-&gt;paintContentsIfDirty();

this helper isn&apos;t useful any more, can you just inline it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505127</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-17 13:02:11 -0800</bug_when>
    <thetext>Does https://bugs.webkit.org/show_bug.cgi?id=71038 simplify this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505183</commentid>
    <comment_count>7</comment_count>
      <attachid>115671</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-17 14:03:38 -0800</bug_when>
    <thetext>Created attachment 115671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505185</commentid>
    <comment_count>8</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-17 14:04:19 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 115642 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115642&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:338
&gt; &gt;  static void paintContentsIfDirty(LayerChromium* layer)
&gt; &gt;  {
&gt; &gt; -    if (layer-&gt;drawsContent())
&gt; &gt; -        layer-&gt;paintContentsIfDirty();
&gt; &gt; +    layer-&gt;paintContentsIfDirty();
&gt; 
&gt; this helper isn&apos;t useful any more, can you just inline it?

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505198</commentid>
    <comment_count>9</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-17 14:10:21 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Does https://bugs.webkit.org/show_bug.cgi?id=71038 simplify this?

That change is great as it makes this fix less likely to cause a performance regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505209</commentid>
    <comment_count>10</comment_count>
      <attachid>115671</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-17 14:21:17 -0800</bug_when>
    <thetext>Comment on attachment 115671
Patch

Looks great, R=me. Could you let Enne check it over before landing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505256</commentid>
    <comment_count>11</comment_count>
      <attachid>115671</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-17 14:56:01 -0800</bug_when>
    <thetext>Comment on attachment 115671
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505356</commentid>
    <comment_count>12</comment_count>
      <attachid>115671</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-17 16:49:17 -0800</bug_when>
    <thetext>Comment on attachment 115671
Patch

Clearing flags on attachment: 115671

Committed r100702: &lt;http://trac.webkit.org/changeset/100702&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505357</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-17 16:49:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115620</attachid>
            <date>2011-11-17 10:44:06 -0800</date>
            <delta_ts>2011-11-17 11:50:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72630-20111117104405.patch</filename>
            <type>text/plain</type>
            <size>8810</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMxNjk3NzM2N2ExNThj
MDYwNTI0MWM2ZWE0NmY0YjE2MTMxNDQ4My4uNThiY2ZjYWNiYjU0OGExODIxZDYyNDk4MTgxNmIx
MmFhMzhhODY4NiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTExLTE3ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBD
YWxscyB0byBwYWludENvbnRlbnRzSWZEaXJ0eSgpIGFuZCB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKCkgc2hvdWxkIGJlIGJhbGFuY2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBMYXllciBwcm9wZXJ0eSBjaGFuZ2VzIGR1cmluZyBwYWludENvbnRl
bnQoKSBjYW4gbGVhdmUgdGhlIGxheWVyCisgICAgICAgIGluIGFuIGludmFsaWQgc3RhdGUgYXMg
cGFpbnRDb250ZW50c0lmRGlydHkoKSBoYXMgYmVlbiBjYWxsZWQKKyAgICAgICAgd2l0aG91dCBh
IG1hdGNoaW5nIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKSBjYWxsLiBSZW1vdmluZworICAg
ICAgICBjb25kaXRpb25hbHMgYXJvdW5kIHRoZXNlIGNhbGxzIGVuc3VyZSB0aGV5IGFyZSBiYWxh
bmNlZC4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHRlc3RlZCBieSB0aGUgZm9sbG93aW5nIHVu
aXQgdGVzdDoKKyAgICAgICAgLSBDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZS5ydW5N
dWx0aVRocmVhZAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50Q29udGVudHNJZkRpcnR5
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyk6CisKIDIwMTEtMTEtMTcgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gcGx1Z2lucy9nZXQtdXJsLW5vdGlmeS13aXRoLXVy
bC10aGF0LWZhaWxzLXRvLWxvYWQuaHRtbCBvbiBib3RzIGFmdGVyIHIxMDA0NjYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggODNhNmZkMjNhZTg0N2U0MzE5NTc3M2Q3ZjIyNTQ3M2U3NGJk
NjNhMy4uZmY4ODgwNjcxNmNhNGZiMDBiMGY3ZDNlYTE4OTUzMDE5YmU0MzYyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMS0xMS0xNyAgRGF2aWQgUmV2
ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQ2FsbHMg
dG8gcGFpbnRDb250ZW50c0lmRGlydHkoKSBhbmQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygp
IHNob3VsZCBiZSBiYWxhbmNlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcyNjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHRlc3QgdGhhdCBjaGVjayBpZiBjYWxscyB0byBwYWludENvbnRlbnRz
SWZEaXJ0eSgpIGFuZAorICAgICAgICB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkgYXJlIGJh
bGFuY2VkIHdoZW4gbGF5ZXIgb3BhY2l0eSBjaGFuZ2VzCisgICAgICAgIGR1cmluZyBwYWludENv
bnRlbnQoKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAg
ICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0OjpsYXllclRyZWVIb3N0KToKKyAgICAgICAg
KFdURjo6VGVzdE9wYWNpdHlDaGFuZ2VMYXllckRlbGVnYXRlOjpUZXN0T3BhY2l0eUNoYW5nZUxh
eWVyRGVsZWdhdGUpOgorICAgICAgICAoV1RGOjpUZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdh
dGU6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpUZXN0T3BhY2l0eUNoYW5nZUxheWVy
RGVsZWdhdGU6OmRyYXdzQ29udGVudCk6CisgICAgICAgIChXVEY6OlRlc3RPcGFjaXR5Q2hhbmdl
TGF5ZXJEZWxlZ2F0ZTo6cHJlc2VydmVzM0QpOgorICAgICAgICAoV1RGOjpUZXN0T3BhY2l0eUNo
YW5nZUxheWVyRGVsZWdhdGU6Om5vdGlmeVN5bmNSZXF1aXJlZCk6CisgICAgICAgIChXVEY6OkNv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGUpOgorICAgICAgICAo
V1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50
c0NvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc6OnJlc2V0UGFpbnRDb250ZW50c0NvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnVwZGF0ZUNvdW50KToKKyAgICAgICAgKFdU
Rjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnJlc2V0VXBkYXRlQ291
bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zzo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJv
bWl1bVdpdGhVcGRhdGVUcmFja2luZzo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAg
ICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50
TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJU
cmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5n
ZSk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlOjpiZWdp
blRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZTo6
Y29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0
VGVzdE9wYWNpdHlDaGFuZ2U6OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisK
IDIwMTEtMTEtMTcgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogUmVtb3ZlIG9ubGluZURldGVjdGlvbkVuYWJsZWQgZnJvbSBQ
cmVmZXJlbmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNjM3MjJiOWRl
MzMwNGQ0ZTQzZThjMGYwMmZlMmY1MTM4NDhmMmNlYi4uMzYzNDIzNjMwN2JiOGNiYjQyYWIyNDY3
ZmY0NzJiOWY0NzMyZDFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0z
MzUsOCArMzM1LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNo
cm9taXVtKiByb290TGF5ZXIpCiAKIHN0YXRpYyB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KExh
eWVyQ2hyb21pdW0qIGxheWVyKQogewotICAgIGlmIChsYXllci0+ZHJhd3NDb250ZW50KCkpCi0g
ICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIGxheWVyLT5wYWludENv
bnRlbnRzSWZEaXJ0eSgpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5k
UmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVy
KQpAQCAtNDM3LDExICs0MzYsNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZQogCiB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhMYXllckNocm9taXVtKiBs
YXllciwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0
ZXIpCiB7Ci0gICAgLy8gRm9yIG5vcm1hbCBsYXllcnMsIHRoZXNlIGNvbmRpdGlvbnMgc2hvdWxk
IGhhdmUgYWxyZWFkeSBiZWVuIGNoZWNrZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHJlbmRlciBzdXJm
YWNlIGxheWVyIGxpc3RzLgotICAgIC8vIEZvciBtYXNrcyBhbmQgcmVwbGljYXMgaG93ZXZlciwg
d2UgbWF5IHN0aWxsIG5lZWQgdG8gY2hlY2sgdGhlbSBoZXJlLgotICAgIGlmIChsYXllci0+Ym91
bmRzKCkuaXNFbXB0eSgpIHx8ICFsYXllci0+b3BhY2l0eSgpIHx8ICFsYXllci0+ZHJhd3NDb250
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCBkMWRjZjVkODY2ZjJm
MTVjMTBlMjVhZjJmYWVlMjE1YmU5M2IyNzc5Li4yMTMxNWEwZTUwNzFhMzZkZGMwMDIwNzJmOWNj
Mjc1MmI5OTk2ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTI2LDkgKzI2LDExIEBACiAKICNpbmNsdWRlICJj
Yy9DQ0xheWVyVHJlZUhvc3QuaCIKIAorI2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgi
CiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUg
ImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgpAQCAtMjI3LDYgKzIyOSw4IEBAIHB1YmxpYzoKICAgICAgICAgbV90aW1lb3V0VGFzayA9
IDA7CiAgICAgfQogCisgICAgQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KCkgeyByZXR1
cm4gbV9sYXllclRyZWVIb3N0LmdldCgpOyB9CisKIAogcHJvdGVjdGVkOgogICAgIENDTGF5ZXJU
cmVlSG9zdFRlc3QoKQpAQCAtODI2LDQgKzgzMCwxMDMgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dFRlc3RTZXRWaXNpYmxlLCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0KHRydWUpOwogfQog
CitjbGFzcyBUZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdhdGUgOiBwdWJsaWMgQ0NMYXllckRl
bGVnYXRlIHsKK3B1YmxpYzoKKyAgICBUZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdhdGUoQ0NM
YXllclRyZWVIb3N0VGVzdCogdGVzdCkKKyAgICAgICAgOiBtX3Rlc3QodGVzdCkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgSW50UmVjdCYpCisgICAgeworICAgICAgICAvLyBTZXQgbGF5ZXIgb3BhY2l0eSB0byAw
LgorICAgICAgICBtX3Rlc3QtPmxheWVyVHJlZUhvc3QoKS0+cm9vdExheWVyKCktPnNldE9wYWNp
dHkoMCk7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcHJlc2VydmVzM0QoKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoKSB7IH0KKworcHJp
dmF0ZToKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiBtX3Rlc3Q7Cit9OworCitjbGFzcyBDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyA6IHB1YmxpYyBDb250ZW50TGF5ZXJD
aHJvbWl1bSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUgKmRlbGVnYXRl
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmcoZGVsZWdhdGUpKTsgfQorCisgICAgaW50IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0
dXJuIG1fcGFpbnRDb250ZW50c0NvdW50OyB9CisgICAgdm9pZCByZXNldFBhaW50Q29udGVudHND
b3VudCgpIHsgbV9wYWludENvbnRlbnRzQ291bnQgPSAwOyB9CisKKyAgICBpbnQgdXBkYXRlQ291
bnQoKSB7IHJldHVybiBtX3VwZGF0ZUNvdW50OyB9CisgICAgdm9pZCByZXNldFVwZGF0ZUNvdW50
KCkgeyBtX3VwZGF0ZUNvdW50ID0gMDsgfQorCisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHNJZkRpcnR5KCkKKyAgICB7CisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENv
bnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBtX3BhaW50Q29udGVudHNDb3VudCsrOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQorICAgIHsKKyAgICAg
ICAgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4
dCwgdXBkYXRlcik7CisgICAgICAgIG1fdXBkYXRlQ291bnQrKzsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoQ0NM
YXllckRlbGVnYXRlICpkZWxlZ2F0ZSkKKyAgICAgICAgOiBDb250ZW50TGF5ZXJDaHJvbWl1bShk
ZWxlZ2F0ZSkKKyAgICAgICAgLCBtX3BhaW50Q29udGVudHNDb3VudCgwKQorICAgICAgICAsIG1f
dXBkYXRlQ291bnQoMCkKKyAgICB7CisgICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkp
OworICAgIH0KKworICAgIGludCBtX3BhaW50Q29udGVudHNDb3VudDsKKyAgICBpbnQgbV91cGRh
dGVDb3VudDsKK307CisKKy8vIExheWVyIG9wYWNpdHkgY2hhbmdlIGR1cmluZyBwYWludCBzaG91
bGQgbm90IHByZXZlbnQgY29tcG9zaXRvciByZXNvdXJjZXMgZnJvbSBiZWluZyB1cGRhdGVkIGR1
cmluZyBjb21taXQuCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZSA6IHB1
YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVyVHJlZUhvc3RU
ZXN0T3BhY2l0eUNoYW5nZSgpCisgICAgICAgIDogbV90ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRl
KHRoaXMpCisgICAgICAgICwgbV91cGRhdGVDaGVja0xheWVyKENvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGUoJm1fdGVzdE9wYWNpdHlDaGFuZ2VEZWxlZ2F0ZSkp
CisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQorICAgIHsKKyAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIobV91cGRhdGVDaGVja0xheWVyKTsK
KyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydChJbnRTaXplKDEwLCAxMCkpOwor
CisgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1w
bCopCisgICAgeworICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IGFmdGVyVGVzdCgpCisgICAgeworICAgICAgICAvLyBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHNo
b3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0
ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpKTsKKworICAgICAgICAvLyB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKKyAg
ICAgICAgLy8gYW1vdXQgb2YgdGltZXMgYXMgcGFpbnRDb250ZW50c0lmRGlydHkoKS4KKyAgICAg
ICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c0NvdW50KCksCisg
ICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZUNvdW50KCkpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBUZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdhdGUgbV90ZXN0
T3BhY2l0eUNoYW5nZURlbGVnYXRlOworICAgIFJlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZz4gbV91cGRhdGVDaGVja0xheWVyOworfTsKKworVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlLCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5U
ZXN0KHRydWUpOworfQorCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115642</attachid>
            <date>2011-11-17 11:50:09 -0800</date>
            <delta_ts>2011-11-17 14:03:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72630-20111117115008.patch</filename>
            <type>text/plain</type>
            <size>11132</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMxNjk3NzM2N2ExNThj
MDYwNTI0MWM2ZWE0NmY0YjE2MTMxNDQ4My4uMDljYTBkMWIwMDczNjg2ZjYwYWMwY2UxNzhlNDk3
MGFhMTRjMDM0YSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDExLTExLTE3ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBD
YWxscyB0byBwYWludENvbnRlbnRzSWZEaXJ0eSgpIGFuZCB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKCkgc2hvdWxkIGJlIGJhbGFuY2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBMYXllciBwcm9wZXJ0eSBjaGFuZ2VzIGR1cmluZyBwYWludENvbnRl
bnQoKSBjYW4gbGVhdmUgdGhlIGxheWVyCisgICAgICAgIGluIGFuIGludmFsaWQgc3RhdGUgYXMg
cGFpbnRDb250ZW50c0lmRGlydHkoKSBoYXMgYmVlbiBjYWxsZWQKKyAgICAgICAgd2l0aG91dCBh
IG1hdGNoaW5nIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKSBjYWxsLiBSZW1vdmluZworICAg
ICAgICBjb25kaXRpb25hbHMgYXJvdW5kIHRoZXNlIGNhbGxzIGVuc3VyZSB0aGV5IGFyZSBiYWxh
bmNlZC4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHRlc3RlZCBieSB0aGUgZm9sbG93aW5nIHVu
aXQgdGVzdDoKKyAgICAgICAgLSBDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZS5ydW5N
dWx0aVRocmVhZAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9M
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKwogMjAxMS0xMS0xNyAgU2Vy
Z2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBw
bHVnaW5zL2dldC11cmwtbm90aWZ5LXdpdGgtdXJsLXRoYXQtZmFpbHMtdG8tbG9hZC5odG1sIG9u
IGJvdHMgYWZ0ZXIgcjEwMDQ2NgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4M2E2ZmQy
M2FlODQ3ZTQzMTk1NzczZDdmMjI1NDczZTc0YmQ2M2EzLi41NmI5N2FiNDIzOWE0NzEzN2MxNjAw
NWYwNzlhZTAwY2RiM2JiNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM1IEBACisyMDExLTExLTE3ICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW0Nocm9taXVtXSBDYWxscyB0byBwYWludENvbnRlbnRzSWZEaXJ0eSgpIGFu
ZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkgc2hvdWxkIGJlIGJhbGFuY2VkLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MzAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCB0aGF0IGNo
ZWNrIGlmIGNhbGxzIHRvIHBhaW50Q29udGVudHNJZkRpcnR5KCkgYW5kCisgICAgICAgIHVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKSBhcmUgYmFsYW5jZWQgd2hlbiBsYXllciBvcGFjaXR5Cisg
ICAgICAgIGNoYW5nZXMgZHVyaW5nIHBhaW50Q29udGVudCgpLgorCisgICAgICAgICogdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRl
c3Q6OmxheWVyVHJlZUhvc3QpOgorICAgICAgICAoV1RGOjpUZXN0T3BhY2l0eUNoYW5nZUxheWVy
RGVsZWdhdGU6OlRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZSk6CisgICAgICAgIChXVEY6
OlRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZTo6cGFpbnRDb250ZW50cyk6CisgICAgICAg
IChXVEY6OlRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZTo6ZHJhd3NDb250ZW50KToKKyAg
ICAgICAgKFdURjo6VGVzdE9wYWNpdHlDaGFuZ2VMYXllckRlbGVnYXRlOjpwcmVzZXJ2ZXMzRCk6
CisgICAgICAgIChXVEY6OlRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZTo6bm90aWZ5U3lu
Y1JlcXVpcmVkKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0
aFVwZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRzQ291bnQpOgorICAgICAgICAoV1RGOjpDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cmVzZXRQYWludENvbnRlbnRzQ291
bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zzo6dXBkYXRlQ291bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZzo6cmVzZXRVcGRhdGVDb3VudCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6Cisg
ICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21p
dW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2U6OkND
TGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRy
ZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2U6OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5
ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlOjpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZTo6YWZ0ZXJUZXN0
KToKKyAgICAgICAgKFdURjo6VEVTVF9GKToKKwogMjAxMS0xMS0xNyAgVnNldm9sb2QgVmxhc292
ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdmUg
b25saW5lRGV0ZWN0aW9uRW5hYmxlZCBmcm9tIFByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggY2E4YjNiZDc2MWYwODE1ZTQ3YjZjZmIwNDkxYTFkOTcy
ODc5ZjA0Yy4uOWViMWQ3OTlmNmQ5MWVjZWM2Nzk4MTA2ZWM2MDI3YmI0MWU1MjUyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtOTQsMjEgKzk0LDE5IEBAIHZvaWQg
Q29udGVudExheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQogCiB2b2lkIENvbnRlbnRM
YXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCiB7Ci0gICAgQVNTRVJUKGRyYXdz
Q29udGVudCgpKTsKLQogICAgIHVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKCk7CiAKLSAg
ICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0KCk7Ci0gICAgaWYg
KGxheWVyUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKKyAgICBJbnRSZWN0IGxheWVy
UmVjdDsKKworICAgIC8vIEFsd2F5cyBjYWxsIHByZXBhcmVUb1VwZGF0ZSgpIGJ1dCB3aXRoIGFu
IGVtcHR5IGxheWVyIHJlY3RhbmdsZSB3aGVuCisgICAgLy8gbGF5ZXIgZG9lc24ndCBkcmF3IGNv
bnRlbnRzLgorICAgIGlmIChkcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgbGF5ZXJSZWN0ID0gdmlz
aWJsZUxheWVyUmVjdCgpOwogCiAgICAgSW50UmVjdCBkaXJ0eSA9IGVuY2xvc2luZ0ludFJlY3Qo
bV9kaXJ0eVJlY3QpOwogICAgIGRpcnR5LmludGVyc2VjdChJbnRSZWN0KEludFBvaW50KCksIGNv
bnRlbnRCb3VuZHMoKSkpOwogICAgIGludmFsaWRhdGVSZWN0KGRpcnR5KTsKIAotICAgIGlmICgh
ZHJhd3NDb250ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIHByZXBhcmVUb1VwZGF0ZShs
YXllclJlY3QpOwogICAgIHJlc2V0TmVlZHNEaXNwbGF5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXll
ckNocm9taXVtLmNwcAppbmRleCAyMzk0NTY4ZjJkODI3OGY1OTc5YTdmZTBjNTYxNWQ5ZjcyMDk4
YjY3Li5lNmJjNzc1NTNiMWM0ZjBkYjIwYTA3OThlNzA0MTRmOGE1YmVlYTFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBWaWRlb0xheWVy
Q2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQogCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NU
ZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKLSAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcHJv
dmlkZXIpCisgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Byb3ZpZGVyIHx8ICFkcmF3c0NvbnRl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZGlydHlSZWN0LmlzRW1wdHkoKSAm
JiB0ZXh0dXJlc1ZhbGlkKCkpIHsKQEAgLTkzLDggKzkzLDYgQEAgdm9pZCBWaWRlb0xheWVyQ2hy
b21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIEMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChkcmF3c0NvbnRlbnQo
KSk7Ci0KICAgICBtX3BsYW5lcyA9IDA7CiAgICAgbV9za2lwc0RyYXcgPSBmYWxzZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNjM3MjJiOWRlMzMwNGQ0ZTQzZThjMGYw
MmZlMmY1MTM4NDhmMmNlYi4uMzYzNDIzNjMwN2JiOGNiYjQyYWIyNDY3ZmY0NzJiOWY0NzMyZDFj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zMzUsOCArMzM1LDcgQEAg
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5
ZXIpCiAKIHN0YXRpYyB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qIGxh
eWVyKQogewotICAgIGlmIChsYXllci0+ZHJhd3NDb250ZW50KCkpCi0gICAgICAgIGxheWVyLT5w
YWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eSgp
OwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRl
clN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyKQpAQCAtNDM3LDExICs0
MzYsNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhMYXllckNocm9taXVtKiBsYXllciwgR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7Ci0gICAgLy8g
Rm9yIG5vcm1hbCBsYXllcnMsIHRoZXNlIGNvbmRpdGlvbnMgc2hvdWxkIGhhdmUgYWxyZWFkeSBi
ZWVuIGNoZWNrZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHJlbmRlciBzdXJmYWNlIGxheWVyIGxpc3Rz
LgotICAgIC8vIEZvciBtYXNrcyBhbmQgcmVwbGljYXMgaG93ZXZlciwgd2UgbWF5IHN0aWxsIG5l
ZWQgdG8gY2hlY2sgdGhlbSBoZXJlLgotICAgIGlmIChsYXllci0+Ym91bmRzKCkuaXNFbXB0eSgp
IHx8ICFsYXllci0+b3BhY2l0eSgpIHx8ICFsYXllci0+ZHJhd3NDb250ZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQs
IHVwZGF0ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCBkMWRjZjVkODY2ZjJmMTVjMTBlMjVhZjJmYWVl
MjE1YmU5M2IyNzc5Li4yMTMxNWEwZTUwNzFhMzZkZGMwMDIwNzJmOWNjMjc1MmI5OTk2ZjZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAKQEAgLTI2LDkgKzI2LDExIEBACiAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3QuaCIKIAorI2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5j
bHVkZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVw
ZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgpAQCAtMjI3LDYg
KzIyOSw4IEBAIHB1YmxpYzoKICAgICAgICAgbV90aW1lb3V0VGFzayA9IDA7CiAgICAgfQogCisg
ICAgQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KCkgeyByZXR1cm4gbV9sYXllclRyZWVI
b3N0LmdldCgpOyB9CisKIAogcHJvdGVjdGVkOgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3QoKQpA
QCAtODI2LDQgKzgzMCwxMDMgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RTZXRWaXNpYmxl
LCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0KHRydWUpOwogfQogCitjbGFzcyBUZXN0T3Bh
Y2l0eUNoYW5nZUxheWVyRGVsZWdhdGUgOiBwdWJsaWMgQ0NMYXllckRlbGVnYXRlIHsKK3B1Ymxp
YzoKKyAgICBUZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdhdGUoQ0NMYXllclRyZWVIb3N0VGVz
dCogdGVzdCkKKyAgICAgICAgOiBtX3Rlc3QodGVzdCkKKyAgICB7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYp
CisgICAgeworICAgICAgICAvLyBTZXQgbGF5ZXIgb3BhY2l0eSB0byAwLgorICAgICAgICBtX3Rl
c3QtPmxheWVyVHJlZUhvc3QoKS0+cm9vdExheWVyKCktPnNldE9wYWNpdHkoMCk7CisgICAgfQor
CisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgcHJlc2VydmVzM0QoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoKSB7IH0KKworcHJpdmF0ZToKKyAgICBDQ0xh
eWVyVHJlZUhvc3RUZXN0KiBtX3Rlc3Q7Cit9OworCitjbGFzcyBDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZyA6IHB1YmxpYyBDb250ZW50TGF5ZXJDaHJvbWl1bSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUgKmRlbGVnYXRlKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoZGVsZWdhdGUp
KTsgfQorCisgICAgaW50IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1fcGFpbnRDb250
ZW50c0NvdW50OyB9CisgICAgdm9pZCByZXNldFBhaW50Q29udGVudHNDb3VudCgpIHsgbV9wYWlu
dENvbnRlbnRzQ291bnQgPSAwOyB9CisKKyAgICBpbnQgdXBkYXRlQ291bnQoKSB7IHJldHVybiBt
X3VwZGF0ZUNvdW50OyB9CisgICAgdm9pZCByZXNldFVwZGF0ZUNvdW50KCkgeyBtX3VwZGF0ZUNv
dW50ID0gMDsgfQorCisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCkKKyAg
ICB7CisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgp
OworICAgICAgICBtX3BhaW50Q29udGVudHNDb3VudCsrOworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQorICAgIHsKKyAgICAgICAgQ29udGVudExheWVy
Q2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Cisg
ICAgICAgIG1fdXBkYXRlQ291bnQrKzsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoQ0NMYXllckRlbGVnYXRlICpk
ZWxlZ2F0ZSkKKyAgICAgICAgOiBDb250ZW50TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkKKyAgICAg
ICAgLCBtX3BhaW50Q29udGVudHNDb3VudCgwKQorICAgICAgICAsIG1fdXBkYXRlQ291bnQoMCkK
KyAgICB7CisgICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOworICAgIH0KKworICAg
IGludCBtX3BhaW50Q29udGVudHNDb3VudDsKKyAgICBpbnQgbV91cGRhdGVDb3VudDsKK307CisK
Ky8vIExheWVyIG9wYWNpdHkgY2hhbmdlIGR1cmluZyBwYWludCBzaG91bGQgbm90IHByZXZlbnQg
Y29tcG9zaXRvciByZXNvdXJjZXMgZnJvbSBiZWluZyB1cGRhdGVkIGR1cmluZyBjb21taXQuCitj
bGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZSA6IHB1YmxpYyBDQ0xheWVyVHJl
ZUhvc3RUZXN0IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5n
ZSgpCisgICAgICAgIDogbV90ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRlKHRoaXMpCisgICAgICAg
ICwgbV91cGRhdGVDaGVja0xheWVyKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nOjpjcmVhdGUoJm1fdGVzdE9wYWNpdHlDaGFuZ2VEZWxlZ2F0ZSkpCisgICAgeworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQorICAgIHsKKyAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXRSb290TGF5ZXIobV91cGRhdGVDaGVja0xheWVyKTsKKyAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRWaWV3cG9ydChJbnRTaXplKDEwLCAxMCkpOworCisgICAgICAgIHBvc3RT
ZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBj
b21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopCisgICAgeworICAg
ICAgICBlbmRUZXN0KCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCisg
ICAgeworICAgICAgICAvLyBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHNob3VsZCBoYXZlIGJlZW4g
Y2FsbGVkIG9uY2UuCisgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBh
aW50Q29udGVudHNDb3VudCgpKTsKKworICAgICAgICAvLyB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKKyAgICAgICAgLy8gYW1vdXQg
b2YgdGltZXMgYXMgcGFpbnRDb250ZW50c0lmRGlydHkoKS4KKyAgICAgICAgRVhQRUNUX0VRKG1f
dXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c0NvdW50KCksCisgICAgICAgICAgICAgICAg
ICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZUNvdW50KCkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBUZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdhdGUgbV90ZXN0T3BhY2l0eUNoYW5nZURl
bGVnYXRlOworICAgIFJlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zz4gbV91cGRhdGVDaGVja0xheWVyOworfTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RP
cGFjaXR5Q2hhbmdlLCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5UZXN0KHRydWUpOworfQor
CiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115671</attachid>
            <date>2011-11-17 14:03:38 -0800</date>
            <delta_ts>2011-11-17 16:49:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72630-20111117140337.patch</filename>
            <type>text/plain</type>
            <size>14839</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMxNjk3NzM2N2ExNThj
MDYwNTI0MWM2ZWE0NmY0YjE2MTMxNDQ4My4uNjllNTU0MDY5ZjZiOGE1NTE3NDYwZjc3MTBhMTVj
YWJhMjM4NWI4NiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDExLTExLTE3ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBD
YWxscyB0byBwYWludENvbnRlbnRzSWZEaXJ0eSgpIGFuZCB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKCkgc2hvdWxkIGJlIGJhbGFuY2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBMYXllciBwcm9wZXJ0eSBjaGFuZ2VzIGR1cmluZyBwYWludENvbnRl
bnQoKSBjYW4gbGVhdmUgdGhlIGxheWVyCisgICAgICAgIGluIGFuIGludmFsaWQgc3RhdGUgYXMg
cGFpbnRDb250ZW50c0lmRGlydHkoKSBoYXMgYmVlbiBjYWxsZWQKKyAgICAgICAgd2l0aG91dCBh
IG1hdGNoaW5nIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKSBjYWxsLiBSZW1vdmluZworICAg
ICAgICBjb25kaXRpb25hbHMgYXJvdW5kIHRoZXNlIGNhbGxzIGVuc3VyZSB0aGV5IGFyZSBiYWxh
bmNlZC4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHRlc3RlZCBieSB0aGUgZm9sbG93aW5nIHVu
aXQgdGVzdDoKKyAgICAgICAgLSBDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZS5ydW5N
dWx0aVRocmVhZAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9M
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3Vy
ZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oOgorCiAyMDExLTExLTE3ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3Zp
bGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIHBsdWdpbnMvZ2V0LXVybC1ub3RpZnkt
d2l0aC11cmwtdGhhdC1mYWlscy10by1sb2FkLmh0bWwgb24gYm90cyBhZnRlciByMTAwNDY2CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDgzYTZmZDIzYWU4NDdlNDMxOTU3NzNkN2YyMjU0
NzNlNzRiZDYzYTMuLjU2Yjk3YWI0MjM5YTQ3MTM3YzE2MDA1ZjA3OWFlMDBjZGIzYmI2Y2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMTEtMTcgIERh
dmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1d
IENhbGxzIHRvIHBhaW50Q29udGVudHNJZkRpcnR5KCkgYW5kIHVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoKSBzaG91bGQgYmUgYmFsYW5jZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MjYzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0IHRoYXQgY2hlY2sgaWYgY2FsbHMgdG8gcGFpbnRD
b250ZW50c0lmRGlydHkoKSBhbmQKKyAgICAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygp
IGFyZSBiYWxhbmNlZCB3aGVuIGxheWVyIG9wYWNpdHkKKyAgICAgICAgY2hhbmdlcyBkdXJpbmcg
cGFpbnRDb250ZW50KCkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cDoKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdDo6bGF5ZXJUcmVlSG9zdCk6Cisg
ICAgICAgIChXVEY6OlRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZTo6VGVzdE9wYWNpdHlD
aGFuZ2VMYXllckRlbGVnYXRlKToKKyAgICAgICAgKFdURjo6VGVzdE9wYWNpdHlDaGFuZ2VMYXll
ckRlbGVnYXRlOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6VGVzdE9wYWNpdHlDaGFu
Z2VMYXllckRlbGVnYXRlOjpkcmF3c0NvbnRlbnQpOgorICAgICAgICAoV1RGOjpUZXN0T3BhY2l0
eUNoYW5nZUxheWVyRGVsZWdhdGU6OnByZXNlcnZlczNEKToKKyAgICAgICAgKFdURjo6VGVzdE9w
YWNpdHlDaGFuZ2VMYXllckRlbGVnYXRlOjpub3RpZnlTeW5jUmVxdWlyZWQpOgorICAgICAgICAo
V1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKToKKyAg
ICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnBhaW50
Q29udGVudHNDb3VudCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nOjpyZXNldFBhaW50Q29udGVudHNDb3VudCk6CisgICAgICAgIChXVEY6OkNv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjp1cGRhdGVDb3VudCk6CisgICAg
ICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpyZXNldFVw
ZGF0ZUNvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc6OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKFdURjo6Q29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMp
OgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6
Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcpOgorICAgICAgICAoV1RGOjpD
Q0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZTo6Q0NMYXllclRyZWVIb3N0VGVzdE9wYWNp
dHlDaGFuZ2UpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5n
ZTo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlD
aGFuZ2U6OmNvbW1pdENvbXBsZXRlT25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJU
cmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlOjphZnRlclRlc3QpOgorICAgICAgICAoV1RGOjpURVNU
X0YpOgorCiAyMDExLTExLTE3ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSBvbmxpbmVEZXRlY3Rpb25FbmFibGVk
IGZyb20gUHJlZmVyZW5jZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRl
eCBjYThiM2JkNzYxZjA4MTVlNDdiNmNmYjA0OTFhMWQ5NzI4NzlmMDRjLi45ZWIxZDc5OWY2ZDkx
ZWNlYzY3OTgxMDZlYzYwMjdiYjQxZTUyNTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uY3BwCkBAIC05NCwyMSArOTQsMTkgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
Y2xlYW51cFJlc291cmNlcygpCiAKIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29u
dGVudHNJZkRpcnR5KCkKIHsKLSAgICBBU1NFUlQoZHJhd3NDb250ZW50KCkpOwotCiAgICAgdXBk
YXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKIAotICAgIGNvbnN0IEludFJlY3QmIGxheWVy
UmVjdCA9IHZpc2libGVMYXllclJlY3QoKTsKLSAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuOworICAgIEludFJlY3QgbGF5ZXJSZWN0OworCisgICAgLy8gQWx3YXlz
IGNhbGwgcHJlcGFyZVRvVXBkYXRlKCkgYnV0IHdpdGggYW4gZW1wdHkgbGF5ZXIgcmVjdGFuZ2xl
IHdoZW4KKyAgICAvLyBsYXllciBkb2Vzbid0IGRyYXcgY29udGVudHMuCisgICAgaWYgKGRyYXdz
Q29udGVudCgpKQorICAgICAgICBsYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0KCk7CiAKICAg
ICBJbnRSZWN0IGRpcnR5ID0gZW5jbG9zaW5nSW50UmVjdChtX2RpcnR5UmVjdCk7CiAgICAgZGly
dHkuaW50ZXJzZWN0KEludFJlY3QoSW50UG9pbnQoKSwgY29udGVudEJvdW5kcygpKSk7CiAgICAg
aW52YWxpZGF0ZVJlY3QoZGlydHkpOwogCi0gICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCiAgICAgcHJlcGFyZVRvVXBkYXRlKGxheWVyUmVjdCk7CiAgICAgcmVzZXRO
ZWVkc0Rpc3BsYXkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDIz
OTQ1NjhmMmQ4Mjc4ZjU5NzlhN2ZlMGM1NjE1ZDlmNzIwOThiNjcuLmU2YmM3NzU1M2IxYzRmMGRi
MjBhMDc5OGU3MDQxNGY4YTViZWVhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNw
cApAQCAtNzksNyArNzksNyBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291
cmNlcygpCiAKIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVy
KQogewotICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9wcm92aWRlcikKKyAgICBpZiAoIW1fZGVs
ZWdhdGUgfHwgIW1fcHJvdmlkZXIgfHwgIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobV9kaXJ0eVJlY3QuaXNFbXB0eSgpICYmIHRleHR1cmVzVmFsaWQoKSkgewpA
QCAtOTMsOCArOTMsNiBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgQVNTRVJUKGRyYXdzQ29udGVudCgpKTsKLQogICAgIG1fcGxhbmVzID0g
MDsKICAgICBtX3NraXBzRHJhdyA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcAppbmRleCA2MzcyMmI5ZGUzMzA0ZDRlNDNlOGMwZjAyZmUyZjUxMzg0OGYyY2ViLi43MjMz
MTU1YjljYzFhZjU4MWRjMjI2NmU2ZWVlMGI2NTFiOTljZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAKQEAgLTMzMywxMiArMzMzLDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCiAgICAgcGFpbnRMYXllckNv
bnRlbnRzKG1fdXBkYXRlTGlzdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50Q29udGVudHNJZkRp
cnR5KExheWVyQ2hyb21pdW0qIGxheWVyKQotewotICAgIGlmIChsYXllci0+ZHJhd3NDb250ZW50
KCkpCi0gICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOwotfQotCiB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJD
aHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyKQogewogICAgIC8vIE5vdGU6IE1hc2tzIGFuZCBy
ZXBsaWNhcyBvbmx5IGV4aXN0IGZvciBsYXllcnMgdGhhdCBvd24gcmVuZGVyIHN1cmZhY2VzLiBJ
ZiB3ZSByZWFjaCB0aGlzIHBvaW50CkBAIC0zNDgsMTkgKzM0MiwxOSBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1
bSogcmVuZGVyUwogICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpKSB7CiAg
ICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnNldExheWVyVHJlZUhvc3Qo
dGhpcyk7CiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnNldFZpc2li
bGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRl
bnRCb3VuZHMoKSkpOwotICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNl
TGF5ZXItPm1hc2tMYXllcigpKTsKKyAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5
ZXIoKS0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKICAgICB9CiAKICAgICBMYXllckNocm9taXVt
KiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpOwogICAg
IGlmIChyZXBsaWNhTGF5ZXIpIHsKIAogICAgICAgICByZXBsaWNhTGF5ZXItPnNldExheWVyVHJl
ZUhvc3QodGhpcyk7Ci0gICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXllcik7
CisgICAgICAgIHJlcGxpY2FMYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKIAogICAgICAg
ICBpZiAocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICAgICAgcmVwbGljYUxh
eWVyLT5tYXNrTGF5ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKICAgICAgICAgICAgIHJl
cGxpY2FMYXllci0+bWFza0xheWVyKCktPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQ
b2ludCgpLCByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5jb250ZW50Qm91bmRzKCkpKTsKLSAg
ICAgICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXllci0+bWFza0xheWVyKCkp
OworICAgICAgICAgICAgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+cGFpbnRDb250ZW50c0lm
RGlydHkoKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTM5OCw3ICszOTIsNyBAQCB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdAogICAgICAgICAgICAgQVNTRVJUKGxheWVyLT5vcGFjaXR5KCkpOwog
ICAgICAgICAgICAgQVNTRVJUKCFsYXllci0+Ym91bmRzKCkuaXNFbXB0eSgpKTsKIAotICAgICAg
ICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkobGF5ZXIpOworICAgICAgICAgICAgbGF5ZXItPnBh
aW50Q29udGVudHNJZkRpcnR5KCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC00MTQsMTMgKzQw
OCwxMyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkpCi0gICAgICAgICAg
ICB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVy
KCksIGNvbnRleHQsIHVwZGF0ZXIpOworICAgICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5t
YXNrTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsK
IAogICAgICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKSkgewotICAg
ICAgICAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhyZW5kZXJTdXJmYWNlTGF5ZXItPnJl
cGxpY2FMYXllcigpLCBjb250ZXh0LCB1cGRhdGVyKTsKKyAgICAgICAgICAgIHJlbmRlclN1cmZh
Y2VMYXllci0+cmVwbGljYUxheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4
dCwgdXBkYXRlcik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChyZW5kZXJTdXJmYWNl
TGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgICAgICAgICB1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCkt
Pm1hc2tMYXllcigpLCBjb250ZXh0LCB1cGRhdGVyKTsKKyAgICAgICAgICAgICAgICByZW5kZXJT
dXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgY29uc3QgTGF5ZXJMaXN0JiBsYXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5sYXllckxpc3Qo
KTsKQEAgLTQzMCwyMSArNDI0LDExIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RlCiAgICAgICAg
ICAgICBpZiAobGF5ZXItPnJlbmRlclN1cmZhY2UoKSAmJiBsYXllci0+cmVuZGVyU3VyZmFjZSgp
ICE9IHJlbmRlclN1cmZhY2UpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
ICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobGF5ZXIsIGNvbnRleHQsIHVwZGF0ZXIpOwor
ICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBk
YXRlcik7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKExheWVyQ2hyb21pdW0qIGxheWVyLCBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKLXsKLSAgICAvLyBGb3Ig
bm9ybWFsIGxheWVycywgdGhlc2UgY29uZGl0aW9ucyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4g
Y2hlY2tlZCB3aGlsZSBjcmVhdGluZyB0aGUgcmVuZGVyIHN1cmZhY2UgbGF5ZXIgbGlzdHMuCi0g
ICAgLy8gRm9yIG1hc2tzIGFuZCByZXBsaWNhcyBob3dldmVyLCB3ZSBtYXkgc3RpbGwgbmVlZCB0
byBjaGVjayB0aGVtIGhlcmUuCi0gICAgaWYgKGxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkgfHwg
IWxheWVyLT5vcGFjaXR5KCkgfHwgIWxheWVyLT5kcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBk
YXRlcik7Ci19Ci0KIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRhdGUoKQog
ewogICAgIGZvciAoc2l6ZV90IHN1cmZhY2VJbmRleCA9IDA7IHN1cmZhY2VJbmRleCA8IG1fdXBk
YXRlTGlzdC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oCmluZGV4IGQ4MTQxNDljNTRiMDUzZWNlYTZmY2FlMDU2MjQ0NDhkZDMxMWQ5MTEuLjkzZGQ5
OGM0MWQ3OGViMzA0Y2EzMDMxYjJmNTUxOWQ4ZTZjNjJjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oCkBAIC0xOTMsNyArMTkzLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50TWFz
a0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qKTsKIAogICAgIHZvaWQg
dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qKTsKLSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoTGF5ZXJDaHJvbWl1bSosIEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBk
YXRlciYpOwogICAgIHZvaWQgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAKICAgICBpbnQgbV9jb21w
b3NpdG9ySWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGQxZGNmNWQ4NjZmMmYxNWMxMGUyNWFmMmZh
ZWUyMTViZTkzYjI3NzkuLjIxMzE1YTBlNTA3MWEzNmRkYzAwMjA3MmY5Y2MyNzUyYjk5OTZmNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcApAQCAtMjYsOSArMjYsMTEgQEAKIAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVl
SG9zdC5oIgogCisjaW5jbHVkZSAiQ29udGVudExheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNp
bmNsdWRlICJjYy9DQ1Njb3BlZFRocmVhZFByb3h5LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJl
VXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC0yMjcs
NiArMjI5LDggQEAgcHVibGljOgogICAgICAgICBtX3RpbWVvdXRUYXNrID0gMDsKICAgICB9CiAK
KyAgICBDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QoKSB7IHJldHVybiBtX2xheWVyVHJl
ZUhvc3QuZ2V0KCk7IH0KKwogCiBwcm90ZWN0ZWQ6CiAgICAgQ0NMYXllclRyZWVIb3N0VGVzdCgp
CkBAIC04MjYsNCArODMwLDEwMyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldFZpc2li
bGUsIHJ1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3QodHJ1ZSk7CiB9CiAKK2NsYXNzIFRlc3RP
cGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBDQ0xheWVyRGVsZWdhdGUgeworcHVi
bGljOgorICAgIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZShDQ0xheWVyVHJlZUhvc3RU
ZXN0KiB0ZXN0KQorICAgICAgICA6IG1fdGVzdCh0ZXN0KQorICAgIHsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0
JikKKyAgICB7CisgICAgICAgIC8vIFNldCBsYXllciBvcGFjaXR5IHRvIDAuCisgICAgICAgIG1f
dGVzdC0+bGF5ZXJUcmVlSG9zdCgpLT5yb290TGF5ZXIoKS0+c2V0T3BhY2l0eSgwKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBwcmVzZXJ2ZXMzRCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZCgpIHsgfQorCitwcml2YXRlOgorICAgIEND
TGF5ZXJUcmVlSG9zdFRlc3QqIG1fdGVzdDsKK307CisKK2NsYXNzIENvbnRlbnRMYXllckNocm9t
aXVtV2l0aFVwZGF0ZVRyYWNraW5nIDogcHVibGljIENvbnRlbnRMYXllckNocm9taXVtIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZz4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhkZWxlZ2F0
ZSkpOyB9CisKKyAgICBpbnQgcGFpbnRDb250ZW50c0NvdW50KCkgeyByZXR1cm4gbV9wYWludENv
bnRlbnRzQ291bnQ7IH0KKyAgICB2b2lkIHJlc2V0UGFpbnRDb250ZW50c0NvdW50KCkgeyBtX3Bh
aW50Q29udGVudHNDb3VudCA9IDA7IH0KKworICAgIGludCB1cGRhdGVDb3VudCgpIHsgcmV0dXJu
IG1fdXBkYXRlQ291bnQ7IH0KKyAgICB2b2lkIHJlc2V0VXBkYXRlQ291bnQoKSB7IG1fdXBkYXRl
Q291bnQgPSAwOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKQor
ICAgIHsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5
KCk7CisgICAgICAgIG1fcGFpbnRDb250ZW50c0NvdW50Kys7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCisgICAgeworICAgICAgICBDb250ZW50TGF5
ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsK
KyAgICAgICAgbV91cGRhdGVDb3VudCsrOworICAgIH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhDQ0xheWVyRGVsZWdhdGUg
KmRlbGVnYXRlKQorICAgICAgICA6IENvbnRlbnRMYXllckNocm9taXVtKGRlbGVnYXRlKQorICAg
ICAgICAsIG1fcGFpbnRDb250ZW50c0NvdW50KDApCisgICAgICAgICwgbV91cGRhdGVDb3VudCgw
KQorICAgIHsKKyAgICAgICAgc2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CisgICAgfQorCisg
ICAgaW50IG1fcGFpbnRDb250ZW50c0NvdW50OworICAgIGludCBtX3VwZGF0ZUNvdW50OworfTsK
KworLy8gTGF5ZXIgb3BhY2l0eSBjaGFuZ2UgZHVyaW5nIHBhaW50IHNob3VsZCBub3QgcHJldmVu
dCBjb21wb3NpdG9yIHJlc291cmNlcyBmcm9tIGJlaW5nIHVwZGF0ZWQgZHVyaW5nIGNvbW1pdC4K
K2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlIDogcHVibGljIENDTGF5ZXJU
cmVlSG9zdFRlc3QgeworcHVibGljOgorICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hh
bmdlKCkKKyAgICAgICAgOiBtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUodGhpcykKKyAgICAg
ICAgLCBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc6OmNyZWF0ZSgmbV90ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRlKSkKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnNldFJvb3RMYXllcihtX3VwZGF0ZUNoZWNrTGF5ZXIpOworICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0KEludFNpemUoMTAsIDEwKSk7CisKKyAgICAgICAgcG9z
dFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikKKyAgICB7Cisg
ICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkK
KyAgICB7CisgICAgICAgIC8vIHBhaW50Q29udGVudHNJZkRpcnR5KCkgc2hvdWxkIGhhdmUgYmVl
biBjYWxsZWQgb25jZS4KKyAgICAgICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+
cGFpbnRDb250ZW50c0NvdW50KCkpOworCisgICAgICAgIC8vIHVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUgc2FtZQorICAgICAgICAvLyBhbW91
dCBvZiB0aW1lcyBhcyBwYWludENvbnRlbnRzSWZEaXJ0eSgpLgorICAgICAgICBFWFBFQ1RfRVEo
bV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSwKKyAgICAgICAgICAgICAg
ICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlQ291bnQoKSk7CisgICAgfQorCitwcml2YXRl
OgorICAgIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZSBtX3Rlc3RPcGFjaXR5Q2hhbmdl
RGVsZWdhdGU7CisgICAgUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nPiBtX3VwZGF0ZUNoZWNrTGF5ZXI7Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVz
dE9wYWNpdHlDaGFuZ2UsIHJ1bk11bHRpVGhyZWFkKQoreworICAgIHJ1blRlc3QodHJ1ZSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>