<?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>126473</bug_id>
          
          <creation_ts>2014-01-03 17:00:39 -0800</creation_ts>
          <short_desc>Simplify process suppression state calculation</short_desc>
          <delta_ts>2014-01-03 17:54:02 -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>WebKit2</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="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>964331</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-01-03 17:00:39 -0800</bug_when>
    <thetext>Don&apos;t check the application occlusion state (this is covered by the pages already), and let the page check visually idle. Remove layers of functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964340</commentid>
    <comment_count>1</comment_count>
      <attachid>220358</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-01-03 17:18:54 -0800</bug_when>
    <thetext>Created attachment 220358
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964347</commentid>
    <comment_count>2</comment_count>
      <attachid>220358</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-01-03 17:33:07 -0800</bug_when>
    <thetext>Comment on attachment 220358
Fix

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

&gt; ../OpenSource/Source/WebKit2/UIProcess/WebPageProxy.cpp:520
&gt; +    return m_viewState &amp; ViewState::IsVisuallyIdle &amp;&amp; m_pageGroup-&gt;preferences()-&gt;pageVisibilityBasedProcessSuppressionEnabled();

Feels like this should have parens to indicate associativity.

&gt; ../OpenSource/Source/WebKit2/UIProcess/mac/WebContextMac.mm:391
&gt; +    for (const auto&amp; context : WebContext::allContexts()) {

Why does this loop use &quot;const auto&amp;&quot; while the other uses &quot;auto*&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964350</commentid>
    <comment_count>3</comment_count>
      <attachid>220358</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-01-03 17:37:03 -0800</bug_when>
    <thetext>Comment on attachment 220358
Fix

Since allContexts() is a vector of WebContext*, and since the range-based for loops do not intend to modify the contents of the vector, I think they should both just say &quot;auto&quot; -- neither &quot;auto*&quot; nor &quot;const auto&amp;&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964351</commentid>
    <comment_count>4</comment_count>
      <attachid>220358</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-03 17:38:30 -0800</bug_when>
    <thetext>Comment on attachment 220358
Fix

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

r=me as well.

&gt;&gt; ../OpenSource/Source/WebKit2/UIProcess/mac/WebContextMac.mm:391
&gt;&gt; +    for (const auto&amp; context : WebContext::allContexts()) {
&gt; 
&gt; Why does this loop use &quot;const auto&amp;&quot; while the other uses &quot;auto*&quot;?

This should use auto*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964358</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-01-03 17:54:02 -0800</bug_when>
    <thetext>Committed revision 161301.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220358</attachid>
            <date>2014-01-03 17:18:54 -0800</date>
            <delta_ts>2014-01-03 17:38:30 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>126473.1.patch</filename>
            <type>text/plain</type>
            <size>19320</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IC4uL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIC4uL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjEy
OTgpCisrKyAuLi9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE0LTAxLTAzICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJh
cnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBwcm9jZXNzIHN1cHByZXNz
aW9uIHN0YXRlIGNhbGN1bGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjY0NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBEb24ndCBjaGVjayB0aGUgYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXRl
ICh0aGlzIGlzIGNvdmVyZWQgYnkgdGhlIHBhZ2VzIGFscmVhZHkpLAorICAgICAgICBhbmQgbGV0
IHRoZSBwYWdlIGNoZWNrIHZpc3VhbGx5IGlkbGUuIFJlbW92ZSBsYXllcnMgb2YgZnVuY3Rpb25z
LgorCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGlu
Zyk6CisgICAgICAgICAgICAtIExldCB0aGUgbmV0d29yayBwcm9jZXNzIG5hcCBpZiBhbGwgcHJv
Y2Vzc2VzIGluIGl0cyBjb250ZXh0IGFyZSBuYXBwaW5nLioKKyAgICAgICAgICAgICAgKCogRXhj
ZXB0IG5vdCByZWFsbHkuIFdlIGN1cnJlbnRseSBsZWFrIGEgYm9vc3Qgb250byB0aGUgcHJvY2Vz
cyBhbnl3YXkuKQorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1
bmNoaW5nKToKKyAgICAgICAgICAgIC0gTGV0IHRoZSBwbHVnaW4gcHJvY2VzcyBuYXAgaWYgYWxs
IHByb2Nlc3NlcyBpbiBhbGwgY29udGV4dHMgYXJlIG5hcHBpbmcuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAgICAgIC0gUmVtb3ZlIGNhbkVuYWJsZVByb2Nlc3NT
dXBwcmVzc2lvbkZvck5ldHdvcmtQcm9jZXNzICYgY2FuRW5hYmxlUHJvY2Vzc1N1cHByZXNzaW9u
Rm9yV2ViUHJvY2VzcworICAgICAgICAgICAgLSBjYW5FbmFibGVQcm9jZXNzU3VwcHJlc3Npb25G
b3JHbG9iYWxDaGlsZFByb2Nlc3NlcyAtPiBwcm9jZXNzU3VwcHJlc3Npb25Jc0VuYWJsZWRGb3JB
bGxDb250ZXh0cworICAgICAgICAgICAgLSBjb21iaW5lIHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lv
blN0YXRlT2ZDaGlsZFByb2Nlc3NlcyAmIHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlT2ZH
bG9iYWxDaGlsZFByb2Nlc3NlcworICAgICAgICAgICAgICAgIC0+IHVwZGF0ZVByb2Nlc3NTdXBw
cmVzc2lvblN0YXRlCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNQcm9jZXNzU3VwcHJlc3NpYmxlKToKKyAgICAg
ICAgICAgIC0gV2ViUHJvY2VzcyBpcyBzdXByZXNzaWJsZSBpZiBJc1Zpc3VhbGx5SWRsZS4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2aWV3U3RhdGVEaWRDaGFuZ2UpOgorICAgICAg
ICAgICAgLSBXZWJQcm9jZXNzUHJveHkgc2hvdWxkIHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0
YXRlIHdoZW4gSXNWaXN1YWxseUlkbGUgY2hhbmdlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6YWRkRXhpc3RpbmdXZWJQYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpwYWdlU3VwcHJlc3NpYmlsaXR5Q2hhbmdlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cGFnZVByZWZlcmVuY2VzQ2hhbmdlZCk6
CisgICAgICAgICAgICAtIHBhZ2VJc1Byb2Nlc3NTdXBwcmVzc2libGUgLT4gaXNQcm9jZXNzU3Vw
cHJlc3NpYmxlCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6dXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9uU3RhdGUpOgorICAgICAgICAgICAgLSBV
cGRhdGUgc3VwcmVzc2lvbiBzdGF0ZSBvZiBuZXR3b3JrICYgcGx1Z2luIHByb2Nlc3Nlcy4KKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cHJvY2Vzc1N1cHByZXNzaW9uSXNFbmFibGVkRm9y
QWxsQ29udGV4dHMpOgorICAgICAgICAgICAgLSBDaGFuZ2VkIGl0ZXJhdG9yIHN0eWxlLCBtYWRl
IGEgc3RhdGljIG1lbWJlciBvZiBXZWJDb250ZXh0LgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V2ViUHJvY2Vzc1Byb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlKToKKyAgICAgICAgICAgIC0gQXNrIHRoZSBX
ZWJDb250ZXh0IHRvIHVwZGF0ZSBzdXByZXNzaW9uIHN0YXRlLgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V2luZG93U2VydmVyQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2VydmVy
Q29ubmVjdGlvbjo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6OldpbmRvd1NlcnZlckNvbm5lY3Rpb246OldpbmRvd1NlcnZlckNvbm5lY3Rpb24p
OgorICAgICAgICAgICAgLSBSZW1vdmUgYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXRlLgorCiAy
MDE0LTAxLTAzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtpT1NdIFtXSzJdIFRpbGVDb250cm9sbGVyIGNyZWF0ZXMgYWxsIHRpbGVzIG9uIGZpcnN0
IHBhaW50LCBtYWtpbmcgaXQgc2xvdyBhbmQgY29uc3VtaW5nIGxvdHMgb2YgbWVtb3J5CkluZGV4
OiAuLi9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gLi4vT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5oCShyZXZpc2lvbiAxNjEyOTEpCisrKyAuLi9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4NCwxMCArMjg0LDcg
QEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZCgpIGNvbnN0OwotICAgIGJvb2wgY2FuRW5hYmxlUHJvY2Vzc1N1cHByZXNzaW9u
Rm9yTmV0d29ya1Byb2Nlc3MoKSBjb25zdDsKLSAgICBib29sIGNhbkVuYWJsZVByb2Nlc3NTdXBw
cmVzc2lvbkZvcldlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5KikgY29uc3Q7Ci0gICAg
c3RhdGljIGJvb2wgY2FuRW5hYmxlUHJvY2Vzc1N1cHByZXNzaW9uRm9yR2xvYmFsQ2hpbGRQcm9j
ZXNzZXMoKTsKLSAgICB2b2lkIHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlT2ZDaGlsZFBy
b2Nlc3NlcygpOworICAgIHN0YXRpYyBib29sIHByb2Nlc3NTdXBwcmVzc2lvbklzRW5hYmxlZEZv
ckFsbENvbnRleHRzKCk7CiAjZW5kaWYKIAogICAgIHZvaWQgd2luZG93U2VydmVyQ29ubmVjdGlv
blN0YXRlQ2hhbmdlZCgpOwpAQCAtMzE4LDcgKzMxNSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lv
blN0YXRlT2ZHbG9iYWxDaGlsZFByb2Nlc3NlcygpOworICAgIHZvaWQgdXBkYXRlUHJvY2Vzc1N1
cHByZXNzaW9uU3RhdGUoKSBjb25zdDsKICNlbmRpZgogCiBwcml2YXRlOgpJbmRleDogLi4vT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSAuLi9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiAxNjEyNjkpCisrKyAuLi9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTUsNiArNTE1
LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCiAjZW5kaWYKIH0K
IAorYm9vbCBXZWJQYWdlUHJveHk6OmlzUHJvY2Vzc1N1cHByZXNzaWJsZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRsZSAmJiBtX3Bh
Z2VHcm91cC0+cHJlZmVyZW5jZXMoKS0+cGFnZVZpc2liaWxpdHlCYXNlZFByb2Nlc3NTdXBwcmVz
c2lvbkVuYWJsZWQoKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKIHsKICAgICBp
ZiAoIWlzVmFsaWQoKSkKQEAgLTk1OCw5ICs5NjMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZp
ZXdTdGF0ZURpZENoYW5nZShWaQogICAgIGlmIChjaGFuZ2VkKQogICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZXdTdGF0ZShtX3ZpZXdTdGF0ZSwgd2FudHNS
ZXBseSA9PSBXYW50c1JlcGx5T3JOb3Q6OkRvZXNXYW50UmVwbHkpLCBtX3BhZ2VJRCk7CiAKLSAg
ICBpZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSB7Ci0gICAgICAgIG1fcHJvY2Vz
cy0+cGFnZVZpc2liaWxpdHlDaGFuZ2VkKHRoaXMpOworICAgIGlmIChjaGFuZ2VkICYgVmlld1N0
YXRlOjpJc1Zpc3VhbGx5SWRsZSkKKyAgICAgICAgbV9wcm9jZXNzLT5wYWdlU3VwcHJlc3NpYmls
aXR5Q2hhbmdlZCh0aGlzKTsKIAorICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2li
bGUpIHsKICAgICAgICAgaWYgKCFpc1ZpZXdWaXNpYmxlKCkpIHsKICAgICAgICAgICAgIC8vIElm
IHdlJ3ZlIHN0YXJ0ZWQgdGhlIHJlc3BvbnNpdmVuZXNzIHRpbWVyIGFzIHBhcnQgb2YgdGVsbGlu
ZyB0aGUgd2ViIHByb2Nlc3MgdG8gdXBkYXRlIHRoZSBiYWNraW5nIHN0b3JlCiAgICAgICAgICAg
ICAvLyBzdGF0ZSwgaXQgbWlnaHQgbm90IHNlbmQgYmFjayBhIHJlcGx5IChzaW5jZSBpdCB3b24n
dCBwYWludCBhbnl0aGluZyBpZiB0aGUgd2ViIHBhZ2UgaXMgaGlkZGVuKSBzbyB3ZQpJbmRleDog
Li4vT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gLi4vT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHJldmlzaW9uIDE2MTI2OSkKKysrIC4uL09wZW5Tb3VyY2UvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjUsNiArNDI1
LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUoKSBjb25zdDsKICAg
ICBib29sIGlzVmlld1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdTdGF0ZSAmIFZpZXdT
dGF0ZTo6SXNWaXNpYmxlOyB9CiAgICAgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSBjb25zdDsK
KyAgICBib29sIGlzUHJvY2Vzc1N1cHByZXNzaWJsZSgpIGNvbnN0OwogCiAgICAgdm9pZCBleGVj
dXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSk7CiAgICAgdm9pZCB2YWxp
ZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgUGFzc1JlZlB0cjxWYWxpZGF0
ZUNvbW1hbmRDYWxsYmFjaz4pOwpJbmRleDogLi4vT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAuLi9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAx
NjEyNjkpCisrKyAuLi9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgUGFzc1JlZlB0
cjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eQogICAgIG1fcGFnZU1hcC5zZXQocGFnZUlE
LCB3ZWJQYWdlLmdldCgpKTsKICAgICBnbG9iYWxQYWdlTWFwKCkuc2V0KHBhZ2VJRCwgd2ViUGFn
ZS5nZXQoKSk7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChwYWdlSXNQcm9jZXNzU3VwcHJl
c3NpYmxlKHdlYlBhZ2UuZ2V0KCkpKQorICAgIGlmICh3ZWJQYWdlLT5pc1Byb2Nlc3NTdXBwcmVz
c2libGUoKSkKICAgICAgICAgbV9wcm9jZXNzU3VwcHJlc3NpYmxlUGFnZXMuYWRkKHBhZ2VJRCk7
CiAgICAgdXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9uU3RhdGUoKTsKICNlbmRpZgpAQCAtMTgyLDcg
KzE4Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRFeGlzdGluZ1dlYlBhZ2UKICAgICBt
X3BhZ2VNYXAuc2V0KHBhZ2VJRCwgd2ViUGFnZSk7CiAgICAgZ2xvYmFsUGFnZU1hcCgpLnNldChw
YWdlSUQsIHdlYlBhZ2UpOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAocGFnZUlzUHJvY2Vz
c1N1cHByZXNzaWJsZSh3ZWJQYWdlKSkKKyAgICBpZiAod2ViUGFnZS0+aXNQcm9jZXNzU3VwcHJl
c3NpYmxlKCkpCiAgICAgICAgIG1fcHJvY2Vzc1N1cHByZXNzaWJsZVBhZ2VzLmFkZChwYWdlSUQp
OwogICAgIHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlKCk7CiAjZW5kaWYKQEAgLTYwMSwx
MCArNjAxLDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRVcGRhdGVIaXN0b3J5VGkKICAg
ICBtX2NvbnRleHQtPmhpc3RvcnlDbGllbnQoKS5kaWRVcGRhdGVIaXN0b3J5VGl0bGUoJm1fY29u
dGV4dC5nZXQoKSwgcGFnZSwgdGl0bGUsIHVybCwgZnJhbWUpOwogfQogCi12b2lkIFdlYlByb2Nl
c3NQcm94eTo6cGFnZVZpc2liaWxpdHlDaGFuZ2VkKFdlYktpdDo6V2ViUGFnZVByb3h5ICpwYWdl
KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnBhZ2VTdXBwcmVzc2liaWxpdHlDaGFuZ2VkKFdlYktp
dDo6V2ViUGFnZVByb3h5ICpwYWdlKQogewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAocGFn
ZUlzUHJvY2Vzc1N1cHByZXNzaWJsZShwYWdlKSkKKyAgICBpZiAocGFnZS0+aXNQcm9jZXNzU3Vw
cHJlc3NpYmxlKCkpCiAgICAgICAgIG1fcHJvY2Vzc1N1cHByZXNzaWJsZVBhZ2VzLmFkZChwYWdl
LT5wYWdlSUQoKSk7CiAgICAgZWxzZQogICAgICAgICBtX3Byb2Nlc3NTdXBwcmVzc2libGVQYWdl
cy5yZW1vdmUocGFnZS0+cGFnZUlEKCkpOwpAQCAtNjE3LDcgKzYxNyw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpwYWdlVmlzaWJpbGl0eUNoYW4KIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpwYWdl
UHJlZmVyZW5jZXNDaGFuZ2VkKFdlYktpdDo6V2ViUGFnZVByb3h5ICpwYWdlKQogewogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBpZiAocGFnZUlzUHJvY2Vzc1N1cHByZXNzaWJsZShwYWdlKSkKKyAg
ICBpZiAocGFnZS0+aXNQcm9jZXNzU3VwcHJlc3NpYmxlKCkpCiAgICAgICAgIG1fcHJvY2Vzc1N1
cHByZXNzaWJsZVBhZ2VzLmFkZChwYWdlLT5wYWdlSUQoKSk7CiAgICAgZWxzZQogICAgICAgICBt
X3Byb2Nlc3NTdXBwcmVzc2libGVQYWdlcy5yZW1vdmUocGFnZS0+cGFnZUlEKCkpOwpJbmRleDog
Li4vT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gLi4vT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDE2MTI2OSkKKysrIC4uL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDYsNyArMTA2LDcgQEAgcHVibGljOgogCiAgICAgRG93bmxvYWRQcm94eSogY3JlYXRlRG93bmxv
YWRQcm94eSgpOwogCi0gICAgdm9pZCBwYWdlVmlzaWJpbGl0eUNoYW5nZWQoV2ViUGFnZVByb3h5
Kik7CisgICAgdm9pZCBwYWdlU3VwcHJlc3NpYmlsaXR5Q2hhbmdlZChXZWJQYWdlUHJveHkqKTsK
ICAgICB2b2lkIHBhZ2VQcmVmZXJlbmNlc0NoYW5nZWQoV2ViUGFnZVByb3h5Kik7CiAKICAgICB2
b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpOwpAQCAtMTE0LDcgKzExNCw2IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKE1BQykKICAgICBib29sIGFsbFBhZ2VzQXJlUHJvY2Vzc1N1cHByZXNzaWJs
ZSgpIGNvbnN0OwotICAgIHN0YXRpYyBib29sIHBhZ2VJc1Byb2Nlc3NTdXBwcmVzc2libGUoV2Vi
UGFnZVByb3h5Kik7CiAgICAgdm9pZCB1cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25TdGF0ZSgpOwog
I2VuZGlmCiAKSW5kZXg6IC4uL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gLi4vT3BlblNvdXJj
ZS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAkocmV2aXNpb24gMTYxMjY5KQorKysgLi4vT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTk0LDcgKzE5NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmMK
ICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMgPSAwOwogCiAjaWYgUExBVEZPUk0o
TUFDKQotICAgIGlmIChtX3dlYkNvbnRleHQuY2FuRW5hYmxlUHJvY2Vzc1N1cHByZXNzaW9uRm9y
TmV0d29ya1Byb2Nlc3MoKSkKKyAgICBpZiAobV93ZWJDb250ZXh0LnByb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWQoKSkKICAgICAgICAgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCh0cnVlKTsK
ICNlbmRpZgogfQpJbmRleDogLi4vT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC4uL09wZW5Tb3Vy
Y2UvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNw
cAkocmV2aXNpb24gMTYxMjY5KQorKysgLi4vT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjUsNyArMjI1LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaAog
ICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cyA9IDA7CiAKICNpZiBQTEFURk9STShN
QUMpCi0gICAgaWYgKFdlYkNvbnRleHQ6OmNhbkVuYWJsZVByb2Nlc3NTdXBwcmVzc2lvbkZvckds
b2JhbENoaWxkUHJvY2Vzc2VzKCkpCisgICAgaWYgKFdlYkNvbnRleHQ6OnByb2Nlc3NTdXBwcmVz
c2lvbklzRW5hYmxlZEZvckFsbENvbnRleHRzKCkpCiAgICAgICAgIHNldFByb2Nlc3NTdXBwcmVz
c2lvbkVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKIH0KSW5kZXg6IC4uL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC4u
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1t
CShyZXZpc2lvbiAxNjEyOTEpCisrKyAuLi9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAxLDMxICsxMDEs
MTcgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZAogICAgIFtbTlNV
c2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVsdHM6cmVnaXN0
cmF0aW9uRGljdGlvbmFyeV07CiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6dXBkYXRlUHJvY2Vzc1N1
cHByZXNzaW9uU3RhdGVPZkdsb2JhbENoaWxkUHJvY2Vzc2VzKCkKK3ZvaWQgV2ViQ29udGV4dDo6
dXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9uU3RhdGUoKSBjb25zdAogewotICAgIC8vIFRoZSBwbGFu
IGlzIHRvIGhhdmUgYWxsIGNoaWxkIHByb2Nlc3NlcyBiZWNvbWUgY29udGV4dCBzcGVjaWZpYy4g
IFRoaXMgZnVuY3Rpb24KLSAgICAvLyBjYW4gYmUgcmVtb3ZlZCBvbmNlIHRoYXQgaXMgY29tcGxl
dGUuCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpIHx8IEVOQUJMRShTSEFSRURfV09S
S0VSX1BST0NFU1MpCi0gICAgYm9vbCBjYW5FbmFibGUgPSBXZWJDb250ZXh0OjpjYW5FbmFibGVQ
cm9jZXNzU3VwcHJlc3Npb25Gb3JHbG9iYWxDaGlsZFByb2Nlc3NlcygpOworI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCisgICAgaWYgKG1fdXNlc05ldHdvcmtQcm9jZXNzICYmIG1fbmV0d29y
a1Byb2Nlc3MpCisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNldFByb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWQocHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpKTsKICNlbmRpZgogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQo
KS5zZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGNhbkVuYWJsZSk7CisgICAgUGx1Z2luUHJv
Y2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQocHJvY2Vz
c1N1cHByZXNzaW9uSXNFbmFibGVkRm9yQWxsQ29udGV4dHMoKSk7CiAjZW5kaWYKIH0KIAotc3Rh
dGljIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uSXNFbmFibGVkRm9yQWxsQ29udGV4dHMoKQotewot
ICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBj
b250ZXh0cyA9IFdlYkNvbnRleHQ6OmFsbENvbnRleHRzKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBp
ZiAoIWNvbnRleHRzW2ldLT5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpIHsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRp
YWxpemUoKQogewogICAgIHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKTsKQEAgLTQwMCwz
MyArMzg2LDEzIEBAIGJvb2wgV2ViQ29udGV4dDo6cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJDb250ZXh0Ojp1cGRhdGVQcm9jZXNzU3VwcHJl
c3Npb25TdGF0ZU9mQ2hpbGRQcm9jZXNzZXMoKQorYm9vbCBXZWJDb250ZXh0Ojpwcm9jZXNzU3Vw
cHJlc3Npb25Jc0VuYWJsZWRGb3JBbGxDb250ZXh0cygpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSAgICBib29sIGNhbkVuYWJsZSA9IGNhbkVuYWJsZVByb2Nlc3NTdXBwcmVzc2lv
bkZvck5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG5l
dHdvcmtQcm9jZXNzKCkpCi0gICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNldFByb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWQoY2FuRW5hYmxlKTsKLSNlbmRpZgotICAgIHNpemVfdCBwcm9jZXNzQ291
bnQgPSBtX3Byb2Nlc3Nlcy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9j
ZXNzQ291bnQ7ICsraSkgewotICAgICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgPSBtX3By
b2Nlc3Nlc1tpXS5nZXQoKTsKLSAgICAgICAgcHJvY2Vzcy0+dXBkYXRlUHJvY2Vzc1N1cHByZXNz
aW9uU3RhdGUoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHQgOiBXZWJDb250ZXh0Ojph
bGxDb250ZXh0cygpKSB7CisgICAgICAgIGlmICghY29udGV4dC0+cHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLX0KLQotYm9vbCBX
ZWJDb250ZXh0OjpjYW5FbmFibGVQcm9jZXNzU3VwcHJlc3Npb25Gb3JOZXR3b3JrUHJvY2Vzcygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIChXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWQoKS5h
cHBsaWNhdGlvbklzT2NjbHVkZWQoKSB8fCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWQo
KS5hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZCgpKSAmJiBwcm9jZXNz
U3VwcHJlc3Npb25FbmFibGVkKCk7Ci19Ci0KLWJvb2wgV2ViQ29udGV4dDo6Y2FuRW5hYmxlUHJv
Y2Vzc1N1cHByZXNzaW9uRm9yV2ViUHJvY2Vzcyhjb25zdCBXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eSAqd2ViUHJvY2VzcykgY29uc3QKLXsKLSAgICByZXR1cm4gV2luZG93U2VydmVyQ29ubmVjdGlv
bjo6c2hhcmVkKCkuYXBwbGljYXRpb25Jc09jY2x1ZGVkKCkgfHwgV2luZG93U2VydmVyQ29ubmVj
dGlvbjo6c2hhcmVkKCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3BwZWQo
KSB8fCB3ZWJQcm9jZXNzLT5hbGxQYWdlc0FyZVByb2Nlc3NTdXBwcmVzc2libGUoKTsKLX0KLQot
Ym9vbCBXZWJDb250ZXh0OjpjYW5FbmFibGVQcm9jZXNzU3VwcHJlc3Npb25Gb3JHbG9iYWxDaGls
ZFByb2Nlc3NlcygpCi17Ci0gICAgcmV0dXJuIChXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaGFy
ZWQoKS5hcHBsaWNhdGlvbklzT2NjbHVkZWQoKSB8fCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpz
aGFyZWQoKS5hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZCgpKSAmJiBw
cm9jZXNzU3VwcHJlc3Npb25Jc0VuYWJsZWRGb3JBbGxDb250ZXh0cygpOworICAgIHJldHVybiB0
cnVlOwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJz
KCkKSW5kZXg6IC4uL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQ
cm9jZXNzUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gLi4vT3BlblNvdXJjZS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbQkocmV2aXNpb24gMTYxMjY5
KQorKysgLi4vT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlByb2Nl
c3NQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTksMTEgKzU5LDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoTwogICAgIGxhdW5jaE9wdGlvbnMudXNlWFBD
ID0gc2hvdWxkVXNlWFBDKCk7CiB9CiAKLWJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpwYWdlSXNQcm9j
ZXNzU3VwcHJlc3NpYmxlKFdlYlBhZ2VQcm94eSogcGFnZSkKLXsKLSAgICByZXR1cm4gIXBhZ2Ut
PmlzVmlld1Zpc2libGUoKSAmJiBwYWdlLT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLT5wYWdl
VmlzaWJpbGl0eUJhc2VkUHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpOwotfQotCiBib29sIFdl
YlByb2Nlc3NQcm94eTo6YWxsUGFnZXNBcmVQcm9jZXNzU3VwcHJlc3NpYmxlKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gKG1fcHJvY2Vzc1N1cHByZXNzaWJsZVBhZ2VzLnNpemUoKSA9PSBtX3BhZ2VN
YXAuc2l6ZSgpKSAmJiAhbV9wcm9jZXNzU3VwcHJlc3NpYmxlUGFnZXMuaXNFbXB0eSgpOwpAQCAt
NzQsMTIgKzY5LDE0IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcm9jZXNzU3VwcHIK
ICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBjYW5FbmFi
bGUgPSBtX2NvbnRleHQtPmNhbkVuYWJsZVByb2Nlc3NTdXBwcmVzc2lvbkZvcldlYlByb2Nlc3Mo
dGhpcyk7CisgICAgYm9vbCBjYW5FbmFibGUgPSBhbGxQYWdlc0FyZVByb2Nlc3NTdXBwcmVzc2li
bGUoKTsKICAgICBpZiAobV9wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkID09IGNhbkVuYWJsZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCA9IGNhbkVu
YWJsZTsKIAogICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0
UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChtX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpLCAw
KTsKKworICAgIG1fY29udGV4dC0+dXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9uU3RhdGUoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiAuLi9PcGVuU291cmNlL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IC4uL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJD
b25uZWN0aW9uLmgJKHJldmlzaW9uIDE2MTI2OSkKKysrIC4uL09wZW5Tb3VyY2UvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDYgQEAgY2xhc3MgV2luZG93U2VydmVyQ29ubmVjdGlvbiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFdpbmRvd1NlcnZlckNvbm5lY3Rpb24mIHNoYXJlZCgpOwogCi0gICAg
Ym9vbCBhcHBsaWNhdGlvbklzT2NjbHVkZWQoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9u
SXNPY2NsdWRlZDsgfQogICAgIGJvb2wgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2
ZVN0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9u
c0hhdmVTdG9wcGVkOyB9CiAKIHByaXZhdGU6CkBAIC00MSwxNiArNDAsMTIgQEAgcHJpdmF0ZToK
ICNpZiBIQVZFKFdJTkRPV19TRVJWRVJfT0NDTFVTSU9OX05PVElGSUNBVElPTlMpCiAgICAgdm9p
ZCB3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCk7CiAKLSAgICB2b2lkIGFwcGxp
Y2F0aW9uQmVjYW1lT2NjbHVkZWQoYm9vbCBvY2NsdWRlZCk7CiAgICAgdm9pZCBhcHBsaWNhdGlv
bldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGJvb2wgc3RvcHBlZCk7CiAKLSAgICBzdGF0aWMg
dm9pZCBhcHBsaWNhdGlvbkJlY2FtZVZpc2libGUodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwg
dm9pZCosIHVpbnQzMl90KTsKLSAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1
ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7CiAgICAgc3Rh
dGljIHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwg
dm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpOwogICAgIHN0YXRpYyB2b2lkIGFwcGxp
Y2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJf
dCwgdm9pZCosIHVpbnQzMl90KTsKICNlbmRpZgogCi0gICAgYm9vbCBtX2FwcGxpY2F0aW9uSXNP
Y2NsdWRlZDsKICAgICBib29sIG1fYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0
b3BwZWQ7CiB9OwogCkluZGV4OiAuLi9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAuLi9PcGVuU291
cmNlL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5t
bQkocmV2aXNpb24gMTYxMjY5KQorKysgLi4vT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTMz
LDE0ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWYgSEFWRShXSU5ET1dfU0VSVkVS
X09DQ0xVU0lPTl9OT1RJRklDQVRJT05TKQogCi12b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246
OmFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQoYm9vbCBvY2NsdWRlZCkKLXsKLSAgICBpZiAobV9h
cHBsaWNhdGlvbklzT2NjbHVkZWQgPT0gb2NjbHVkZWQpCi0gICAgICAgIHJldHVybjsKLSAgICBt
X2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IG9jY2x1ZGVkOwotICAgIHdpbmRvd1NlcnZlckNvbm5l
Y3Rpb25TdGF0ZUNoYW5nZWQoKTsKLX0KLQogdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjph
cHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGJvb2wgc3RvcHBlZCkKIHsKICAg
ICBpZiAobV9hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZCA9PSBzdG9w
cGVkKQpAQCAtNDksMTYgKzQxLDYgQEAgdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBs
aWNhdGlvbgogICAgIHdpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKIH0KIAot
dm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbkJlY2FtZVZpc2libGUodWlu
dDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQotewotICAgIFdpbmRvd1Nl
cnZlckNvbm5lY3Rpb246OnNoYXJlZCgpLmFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQoZmFsc2Up
OwotfQotCi12b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OmFwcGxpY2F0aW9uQmVjYW1lT2Nj
bHVkZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQotewotICAg
IFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNoYXJlZCgpLmFwcGxpY2F0aW9uQmVjYW1lT2NjbHVk
ZWQodHJ1ZSk7Ci19Ci0KIHZvaWQgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25X
aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lk
KiwgdWludDMyX3QpCiB7CiAgICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2hhcmVkKCkuYXBw
bGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZChmYWxzZSk7CkBAIC03MSwxMyArNTMs
OCBAQCB2b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OmFwcGxpY2F0aW9uCiAKIHZvaWQgV2lu
ZG93U2VydmVyQ29ubmVjdGlvbjo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgp
CiB7Ci0gICAgZm9yIChhdXRvKiBjb250ZXh0IDogV2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKSkg
eworICAgIGZvciAoYXV0byogY29udGV4dCA6IFdlYkNvbnRleHQ6OmFsbENvbnRleHRzKCkpCiAg
ICAgICAgIGNvbnRleHQtPndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSkKLSAgICAgICAg
ICAgIGNvbnRleHQtPnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlT2ZDaGlsZFByb2Nlc3Nl
cygpOwotICAgIH0KLQotICAgIFdlYkNvbnRleHQ6OnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0
YXRlT2ZHbG9iYWxDaGlsZFByb2Nlc3NlcygpOwogfQogCiAjZW5kaWYKQEAgLTg5LDggKzY2LDcg
QEAgV2luZG93U2VydmVyQ29ubmVjdGlvbiYgV2luZG93U2VydmVyQ29ubgogfQogCiBXaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uOjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uKCkKLSAgICA6IG1fYXBwbGlj
YXRpb25Jc09jY2x1ZGVkKGZhbHNlKQotICAgICwgbV9hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNh
dGlvbnNIYXZlU3RvcHBlZChmYWxzZSkKKyAgICA6IG1fYXBwbGljYXRpb25XaW5kb3dNb2RpZmlj
YXRpb25zSGF2ZVN0b3BwZWQoZmFsc2UpCiB7CiAjaWYgSEFWRShXSU5ET1dfU0VSVkVSX09DQ0xV
U0lPTl9OT1RJRklDQVRJT05TKQogICAgIHN0cnVjdCBPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5k
bGVyIHsKQEAgLTEwMCw4ICs3Niw2IEBAIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OldpbmRvd1Nl
cnZlckNvbm4KICAgICB9OwogCiAgICAgc3RhdGljIGNvbnN0IE9jY2x1c2lvbk5vdGlmaWNhdGlv
bkhhbmRsZXIgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnNbXSA9IHsKLSAgICAgICAgeyBX
S09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2FtZVZpc2libGUsIGFwcGxp
Y2F0aW9uQmVjYW1lVmlzaWJsZSwgIkFwcGxpY2F0aW9uIEJlY2FtZSBWaXNpYmxlIiB9LAotICAg
ICAgICB7IFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lT2NjbHVk
ZWQsIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQsICJBcHBsaWNhdGlvbiBCZWNhbWUgT2NjbHVk
ZWQiIH0sCiAgICAgICAgIHsgV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25X
aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25z
U3RhcnRlZCwgIkFwcGxpY2F0aW9uIFdpbmRvdyBNb2RpZmljYXRpb25zIFN0YXJ0ZWQiIH0sCiAg
ICAgICAgIHsgV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25XaW5kb3dNb2Rp
ZmljYXRpb25zU3RvcHBlZCwgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwg
IkFwcGxpY2F0aW9uIFdpbmRvdyBNb2RpZmljYXRpb25zIFN0b3BwZWQiIH0sCiAgICAgfTsK
</data>
<flag name="review"
          id="244058"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>