<?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>72765</bug_id>
          
          <creation_ts>2011-11-18 15:18:05 -0800</creation_ts>
          <short_desc>[chromium] Avoid pushing dirty tiles to the impl layer</short_desc>
          <delta_ts>2011-11-21 14:22:45 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>kbr</cc>
    
    <cc>nduca</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>506114</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-18 15:18:05 -0800</bug_when>
    <thetext>[chromium] Avoid pushing dirty tiles to the impl layer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506121</commentid>
    <comment_count>1</comment_count>
      <attachid>115889</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-18 15:20:59 -0800</bug_when>
    <thetext>Created attachment 115889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506143</commentid>
    <comment_count>2</comment_count>
      <attachid>115889</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-18 15:35:32 -0800</bug_when>
    <thetext>Comment on attachment 115889
Patch

I &lt;3 the tests.

Enne probably wants to look through the meat of the change, its a little beyond my comfort zone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506155</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-18 15:52:02 -0800</bug_when>
    <thetext>BTW the meat of the change is this in TiledLayerChromium::pushPropertiesTo:

248        if (tile-&gt;isDirty())
249            continue;

The rest is test harness hookup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506185</commentid>
    <comment_count>4</comment_count>
      <attachid>115889</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-18 16:28:06 -0800</bug_when>
    <thetext>Comment on attachment 115889
Patch

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

Nice test.  Making LayerChromium more testable is fantastic.

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:160
&gt; +void TiledLayerChromium::createTiler(CCLayerTilingData::BorderTexelOption borderTexelOption)
&gt; +{
&gt; +    m_tiler = CCLayerTilingData::create(IntSize(defaultTileSize, defaultTileSize), borderTexelOption);
&gt;  }

It&apos;s kind of awkward that createTiler and setTileSize have to be called in a particular order and that calling createTiler will un-set your tile size.  Maybe this function should take both tile size and texel option?

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.h:64
&gt; +    // Exposed to subclasses for testing.
&gt; +    void setTileSize(const IntSize&amp;);

Maybe not just for testing.  This&apos;d probably be useful if we wanted to have image layers not tile unless they were really large, for instance.  Just sayin&apos;.

&gt; Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp:117
&gt; +    // The tile size is 100x100, so this invalidates and then paints three tiles.

3? 100 x 200 pixels = 1 x 2 tiles?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506251</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-18 17:56:13 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 115889 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115889&amp;action=review
&gt; 
&gt; Nice test.  Making LayerChromium more testable is fantastic.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:160
&gt; &gt; +void TiledLayerChromium::createTiler(CCLayerTilingData::BorderTexelOption borderTexelOption)
&gt; &gt; +{
&gt; &gt; +    m_tiler = CCLayerTilingData::create(IntSize(defaultTileSize, defaultTileSize), borderTexelOption);
&gt; &gt;  }
&gt; 
&gt; It&apos;s kind of awkward that createTiler and setTileSize have to be called in a particular order and that calling createTiler will un-set your tile size.  Maybe this function should take both tile size and texel option?

Hmmm....currently the tile size is calculated and set much later than setLayerTreeHost() which is where the tiler is created.  Could probably defer creating the tiler until we know the tile size since we just invalidate everything when changing the tile size anyway.  Would require a bit of careful thought, though, to not get it wrong.  How would you feel about doing this later?

&gt; 
&gt; 
&gt; &gt; Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp:117
&gt; &gt; +    // The tile size is 100x100, so this invalidates and then paints three tiles.
&gt; 
&gt; 3? 100 x 200 pixels = 1 x 2 tiles?

Bad comment, when I was fighting border texels I made this test use 3 tiles instead of two. Will fix the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506296</commentid>
    <comment_count>6</comment_count>
      <attachid>115925</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-18 19:16:21 -0800</bug_when>
    <thetext>Created attachment 115925
fix comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506315</commentid>
    <comment_count>7</comment_count>
      <attachid>115925</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-18 20:03:33 -0800</bug_when>
    <thetext>Comment on attachment 115925
fix comment

Attachment 115925 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10516337</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507040</commentid>
    <comment_count>8</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-21 09:51:16 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)

&gt; &gt; It&apos;s kind of awkward that createTiler and setTileSize have to be called in a particular order and that calling createTiler will un-set your tile size.  Maybe this function should take both tile size and texel option?
&gt; 
&gt; Hmmm....currently the tile size is calculated and set much later than setLayerTreeHost() which is where the tiler is created.  Could probably defer creating the tiler until we know the tile size since we just invalidate everything when changing the tile size anyway.  Would require a bit of careful thought, though, to not get it wrong.  How would you feel about doing this later?

If it&apos;s not too complicated, deferring the creation of the tiler until the tile size is known seems like it&apos;d make this cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507198</commentid>
    <comment_count>9</comment_count>
      <attachid>116132</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-21 14:05:08 -0800</bug_when>
    <thetext>Created attachment 116132
Defer tiler creation until prepareToUpdate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507200</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-21 14:06:43 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; 
&gt; &gt; &gt; It&apos;s kind of awkward that createTiler and setTileSize have to be called in a particular order and that calling createTiler will un-set your tile size.  Maybe this function should take both tile size and texel option?
&gt; &gt; 
&gt; &gt; Hmmm....currently the tile size is calculated and set much later than setLayerTreeHost() which is where the tiler is created.  Could probably defer creating the tiler until we know the tile size since we just invalidate everything when changing the tile size anyway.  Would require a bit of careful thought, though, to not get it wrong.  How would you feel about doing this later?
&gt; 
&gt; If it&apos;s not too complicated, deferring the creation of the tiler until the tile size is known seems like it&apos;d make this cleaner.

This patch defers until prepareToUpdate() which seems like the first place where the tiler really needs to be there.  If tile size or tiling option are changed before the first prepareToUpdate() call then we just store the new values to use then. If we have a tiler and the tile size / tiling option change, then the existing tiler is thrown away and a new one created in prepareToUpdate(). I think it is cleaner this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507201</commentid>
    <comment_count>11</comment_count>
      <attachid>116132</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-21 14:14:27 -0800</bug_when>
    <thetext>Comment on attachment 116132
Defer tiler creation until prepareToUpdate

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507202</commentid>
    <comment_count>12</comment_count>
      <attachid>116132</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-21 14:15:36 -0800</bug_when>
    <thetext>Comment on attachment 116132
Defer tiler creation until prepareToUpdate

Sounds good. Big thumbs up on the test. rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507209</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-21 14:22:45 -0800</bug_when>
    <thetext>Committed r100958: &lt;http://trac.webkit.org/changeset/100958&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115889</attachid>
            <date>2011-11-18 15:20:59 -0800</date>
            <delta_ts>2011-11-18 19:16:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72765-20111118152058.patch</filename>
            <type>text/plain</type>
            <size>18699</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwODAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVlMTU2MGVlNDA1OTJj
NjVmMTdlZWIwMTQ2OWIyZjgyZDVkNTBhOS4uYmMwMDIzMjEzMzQyMWY2MmQwNjBkYTViOThhNmU0
YmNiOTEyMGFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDExLTExLTE4ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBB
dm9pZCBwdXNoaW5nIGRpcnR5IHRpbGVzIHRvIHRoZSBpbXBsIGxheWVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc2NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIGEgdGlsZSBoYXMgaW52YWxpZGF0
aW9ucyBhdCBwdXNoUHJvcGVydGllc1RvLCB0aGVuIHdlIGtub3cgdGhlIGNvbnRlbnRzIG9mIHRo
YXQgdGlsZSBhcmUgbm8gbG9uZ2VyIHZhbGlkIGV2ZW4KKyAgICAgICAgaWYgdGhleSBzdGlsbCBo
YXZlIHZhbGlkIGJhY2tpbmcgdGV4dHVyZXMuIFRoaXMgYXZvaWRzIHB1c2hpbmcgdGhhdCB0ZXh0
dXJlIHRvIHRoZSBpbXBsIHNpZGUgc28gaXQgaXMgbm90CisgICAgICAgIGRpc3BsYXllZCB0byB0
aGUgdXNlci4gVGhlIHRleHR1cmUgaXMgc3RpbGwga2VwdCBhcm91bmQgKG1hbmFnZWQgYnkgdGhl
IFRleHR1cmVNYW5hZ2VyKSBzbyB0aGF0IHdoZW4gd2UgbGF0ZXIgZG8KKyAgICAgICAgZGVjaWRl
IHRvIHVwZGF0ZSB0aGUgY29udGVudHMgZm9yIHRoYXQgdGlsZSB3ZSBjYW4gdXNlIHBhcnRpYWwg
cmVzdWx0cyBpZiB0aGV5IGFyZSBzdGlsbCB2YWxpZC4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5l
dyB1bml0IHRlc3QgaW4gVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpVcGRhdGFibGVUaWxlOjppc0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpzZXRUaWxlU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpjcmVhdGVUaWxlcik6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZUZvcm1hdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpoYXNUaWxlQXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6ZHJhd1RpbGVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisKIDIw
MTEtMTEtMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgQXBwZWFyYW5jZSBvZiBjb21wb3VuZCB0cmFuc2Zvcm0gYW5pbWF0aW9ucyB1bmRlciBhcHBz
IGxpbmtlZCBvbiBTbm93TGVvcGFyZCBpcyBpbmNvcnJlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggODRmM2E5YWNiNDI4ODFiMjkwZTRiNWU0YjBiZDZhYmY1NTdjY2ViMS4uMThkZGQw
YWM5YzQ3ZmFiMjNiOWEwZTNmNmU3MDg2MjdjNWI2N2FkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMS0xMS0xOCAgSmFtZXMgUm9iaW5zb24gIDxqYW1l
c3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQXZvaWQgcHVzaGluZyBkaXJ0
eSB0aWxlcyB0byB0aGUgaW1wbCBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzI3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgdW5pdCB0ZXN0IGZvciBUaWxlZExheWVyQ2hyb21pdW0ncyB0
aWxlIHB1c2hpbmcgYmVoYXZpb3IuIFJlcXVpcmVzIGEgZmFpciBhbW91bnQgb2YgZmFrZSBjbGFz
c2VzLiBJZiB0aGVzZQorICAgICAgICBmYWtlcyBhcmUgdXNlZnVsIGluIG90aGVyIHRlc3RzLCB0
aGV5IHNob3VsZCBiZSBtb3ZlZCB0byBhIHNoYXJlZCBsb2NhdGlvbi4KKworICAgICAgICAqIFdl
YktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKDo6RmFrZVRleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZVRleHR1cmUpOgor
ICAgICAgICAoOjpGYWtlVGV4dHVyZUFsbG9jYXRvcjo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAg
ICg6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcik6Cisg
ICAgICAgICg6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjp+RmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIpOgorICAgICAgICAoOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6b3JpZW50YXRpb24pOgor
ICAgICAgICAoOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZFRleGVsRm9ybWF0KToK
KyAgICAgICAgKDo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZSk6Cisg
ICAgICAgICg6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6Cisg
ICAgICAgICg6OkZha2VDQ1RpbGVkTGF5ZXJJbXBsOjpGYWtlQ0NUaWxlZExheWVySW1wbCk6Cisg
ICAgICAgICg6OkZha2VDQ1RpbGVkTGF5ZXJJbXBsOjp+RmFrZUNDVGlsZWRMYXllckltcGwpOgor
ICAgICAgICAoOjpGYWtlQ0NUaWxlZExheWVySW1wbDo6aGFzVGlsZUF0KToKKyAgICAgICAgKDo6
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSk6CisgICAgICAg
ICg6OkZha2VUaWxlZExheWVyQ2hyb21pdW06On5GYWtlVGlsZWRMYXllckNocm9taXVtKToKKyAg
ICAgICAgKDo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6aW52YWxpZGF0ZVJlY3QpOgorICAgICAg
ICAoOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAo
OjpGYWtlVGlsZWRMYXllckNocm9taXVtOjp0ZXh0dXJlTWFuYWdlcik6CisgICAgICAgICg6OkZh
a2VUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKDo6
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6dGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoOjpURVNU
KToKKwogMjAxMS0xMS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzcGF0Y2ggbWVzc2FnZXMgZnJvbSB0aGUgZnJvbnQt
ZW5kIHRvIHRoZSBiYWNrZW5kIGFzeW5jaHJvbm91c2x5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggZmNjNDZkOTkzZDU0MGE0MjE5ZDdmMjcwMTAwMTg3MzhlZjdiOGZmZS4u
YzcyMmIzMTYyYmEzNGQ3NjcyMDdhMDkwZjk0NTZlOWZjZjg4MDQ0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIE1hbmFn
ZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXguZ2V0KCk7IH0KIAotICAgIGJvb2wg
ZGlydHkoKSBjb25zdCB7IHJldHVybiAhbV9kaXJ0eUxheWVyUmVjdC5pc0VtcHR5KCk7IH0KKyAg
ICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiAhbV9kaXJ0eUxheWVyUmVjdC5pc0VtcHR5
KCk7IH0KICAgICB2b2lkIGNsZWFyRGlydHkoKSB7IG1fZGlydHlMYXllclJlY3QgPSBJbnRSZWN0
KCk7IH0KIAogICAgIC8vIExheWVyLXNwYWNlIGRpcnR5IHJlY3RhbmdsZSB0aGF0IG5lZWRzIHRv
IGJlIHJlcGFpbnRlZC4KQEAgLTExNyw3ICsxMTcsMTIgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21p
dW06OnVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKCkKICAgICBJbnRTaXplIHJlcXVlc3Rl
ZFNpemUgPSBpc1RpbGVkID8gdGlsZVNpemUgOiBjb250ZW50Qm91bmRzKCk7CiAgICAgY29uc3Qg
aW50IG1heFNpemUgPSBsYXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMo
KS5tYXhUZXh0dXJlU2l6ZTsKICAgICBJbnRTaXplIGNsYW1wZWRTaXplID0gcmVxdWVzdGVkU2l6
ZS5zaHJ1bmtUbyhJbnRTaXplKG1heFNpemUsIG1heFNpemUpKTsKLSAgICBtX3RpbGVyLT5zZXRU
aWxlU2l6ZShjbGFtcGVkU2l6ZSk7CisgICAgc2V0VGlsZVNpemUoY2xhbXBlZFNpemUpOworfQor
Cit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKK3sKKyAgICBtX3RpbGVyLT5zZXRUaWxlU2l6ZShzaXplKTsKIH0KIAogYm9vbCBUaWxlZExh
eWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CkBAIC0xNDMsMTUgKzE0OCwxOCBAQCB2
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3Qq
IGhvc3QpCiAKICAgICBjcmVhdGVUZXh0dXJlVXBkYXRlcihob3N0KTsKIAotICAgIG1fdGV4dHVy
ZUZvcm1hdCA9IGhvc3QtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5iZXN0VGV4dHVyZUZv
cm1hdDsKKyAgICBzZXRUZXh0dXJlRm9ybWF0KGhvc3QtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMoKS5iZXN0VGV4dHVyZUZvcm1hdCk7CiAgICAgbV90ZXh0dXJlT3JpZW50YXRpb24gPSB0ZXh0
dXJlVXBkYXRlcigpLT5vcmllbnRhdGlvbigpOwogICAgIG1fc2FtcGxlZFRleGVsRm9ybWF0ID0g
dGV4dHVyZVVwZGF0ZXIoKS0+c2FtcGxlZFRleGVsRm9ybWF0KG1fdGV4dHVyZUZvcm1hdCk7Ci0g
ICAgbV90aWxlciA9IENDTGF5ZXJUaWxpbmdEYXRhOjpjcmVhdGUoCi0gICAgICAgIEludFNpemUo
ZGVmYXVsdFRpbGVTaXplLCBkZWZhdWx0VGlsZVNpemUpLAotICAgICAgICBpc05vbkNvbXBvc2l0
ZWRDb250ZW50KCkgPyBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMgOiBDQ0xheWVy
VGlsaW5nRGF0YTo6SGFzQm9yZGVyVGV4ZWxzKTsKKyAgICBjcmVhdGVUaWxlcihpc05vbkNvbXBv
c2l0ZWRDb250ZW50KCkgPyBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMgOiBDQ0xh
eWVyVGlsaW5nRGF0YTo6SGFzQm9yZGVyVGV4ZWxzKTsKK30KKwordm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OmNyZWF0ZVRpbGVyKENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9wdGlvbiBi
b3JkZXJUZXhlbE9wdGlvbikKK3sKKyAgICBtX3RpbGVyID0gQ0NMYXllclRpbGluZ0RhdGE6OmNy
ZWF0ZShJbnRTaXplKGRlZmF1bHRUaWxlU2l6ZSwgZGVmYXVsdFRpbGVTaXplKSwgYm9yZGVyVGV4
ZWxPcHRpb24pOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYg
dXBkYXRlcikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKICAg
ICAvLyBQYWludGluZyBjb3VsZCBjYXVzZSBjb21wb3NpdGluZyB0byBnZXQgdHVybmVkIG9mZiwg
d2hpY2ggbWF5IGNhdXNlIHRoZSB0aWxlciB0byBiZWNvbWUgaW52YWxpZGF0ZWQgbWlkLXVwZGF0
ZS4KICAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHko
KSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSkKQEAgLTE2NCw3ICsxNzIsNyBAQCB2b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgQwogICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChp
LCBqKTsKICAgICAgICAgICAgIGlmICghdGlsZSkKICAgICAgICAgICAgICAgICB0aWxlID0gY3Jl
YXRlVGlsZShpLCBqKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCF0aWxlLT5kaXJ0eSgpKQorICAg
ICAgICAgICAgZWxzZSBpZiAoIXRpbGUtPmlzRGlydHkoKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHBhZ2Utc3BhY2UgcmVjdGFuZ2xlIHRv
IGNvcHkgZnJvbS4KQEAgLTE5NywxMSArMjA1LDYgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEMK
ICAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IG1f
cGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAKLSAgICAgICAg
ICAgIHRpbGUtPnRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4dCwgdXBkYXRlci5hbGxvY2F0
b3IoKSk7Ci0gICAgICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9IG1fdGlsZXItPmhhc0Jv
cmRlclRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4
dDNEOjpORUFSRVNUOwotICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwotICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikpOwotCiAgICAgICAgICAg
ICB1cGRhdGVyLmFwcGVuZCh0aWxlLT50ZXh0dXJlKCksIHRleHR1cmVVcGRhdGVyKCksIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgICAgIHRpbGUtPmNsZWFyRGlydHkoKTsKICAgICAg
ICAgfQpAQCAtMjQyLDYgKzI0NSw4IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGls
ZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOwogICAg
ICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBt
X3RleHR1cmVGb3JtYXQpKQogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh0aWxl
LT5pc0RpcnR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICB0aWxlZExheWVy
LT5zeW5jVGV4dHVyZUlkKGksIGosIHRpbGUtPnRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggNWRhZjBmMDE5NDdhOTk0N2NkMjM1
ZjU1ZmI3Mzk1OWU0NDdiMWY1Ni4uNmQ2MmNkMmZkZmM4ZWE0YTkxNDVmZDFjMDVjNjdlZmQyN2Zk
NDQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTYwLDYgKzYwLDExIEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cFJlc291cmNlcygpOwogICAgIHZvaWQg
dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKIAorICAgIC8vIEV4cG9zZWQgdG8gc3Vi
Y2xhc3NlcyBmb3IgdGVzdGluZy4KKyAgICB2b2lkIHNldFRpbGVTaXplKGNvbnN0IEludFNpemUm
KTsKKyAgICB2b2lkIGNyZWF0ZVRpbGVyKENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9w
dGlvbik7CisgICAgdm9pZCBzZXRUZXh0dXJlRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQp
IHsgbV90ZXh0dXJlRm9ybWF0ID0gdGV4dHVyZUZvcm1hdDsgfQorCiAgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCopID0gMDsKICAgICB2
aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3QgPSAwOwog
CkBAIC03MCw2ICs3NSw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBwcm90ZWN0
VmlzaWJsZVRpbGVUZXh0dXJlcygpOwogCisgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogdGV4
dHVyZU1hbmFnZXIoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKQEAgLTgxLDggKzg4LDYgQEAgcHJp
dmF0ZToKICAgICBVcGRhdGFibGVUaWxlKiB0aWxlQXQoaW50LCBpbnQpIGNvbnN0OwogICAgIFVw
ZGF0YWJsZVRpbGUqIGNyZWF0ZVRpbGUoaW50LCBpbnQpOwogCi0gICAgVGV4dHVyZU1hbmFnZXIq
IHRleHR1cmVNYW5hZ2VyKCkgY29uc3Q7Ci0KICAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVsZCBi
ZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCku
CiAgICAgSW50UmVjdCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3Q7CiAgICAgLy8gU3RhdGUgaGVsZCBi
ZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCBwdXNoUHJvcGVydGllc1RvKCkuIFRoaXMgcmVw
cmVzZW50cyB0aGUgYXJlYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCAy
MjA5YzhhNGIxMDVlNzEwZTlkZjE4ZDUwNmIzYzkwMzk1MTI1ZmI3Li5lOTkzYjU3ZTVlNjY2NWM3
YWFmZmVhZjI3ZmUzODczNjJhYTY3MTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
LmNwcApAQCAtODAsNiArODAsMTEgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQ
cm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdAogICAgIHRzIDw8ICJz
a2lwc0RyYXc6ICIgPDwgKCFtX3RpbGVyIHx8IG1fc2tpcHNEcmF3KSA8PCAiXG4iOwogfQogCiti
b29sIENDVGlsZWRMYXllckltcGw6Omhhc1RpbGVBdChpbnQgaSwgaW50IGopIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fdGlsZXItPnRpbGVBdChpLCBqKTsKK30KKwogRHJhd2FibGVUaWxlKiBDQ1Rp
bGVkTGF5ZXJJbXBsOjp0aWxlQXQoaW50IGksIGludCBqKSBjb25zdAogewogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxEcmF3YWJsZVRpbGUqPihtX3RpbGVyLT50aWxlQXQoaSwgaikpOwpAQCAtMjE5
LDYgKzIyNCw3IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHJhd1RpbGVzKExheWVyUmVuZGVy
ZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgSW50CiAgICAgbV90aWxlci0+Y29udGVu
dFJlY3RUb1RpbGVJbmRpY2VzKGNvbnRlbnRSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20p
OwogICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gbV90aWxlci0+Y29udGVudFJlY3RUb0xheWVyUmVj
dChjb250ZW50UmVjdCk7CiAgICAgZmxvYXQgc2lnbiA9IEZsb2F0UXVhZChjb250ZW50UmVjdCku
aXNDb3VudGVyY2xvY2t3aXNlKCkgPyAtMSA6IDE7CisgICAgY29uc3QgR0MzRGludCBmaWx0ZXIg
PSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIg
OiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKICAgICBmb3IgKGludCBqID0gdG9wOyBqIDw9
IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIENDTGF5ZXJRdWFkOjpFZGdlIHByZXZFZGdlWCA9IGNv
bnRlbnRRdWFkLmxlZnQoKTsKIApAQCAtMzQzLDYgKzM0OSw5IEBAIHZvaWQgQ0NUaWxlZExheWVy
SW1wbDo6ZHJhd1RpbGVzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29u
c3QgSW50CiAKICAgICAgICAgICAgIGlmICh0aWxlICYmIHRpbGUtPnRleHR1cmVJZCgpKSB7CiAg
ICAgICAgICAgICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIHRpbGUtPnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAgICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgZmlsdGVyKSk7CisgICAgICAg
ICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIs
IGZpbHRlcikpOworCiAgICAgICAgICAgICAgICAgbGF5ZXJSZW5kZXJlci0+ZHJhd1RleHR1cmVk
UXVhZChnbG9iYWxUcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgb3BhY2l0
eSwgcXVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmgKaW5kZXggNTZlY2I0ZDZhZDQ2ZDNlYzY1YTVkOGE5ZTdjMzE2N2U0Njhm
M2YwNy4uMTAwM2RiY2I1NjY2ODhjNTJjZDQyMWFiMDFmZDFiNjJmMTNhNzcwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtNjcsOCArNjcsMTIgQEAgcHVibGljOgogICAgIHR5
cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyVGlsZSwgRnJhZ21lbnRTaGFkZXJSR0JB
VGV4Q2xhbXBBbHBoYUFBPiBQcm9ncmFtQUE7CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxW
ZXJ0ZXhTaGFkZXJUaWxlLCBGcmFnbWVudFNoYWRlclJHQkFUZXhDbGFtcFN3aXp6bGVBbHBoYUFB
PiBQcm9ncmFtU3dpenpsZUFBOwogCi1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0
IENDVGlsZWRMYXllckltcGwoaW50IGlkKTsKKyAgICAvLyBFeHBvc2VkIGZvciB0ZXN0aW5nLgor
ICAgIGJvb2wgaGFzVGlsZUF0KGludCwgaW50KSBjb25zdDsKKworcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNTdHJpbmcoKSBjb25zdCB7IHJldHVybiAiQ29u
dGVudExheWVyIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCAwZjU5OGU3
OGE5ODY4ODMxZTgyYTJmNWM4ODJkNGYzODRjZmJjNjA1Li5lMDE3MWFjZDEzYTFiOWNjMTlkYWE1
MWJiZDNmMjNhNzdmNmQ4NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTgx
LDYgKzgxLDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9QT0RJbnRlcnZhbFRyZWVUZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvUE9EUmVkQmxhY2tUcmVlVGVzdC5jcHAnLAogICAgICAgICAg
ICAgJ3Rlc3RzL1JlbmRlclRhYmxlQ2VsbFRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9U
aWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvVGlsaW5nRGF0
YVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAn
LAogICAgICAgICAgICAgJ3Rlc3RzL1RyZWVUZXN0SGVscGVycy5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzU4ZjM5Njk5MzZlYmZmYTQ2ZDAxOTNmY2FlNGUzYzdjY2U0M2I2NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNo
cm9taXVtVGVzdC5jcHAKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIlRpbGVkTGF5ZXJDaHJvbWl1bS5oIgorCisjaW5jbHVk
ZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCisj
aW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgImNj
L0NDVGlsZWRMYXllckltcGwuaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSB7CisK
K2NsYXNzIEZha2VUZXh0dXJlQWxsb2NhdG9yIDogcHVibGljIFRleHR1cmVBbGxvY2F0b3Igewor
cHVibGljOgorICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBJbnRTaXpl
JiwgR0MzRGVudW0pIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVy
ZSh1bnNpZ25lZCwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSB7IH0KK307CisKK2NsYXNzIEZh
a2VMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXIgeworcHVi
bGljOgorICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgeyB9CisgICAgdmlydHVhbCB+RmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KKworICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24oKSB7IHJldHVybiBCb3R0b21VcE9yaWVudGF0aW9uOyB9CisgICAgdmlydHVhbCBT
YW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtKSB7IHJldHVybiBT
YW1wbGVkVGV4ZWxGb3JtYXRSR0JBOyB9CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0
ZShjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGludCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0K
K307CisKK2NsYXNzIEZha2VDQ1RpbGVkTGF5ZXJJbXBsIDogcHVibGljIENDVGlsZWRMYXllcklt
cGwgeworcHVibGljOgorICAgIGV4cGxpY2l0IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKGludCBpZCkK
KyAgICAgICAgOiBDQ1RpbGVkTGF5ZXJJbXBsKGlkKSB7IH0KKyAgICB2aXJ0dWFsIH5GYWtlQ0NU
aWxlZExheWVySW1wbCgpIHsgfQorCisgICAgYm9vbCBoYXNUaWxlQXQoaW50IGksIGludCBqKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIENDVGlsZWRMYXllckltcGw6Omhhc1RpbGVBdChpLCBqKTsK
KyAgICB9Cit9OworCitjbGFzcyBGYWtlVGlsZWRMYXllckNocm9taXVtIDogcHVibGljIFRpbGVk
TGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRmFrZVRpbGVkTGF5ZXJDaHJv
bWl1bShUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIpCisgICAgICAgIDogVGlsZWRMYXll
ckNocm9taXVtKDApCisgICAgICAgICwgbV9mYWtlVGV4dHVyZVVwZGF0ZXIoYWRvcHRSZWYobmV3
IEZha2VMYXllclRleHR1cmVVcGRhdGVyKSkKKyAgICAgICAgLCBtX3RleHR1cmVNYW5hZ2VyKHRl
eHR1cmVNYW5hZ2VyKQorICAgIHsKKyAgICAgICAgY3JlYXRlVGlsZXIoQ0NMYXllclRpbGluZ0Rh
dGE6Ok5vQm9yZGVyVGV4ZWxzKTsKKyAgICAgICAgc2V0VGlsZVNpemUoSW50U2l6ZSgxMDAsIDEw
MCkpOworICAgICAgICBzZXRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsK
KyAgICB9CisgICAgdmlydHVhbCB+RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSgpIHsgfQorCisgICAg
dm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQorICAgIHsKKyAgICAgICAg
VGlsZWRMYXllckNocm9taXVtOjppbnZhbGlkYXRlUmVjdChyZWN0KTsKKyAgICB9CisKKyAgICB2
b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiByZWN0KQorICAgIHsKKyAgICAgICAg
VGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUocmVjdCk7CisgICAgfQorCisgICAg
dmlydHVhbCBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBt
X3RleHR1cmVNYW5hZ2VyOyB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRl
eHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCopIHsgfQorCisgICAgdmlydHVhbCBM
YXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9mYWtlVGV4dHVyZVVwZGF0ZXIuZ2V0KCk7CisgICAgfQorCisgICAgUmVmUHRy
PEZha2VMYXllclRleHR1cmVVcGRhdGVyPiBtX2Zha2VUZXh0dXJlVXBkYXRlcjsKKyAgICBUZXh0
dXJlTWFuYWdlciogbV90ZXh0dXJlTWFuYWdlcjsKK307CisKK1RFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCit7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0
ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQp
OworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgUmVmUHRyPEZha2VDQ1RpbGVk
TGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwo
MCkpOworCisgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKKyAgICBD
Q1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworCisgICAgLy8gVGhl
IHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50
cyB0aHJlZSB0aWxlcy4KKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAs
IDIwMCkpOworICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIp
OworICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CisKKyAgICAv
LyBXZSBzaG91bGQgaGF2ZSBib3RoIHRpbGVzIG9uIHRoZSBpbXBsIHNpZGUuCisgICAgRVhQRUNU
X1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVy
SW1wbC0+aGFzVGlsZUF0KDAsIDEpKTsKKworICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RB
bGxUZXh0dXJlcygpOworCisgICAgLy8gSW52YWxpZGF0ZXMgYm90aCB0aWxlcy4uLgorICAgIGxh
eWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgLy8gLi4u
LmJ1dCB0aGVuIG9ubHkgdXBkYXRlIG9uZSBvZiB0aGVtLgorICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAgIGxheWVyLT51cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxh
eWVySW1wbC5nZXQoKSk7CisKKyAgICAvLyBXZSBzaG91bGQgb25seSBoYXZlIHRoZSBmaXJzdCB0
aWxlIHNpbmNlIHRoZSBvdGhlciB0aWxlIHdhcyBpbnZhbGlkYXRlZCBidXQgbm90IHBhaW50ZWQu
CisgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOworICAgIEVYUEVD
VF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAxKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115925</attachid>
            <date>2011-11-18 19:16:21 -0800</date>
            <delta_ts>2011-11-21 14:05:04 -0800</delta_ts>
            <desc>fix comment</desc>
            <filename>bug-72765-20111118191620.patch</filename>
            <type>text/plain</type>
            <size>18658</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwODQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQzZjNjNGZmYWM5YmEx
ZDlhNmEyYWE4MDM0NzRlY2I5OTNkOGVjZi4uYmEyYmVkZTYxNzAwOWI4YjY1ZDRkMmRiY2NjM2Zj
NmFkOTYzZDgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDExLTExLTE4ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBB
dm9pZCBwdXNoaW5nIGRpcnR5IHRpbGVzIHRvIHRoZSBpbXBsIGxheWVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc2NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIGEgdGlsZSBoYXMgaW52YWxpZGF0
aW9ucyBhdCBwdXNoUHJvcGVydGllc1RvLCB0aGVuIHdlIGtub3cgdGhlIGNvbnRlbnRzIG9mIHRo
YXQgdGlsZSBhcmUgbm8gbG9uZ2VyIHZhbGlkIGV2ZW4KKyAgICAgICAgaWYgdGhleSBzdGlsbCBo
YXZlIHZhbGlkIGJhY2tpbmcgdGV4dHVyZXMuIFRoaXMgYXZvaWRzIHB1c2hpbmcgdGhhdCB0ZXh0
dXJlIHRvIHRoZSBpbXBsIHNpZGUgc28gaXQgaXMgbm90CisgICAgICAgIGRpc3BsYXllZCB0byB0
aGUgdXNlci4gVGhlIHRleHR1cmUgaXMgc3RpbGwga2VwdCBhcm91bmQgKG1hbmFnZWQgYnkgdGhl
IFRleHR1cmVNYW5hZ2VyKSBzbyB0aGF0IHdoZW4gd2UgbGF0ZXIgZG8KKyAgICAgICAgZGVjaWRl
IHRvIHVwZGF0ZSB0aGUgY29udGVudHMgZm9yIHRoYXQgdGlsZSB3ZSBjYW4gdXNlIHBhcnRpYWwg
cmVzdWx0cyBpZiB0aGV5IGFyZSBzdGlsbCB2YWxpZC4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5l
dyB1bml0IHRlc3QgaW4gVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpVcGRhdGFibGVUaWxlOjppc0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpzZXRUaWxlU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpjcmVhdGVUaWxlcik6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZUZvcm1hdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpoYXNUaWxlQXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6ZHJhd1RpbGVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisKIDIw
MTEtMTEtMTggIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIGNvbXBvc2l0ZWQgbGF5ZXJzIGFyZSBibHVycnkgd2l0aCBhIHpvb20taW4gcGFnZSBz
Y2FsZSBmYWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMzY3Mzc5YTVjNjU3YjVm
NzU0Yzk2NmRjMWM0ODdlM2U0Njc3MDA0My4uYWI2MzlhYmUzODIwNmMwMWEyMDA3MTQ5MTZiNGYy
NTcyNmE0ZjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAor
MjAxMS0xMS0xOCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQXZvaWQgcHVzaGluZyBkaXJ0eSB0aWxlcyB0byB0aGUgaW1wbCBsYXll
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI3NjUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdW5p
dCB0ZXN0IGZvciBUaWxlZExheWVyQ2hyb21pdW0ncyB0aWxlIHB1c2hpbmcgYmVoYXZpb3IuIFJl
cXVpcmVzIGEgZmFpciBhbW91bnQgb2YgZmFrZSBjbGFzc2VzLiBJZiB0aGVzZQorICAgICAgICBm
YWtlcyBhcmUgdXNlZnVsIGluIG90aGVyIHRlc3RzLCB0aGV5IHNob3VsZCBiZSBtb3ZlZCB0byBh
IHNoYXJlZCBsb2NhdGlvbi4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRl
c3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKDo6RmFrZVRl
eHR1cmVBbGxvY2F0b3I6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoOjpGYWtlVGV4dHVyZUFs
bG9jYXRvcjo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgICg6OkZha2VMYXllclRleHR1cmVVcGRh
dGVyOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICg6OkZha2VMYXllclRleHR1
cmVVcGRhdGVyOjp+RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoOjpGYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6b3JpZW50YXRpb24pOgorICAgICAgICAoOjpGYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6c2FtcGxlZFRleGVsRm9ybWF0KToKKyAgICAgICAgKDo6RmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgICg6OkZha2VMYXllclRleHR1
cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAgICAgICg6OkZha2VDQ1RpbGVkTGF5
ZXJJbXBsOjpGYWtlQ0NUaWxlZExheWVySW1wbCk6CisgICAgICAgICg6OkZha2VDQ1RpbGVkTGF5
ZXJJbXBsOjp+RmFrZUNDVGlsZWRMYXllckltcGwpOgorICAgICAgICAoOjpGYWtlQ0NUaWxlZExh
eWVySW1wbDo6aGFzVGlsZUF0KToKKyAgICAgICAgKDo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICg6OkZha2VUaWxlZExheWVyQ2hyb21p
dW06On5GYWtlVGlsZWRMYXllckNocm9taXVtKToKKyAgICAgICAgKDo6RmFrZVRpbGVkTGF5ZXJD
aHJvbWl1bTo6aW52YWxpZGF0ZVJlY3QpOgorICAgICAgICAoOjpGYWtlVGlsZWRMYXllckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoOjpGYWtlVGlsZWRMYXllckNocm9taXVt
Ojp0ZXh0dXJlTWFuYWdlcik6CisgICAgICAgICg6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OmNy
ZWF0ZVRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKDo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6
dGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoOjpURVNUKToKKwogMjAxMS0xMS0xOCAgQWxwaGEg
TGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gY29tcG9zaXRl
ZCBsYXllcnMgYXJlIGJsdXJyeSB3aXRoIGEgem9vbS1pbiBwYWdlIHNjYWxlIGZhY3RvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggODdkZWMwYjk4YWM2ZGFlODE5OThiZjU4
NTQ5ODY0NDYwMDExNThlMi4uNWQ0YWI0NWVlYjk0YjlmZWQ1OTAxMjAyNGI0ODE1ZjAxZTE4YmUz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC01Niw3ICs1Niw3IEBAIHB1
YmxpYzoKIAogICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXguZ2V0
KCk7IH0KIAotICAgIGJvb2wgZGlydHkoKSBjb25zdCB7IHJldHVybiAhbV9kaXJ0eUxheWVyUmVj
dC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiAhbV9kaXJ0
eUxheWVyUmVjdC5pc0VtcHR5KCk7IH0KICAgICB2b2lkIGNsZWFyRGlydHkoKSB7IG1fZGlydHlM
YXllclJlY3QgPSBJbnRSZWN0KCk7IH0KIAogICAgIC8vIExheWVyLXNwYWNlIGRpcnR5IHJlY3Rh
bmdsZSB0aGF0IG5lZWRzIHRvIGJlIHJlcGFpbnRlZC4KQEAgLTExOCw3ICsxMTgsMTIgQEAgdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKCkKICAg
ICBJbnRTaXplIHJlcXVlc3RlZFNpemUgPSBpc1RpbGVkID8gdGlsZVNpemUgOiBjb250ZW50Qm91
bmRzKCk7CiAgICAgY29uc3QgaW50IG1heFNpemUgPSBsYXllclRyZWVIb3N0KCktPmxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZTsKICAgICBJbnRTaXplIGNsYW1wZWRT
aXplID0gcmVxdWVzdGVkU2l6ZS5zaHJ1bmtUbyhJbnRTaXplKG1heFNpemUsIG1heFNpemUpKTsK
LSAgICBtX3RpbGVyLT5zZXRUaWxlU2l6ZShjbGFtcGVkU2l6ZSk7CisgICAgc2V0VGlsZVNpemUo
Y2xhbXBlZFNpemUpOworfQorCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGlsZVNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBtX3RpbGVyLT5zZXRUaWxlU2l6ZShzaXplKTsK
IH0KIAogYm9vbCBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CkBAIC0x
NTQsMTUgKzE1OSwxOCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9z
dChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiAKICAgICBjcmVhdGVUZXh0dXJlVXBkYXRlcihob3N0
KTsKIAotICAgIG1fdGV4dHVyZUZvcm1hdCA9IGhvc3QtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMoKS5iZXN0VGV4dHVyZUZvcm1hdDsKKyAgICBzZXRUZXh0dXJlRm9ybWF0KGhvc3QtPmxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5iZXN0VGV4dHVyZUZvcm1hdCk7CiAgICAgbV90ZXh0dXJl
T3JpZW50YXRpb24gPSB0ZXh0dXJlVXBkYXRlcigpLT5vcmllbnRhdGlvbigpOwogICAgIG1fc2Ft
cGxlZFRleGVsRm9ybWF0ID0gdGV4dHVyZVVwZGF0ZXIoKS0+c2FtcGxlZFRleGVsRm9ybWF0KG1f
dGV4dHVyZUZvcm1hdCk7Ci0gICAgbV90aWxlciA9IENDTGF5ZXJUaWxpbmdEYXRhOjpjcmVhdGUo
Ci0gICAgICAgIEludFNpemUoZGVmYXVsdFRpbGVTaXplLCBkZWZhdWx0VGlsZVNpemUpLAotICAg
ICAgICBpc05vbkNvbXBvc2l0ZWRDb250ZW50KCkgPyBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3Jk
ZXJUZXhlbHMgOiBDQ0xheWVyVGlsaW5nRGF0YTo6SGFzQm9yZGVyVGV4ZWxzKTsKKyAgICBjcmVh
dGVUaWxlcihpc05vbkNvbXBvc2l0ZWRDb250ZW50KCkgPyBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9C
b3JkZXJUZXhlbHMgOiBDQ0xheWVyVGlsaW5nRGF0YTo6SGFzQm9yZGVyVGV4ZWxzKTsKK30KKwor
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZVRpbGVyKENDTGF5ZXJUaWxpbmdEYXRhOjpC
b3JkZXJUZXhlbE9wdGlvbiBib3JkZXJUZXhlbE9wdGlvbikKK3sKKyAgICBtX3RpbGVyID0gQ0NM
YXllclRpbGluZ0RhdGE6OmNyZWF0ZShJbnRTaXplKGRlZmF1bHRUaWxlU2l6ZSwgZGVmYXVsdFRp
bGVTaXplKSwgYm9yZGVyVGV4ZWxPcHRpb24pOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
Q0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRl
ciYgdXBkYXRlcikKIHsKICAgICAvLyBQYWludGluZyBjb3VsZCBjYXVzZSBjb21wb3NpdGluZyB0
byBnZXQgdHVybmVkIG9mZiwgd2hpY2ggbWF5IGNhdXNlIHRoZSB0aWxlciB0byBiZWNvbWUgaW52
YWxpZGF0ZWQgbWlkLXVwZGF0ZS4KICAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRV
cGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSkKQEAgLTE3NSw3ICsx
ODMsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogICAgICAgICAgICAgVXBkYXRhYmxlVGls
ZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKICAgICAgICAgICAgIGlmICghdGlsZSkKICAgICAgICAg
ICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCF0
aWxlLT5kaXJ0eSgpKQorICAgICAgICAgICAgZWxzZSBpZiAoIXRpbGUtPmlzRGlydHkoKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHBhZ2Ut
c3BhY2UgcmVjdGFuZ2xlIHRvIGNvcHkgZnJvbS4KQEAgLTIwOCwxMSArMjE2LDYgQEAgdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIEMKICAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkgKyBkZXN0
UmVjdC5oZWlnaHQoKSA+IG1fcGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAgICAgICAgICAgIENS
QVNIKCk7CiAKLSAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4
dCwgdXBkYXRlci5hbGxvY2F0b3IoKSk7Ci0gICAgICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRl
ciA9IG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVB
UiA6IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUOwotICAgICAgICAgICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwotICAgICAgICAg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRl
cikpOwotCiAgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZCh0aWxlLT50ZXh0dXJlKCksIHRleHR1
cmVVcGRhdGVyKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgICAgIHRpbGUtPmNs
ZWFyRGlydHkoKTsKICAgICAgICAgfQpAQCAtMjUzLDYgKzI1Niw4IEBAIHZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICAgICAg
VXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihpdGVyLT5z
ZWNvbmQuZ2V0KCkpOwogICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+aXNWYWxpZChtX3Rp
bGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKQogICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlmICh0aWxlLT5pc0RpcnR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICB0aWxlZExheWVyLT5zeW5jVGV4dHVyZUlkKGksIGosIHRpbGUtPnRleHR1cmUoKS0+
dGV4dHVyZUlkKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggZjBi
NTQ5ZTExOWYwMjM5OWI3Y2MyMDYxNDI0MzI2M2UxMzgxZGFkNS4uYzVhY2E4NmZkZTQ1MTkxNzc1
ZWEyNmI0ZTMwNjVmNDdmYjU2MjJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAg
LTYzLDYgKzYzLDExIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cFJlc291
cmNlcygpOwogICAgIHZvaWQgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKIAorICAg
IC8vIEV4cG9zZWQgdG8gc3ViY2xhc3NlcyBmb3IgdGVzdGluZy4KKyAgICB2b2lkIHNldFRpbGVT
aXplKGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lkIGNyZWF0ZVRpbGVyKENDTGF5ZXJUaWxpbmdE
YXRhOjpCb3JkZXJUZXhlbE9wdGlvbik7CisgICAgdm9pZCBzZXRUZXh0dXJlRm9ybWF0KEdDM0Rl
bnVtIHRleHR1cmVGb3JtYXQpIHsgbV90ZXh0dXJlRm9ybWF0ID0gdGV4dHVyZUZvcm1hdDsgfQor
CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVl
SG9zdCopID0gMDsKICAgICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRh
dGVyKCkgY29uc3QgPSAwOwogCkBAIC03Myw2ICs3OCw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZp
cnR1YWwgdm9pZCBwcm90ZWN0VmlzaWJsZVRpbGVUZXh0dXJlcygpOwogCisgICAgdmlydHVhbCBU
ZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKQEAg
LTg0LDggKzkxLDYgQEAgcHJpdmF0ZToKICAgICBVcGRhdGFibGVUaWxlKiB0aWxlQXQoaW50LCBp
bnQpIGNvbnN0OwogICAgIFVwZGF0YWJsZVRpbGUqIGNyZWF0ZVRpbGUoaW50LCBpbnQpOwogCi0g
ICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3Q7Ci0KICAgICAvLyBUZW1w
b3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCB1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKCkuCiAgICAgSW50UmVjdCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3Q7CiAg
ICAgLy8gU3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCBwdXNoUHJvcGVy
dGllc1RvKCkuIFRoaXMgcmVwcmVzZW50cyB0aGUgYXJlYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5
ZXJJbXBsLmNwcAppbmRleCAyMjA5YzhhNGIxMDVlNzEwZTlkZjE4ZDUwNmIzYzkwMzk1MTI1ZmI3
Li5lOTkzYjU3ZTVlNjY2NWM3YWFmZmVhZjI3ZmUzODczNjJhYTY3MTAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtODAsNiArODAsMTEgQEAgdm9pZCBDQ1RpbGVkTGF5
ZXJJbXBsOjpkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBj
b25zdAogICAgIHRzIDw8ICJza2lwc0RyYXc6ICIgPDwgKCFtX3RpbGVyIHx8IG1fc2tpcHNEcmF3
KSA8PCAiXG4iOwogfQogCitib29sIENDVGlsZWRMYXllckltcGw6Omhhc1RpbGVBdChpbnQgaSwg
aW50IGopIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGlsZXItPnRpbGVBdChpLCBqKTsKK30KKwog
RHJhd2FibGVUaWxlKiBDQ1RpbGVkTGF5ZXJJbXBsOjp0aWxlQXQoaW50IGksIGludCBqKSBjb25z
dAogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxEcmF3YWJsZVRpbGUqPihtX3RpbGVyLT50aWxl
QXQoaSwgaikpOwpAQCAtMjE5LDYgKzIyNCw3IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHJh
d1RpbGVzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgSW50CiAg
ICAgbV90aWxlci0+Y29udGVudFJlY3RUb1RpbGVJbmRpY2VzKGNvbnRlbnRSZWN0LCBsZWZ0LCB0
b3AsIHJpZ2h0LCBib3R0b20pOwogICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gbV90aWxlci0+Y29u
dGVudFJlY3RUb0xheWVyUmVjdChjb250ZW50UmVjdCk7CiAgICAgZmxvYXQgc2lnbiA9IEZsb2F0
UXVhZChjb250ZW50UmVjdCkuaXNDb3VudGVyY2xvY2t3aXNlKCkgPyAtMSA6IDE7CisgICAgY29u
c3QgR0MzRGludCBmaWx0ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNz
Q29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKICAgICBmb3Ig
KGludCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIENDTGF5ZXJRdWFkOjpF
ZGdlIHByZXZFZGdlWCA9IGNvbnRlbnRRdWFkLmxlZnQoKTsKIApAQCAtMzQzLDYgKzM0OSw5IEBA
IHZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHJhd1RpbGVzKExheWVyUmVuZGVyZXJDaHJvbWl1bSog
bGF5ZXJSZW5kZXJlciwgY29uc3QgSW50CiAKICAgICAgICAgICAgIGlmICh0aWxlICYmIHRpbGUt
PnRleHR1cmVJZCgpKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRpbGUtPnRleHR1cmVJZCgpKTsKKyAgICAgICAg
ICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwg
ZmlsdGVyKSk7CisgICAgICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikpOworCiAgICAgICAgICAgICAgICAgbGF5ZXJSZW5k
ZXJlci0+ZHJhd1RleHR1cmVkUXVhZChnbG9iYWxUcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVj
dC5oZWlnaHQoKSwgb3BhY2l0eSwgcXVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9u
KCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggNTZlY2I0ZDZhZDQ2ZDNlYzY1
YTVkOGE5ZTdjMzE2N2U0NjhmM2YwNy4uMTAwM2RiY2I1NjY2ODhjNTJjZDQyMWFiMDFmZDFiNjJm
MTNhNzcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtNjcsOCArNjcsMTIg
QEAgcHVibGljOgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyVGlsZSwg
RnJhZ21lbnRTaGFkZXJSR0JBVGV4Q2xhbXBBbHBoYUFBPiBQcm9ncmFtQUE7CiAgICAgdHlwZWRl
ZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJUaWxlLCBGcmFnbWVudFNoYWRlclJHQkFUZXhD
bGFtcFN3aXp6bGVBbHBoYUFBPiBQcm9ncmFtU3dpenpsZUFBOwogCi1wcml2YXRlOgorcHJvdGVj
dGVkOgogICAgIGV4cGxpY2l0IENDVGlsZWRMYXllckltcGwoaW50IGlkKTsKKyAgICAvLyBFeHBv
c2VkIGZvciB0ZXN0aW5nLgorICAgIGJvb2wgaGFzVGlsZUF0KGludCwgaW50KSBjb25zdDsKKwor
cHJpdmF0ZToKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNTdHJpbmcoKSBj
b25zdCB7IHJldHVybiAiQ29udGVudExheWVyIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwaQppbmRleCAwZjU5OGU3OGE5ODY4ODMxZTgyYTJmNWM4ODJkNGYzODRjZmJjNjA1Li5lMDE3
MWFjZDEzYTFiOWNjMTlkYWE1MWJiZDNmMjNhNzdmNmQ4NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cGkKQEAgLTgxLDYgKzgxLDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9QT0RJbnRl
cnZhbFRyZWVUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvUE9EUmVkQmxhY2tUcmVlVGVz
dC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1JlbmRlclRhYmxlQ2VsbFRlc3QuY3BwJywKKyAg
ICAgICAgICAgICd0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCcsCiAgICAgICAgICAg
ICAndGVzdHMvVGlsaW5nRGF0YVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UcmVlU3lu
Y2hyb25pemVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RyZWVUZXN0SGVscGVycy5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVy
Q2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXll
ckNocm9taXVtVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFlMmI5Mzk0N2MwM2E1YTRmYmM1ZjNlZDMy
OGVhMjA0MWIxZTgzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlRpbGVkTGF5ZXJDaHJv
bWl1bS5oIgorCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIlRl
eHR1cmVNYW5hZ2VyLmgiCisjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBG
b3IgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRl
ci5oIgorI2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwuaCIKKyNpbmNsdWRlIDxndGVzdC9n
dGVzdC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7
CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIEZha2VUZXh0dXJlQWxsb2NhdG9yIDogcHVibGljIFRl
eHR1cmVBbGxvY2F0b3IgeworcHVibGljOgorICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4
dHVyZShjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSB7
IH0KK307CisKK2NsYXNzIEZha2VMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4
dHVyZVVwZGF0ZXIgeworcHVibGljOgorICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgeyB9
CisgICAgdmlydHVhbCB+RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KKworICAgIHZpcnR1
YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBCb3R0b21VcE9yaWVudGF0aW9u
OyB9CisgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdD
M0RlbnVtKSB7IHJldHVybiBTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOyB9CisgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGludCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYsIGNv
bnN0IEludFJlY3QmKSB7IH0KK307CisKK2NsYXNzIEZha2VDQ1RpbGVkTGF5ZXJJbXBsIDogcHVi
bGljIENDVGlsZWRMYXllckltcGwgeworcHVibGljOgorICAgIGV4cGxpY2l0IEZha2VDQ1RpbGVk
TGF5ZXJJbXBsKGludCBpZCkKKyAgICAgICAgOiBDQ1RpbGVkTGF5ZXJJbXBsKGlkKSB7IH0KKyAg
ICB2aXJ0dWFsIH5GYWtlQ0NUaWxlZExheWVySW1wbCgpIHsgfQorCisgICAgYm9vbCBoYXNUaWxl
QXQoaW50IGksIGludCBqKQorICAgIHsKKyAgICAgICAgcmV0dXJuIENDVGlsZWRMYXllckltcGw6
Omhhc1RpbGVBdChpLCBqKTsKKyAgICB9Cit9OworCitjbGFzcyBGYWtlVGlsZWRMYXllckNocm9t
aXVtIDogcHVibGljIFRpbGVkTGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bShUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIpCisg
ICAgICAgIDogVGlsZWRMYXllckNocm9taXVtKDApCisgICAgICAgICwgbV9mYWtlVGV4dHVyZVVw
ZGF0ZXIoYWRvcHRSZWYobmV3IEZha2VMYXllclRleHR1cmVVcGRhdGVyKSkKKyAgICAgICAgLCBt
X3RleHR1cmVNYW5hZ2VyKHRleHR1cmVNYW5hZ2VyKQorICAgIHsKKyAgICAgICAgY3JlYXRlVGls
ZXIoQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzKTsKKyAgICAgICAgc2V0VGlsZVNp
emUoSW50U2l6ZSgxMDAsIDEwMCkpOworICAgICAgICBzZXRUZXh0dXJlRm9ybWF0KEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBKTsKKyAgICB9CisgICAgdmlydHVhbCB+RmFrZVRpbGVkTGF5ZXJDaHJv
bWl1bSgpIHsgfQorCisgICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0
KQorICAgIHsKKyAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjppbnZhbGlkYXRlUmVjdChyZWN0
KTsKKyAgICB9CisKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiByZWN0
KQorICAgIHsKKyAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUocmVj
dCk7CisgICAgfQorCisgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIo
KSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVNYW5hZ2VyOyB9CisKK3ByaXZhdGU6CisgICAgdmly
dHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCopIHsg
fQorCisgICAgdmlydHVhbCBMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9mYWtlVGV4dHVyZVVwZGF0ZXIuZ2V0KCk7Cisg
ICAgfQorCisgICAgUmVmUHRyPEZha2VMYXllclRleHR1cmVVcGRhdGVyPiBtX2Zha2VUZXh0dXJl
VXBkYXRlcjsKKyAgICBUZXh0dXJlTWFuYWdlciogbV90ZXh0dXJlTWFuYWdlcjsKK307CisKK1RF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCit7CisgICAgT3duUHRy
PFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUo
NCoxMDI0KjEwMjQsIDEwMjQpOworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBs
YXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2Vy
LmdldCgpKSk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAg
UmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFr
ZUNDVGlsZWRMYXllckltcGwoMCkpOworCisgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVy
ZUFsbG9jYXRvcjsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0
b3IpOworCisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRh
dGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwu
Z2V0KCkpOworCisgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBz
aWRlLgorICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKKyAgICBF
WFBFQ1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAxKSk7CisKKyAgICB0ZXh0dXJlTWFu
YWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKKworICAgIC8vIEludmFsaWRhdGVzIGJvdGgg
dGlsZXMuLi4KKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCkpOworICAgIC8vIC4uLi5idXQgdGhlbiBvbmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KKyAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBsYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+cHVz
aFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOworCisgICAgLy8gV2Ugc2hvdWxkIG9ubHkg
aGF2ZSB0aGUgZmlyc3QgdGlsZSBzaW5jZSB0aGUgb3RoZXIgdGlsZSB3YXMgaW52YWxpZGF0ZWQg
YnV0IG5vdCBwYWludGVkLgorICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAs
IDApKTsKKyAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMSkpOworfQor
Cit9IC8vIG5hbWVzcGFjZQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116132</attachid>
            <date>2011-11-21 14:05:08 -0800</date>
            <delta_ts>2011-11-21 14:15:36 -0800</delta_ts>
            <desc>Defer tiler creation until prepareToUpdate</desc>
            <filename>bug-72765-20111121140507.patch</filename>
            <type>text/plain</type>
            <size>20685</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRjOTNkOTAwNTZkY2Y0
YzM3ZWYwYzY1Yjk5MDBmNWIxZDcwMmFmZC4uMjRlM2QxYTA4MmViMTg2ZDhhMTE5MmYwNTBmOTMz
Y2MxYWE1MWQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDExLTExLTIxICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBB
dm9pZCBwdXNoaW5nIGRpcnR5IHRpbGVzIHRvIHRoZSBpbXBsIGxheWVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc2NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIGEgdGlsZSBoYXMgaW52YWxpZGF0
aW9ucyBhdCBwdXNoUHJvcGVydGllc1RvLCB0aGVuIHdlIGtub3cgdGhlIGNvbnRlbnRzIG9mIHRo
YXQgdGlsZSBhcmUgbm8gbG9uZ2VyIHZhbGlkIGV2ZW4KKyAgICAgICAgaWYgdGhleSBzdGlsbCBo
YXZlIHZhbGlkIGJhY2tpbmcgdGV4dHVyZXMuIFRoaXMgYXZvaWRzIHB1c2hpbmcgdGhhdCB0ZXh0
dXJlIHRvIHRoZSBpbXBsIHNpZGUgc28gaXQgaXMgbm90CisgICAgICAgIGRpc3BsYXllZCB0byB0
aGUgdXNlci4gVGhlIHRleHR1cmUgaXMgc3RpbGwga2VwdCBhcm91bmQgKG1hbmFnZWQgYnkgdGhl
IFRleHR1cmVNYW5hZ2VyKSBzbyB0aGF0IHdoZW4gd2UgbGF0ZXIgZG8KKyAgICAgICAgZGVjaWRl
IHRvIHVwZGF0ZSB0aGUgY29udGVudHMgZm9yIHRoYXQgdGlsZSB3ZSBjYW4gdXNlIHBhcnRpYWwg
cmVzdWx0cyBpZiB0aGV5IGFyZSBzdGlsbCB2YWxpZC4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5l
dyB1bml0IHRlc3QgaW4gVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpVcGRhdGFibGVUaWxlOjppc0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpzZXRUaWxlU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpjcmVhdGVUaWxlcik6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZUZvcm1hdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpoYXNUaWxlQXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6ZHJhd1RpbGVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisKIDIw
MTEtMTEtMjEgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFN0
eWxlU2hlZXQ6IE1vdmUgY29tcGxldGVVUkwoKSB0byBDU1NTdHlsZVNoZWV0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCA2NWYxMjkyMTc0MWIwYTVhZjM4ZTE1MjVmNjBlMDIyMzNkYTUx
YzczLi4yYzdlM2U3NWEwZjAzMTg1MTVkZjg0OTQ3MGEwNzc0NjRmZTZjYjdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDExLTExLTIxICBKYW1lcyBSb2Jp
bnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBdm9pZCBw
dXNoaW5nIGRpcnR5IHRpbGVzIHRvIHRoZSBpbXBsIGxheWVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc2NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB1bml0IHRlc3QgZm9yIFRpbGVkTGF5ZXJD
aHJvbWl1bSdzIHRpbGUgcHVzaGluZyBiZWhhdmlvci4gUmVxdWlyZXMgYSBmYWlyIGFtb3VudCBv
ZiBmYWtlIGNsYXNzZXMuIElmIHRoZXNlCisgICAgICAgIGZha2VzIGFyZSB1c2VmdWwgaW4gb3Ro
ZXIgdGVzdHMsIHRoZXkgc2hvdWxkIGJlIG1vdmVkIHRvIGEgc2hhcmVkIGxvY2F0aW9uLgorCisg
ICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoOjpGYWtlVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRl
VGV4dHVyZSk6CisgICAgICAgICg6OkZha2VUZXh0dXJlQWxsb2NhdG9yOjpkZWxldGVUZXh0dXJl
KToKKyAgICAgICAgKDo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OkZha2VMYXllclRleHR1cmVV
cGRhdGVyKToKKyAgICAgICAgKDo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6On5GYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcik6CisgICAgICAgICg6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpvcmll
bnRhdGlvbik6CisgICAgICAgICg6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVkVGV4
ZWxGb3JtYXQpOgorICAgICAgICAoOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRv
VXBkYXRlKToKKyAgICAgICAgKDo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1
cmVSZWN0KToKKyAgICAgICAgKDo6RmFrZUNDVGlsZWRMYXllckltcGw6OkZha2VDQ1RpbGVkTGF5
ZXJJbXBsKToKKyAgICAgICAgKDo6RmFrZUNDVGlsZWRMYXllckltcGw6On5GYWtlQ0NUaWxlZExh
eWVySW1wbCk6CisgICAgICAgICg6OkZha2VDQ1RpbGVkTGF5ZXJJbXBsOjpoYXNUaWxlQXQpOgor
ICAgICAgICAoOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpGYWtlVGlsZWRMYXllckNocm9taXVt
KToKKyAgICAgICAgKDo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6fkZha2VUaWxlZExheWVyQ2hy
b21pdW0pOgorICAgICAgICAoOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjppbnZhbGlkYXRlUmVj
dCk6CisgICAgICAgICg6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZSk6
CisgICAgICAgICg6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnRleHR1cmVNYW5hZ2VyKToKKyAg
ICAgICAgKDo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIpOgor
ICAgICAgICAoOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjp0ZXh0dXJlVXBkYXRlcik6CisgICAg
ICAgICg6OlRFU1QpOgorCiAyMDExLTExLTIxICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGdv
b2dsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGEgc2V0dGVyIGZvciBVbmlmaWVkVGV4dENo
ZWNrZXJFbmFibGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggODdkZWMw
Yjk4YWM2ZGFlODE5OThiZjU4NTQ5ODY0NDYwMDExNThlMi4uZmZhZDJmNWIxNzVjOTY2NWQ2NjU3
NWJhZmNjMzliZmNlZTBlMWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBA
IC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkg
eyByZXR1cm4gbV90ZXguZ2V0KCk7IH0KIAotICAgIGJvb2wgZGlydHkoKSBjb25zdCB7IHJldHVy
biAhbV9kaXJ0eUxheWVyUmVjdC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzRGlydHkoKSBjb25z
dCB7IHJldHVybiAhbV9kaXJ0eUxheWVyUmVjdC5pc0VtcHR5KCk7IH0KICAgICB2b2lkIGNsZWFy
RGlydHkoKSB7IG1fZGlydHlMYXllclJlY3QgPSBJbnRSZWN0KCk7IH0KIAogICAgIC8vIExheWVy
LXNwYWNlIGRpcnR5IHJlY3RhbmdsZSB0aGF0IG5lZWRzIHRvIGJlIHJlcGFpbnRlZC4KQEAgLTY3
LDExICs2NywxMSBAQCBwcml2YXRlOgogCiBUaWxlZExheWVyQ2hyb21pdW06OlRpbGVkTGF5ZXJD
aHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogTGF5ZXJDaHJvbWl1bShk
ZWxlZ2F0ZSkKLSAgICAsIG1fdGlsaW5nT3B0aW9uKEF1dG9UaWxlKQogICAgICwgbV90ZXh0dXJl
Rm9ybWF0KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pCiAgICAgLCBtX3NraXBzRHJh
dyhmYWxzZSkKICAgICAsIG1fdGV4dHVyZU9yaWVudGF0aW9uKExheWVyVGV4dHVyZVVwZGF0ZXI6
OkludmFsaWRPcmllbnRhdGlvbikKICAgICAsIG1fc2FtcGxlZFRleGVsRm9ybWF0KExheWVyVGV4
dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEludmFsaWQpCisgICAgLCBtX3RpbGluZ09w
dGlvbihBdXRvVGlsZSkKIHsKIH0KIApAQCAtOTUsOSArOTUsNiBAQCB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1
cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpCiB7Ci0gICAgaWYgKCFtX3RpbGVyKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBjb25zdCBJbnRTaXplIHRpbGVTaXplKG1pbihkZWZhdWx0VGls
ZVNpemUsIGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpKSwgbWluKGRlZmF1bHRUaWxlU2l6ZSwgY29u
dGVudEJvdW5kcygpLmhlaWdodCgpKSk7CiAKICAgICAvLyBUaWxlIGlmIGJvdGggZGltZW5zaW9u
cyBsYXJnZSwgb3IgYW55IG9uZSBkaW1lbnNpb24gbGFyZ2UgYW5kIHRoZSBvdGhlcgpAQCAtMTE4
LDcgKzExNSwxNSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRU
aWxpbmdPcHRpb24oKQogICAgIEludFNpemUgcmVxdWVzdGVkU2l6ZSA9IGlzVGlsZWQgPyB0aWxl
U2l6ZSA6IGNvbnRlbnRCb3VuZHMoKTsKICAgICBjb25zdCBpbnQgbWF4U2l6ZSA9IGxheWVyVHJl
ZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplOwogICAg
IEludFNpemUgY2xhbXBlZFNpemUgPSByZXF1ZXN0ZWRTaXplLnNocnVua1RvKEludFNpemUobWF4
U2l6ZSwgbWF4U2l6ZSkpOwotICAgIG1fdGlsZXItPnNldFRpbGVTaXplKGNsYW1wZWRTaXplKTsK
KyAgICBzZXRUaWxlU2l6ZShjbGFtcGVkU2l6ZSk7Cit9CisKK3ZvaWQgVGlsZWRMYXllckNocm9t
aXVtOjpzZXRUaWxlU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlmIChtX3RpbGVy
ICYmIG1fdGlsZVNpemUgPT0gc2l6ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdGlsZVNpemUg
PSBzaXplOworICAgIG1fdGlsZXIuY2xlYXIoKTsgLy8gQ2hhbmdpbmcgdGhlIHRpbGUgc2l6ZSBp
bnZhbGlkYXRlcyBhbGwgdGlsZXMsIHNvIHdlIGp1c3QgdGhyb3cgYXdheSB0aGUgdGlsaW5nIGRh
dGEuCiB9CiAKIGJvb2wgVGlsZWRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdApA
QCAtMTU0LDE1ICsxNTksMTcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnNldExheWVyVHJl
ZUhvc3QoQ0NMYXllclRyZWVIb3N0KiBob3N0KQogCiAgICAgY3JlYXRlVGV4dHVyZVVwZGF0ZXIo
aG9zdCk7CiAKLSAgICBtX3RleHR1cmVGb3JtYXQgPSBob3N0LT5sYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKCkuYmVzdFRleHR1cmVGb3JtYXQ7CisgICAgc2V0VGV4dHVyZUZvcm1hdChob3N0LT5s
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkuYmVzdFRleHR1cmVGb3JtYXQpOwogICAgIG1fdGV4
dHVyZU9yaWVudGF0aW9uID0gdGV4dHVyZVVwZGF0ZXIoKS0+b3JpZW50YXRpb24oKTsKICAgICBt
X3NhbXBsZWRUZXhlbEZvcm1hdCA9IHRleHR1cmVVcGRhdGVyKCktPnNhbXBsZWRUZXhlbEZvcm1h
dChtX3RleHR1cmVGb3JtYXQpOwotICAgIG1fdGlsZXIgPSBDQ0xheWVyVGlsaW5nRGF0YTo6Y3Jl
YXRlKAotICAgICAgICBJbnRTaXplKGRlZmF1bHRUaWxlU2l6ZSwgZGVmYXVsdFRpbGVTaXplKSwK
LSAgICAgICAgaXNOb25Db21wb3NpdGVkQ29udGVudCgpID8gQ0NMYXllclRpbGluZ0RhdGE6Ok5v
Qm9yZGVyVGV4ZWxzIDogQ0NMYXllclRpbGluZ0RhdGE6Okhhc0JvcmRlclRleGVscyk7CiB9CiAK
LXZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZVRpbGVyKENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJU
ZXhlbE9wdGlvbiBib3JkZXJUZXhlbE9wdGlvbikKK3sKKyAgICBtX3RpbGVyID0gQ0NMYXllclRp
bGluZ0RhdGE6OmNyZWF0ZShtX3RpbGVTaXplLCBib3JkZXJUZXhlbE9wdGlvbik7Cit9CisKK3Zv
aWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNz
Q29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKICAgICAvLyBQYWludGlu
ZyBjb3VsZCBjYXVzZSBjb21wb3NpdGluZyB0byBnZXQgdHVybmVkIG9mZiwgd2hpY2ggbWF5IGNh
dXNlIHRoZSB0aWxlciB0byBiZWNvbWUgaW52YWxpZGF0ZWQgbWlkLXVwZGF0ZS4KICAgICBpZiAo
bV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxl
ci0+bnVtVGlsZXMoKSkKQEAgLTE3NSw3ICsxODIsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
QwogICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKICAgICAg
ICAgICAgIGlmICghdGlsZSkKICAgICAgICAgICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShpLCBq
KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCF0aWxlLT5kaXJ0eSgpKQorICAgICAgICAgICAgZWxz
ZSBpZiAoIXRpbGUtPmlzRGlydHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICAgICAgLy8gQ2FsY3VsYXRlIHBhZ2Utc3BhY2UgcmVjdGFuZ2xlIHRvIGNvcHkgZnJvbS4K
QEAgLTIwOCwxMSArMjE1LDYgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEMKICAgICAgICAgICAg
IGlmIChwYWludE9mZnNldC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFpbnRSZWN0Lmhl
aWdodCgpKQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAgIHRpbGUtPnRl
eHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4dCwgdXBkYXRlci5hbGxvY2F0b3IoKSk7Ci0gICAg
ICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9IG1fdGlsZXItPmhhc0JvcmRlclRleGVscygp
ID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNU
OwotICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9G
SUxURVIsIGZpbHRlcikpOwotICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBh
cmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikpOwotCiAgICAgICAgICAgICB1cGRhdGVyLmFw
cGVuZCh0aWxlLT50ZXh0dXJlKCksIHRleHR1cmVVcGRhdGVyKCksIHNvdXJjZVJlY3QsIGRlc3RS
ZWN0KTsKICAgICAgICAgICAgIHRpbGUtPmNsZWFyRGlydHkoKTsKICAgICAgICAgfQpAQCAtMjIz
LDggKzIyNSwxMCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogCiB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6c2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbiB0aWxpbmdPcHRpb24pCiB7Cisg
ICAgaWYgKG1fdGlsZXIgJiYgbV90aWxpbmdPcHRpb24gPT0gdGlsaW5nT3B0aW9uKQorICAgICAg
ICByZXR1cm47CiAgICAgbV90aWxpbmdPcHRpb24gPSB0aWxpbmdPcHRpb247Ci0gICAgdXBkYXRl
VGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKKyAgICBtX3RpbGVyLmNsZWFyKCk7IC8vIENoYW5n
aW5nIHRoZSB0aWxpbmcgb3B0aW9uIGludmFsaWRhdGVzIGFsbCB0aWxlcywgc28gd2UganVzdCB0
aHJvdyBhd2F5IHRoZSB0aWxpbmcgZGF0YS4KIH0KIAogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OnNldElzTWFzayhib29sIGlzTWFzaykKQEAgLTI1Myw2ICsyNTcsOCBAQCB2b2lkIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgICAg
IFVwZGF0YWJsZVRpbGUqIHRpbGUgPSBzdGF0aWNfY2FzdDxVcGRhdGFibGVUaWxlKj4oaXRlci0+
c2Vjb25kLmdldCgpKTsKICAgICAgICAgaWYgKCF0aWxlLT50ZXh0dXJlKCktPmlzVmFsaWQobV90
aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkKICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBpZiAodGlsZS0+aXNEaXJ0eSgpKQorICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgdGlsZWRMYXllci0+c3luY1RleHR1cmVJZChpLCBqLCB0aWxlLT50ZXh0dXJlKCkt
PnRleHR1cmVJZCgpKTsKICAgICB9CkBAIC0zMzAsNiArMzM2LDkgQEAgdm9pZCBUaWxlZExheWVy
Q2hyb21pdW06OnByb3RlY3RUaWxlVGV4dHVyZXMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qp
CiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QpCiB7CisgICAgaWYgKCFtX3RpbGVyKQorICAgICAgICBjcmVhdGVUaWxl
cihpc05vbkNvbXBvc2l0ZWRDb250ZW50KCkgPyBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJU
ZXhlbHMgOiBDQ0xheWVyVGlsaW5nRGF0YTo6SGFzQm9yZGVyVGV4ZWxzKTsKKwogICAgIEFTU0VS
VChtX3RpbGVyKTsKIAogICAgIG1fc2tpcHNEcmF3ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5oCmluZGV4IGYwYjU0OWUxMTlmMDIzOTliN2NjMjA2MTQyNDMyNjNlMTM4MWRhZDUu
LjM2M2RhNjE4NTgwMmVlZGM3NGY1MTUyYWU0OWYzODdjOTJkYzBmOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5oCkBAIC02Myw2ICs2MywxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKICAgICB2b2lkIHVwZGF0ZVRpbGVTaXplQW5kVGls
aW5nT3B0aW9uKCk7CiAKKyAgICAvLyBFeHBvc2VkIHRvIHN1YmNsYXNzZXMgZm9yIHRlc3Rpbmcu
CisgICAgdm9pZCBzZXRUaWxlU2l6ZShjb25zdCBJbnRTaXplJik7CisgICAgdm9pZCBjcmVhdGVU
aWxlcihDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24pOworICAgIHZvaWQgc2V0
VGV4dHVyZUZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KSB7IG1fdGV4dHVyZUZvcm1hdCA9
IHRleHR1cmVGb3JtYXQ7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRl
cihjb25zdCBDQ0xheWVyVHJlZUhvc3QqKSA9IDA7CiAgICAgdmlydHVhbCBMYXllclRleHR1cmVV
cGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIGNvbnN0ID0gMDsKIApAQCAtNzMsNiArNzgsOCBAQCBw
cm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJvdGVjdFZpc2libGVUaWxlVGV4dHVyZXMo
KTsKIAorICAgIHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3Q7
CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVD
Q0xheWVySW1wbCgpOwogCkBAIC04NCwyMCArOTEsMTkgQEAgcHJpdmF0ZToKICAgICBVcGRhdGFi
bGVUaWxlKiB0aWxlQXQoaW50LCBpbnQpIGNvbnN0OwogICAgIFVwZGF0YWJsZVRpbGUqIGNyZWF0
ZVRpbGUoaW50LCBpbnQpOwogCi0gICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkg
Y29uc3Q7Ci0KICAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1Vw
ZGF0ZSgpIGFuZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkuCiAgICAgSW50UmVjdCBtX3Jl
cXVlc3RlZFVwZGF0ZVJlY3Q7CiAgICAgLy8gU3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1Vw
ZGF0ZSgpIGFuZCBwdXNoUHJvcGVydGllc1RvKCkuIFRoaXMgcmVwcmVzZW50cyB0aGUgYXJlYQog
ICAgIC8vIG9mIHRoZSBsYXllciB0aGF0IGlzIGFjdHVhbGx5IHJlLXBhaW50ZWQgYnkgV2ViS2l0
LgogICAgIEludFJlY3QgbV9wYWludFJlY3Q7CiAKLSAgICBUaWxpbmdPcHRpb24gbV90aWxpbmdP
cHRpb247CiAgICAgR0MzRGVudW0gbV90ZXh0dXJlRm9ybWF0OwogICAgIGJvb2wgbV9za2lwc0Ry
YXc7CiAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6T3JpZW50YXRpb24gbV90ZXh0dXJlT3JpZW50
YXRpb247CiAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IG1fc2Ft
cGxlZFRleGVsRm9ybWF0OwogCisgICAgVGlsaW5nT3B0aW9uIG1fdGlsaW5nT3B0aW9uOworICAg
IEludFNpemUgbV90aWxlU2l6ZTsKICAgICBPd25QdHI8Q0NMYXllclRpbGluZ0RhdGE+IG1fdGls
ZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDIyMDljOGE0
YjEwNWU3MTBlOWRmMThkNTA2YjNjOTAzOTUxMjVmYjcuLmU5OTNiNTdlNWU2NjY1YzdhYWZmZWFm
MjdmZTM4NzM2MmFhNjcxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBA
IC04MCw2ICs4MCwxMSBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmR1bXBMYXllclByb3BlcnRp
ZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CiAgICAgdHMgPDwgInNraXBzRHJh
dzogIiA8PCAoIW1fdGlsZXIgfHwgbV9za2lwc0RyYXcpIDw8ICJcbiI7CiB9CiAKK2Jvb2wgQ0NU
aWxlZExheWVySW1wbDo6aGFzVGlsZUF0KGludCBpLCBpbnQgaikgY29uc3QKK3sKKyAgICByZXR1
cm4gbV90aWxlci0+dGlsZUF0KGksIGopOworfQorCiBEcmF3YWJsZVRpbGUqIENDVGlsZWRMYXll
ckltcGw6OnRpbGVBdChpbnQgaSwgaW50IGopIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PERyYXdhYmxlVGlsZSo+KG1fdGlsZXItPnRpbGVBdChpLCBqKSk7CkBAIC0yMTksNiArMjI0
LDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkcmF3VGlsZXMoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBJbnQKICAgICBtX3RpbGVyLT5jb250ZW50UmVjdFRv
VGlsZUluZGljZXMoY29udGVudFJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAgICAg
SW50UmVjdCBsYXllclJlY3QgPSBtX3RpbGVyLT5jb250ZW50UmVjdFRvTGF5ZXJSZWN0KGNvbnRl
bnRSZWN0KTsKICAgICBmbG9hdCBzaWduID0gRmxvYXRRdWFkKGNvbnRlbnRSZWN0KS5pc0NvdW50
ZXJjbG9ja3dpc2UoKSA/IC0xIDogMTsKKyAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9IG1fdGls
ZXItPmhhc0JvcmRlclRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBo
aWNzQ29udGV4dDNEOjpORUFSRVNUOwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9t
OyArK2opIHsKICAgICAgICAgQ0NMYXllclF1YWQ6OkVkZ2UgcHJldkVkZ2VYID0gY29udGVudFF1
YWQubGVmdCgpOwogCkBAIC0zNDMsNiArMzQ5LDkgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpk
cmF3VGlsZXMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBJbnQK
IAogICAgICAgICAgICAgaWYgKHRpbGUgJiYgdGlsZS0+dGV4dHVyZUlkKCkpIHsKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgdGlsZS0+dGV4dHVyZUlkKCkpOworICAgICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0ZXIpKTsKKyAgICAgICAgICAgICAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgZmlsdGVy
KSk7CisKICAgICAgICAgICAgICAgICBsYXllclJlbmRlcmVyLT5kcmF3VGV4dHVyZWRRdWFkKGds
b2JhbFRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0LmhlaWdodCgpLCBvcGFjaXR5LCBxdWFk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jh
bS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXll
ckltcGwuaAppbmRleCA1NmVjYjRkNmFkNDZkM2VjNjVhNWQ4YTllN2MzMTY3ZTQ2OGYzZjA3Li4x
MDAzZGJjYjU2NjY4OGM1MmNkNDIxYWIwMWZkMWI2MmYxM2E3NzBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aWxlZExheWVySW1wbC5oCkBAIC02Nyw4ICs2NywxMiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBQ
cm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJUaWxlLCBGcmFnbWVudFNoYWRlclJHQkFUZXhDbGFt
cEFscGhhQUE+IFByb2dyYW1BQTsKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNo
YWRlclRpbGUsIEZyYWdtZW50U2hhZGVyUkdCQVRleENsYW1wU3dpenpsZUFscGhhQUE+IFByb2dy
YW1Td2l6emxlQUE7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ0NUaWxl
ZExheWVySW1wbChpbnQgaWQpOworICAgIC8vIEV4cG9zZWQgZm9yIHRlc3RpbmcuCisgICAgYm9v
bCBoYXNUaWxlQXQoaW50LCBpbnQpIGNvbnN0OworCitwcml2YXRlOgogCiAgICAgdmlydHVhbCBj
b25zdCBjaGFyKiBsYXllclR5cGVBc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuICJDb250ZW50TGF5
ZXIiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IDBmNTk4ZTc4YTk4Njg4
MzFlODJhMmY1Yzg4MmQ0ZjM4NGNmYmM2MDUuLmUwMTcxYWNkMTNhMWI5Y2MxOWRhYTUxYmJkM2Yy
M2E3N2Y2ZDg2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtODEsNiArODEs
NyBAQAogICAgICAgICAgICAgJ3Rlc3RzL1BPREludGVydmFsVHJlZVRlc3QuY3BwJywKICAgICAg
ICAgICAgICd0ZXN0cy9QT0RSZWRCbGFja1RyZWVUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvUmVuZGVyVGFibGVDZWxsVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL1RpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UaWxpbmdEYXRhVGVzdC5j
cHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcCcsCiAgICAg
ICAgICAgICAndGVzdHMvVHJlZVRlc3RIZWxwZXJzLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MWUyYjkzOTQ3YzAzYTVhNGZiYzVmM2VkMzI4ZWEyMDQxYjFlODMyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1U
ZXN0LmNwcApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiVGlsZWRMYXllckNocm9taXVtLmgiCisKKyNpbmNsdWRlICJMYXll
clRleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKKyNpbmNsdWRl
ICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiIC8vIEZvciBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NUaWxl
ZExheWVySW1wbC5oIgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIHsKKworY2xhc3Mg
RmFrZVRleHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgVGV4dHVyZUFsbG9jYXRvciB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNE
ZW51bSkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2ln
bmVkLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pIHsgfQorfTsKKworY2xhc3MgRmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CitwdWJsaWM6Cisg
ICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5GYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpIHsgfQorCisgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlv
bigpIHsgcmV0dXJuIEJvdHRvbVVwT3JpZW50YXRpb247IH0KKyAgICB2aXJ0dWFsIFNhbXBsZWRU
ZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0pIHsgcmV0dXJuIFNhbXBsZWRU
ZXhlbEZvcm1hdFJHQkE7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0
IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiwgaW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFu
YWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQorfTsKKwor
Y2xhc3MgRmFrZUNDVGlsZWRMYXllckltcGwgOiBwdWJsaWMgQ0NUaWxlZExheWVySW1wbCB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgRmFrZUNDVGlsZWRMYXllckltcGwoaW50IGlkKQorICAgICAg
ICA6IENDVGlsZWRMYXllckltcGwoaWQpIHsgfQorICAgIHZpcnR1YWwgfkZha2VDQ1RpbGVkTGF5
ZXJJbXBsKCkgeyB9CisKKyAgICBib29sIGhhc1RpbGVBdChpbnQgaSwgaW50IGopCisgICAgewor
ICAgICAgICByZXR1cm4gQ0NUaWxlZExheWVySW1wbDo6aGFzVGlsZUF0KGksIGopOworICAgIH0K
K307CisKK2NsYXNzIEZha2VUaWxlZExheWVyQ2hyb21pdW0gOiBwdWJsaWMgVGlsZWRMYXllckNo
cm9taXVtIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBGYWtlVGlsZWRMYXllckNocm9taXVtKFRl
eHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcikKKyAgICAgICAgOiBUaWxlZExheWVyQ2hyb21p
dW0oMCkKKyAgICAgICAgLCBtX2Zha2VUZXh0dXJlVXBkYXRlcihhZG9wdFJlZihuZXcgRmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIpKQorICAgICAgICAsIG1fdGV4dHVyZU1hbmFnZXIodGV4dHVyZU1h
bmFnZXIpCisgICAgeworICAgICAgICBjcmVhdGVUaWxlcihDQ0xheWVyVGlsaW5nRGF0YTo6Tm9C
b3JkZXJUZXhlbHMpOworICAgICAgICBzZXRUaWxlU2l6ZShJbnRTaXplKDEwMCwgMTAwKSk7Cisg
ICAgICAgIHNldFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgIH0K
KyAgICB2aXJ0dWFsIH5GYWtlVGlsZWRMYXllckNocm9taXVtKCkgeyB9CisKKyAgICB2b2lkIGlu
dmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAgeworICAgICAgICBUaWxlZExh
eWVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0KHJlY3QpOworICAgIH0KKworICAgIHZvaWQgcHJl
cGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAgeworICAgICAgICBUaWxlZExh
eWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShyZWN0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVy
ZU1hbmFnZXI7IH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVw
ZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KikgeyB9CisKKyAgICB2aXJ0dWFsIExheWVyVGV4
dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2Zha2VUZXh0dXJlVXBkYXRlci5nZXQoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8RmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXI+IG1fZmFrZVRleHR1cmVVcGRhdGVyOworICAgIFRleHR1cmVNYW5h
Z2VyKiBtX3RleHR1cmVNYW5hZ2VyOworfTsKKworVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBwdXNoRGlydHlUaWxlcykKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVN
YW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAg
UmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VU
aWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBSZWZQdHI8RmFrZUNDVGlsZWRMYXllcklt
cGw+IGxheWVySW1wbCA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSk7CisK
KyAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOworICAgIENDVGV4dHVy
ZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CisKKyAgICAvLyBUaGUgdGlsZSBz
aXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0
aWxlcy4KKyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkp
OworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwor
ICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxh
eWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CisKKyAgICAvLyBXZSBzaG91
bGQgaGF2ZSBib3RoIHRpbGVzIG9uIHRoZSBpbXBsIHNpZGUuCisgICAgRVhQRUNUX1RSVUUobGF5
ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFz
VGlsZUF0KDAsIDEpKTsKKworICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJl
cygpOworCisgICAgLy8gSW52YWxpZGF0ZXMgYm90aCB0aWxlcy4uLgorICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgLy8gLi4uLmJ1dCB0aGVu
IG9ubHkgdXBkYXRlIG9uZSBvZiB0aGVtLgorICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5n
ZXQoKSk7CisKKyAgICAvLyBXZSBzaG91bGQgb25seSBoYXZlIHRoZSBmaXJzdCB0aWxlIHNpbmNl
IHRoZSBvdGhlciB0aWxlIHdhcyBpbnZhbGlkYXRlZCBidXQgbm90IHBhaW50ZWQuCisgICAgRVhQ
RUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOworICAgIEVYUEVDVF9GQUxTRShs
YXllckltcGwtPmhhc1RpbGVBdCgwLCAxKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlCisK
</data>
<flag name="review"
          id="115224"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>