<?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>145773</bug_id>
          
          <creation_ts>2015-06-08 15:02:46 -0700</creation_ts>
          <short_desc>Allow one sync GC per gcTimer interval on critical memory pressure warning</short_desc>
          <delta_ts>2015-08-20 09:15:14 -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>JavaScriptCore</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1100469</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-08 15:02:46 -0700</bug_when>
    <thetext>On critical memory pressure warning, we currently call GCController::garbageCollectSoon(), which does not offer any guarantee on when the garbage collection will actually take place.
On critical memory pressure, we need to free up memory as soon as possible to avoid getting killed so this is an issue. Also, the fact that we clear the PageCache on critical memory pressure means a GC would likely be useful, even it is did not do much work the last time the gcTimer fired.

As a result, the proposal is to allow one synchronous GC per gcTimer interval on critical memory pressure warning. This makes us more responsive to critical memory pressure and avoids doing synchronous GCs too often.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100562</commentid>
    <comment_count>1</comment_count>
      <attachid>254539</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-08 20:08:45 -0700</bug_when>
    <thetext>Created attachment 254539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100564</commentid>
    <comment_count>2</comment_count>
      <attachid>254541</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-08 20:26:42 -0700</bug_when>
    <thetext>Created attachment 254541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100719</commentid>
    <comment_count>3</comment_count>
      <attachid>254541</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-09 11:28:41 -0700</bug_when>
    <thetext>Comment on attachment 254541
Patch

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

&gt; Source/JavaScriptCore/heap/Heap.cpp:1422
&gt; +        collectAllGarbage();

What is the rationale for not setting m_didSyncGCRecently true here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100726</commentid>
    <comment_count>4</comment_count>
      <attachid>254541</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-09 11:41:32 -0700</bug_when>
    <thetext>Comment on attachment 254541
Patch

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

&gt;&gt; Source/JavaScriptCore/heap/Heap.cpp:1422
&gt;&gt; +        collectAllGarbage();
&gt; 
&gt; What is the rationale for not setting m_didSyncGCRecently true here?

m_didSyncGCRecently is only reset to false when the m_fullActivityCallback timer fires so if this timer is disabled (m_fullActivityCallback is null) it will never be reset to false.
Geoff can correct me but I don&apos;t think this (m_fullActivityCallback being null) normally happens in practice though as I don&apos;t see any call sites to JSDisableGCTimer().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100768</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-06-09 13:13:06 -0700</bug_when>
    <thetext>r=me

Perhaps it would be nice to refactor this to be a feature of the timer, rather than a feature of the Heap object. That would help clarify the behavior in the case where there is not timer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100780</commentid>
    <comment_count>6</comment_count>
      <attachid>254600</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-09 14:05:47 -0700</bug_when>
    <thetext>Created attachment 254600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100781</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-09 14:06:16 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; r=me
&gt; 
&gt; Perhaps it would be nice to refactor this to be a feature of the timer,
&gt; rather than a feature of the Heap object. That would help clarify the
&gt; behavior in the case where there is not timer.

I reuploaded another iteration doing this. Please take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100790</commentid>
    <comment_count>8</comment_count>
      <attachid>254600</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-06-09 14:21:33 -0700</bug_when>
    <thetext>Comment on attachment 254600
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100802</commentid>
    <comment_count>9</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-06-09 14:43:13 -0700</bug_when>
    <thetext>v.nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100814</commentid>
    <comment_count>10</comment_count>
      <attachid>254600</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-09 15:16:09 -0700</bug_when>
    <thetext>Comment on attachment 254600
Patch

Clearing flags on attachment: 254600

Committed r185387: &lt;http://trac.webkit.org/changeset/185387&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100815</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-09 15:16:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119205</commentid>
    <comment_count>12</comment_count>
      <attachid>254600</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-19 23:59:15 -0700</bug_when>
    <thetext>Comment on attachment 254600
Patch

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

&gt; Source/WebCore/bindings/js/GCController.cpp:101
&gt; +#if USE(CF)
&gt; +    JSLockHolder lock(JSDOMWindow::commonVM());
&gt; +    if (!JSDOMWindow::commonVM().heap.isBusy())
&gt; +        JSDOMWindow::commonVM().heap.collectAllGarbageIfNotDoneRecently();
&gt; +#else
&gt; +    garbageCollectSoon();
&gt; +#endif

Why is this different for USE(CF) and not? Heap::collectAllGarbageIfNotDoneRecently appears to be available for all ports so it seems they could both have the same implementation, is there a reason I&apos;m overlooking?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119252</commentid>
    <comment_count>13</comment_count>
      <attachid>254600</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-20 09:15:14 -0700</bug_when>
    <thetext>Comment on attachment 254600
Patch

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

&gt;&gt; Source/WebCore/bindings/js/GCController.cpp:101
&gt;&gt; +#endif
&gt; 
&gt; Why is this different for USE(CF) and not? Heap::collectAllGarbageIfNotDoneRecently appears to be available for all ports so it seems they could both have the same implementation, is there a reason I&apos;m overlooking?

Maybe Heap::collectAllGarbageIfNotDoneRecently() should be behind USE(CF) then.

What we do in Heap::collectAllGarbageIfNotDoneRecently():
if (wasGCdRecenty)
  garbageCollectSoon();
else
  garbageCollectNow();

Note that in Heap::collectAllGarbageIfNotDoneRecently(), we call reportAbandonedObjectGraph() to do the garbageCollectSoon(). However, if you look at the implementation of GCController::garbageCollectSoon(), it looks like:
    // We only use reportAbandonedObjectGraph on systems with CoreFoundation 
    // since it uses a run-loop-based timer that is currently only available on
    // systems with CoreFoundation. If and when the notion of a run loop is pushed 
    // down into WTF so that more platforms can take advantage of it, we will be 
    // able to use reportAbandonedObjectGraph on more platforms.
#if USE(CF)
    JSLockHolder lock(JSDOMWindow::commonVM());
    JSDOMWindow::commonVM().heap.reportAbandonedObjectGraph();
#else
    garbageCollectOnNextRunLoop();
#endif

So to make Heap::collectAllGarbageIfNotDoneRecently() work for !USE(CF), it looks like we would need to use a Timer instead of calling simply reportAbandonedObjectGraph().</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254539</attachid>
            <date>2015-06-08 20:08:45 -0700</date>
            <delta_ts>2015-06-08 20:26:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145773-20150608200819.patch</filename>
            <type>text/plain</type>
            <size>10761</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZDdiMWFlYmI4NzI3ODRiZDc2ZjNhYjUyMzA1NzA2M2MxMTVjNTdkLi4wYTY1YjAxYjAwNjRmZDM2
Mzc2NjM5ZmVhYzczMGZkMWU5MDZmNmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNS0wNi0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEFsbG93IG9uZSBzeW5jIEdDIHBlciBnY1RpbWVyIGludGVydmFsIG9uIGNyaXRp
Y2FsIG1lbW9yeSBwcmVzc3VyZSB3YXJuaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBPbiBjcml0aWNhbCBtZW1vcnkgcHJlc3N1cmUgd2FybmluZywg
d2Ugd2VyZSBjYWxsaW5nIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RTb29uKCksCisgICAg
ICAgIHdoaWNoIGRvZXMgbm90IG9mZmVyIGFueSBndWFyYW50ZWUgb24gd2hlbiB0aGUgZ2FyYmFn
ZSBjb2xsZWN0aW9uIHdpbGwgYWN0dWFsbHkgdGFrZQorICAgICAgICBwbGFjZS4KKworICAgICAg
ICBPbiBjcml0aWNhbCBtZW1vcnkgcHJlc3N1cmUsIHdlIG5lZWQgdG8gZnJlZSB1cCBtZW1vcnkg
YXMgc29vbiBhcyBwb3NzaWJsZSB0byBhdm9pZAorICAgICAgICBnZXR0aW5nIGtpbGxlZCBzbyB0
aGlzIGlzIGFuIGlzc3VlLiBBbHNvLCB0aGUgZmFjdCB0aGF0IHdlIGNsZWFyIHRoZSBQYWdlQ2Fj
aGUgb24KKyAgICAgICAgY3JpdGljYWwgbWVtb3J5IHByZXNzdXJlIG1lYW5zIGEgR0Mgd291bGQg
bGlrZWx5IGJlIHVzZWZ1bCwgZXZlbiBpZiB0aGUgbGFzdAorICAgICAgICBjb2xsZWN0aW9uIGRp
ZCBub3QgZnJlZSBtdWNoIG1lbW9yeS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcg
R0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE5vd0lmTm90RG9uZVJlY2VudGx5KCkgQVBJIHRo
YXQgYWxsb3dzCisgICAgICAgIG9uZSBzeW5jaHJvbm91cyBHQyBwZXIgZ2NUaW1lciBpbnRlcnZh
bCBvbiBjcml0aWNhbCBtZW1vcnkgcHJlc3N1cmUgd2FybmluZy4gVGhpcyBtYWtlcworICAgICAg
ICB1cyBtb3JlIHJlc3BvbnNpdmUgdG8gY3JpdGljYWwgbWVtb3J5IHByZXNzdXJlIGFuZCBhdm9p
ZHMgZG9pbmcgc3luY2hyb25vdXMgR0NzIHRvbworICAgICAgICBvZnRlbi4KKworICAgICAgICAq
IGhlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHA6CisgICAgICAgIChKU0M6OkZ1bGxHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OmRvQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoK
KyAgICAgICAgKEpTQzo6SGVhcDo6ZnVsbEdDQWN0aXZpdHlUaW1lckZpcmVkKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2VJZk5vdERvbmVSZWNlbnRseSk6CisgICAgICAg
ICogaGVhcC9IZWFwLmg6CisKKyAgICAgICAgKiBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHA6
CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6ZnVsbFN3ZWVwKTogRGVsZXRlZC4K
KyAgICAgICAgKiBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oOgorCisgICAgICAgIERyb3AgZnVs
bFN3ZWVwKCkgQVBJIGFzIGl0IG5vIGxvbmdlciBzZWVtcyB1c2VmdWwuIGdhcmJhZ2VDb2xsZWN0
Tm93KCkKKyAgICAgICAgYWxyZWFkeSBkb2VzIGEgc3dlZXAgYWZ0ZXIgdGhlIGZ1bGwgY29sbGVj
dGlvbi4KKwogMjAxNS0wNi0wNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFRoZSB0aW55IHNldCBtYWdpYyBpbiBTdHJ1Y3R1cmVTZXQgc2hvdWxkIGJlIGF2YWls
YWJsZSBpbiBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NjQ1NWJjODcxZTJhOWNiMDBhYWFhMjcwNmVlYTQ2
YzE0ZjRmYTQ3Li44NzczZDU2OTI4NjA5YWM4NjliZGQxMzQ4YTQ2NDM5ODZiMjM2MDk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzAgQEAKIDIwMTUtMDYtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAorICAgICAgICBBbGxvdyBvbmUgc3luYyBHQyBwZXIgZ2NUaW1lciBpbnRl
cnZhbCBvbiBjcml0aWNhbCBtZW1vcnkgcHJlc3N1cmUgd2FybmluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NzczCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE5v
d0lmTm90RG9uZVJlY2VudGx5KToKKworICAgICAgICBBZGQgbmV3IEdDQ29udHJvbGxlcjo6Z2Fy
YmFnZUNvbGxlY3ROb3dJZk5vdERvbmVSZWNlbnRseSgpIEFQSSB0aGF0CisgICAgICAgIGFsbG93
cyBvbmUgc3luY2hyb25vdXMgR0MgcGVyIGZ1bGwgR0MgdGltZXIgaW50ZXJ2YWwuIElmIGNhbGxl
ZCBtb3JlCisgICAgICAgIHRoYW4gb25jZSBwZXIgaW50ZXJ2YWwsIGl0IGJlY29tZXMgZXF1aXZh
bGVudCB0byBnYXJiYWdlQ29sbGVjdFNvb24oKQorICAgICAgICBhbmQgbWVyZWx5IGFjY2VsZXJh
dGVzIHRoZSBuZXh0IGNvbGxlY3Rpb24uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9HQ0NvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlQ3JpdGljYWxN
ZW1vcnkpOgorCisgICAgICAgIENhbGwgdGhlIG5ldyBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xs
ZWN0Tm93SWZOb3REb25lUmVjZW50bHkoKSBvbgorICAgICAgICBjcml0aWNhbCBtZW1vcnkgcHJl
c3N1cmUgaW5zdGVhZCBvZiBnYXJiYWdlQ29sbGVjdGlvblNvb24oKSB0byB0cnkKKyAgICAgICAg
YXMgZG8gYSBzeW5jaHJvbm91cyBHQyBpZiBvbmUgd2Fzbid0IGFscmVhZHkgZG9uZSByZWNlbnRs
eS4KKyAgICAgICAgQWxzbyBkcm9wIGNhbGwgdG8gZnVsbFN3ZWVwKCkgYXMgR0NDb250cm9sbGVy
OjpnYXJiYWdlQ29sbGVjdE5vdyooKQorICAgICAgICBhbHJlYWR5IGRvIGEgc3dlZXAgYWZ0ZXIg
dGhlIGNvbGxlY3Rpb24uCisKKzIwMTUtMDYtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKwogICAgICAgICBBY2Nlc3MgR0NDb250cm9sbGVyIGluc3RhbmNlIHZpYSBHQ0NvbnRy
b2xsZXI6OnNpbmdsZXRvbigpIGluc3RlYWQgb2YgYSBmcmVlIGZ1bmN0aW9uCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU3NzYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcApp
bmRleCA3NmM2NzhkZDZiOTg2ZTI4ODJhMGU2MzFiZmY1OTNkZjk1ZDU4ZTM4Li41MjRiNzVlMjhh
MDdhMGE2Y2ZhMjVmOTBiNzY0MWZlY2ZmMzNiMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcApAQCAtNDMsMTggKzQz
LDE5IEBAIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soSGVh
cCogaGVhcCkKIAogdm9pZCBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQog
ewotICAgIEhlYXAqIGhlYXAgPSAmbV92bS0+aGVhcDsKKyAgICBIZWFwJiBoZWFwID0gbV92bS0+
aGVhcDsKKyAgICBoZWFwLmZ1bGxHQ0FjdGl2aXR5VGltZXJGaXJlZCgpOwogCiAjaWYgIVBMQVRG
T1JNKElPUykKICAgICBkb3VibGUgc3RhcnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKLSAgICBpZiAoaGVhcC0+aXNQYWdlZE91dChzdGFydFRpbWUgKyBwYWdpbmdU
aW1lT3V0KSkgeworICAgIGlmIChoZWFwLmlzUGFnZWRPdXQoc3RhcnRUaW1lICsgcGFnaW5nVGlt
ZU91dCkpIHsKICAgICAgICAgY2FuY2VsKCk7Ci0gICAgICAgIGhlYXAtPmluY3JlYXNlTGFzdEZ1
bGxHQ0xlbmd0aChwYWdpbmdUaW1lT3V0KTsKKyAgICAgICAgaGVhcC5pbmNyZWFzZUxhc3RGdWxs
R0NMZW5ndGgocGFnaW5nVGltZU91dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYK
IAotICAgIGhlYXAtPmNvbGxlY3QoRnVsbENvbGxlY3Rpb24pOworICAgIGhlYXAuY29sbGVjdChG
dWxsQ29sbGVjdGlvbik7CiB9CiAKIGRvdWJsZSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0
R0NMZW5ndGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCAxYzM5MjRmMzRi
NGVhYWIwYjRlMTY0NDRiNDc1NjM1ZDUxMmFmMmYwLi43YzViNzhmOWY4YjJhYTg1MWFiNDU2Mjhk
MTI4ZDVlMWE0NjFmZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMTQw
OCw2ICsxNDA4LDMxIEBAIHZvaWQgSGVhcDo6YWRkQ29tcGlsZWRDb2RlKEV4ZWN1dGFibGVCYXNl
KiBleGVjdXRhYmxlKQogICAgIG1fY29tcGlsZWRDb2RlLmFwcGVuZChleGVjdXRhYmxlKTsKIH0K
IAordm9pZCBIZWFwOjpmdWxsR0NBY3Rpdml0eVRpbWVyRmlyZWQoKQoreworICAgIEFTU0VSVCht
X2Z1bGxBY3Rpdml0eUNhbGxiYWNrKTsKKyAgICAvLyBUaGUgZnVsbCBHQyBhY3Rpdml0eSB0aW1l
ciBoYXMgZmlyZWQgc28gd2UgYWxsb3cgY29sbGVjdEFsbEdhcmJhZ2VJZk5vdERvbmVSZWNlbnRs
eSgpCisgICAgLy8gdG8gZG8gYSBzaW5nbGUgc3luY2hyb25vdXMgR0MgYWdhaW4uCisgICAgbV9k
aWRTeW5jR0NSZWNlbnRseSA9IGZhbHNlOworfQorCit2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJi
YWdlSWZOb3REb25lUmVjZW50bHkoKQoreworICAgIGlmICghbV9mdWxsQWN0aXZpdHlDYWxsYmFj
aykgeworICAgICAgICBjb2xsZWN0QWxsR2FyYmFnZSgpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKG1fZGlkU3luY0dDUmVjZW50bHkpIHsKKyAgICAgICAgLy8gQSBzeW5jaHJv
bm91cyBHQyB3YXMgYWxyZWFkeSByZXF1ZXN0ZWQgcmVjZW50bHkgc28gd2UgbWVyZWx5IGFjY2Vs
ZXJhdGUgbmV4dCBjb2xsZWN0aW9uLgorICAgICAgICByZXBvcnRBYmFuZG9uZWRPYmplY3RHcmFw
aCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9kaWRTeW5jR0NSZWNlbnRseSA9
IHRydWU7CisgICAgY29sbGVjdEFsbEdhcmJhZ2UoKTsKK30KKwogY2xhc3MgWm9tYmlmeSA6IHB1
YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewogcHVibGljOgogICAgIGlubGluZSB2b2lk
IHZpc2l0KEpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCBkM2U5
Njg4NjA2NjE3MzY0YzUwYTc4NTNlYzFjOGFhMThiMTZhMGU3Li4zYTg5MDJhOTgwZjYyZTM5MzAz
NGUzYmJjNjcwMDMwNDFmMTEyYjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0x
NTQsNiArMTU0LDggQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5SXNTYWZlVG9Db2xsZWN0KCkg
eyBtX2lzU2FmZVRvQ29sbGVjdCA9IHRydWU7IH0KICAgICBib29sIGlzU2FmZVRvQ29sbGVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNTYWZlVG9Db2xsZWN0OyB9CiAKKyAgICB2b2lkIGZ1bGxHQ0Fj
dGl2aXR5VGltZXJGaXJlZCgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdEFs
bEdhcmJhZ2VJZk5vdERvbmVSZWNlbnRseSgpOwogICAgIHZvaWQgY29sbGVjdEFsbEdhcmJhZ2Uo
KSB7IGNvbGxlY3RBbmRTd2VlcChGdWxsQ29sbGVjdGlvbik7IH0KICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGNvbGxlY3RBbmRTd2VlcChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlID0g
QW55Q29sbGVjdGlvbik7CiAgICAgYm9vbCBzaG91bGRDb2xsZWN0KCk7CkBAIC0zODEsNiArMzgz
LDcgQEAgcHJpdmF0ZToKICAgICBGaW5hbGl6ZXJPd25lciBtX2ZpbmFsaXplck93bmVyOwogICAg
IAogICAgIGJvb2wgbV9pc1NhZmVUb0NvbGxlY3Q7CisgICAgYm9vbCBtX2RpZFN5bmNHQ1JlY2Vu
dGx5IHsgZmFsc2UgfTsKIAogICAgIFdyaXRlQmFycmllckJ1ZmZlciBtX3dyaXRlQmFycmllckJ1
ZmZlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50
YWxTd2VlcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dl
ZXBlci5jcHAKaW5kZXggMWUxOTU3ZTQ5MGEwODU4Zjc2MTIyYjAxNTgzMDhlZDcwOWVmZGNmMi4u
ZmRlZTBjMzNkODdhZGE3M2I3ZTdkMjllMjgwY2Y5MjdiNWRhMGQ2OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCkBAIC01OSwxMSAr
NTksNiBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIoKQogICAgIENGUnVu
TG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGQWJzb2x1dGVUaW1lR2V0
Q3VycmVudCgpICsgc19kZWNhZGUpOwogfQogCi12b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6ZnVs
bFN3ZWVwKCkKLXsKLSAgICB3aGlsZSAoc3dlZXBOZXh0QmxvY2soKSkgeyB9Ci19Ci0KIHZvaWQg
SW5jcmVtZW50YWxTd2VlcGVyOjpkb1dvcmsoKQogewogICAgIGRvU3dlZXAoV1RGOjptb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0luY3JlbWVudGFsU3dlZXBlci5oCmluZGV4IDU5NjIwYTA0ODRkMzU4MzBjZTM4ZGU3ZTMxMmE3
ZTA1ZjI3Y2U5YzYuLmE4NmZkMWNlNGI3ODk5MDM3OWE4ZWZjMTgzZTU2YzQ0NmU1MTgxYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCkBA
IC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbmNyZW1lbnRhbFN3ZWVwZXIo
Vk0qKTsKICNlbmRpZgogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmdWxsU3dlZXAoKTsK
ICAgICB2b2lkIHN0YXJ0U3dlZXBpbmcoKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1
YWwgdm9pZCBkb1dvcmsoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9H
Q0NvbnRyb2xsZXIuY3BwCmluZGV4IGMwYTJiYzQyYWVjNGMxMDAyMzNhZWQ2YmMwYzhjMjg0MDM1
YmI5ZjMuLmU1OGY2OWE2NGE1NjU1YTdmMjZlNzA4OWZlYTdhZGZhYjI4MDc2OGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcApAQCAtOTAsNiArOTAsMTcg
QEAgdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0Tm93KCkKICAgICB9CiB9CiAKK3Zv
aWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE5vd0lmTm90RG9uZVJlY2VudGx5KCkKK3sK
KyNpZiBVU0UoQ0YpCisgICAgSlNMb2NrSG9sZGVyIGxvY2soSlNET01XaW5kb3c6OmNvbW1vblZN
KCkpOworICAgIGlmICghSlNET01XaW5kb3c6OmNvbW1vblZNKCkuaGVhcC5pc0J1c3koKSkKKyAg
ICAgICAgSlNET01XaW5kb3c6OmNvbW1vblZNKCkuaGVhcC5jb2xsZWN0QWxsR2FyYmFnZUlmTm90
RG9uZVJlY2VudGx5KCk7CisjZWxzZQorICAgIGdhcmJhZ2VDb2xsZWN0U29vbigpOworI2VuZGlm
Cit9CisKIHZvaWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFk
Rm9yRGVidWdnaW5nKGJvb2wgd2FpdFVudGlsRG9uZSkKIHsKICAgICBUaHJlYWRJZGVudGlmaWVy
IHRocmVhZElEID0gY3JlYXRlVGhyZWFkKGNvbGxlY3QsIDAsICJXZWJDb3JlOiBHQ0NvbnRyb2xs
ZXIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmgKaW5kZXggZmEz
MWNkYTdjYTgxMzU5YWEyN2Y5ZDI2ZWU5ODJhMjFhMTYzMDJhNi4uOTcyMGMzYzgxZGNjMWNiN2Ey
N2U2ZTc5YzM4MTc2NDc1MTI5ZmY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvR0NDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0ND
b250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnYXJiYWdlQ29sbGVjdFNvb24oKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdh
cmJhZ2VDb2xsZWN0Tm93KCk7IC8vIEl0J3MgYmV0dGVyIHRvIGNhbGwgZ2FyYmFnZUNvbGxlY3RT
b29uLCB1bmxlc3MgeW91IGhhdmUgYSBzcGVjaWZpYyByZWFzb24gbm90IHRvLgorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZ2FyYmFnZUNvbGxlY3ROb3dJZk5vdERvbmVSZWNlbnRseSgpOwogICAg
IHZvaWQgZ2FyYmFnZUNvbGxlY3RPbk5leHRSdW5Mb29wKCk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGdhcmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmcoYm9vbCB3
YWl0VW50aWxEb25lKTsgLy8gVXNlZCBmb3Igc3RyZXNzIHRlc3RpbmcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRleCA5YmFmZDc0
MDNlNGY0NmQxYTRhM2UwYTRjZWNhNGVhM2NiNTY2N2ViLi4xNTRiNTQ2MWEwNWFkOTY0ZTI2MDUx
MjI4MDhhODU5YWQ3NDljNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01l
bW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTEzOSwxOSArMTM5LDggQEAgdm9pZCBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VDcml0aWNhbE1lbW9yeShTeW5jaHJvbm91cyBzeW5jaHJv
bm91cykKICAgICBpZiAoc3luY2hyb25vdXMgPT0gU3luY2hyb25vdXM6OlllcykgewogICAgICAg
ICBSZWxpZWZMb2dnZXIgbG9nKCJDb2xsZWN0aW5nIEphdmFTY3JpcHQgZ2FyYmFnZSIpOwogICAg
ICAgICBHQ0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmdhcmJhZ2VDb2xsZWN0Tm93KCk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyBhIGdhcmJhZ2Ugc3dlZXAg
YW5kIHBydW5lIGRlYWQgcmVzb3VyY2VzIGZyb20gdGhlIE1lbW9yeUNhY2hlCi0gICAgICAgIC8v
IGFmdGVyIHRoZSBnYXJiYWdlIGNvbGxlY3Rpb24gaGFzIGNvbXBsZXRlZCB0byBmcmVlIHVwIG1v
cmUgbWVtb3J5LgotICAgICAgICBHQ0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmdhcmJhZ2VDb2xs
ZWN0U29vbigpOwotCi0gICAgICAgIC8vIERvIGEgZnVsbCBzd2VlcCBvZiBjb2xsZWN0ZWQgb2Jq
ZWN0cy4gZ2FyYmFnZUNvbGxlY3ROb3coKSBhbHJlYWR5IGRvZXMgdGhpcyBzbyB3ZSBvbmx5Ci0g
ICAgICAgIC8vIG5lZWQgdG8gZG8gdGhpcyBpZiBpdCBpc24ndCBjYWxsZWQuCi0gICAgICAgIHsK
LSAgICAgICAgICAgIFJlbGllZkxvZ2dlciBsb2coIkZ1bGwgSmF2YVNjcmlwdCBnYXJiYWdlIHN3
ZWVwIik7Ci0gICAgICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93Ojpj
b21tb25WTSgpKTsKLSAgICAgICAgICAgIEpTRE9NV2luZG93Ojpjb21tb25WTSgpLmhlYXAuc3dl
ZXBlcigpLT5mdWxsU3dlZXAoKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB9IGVsc2UKKyAgICAg
ICAgR0NDb250cm9sbGVyOjpzaW5nbGV0b24oKS5nYXJiYWdlQ29sbGVjdE5vd0lmTm90RG9uZVJl
Y2VudGx5KCk7CiB9CiAKIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlTWVtb3J5
KENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJvbm91cykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254541</attachid>
            <date>2015-06-08 20:26:42 -0700</date>
            <delta_ts>2015-06-09 14:05:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145773-20150608202616.patch</filename>
            <type>text/plain</type>
            <size>10947</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZDdiMWFlYmI4NzI3ODRiZDc2ZjNhYjUyMzA1NzA2M2MxMTVjNTdkLi4wYTY1YjAxYjAwNjRmZDM2
Mzc2NjM5ZmVhYzczMGZkMWU5MDZmNmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNS0wNi0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEFsbG93IG9uZSBzeW5jIEdDIHBlciBnY1RpbWVyIGludGVydmFsIG9uIGNyaXRp
Y2FsIG1lbW9yeSBwcmVzc3VyZSB3YXJuaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBPbiBjcml0aWNhbCBtZW1vcnkgcHJlc3N1cmUgd2FybmluZywg
d2Ugd2VyZSBjYWxsaW5nIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RTb29uKCksCisgICAg
ICAgIHdoaWNoIGRvZXMgbm90IG9mZmVyIGFueSBndWFyYW50ZWUgb24gd2hlbiB0aGUgZ2FyYmFn
ZSBjb2xsZWN0aW9uIHdpbGwgYWN0dWFsbHkgdGFrZQorICAgICAgICBwbGFjZS4KKworICAgICAg
ICBPbiBjcml0aWNhbCBtZW1vcnkgcHJlc3N1cmUsIHdlIG5lZWQgdG8gZnJlZSB1cCBtZW1vcnkg
YXMgc29vbiBhcyBwb3NzaWJsZSB0byBhdm9pZAorICAgICAgICBnZXR0aW5nIGtpbGxlZCBzbyB0
aGlzIGlzIGFuIGlzc3VlLiBBbHNvLCB0aGUgZmFjdCB0aGF0IHdlIGNsZWFyIHRoZSBQYWdlQ2Fj
aGUgb24KKyAgICAgICAgY3JpdGljYWwgbWVtb3J5IHByZXNzdXJlIG1lYW5zIGEgR0Mgd291bGQg
bGlrZWx5IGJlIHVzZWZ1bCwgZXZlbiBpZiB0aGUgbGFzdAorICAgICAgICBjb2xsZWN0aW9uIGRp
ZCBub3QgZnJlZSBtdWNoIG1lbW9yeS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcg
R0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE5vd0lmTm90RG9uZVJlY2VudGx5KCkgQVBJIHRo
YXQgYWxsb3dzCisgICAgICAgIG9uZSBzeW5jaHJvbm91cyBHQyBwZXIgZ2NUaW1lciBpbnRlcnZh
bCBvbiBjcml0aWNhbCBtZW1vcnkgcHJlc3N1cmUgd2FybmluZy4gVGhpcyBtYWtlcworICAgICAg
ICB1cyBtb3JlIHJlc3BvbnNpdmUgdG8gY3JpdGljYWwgbWVtb3J5IHByZXNzdXJlIGFuZCBhdm9p
ZHMgZG9pbmcgc3luY2hyb25vdXMgR0NzIHRvbworICAgICAgICBvZnRlbi4KKworICAgICAgICAq
IGhlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHA6CisgICAgICAgIChKU0M6OkZ1bGxHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OmRvQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoK
KyAgICAgICAgKEpTQzo6SGVhcDo6ZnVsbEdDQWN0aXZpdHlUaW1lckZpcmVkKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2VJZk5vdERvbmVSZWNlbnRseSk6CisgICAgICAg
ICogaGVhcC9IZWFwLmg6CisKKyAgICAgICAgKiBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHA6
CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6ZnVsbFN3ZWVwKTogRGVsZXRlZC4K
KyAgICAgICAgKiBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oOgorCisgICAgICAgIERyb3AgZnVs
bFN3ZWVwKCkgQVBJIGFzIGl0IG5vIGxvbmdlciBzZWVtcyB1c2VmdWwuIGdhcmJhZ2VDb2xsZWN0
Tm93KCkKKyAgICAgICAgYWxyZWFkeSBkb2VzIGEgc3dlZXAgYWZ0ZXIgdGhlIGZ1bGwgY29sbGVj
dGlvbi4KKwogMjAxNS0wNi0wNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFRoZSB0aW55IHNldCBtYWdpYyBpbiBTdHJ1Y3R1cmVTZXQgc2hvdWxkIGJlIGF2YWls
YWJsZSBpbiBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NjQ1NWJjODcxZTJhOWNiMDBhYWFhMjcwNmVlYTQ2
YzE0ZjRmYTQ3Li44NzczZDU2OTI4NjA5YWM4NjliZGQxMzQ4YTQ2NDM5ODZiMjM2MDk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzAgQEAKIDIwMTUtMDYtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAorICAgICAgICBBbGxvdyBvbmUgc3luYyBHQyBwZXIgZ2NUaW1lciBpbnRl
cnZhbCBvbiBjcml0aWNhbCBtZW1vcnkgcHJlc3N1cmUgd2FybmluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NzczCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE5v
d0lmTm90RG9uZVJlY2VudGx5KToKKworICAgICAgICBBZGQgbmV3IEdDQ29udHJvbGxlcjo6Z2Fy
YmFnZUNvbGxlY3ROb3dJZk5vdERvbmVSZWNlbnRseSgpIEFQSSB0aGF0CisgICAgICAgIGFsbG93
cyBvbmUgc3luY2hyb25vdXMgR0MgcGVyIGZ1bGwgR0MgdGltZXIgaW50ZXJ2YWwuIElmIGNhbGxl
ZCBtb3JlCisgICAgICAgIHRoYW4gb25jZSBwZXIgaW50ZXJ2YWwsIGl0IGJlY29tZXMgZXF1aXZh
bGVudCB0byBnYXJiYWdlQ29sbGVjdFNvb24oKQorICAgICAgICBhbmQgbWVyZWx5IGFjY2VsZXJh
dGVzIHRoZSBuZXh0IGNvbGxlY3Rpb24uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9HQ0NvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlQ3JpdGljYWxN
ZW1vcnkpOgorCisgICAgICAgIENhbGwgdGhlIG5ldyBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xs
ZWN0Tm93SWZOb3REb25lUmVjZW50bHkoKSBvbgorICAgICAgICBjcml0aWNhbCBtZW1vcnkgcHJl
c3N1cmUgaW5zdGVhZCBvZiBnYXJiYWdlQ29sbGVjdGlvblNvb24oKSB0byB0cnkKKyAgICAgICAg
YXMgZG8gYSBzeW5jaHJvbm91cyBHQyBpZiBvbmUgd2Fzbid0IGFscmVhZHkgZG9uZSByZWNlbnRs
eS4KKyAgICAgICAgQWxzbyBkcm9wIGNhbGwgdG8gZnVsbFN3ZWVwKCkgYXMgR0NDb250cm9sbGVy
OjpnYXJiYWdlQ29sbGVjdE5vdyooKQorICAgICAgICBhbHJlYWR5IGRvIGEgc3dlZXAgYWZ0ZXIg
dGhlIGNvbGxlY3Rpb24uCisKKzIwMTUtMDYtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKwogICAgICAgICBBY2Nlc3MgR0NDb250cm9sbGVyIGluc3RhbmNlIHZpYSBHQ0NvbnRy
b2xsZXI6OnNpbmdsZXRvbigpIGluc3RlYWQgb2YgYSBmcmVlIGZ1bmN0aW9uCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU3NzYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcApp
bmRleCA3NmM2NzhkZDZiOTg2ZTI4ODJhMGU2MzFiZmY1OTNkZjk1ZDU4ZTM4Li41MjRiNzVlMjhh
MDdhMGE2Y2ZhMjVmOTBiNzY0MWZlY2ZmMzNiMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcApAQCAtNDMsMTggKzQz
LDE5IEBAIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soSGVh
cCogaGVhcCkKIAogdm9pZCBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQog
ewotICAgIEhlYXAqIGhlYXAgPSAmbV92bS0+aGVhcDsKKyAgICBIZWFwJiBoZWFwID0gbV92bS0+
aGVhcDsKKyAgICBoZWFwLmZ1bGxHQ0FjdGl2aXR5VGltZXJGaXJlZCgpOwogCiAjaWYgIVBMQVRG
T1JNKElPUykKICAgICBkb3VibGUgc3RhcnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKLSAgICBpZiAoaGVhcC0+aXNQYWdlZE91dChzdGFydFRpbWUgKyBwYWdpbmdU
aW1lT3V0KSkgeworICAgIGlmIChoZWFwLmlzUGFnZWRPdXQoc3RhcnRUaW1lICsgcGFnaW5nVGlt
ZU91dCkpIHsKICAgICAgICAgY2FuY2VsKCk7Ci0gICAgICAgIGhlYXAtPmluY3JlYXNlTGFzdEZ1
bGxHQ0xlbmd0aChwYWdpbmdUaW1lT3V0KTsKKyAgICAgICAgaGVhcC5pbmNyZWFzZUxhc3RGdWxs
R0NMZW5ndGgocGFnaW5nVGltZU91dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYK
IAotICAgIGhlYXAtPmNvbGxlY3QoRnVsbENvbGxlY3Rpb24pOworICAgIGhlYXAuY29sbGVjdChG
dWxsQ29sbGVjdGlvbik7CiB9CiAKIGRvdWJsZSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0
R0NMZW5ndGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCAxYzM5MjRmMzRi
NGVhYWIwYjRlMTY0NDRiNDc1NjM1ZDUxMmFmMmYwLi43YzViNzhmOWY4YjJhYTg1MWFiNDU2Mjhk
MTI4ZDVlMWE0NjFmZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMTQw
OCw2ICsxNDA4LDMxIEBAIHZvaWQgSGVhcDo6YWRkQ29tcGlsZWRDb2RlKEV4ZWN1dGFibGVCYXNl
KiBleGVjdXRhYmxlKQogICAgIG1fY29tcGlsZWRDb2RlLmFwcGVuZChleGVjdXRhYmxlKTsKIH0K
IAordm9pZCBIZWFwOjpmdWxsR0NBY3Rpdml0eVRpbWVyRmlyZWQoKQoreworICAgIEFTU0VSVCht
X2Z1bGxBY3Rpdml0eUNhbGxiYWNrKTsKKyAgICAvLyBUaGUgZnVsbCBHQyBhY3Rpdml0eSB0aW1l
ciBoYXMgZmlyZWQgc28gd2UgYWxsb3cgY29sbGVjdEFsbEdhcmJhZ2VJZk5vdERvbmVSZWNlbnRs
eSgpCisgICAgLy8gdG8gZG8gYSBzaW5nbGUgc3luY2hyb25vdXMgR0MgYWdhaW4uCisgICAgbV9k
aWRTeW5jR0NSZWNlbnRseSA9IGZhbHNlOworfQorCit2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJi
YWdlSWZOb3REb25lUmVjZW50bHkoKQoreworICAgIGlmICghbV9mdWxsQWN0aXZpdHlDYWxsYmFj
aykgeworICAgICAgICBjb2xsZWN0QWxsR2FyYmFnZSgpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKG1fZGlkU3luY0dDUmVjZW50bHkpIHsKKyAgICAgICAgLy8gQSBzeW5jaHJv
bm91cyBHQyB3YXMgYWxyZWFkeSByZXF1ZXN0ZWQgcmVjZW50bHkgc28gd2UgbWVyZWx5IGFjY2Vs
ZXJhdGUgbmV4dCBjb2xsZWN0aW9uLgorICAgICAgICByZXBvcnRBYmFuZG9uZWRPYmplY3RHcmFw
aCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9kaWRTeW5jR0NSZWNlbnRseSA9
IHRydWU7CisgICAgY29sbGVjdEFsbEdhcmJhZ2UoKTsKK30KKwogY2xhc3MgWm9tYmlmeSA6IHB1
YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewogcHVibGljOgogICAgIGlubGluZSB2b2lk
IHZpc2l0KEpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCBkM2U5
Njg4NjA2NjE3MzY0YzUwYTc4NTNlYzFjOGFhMThiMTZhMGU3Li4zYTg5MDJhOTgwZjYyZTM5MzAz
NGUzYmJjNjcwMDMwNDFmMTEyYjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0x
NTQsNiArMTU0LDggQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5SXNTYWZlVG9Db2xsZWN0KCkg
eyBtX2lzU2FmZVRvQ29sbGVjdCA9IHRydWU7IH0KICAgICBib29sIGlzU2FmZVRvQ29sbGVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNTYWZlVG9Db2xsZWN0OyB9CiAKKyAgICB2b2lkIGZ1bGxHQ0Fj
dGl2aXR5VGltZXJGaXJlZCgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdEFs
bEdhcmJhZ2VJZk5vdERvbmVSZWNlbnRseSgpOwogICAgIHZvaWQgY29sbGVjdEFsbEdhcmJhZ2Uo
KSB7IGNvbGxlY3RBbmRTd2VlcChGdWxsQ29sbGVjdGlvbik7IH0KICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGNvbGxlY3RBbmRTd2VlcChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlID0g
QW55Q29sbGVjdGlvbik7CiAgICAgYm9vbCBzaG91bGRDb2xsZWN0KCk7CkBAIC0zODEsNiArMzgz
LDcgQEAgcHJpdmF0ZToKICAgICBGaW5hbGl6ZXJPd25lciBtX2ZpbmFsaXplck93bmVyOwogICAg
IAogICAgIGJvb2wgbV9pc1NhZmVUb0NvbGxlY3Q7CisgICAgYm9vbCBtX2RpZFN5bmNHQ1JlY2Vu
dGx5IHsgZmFsc2UgfTsKIAogICAgIFdyaXRlQmFycmllckJ1ZmZlciBtX3dyaXRlQmFycmllckJ1
ZmZlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50
YWxTd2VlcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dl
ZXBlci5jcHAKaW5kZXggMWUxOTU3ZTQ5MGEwODU4Zjc2MTIyYjAxNTgzMDhlZDcwOWVmZGNmMi4u
ZTA3ODNkNjE1ZjUzMjU0ODRmYmU5NTI2ODE5NTU2YjQ2ZTk3ZTBmZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCkBAIC01OSwxMSAr
NTksNiBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIoKQogICAgIENGUnVu
TG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGQWJzb2x1dGVUaW1lR2V0
Q3VycmVudCgpICsgc19kZWNhZGUpOwogfQogCi12b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6ZnVs
bFN3ZWVwKCkKLXsKLSAgICB3aGlsZSAoc3dlZXBOZXh0QmxvY2soKSkgeyB9Ci19Ci0KIHZvaWQg
SW5jcmVtZW50YWxTd2VlcGVyOjpkb1dvcmsoKQogewogICAgIGRvU3dlZXAoV1RGOjptb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CkBAIC0xMzIsMTAgKzEyNyw2IEBAIHZvaWQgSW5jcmVt
ZW50YWxTd2VlcGVyOjp3aWxsRmluaXNoU3dlZXBpbmcoKQogewogfQogCi12b2lkIEluY3JlbWVu
dGFsU3dlZXBlcjo6ZnVsbFN3ZWVwKCkKLXsKLX0KLQogYm9vbCBJbmNyZW1lbnRhbFN3ZWVwZXI6
OnN3ZWVwTmV4dEJsb2NrKCkKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCmluZGV4IDU5NjIwYTA0ODRkMzU4
MzBjZTM4ZGU3ZTMxMmE3ZTA1ZjI3Y2U5YzYuLmE4NmZkMWNlNGI3ODk5MDM3OWE4ZWZjMTgzZTU2
YzQ0NmU1MTgxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3Jl
bWVudGFsU3dlZXBlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVu
dGFsU3dlZXBlci5oCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbmNy
ZW1lbnRhbFN3ZWVwZXIoVk0qKTsKICNlbmRpZgogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBmdWxsU3dlZXAoKTsKICAgICB2b2lkIHN0YXJ0U3dlZXBpbmcoKTsKIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZpcnR1YWwgdm9pZCBkb1dvcmsoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCmluZGV4IGMwYTJiYzQyYWVjNGMxMDAyMzNh
ZWQ2YmMwYzhjMjg0MDM1YmI5ZjMuLmU1OGY2OWE2NGE1NjU1YTdmMjZlNzA4OWZlYTdhZGZhYjI4
MDc2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcApA
QCAtOTAsNiArOTAsMTcgQEAgdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0Tm93KCkK
ICAgICB9CiB9CiAKK3ZvaWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE5vd0lmTm90RG9u
ZVJlY2VudGx5KCkKK3sKKyNpZiBVU0UoQ0YpCisgICAgSlNMb2NrSG9sZGVyIGxvY2soSlNET01X
aW5kb3c6OmNvbW1vblZNKCkpOworICAgIGlmICghSlNET01XaW5kb3c6OmNvbW1vblZNKCkuaGVh
cC5pc0J1c3koKSkKKyAgICAgICAgSlNET01XaW5kb3c6OmNvbW1vblZNKCkuaGVhcC5jb2xsZWN0
QWxsR2FyYmFnZUlmTm90RG9uZVJlY2VudGx5KCk7CisjZWxzZQorICAgIGdhcmJhZ2VDb2xsZWN0
U29vbigpOworI2VuZGlmCit9CisKIHZvaWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE9u
QWx0ZXJuYXRlVGhyZWFkRm9yRGVidWdnaW5nKGJvb2wgd2FpdFVudGlsRG9uZSkKIHsKICAgICBU
aHJlYWRJZGVudGlmaWVyIHRocmVhZElEID0gY3JlYXRlVGhyZWFkKGNvbGxlY3QsIDAsICJXZWJD
b3JlOiBHQ0NvbnRyb2xsZXIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0dDQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9s
bGVyLmgKaW5kZXggZmEzMWNkYTdjYTgxMzU5YWEyN2Y5ZDI2ZWU5ODJhMjFhMTYzMDJhNi4uOTcy
MGMzYzgxZGNjMWNiN2EyN2U2ZTc5YzM4MTc2NDc1MTI5ZmY5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvR0NDb250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnYXJiYWdlQ29sbGVjdFNvb24oKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdhcmJhZ2VDb2xsZWN0Tm93KCk7IC8vIEl0J3MgYmV0dGVyIHRvIGNhbGwg
Z2FyYmFnZUNvbGxlY3RTb29uLCB1bmxlc3MgeW91IGhhdmUgYSBzcGVjaWZpYyByZWFzb24gbm90
IHRvLgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2FyYmFnZUNvbGxlY3ROb3dJZk5vdERvbmVS
ZWNlbnRseSgpOwogICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3RPbk5leHRSdW5Mb29wKCk7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdhcmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRGb3JE
ZWJ1Z2dpbmcoYm9vbCB3YWl0VW50aWxEb25lKTsgLy8gVXNlZCBmb3Igc3RyZXNzIHRlc3Rpbmcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNw
cAppbmRleCA5YmFmZDc0MDNlNGY0NmQxYTRhM2UwYTRjZWNhNGVhM2NiNTY2N2ViLi4xNTRiNTQ2
MWEwNWFkOTY0ZTI2MDUxMjI4MDhhODU5YWQ3NDljNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTEzOSwxOSArMTM5LDgg
QEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VDcml0aWNhbE1lbW9yeShTeW5j
aHJvbm91cyBzeW5jaHJvbm91cykKICAgICBpZiAoc3luY2hyb25vdXMgPT0gU3luY2hyb25vdXM6
OlllcykgewogICAgICAgICBSZWxpZWZMb2dnZXIgbG9nKCJDb2xsZWN0aW5nIEphdmFTY3JpcHQg
Z2FyYmFnZSIpOwogICAgICAgICBHQ0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmdhcmJhZ2VDb2xs
ZWN0Tm93KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyBh
IGdhcmJhZ2Ugc3dlZXAgYW5kIHBydW5lIGRlYWQgcmVzb3VyY2VzIGZyb20gdGhlIE1lbW9yeUNh
Y2hlCi0gICAgICAgIC8vIGFmdGVyIHRoZSBnYXJiYWdlIGNvbGxlY3Rpb24gaGFzIGNvbXBsZXRl
ZCB0byBmcmVlIHVwIG1vcmUgbWVtb3J5LgotICAgICAgICBHQ0NvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLmdhcmJhZ2VDb2xsZWN0U29vbigpOwotCi0gICAgICAgIC8vIERvIGEgZnVsbCBzd2VlcCBv
ZiBjb2xsZWN0ZWQgb2JqZWN0cy4gZ2FyYmFnZUNvbGxlY3ROb3coKSBhbHJlYWR5IGRvZXMgdGhp
cyBzbyB3ZSBvbmx5Ci0gICAgICAgIC8vIG5lZWQgdG8gZG8gdGhpcyBpZiBpdCBpc24ndCBjYWxs
ZWQuCi0gICAgICAgIHsKLSAgICAgICAgICAgIFJlbGllZkxvZ2dlciBsb2coIkZ1bGwgSmF2YVNj
cmlwdCBnYXJiYWdlIHN3ZWVwIik7Ci0gICAgICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2Nr
KEpTRE9NV2luZG93Ojpjb21tb25WTSgpKTsKLSAgICAgICAgICAgIEpTRE9NV2luZG93Ojpjb21t
b25WTSgpLmhlYXAuc3dlZXBlcigpLT5mdWxsU3dlZXAoKTsKLSAgICAgICAgfQotICAgIH0KKyAg
ICB9IGVsc2UKKyAgICAgICAgR0NDb250cm9sbGVyOjpzaW5nbGV0b24oKS5nYXJiYWdlQ29sbGVj
dE5vd0lmTm90RG9uZVJlY2VudGx5KCk7CiB9CiAKIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpyZWxlYXNlTWVtb3J5KENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJvbm91
cykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254600</attachid>
            <date>2015-06-09 14:05:47 -0700</date>
            <delta_ts>2015-06-09 15:16:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145773-20150609140521.patch</filename>
            <type>text/plain</type>
            <size>12820</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzMyY2FjMTNjMmFiNzEwYjlkMmFhODhjMzJjZTkxNzkyMzhiODNmLi4wYzcwMDcwNzdkMTY1NDQy
NTI3ZmNjNTJiZDUwYjViN2QzYzA1MDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxNS0wNi0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEFsbG93IG9uZSBzeW5jIEdDIHBlciBnY1RpbWVyIGludGVydmFsIG9uIGNyaXRp
Y2FsIG1lbW9yeSBwcmVzc3VyZSB3YXJuaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBPbiBjcml0aWNhbCBtZW1vcnkgcHJlc3N1cmUgd2FybmluZywg
d2Ugd2VyZSBjYWxsaW5nIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RTb29uKCksCisgICAg
ICAgIHdoaWNoIGRvZXMgbm90IG9mZmVyIGFueSBndWFyYW50ZWUgb24gd2hlbiB0aGUgZ2FyYmFn
ZSBjb2xsZWN0aW9uIHdpbGwgYWN0dWFsbHkgdGFrZQorICAgICAgICBwbGFjZS4KKworICAgICAg
ICBPbiBjcml0aWNhbCBtZW1vcnkgcHJlc3N1cmUsIHdlIG5lZWQgdG8gZnJlZSB1cCBtZW1vcnkg
YXMgc29vbiBhcyBwb3NzaWJsZSB0byBhdm9pZAorICAgICAgICBnZXR0aW5nIGtpbGxlZCBzbyB0
aGlzIGlzIGFuIGlzc3VlLiBBbHNvLCB0aGUgZmFjdCB0aGF0IHdlIGNsZWFyIHRoZSBQYWdlQ2Fj
aGUgb24KKyAgICAgICAgY3JpdGljYWwgbWVtb3J5IHByZXNzdXJlIG1lYW5zIGEgR0Mgd291bGQg
bGlrZWx5IGJlIHVzZWZ1bCwgZXZlbiBpZiB0aGUgbGFzdAorICAgICAgICBjb2xsZWN0aW9uIGRp
ZCBub3QgZnJlZSBtdWNoIG1lbW9yeS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcg
R0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE5vd0lmTm90RG9uZVJlY2VudGx5KCkgQVBJIHRo
YXQgYWxsb3dzCisgICAgICAgIG9uZSBzeW5jaHJvbm91cyBHQyBwZXIgZ2NUaW1lciBpbnRlcnZh
bCBvbiBjcml0aWNhbCBtZW1vcnkgcHJlc3N1cmUgd2FybmluZy4gVGhpcyBtYWtlcworICAgICAg
ICB1cyBtb3JlIHJlc3BvbnNpdmUgdG8gY3JpdGljYWwgbWVtb3J5IHByZXNzdXJlIGFuZCBhdm9p
ZHMgZG9pbmcgc3luY2hyb25vdXMgR0NzIHRvbworICAgICAgICBvZnRlbi4KKworICAgICAgICAq
IGhlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHA6CisgICAgICAgIChKU0M6OkZ1bGxHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OmRvQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9GdWxsR0NBY3Rp
dml0eUNhbGxiYWNrLmg6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRl
RnVsbFRpbWVyKToKKyAgICAgICAgKiBoZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oOgorICAgICAg
ICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RBbGxHYXJiYWdl
SWZOb3REb25lUmVjZW50bHkpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorCisgICAgICAgICog
aGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3
ZWVwZXI6OmRvV29yayk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVw
ZXIuaDoKKworICAgICAgICBEcm9wIGZ1bGxTd2VlcCgpIEFQSSBhcyBpdCBubyBsb25nZXIgc2Vl
bXMgdXNlZnVsLiBnYXJiYWdlQ29sbGVjdE5vdygpCisgICAgICAgIGFscmVhZHkgZG9lcyBhIHN3
ZWVwIGFmdGVyIHRoZSBmdWxsIGNvbGxlY3Rpb24uCisKIDIwMTUtMDYtMDkgIEFuZHJlYXMgS2xp
bmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEpTU3RyaW5nOjpnZXRJbmRl
eCgpIHNob3VsZCBhdm9pZCByZWlmeWluZyBzdWJzdHJpbmdzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQyMTQ0
YTg1YzM3ZTBjODc1MDJjMjhkMmQ5YjE2ODY1YTE1NDZiZjYuLmYyOTNhYmQ3OTg1ZGYwYjU4NTNk
NzI1NTNkYmQwMzI4M2FkY2YyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNS0w
Ni0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IG9u
ZSBzeW5jIEdDIHBlciBnY1RpbWVyIGludGVydmFsIG9uIGNyaXRpY2FsIG1lbW9yeSBwcmVzc3Vy
ZSB3YXJuaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDU3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHQ0Nv
bnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0Tm93SWZOb3REb25lUmVjZW50bHkpOgorCisgICAgICAg
IEFkZCBuZXcgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE5vd0lmTm90RG9uZVJlY2VudGx5
KCkgQVBJIHRoYXQKKyAgICAgICAgYWxsb3dzIG9uZSBzeW5jaHJvbm91cyBHQyBwZXIgZnVsbCBH
QyB0aW1lciBpbnRlcnZhbC4gSWYgY2FsbGVkIG1vcmUKKyAgICAgICAgdGhhbiBvbmNlIHBlciBp
bnRlcnZhbCwgaXQgYmVjb21lcyBlcXVpdmFsZW50IHRvIGdhcmJhZ2VDb2xsZWN0U29vbigpCisg
ICAgICAgIGFuZCBtZXJlbHkgYWNjZWxlcmF0ZXMgdGhlIG5leHQgY29sbGVjdGlvbi4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL01l
bW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnJlbGVhc2VDcml0aWNhbE1lbW9yeSk6CisKKyAgICAgICAgQ2FsbCB0aGUgbmV3
IEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3ROb3dJZk5vdERvbmVSZWNlbnRseSgpIG9uCisg
ICAgICAgIGNyaXRpY2FsIG1lbW9yeSBwcmVzc3VyZSBpbnN0ZWFkIG9mIGdhcmJhZ2VDb2xsZWN0
aW9uU29vbigpIHRvIHRyeQorICAgICAgICBhcyBkbyBhIHN5bmNocm9ub3VzIEdDIGlmIG9uZSB3
YXNuJ3QgYWxyZWFkeSBkb25lIHJlY2VudGx5LgorICAgICAgICBBbHNvIGRyb3AgY2FsbCB0byBm
dWxsU3dlZXAoKSBhcyBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0Tm93KigpCisgICAgICAg
IGFscmVhZHkgZG8gYSBzd2VlcCBhZnRlciB0aGUgY29sbGVjdGlvbi4KKwogMjAxNS0wNi0wOSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBDcmFzaCB3
aGVuIHBhc3NpbmcgU3ltYm9sIHRvIE5QQVBJIHBsdWdpbiBvYmplY3RzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCmluZGV4
IDc2YzY3OGRkNmI5ODZlMjg4MmEwZTYzMWJmZjU5M2RmOTVkNThlMzguLjA3ZWJiYmQyMjU4Njlk
NzlkYjRjY2M3NDdhMDM4NzM1NTViODQ5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCkBAIC00MywxOCArNDMsMTkg
QEAgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6RnVsbEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBo
ZWFwKQogCiB2b2lkIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvQ29sbGVjdGlvbigpCiB7Ci0g
ICAgSGVhcCogaGVhcCA9ICZtX3ZtLT5oZWFwOworICAgIEhlYXAmIGhlYXAgPSBtX3ZtLT5oZWFw
OworICAgIG1fZGlkU3luY0dDUmVjZW50bHkgPSBmYWxzZTsKIAogI2lmICFQTEFURk9STShJT1Mp
CiAgICAgZG91YmxlIHN0YXJ0VGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCk7Ci0gICAgaWYgKGhlYXAtPmlzUGFnZWRPdXQoc3RhcnRUaW1lICsgcGFnaW5nVGltZU91dCkp
IHsKKyAgICBpZiAoaGVhcC5pc1BhZ2VkT3V0KHN0YXJ0VGltZSArIHBhZ2luZ1RpbWVPdXQpKSB7
CiAgICAgICAgIGNhbmNlbCgpOwotICAgICAgICBoZWFwLT5pbmNyZWFzZUxhc3RGdWxsR0NMZW5n
dGgocGFnaW5nVGltZU91dCk7CisgICAgICAgIGhlYXAuaW5jcmVhc2VMYXN0RnVsbEdDTGVuZ3Ro
KHBhZ2luZ1RpbWVPdXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKLSAgICBo
ZWFwLT5jb2xsZWN0KEZ1bGxDb2xsZWN0aW9uKTsKKyAgICBoZWFwLmNvbGxlY3QoRnVsbENvbGxl
Y3Rpb24pOwogfQogCiBkb3VibGUgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3Ro
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5
Q2FsbGJhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2suaAppbmRleCAzYjFiNDUwMDVjNTViMDY2YzdiOTFkNmM0ZTY0ZDc3MGQ1NGQwOTgwLi5l
NzI3NTkyZTI3OGViYmQ5YzYzMDM1NjYxN2ZkM2U1YTIwZWYzODM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oCkBAIC0zNiw2
ICszNiw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkb0NvbGxlY3Rpb24oKSBvdmVy
cmlkZTsKIAorICAgIGJvb2wgZGlkU3luY0dDUmVjZW50bHkoKSBjb25zdCB7IHJldHVybiBtX2Rp
ZFN5bmNHQ1JlY2VudGx5OyB9CisgICAgdm9pZCBzZXREaWRTeW5jR0NSZWNlbnRseSgpIHsgbV9k
aWRTeW5jR0NSZWNlbnRseSA9IHRydWU7IH0KKwogcHJvdGVjdGVkOgogI2lmIFVTRShDRikKICAg
ICBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJlZiBydW5Mb29w
KQpAQCAtNDcsOSArNTAsMTEgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgZG91YmxlIGxhc3RH
Q0xlbmd0aCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgZG91YmxlIGdjVGltZVNsaWNlKHNpemVf
dCBieXRlcykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBkb3VibGUgZGVhdGhSYXRlKCkgb3ZlcnJp
ZGU7CisKKyAgICBib29sIG1fZGlkU3luY0dDUmVjZW50bHkgeyBmYWxzZSB9OwogfTsKIAotaW5s
aW5lIFJlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRl
RnVsbFRpbWVyKEhlYXAqIGhlYXApCitpbmxpbmUgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2s+IEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRpbWVyKEhlYXAqIGhlYXApCiB7CiAg
ICAgcmV0dXJuIHNfc2hvdWxkQ3JlYXRlR0NUaW1lciA/IGFkb3B0UmVmKG5ldyBGdWxsR0NBY3Rp
dml0eUNhbGxiYWNrKGhlYXApKSA6IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oCmluZGV4IDNkMDdlZmFhMmUxNjM4NzViMDJh
MzJkYzA3YjgwOWNkZWNmMjlhYjkuLjczZDBlODkwN2Q5YzA3YTk5YmZkMmQxMjgxMzQ4Y2VhZGNl
ZTM3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlD
YWxsYmFjay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxs
YmFjay5oCkBAIC0zOCwxMiArMzgsMTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEZ1
bGxHQ0FjdGl2aXR5Q2FsbGJhY2s7CiBjbGFzcyBIZWFwOwogCiBjbGFzcyBKU19FWFBPUlRfUFJJ
VkFURSBHQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMgSGVhcFRpbWVyLCBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8R0NBY3Rpdml0eUNhbGxiYWNrPiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+
IGNyZWF0ZUZ1bGxUaW1lcihIZWFwKik7CisgICAgc3RhdGljIFJlZlB0cjxGdWxsR0NBY3Rpdml0
eUNhbGxiYWNrPiBjcmVhdGVGdWxsVGltZXIoSGVhcCopOwogICAgIHN0YXRpYyBSZWZQdHI8R0NB
Y3Rpdml0eUNhbGxiYWNrPiBjcmVhdGVFZGVuVGltZXIoSGVhcCopOwogCiAgICAgR0NBY3Rpdml0
eUNhbGxiYWNrKEhlYXAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggMWMz
OTI0ZjM0YjRlYWFiMGI0ZTE2NDQ0YjQ3NTYzNWQ1MTJhZjJmMC4uMWY1NGZjNTNmZTlkZTk0ZmE4
ZjRjYjBhYThjMzM0ZGNmODVkYzQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
QEAgLTE0MDgsNiArMTQwOCwyMyBAQCB2b2lkIEhlYXA6OmFkZENvbXBpbGVkQ29kZShFeGVjdXRh
YmxlQmFzZSogZXhlY3V0YWJsZSkKICAgICBtX2NvbXBpbGVkQ29kZS5hcHBlbmQoZXhlY3V0YWJs
ZSk7CiB9CiAKK3ZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2VJZk5vdERvbmVSZWNlbnRseSgp
Cit7CisgICAgaWYgKCFtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKSB7CisgICAgICAgIGNvbGxlY3RB
bGxHYXJiYWdlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9mdWxsQWN0
aXZpdHlDYWxsYmFjay0+ZGlkU3luY0dDUmVjZW50bHkoKSkgeworICAgICAgICAvLyBBIHN5bmNo
cm9ub3VzIEdDIHdhcyBhbHJlYWR5IHJlcXVlc3RlZCByZWNlbnRseSBzbyB3ZSBtZXJlbHkgYWNj
ZWxlcmF0ZSBuZXh0IGNvbGxlY3Rpb24uCisgICAgICAgIHJlcG9ydEFiYW5kb25lZE9iamVjdEdy
YXBoKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Z1bGxBY3Rpdml0eUNhbGxi
YWNrLT5zZXREaWRTeW5jR0NSZWNlbnRseSgpOworICAgIGNvbGxlY3RBbGxHYXJiYWdlKCk7Cit9
CisKIGNsYXNzIFpvbWJpZnkgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKIHB1
YmxpYzoKICAgICBpbmxpbmUgdm9pZCB2aXNpdChKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgKaW5kZXggZDNlOTY4ODYwNjYxNzM2NGM1MGE3ODUzZWMxYzhhYTE4YjE2YTBl
Ny4uODc4ZmI1YzVhNDY2MTg2NmJmMTZlYmIxMjI3MjEyMmVlNjI1MmM3MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaApAQCAtMTU0LDYgKzE1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5v
dGlmeUlzU2FmZVRvQ29sbGVjdCgpIHsgbV9pc1NhZmVUb0NvbGxlY3QgPSB0cnVlOyB9CiAgICAg
Ym9vbCBpc1NhZmVUb0NvbGxlY3QoKSBjb25zdCB7IHJldHVybiBtX2lzU2FmZVRvQ29sbGVjdDsg
fQogCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZUlmTm90RG9u
ZVJlY2VudGx5KCk7CiAgICAgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpIHsgY29sbGVjdEFuZFN3
ZWVwKEZ1bGxDb2xsZWN0aW9uKTsgfQogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVj
dEFuZFN3ZWVwKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUgPSBBbnlDb2xsZWN0aW9uKTsK
ICAgICBib29sIHNob3VsZENvbGxlY3QoKTsKQEAgLTM5NCw3ICszOTUsNyBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxXZWFrQmxvY2sqPiBtX2xvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrczsKICAgICBz
aXplX3QgbV9pbmRleE9mTmV4dExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrVG9Td2VlcCB7IFdURjo6
bm90Rm91bmQgfTsKICAgICAKLSAgICBSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2Z1bGxB
Y3Rpdml0eUNhbGxiYWNrOworICAgIFJlZlB0cjxGdWxsR0NBY3Rpdml0eUNhbGxiYWNrPiBtX2Z1
bGxBY3Rpdml0eUNhbGxiYWNrOwogICAgIFJlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fZWRl
bkFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluY3JlbWVudGFsU3dlZXBl
cj4gbV9zd2VlcGVyOwogICAgIFZlY3RvcjxNYXJrZWRCbG9jayo+IG1fYmxvY2tTbmFwc2hvdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3Bw
CmluZGV4IDFlMTk1N2U0OTBhMDg1OGY3NjEyMmIwMTU4MzA4ZWQ3MDllZmRjZjIuLmUwNzgzZDYx
NWY1MzI1NDg0ZmJlOTUyNjgxOTU1NmI0NmU5N2UwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcApAQCAtNTksMTEgKzU5LDYgQEAg
dm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVyKCkKICAgICBDRlJ1bkxvb3BUaW1l
clNldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpLCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQo
KSArIHNfZGVjYWRlKTsKIH0KIAotdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmZ1bGxTd2VlcCgp
Ci17Ci0gICAgd2hpbGUgKHN3ZWVwTmV4dEJsb2NrKCkpIHsgfQotfQotCiB2b2lkIEluY3JlbWVu
dGFsU3dlZXBlcjo6ZG9Xb3JrKCkKIHsKICAgICBkb1N3ZWVwKFdURjo6bW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCkpOwpAQCAtMTMyLDEwICsxMjcsNiBAQCB2b2lkIEluY3JlbWVudGFsU3dl
ZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5nKCkKIHsKIH0KIAotdm9pZCBJbmNyZW1lbnRhbFN3ZWVw
ZXI6OmZ1bGxTd2VlcCgpCi17Ci19Ci0KIGJvb2wgSW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5l
eHRCbG9jaygpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAppbmRleCA1OTYyMGEwNDg0ZDM1ODMwY2UzOGRl
N2UzMTJhN2UwNWYyN2NlOWM2Li5hODZmZDFjZTRiNzg5OTAzNzlhOGVmYzE4M2U1NmM0NDZlNTE4
MWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3
ZWVwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVw
ZXIuaApAQCAtNDMsNyArNDMsNiBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5jcmVtZW50YWxT
d2VlcGVyKFZNKik7CiAjZW5kaWYKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZnVsbFN3
ZWVwKCk7CiAgICAgdm9pZCBzdGFydFN3ZWVwaW5nKCk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2aXJ0dWFsIHZvaWQgZG9Xb3JrKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvR0NDb250cm9sbGVyLmNwcAppbmRleCBjMGEyYmM0MmFlYzRjMTAwMjMzYWVkNmJjMGM4
YzI4NDAzNWJiOWYzLi5lNThmNjlhNjRhNTY1NWE3ZjI2ZTcwODlmZWE3YWRmYWIyODA3NjhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKQEAgLTkwLDYg
KzkwLDE3IEBAIHZvaWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE5vdygpCiAgICAgfQog
fQogCit2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3ROb3dJZk5vdERvbmVSZWNlbnRs
eSgpCit7CisjaWYgVVNFKENGKQorICAgIEpTTG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93Ojpj
b21tb25WTSgpKTsKKyAgICBpZiAoIUpTRE9NV2luZG93Ojpjb21tb25WTSgpLmhlYXAuaXNCdXN5
KCkpCisgICAgICAgIEpTRE9NV2luZG93Ojpjb21tb25WTSgpLmhlYXAuY29sbGVjdEFsbEdhcmJh
Z2VJZk5vdERvbmVSZWNlbnRseSgpOworI2Vsc2UKKyAgICBnYXJiYWdlQ29sbGVjdFNvb24oKTsK
KyNlbmRpZgorfQorCiB2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0
ZVRocmVhZEZvckRlYnVnZ2luZyhib29sIHdhaXRVbnRpbERvbmUpCiB7CiAgICAgVGhyZWFkSWRl
bnRpZmllciB0aHJlYWRJRCA9IGNyZWF0ZVRocmVhZChjb2xsZWN0LCAwLCAiV2ViQ29yZTogR0ND
b250cm9sbGVyIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0Nv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oCmlu
ZGV4IGZhMzFjZGE3Y2E4MTM1OWFhMjdmOWQyNmVlOTgyYTIxYTE2MzAyYTYuLjk3MjBjM2M4MWRj
YzFjYjdhMjdlNmU3OWMzODE3NjQ3NTEyOWZmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0dDQ29udHJvbGxlci5oCkBAIC00MCw2ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZ2FyYmFnZUNvbGxlY3RTb29uKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBnYXJiYWdlQ29sbGVjdE5vdygpOyAvLyBJdCdzIGJldHRlciB0byBjYWxsIGdhcmJhZ2VD
b2xsZWN0U29vbiwgdW5sZXNzIHlvdSBoYXZlIGEgc3BlY2lmaWMgcmVhc29uIG5vdCB0by4KKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdhcmJhZ2VDb2xsZWN0Tm93SWZOb3REb25lUmVjZW50bHko
KTsKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0T25OZXh0UnVuTG9vcCgpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBnYXJiYWdlQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkRm9yRGVidWdnaW5n
KGJvb2wgd2FpdFVudGlsRG9uZSk7IC8vIFVzZWQgZm9yIHN0cmVzcyB0ZXN0aW5nLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXgg
OWJhZmQ3NDAzZTRmNDZkMWE0YTNlMGE0Y2VjYTRlYTNjYjU2NjdlYi4uMTU0YjU0NjFhMDVhZDk2
NGUyNjA1MTIyODA4YTg1OWFkNzQ5YzRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCkBAIC0xMzksMTkgKzEzOSw4IEBAIHZvaWQg
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlQ3JpdGljYWxNZW1vcnkoU3luY2hyb25vdXMg
c3luY2hyb25vdXMpCiAgICAgaWYgKHN5bmNocm9ub3VzID09IFN5bmNocm9ub3VzOjpZZXMpIHsK
ICAgICAgICAgUmVsaWVmTG9nZ2VyIGxvZygiQ29sbGVjdGluZyBKYXZhU2NyaXB0IGdhcmJhZ2Ui
KTsKICAgICAgICAgR0NDb250cm9sbGVyOjpzaW5nbGV0b24oKS5nYXJiYWdlQ29sbGVjdE5vdygp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8gYSBnYXJiYWdl
IHN3ZWVwIGFuZCBwcnVuZSBkZWFkIHJlc291cmNlcyBmcm9tIHRoZSBNZW1vcnlDYWNoZQotICAg
ICAgICAvLyBhZnRlciB0aGUgZ2FyYmFnZSBjb2xsZWN0aW9uIGhhcyBjb21wbGV0ZWQgdG8gZnJl
ZSB1cCBtb3JlIG1lbW9yeS4KLSAgICAgICAgR0NDb250cm9sbGVyOjpzaW5nbGV0b24oKS5nYXJi
YWdlQ29sbGVjdFNvb24oKTsKLQotICAgICAgICAvLyBEbyBhIGZ1bGwgc3dlZXAgb2YgY29sbGVj
dGVkIG9iamVjdHMuIGdhcmJhZ2VDb2xsZWN0Tm93KCkgYWxyZWFkeSBkb2VzIHRoaXMgc28gd2Ug
b25seQotICAgICAgICAvLyBuZWVkIHRvIGRvIHRoaXMgaWYgaXQgaXNuJ3QgY2FsbGVkLgotICAg
ICAgICB7Ci0gICAgICAgICAgICBSZWxpZWZMb2dnZXIgbG9nKCJGdWxsIEphdmFTY3JpcHQgZ2Fy
YmFnZSBzd2VlcCIpOwotICAgICAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdp
bmRvdzo6Y29tbW9uVk0oKSk7Ci0gICAgICAgICAgICBKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKS5o
ZWFwLnN3ZWVwZXIoKS0+ZnVsbFN3ZWVwKCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgfSBlbHNl
CisgICAgICAgIEdDQ29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2FyYmFnZUNvbGxlY3ROb3dJZk5v
dERvbmVSZWNlbnRseSgpOwogfQogCiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFz
ZU1lbW9yeShDcml0aWNhbCBjcml0aWNhbCwgU3luY2hyb25vdXMgc3luY2hyb25vdXMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>