<?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>94837</bug_id>
          
          <creation_ts>2012-08-23 13:02:29 -0700</creation_ts>
          <short_desc>[BlackBerry] Replace the three different rendering mechanisms for clearing the render queue</short_desc>
          <delta_ts>2012-08-23 14:53:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit BlackBerry</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="Adam Treat">manyoso</reporter>
          <assigned_to name="Adam Treat">manyoso</assigned_to>
          <cc>anilsson</cc>
    
    <cc>mifenton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>703280</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2012-08-23 13:02:29 -0700</bug_when>
    <thetext>Currently, we have three different mechanisms for clearing the render queue. 
The first mechanism is render on idle.  Whenever the webkit thread becomes idle
(read: no more events in its queue) we render the next job in the render queue.
 This is the primary means we use for clearing the render queue.  However, this
mechanism has a flaw, it is such a low priority mechanism that sometimes the
queue grows so fast due to higher priority events adding rects to the queue
that this mechanism can&apos;t possibly keep up.  That is what leads to the second
mechanism: rendering right before a timer is fired when we discover that the
render queue is under pressure and rendering on idle can&apos;t keep up.  However,
there are still degenerate cases where even this mechanism does not allow us to
keep up.  That brings us to the third mechanism: rendering based on a timer
that is a catch-all.

The second and third mechanisms lead to very large render jobs as they try and
clear the queue faster when it comes under pressure.  These very large render
jobs end up keeping the webkit thread busy with a message that can take large
fractions of a second to resolve.

These three mechanisms were put in place when the backingstore had a different
overall design that was not truly asynchronous.  This patch replaces these
three mechanisms with a single one that uses the platform messaging classes to
full purpose - a uniquely coalescing message that has a higher priority level
than timers making sure the render queue can never come under pressure.

See: PR 197738 internally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703297</commentid>
    <comment_count>1</comment_count>
      <attachid>160228</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2012-08-23 13:23:15 -0700</bug_when>
    <thetext>Created attachment 160228
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703416</commentid>
    <comment_count>2</comment_count>
      <attachid>160228</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-23 14:53:15 -0700</bug_when>
    <thetext>Comment on attachment 160228
Fix

Clearing flags on attachment: 160228

Committed r126485: &lt;http://trac.webkit.org/changeset/126485&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703417</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-23 14:53:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160228</attachid>
            <date>2012-08-23 13:23:15 -0700</date>
            <delta_ts>2012-08-23 14:53:13 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>webkit_94837.patch</filename>
            <type>text/plain</type>
            <size>17712</size>
            <attacher name="Adam Treat">manyoso</attacher>
            
              <data encoding="base64">Y29tbWl0IDQ1ZDUwNmFkZjk2Njk3NzhhZDdmMzM2OGI1ZWNlMjllMWJkYWM4MjYKQXV0aG9yOiBB
ZGFtIFRyZWF0IDxhdHJlYXRAcmltLmNvbT4KRGF0ZTogICBUaHUgQXVnIDIzIDE2OjIxOjA5IDIw
MTIgLTA0MDAKCiAgICBbQmxhY2tCZXJyeV0gUmVwbGFjZSB0aGUgdGhyZWUgZGlmZmVyZW50IHJl
bmRlcmluZyBtZWNoYW5pc21zIGZvciBjbGVhcmluZyB0aGUgcmVuZGVyIHF1ZXVlCiAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ4MzcKICAgIAogICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAgICAKICAgIFBSIDE5NzczOAogICAgCiAgICBDdXJyZW50
bHksIHdlIGhhdmUgdGhyZWUgZGlmZmVyZW50IG1lY2hhbmlzbXMgZm9yIGNsZWFyaW5nIHRoZSBy
ZW5kZXIgcXVldWUuCiAgICBUaGUgZmlyc3QgbWVjaGFuaXNtIGlzIHJlbmRlciBvbiBpZGxlLiAg
V2hlbmV2ZXIgdGhlIHdlYmtpdCB0aHJlYWQgYmVjb21lcyBpZGxlCiAgICAocmVhZDogbm8gbW9y
ZSBldmVudHMgaW4gaXRzIHF1ZXVlKSB3ZSByZW5kZXIgdGhlIG5leHQgam9iIGluIHRoZSByZW5k
ZXIgcXVldWUuCiAgICAgVGhpcyBpcyB0aGUgcHJpbWFyeSBtZWFucyB3ZSB1c2UgZm9yIGNsZWFy
aW5nIHRoZSByZW5kZXIgcXVldWUuICBIb3dldmVyLCB0aGlzCiAgICBtZWNoYW5pc20gaGFzIGEg
ZmxhdywgaXQgaXMgc3VjaCBhIGxvdyBwcmlvcml0eSBtZWNoYW5pc20gdGhhdCBzb21ldGltZXMg
dGhlCiAgICBxdWV1ZSBncm93cyBzbyBmYXN0IGR1ZSB0byBoaWdoZXIgcHJpb3JpdHkgZXZlbnRz
IGFkZGluZyByZWN0cyB0byB0aGUgcXVldWUKICAgIHRoYXQgdGhpcyBtZWNoYW5pc20gY2FuJ3Qg
cG9zc2libHkga2VlcCB1cC4gIFRoYXQgaXMgd2hhdCBsZWFkcyB0byB0aGUgc2Vjb25kCiAgICBt
ZWNoYW5pc206IHJlbmRlcmluZyByaWdodCBiZWZvcmUgYSB0aW1lciBpcyBmaXJlZCB3aGVuIHdl
IGRpc2NvdmVyIHRoYXQgdGhlCiAgICByZW5kZXIgcXVldWUgaXMgdW5kZXIgcHJlc3N1cmUgYW5k
IHJlbmRlcmluZyBvbiBpZGxlIGNhbid0IGtlZXAgdXAuICBIb3dldmVyLAogICAgdGhlcmUgYXJl
IHN0aWxsIGRlZ2VuZXJhdGUgY2FzZXMgd2hlcmUgZXZlbiB0aGlzIG1lY2hhbmlzbSBkb2VzIG5v
dCBhbGxvdyB1cyB0bwogICAga2VlcCB1cC4gIFRoYXQgYnJpbmdzIHVzIHRvIHRoZSB0aGlyZCBt
ZWNoYW5pc206IHJlbmRlcmluZyBiYXNlZCBvbiBhIHRpbWVyCiAgICB0aGF0IGlzIGEgY2F0Y2gt
YWxsLgogICAgCiAgICBUaGUgc2Vjb25kIGFuZCB0aGlyZCBtZWNoYW5pc21zIGxlYWQgdG8gdmVy
eSBsYXJnZSByZW5kZXIgam9icyBhcyB0aGV5IHRyeSBhbmQKICAgIGNsZWFyIHRoZSBxdWV1ZSBm
YXN0ZXIgd2hlbiBpdCBjb21lcyB1bmRlciBwcmVzc3VyZS4gIFRoZXNlIHZlcnkgbGFyZ2UgcmVu
ZGVyCiAgICBqb2JzIGVuZCB1cCBrZWVwaW5nIHRoZSB3ZWJraXQgdGhyZWFkIGJ1c3kgd2l0aCBh
IG1lc3NhZ2UgdGhhdCBjYW4gdGFrZSBsYXJnZQogICAgZnJhY3Rpb25zIG9mIGEgc2Vjb25kIHRv
IHJlc29sdmUuCiAgICAKICAgIFRoZXNlIHRocmVlIG1lY2hhbmlzbXMgd2VyZSBwdXQgaW4gcGxh
Y2Ugd2hlbiB0aGUgYmFja2luZ3N0b3JlIGhhZCBhIGRpZmZlcmVudAogICAgb3ZlcmFsbCBkZXNp
Z24gdGhhdCB3YXMgbm90IHRydWx5IGFzeW5jaHJvbm91cy4gIFRoaXMgcGF0Y2ggcmVwbGFjZXMg
dGhlc2UKICAgIHRocmVlIG1lY2hhbmlzbXMgd2l0aCBhIHNpbmdsZSBvbmUgdGhhdCB1c2VzIHRo
ZSBwbGF0Zm9ybSBtZXNzYWdpbmcgY2xhc3NlcyB0bwogICAgZnVsbCBwdXJwb3NlIC0gYSB1bmlx
dWVseSBjb2FsZXNjaW5nIG1lc3NhZ2UgdGhhdCBoYXMgYSBoaWdoZXIgcHJpb3JpdHkgbGV2ZWwK
ICAgIHRoYW4gdGltZXJzIG1ha2luZyBzdXJlIHRoZSByZW5kZXIgcXVldWUgY2FuIG5ldmVyIGNv
bWUgdW5kZXIgcHJlc3N1cmUuCiAgICAKICAgICogQXBpL0JhY2tpbmdTdG9yZS5jcHA6CiAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpCYWNraW5nU3RvcmVQcml2
YXRlKToKICAgIChXZWJLaXQpOgogICAgKFJlbmRlckpvYk1lc3NhZ2UpOgogICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6UmVuZGVySm9iTWVzc2FnZTo6UmVuZGVySm9iTWVzc2FnZSk6CiAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpkaXNwYXRjaFJlbmRlckpvYik6
CiAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJKb2Ip
OgogICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlOjpibGl0Q29udGVudHMpOgog
ICAgKiBBcGkvQmFja2luZ1N0b3JlLmg6CiAgICAqIEFwaS9CYWNraW5nU3RvcmVfcC5oOgogICAg
KEJhY2tpbmdTdG9yZVByaXZhdGUpOgogICAgKiBBcGkvV2ViUGFnZS5jcHA6CiAgICAqIEFwaS9X
ZWJQYWdlLmg6CiAgICAqIFdlYktpdFN1cHBvcnQvUmVuZGVyUXVldWUuY3BwOgogICAgKEJsYWNr
QmVycnk6OldlYktpdDo6UmVuZGVyUXVldWU6OnJlc2V0KToKICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OlJlbmRlclF1ZXVlOjphZGRUb1JlZ3VsYXJRdWV1ZSk6CiAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpSZW5kZXJRdWV1ZTo6YWRkVG9TY3JvbGxab29tUXVldWUpOgogICAgKEJsYWNrQmVycnk6
OldlYktpdDo6UmVuZGVyUXVldWU6OmNsZWFyKToKICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlJl
bmRlclF1ZXVlOjpjbGVhclZpc2libGVab29tKToKICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlJl
bmRlclF1ZXVlOjpyZW5kZXIpOgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFj
a2luZ1N0b3JlLmNwcAppbmRleCA4Nzg2NjUwLi5iODZjYzVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCkBAIC03NSw3ICs3NSw2IEBAIHVzaW5n
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRTaXplOwogbmFtZXNwYWNlIEJsYWNrQmVycnkgewog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNvbnN0IGludCBzX3JlbmRlclRpbWVyVGltZW91dCA9IDEu
MDsKIFdlYlBhZ2UqIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNfY3VycmVudEJhY2tpbmdTdG9yZU93
bmVyID0gMDsKIAogdHlwZWRlZiBzdGQ6OnBhaXI8aW50LCBpbnQ+IERpdmlzb3I7CkBAIC0yMTcs
OCArMjE2LDYgQEAgQmFja2luZ1N0b3JlUHJpdmF0ZTo6QmFja2luZ1N0b3JlUHJpdmF0ZSgpCiAg
ICAgbV9mcm9udFN0YXRlID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4obmV3IEJhY2tpbmdT
dG9yZUdlb21ldHJ5KTsKICAgICBtX2JhY2tTdGF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWdu
ZWQ+KG5ldyBCYWNraW5nU3RvcmVHZW9tZXRyeSk7CiAKLSAgICBtX3JlbmRlclRpbWVyID0gYWRv
cHRQdHIobmV3IFRpbWVyPEJhY2tpbmdTdG9yZVByaXZhdGU+KHRoaXMsICZCYWNraW5nU3RvcmVQ
cml2YXRlOjpyZW5kZXJPblRpbWVyKSk7Ci0KICAgICAvLyBOZWVkIGEgcmVjdXJzaXZlIG11dGV4
IHRvIGFjaGlldmUgYSBnbG9iYWwgbG9jay4KICAgICBwdGhyZWFkX211dGV4YXR0cl90IGF0dHI7
CiAgICAgcHRocmVhZF9tdXRleGF0dHJfaW5pdCgmYXR0cik7CkBAIC01MDAsNjIgKzQ5NywyNyBA
QCBib29sIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNob3VsZFBlcmZvcm1SZWd1bGFyUmVuZGVySm9i
cygpIGNvbnN0CiAgICAgcmV0dXJuIHNob3VsZFBlcmZvcm1SZW5kZXJKb2JzKCkgJiYgIW1fc3Vz
cGVuZFJlZ3VsYXJSZW5kZXJKb2JzOwogfQogCi12b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnN0
YXJ0UmVuZGVyVGltZXIoKQotewotICAgIC8vIENhbGxlZCB3aGVuIHJlbmRlciBxdWV1ZSBoYXMg
YSBuZXcgam9iIGFkZGVkLgotICAgIGlmIChtX3JlbmRlclRpbWVyLT5pc0FjdGl2ZSgpIHx8IG1f
cmVuZGVyUXVldWUtPmlzRW1wdHkoIW1fc3VzcGVuZFJlZ3VsYXJSZW5kZXJKb2JzKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0jaWYgREVCVUdfQkFDS0lOR1NUT1JFCi0gICAgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OmxvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIkJhY2tp
bmdTdG9yZVByaXZhdGU6OnN0YXJ0UmVuZGVyVGltZXIgdGltZT0lZiIsIFdURjo6Y3VycmVudFRp
bWUoKSk7Ci0jZW5kaWYKLSAgICBtX3JlbmRlclRpbWVyLT5zdGFydE9uZVNob3Qoc19yZW5kZXJU
aW1lclRpbWVvdXQpOwotfQotCi12b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnN0b3BSZW5kZXJU
aW1lcigpCitzdGF0aWMgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06Ok1lc3NhZ2U6OlR5cGUg
UmVuZGVySm9iTWVzc2FnZVR5cGUgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TWVzc2FnZTo6Z2Vu
ZXJhdGVVbmlxdWVNZXNzYWdlVHlwZSgpOworY2xhc3MgUmVuZGVySm9iTWVzc2FnZSA6IHB1Ymxp
YyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6RXhlY3V0YWJsZU1lc3NhZ2UKIHsKLSAgICBpZiAoIW1f
cmVuZGVyVGltZXItPmlzQWN0aXZlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIENhbGxl
ZCB3aGVuIHdlIHJlbmRlciBzb21ldGhpbmcgdG8gcmVzdGFydC4KLSNpZiBERUJVR19CQUNLSU5H
U1RPUkUKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nKEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpMb2dMZXZlbENyaXRpY2FsLCAiQmFja2luZ1N0b3JlUHJpdmF0ZTo6c3RvcFJlbmRlclRpbWVy
IHRpbWU9JWYiLCBXVEY6OmN1cnJlbnRUaW1lKCkpOwotI2VuZGlmCi0gICAgbV9yZW5kZXJUaW1l
ci0+c3RvcCgpOwotfQorcHVibGljOgorICAgIFJlbmRlckpvYk1lc3NhZ2UoQmxhY2tCZXJyeTo6
UGxhdGZvcm06Ok1lc3NhZ2VEZWxlZ2F0ZSogZGVsZWdhdGUpCisgICAgICAgIDogQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkV4ZWN1dGFibGVNZXNzYWdlKGRlbGVnYXRlLCBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6RXhlY3V0YWJsZU1lc3NhZ2U6OlVuaXF1ZUNvYWxlc2NpbmcsIFJlbmRlckpvYk1lc3Nh
Z2VUeXBlKQorICAgIHsgfQorfTsKIAotdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJP
blRpbWVyKFdlYkNvcmU6OlRpbWVyPEJhY2tpbmdTdG9yZVByaXZhdGU+KikKK3ZvaWQgQmFja2lu
Z1N0b3JlUHJpdmF0ZTo6ZGlzcGF0Y2hSZW5kZXJKb2IoKQogewotICAgIC8vIFRoaXMgdGltZXIg
aXMgYSB0aGlyZCBtZXRob2Qgb2Ygc3RhcnRpbmcgYSByZW5kZXIgb3BlcmF0aW9uIHRoYXQgaXMg
YSBjYXRjaC1hbGwuIElmIG1vcmUKLSAgICAvLyB0aGFuIHNfcmVuZGVyVGltZXJUaW1lb3V0IGVs
YXBzZXMgd2l0aCBubyByZW5kZXJpbmcgdGFraW5nIHBsYWNlIGFuZCByZW5kZXIgam9icyBpbiB0
aGUgcXVldWUsIHRoZW4KLSAgICAvLyByZW5kZXJPblRpbWVyIHdpbGwgYmUgY2FsbGVkIHdoaWNo
IHdpbGwgYWN0dWFsbHkgcmVuZGVyLgotICAgIGlmICghc2hvdWxkUGVyZm9ybVJlbmRlckpvYnMo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYgREVCVUdfQkFDS0lOR1NUT1JFCi0gICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OmxvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNh
bCwgIkJhY2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlck9uVGltZXIgdGltZT0lZiIsIFdURjo6Y3Vy
cmVudFRpbWUoKSk7Ci0jZW5kaWYKLSAgICB3aGlsZSAobV9yZW5kZXJRdWV1ZS0+aGFzQ3VycmVu
dFZpc2libGVab29tSm9iKCkgfHwgbV9yZW5kZXJRdWV1ZS0+aGFzQ3VycmVudFZpc2libGVTY3Jv
bGxKb2IoKSkKLSAgICAgICAgbV9yZW5kZXJRdWV1ZS0+cmVuZGVyKCFtX3N1c3BlbmRSZWd1bGFy
UmVuZGVySm9icyk7Ci0KLSAgICBpZiAoc2hvdWxkUGVyZm9ybVJlZ3VsYXJSZW5kZXJKb2JzKCkg
JiYgbV9yZW5kZXJRdWV1ZS0+aGFzQ3VycmVudFJlZ3VsYXJSZW5kZXJKb2IoKSkKLSAgICAgICAg
bV9yZW5kZXJRdWV1ZS0+cmVuZGVyQWxsQ3VycmVudFJlZ3VsYXJSZW5kZXJKb2JzKCk7Ci0KLSNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgZHJhd0xheWVyc09uQ29tbWl0SWZO
ZWVkZWQoKTsKLSNlbmRpZgorICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpNZXNzYWdlRGVsZWdh
dGUqIG1lc3NhZ2VEZWxlZ2F0ZSA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpjcmVhdGVNZXRob2RE
ZWxlZ2F0ZSgmQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVySm9iLCB0aGlzKTsKKyAgICBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaE1l
c3NhZ2UobmV3IFJlbmRlckpvYk1lc3NhZ2UobWVzc2FnZURlbGVnYXRlKSk7CiB9CiAKLXZvaWQg
QmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyT25JZGxlKCkKK3ZvaWQgQmFja2luZ1N0b3JlUHJp
dmF0ZTo6cmVuZGVySm9iKCkKIHsKICAgICBBU1NFUlQoc2hvdWxkUGVyZm9ybVJlbmRlckpvYnMo
KSk7CiAKLSAgICAvLyBMZXQgdGhlIHJlbmRlciBxdWV1ZSBrbm93IHRoYXQgd2UgZW50ZXJlZCBh
IG5ldyBldmVudCBxdWV1ZSBjeWNsZQotICAgIC8vIHNvIGl0IGNhbiBkZXRlcm1pbmUgaWYgaXQg
aXMgdW5kZXIgcHJlc3N1cmUuCi0gICAgbV9yZW5kZXJRdWV1ZS0+ZXZlbnRRdWV1ZUN5Y2xlZCgp
OwotCiAjaWYgREVCVUdfQkFDS0lOR1NUT1JFCi0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Omxv
ZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIkJhY2tpbmdTdG9yZVBy
aXZhdGU6OnJlbmRlck9uSWRsZSIpOworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpsb2dBbHdh
eXMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICJCYWNraW5nU3RvcmVQ
cml2YXRlOjpyZW5kZXJKb2IiKTsKICNlbmRpZgogCiAgICAgbV9yZW5kZXJRdWV1ZS0+cmVuZGVy
KCFtX3N1c3BlbmRSZWd1bGFyUmVuZGVySm9icyk7CkBAIC01NjMsNDEgKzUyNSw5IEBAIHZvaWQg
QmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyT25JZGxlKCkKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgZHJhd0xheWVyc09uQ29tbWl0SWZOZWVkZWQoKTsKICNlbmRpZgot
fQotCi1ib29sIEJhY2tpbmdTdG9yZVByaXZhdGU6OndpbGxGaXJlVGltZXIoKQotewotICAgIC8v
IExldCB0aGUgcmVuZGVyIHF1ZXVlIGtub3cgdGhhdCB3ZSBlbnRlcmVkIGEgbmV3IGV2ZW50IHF1
ZXVlIGN5Y2xlCi0gICAgLy8gc28gaXQgY2FuIGRldGVybWluZSBpZiBpdCBpcyB1bmRlciBwcmVz
c3VyZS4KLSAgICBtX3JlbmRlclF1ZXVlLT5ldmVudFF1ZXVlQ3ljbGVkKCk7Ci0KLSAgICBpZiAo
IXNob3VsZFBlcmZvcm1SZWd1bGFyUmVuZGVySm9icygpIHx8ICFtX3JlbmRlclF1ZXVlLT5oYXND
dXJyZW50UmVndWxhclJlbmRlckpvYigpIHx8ICFtX3JlbmRlclF1ZXVlLT5jdXJyZW50UmVndWxh
clJlbmRlckpvYkJhdGNoVW5kZXJQcmVzc3VyZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
I2lmIERFQlVHX0JBQ0tJTkdTVE9SRQotICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpsb2coQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICJCYWNraW5nU3RvcmVQcml2YXRl
Ojp3aWxsRmlyZVRpbWVyIik7Ci0jZW5kaWYKLQotICAgIC8vIFdlJ3ZlIGRldGVjdGVkIHRoYXQg
dGhlIHJlZ3VsYXIgcmVuZGVyIGpvYnMgYXJlIGNvbWluZyB1bmRlciBwcmVzc3VyZSBsaWtlbHkK
LSAgICAvLyBkdWUgdG8gdGltZXJzIGZpcmluZyBwcm9kdWNpbmcgaW52YWxpZGF0aW9uIGpvYnMg
YW5kIG91ciBlZmZvcnRzIHRvIGJyZWFrIHRoZW0KLSAgICAvLyB1cCBpbnRvIGJpdGUgc2l6ZSBw
aWVjZXMgaGFzIHByb2R1Y2VkIGEgc2l0dWF0aW9uIHdoZXJlIHdlIGNhbiBub3QgY29tcGxldGUK
LSAgICAvLyBhIGJhdGNoIG9mIHRoZW0gYmVmb3JlIHJlY2VpdmluZyBtb3JlIHRoYXQgaW50ZXJz
ZWN0IHRoZW0gd2hpY2ggY2F1c2VzIHVzCi0gICAgLy8gdG8gc3RhcnQgdGhlIGJhdGNoIG92ZXIu
IFRvIG1pdGlnYXRlIHRoaXMgd2UgaGF2ZSB0byBlbXB0eSB0aGUgY3VycmVudCBiYXRjaAotICAg
IC8vIHdoZW4gdGhpcyBpcyBkZXRlY3RlZC4KLQotICAgIC8vIFdlIHN0aWxsIHdhbnQgdG8gcGVy
Zm9ybSBwcmlvcml0eSBqb2JzIGZpcnN0IHRvIGF2b2lkIHJlZHVuZGFudCBwYWludHMuCi0gICAg
d2hpbGUgKG1fcmVuZGVyUXVldWUtPmhhc0N1cnJlbnRWaXNpYmxlWm9vbUpvYigpIHx8IG1fcmVu
ZGVyUXVldWUtPmhhc0N1cnJlbnRWaXNpYmxlU2Nyb2xsSm9iKCkpCi0gICAgICAgIG1fcmVuZGVy
UXVldWUtPnJlbmRlcighbV9zdXNwZW5kUmVndWxhclJlbmRlckpvYnMpOwotCi0gICAgaWYgKG1f
cmVuZGVyUXVldWUtPmhhc0N1cnJlbnRSZWd1bGFyUmVuZGVySm9iKCkpCi0gICAgICAgIG1fcmVu
ZGVyUXVldWUtPnJlbmRlckFsbEN1cnJlbnRSZWd1bGFyUmVuZGVySm9icygpOwogCi0jaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGRyYXdMYXllcnNPbkNvbW1pdElmTmVlZGVk
KCk7Ci0jZW5kaWYKLQotICAgIC8vIExldCB0aGUgY2FsbGVyIHlpZWxkIGFuZCByZXNjaGVkdWxl
IHRoZSB0aW1lci4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHNob3VsZFBlcmZvcm1SZW5k
ZXJKb2JzKCkpCisgICAgICAgIGRpc3BhdGNoUmVuZGVySm9iKCk7CiB9CiAKIFBsYXRmb3JtOjpJ
bnRSZWN0IEJhY2tpbmdTdG9yZVByaXZhdGU6OmV4cGFuZGVkQ29udGVudHNSZWN0KCkgY29uc3QK
QEAgLTI3OTAsMTYgKzI3MjAsNiBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6cmVwYWludChpbnQgeCwg
aW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwKICAgICBkLT5yZXBhaW50KFBsYXRmb3JtOjpJ
bnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpLCBjb250ZW50Q2hhbmdlZCwgaW1tZWRpYXRlKTsK
IH0KIAotYm9vbCBCYWNraW5nU3RvcmU6Omhhc1JlbmRlckpvYnMoKSBjb25zdAotewotICAgIHJl
dHVybiBkLT5zaG91bGRQZXJmb3JtUmVuZGVySm9icygpOwotfQotCi12b2lkIEJhY2tpbmdTdG9y
ZTo6cmVuZGVyT25JZGxlKCkKLXsKLSAgICBkLT5yZW5kZXJPbklkbGUoKTsKLX0KLQogYm9vbCBC
YWNraW5nU3RvcmU6OmlzRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSBjb25zdAogewogICAgIEJh
Y2tpbmdTdG9yZU11dGV4TG9ja2VyIGxvY2tlcihkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL0JhY2tpbmdTdG9yZS5oCmluZGV4IDZhYzljMzguLmMzMTg1ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuaApAQCAtNjMsOSArNjMsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBibGl0Q29udGVudHMoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkludFJlY3QmIGRzdFJlY3QsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRSZWN0JiBj
b250ZW50cyk7CiAgICAgdm9pZCByZXBhaW50KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0LCBib29sIGNvbnRlbnRDaGFuZ2VkLCBib29sIGltbWVkaWF0ZSk7CiAKLSAgICBib29s
IGhhc1JlbmRlckpvYnMoKSBjb25zdDsKLSAgICB2b2lkIHJlbmRlck9uSWRsZSgpOwotCiAgICAg
Ly8gSW4gdGhlIGRlZmVycyBibGl0IG1vZGUsIGFueSBibGl0IHJlcXVlc3RzIHdpbGwganVzdCBy
ZXR1cm4gZWFybHksIGFuZAogICAgIC8vIGEgYmxpdCBqb2Igd2lsbCBiZSBxdWV1ZWQgdGhhdCBp
cyBleGVjdXRlZCBieSBjYWxsaW5nIGJsaXRPbklkbGUoKS4KICAgICBib29sIGRlZmVyc0JsaXQo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2lu
Z1N0b3JlX3AuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3Au
aAppbmRleCBkZmE4OWQ4Li4xMDIzZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL0JhY2tpbmdTdG9yZV9wLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9CYWNraW5nU3RvcmVfcC5oCkBAIC0xMzEsMTEgKzEzMSw4IEBAIHB1YmxpYzoKICAgICBi
b29sIHNob3VsZFN1cHByZXNzTm9uVmlzaWJsZVJlZ3VsYXJSZW5kZXJKb2JzKCkgY29uc3Q7CiAg
ICAgYm9vbCBzaG91bGRQZXJmb3JtUmVuZGVySm9icygpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxk
UGVyZm9ybVJlZ3VsYXJSZW5kZXJKb2JzKCkgY29uc3Q7Ci0gICAgdm9pZCBzdGFydFJlbmRlclRp
bWVyKCk7Ci0gICAgdm9pZCBzdG9wUmVuZGVyVGltZXIoKTsKLSAgICB2b2lkIHJlbmRlck9uVGlt
ZXIoV2ViQ29yZTo6VGltZXI8QmFja2luZ1N0b3JlUHJpdmF0ZT4qKTsKLSAgICB2b2lkIHJlbmRl
ck9uSWRsZSgpOwotICAgIGJvb2wgd2lsbEZpcmVUaW1lcigpOworICAgIHZvaWQgZGlzcGF0Y2hS
ZW5kZXJKb2IoKTsKKyAgICB2b2lkIHJlbmRlckpvYigpOwogCiAgICAgLy8gU2V0IG9mIGhlbHBl
ciBtZXRob2RzIGZvciB0aGUgc2Nyb2xsQmFja2luZ1N0b3JlKCkgbWV0aG9kLgogICAgIFBsYXRm
b3JtOjpJbnRSZWN0IGNvbnRlbnRzUmVjdCgpIGNvbnN0OwpAQCAtMzYzLDkgKzM2MCw2IEBAIHB1
YmxpYzoKIAogICAgIFBsYXRmb3JtOjpJbnRSZWN0IG1fdmlzaWJsZVRpbGVCdWZmZXJSZWN0Owog
Ci0gICAgLy8gTGFzdCByZXNvcnQgdGltZXIgZm9yIHJlbmRlcmluZy4KLSAgICBPd25QdHI8V2Vi
Q29yZTo6VGltZXI8QmFja2luZ1N0b3JlUHJpdmF0ZT4gPiBtX3JlbmRlclRpbWVyOwotCiAgICAg
cHRocmVhZF9tdXRleF90IG1fbXV0ZXg7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAppbmRleCBkZjVmOTg3
Li4zNjg0NjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAg
LTUzMzcsMTQgKzUzMzcsNiBAQCBib29sIFdlYlBhZ2U6OmRlZmVyc0xvYWRpbmcoKSBjb25zdAog
ICAgIHJldHVybiBkLT5tX3BhZ2UtPmRlZmVyc0xvYWRpbmcoKTsKIH0KIAotYm9vbCBXZWJQYWdl
Ojp3aWxsRmlyZVRpbWVyKCkKLXsKLSAgICBpZiAoZC0+aXNMb2FkaW5nKCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGQtPm1fYmFja2luZ1N0b3JlLT5kLT53aWxsRmlyZVRp
bWVyKCk7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6bm90aWZ5UGFnZVBhdXNlKCkKIHsKICAgICBGT1Jf
RUFDSF9QTFVHSU5WSUVXKGQtPm1fcGx1Z2luVmlld3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvV2ViUGFnZS5oCmluZGV4IDMwYTJkOGQuLjJkMWUyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvV2ViUGFnZS5oCkBAIC0zMjIsOCArMzIyLDYgQEAgcHVibGljOgogCiAgICAgYm9v
bCBkZWZlcnNMb2FkaW5nKCkgY29uc3Q7CiAKLSAgICBib29sIHdpbGxGaXJlVGltZXIoKTsKLQog
ICAgIGJvb2wgaXNFbmFibGVMb2NhbEFjY2Vzc1RvQWxsQ29va2llcygpIGNvbnN0OwogICAgIHZv
aWQgc2V0RW5hYmxlTG9jYWxBY2Nlc3NUb0FsbENvb2tpZXMoYm9vbCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCmluZGV4IGU3NTIyNzEuLjBjMjcyNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA4LTIzICBBZGFtIFRyZWF0ICA8
YXRyZWF0QHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFJlcGxhY2UgdGhlIHRocmVl
IGRpZmZlcmVudCByZW5kZXJpbmcgbWVjaGFuaXNtcyBmb3IgY2xlYXJpbmcgdGhlIHJlbmRlciBx
dWV1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ4
MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQUiAx
OTc3MzgKKworICAgICAgICBDdXJyZW50bHksIHdlIGhhdmUgdGhyZWUgZGlmZmVyZW50IG1lY2hh
bmlzbXMgZm9yIGNsZWFyaW5nIHRoZSByZW5kZXIgcXVldWUuCisgICAgICAgIFRoZSBmaXJzdCBt
ZWNoYW5pc20gaXMgcmVuZGVyIG9uIGlkbGUuICBXaGVuZXZlciB0aGUgd2Via2l0IHRocmVhZCBi
ZWNvbWVzIGlkbGUKKyAgICAgICAgKHJlYWQ6IG5vIG1vcmUgZXZlbnRzIGluIGl0cyBxdWV1ZSkg
d2UgcmVuZGVyIHRoZSBuZXh0IGpvYiBpbiB0aGUgcmVuZGVyIHF1ZXVlLgorICAgICAgICAgVGhp
cyBpcyB0aGUgcHJpbWFyeSBtZWFucyB3ZSB1c2UgZm9yIGNsZWFyaW5nIHRoZSByZW5kZXIgcXVl
dWUuICBIb3dldmVyLCB0aGlzCisgICAgICAgIG1lY2hhbmlzbSBoYXMgYSBmbGF3LCBpdCBpcyBz
dWNoIGEgbG93IHByaW9yaXR5IG1lY2hhbmlzbSB0aGF0IHNvbWV0aW1lcyB0aGUKKyAgICAgICAg
cXVldWUgZ3Jvd3Mgc28gZmFzdCBkdWUgdG8gaGlnaGVyIHByaW9yaXR5IGV2ZW50cyBhZGRpbmcg
cmVjdHMgdG8gdGhlIHF1ZXVlCisgICAgICAgIHRoYXQgdGhpcyBtZWNoYW5pc20gY2FuJ3QgcG9z
c2libHkga2VlcCB1cC4gIFRoYXQgaXMgd2hhdCBsZWFkcyB0byB0aGUgc2Vjb25kCisgICAgICAg
IG1lY2hhbmlzbTogcmVuZGVyaW5nIHJpZ2h0IGJlZm9yZSBhIHRpbWVyIGlzIGZpcmVkIHdoZW4g
d2UgZGlzY292ZXIgdGhhdCB0aGUKKyAgICAgICAgcmVuZGVyIHF1ZXVlIGlzIHVuZGVyIHByZXNz
dXJlIGFuZCByZW5kZXJpbmcgb24gaWRsZSBjYW4ndCBrZWVwIHVwLiAgSG93ZXZlciwKKyAgICAg
ICAgdGhlcmUgYXJlIHN0aWxsIGRlZ2VuZXJhdGUgY2FzZXMgd2hlcmUgZXZlbiB0aGlzIG1lY2hh
bmlzbSBkb2VzIG5vdCBhbGxvdyB1cyB0bworICAgICAgICBrZWVwIHVwLiAgVGhhdCBicmluZ3Mg
dXMgdG8gdGhlIHRoaXJkIG1lY2hhbmlzbTogcmVuZGVyaW5nIGJhc2VkIG9uIGEgdGltZXIKKyAg
ICAgICAgdGhhdCBpcyBhIGNhdGNoLWFsbC4KKworICAgICAgICBUaGUgc2Vjb25kIGFuZCB0aGly
ZCBtZWNoYW5pc21zIGxlYWQgdG8gdmVyeSBsYXJnZSByZW5kZXIgam9icyBhcyB0aGV5IHRyeSBh
bmQKKyAgICAgICAgY2xlYXIgdGhlIHF1ZXVlIGZhc3RlciB3aGVuIGl0IGNvbWVzIHVuZGVyIHBy
ZXNzdXJlLiAgVGhlc2UgdmVyeSBsYXJnZSByZW5kZXIKKyAgICAgICAgam9icyBlbmQgdXAga2Vl
cGluZyB0aGUgd2Via2l0IHRocmVhZCBidXN5IHdpdGggYSBtZXNzYWdlIHRoYXQgY2FuIHRha2Ug
bGFyZ2UKKyAgICAgICAgZnJhY3Rpb25zIG9mIGEgc2Vjb25kIHRvIHJlc29sdmUuCisKKyAgICAg
ICAgVGhlc2UgdGhyZWUgbWVjaGFuaXNtcyB3ZXJlIHB1dCBpbiBwbGFjZSB3aGVuIHRoZSBiYWNr
aW5nc3RvcmUgaGFkIGEgZGlmZmVyZW50CisgICAgICAgIG92ZXJhbGwgZGVzaWduIHRoYXQgd2Fz
IG5vdCB0cnVseSBhc3luY2hyb25vdXMuICBUaGlzIHBhdGNoIHJlcGxhY2VzIHRoZXNlCisgICAg
ICAgIHRocmVlIG1lY2hhbmlzbXMgd2l0aCBhIHNpbmdsZSBvbmUgdGhhdCB1c2VzIHRoZSBwbGF0
Zm9ybSBtZXNzYWdpbmcgY2xhc3NlcyB0bworICAgICAgICBmdWxsIHB1cnBvc2UgLSBhIHVuaXF1
ZWx5IGNvYWxlc2NpbmcgbWVzc2FnZSB0aGF0IGhhcyBhIGhpZ2hlciBwcmlvcml0eSBsZXZlbAor
ICAgICAgICB0aGFuIHRpbWVycyBtYWtpbmcgc3VyZSB0aGUgcmVuZGVyIHF1ZXVlIGNhbiBuZXZl
ciBjb21lIHVuZGVyIHByZXNzdXJlLgorCisgICAgICAgICogQXBpL0JhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OkJhY2tp
bmdTdG9yZVByaXZhdGUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFJlbmRlckpvYk1l
c3NhZ2UpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpSZW5kZXJKb2JNZXNzYWdlOjpS
ZW5kZXJKb2JNZXNzYWdlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0
b3JlUHJpdmF0ZTo6ZGlzcGF0Y2hSZW5kZXJKb2IpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJKb2IpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpCYWNraW5nU3RvcmU6OmJsaXRDb250ZW50cyk6CisgICAgICAgICogQXBpL0Jh
Y2tpbmdTdG9yZS5oOgorICAgICAgICAqIEFwaS9CYWNraW5nU3RvcmVfcC5oOgorICAgICAgICAo
QmFja2luZ1N0b3JlUHJpdmF0ZSk6CisgICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAqIEFwaS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9SZW5kZXJRdWV1ZS5j
cHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlJlbmRlclF1ZXVlOjpyZXNldCk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlJlbmRlclF1ZXVlOjphZGRUb1JlZ3VsYXJRdWV1
ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlJlbmRlclF1ZXVlOjphZGRUb1Njcm9s
bFpvb21RdWV1ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlJlbmRlclF1ZXVlOjpj
bGVhcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlJlbmRlclF1ZXVlOjpjbGVhclZp
c2libGVab29tKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6UmVuZGVyUXVldWU6OnJl
bmRlcik6CisKIDIwMTItMDgtMjAgIFNlYW4gV2FuZyAgPFh1ZXdlbi5XYW5nQHRvcmNobW9iaWxl
LmNvbS5jbj4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gU2VsZWN0IHBvcHVwIHNob3dzIGJsYW5r
IGNvbnRlbnQgd2hlbiBpdHMgb3B0aW9uIHRhZ3MgY29udGFpbiAnXCcgY2hhcmFjdGVycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvUmVuZGVyUXVl
dWUuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvUmVuZGVyUXVl
dWUuY3BwCmluZGV4IDFmMzIwYjkuLjBkZDVjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1JlbmRlclF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9SZW5kZXJRdWV1ZS5jcHAKQEAgLTIzMSw3ICsy
MzEsNiBAQCB2b2lkIFJlbmRlclF1ZXVlOjpyZXNldCgpCiAgICAgbV9jdXJyZW50UmVndWxhclJl
bmRlckpvYnNCYXRjaC5jbGVhcigpOwogICAgIG1fY3VycmVudFJlZ3VsYXJSZW5kZXJKb2JzQmF0
Y2hSZWdpb24gPSBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbigpOwogICAgIG1fcmVndWxhclJlbmRl
ckpvYnNOb3RSZW5kZXJlZFJlZ2lvbiA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uKCk7Ci0gICAg
bV9wYXJlbnQtPnN0b3BSZW5kZXJUaW1lcigpOwogICAgIEFTU0VSVChpc0VtcHR5KCkpOwogfQog
CkBAIC0zNzYsNyArMzc1LDcgQEAgdm9pZCBSZW5kZXJRdWV1ZTo6YWRkVG9SZWd1bGFyUXVldWUo
Y29uc3QgUGxhdGZvcm06OkludFJlY3QmIHJlY3QpCiAgICAgICAgIG1fcmVndWxhclJlbmRlckpv
YnNSZWdpb24gPSBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbjo6dW5pb25SZWdpb25zKG1fcmVndWxh
clJlbmRlckpvYnNSZWdpb24sIHJlY3QpOwogCiAgICAgaWYgKCFpc0VtcHR5KCkpCi0gICAgICAg
IG1fcGFyZW50LT5zdGFydFJlbmRlclRpbWVyKCk7IC8vIFN0YXJ0IHRoZSByZW5kZXIgdGltZXIg
c2luY2Ugd2UgY291bGQgaGF2ZSBzb21lIHN0YWxlIGNvbnRlbnQgaGVyZS4uLgorICAgICAgICBt
X3BhcmVudC0+ZGlzcGF0Y2hSZW5kZXJKb2IoKTsKIH0KIAogdm9pZCBSZW5kZXJRdWV1ZTo6YWRk
VG9TY3JvbGxab29tUXVldWUoY29uc3QgUmVuZGVyUmVjdCYgcmVjdCwgUmVuZGVyUmVjdExpc3Qq
IHJlY3RMaXN0KQpAQCAtMzkxLDcgKzM5MCw3IEBAIHZvaWQgUmVuZGVyUXVldWU6OmFkZFRvU2Ny
b2xsWm9vbVF1ZXVlKGNvbnN0IFJlbmRlclJlY3QmIHJlY3QsIFJlbmRlclJlY3RMaXN0KiByCiAg
ICAgcmVjdExpc3QtPnB1c2hfYmFjayhyZWN0KTsKIAogICAgIGlmICghaXNFbXB0eSgpKQotICAg
ICAgICBtX3BhcmVudC0+c3RhcnRSZW5kZXJUaW1lcigpOyAvLyBTdGFydCB0aGUgcmVuZGVyIHRp
bWVyIHNpbmNlIHdlIGtub3cgd2UgY291bGQgaGF2ZSBzb21lIGNoZWNrZXJib2FyZCBoZXJlLi4u
CisgICAgICAgIG1fcGFyZW50LT5kaXNwYXRjaFJlbmRlckpvYigpOwogfQogCiB2b2lkIFJlbmRl
clF1ZXVlOjpxdWlja1NvcnQoUmVuZGVyUmVjdExpc3QqIHF1ZXVlKQpAQCAtNTI4LDkgKzUyNyw2
IEBAIHZvaWQgUmVuZGVyUXVldWU6OmNsZWFyKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiByZWN0
LCBib29sIGNsZWFyUmVndWxhclJlbmRlckpvCiAKICAgICBpZiAobV9ub25WaXNpYmxlU2Nyb2xs
Sm9icy5lbXB0eSgpICYmICFtX25vblZpc2libGVTY3JvbGxKb2JzQ29tcGxldGVkLmVtcHR5KCkp
CiAgICAgICAgIG5vblZpc2libGVTY3JvbGxKb2JzQ29tcGxldGVkKCk7Ci0KLSAgICBpZiAoaXNF
bXB0eSgpKQotICAgICAgICAgbV9wYXJlbnQtPnN0b3BSZW5kZXJUaW1lcigpOwogfQogCiB2b2lk
IFJlbmRlclF1ZXVlOjpjbGVhclJlZ3VsYXJSZW5kZXJKb2JzKGNvbnN0IFBsYXRmb3JtOjpJbnRS
ZWN0JiByZWN0KQpAQCAtNTQ5LDggKzU0NSw2IEBAIHZvaWQgUmVuZGVyUXVldWU6OmNsZWFyUmVn
dWxhclJlbmRlckpvYnMoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHJlY3QpCiB2b2lkIFJlbmRl
clF1ZXVlOjpjbGVhclZpc2libGVab29tKCkKIHsKICAgICBtX3Zpc2libGVab29tSm9icy5jbGVh
cigpOwotICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgICBtX3BhcmVudC0+c3RvcFJlbmRlclRp
bWVyKCk7CiB9CiAKIGJvb2wgUmVuZGVyUXVldWU6OnJlZ3VsYXJSZW5kZXJKb2JzUHJldmlvdXNs
eUF0dGVtcHRlZEJ1dE5vdFJlbmRlcmVkKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiByZWN0KQpA
QCAtNTkxLDkgKzU4NSw2IEBAIHZvaWQgUmVuZGVyUXVldWU6OnJlbmRlcihib29sIHNob3VsZFBl
cmZvcm1SZWd1bGFyUmVuZGVySm9icykKICAgICAgICAgICAgIHJlbmRlclJlZ3VsYXJSZW5kZXJK
b2IoKTsKICAgICB9IGVsc2UgaWYgKCFtX25vblZpc2libGVTY3JvbGxKb2JzLmVtcHR5KCkpCiAg
ICAgICAgIHJlbmRlck5vblZpc2libGVTY3JvbGxKb2IoKTsKLQotICAgIGlmIChpc0VtcHR5KCkp
Ci0gICAgICAgIG1fcGFyZW50LT5zdG9wUmVuZGVyVGltZXIoKTsKIH0KIAogdm9pZCBSZW5kZXJR
dWV1ZTo6cmVuZGVyQWxsQ3VycmVudFJlZ3VsYXJSZW5kZXJKb2JzKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>