<?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>163855</bug_id>
          
          <creation_ts>2016-10-22 14:35:34 -0700</creation_ts>
          <short_desc>[MediaStream] Separate media capture and audio playback muting</short_desc>
          <delta_ts>2016-10-24 10:56:39 -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>Media</component>
          <version>Other</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>dino</cc>
    
    <cc>jer.noble</cc>
    
    <cc>thiago.lacerda</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1243415</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-10-22 14:35:34 -0700</bug_when>
    <thetext>The host application should be able to mute media capture and audio playback independently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243416</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-10-22 14:36:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/28827186&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243604</commentid>
    <comment_count>2</comment_count>
      <attachid>292579</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-10-23 21:45:00 -0700</bug_when>
    <thetext>Created attachment 292579
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243718</commentid>
    <comment_count>3</comment_count>
      <attachid>292616</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-10-24 09:06:32 -0700</bug_when>
    <thetext>Created attachment 292616
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243738</commentid>
    <comment_count>4</comment_count>
      <attachid>292616</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-24 10:00:13 -0700</bug_when>
    <thetext>Comment on attachment 292616
Proposed patch.

I think an isAudioMuted helper function would help keep this code easy to read.

Is the new failure of fast/mediastream/MediaStreamTrack-stop.html due to the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243745</commentid>
    <comment_count>5</comment_count>
      <attachid>292619</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-10-24 10:12:34 -0700</bug_when>
    <thetext>Created attachment 292619
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243754</commentid>
    <comment_count>6</comment_count>
      <attachid>292620</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-10-24 10:18:19 -0700</bug_when>
    <thetext>Created attachment 292620
Updated patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243756</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-10-24 10:19:29 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 292616 [details]
&gt; Proposed patch.
&gt; 
&gt; I think an isAudioMuted helper function would help keep this code easy to
&gt; read.
&gt; 
Agreed, fixed.

&gt; Is the new failure of fast/mediastream/MediaStreamTrack-stop.html due to the
&gt; patch?
Yes, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243783</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-10-24 10:56:39 -0700</bug_when>
    <thetext>Committed r207764: https://trac.webkit.org/r207764</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292579</attachid>
            <date>2016-10-23 21:45:00 -0700</date>
            <delta_ts>2016-10-24 09:06:32 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>page_muted_patch.txt</filename>
            <type>text/plain</type>
            <size>24154</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE2LTEwLTIzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
U2VwYXJhdGUgbWVkaWEgY2FwdHVyZSBhbmQgYXVkaW8gcGxheWJhY2sgbXV0aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM4NTUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzI4ODI3MTg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tcGFn
ZS1tdXRlZC5odG1sCisKKyAgICAgICAgQ2hhbmdlIHBhZ2UubXV0ZWQgZnJvbSBhIGJvb2wgdG8g
YSBiaXRmaWVsZCBzbyBhdWRpbyBhbmQgbWVkaWEgY2FwdHVyZSBtdXRlZCBhcmUgaW5kZXBlbmRl
bnQuCisgICAgICAgIEZpeCBhIGNvdXBsZSBvZiBidWdzIGluIHRoZSBtb2NrIG1lZGlhIGNhcHR1
cmUgZGV2aWNlIHVuY292ZXJlZCBieSBuZXcgdGVzdCBjYXNlLgorICAgICAgICAKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtOjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSk6IHBhZ2UuaXNNdXRlZCAtPiBw
YWdlLm11dGVkU3RhdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnBhZ2VNdXRlZFN0YXRlRGlk
Q2hhbmdlKTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlVm9sdW1lKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVNdXRlZCk6IERp
dHRvLgorCisgICAgICAgICogcGFnZS9NZWRpYVByb2R1Y2VyLmg6IEFkZCBNdXRlZFN0YXRlIGVu
dW0uCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRNdXRlZCk6IFRha2UgTXV0ZWRTdGF0
ZUZsYWdzIGluc3RlYWQgb2YgYm9vbC4gbV9tdXRlZCAtPiBtX211dGVkU3RhdGUuCisgICAgICAg
ICogcGFnZS9QYWdlLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEpOiBDYWxsIHNldE11dGVkLgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorCisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOiBDYWxs
IGNvcnJlY3QgYmFzZSBjbGFzcyBtZXRob2QuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFBhZ2VNdXRlZCk6IENoYW5n
ZSBwYXJhbWV0ZXIgZnJvbSBhIGJvb2wgdG8gYSBzdHJpbmcuCisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbHMuaDoKKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxNi0x
MC0yMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWVkaWFTdHJlYW1dIER5bmFtaWNhbGx5IGdlbmVyYXRlIG1lZGlhIGNhcHR1cmUgc2FuZGJveCBl
eHRlbnNpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcAkocmV2aXNpb24gMjA3NzA0KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
Niw3ICsyNTYsNyBAQCB2b2lkIE1lZGlhU3RyZWFtOjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nCiAg
ICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBwYWdlTXV0ZWQg
PSBkb2N1bWVudC0+cGFnZSgpLT5pc011dGVkKCk7CisgICAgYm9vbCBwYWdlTXV0ZWQgPSBkb2N1
bWVudC0+cGFnZSgpLT5tdXRlZFN0YXRlKCkgJiBNZWRpYVByb2R1Y2VyOjpDYXB0dXJlRGV2aWNl
c0FyZU11dGVkOwogICAgIGlmIChtX2V4dGVybmFsbHlNdXRlZCA9PSBwYWdlTXV0ZWQpCiAgICAg
ICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcAkocmV2aXNpb24gMjA3NzA0KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzMs
NyArOTczLDcgQEAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIEF1ZGlvQ29udAogdm9p
ZCBBdWRpb0NvbnRleHQ6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkKIHsKICAgICBpZiAobV9k
ZXN0aW5hdGlvbk5vZGUgJiYgZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICBtX2Rlc3RpbmF0
aW9uTm9kZS0+c2V0TXV0ZWQoZG9jdW1lbnQoKS0+cGFnZSgpLT5pc011dGVkKCkpOworICAgICAg
ICBtX2Rlc3RpbmF0aW9uTm9kZS0+c2V0TXV0ZWQoZG9jdW1lbnQoKS0+cGFnZSgpLT5tdXRlZFN0
YXRlKCkgJiBNZWRpYVByb2R1Y2VyOjpBdWRpb0lzTXV0ZWQpOwogfQogCiB2b2lkIEF1ZGlvQ29u
dGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODQ2LDcgKzQ4
NDYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiAKICAgICAgICAg
aWYgKG1fbWVkaWFDb250cm9sbGVyKSB7CiAgICAgICAgICAgICB2b2x1bWVNdWx0aXBsaWVyICo9
IG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKTsKLSAgICAgICAgICAgIHNob3VsZE11dGUgPSBt
X21lZGlhQ29udHJvbGxlci0+bXV0ZWQoKSB8fCAocGFnZSAmJiBwYWdlLT5pc011dGVkKCkpOwor
ICAgICAgICAgICAgc2hvdWxkTXV0ZSA9IG1fbWVkaWFDb250cm9sbGVyLT5tdXRlZCgpIHx8IChw
YWdlICYmIHBhZ2UtPm11dGVkU3RhdGUoKSAmIE1lZGlhUHJvZHVjZXI6OkF1ZGlvSXNNdXRlZCk7
CiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQpAQCAtNzAwNyw3ICs3MDA3
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYWdlTXV0ZWRTdGF0ZURpZAogCiBib29sIEhU
TUxNZWRpYUVsZW1lbnQ6OmVmZmVjdGl2ZU11dGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbXV0
ZWQoKSB8fCAoZG9jdW1lbnQoKS5wYWdlKCkgJiYgZG9jdW1lbnQoKS5wYWdlKCktPmlzTXV0ZWQo
KSk7CisgICAgcmV0dXJuIG11dGVkKCkgfHwgKGRvY3VtZW50KCkucGFnZSgpICYmIGRvY3VtZW50
KCkucGFnZSgpLT5tdXRlZFN0YXRlKCkgJiBNZWRpYVByb2R1Y2VyOjpBdWRpb0lzTXV0ZWQpOwog
fQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUF1ZGlvQXNzZXJ0aW9uU3RhdGUoKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVByb2R1Y2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVByb2R1Y2VyLmgJKHJldmlzaW9uIDIwNzcwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFQcm9kdWNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw2ICs0OCwxNCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBNZWRpYVN0YXRlRmxh
Z3M7CiAKICAgICB2aXJ0dWFsIE1lZGlhU3RhdGVGbGFncyBtZWRpYVN0YXRlKCkgY29uc3QgPSAw
OworCisgICAgZW51bSBNdXRlZFN0YXRlIHsKKyAgICAgICAgTm9uZU11dGVkID0gMCwKKyAgICAg
ICAgQXVkaW9Jc011dGVkID0gMSA8PCAwLAorICAgICAgICBDYXB0dXJlRGV2aWNlc0FyZU11dGVk
ID0gMSA8PCAxLAorICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBNdXRlZFN0YXRlRmxhZ3M7
CisKICAgICB2aXJ0dWFsIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKSA9IDA7CiAKIHBy
b3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjA3NzA0KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDcgKzE5Myw2
IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICAsIG1faW5M
b3dRdWFsaXR5SW50ZXJwb2xhdGlvbk1vZGUoZmFsc2UpCiAgICAgLCBtX2FyZU1lbW9yeUNhY2hl
Q2xpZW50Q2FsbHNFbmFibGVkKHRydWUpCiAgICAgLCBtX21lZGlhVm9sdW1lKDEpCi0gICAgLCBt
X211dGVkKGZhbHNlKQogICAgICwgbV9wYWdlU2NhbGVGYWN0b3IoMSkKICAgICAsIG1fem9vbWVk
T3V0UGFnZVNjYWxlRmFjdG9yKDApCiAgICAgLCBtX3RvcENvbnRlbnRJbnNldCgwKQpAQCAtMTM4
MSwxMiArMTM4MCwxMiBAQCB2b2lkIFBhZ2U6OnVwZGF0ZUlzUGxheWluZ01lZGlhKHVpbnQ2NF90
CiAgICAgY2hyb21lKCkuY2xpZW50KCkuaXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2Uoc3RhdGUsIHNv
dXJjZUVsZW1lbnRJRCk7CiB9CiAKLXZvaWQgUGFnZTo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkKK3Zv
aWQgUGFnZTo6c2V0TXV0ZWQoTWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIG11dGVkKQog
ewotICAgIGlmIChtX211dGVkID09IG11dGVkKQorICAgIGlmIChtX211dGVkU3RhdGUgPT0gbXV0
ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fbXV0ZWQgPSBtdXRlZDsKKyAgICBtX211dGVk
U3RhdGUgPSBtdXRlZDsKIAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlm
ICghZnJhbWUtPmRvY3VtZW50KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjA3NzA0
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4MCw4
ICs0ODAsOCBAQCBwdWJsaWM6CiAKICAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mg
bWVkaWFTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTdGF0ZTsgfQogICAgIHZvaWQgdXBk
YXRlSXNQbGF5aW5nTWVkaWEodWludDY0X3QpOwotICAgIGJvb2wgaXNNdXRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fbXV0ZWQ7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE11dGVkKGJvb2wp
OworICAgIE1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBtdXRlZFN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9tdXRlZFN0YXRlOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNdXRl
ZChNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3MpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZl
bnRUeXBlKTsKQEAgLTYwOSw3ICs2MDksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pbkxvd1F1
YWxpdHlJbnRlcnBvbGF0aW9uTW9kZTsKICAgICBib29sIG1fYXJlTWVtb3J5Q2FjaGVDbGllbnRD
YWxsc0VuYWJsZWQ7CiAgICAgZmxvYXQgbV9tZWRpYVZvbHVtZTsKLSAgICBib29sIG1fbXV0ZWQ7
CisgICAgTWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIG1fbXV0ZWRTdGF0ZSB7IE1lZGlh
UHJvZHVjZXI6Ok5vbmVNdXRlZCB9OwogCiAgICAgZmxvYXQgbV9wYWdlU2NhbGVGYWN0b3I7CiAg
ICAgZmxvYXQgbV96b29tZWRPdXRQYWdlU2NhbGVGYWN0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNw
cAkocmV2aXNpb24gMjA3NzA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsMTgg
QEAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJgogICAgIHJldHVybiBt
X3N1cHBvcnRlZENvbnN0cmFpbnRzOwogfQogCit2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEoKQoreworICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsK
KyAgICBzZXRNdXRlZChmYWxzZSk7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6
OnN0b3BQcm9kdWNpbmdEYXRhKCkKK3sKKyAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwor
ICAgIHNldE11dGVkKHRydWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaAkocmV2aXNpb24gMjA3
NzA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw4ICs2OSw4IEBAIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29u
c3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgPSAwOwog
Ci0gICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZSB7IG1faXNQcm9kdWNpbmdE
YXRhID0gdHJ1ZTsgfQotICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZSB7IG1f
aXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7IH0KKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgp
IG92ZXJyaWRlOworICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZTsKIAogICAg
IFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBv
dmVycmlkZTsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdz
KCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNpb24gMjA3NzA0KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6c3RhcnRQcm9kdQogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdG9wUHJv
ZHVjaW5nRGF0YSgpCiB7Ci0gICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0UHJvZHVj
aW5nRGF0YSgpOworICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0
YSgpOwogICAgIG1fdGltZXIuc3RvcCgpOwogICAgIG1fZWxhcHNlZFRpbWUgKz0gbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX3N0YXJ0VGltZTsKICAgICBtX3N0YXJ0VGltZSA9IE5B
TjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDIwNzcw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODYsNiArODYsNyBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1h
bGxvY1N0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1l
ZGlhUHJvZHVjZXIuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIk1lbW9y
eUluZm8uaCIKICNpbmNsdWRlICJNZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCIKQEAgLTI5NDUsMTQg
KzI5NDYsMjQgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OnBhZ2VPdmVybAogICAg
IHJldHVybiBNb2NrUGFnZU92ZXJsYXlDbGllbnQ6OnNpbmdsZXRvbigpLmxheWVyVHJlZUFzVGV4
dChkb2N1bWVudC0+ZnJhbWUoKS0+bWFpbkZyYW1lKCkpOwogfQogCi12b2lkIEludGVybmFsczo6
c2V0UGFnZU11dGVkKGJvb2wgbXV0ZWQpCit2b2lkIEludGVybmFsczo6c2V0UGFnZU11dGVkKGNv
bnN0IFN0cmluZyYgc3RhdGVzKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHRE
b2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKIAorICAgIFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBzdGF0ZSA9IE1lZGlhUHJvZHVj
ZXI6Ok5vbmVNdXRlZDsKKyAgICBWZWN0b3I8U3RyaW5nPiBzdGF0ZVN0cmluZzsKKyAgICBzdGF0
ZXMuc3BsaXQoJywnLCBmYWxzZSwgc3RhdGVTdHJpbmcpOworICAgIGZvciAoYXV0byYgbXV0ZVN0
cmluZyA6IHN0YXRlU3RyaW5nKSB7CisgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShtdXRlU3RyaW5nLCAiYXVkaW8iKSkKKyAgICAgICAgICAgIHN0YXRlIHw9IE1lZGlh
UHJvZHVjZXI6OkF1ZGlvSXNNdXRlZDsKKyAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKG11dGVTdHJpbmcsICJjYXB0dXJlZGV2aWNlcyIpKQorICAgICAgICAgICAgc3Rh
dGUgfD0gTWVkaWFQcm9kdWNlcjo6Q2FwdHVyZURldmljZXNBcmVNdXRlZDsKKyAgICB9CisKICAg
ICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPnNldE11
dGVkKG11dGVkKTsKKyAgICAgICAgcGFnZS0+c2V0TXV0ZWQoc3RhdGUpOwogfQogCiBib29sIElu
dGVybmFsczo6aXNQYWdlUGxheWluZ0F1ZGlvKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaAkocmV2aXNpb24gMjA3NzA0KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQwLDcgKzQ0MCw3IEBAIHB1YmxpYzoKICAgICBF
eGNlcHRpb25PcjxSZWY8TW9ja1BhZ2VPdmVybGF5Pj4gaW5zdGFsbE1vY2tQYWdlT3ZlcmxheShQ
YWdlT3ZlcmxheVR5cGUpOwogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gcGFnZU92ZXJsYXlMYXll
clRyZWVBc1RleHQoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0UGFnZU11dGVkKGJvb2wpOworICAg
IHZvaWQgc2V0UGFnZU11dGVkKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgaXNQYWdlUGxheWlu
Z0F1ZGlvKCk7CiAKICAgICB2b2lkIHNldFBhZ2VEZWZlcnNMb2FkaW5nKGJvb2wpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMjA3NzA0KQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MTcs
NyArNDE3LDcgQEAgZW51bSBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHsKICAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIE1vY2tQYWdlT3ZlcmxheSBpbnN0YWxsTW9ja1BhZ2VPdmVybGF5KFBh
Z2VPdmVybGF5VHlwZSB0eXBlKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBw
YWdlT3ZlcmxheUxheWVyVHJlZUFzVGV4dCgpOwogCi0gICAgdm9pZCBzZXRQYWdlTXV0ZWQoYm9v
bGVhbiBtdXRlZCk7CisgICAgdm9pZCBzZXRQYWdlTXV0ZWQoRE9NU3RyaW5nIG11dGVkU3RhdGUp
OwogICAgIGJvb2xlYW4gaXNQYWdlUGxheWluZ0F1ZGlvKCk7CiAKICAgICB2b2lkIHNldFBhZ2VE
ZWZlcnNMb2FkaW5nKGJvb2xlYW4gZGVmZXJzTG9hZGluZyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMDc3MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyOCBAQAorMjAxNi0xMC0yMyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1dIFNlcGFyYXRlIG1lZGlhIGNhcHR1
cmUgYW5kIGF1ZGlvIHBsYXliYWNrIG11dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzODU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODgy
NzE4Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6IENoYW5nZSAnbXV0ZWQnIGZyb20g
Ym9vbCB0byBNdXRlZFN0YXRlRmxhZ3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcDogQ2hhbmdlIHBhcmFtZXRlciBmcm9tIGJvb2wgdG8gV0tNZWRpYU11dGVkU3RhdGUu
CisgICAgICAgIChXS1BhZ2VTZXRNdXRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZVByaXZhdGUuaDogRGVmaW5lIFdLTWVkaWFNdXRlZFN0YXRlLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRNdXRlZCk6
IG1fbXV0ZWQgLT4gbV9tdXRlZFN0YXRlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNyZWF0aW9uUGFyYW1ldGVycyk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6aXNNdXRlZCk6IHBhZ2UuaXNNdXRlZCAtPiBw
YWdlLm11dGVkU3RhdGUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjogQ2hhbmdlIFNldE11dGVkIHBhcmFtZXRlci4KKwogMjAxNi0xMC0yMyAgTWlj
aGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10g
UmVtb3ZlIERPIE5PVCBNT0RJRlkgaGVhZGVycyBmcm9tIGZpbGVzIHRoYXQgYXJlIG5vIGxvbmdl
ciBhdXRvZ2VuZXJhdGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GbG9hdFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL01lZGlhUHJvZHVjZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2luYXRpb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXNzaW9uSUQuaD4KQEAgLTk5LDcgKzEwMCw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKICAgICBmbG9hdCB0b3BDb250ZW50SW5zZXQ7CiAgICAgCiAgICAgZmxvYXQgbWVk
aWFWb2x1bWU7Ci0gICAgYm9vbCBtdXRlZDsKKyAgICBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpN
dXRlZFN0YXRlRmxhZ3MgbXV0ZWQ7CiAgICAgYm9vbCBtYXlTdGFydE1lZGlhV2hlbkluV2luZG93
OwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtaW5pbXVtTGF5b3V0U2l6ZTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDQ0LDcgKzQ0NCw2IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGll
bnQmIHAKICAgICAsIG1fc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyhmYWxzZSkKICAgICAsIG1f
YXV0b1NpemluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodChmYWxzZSkKICAgICAsIG1fbWVkaWFW
b2x1bWUoMSkKLSAgICAsIG1fbXV0ZWQoZmFsc2UpCiAgICAgLCBtX21heVN0YXJ0TWVkaWFXaGVu
SW5XaW5kb3codHJ1ZSkKICAgICAsIG1fd2FpdGluZ0ZvckRpZFVwZGF0ZVZpZXdTdGF0ZShmYWxz
ZSkKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTQxNTYsMTcgKzQxNTUsMTcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldE1lZGlhVm9sdW1lKGZsb2F0IAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0TWVkaWFWb2x1bWUodm9sdW1lKSwgbV9wYWdlSUQpOyAgICAKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnNldE11dGVkKGJvb2wgbXV0ZWQpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0TXV0ZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIHN0
YXRlKQogewotICAgIGlmIChtX211dGVkID09IG11dGVkKQorICAgIGlmIChtX211dGVkU3RhdGUg
PT0gc3RhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fbXV0ZWQgPSBtdXRlZDsKKyAgICBt
X211dGVkU3RhdGUgPSBzdGF0ZTsKIAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE11dGVkKG11
dGVkKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0TXV0ZWQoc3RhdGUpLCBtX3BhZ2VJRCk7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
TikKQEAgLTU0ODUsNyArNTQ4NCw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFn
ZVByb3h5OjoKICAgICBwYXJhbWV0ZXJzLnZpZXdTY2FsZUZhY3RvciA9IG1fdmlld1NjYWxlRmFj
dG9yOwogICAgIHBhcmFtZXRlcnMudG9wQ29udGVudEluc2V0ID0gbV90b3BDb250ZW50SW5zZXQ7
CiAgICAgcGFyYW1ldGVycy5tZWRpYVZvbHVtZSA9IG1fbWVkaWFWb2x1bWU7Ci0gICAgcGFyYW1l
dGVycy5tdXRlZCA9IG1fbXV0ZWQ7CisgICAgcGFyYW1ldGVycy5tdXRlZCA9IG1fbXV0ZWRTdGF0
ZTsKICAgICBwYXJhbWV0ZXJzLm1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cgPSBtX21heVN0YXJ0
TWVkaWFXaGVuSW5XaW5kb3c7CiAgICAgcGFyYW1ldGVycy5taW5pbXVtTGF5b3V0U2l6ZSA9IG1f
bWluaW11bUxheW91dFNpemU7CiAgICAgcGFyYW1ldGVycy5hdXRvU2l6aW5nU2hvdWxkRXhwYW5k
VG9WaWV3SGVpZ2h0ID0gbV9hdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0OwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjA3NzA0
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC05MzcsNyArOTM3LDkgQEAgcHVibGljOgogICAgIHZvaWQgcHJpbnRNYWluRnJhbWUo
KTsKICAgICAKICAgICB2b2lkIHNldE1lZGlhVm9sdW1lKGZsb2F0KTsKLSAgICB2b2lkIHNldE11
dGVkKGJvb2wpOworCisgICAgdm9pZCBzZXRNdXRlZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpN
dXRlZFN0YXRlRmxhZ3MpOworCiAgICAgdm9pZCBzZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93
KGJvb2wpOwogICAgIGJvb2wgbWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdygpIGNvbnN0IHsgcmV0
dXJuIG1fbWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdzsgfQogICAgICAgICAKQEAgLTE4NTIsNyAr
MTg1NCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX21pbmltdW1MYXlvdXRT
aXplOwogCiAgICAgZmxvYXQgbV9tZWRpYVZvbHVtZTsKLSAgICBib29sIG1fbXV0ZWQ7CisgICAg
V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIG1fbXV0ZWRTdGF0ZSB7IFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok5vbmVNdXRlZCB9OwogICAgIGJvb2wgbV9tYXlTdGFydE1l
ZGlhV2hlbkluV2luZG93OwogCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JEaWRVcGRhdGVWaWV3U3Rh
dGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2
aXNpb24gMjA3NzA0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MDEsNyArMjYwMSw3IEBAIHZvaWQgV0tQYWdlU2V0TWVk
aWFWb2x1bWUoV0tQYWdlUmVmIHBhZ2UKICAgICB0b0ltcGwocGFnZSktPnNldE1lZGlhVm9sdW1l
KHZvbHVtZSk7ICAgIAogfQogCi12b2lkIFdLUGFnZVNldE11dGVkKFdLUGFnZVJlZiBwYWdlLCBi
b29sIG11dGVkKQordm9pZCBXS1BhZ2VTZXRNdXRlZChXS1BhZ2VSZWYgcGFnZSwgV0tNZWRpYU11
dGVkU3RhdGUgbXV0ZWQpCiB7CiAgICAgdG9JbXBsKHBhZ2UpLT5zZXRNdXRlZChtdXRlZCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRl
LmgJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsMTQgQEAgV0tfRVhQ
T1JUIGJvb2wgV0tQYWdlR2V0QWRkc1Zpc2l0ZWRMaW5rcwogV0tfRVhQT1JUIHZvaWQgV0tQYWdl
U2V0QWRkc1Zpc2l0ZWRMaW5rcyhXS1BhZ2VSZWYgcGFnZSwgYm9vbCB2aXNpdGVkTGlua3MpOwog
CiBXS19FWFBPUlQgYm9vbCBXS1BhZ2VJc1BsYXlpbmdBdWRpbyhXS1BhZ2VSZWYgcGFnZSk7Ci1X
S19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRNdXRlZChXS1BhZ2VSZWYgcGFnZSwgYm9vbCBtdXRlZCk7
CisKK2VudW0geworICAgIGtXS01lZGlhTm9uZU11dGVkID0gMCwKKyAgICBrV0tNZWRpYUF1ZGlv
TXV0ZWQgPSAxIDw8IDAsCisgICAga1dLTWVkaWFDYXB0dXJlRGV2aWNlc011dGVkID0gMSA8PCAx
LAorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tNZWRpYU11dGVkU3RhdGU7CitXS19FWFBPUlQgdm9p
ZCBXS1BhZ2VTZXRNdXRlZChXS1BhZ2VSZWYgcGFnZSwgV0tNZWRpYU11dGVkU3RhdGUgbXV0ZWQp
OwogCiBlbnVtIHsKICAgICBrV0tNZWRpYUlzTm90UGxheWluZyA9IDAsCkBAIC0xMzAsNiArMTM3
LDcgQEAgZW51bSB7CiB9OwogdHlwZWRlZiB1aW50MzJfdCBXS01lZGlhU3RhdGU7CiAKKwogV0tf
RVhQT1JUIFdLTWVkaWFTdGF0ZSBXS1BhZ2VHZXRNZWRpYVN0YXRlKFdLUGFnZVJlZiBwYWdlKTsK
IAogZW51bSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MzEsNyAr
MTUzMSw3IEBAIGJvb2wgUGx1Z2luVmlldzo6aXNNdXRlZCgpIGNvbnN0CiAgICAgaWYgKCFmcmFt
ZSgpIHx8ICFmcmFtZSgpLT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJl
dHVybiBmcmFtZSgpLT5wYWdlKCktPmlzTXV0ZWQoKTsKKyAgICByZXR1cm4gZnJhbWUoKS0+cGFn
ZSgpLT5tdXRlZFN0YXRlKCkgJiBNZWRpYVByb2R1Y2VyOjpBdWRpb0lzTXV0ZWQ7CiB9CiAjZW5k
aWYKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTQsNyArMzE0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAK
ICAgICAjIE1lZGlhCiAgICAgU2V0TWVkaWFWb2x1bWUoZmxvYXQgdm9sdW1lKQotICAgIFNldE11
dGVkKGJvb2wgbXV0ZWQpCisgICAgU2V0TXV0ZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0
ZWRTdGF0ZUZsYWdzIG11dGVkKQogICAgIFNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coYm9v
bCBtYXlTdGFydE1lZGlhKQogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMDc3MDQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxNi0xMC0yMyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1dIFNlcGFyYXRlIG1lZGlhIGNhcHR1
cmUgYW5kIGF1ZGlvIHBsYXliYWNrIG11dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzODU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODgy
NzE4Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tcGFnZS1tdXRlZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tcGFnZS1tdXRlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby1tdXRlZC1hZnRlci1zZXR0aW5nLXBh
Z2UtbXV0ZWQtc3RhdGUuaHRtbDogVXBkYXRlZC4KKwogMjAxNi0xMC0yMSAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVcGRhdGUgY3VzdG9tIGVsZW1lbnRzIHRl
c3RzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXBhZ2Ut
bXV0ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0tcGFnZS1tdXRlZC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1wYWdlLW11dGVkLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACitUZXN0IGVuYWJsaW5n
L2Rpc2FibGluZyBtb2NrIG1lZGlhIGNhcHR1cmUgZGV2aWNlcworCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworCisqKiogTW9jayBjYXB0dXJlIGRldmljZXMgc2hvdWxkIGJlIGVuYWJs
ZWQgYnkgZGVmYXVsdAorUEFTUyBtZWRpYVN0cmVhbSBpcyBhbiBpbnN0YW5jZSBvZiBPYmplY3QK
K1BBU1MgbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkubGVuZ3RoIGlzIDIKKworKioqIE11dGluZyBj
YXB0dXJlIGRldmljZXMKK0VWRU5UOiBtdXRlCitQQVNTIGV2ZW50LnRhcmdldC5tdXRlZCBpcyB0
cnVlCisKK0VWRU5UOiBtdXRlCitQQVNTIGV2ZW50LnRhcmdldC5tdXRlZCBpcyB0cnVlCisKKwor
KioqIFVubXV0aW5nIGNhcHR1cmUgZGV2aWNlcworRVZFTlQ6IHVubXV0ZQorUEFTUyBldmVudC50
YXJnZXQubXV0ZWQgaXMgZmFsc2UKKworRVZFTlQ6IHVubXV0ZQorUEFTUyBldmVudC50YXJnZXQu
bXV0ZWQgaXMgZmFsc2UKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0tcGFnZS1tdXRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0tcGFnZS1tdXRlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tcGFnZS1tdXRlZC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgbGV0IG1lZGlhU3Ry
ZWFtOworICAgICAgICAgICAgbGV0IGV2ZW50Q291bnQgPSAwOworCisgICAgICAgICAgICBmdW5j
dGlvbiBtdXRlQ2hhbmdlZChldikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVu
dCA9IGV2OworICAgICAgICAgICAgICAgIGRlYnVnKGBFVkVOVDogJHtldi50eXBlfWApOworICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCdldmVudC50YXJnZXQubXV0ZWQnLCAoZXYudHlwZSA9PSAi
bXV0ZSIpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKworICAgICAg
ICAgICAgICAgIGlmICgrK2V2ZW50Q291bnQgPT0gMikgeworICAgICAgICAgICAgICAgICAgICBl
dmVudENvdW50ID0gMDsKKworICAgICAgICAgICAgICAgICAgICBpZiAoZXYudHlwZSA9PSAidW5t
dXRlIikgeworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZGVidWcoIjxicj4qKiogVW5tdXRpbmcgY2FwdHVyZSBkZXZpY2VzIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGFnZU11dGVkKCIiKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgZnVuY3Rpb24gdGVzdFdoZW5FbmFibGVkKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzCisgICAgICAgICAgICAgICAg
ICAgIC5nZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp7fX0pCisgICAgICAgICAgICAgICAg
ICAgIC50aGVuKHN0cmVhbSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYVN0cmVh
bSA9IHN0cmVhbTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlVHlwZSgibWVkaWFT
dHJlYW0iLCAiT2JqZWN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgibWVk
aWFTdHJlYW0uZ2V0VHJhY2tzKCkubGVuZ3RoIiwgIjIiKTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHRyYWNrcyA9IG1lZGlhU3RyZWFtLmdldFRyYWNrcygpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmFja3MubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja3NbaV0ub25tdXRlID0gbXV0ZUNoYW5nZWQ7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tzW2ldLm9udW5tdXRlID0gbXV0ZUNo
YW5nZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVidWcoIjxicj4qKiogTXV0aW5nIGNhcHR1cmUgZGV2aWNlcyIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVybmFscy5zZXRQYWdlTXV0ZWQoImNhcHR1cmVkZXZpY2VzIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAg
ICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKGBtZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCkgZmFpbGVkIHdpdGggJHtlcnIu
bmFtZX1gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
c3RhcnQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlYnVnKGA8YnI+KioqIE1v
Y2sgY2FwdHVyZSBkZXZpY2VzIHNob3VsZCBiZSBlbmFibGVkIGJ5IGRlZmF1bHRgKTsKKyAgICAg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlzc2lvbih0cnVlKTsKKworICAgICAgICAgICAgICAg
IHRlc3RXaGVuRW5hYmxlZCgpOworICAgICAgICAgICAgfQorCisgICAgICAgIDwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKworICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAgIDxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0IGVuYWJsaW5nL2Rp
c2FibGluZyBtb2NrIG1lZGlhIGNhcHR1cmUgZGV2aWNlcyIpOworICAgICAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgICAgICB3aW5kb3cuc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1tdXRlZC1hZnRlci1zZXR0aW5n
LXBhZ2UtbXV0ZWQtc3RhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1tdXRlZC1hZnRlci1zZXR0aW5nLXBhZ2UtbXV0ZWQtc3RhdGUuaHRtbAkocmV2aXNpb24g
MjA3NzA0KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbXV0ZWQtYWZ0ZXItc2V0dGluZy1w
YWdlLW11dGVkLXN0YXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsMTMgKzUsMTMgQEAKIDxz
Y3JpcHQ+CiAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tdXRlZCIsIGZhbHNlKTsKICAgICBpZiAo
d2luZG93LmludGVybmFscykKLSAgICAgICAgaW50ZXJuYWxzLnNldFBhZ2VNdXRlZCh0cnVlKTsK
KyAgICAgICAgaW50ZXJuYWxzLnNldFBhZ2VNdXRlZCgiYXVkaW8iKTsKICAgICB0ZXN0RXhwZWN0
ZWQoInZpZGVvLm11dGVkIiwgZmFsc2UpOwogCiAgICAgcnVuKCJ2aWRlby5tdXRlZCA9IHRydWUi
KTsKICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm11dGVkIiwgdHJ1ZSk7CiAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCi0gICAgICAgIGludGVybmFscy5zZXRQYWdlTXV0ZWQoZmFsc2UpOworICAg
ICAgICBpbnRlcm5hbHMuc2V0UGFnZU11dGVkKCIiKTsKICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
Lm11dGVkIiwgdHJ1ZSk7CiAgICAgZW5kVGVzdCgpOwogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292616</attachid>
            <date>2016-10-24 09:06:32 -0700</date>
            <delta_ts>2016-10-24 10:12:34 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>page_muted_patch_3.txt</filename>
            <type>text/plain</type>
            <size>24847</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE2LTEwLTI0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
U2VwYXJhdGUgbWVkaWEgY2FwdHVyZSBhbmQgYXVkaW8gcGxheWJhY2sgbXV0aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM4NTUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzI4ODI3MTg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tcGFn
ZS1tdXRlZC5odG1sCisKKyAgICAgICAgQ2hhbmdlIHBhZ2UubXV0ZWQgZnJvbSBhIGJvb2wgdG8g
YSBiaXRmaWVsZCBzbyBhdWRpbyBhbmQgbWVkaWEgY2FwdHVyZSBtdXRlZCBhcmUgaW5kZXBlbmRl
bnQuCisgICAgICAgIEZpeCBhIGNvdXBsZSBvZiBidWdzIGluIHRoZSBtb2NrIG1lZGlhIGNhcHR1
cmUgZGV2aWNlIHVuY292ZXJlZCBieSBuZXcgdGVzdCBjYXNlLgorICAgICAgICAKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtOjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSk6IHBhZ2UuaXNNdXRlZCAtPiBw
YWdlLm11dGVkU3RhdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnBhZ2VNdXRlZFN0YXRlRGlk
Q2hhbmdlKTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlVm9sdW1lKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVNdXRlZCk6IERp
dHRvLgorCisgICAgICAgICogcGFnZS9NZWRpYVByb2R1Y2VyLmg6IEFkZCBNdXRlZFN0YXRlIGVu
dW0uCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRNdXRlZCk6IFRha2UgTXV0ZWRTdGF0
ZUZsYWdzIGluc3RlYWQgb2YgYm9vbC4gbV9tdXRlZCAtPiBtX211dGVkU3RhdGUuCisgICAgICAg
ICogcGFnZS9QYWdlLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEpOiBDYWxsIHNldE11dGVkLgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorCisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOiBDYWxs
IGNvcnJlY3QgYmFzZSBjbGFzcyBtZXRob2QuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFBhZ2VNdXRlZCk6IENoYW5n
ZSBwYXJhbWV0ZXIgZnJvbSBhIGJvb2wgdG8gYSBzdHJpbmcuCisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbHMuaDoKKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxNi0x
MC0yMSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtNb2Rl
cm4gTWVkaWEgQ29udHJvbHNdIENvbmNhdGVuYXRlIEpTIGFuZCBDU1MgZmlsZXMgaW50byBhIHNp
bmdsZSBKUyBhbmQgQ1NTIHJlc291cmNlcwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHJldmlzaW9uIDIwNzc1OCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBNZWRpYVN0cmVhbTo6cGFnZU11dGVk
U3RhdGVEaWRDaGFuZwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGJvb2wgcGFnZU11dGVkID0gZG9jdW1lbnQtPnBhZ2UoKS0+aXNNdXRlZCgpOworICAgIGJvb2wg
cGFnZU11dGVkID0gZG9jdW1lbnQtPnBhZ2UoKS0+bXV0ZWRTdGF0ZSgpICYgTWVkaWFQcm9kdWNl
cjo6Q2FwdHVyZURldmljZXNBcmVNdXRlZDsKICAgICBpZiAobV9leHRlcm5hbGx5TXV0ZWQgPT0g
cGFnZU11dGVkKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHJldmlzaW9uIDIwNzc1OCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTczLDcgKzk3Myw3IEBAIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFn
cyBBdWRpb0NvbnQKIHZvaWQgQXVkaW9Db250ZXh0OjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgp
CiB7CiAgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlICYmIGRvY3VtZW50KCktPnBhZ2UoKSkKLSAg
ICAgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnNldE11dGVkKGRvY3VtZW50KCktPnBhZ2UoKS0+aXNN
dXRlZCgpKTsKKyAgICAgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnNldE11dGVkKGRvY3VtZW50KCkt
PnBhZ2UoKS0+bXV0ZWRTdGF0ZSgpICYgTWVkaWFQcm9kdWNlcjo6QXVkaW9Jc011dGVkKTsKIH0K
IAogdm9pZCBBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjA3NzU4KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDg0Niw3ICs0ODQ2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1
bWUoKQogCiAgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikgewogICAgICAgICAgICAgdm9s
dW1lTXVsdGlwbGllciAqPSBtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCk7Ci0gICAgICAgICAg
ICBzaG91bGRNdXRlID0gbV9tZWRpYUNvbnRyb2xsZXItPm11dGVkKCkgfHwgKHBhZ2UgJiYgcGFn
ZS0+aXNNdXRlZCgpKTsKKyAgICAgICAgICAgIHNob3VsZE11dGUgPSBtX21lZGlhQ29udHJvbGxl
ci0+bXV0ZWQoKSB8fCAocGFnZSAmJiBwYWdlLT5tdXRlZFN0YXRlKCkgJiBNZWRpYVByb2R1Y2Vy
OjpBdWRpb0lzTXV0ZWQpOwogICAgICAgICB9CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
QEAgLTcwMDcsNyArNzAwNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGFnZU11dGVkU3Rh
dGVEaWQKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVNdXRlZCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG11dGVkKCkgfHwgKGRvY3VtZW50KCkucGFnZSgpICYmIGRvY3VtZW50KCku
cGFnZSgpLT5pc011dGVkKCkpOworICAgIHJldHVybiBtdXRlZCgpIHx8IChkb2N1bWVudCgpLnBh
Z2UoKSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+bXV0ZWRTdGF0ZSgpICYgTWVkaWFQcm9kdWNlcjo6
QXVkaW9Jc011dGVkKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBdWRpb0Fz
c2VydGlvblN0YXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFQcm9kdWNlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFQcm9kdWNlci5oCShyZXZp
c2lvbiAyMDc3NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhUHJvZHVjZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTQgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdW5zaWdu
ZWQgTWVkaWFTdGF0ZUZsYWdzOwogCiAgICAgdmlydHVhbCBNZWRpYVN0YXRlRmxhZ3MgbWVkaWFT
dGF0ZSgpIGNvbnN0ID0gMDsKKworICAgIGVudW0gTXV0ZWRTdGF0ZSB7CisgICAgICAgIE5vbmVN
dXRlZCA9IDAsCisgICAgICAgIEF1ZGlvSXNNdXRlZCA9IDEgPDwgMCwKKyAgICAgICAgQ2FwdHVy
ZURldmljZXNBcmVNdXRlZCA9IDEgPDwgMSwKKyAgICB9OworICAgIHR5cGVkZWYgdW5zaWduZWQg
TXV0ZWRTdGF0ZUZsYWdzOworCiAgICAgdmlydHVhbCB2b2lkIHBhZ2VNdXRlZFN0YXRlRGlkQ2hh
bmdlKCkgPSAwOwogCiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9u
IDIwNzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5Myw3ICsxOTMsNiBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNv
bmZpCiAgICAgLCBtX2luTG93UXVhbGl0eUludGVycG9sYXRpb25Nb2RlKGZhbHNlKQogICAgICwg
bV9hcmVNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZCh0cnVlKQogICAgICwgbV9tZWRpYVZv
bHVtZSgxKQotICAgICwgbV9tdXRlZChmYWxzZSkKICAgICAsIG1fcGFnZVNjYWxlRmFjdG9yKDEp
CiAgICAgLCBtX3pvb21lZE91dFBhZ2VTY2FsZUZhY3RvcigwKQogICAgICwgbV90b3BDb250ZW50
SW5zZXQoMCkKQEAgLTEzODEsMTIgKzEzODAsMTIgQEAgdm9pZCBQYWdlOjp1cGRhdGVJc1BsYXlp
bmdNZWRpYSh1aW50NjRfdAogICAgIGNocm9tZSgpLmNsaWVudCgpLmlzUGxheWluZ01lZGlhRGlk
Q2hhbmdlKHN0YXRlLCBzb3VyY2VFbGVtZW50SUQpOwogfQogCi12b2lkIFBhZ2U6OnNldE11dGVk
KGJvb2wgbXV0ZWQpCit2b2lkIFBhZ2U6OnNldE11dGVkKE1lZGlhUHJvZHVjZXI6Ok11dGVkU3Rh
dGVGbGFncyBtdXRlZCkKIHsKLSAgICBpZiAobV9tdXRlZCA9PSBtdXRlZCkKKyAgICBpZiAobV9t
dXRlZFN0YXRlID09IG11dGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX211dGVkID0gbXV0
ZWQ7CisgICAgbV9tdXRlZFN0YXRlID0gbXV0ZWQ7CiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQo
KSkgewogICAgICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJ
KHJldmlzaW9uIDIwNzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00ODAsOCArNDgwLDggQEAgcHVibGljOgogCiAgICAgTWVkaWFQcm9kdWNlcjo6
TWVkaWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX21lZGlhU3RhdGU7
IH0KICAgICB2b2lkIHVwZGF0ZUlzUGxheWluZ01lZGlhKHVpbnQ2NF90KTsKLSAgICBib29sIGlz
TXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRNdXRlZChib29sKTsKKyAgICBNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3MgbXV0
ZWRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWRTdGF0ZTsgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TXV0ZWQoTWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzKTsKIAogI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlTWVk
aWFFdmVudChNZWRpYUV2ZW50VHlwZSk7CkBAIC02MDksNyArNjA5LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1faW5Mb3dRdWFsaXR5SW50ZXJwb2xhdGlvbk1vZGU7CiAgICAgYm9vbCBtX2FyZU1l
bW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkOwogICAgIGZsb2F0IG1fbWVkaWFWb2x1bWU7Ci0g
ICAgYm9vbCBtX211dGVkOworICAgIE1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBtX211
dGVkU3RhdGUgeyBNZWRpYVByb2R1Y2VyOjpOb25lTXV0ZWQgfTsKIAogICAgIGZsb2F0IG1fcGFn
ZVNjYWxlRmFjdG9yOwogICAgIGZsb2F0IG1fem9vbWVkT3V0UGFnZVNjYWxlRmFjdG9yOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZS5jcHAJKHJldmlzaW9uIDIwNzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjQsNiArMTI0LDE4IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50
cyYKICAgICByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIH0KIAordm9pZCBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKK3sKKyAgICBtX2lzUHJvZHVj
aW5nRGF0YSA9IHRydWU7CisgICAgc2V0TXV0ZWQoZmFsc2UpOworfQorCit2b2lkIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCit7CisgICAgbV9pc1Byb2R1Y2lu
Z0RhdGEgPSBmYWxzZTsKKyAgICBzZXRNdXRlZCh0cnVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
LmgJKHJldmlzaW9uIDIwNzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjksOCArNjksOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlh
bGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25z
dHJhaW50cyYpID0gMDsKIAotICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgb3ZlcnJpZGUg
eyBtX2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7IH0KLSAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRh
KCkgb3ZlcnJpZGUgeyBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOyB9CisgICAgdm9pZCBzdGFy
dFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkg
b3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4g
Y2FwYWJpbGl0aWVzKCkgb3ZlcnJpZGU7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzJiBzZXR0aW5ncygpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJKHJldmlz
aW9uIDIwNzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0YXJ0UHJvZHUKIAogdm9pZCBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewotICAgIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6
c3RvcFByb2R1Y2luZ0RhdGEoKTsKICAgICBtX3RpbWVyLnN0b3AoKTsKICAgICBtX2VsYXBzZWRU
aW1lICs9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9zdGFydFRpbWU7CiAgICAg
bV9zdGFydFRpbWUgPSBOQU47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CShyZXZpc2lvbiAyMDc3NTgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAKICNpbmNsdWRlICJNYWluRnJhbWUu
aCIKICNpbmNsdWRlICJNYWxsb2NTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIu
aCIKKyNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIK
ICNpbmNsdWRlICJNZW1vcnlJbmZvLmgiCiAjaW5jbHVkZSAiTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmgiCkBAIC0yOTQ1LDE0ICsyOTQ2LDI0IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxz
OjpwYWdlT3ZlcmwKICAgICByZXR1cm4gTW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpzaW5nbGV0b24o
KS5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQtPmZyYW1lKCktPm1haW5GcmFtZSgpKTsKIH0KIAot
dm9pZCBJbnRlcm5hbHM6OnNldFBhZ2VNdXRlZChib29sIG11dGVkKQordm9pZCBJbnRlcm5hbHM6
OnNldFBhZ2VNdXRlZChjb25zdCBTdHJpbmcmIHN0YXRlcykKIHsKICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3Mgc3Rh
dGUgPSBNZWRpYVByb2R1Y2VyOjpOb25lTXV0ZWQ7CisgICAgVmVjdG9yPFN0cmluZz4gc3RhdGVT
dHJpbmc7CisgICAgc3RhdGVzLnNwbGl0KCcsJywgZmFsc2UsIHN0YXRlU3RyaW5nKTsKKyAgICBm
b3IgKGF1dG8mIG11dGVTdHJpbmcgOiBzdGF0ZVN0cmluZykgeworICAgICAgICBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobXV0ZVN0cmluZywgImF1ZGlvIikpCisgICAgICAgICAg
ICBzdGF0ZSB8PSBNZWRpYVByb2R1Y2VyOjpBdWRpb0lzTXV0ZWQ7CisgICAgICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtdXRlU3RyaW5nLCAiY2FwdHVyZWRldmljZXMiKSkK
KyAgICAgICAgICAgIHN0YXRlIHw9IE1lZGlhUHJvZHVjZXI6OkNhcHR1cmVEZXZpY2VzQXJlTXV0
ZWQ7CisgICAgfQorCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpKQotICAg
ICAgICBwYWdlLT5zZXRNdXRlZChtdXRlZCk7CisgICAgICAgIHBhZ2UtPnNldE11dGVkKHN0YXRl
KTsKIH0KIAogYm9vbCBJbnRlcm5hbHM6OmlzUGFnZVBsYXlpbmdBdWRpbygpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDIwNzc1OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0MCw3ICs0NDAsNyBA
QCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8UmVmPE1vY2tQYWdlT3ZlcmxheT4+IGluc3RhbGxN
b2NrUGFnZU92ZXJsYXkoUGFnZU92ZXJsYXlUeXBlKTsKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+
IHBhZ2VPdmVybGF5TGF5ZXJUcmVlQXNUZXh0KCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldFBhZ2VN
dXRlZChib29sKTsKKyAgICB2b2lkIHNldFBhZ2VNdXRlZChjb25zdCBTdHJpbmcmKTsKICAgICBi
b29sIGlzUGFnZVBsYXlpbmdBdWRpbygpOwogCiAgICAgdm9pZCBzZXRQYWdlRGVmZXJzTG9hZGlu
Zyhib29sKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9u
IDIwNzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDE3LDcgKzQxNyw3IEBAIGVudW0gVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbiB7CiAgICAgW01heVRocm93RXhjZXB0aW9uXSBNb2NrUGFnZU92ZXJsYXkgaW5zdGFsbE1v
Y2tQYWdlT3ZlcmxheShQYWdlT3ZlcmxheVR5cGUgdHlwZSk7CiAgICAgW01heVRocm93RXhjZXB0
aW9uXSBET01TdHJpbmcgcGFnZU92ZXJsYXlMYXllclRyZWVBc1RleHQoKTsKIAotICAgIHZvaWQg
c2V0UGFnZU11dGVkKGJvb2xlYW4gbXV0ZWQpOworICAgIHZvaWQgc2V0UGFnZU11dGVkKERPTVN0
cmluZyBtdXRlZFN0YXRlKTsKICAgICBib29sZWFuIGlzUGFnZVBsYXlpbmdBdWRpbygpOwogCiAg
ICAgdm9pZCBzZXRQYWdlRGVmZXJzTG9hZGluZyhib29sZWFuIGRlZmVyc0xvYWRpbmcpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NzU4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTYtMTAtMjQgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhU3RyZWFtXSBTZXBh
cmF0ZSBtZWRpYSBjYXB0dXJlIGFuZCBhdWRpbyBwbGF5YmFjayBtdXRpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mzg1NQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjg4MjcxODY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOiBDaGFu
Z2UgJ211dGVkJyBmcm9tIGJvb2wgdG8gTXV0ZWRTdGF0ZUZsYWdzLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6IENoYW5nZSBwYXJhbWV0ZXIgZnJvbSBib29sIHRvIFdL
TWVkaWFNdXRlZFN0YXRlLgorICAgICAgICAoV0tQYWdlU2V0TXV0ZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmg6IERlZmluZSBXS01lZGlhTXV0ZWRTdGF0ZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2V0TXV0ZWQpOiBtX211dGVkIC0+IG1fbXV0ZWRTdGF0ZS4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBEaXR0by4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmlzTXV0ZWQpOiBw
YWdlLmlzTXV0ZWQgLT4gcGFnZS5tdXRlZFN0YXRlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IENoYW5nZSBTZXRNdXRlZCBwYXJhbWV0ZXIuCisK
IDIwMTYtMTAtMjMgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdIFJlbW92ZSBETyBOT1QgTU9ESUZZIGhlYWRlcnMgZnJvbSBmaWxlcyB0
aGF0IGFyZSBubyBsb25nZXIgYXV0b2dlbmVyYXRlZApJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMDc3NTgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRT
aXplLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVByb2R1Y2VyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdpbmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CkBAIC05OSw3ICsxMDAsNyBAQCBzdHJ1Y3QgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgZmxvYXQgdG9wQ29udGVudEluc2V0OwogICAg
IAogICAgIGZsb2F0IG1lZGlhVm9sdW1lOwotICAgIGJvb2wgbXV0ZWQ7CisgICAgV2ViQ29yZTo6
TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIG11dGVkOwogICAgIGJvb2wgbWF5U3RhcnRN
ZWRpYVdoZW5JbldpbmRvdzsKIAogICAgIFdlYkNvcmU6OkludFNpemUgbWluaW11bUxheW91dFNp
emU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gMjA3NzU4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0NCw3ICs0NDQsNiBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgLCBtX3N1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMo
ZmFsc2UpCiAgICAgLCBtX2F1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQoZmFsc2Up
CiAgICAgLCBtX21lZGlhVm9sdW1lKDEpCi0gICAgLCBtX211dGVkKGZhbHNlKQogICAgICwgbV9t
YXlTdGFydE1lZGlhV2hlbkluV2luZG93KHRydWUpCiAgICAgLCBtX3dhaXRpbmdGb3JEaWRVcGRh
dGVWaWV3U3RhdGUoZmFsc2UpCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xNTg4LDcgKzE1ODcs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiAKICAgICAvLyBX
ZSBzaG91bGQgc3VwcHJlc3MgaWYgdGhlIHBhZ2UgaXMgbm90IGFjdGl2ZSwgaXMgdmlzdWFsbHkg
aWRsZSwgYW5kIHN1cHJlc3Npb24gaXMgZW5hYmxlZC4KICAgICBib29sIGlzTG9hZGluZyA9IG1f
cGFnZUxvYWRTdGF0ZS5pc0xvYWRpbmcoKTsKLSAgICBib29sIGlzUGxheWluZ0F1ZGlvID0gbV9t
ZWRpYVN0YXRlICYgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nQXVkaW8gJiYgIW1fbXV0ZWQ7Cisg
ICAgYm9vbCBpc1BsYXlpbmdBdWRpbyA9IG1fbWVkaWFTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6Oklz
UGxheWluZ0F1ZGlvICYmICEobV9tdXRlZFN0YXRlICYgTWVkaWFQcm9kdWNlcjo6QXVkaW9Jc011
dGVkKTsKICAgICBib29sIHBhZ2VTaG91bGRCZVN1cHByZXNzZWQgPSAhaXNMb2FkaW5nICYmICFp
c1BsYXlpbmdBdWRpbyAmJiBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkICYmIChtX3ZpZXdTdGF0
ZSAmIFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOwogICAgIGlmIChtX3BhZ2VTdXBwcmVzc2Vk
ICE9IHBhZ2VTaG91bGRCZVN1cHByZXNzZWQpIHsKICAgICAgICAgbV9wYWdlU3VwcHJlc3NlZCA9
IHBhZ2VTaG91bGRCZVN1cHByZXNzZWQ7CkBAIC00MTUyLDE3ICs0MTUxLDE3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRNZWRpYVZvbHVtZShmbG9hdCAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldE1lZGlhVm9sdW1lKHZvbHVtZSksIG1fcGFnZUlEKTsgICAgCiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRNdXRlZChib29sIG11dGVkKQordm9pZCBXZWJQYWdl
UHJveHk6OnNldE11dGVkKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBz
dGF0ZSkKIHsKLSAgICBpZiAobV9tdXRlZCA9PSBtdXRlZCkKKyAgICBpZiAobV9tdXRlZFN0YXRl
ID09IHN0YXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX211dGVkID0gbXV0ZWQ7CisgICAg
bV9tdXRlZFN0YXRlID0gc3RhdGU7CiAKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNdXRlZCht
dXRlZCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldE11dGVkKHN0YXRlKSwgbV9wYWdlSUQpOwogCiAgICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgp
OwogfQpAQCAtNTQ4Myw3ICs1NDgyLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQ
YWdlUHJveHk6OgogICAgIHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9yID0gbV92aWV3U2NhbGVG
YWN0b3I7CiAgICAgcGFyYW1ldGVycy50b3BDb250ZW50SW5zZXQgPSBtX3RvcENvbnRlbnRJbnNl
dDsKICAgICBwYXJhbWV0ZXJzLm1lZGlhVm9sdW1lID0gbV9tZWRpYVZvbHVtZTsKLSAgICBwYXJh
bWV0ZXJzLm11dGVkID0gbV9tdXRlZDsKKyAgICBwYXJhbWV0ZXJzLm11dGVkID0gbV9tdXRlZFN0
YXRlOwogICAgIHBhcmFtZXRlcnMubWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyA9IG1fbWF5U3Rh
cnRNZWRpYVdoZW5JbldpbmRvdzsKICAgICBwYXJhbWV0ZXJzLm1pbmltdW1MYXlvdXRTaXplID0g
bV9taW5pbXVtTGF5b3V0U2l6ZTsKICAgICBwYXJhbWV0ZXJzLmF1dG9TaXppbmdTaG91bGRFeHBh
bmRUb1ZpZXdIZWlnaHQgPSBtX2F1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQ7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMDc3
NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTkzNyw3ICs5MzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmludE1haW5GcmFt
ZSgpOwogICAgIAogICAgIHZvaWQgc2V0TWVkaWFWb2x1bWUoZmxvYXQpOwotICAgIHZvaWQgc2V0
TXV0ZWQoYm9vbCk7CisgICAgdm9pZCBzZXRNdXRlZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpN
dXRlZFN0YXRlRmxhZ3MpOwogICAgIHZvaWQgc2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhi
b29sKTsKICAgICBib29sIG1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coKSBjb25zdCB7IHJldHVy
biBtX21heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3c7IH0KICAgICAgICAgCkBAIC0xODUyLDcgKzE4
NTIsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkludFNpemUgbV9taW5pbXVtTGF5b3V0U2l6
ZTsKIAogICAgIGZsb2F0IG1fbWVkaWFWb2x1bWU7Ci0gICAgYm9vbCBtX211dGVkOworICAgIFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBtX211dGVkU3RhdGUgeyBXZWJD
b3JlOjpNZWRpYVByb2R1Y2VyOjpOb25lTXV0ZWQgfTsKICAgICBib29sIG1fbWF5U3RhcnRNZWRp
YVdoZW5JbldpbmRvdzsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yRGlkVXBkYXRlVmlld1N0YXRl
OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlz
aW9uIDIwNzc1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjAxLDcgKzI2MDEsNyBAQCB2b2lkIFdLUGFnZVNldE1lZGlh
Vm9sdW1lKFdLUGFnZVJlZiBwYWdlCiAgICAgdG9JbXBsKHBhZ2UpLT5zZXRNZWRpYVZvbHVtZSh2
b2x1bWUpOyAgICAKIH0KIAotdm9pZCBXS1BhZ2VTZXRNdXRlZChXS1BhZ2VSZWYgcGFnZSwgYm9v
bCBtdXRlZCkKK3ZvaWQgV0tQYWdlU2V0TXV0ZWQoV0tQYWdlUmVmIHBhZ2UsIFdLTWVkaWFNdXRl
ZFN0YXRlIG11dGVkKQogewogICAgIHRvSW1wbChwYWdlKS0+c2V0TXV0ZWQobXV0ZWQpOwogfQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5o
CShyZXZpc2lvbiAyMDc3NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDE0IEBAIFdLX0VYUE9S
VCBib29sIFdLUGFnZUdldEFkZHNWaXNpdGVkTGlua3MKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNl
dEFkZHNWaXNpdGVkTGlua3MoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgdmlzaXRlZExpbmtzKTsKIAog
V0tfRVhQT1JUIGJvb2wgV0tQYWdlSXNQbGF5aW5nQXVkaW8oV0tQYWdlUmVmIHBhZ2UpOwotV0tf
RVhQT1JUIHZvaWQgV0tQYWdlU2V0TXV0ZWQoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgbXV0ZWQpOwor
CitlbnVtIHsKKyAgICBrV0tNZWRpYU5vbmVNdXRlZCA9IDAsCisgICAga1dLTWVkaWFBdWRpb011
dGVkID0gMSA8PCAwLAorICAgIGtXS01lZGlhQ2FwdHVyZURldmljZXNNdXRlZCA9IDEgPDwgMSwK
K307Cit0eXBlZGVmIHVpbnQzMl90IFdLTWVkaWFNdXRlZFN0YXRlOworV0tfRVhQT1JUIHZvaWQg
V0tQYWdlU2V0TXV0ZWQoV0tQYWdlUmVmIHBhZ2UsIFdLTWVkaWFNdXRlZFN0YXRlIG11dGVkKTsK
IAogZW51bSB7CiAgICAga1dLTWVkaWFJc05vdFBsYXlpbmcgPSAwLApAQCAtMTMwLDYgKzEzNyw3
IEBAIGVudW0gewogfTsKIHR5cGVkZWYgdWludDMyX3QgV0tNZWRpYVN0YXRlOwogCisKIFdLX0VY
UE9SVCBXS01lZGlhU3RhdGUgV0tQYWdlR2V0TWVkaWFTdGF0ZShXS1BhZ2VSZWYgcGFnZSk7CiAK
IGVudW0gewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAkocmV2aXNpb24gMjA3NzU4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMxLDcgKzE1
MzEsNyBAQCBib29sIFBsdWdpblZpZXc6OmlzTXV0ZWQoKSBjb25zdAogICAgIGlmICghZnJhbWUo
KSB8fCAhZnJhbWUoKS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gZnJhbWUoKS0+cGFnZSgpLT5pc011dGVkKCk7CisgICAgcmV0dXJuIGZyYW1lKCktPnBhZ2Uo
KS0+bXV0ZWRTdGF0ZSgpICYgTWVkaWFQcm9kdWNlcjo6QXVkaW9Jc011dGVkOwogfQogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMDc3NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MzE0LDcgKzMxNCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAg
ICAgIyBNZWRpYQogICAgIFNldE1lZGlhVm9sdW1lKGZsb2F0IHZvbHVtZSkKLSAgICBTZXRNdXRl
ZChib29sIG11dGVkKQorICAgIFNldE11dGVkKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVk
U3RhdGVGbGFncyBtdXRlZCkKICAgICBTZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KGJvb2wg
bWF5U3RhcnRNZWRpYSkKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjA3NzU4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTYtMTAtMjQgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhU3RyZWFtXSBTZXBhcmF0ZSBtZWRpYSBjYXB0dXJl
IGFuZCBhdWRpbyBwbGF5YmFjayBtdXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2Mzg1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg4Mjcx
ODY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXBhZ2UtbXV0ZWQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXBhZ2UtbXV0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tbXV0ZWQtYWZ0ZXItc2V0dGluZy1wYWdl
LW11dGVkLXN0YXRlLmh0bWw6IFVwZGF0ZWQuCisKIDIwMTYtMTAtMjQgIERhdmUgSHlhdHQgIDxo
eWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBQYXJzZXJdIFVucHJlZml4IC13ZWJraXQt
d3JpdGluZy1tb2RlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLXBhZ2UtbXV0ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tcGFnZS1tdXRlZC1leHBlY3RlZC50eHQJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1wYWdl
LW11dGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACitUZXN0
IGVuYWJsaW5nL2Rpc2FibGluZyBtb2NrIG1lZGlhIGNhcHR1cmUgZGV2aWNlcworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworCisqKiogTW9jayBjYXB0dXJlIGRldmljZXMgc2hvdWxk
IGJlIGVuYWJsZWQgYnkgZGVmYXVsdAorUEFTUyBtZWRpYVN0cmVhbSBpcyBhbiBpbnN0YW5jZSBv
ZiBPYmplY3QKK1BBU1MgbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkubGVuZ3RoIGlzIDIKKworKioq
IE11dGluZyBjYXB0dXJlIGRldmljZXMKK0VWRU5UOiBtdXRlCitQQVNTIGV2ZW50LnRhcmdldC5t
dXRlZCBpcyB0cnVlCisKK0VWRU5UOiBtdXRlCitQQVNTIGV2ZW50LnRhcmdldC5tdXRlZCBpcyB0
cnVlCisKKworKioqIFVubXV0aW5nIGNhcHR1cmUgZGV2aWNlcworRVZFTlQ6IHVubXV0ZQorUEFT
UyBldmVudC50YXJnZXQubXV0ZWQgaXMgZmFsc2UKKworRVZFTlQ6IHVubXV0ZQorUEFTUyBldmVu
dC50YXJnZXQubXV0ZWQgaXMgZmFsc2UKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0tcGFnZS1tdXRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tcGFnZS1tdXRlZC5odG1sCShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tcGFnZS1tdXRlZC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgbGV0
IG1lZGlhU3RyZWFtOworICAgICAgICAgICAgbGV0IGV2ZW50Q291bnQgPSAwOworCisgICAgICAg
ICAgICBmdW5jdGlvbiBtdXRlQ2hhbmdlZChldikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBldmVudCA9IGV2OworICAgICAgICAgICAgICAgIGRlYnVnKGBFVkVOVDogJHtldi50eXBl
fWApOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdldmVudC50YXJnZXQubXV0ZWQnLCAoZXYu
dHlwZSA9PSAibXV0ZSIpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsK
KworICAgICAgICAgICAgICAgIGlmICgrK2V2ZW50Q291bnQgPT0gMikgeworICAgICAgICAgICAg
ICAgICAgICBldmVudENvdW50ID0gMDsKKworICAgICAgICAgICAgICAgICAgICBpZiAoZXYudHlw
ZSA9PSAidW5tdXRlIikgeworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZGVidWcoIjxicj4qKiogVW5tdXRpbmcgY2FwdHVyZSBkZXZpY2VzIik7
CisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGFnZU11dGVkKCIiKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gdGVzdFdoZW5FbmFibGVkKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzCisgICAgICAg
ICAgICAgICAgICAgIC5nZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp7fX0pCisgICAgICAg
ICAgICAgICAgICAgIC50aGVuKHN0cmVhbSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICBt
ZWRpYVN0cmVhbSA9IHN0cmVhbTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlVHlw
ZSgibWVkaWFTdHJlYW0iLCAiT2JqZWN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91
bGRCZSgibWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkubGVuZ3RoIiwgIjIiKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHRyYWNrcyA9IG1lZGlhU3RyZWFtLmdldFRyYWNrcygpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmFja3MubGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja3NbaV0ub25tdXRlID0gbXV0
ZUNoYW5nZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tzW2ldLm9udW5tdXRl
ID0gbXV0ZUNoYW5nZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVidWcoIjxicj4qKiogTXV0aW5nIGNhcHR1cmUgZGV2aWNlcyIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRQYWdlTXV0ZWQoImNhcHR1cmVkZXZp
Y2VzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0p
CisgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKGBtZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCkgZmFpbGVkIHdp
dGggJHtlcnIubmFtZX1gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24gc3RhcnQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlYnVnKGA8
YnI+KioqIE1vY2sgY2FwdHVyZSBkZXZpY2VzIHNob3VsZCBiZSBlbmFibGVkIGJ5IGRlZmF1bHRg
KTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlzc2lvbih0cnVlKTsKKworICAgICAg
ICAgICAgICAgIHRlc3RXaGVuRW5hYmxlZCgpOworICAgICAgICAgICAgfQorCisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKworICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAg
ICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0IGVu
YWJsaW5nL2Rpc2FibGluZyBtb2NrIG1lZGlhIGNhcHR1cmUgZGV2aWNlcyIpOworICAgICAgICAg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgICAgICB3aW5kb3cuc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1tdXRlZC1hZnRl
ci1zZXR0aW5nLXBhZ2UtbXV0ZWQtc3RhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1tdXRlZC1hZnRlci1zZXR0aW5nLXBhZ2UtbXV0ZWQtc3RhdGUuaHRtbAko
cmV2aXNpb24gMjA3NzU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbXV0ZWQtYWZ0ZXIt
c2V0dGluZy1wYWdlLW11dGVkLXN0YXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsMTMgKzUs
MTMgQEAKIDxzY3JpcHQ+CiAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tdXRlZCIsIGZhbHNlKTsK
ICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgaW50ZXJuYWxzLnNldFBhZ2VNdXRl
ZCh0cnVlKTsKKyAgICAgICAgaW50ZXJuYWxzLnNldFBhZ2VNdXRlZCgiYXVkaW8iKTsKICAgICB0
ZXN0RXhwZWN0ZWQoInZpZGVvLm11dGVkIiwgZmFsc2UpOwogCiAgICAgcnVuKCJ2aWRlby5tdXRl
ZCA9IHRydWUiKTsKICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm11dGVkIiwgdHJ1ZSk7CiAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgIGludGVybmFscy5zZXRQYWdlTXV0ZWQoZmFs
c2UpOworICAgICAgICBpbnRlcm5hbHMuc2V0UGFnZU11dGVkKCIiKTsKICAgICB0ZXN0RXhwZWN0
ZWQoInZpZGVvLm11dGVkIiwgdHJ1ZSk7CiAgICAgZW5kVGVzdCgpOwogPC9zY3JpcHQ+Cg==
</data>
<flag name="review"
          id="315646"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292619</attachid>
            <date>2016-10-24 10:12:34 -0700</date>
            <delta_ts>2016-10-24 10:18:19 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>page_muted_patch_4.txt</filename>
            <type>text/plain</type>
            <size>25967</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE2LTEwLTI0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
U2VwYXJhdGUgbWVkaWEgY2FwdHVyZSBhbmQgYXVkaW8gcGxheWJhY2sgbXV0aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM4NTUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzI4ODI3MTg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tcGFnZS1t
dXRlZC5odG1sCisKKyAgICAgICAgQ2hhbmdlIHBhZ2UubXV0ZWQgZnJvbSBhIGJvb2wgdG8gYSBi
aXRmaWVsZCBzbyBhdWRpbyBhbmQgbWVkaWEgY2FwdHVyZSBtdXRlZCBhcmUgaW5kZXBlbmRlbnQu
CisgICAgICAgIEZpeCBhIGNvdXBsZSBvZiBidWdzIGluIHRoZSBtb2NrIG1lZGlhIGNhcHR1cmUg
ZGV2aWNlIHVuY292ZXJlZCBieSBuZXcgdGVzdCBjYXNlLgorICAgICAgICAKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtOjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSk6IHBhZ2UuaXNNdXRlZCAtPiBwYWdl
Lm11dGVkU3RhdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hh
bmdlKTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlVm9sdW1lKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVNdXRlZCk6IERpdHRv
LgorCisgICAgICAgICogcGFnZS9NZWRpYVByb2R1Y2VyLmg6IEFkZCBNdXRlZFN0YXRlIGVudW0u
CisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRNdXRlZCk6IFRha2UgTXV0ZWRTdGF0ZUZs
YWdzIGluc3RlYWQgb2YgYm9vbC4gbV9tdXRlZCAtPiBtX211dGVkU3RhdGUuCisgICAgICAgICog
cGFnZS9QYWdlLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlh
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpz
dGFydFByb2R1Y2luZ0RhdGEpOiBDYWxsIHNldE11dGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKTogRGl0dG8uCisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorCisgICAgICAgICog
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOiBDYWxsIGNv
cnJlY3QgYmFzZSBjbGFzcyBtZXRob2QuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFBhZ2VNdXRlZCk6IENoYW5nZSBw
YXJhbWV0ZXIgZnJvbSBhIGJvb2wgdG8gYSBzdHJpbmcuCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDoKKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxNi0xMC0y
MSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtNb2Rlcm4g
TWVkaWEgQ29udHJvbHNdIENvbmNhdGVuYXRlIEpTIGFuZCBDU1MgZmlsZXMgaW50byBhIHNpbmds
ZSBKUyBhbmQgQ1NTIHJlc291cmNlcwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHJldmlzaW9uIDIwNzc1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBNZWRpYVN0cmVhbTo6cGFnZU11dGVkU3Rh
dGVEaWRDaGFuZwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJv
b2wgcGFnZU11dGVkID0gZG9jdW1lbnQtPnBhZ2UoKS0+aXNNdXRlZCgpOworICAgIGJvb2wgcGFn
ZU11dGVkID0gZG9jdW1lbnQtPnBhZ2UoKS0+bXV0ZWRTdGF0ZSgpICYgTWVkaWFQcm9kdWNlcjo6
Q2FwdHVyZURldmljZXNBcmVNdXRlZDsKICAgICBpZiAobV9leHRlcm5hbGx5TXV0ZWQgPT0gcGFn
ZU11dGVkKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHJldmlzaW9uIDIwNzc1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTczLDcgKzk3Myw3IEBAIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBB
dWRpb0NvbnQKIHZvaWQgQXVkaW9Db250ZXh0OjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpCiB7
CiAgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlICYmIGRvY3VtZW50KCktPnBhZ2UoKSkKLSAgICAg
ICAgbV9kZXN0aW5hdGlvbk5vZGUtPnNldE11dGVkKGRvY3VtZW50KCktPnBhZ2UoKS0+aXNNdXRl
ZCgpKTsKKyAgICAgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnNldE11dGVkKGRvY3VtZW50KCktPnBh
Z2UoKS0+bXV0ZWRTdGF0ZSgpICYgTWVkaWFQcm9kdWNlcjo6QXVkaW9Jc011dGVkKTsKIH0KIAog
dm9pZCBBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjA3NzU4KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDg0Niw3ICs0ODQ2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUo
KQogCiAgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikgewogICAgICAgICAgICAgdm9sdW1l
TXVsdGlwbGllciAqPSBtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCk7Ci0gICAgICAgICAgICBz
aG91bGRNdXRlID0gbV9tZWRpYUNvbnRyb2xsZXItPm11dGVkKCkgfHwgKHBhZ2UgJiYgcGFnZS0+
aXNNdXRlZCgpKTsKKyAgICAgICAgICAgIHNob3VsZE11dGUgPSBtX21lZGlhQ29udHJvbGxlci0+
bXV0ZWQoKSB8fCAocGFnZSAmJiBwYWdlLT5tdXRlZFN0YXRlKCkgJiBNZWRpYVByb2R1Y2VyOjpB
dWRpb0lzTXV0ZWQpOwogICAgICAgICB9CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKQEAg
LTcwMDcsNyArNzAwNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGFnZU11dGVkU3RhdGVE
aWQKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVNdXRlZCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG11dGVkKCkgfHwgKGRvY3VtZW50KCkucGFnZSgpICYmIGRvY3VtZW50KCkucGFn
ZSgpLT5pc011dGVkKCkpOworICAgIHJldHVybiBtdXRlZCgpIHx8IChkb2N1bWVudCgpLnBhZ2Uo
KSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+bXV0ZWRTdGF0ZSgpICYgTWVkaWFQcm9kdWNlcjo6QXVk
aW9Jc011dGVkKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBdWRpb0Fzc2Vy
dGlvblN0YXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFQcm9kdWNlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFQcm9kdWNlci5oCShyZXZpc2lv
biAyMDc3NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhUHJvZHVjZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDgsNiArNDgsMTQgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdW5zaWduZWQg
TWVkaWFTdGF0ZUZsYWdzOwogCiAgICAgdmlydHVhbCBNZWRpYVN0YXRlRmxhZ3MgbWVkaWFTdGF0
ZSgpIGNvbnN0ID0gMDsKKworICAgIGVudW0gTXV0ZWRTdGF0ZSB7CisgICAgICAgIE5vbmVNdXRl
ZCA9IDAsCisgICAgICAgIEF1ZGlvSXNNdXRlZCA9IDEgPDwgMCwKKyAgICAgICAgQ2FwdHVyZURl
dmljZXNBcmVNdXRlZCA9IDEgPDwgMSwKKyAgICB9OworICAgIHR5cGVkZWYgdW5zaWduZWQgTXV0
ZWRTdGF0ZUZsYWdzOworCiAgICAgdmlydHVhbCB2b2lkIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdl
KCkgPSAwOwogCiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDIw
Nzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE5Myw3ICsxOTMsNiBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZp
CiAgICAgLCBtX2luTG93UXVhbGl0eUludGVycG9sYXRpb25Nb2RlKGZhbHNlKQogICAgICwgbV9h
cmVNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZCh0cnVlKQogICAgICwgbV9tZWRpYVZvbHVt
ZSgxKQotICAgICwgbV9tdXRlZChmYWxzZSkKICAgICAsIG1fcGFnZVNjYWxlRmFjdG9yKDEpCiAg
ICAgLCBtX3pvb21lZE91dFBhZ2VTY2FsZUZhY3RvcigwKQogICAgICwgbV90b3BDb250ZW50SW5z
ZXQoMCkKQEAgLTEzODEsMTIgKzEzODAsMTIgQEAgdm9pZCBQYWdlOjp1cGRhdGVJc1BsYXlpbmdN
ZWRpYSh1aW50NjRfdAogICAgIGNocm9tZSgpLmNsaWVudCgpLmlzUGxheWluZ01lZGlhRGlkQ2hh
bmdlKHN0YXRlLCBzb3VyY2VFbGVtZW50SUQpOwogfQogCi12b2lkIFBhZ2U6OnNldE11dGVkKGJv
b2wgbXV0ZWQpCit2b2lkIFBhZ2U6OnNldE11dGVkKE1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVG
bGFncyBtdXRlZCkKIHsKLSAgICBpZiAobV9tdXRlZCA9PSBtdXRlZCkKKyAgICBpZiAobV9tdXRl
ZFN0YXRlID09IG11dGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX211dGVkID0gbXV0ZWQ7
CisgICAgbV9tdXRlZFN0YXRlID0gbXV0ZWQ7CiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZt
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkg
ewogICAgICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJl
dmlzaW9uIDIwNzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00ODAsOCArNDgwLDggQEAgcHVibGljOgogCiAgICAgTWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX21lZGlhU3RhdGU7IH0K
ICAgICB2b2lkIHVwZGF0ZUlzUGxheWluZ01lZGlhKHVpbnQ2NF90KTsKLSAgICBib29sIGlzTXV0
ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRNdXRlZChib29sKTsKKyAgICBNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3MgbXV0ZWRT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWRTdGF0ZTsgfQorICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0TXV0ZWQoTWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzKTsKIAogI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlTWVkaWFF
dmVudChNZWRpYUV2ZW50VHlwZSk7CkBAIC02MDksNyArNjA5LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1faW5Mb3dRdWFsaXR5SW50ZXJwb2xhdGlvbk1vZGU7CiAgICAgYm9vbCBtX2FyZU1lbW9y
eUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkOwogICAgIGZsb2F0IG1fbWVkaWFWb2x1bWU7Ci0gICAg
Ym9vbCBtX211dGVkOworICAgIE1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBtX211dGVk
U3RhdGUgeyBNZWRpYVByb2R1Y2VyOjpOb25lTXV0ZWQgfTsKIAogICAgIGZsb2F0IG1fcGFnZVNj
YWxlRmFjdG9yOwogICAgIGZsb2F0IG1fem9vbWVkT3V0UGFnZVNjYWxlRmFjdG9yOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZS5jcHAJKHJldmlzaW9uIDIwNzc1OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlT2Jz
ZXJ2ZXIKIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRNdXRlZChib29sIG11dGVkKQog
ewotICAgIGlmIChtX211dGVkID09IG11dGVkKQorICAgIGlmIChtX3N0b3BwZWQgfHwgbV9tdXRl
ZCA9PSBtdXRlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9tdXRlZCA9IG11dGVkOwpAQCAt
MTUwLDcgKzE1MCw2IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFN0b3AoT2IK
ICAgICBzdG9wKGNhbGxpbmdPYnNlcnZlcik7CiB9CiAKLSNpZiAxCiBkb3VibGUgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6Zml0bmVzc0Rpc3RhbmNlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3Ry
YWludCkKIHsKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRp
ZXMgPSAqdGhpcy0+Y2FwYWJpbGl0aWVzKCk7CkBAIC0yNzUsNyArMjc0LDYgQEAgZG91YmxlIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OmZpdG5lc3NEaXN0YQogCiAgICAgcmV0dXJuIDA7CiB9Ci0jZW5k
aWYKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlVHlwZT4KIHN0YXRpYyB2b2lkIGFwcGx5TnVt
ZXJpY0NvbnN0cmFpbnQoY29uc3QgTnVtZXJpY0NvbnN0cmFpbnQ8VmFsdWVUeXBlPiYgY29uc3Ry
YWludCwgVmFsdWVUeXBlIGN1cnJlbnQsIFZhbHVlVHlwZSBjYXBhYmlsaXR5TWluLCBWYWx1ZVR5
cGUgY2FwYWJpbGl0eU1heCwgUmVhbHRpbWVNZWRpYVNvdXJjZSogc291cmNlLCB2b2lkIChSZWFs
dGltZU1lZGlhU291cmNlOjoqYXBwbGllcikoVmFsdWVUeXBlKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwCShyZXZpc2lvbiAyMDc3NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCwx
OCBAQCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmCiAgICAgcmV0dXJu
IG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiB9CiAKK3ZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSB0cnVl
OworICAgIHNldE11dGVkKGZhbHNlKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQoreworICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7
CisgICAgc2V0TXV0ZWQodHJ1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCShyZXZpc2lvbiAy
MDc3NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlh
U291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDggQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRD
b25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmKSA9IDA7
CiAKLSAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlIHsgbV9pc1Byb2R1Y2lu
Z0RhdGEgPSB0cnVlOyB9Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlIHsg
bV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxzZTsgfQorICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRh
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOwogCiAg
ICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcygp
IG92ZXJyaWRlOwogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGlu
Z3MoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAyMDc3NTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpzdGFydFByb2R1CiAKIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0b3BQ
cm9kdWNpbmdEYXRhKCkKIHsKLSAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RhcnRQcm9k
dWNpbmdEYXRhKCk7CisgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BQcm9kdWNpbmdE
YXRhKCk7CiAgICAgbV90aW1lci5zdG9wKCk7CiAgICAgbV9lbGFwc2VkVGltZSArPSBtb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1fc3RhcnRUaW1lOwogICAgIG1fc3RhcnRUaW1lID0g
TkFOOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjA3
NzU4KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04Niw2ICs4Niw3IEBACiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAi
TWFsbG9jU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAi
TWVkaWFQcm9kdWNlci5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiTWVt
b3J5SW5mby5oIgogI2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgpAQCAtMjk0NSwx
NCArMjk0NiwyNCBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6cGFnZU92ZXJsCiAg
ICAgcmV0dXJuIE1vY2tQYWdlT3ZlcmxheUNsaWVudDo6c2luZ2xldG9uKCkubGF5ZXJUcmVlQXNU
ZXh0KGRvY3VtZW50LT5mcmFtZSgpLT5tYWluRnJhbWUoKSk7CiB9CiAKLXZvaWQgSW50ZXJuYWxz
OjpzZXRQYWdlTXV0ZWQoYm9vbCBtdXRlZCkKK3ZvaWQgSW50ZXJuYWxzOjpzZXRQYWdlTXV0ZWQo
Y29uc3QgU3RyaW5nJiBzdGF0ZXMpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4
dERvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCisgICAg
V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIHN0YXRlID0gTWVkaWFQcm9k
dWNlcjo6Tm9uZU11dGVkOworICAgIFZlY3RvcjxTdHJpbmc+IHN0YXRlU3RyaW5nOworICAgIHN0
YXRlcy5zcGxpdCgnLCcsIGZhbHNlLCBzdGF0ZVN0cmluZyk7CisgICAgZm9yIChhdXRvJiBtdXRl
U3RyaW5nIDogc3RhdGVTdHJpbmcpIHsKKyAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKG11dGVTdHJpbmcsICJhdWRpbyIpKQorICAgICAgICAgICAgc3RhdGUgfD0gTWVk
aWFQcm9kdWNlcjo6QXVkaW9Jc011dGVkOworICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UobXV0ZVN0cmluZywgImNhcHR1cmVkZXZpY2VzIikpCisgICAgICAgICAgICBz
dGF0ZSB8PSBNZWRpYVByb2R1Y2VyOjpDYXB0dXJlRGV2aWNlc0FyZU11dGVkOworICAgIH0KKwog
ICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+c2V0
TXV0ZWQobXV0ZWQpOworICAgICAgICBwYWdlLT5zZXRNdXRlZChzdGF0ZSk7CiB9CiAKIGJvb2wg
SW50ZXJuYWxzOjppc1BhZ2VQbGF5aW5nQXVkaW8oKQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCShyZXZpc2lvbiAyMDc3NTgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDAsNyArNDQwLDcgQEAgcHVibGljOgogICAg
IEV4Y2VwdGlvbk9yPFJlZjxNb2NrUGFnZU92ZXJsYXk+PiBpbnN0YWxsTW9ja1BhZ2VPdmVybGF5
KFBhZ2VPdmVybGF5VHlwZSk7CiAgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiBwYWdlT3ZlcmxheUxh
eWVyVHJlZUFzVGV4dCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRQYWdlTXV0ZWQoYm9vbCk7Cisg
ICAgdm9pZCBzZXRQYWdlTXV0ZWQoY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBpc1BhZ2VQbGF5
aW5nQXVkaW8oKTsKIAogICAgIHZvaWQgc2V0UGFnZURlZmVyc0xvYWRpbmcoYm9vbCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAyMDc3NTgpCisrKyBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQx
Nyw3ICs0MTcsNyBAQCBlbnVtIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gewogICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gTW9ja1BhZ2VPdmVybGF5IGluc3RhbGxNb2NrUGFnZU92ZXJsYXko
UGFnZU92ZXJsYXlUeXBlIHR5cGUpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5n
IHBhZ2VPdmVybGF5TGF5ZXJUcmVlQXNUZXh0KCk7CiAKLSAgICB2b2lkIHNldFBhZ2VNdXRlZChi
b29sZWFuIG11dGVkKTsKKyAgICB2b2lkIHNldFBhZ2VNdXRlZChET01TdHJpbmcgbXV0ZWRTdGF0
ZSk7CiAgICAgYm9vbGVhbiBpc1BhZ2VQbGF5aW5nQXVkaW8oKTsKIAogICAgIHZvaWQgc2V0UGFn
ZURlZmVyc0xvYWRpbmcoYm9vbGVhbiBkZWZlcnNMb2FkaW5nKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwNzc1OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI4IEBACisyMDE2LTEwLTI0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gU2VwYXJhdGUgbWVkaWEgY2Fw
dHVyZSBhbmQgYXVkaW8gcGxheWJhY2sgbXV0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM4NTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4
ODI3MTg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICog
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDogQ2hhbmdlICdtdXRlZCcgZnJvbSBi
b29sIHRvIE11dGVkU3RhdGVGbGFncy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwOiBDaGFuZ2UgcGFyYW1ldGVyIGZyb20gYm9vbCB0byBXS01lZGlhTXV0ZWRTdGF0ZS4K
KyAgICAgICAgKFdLUGFnZVNldE11dGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlUHJpdmF0ZS5oOiBEZWZpbmUgV0tNZWRpYU11dGVkU3RhdGUuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE11dGVkKTog
bV9tdXRlZCAtPiBtX211dGVkU3RhdGUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y3JlYXRpb25QYXJhbWV0ZXJzKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojppc011dGVkKTogcGFnZS5pc011dGVkIC0+IHBh
Z2UubXV0ZWRTdGF0ZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOiBDaGFuZ2UgU2V0TXV0ZWQgcGFyYW1ldGVyLgorCiAyMDE2LTEwLTIzICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBS
ZW1vdmUgRE8gTk9UIE1PRElGWSBoZWFkZXJzIGZyb20gZmlsZXMgdGhhdCBhcmUgbm8gbG9uZ2Vy
IGF1dG9nZW5lcmF0ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjA3NzU4KQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Zsb2F0U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnaW5hdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
c3Npb25JRC5oPgpAQCAtOTksNyArMTAwLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMgewogICAgIGZsb2F0IHRvcENvbnRlbnRJbnNldDsKICAgICAKICAgICBmbG9hdCBtZWRp
YVZvbHVtZTsKLSAgICBib29sIG11dGVkOworICAgIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11
dGVkU3RhdGVGbGFncyBtdXRlZDsKICAgICBib29sIG1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3c7
CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1pbmltdW1MYXlvdXRTaXplOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIwNzc1OCkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NDQsNyArNDQ0LDYgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVu
dCYgcAogICAgICwgbV9zdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzKGZhbHNlKQogICAgICwgbV9h
dXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KGZhbHNlKQogICAgICwgbV9tZWRpYVZv
bHVtZSgxKQotICAgICwgbV9tdXRlZChmYWxzZSkKICAgICAsIG1fbWF5U3RhcnRNZWRpYVdoZW5J
bldpbmRvdyh0cnVlKQogICAgICwgbV93YWl0aW5nRm9yRGlkVXBkYXRlVmlld1N0YXRlKGZhbHNl
KQogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTU4OCw3ICsxNTg3LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnVwZGF0ZVRocm90dGxlU3RhdGUoKQogCiAgICAgLy8gV2Ugc2hvdWxkIHN1cHByZXNz
IGlmIHRoZSBwYWdlIGlzIG5vdCBhY3RpdmUsIGlzIHZpc3VhbGx5IGlkbGUsIGFuZCBzdXByZXNz
aW9uIGlzIGVuYWJsZWQuCiAgICAgYm9vbCBpc0xvYWRpbmcgPSBtX3BhZ2VMb2FkU3RhdGUuaXNM
b2FkaW5nKCk7Ci0gICAgYm9vbCBpc1BsYXlpbmdBdWRpbyA9IG1fbWVkaWFTdGF0ZSAmIE1lZGlh
UHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvICYmICFtX211dGVkOworICAgIGJvb2wgaXNQbGF5aW5n
QXVkaW8gPSBtX21lZGlhU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbyAmJiAh
KG1fbXV0ZWRTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OkF1ZGlvSXNNdXRlZCk7CiAgICAgYm9vbCBw
YWdlU2hvdWxkQmVTdXBwcmVzc2VkID0gIWlzTG9hZGluZyAmJiAhaXNQbGF5aW5nQXVkaW8gJiYg
cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCAmJiAobV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6Oklz
VmlzdWFsbHlJZGxlKTsKICAgICBpZiAobV9wYWdlU3VwcHJlc3NlZCAhPSBwYWdlU2hvdWxkQmVT
dXBwcmVzc2VkKSB7CiAgICAgICAgIG1fcGFnZVN1cHByZXNzZWQgPSBwYWdlU2hvdWxkQmVTdXBw
cmVzc2VkOwpAQCAtNDE1MiwxNyArNDE1MSwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWVk
aWFWb2x1bWUoZmxvYXQgCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRNZWRpYVZvbHVtZSh2b2x1bWUpLCBtX3BhZ2VJRCk7ICAgIAogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRNdXRlZChX
ZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3Mgc3RhdGUpCiB7Ci0gICAgaWYg
KG1fbXV0ZWQgPT0gbXV0ZWQpCisgICAgaWYgKG1fbXV0ZWRTdGF0ZSA9PSBzdGF0ZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9tdXRlZCA9IG11dGVkOworICAgIG1fbXV0ZWRTdGF0ZSA9IHN0
YXRlOwogCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TXV0ZWQobXV0ZWQpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNdXRlZChzdGF0ZSks
IG1fcGFnZUlEKTsKIAogICAgIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIH0KQEAgLTU0ODMsNyAr
NTQ4Miw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKICAgICBw
YXJhbWV0ZXJzLnZpZXdTY2FsZUZhY3RvciA9IG1fdmlld1NjYWxlRmFjdG9yOwogICAgIHBhcmFt
ZXRlcnMudG9wQ29udGVudEluc2V0ID0gbV90b3BDb250ZW50SW5zZXQ7CiAgICAgcGFyYW1ldGVy
cy5tZWRpYVZvbHVtZSA9IG1fbWVkaWFWb2x1bWU7Ci0gICAgcGFyYW1ldGVycy5tdXRlZCA9IG1f
bXV0ZWQ7CisgICAgcGFyYW1ldGVycy5tdXRlZCA9IG1fbXV0ZWRTdGF0ZTsKICAgICBwYXJhbWV0
ZXJzLm1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cgPSBtX21heVN0YXJ0TWVkaWFXaGVuSW5XaW5k
b3c7CiAgICAgcGFyYW1ldGVycy5taW5pbXVtTGF5b3V0U2l6ZSA9IG1fbWluaW11bUxheW91dFNp
emU7CiAgICAgcGFyYW1ldGVycy5hdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0ID0g
bV9hdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0OwpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjA3NzU4KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MzcsNyAr
OTM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJpbnRNYWluRnJhbWUoKTsKICAgICAKICAgICB2
b2lkIHNldE1lZGlhVm9sdW1lKGZsb2F0KTsKLSAgICB2b2lkIHNldE11dGVkKGJvb2wpOworICAg
IHZvaWQgc2V0TXV0ZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzKTsK
ICAgICB2b2lkIHNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coYm9vbCk7CiAgICAgYm9vbCBt
YXlTdGFydE1lZGlhV2hlbkluV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9tYXlTdGFydE1lZGlh
V2hlbkluV2luZG93OyB9CiAgICAgICAgIApAQCAtMTg1Miw3ICsxODUyLDcgQEAgcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpJbnRTaXplIG1fbWluaW11bUxheW91dFNpemU7CiAKICAgICBmbG9hdCBt
X21lZGlhVm9sdW1lOwotICAgIGJvb2wgbV9tdXRlZDsKKyAgICBXZWJDb3JlOjpNZWRpYVByb2R1
Y2VyOjpNdXRlZFN0YXRlRmxhZ3MgbV9tdXRlZFN0YXRlIHsgV2ViQ29yZTo6TWVkaWFQcm9kdWNl
cjo6Tm9uZU11dGVkIH07CiAgICAgYm9vbCBtX21heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3c7CiAK
ICAgICBib29sIG1fd2FpdGluZ0ZvckRpZFVwZGF0ZVZpZXdTdGF0ZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMDc3NTgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYwMSw3ICsyNjAxLDcgQEAgdm9pZCBXS1BhZ2VTZXRNZWRpYVZvbHVtZShXS1BhZ2VSZWYg
cGFnZQogICAgIHRvSW1wbChwYWdlKS0+c2V0TWVkaWFWb2x1bWUodm9sdW1lKTsgICAgCiB9CiAK
LXZvaWQgV0tQYWdlU2V0TXV0ZWQoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgbXV0ZWQpCit2b2lkIFdL
UGFnZVNldE11dGVkKFdLUGFnZVJlZiBwYWdlLCBXS01lZGlhTXV0ZWRTdGF0ZSBtdXRlZCkKIHsK
ICAgICB0b0ltcGwocGFnZSktPnNldE11dGVkKG11dGVkKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAkocmV2aXNpb24gMjA3NzU4
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCwxNCBAQCBXS19FWFBPUlQgYm9vbCBXS1BhZ2VHZXRB
ZGRzVmlzaXRlZExpbmtzCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRBZGRzVmlzaXRlZExpbmtz
KFdLUGFnZVJlZiBwYWdlLCBib29sIHZpc2l0ZWRMaW5rcyk7CiAKIFdLX0VYUE9SVCBib29sIFdL
UGFnZUlzUGxheWluZ0F1ZGlvKFdLUGFnZVJlZiBwYWdlKTsKLVdLX0VYUE9SVCB2b2lkIFdLUGFn
ZVNldE11dGVkKFdLUGFnZVJlZiBwYWdlLCBib29sIG11dGVkKTsKKworZW51bSB7CisgICAga1dL
TWVkaWFOb25lTXV0ZWQgPSAwLAorICAgIGtXS01lZGlhQXVkaW9NdXRlZCA9IDEgPDwgMCwKKyAg
ICBrV0tNZWRpYUNhcHR1cmVEZXZpY2VzTXV0ZWQgPSAxIDw8IDEsCit9OwordHlwZWRlZiB1aW50
MzJfdCBXS01lZGlhTXV0ZWRTdGF0ZTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZVNldE11dGVkKFdL
UGFnZVJlZiBwYWdlLCBXS01lZGlhTXV0ZWRTdGF0ZSBtdXRlZCk7CiAKIGVudW0gewogICAgIGtX
S01lZGlhSXNOb3RQbGF5aW5nID0gMCwKQEAgLTEzMCw2ICsxMzcsNyBAQCBlbnVtIHsKIH07CiB0
eXBlZGVmIHVpbnQzMl90IFdLTWVkaWFTdGF0ZTsKIAorCiBXS19FWFBPUlQgV0tNZWRpYVN0YXRl
IFdLUGFnZUdldE1lZGlhU3RhdGUoV0tQYWdlUmVmIHBhZ2UpOwogCiBlbnVtIHsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHJl
dmlzaW9uIDIwNzc1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzMSw3ICsxNTMxLDcgQEAgYm9vbCBQbHVn
aW5WaWV3Ojppc011dGVkKCkgY29uc3QKICAgICBpZiAoIWZyYW1lKCkgfHwgIWZyYW1lKCktPnBh
Z2UoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGZyYW1lKCktPnBhZ2Uo
KS0+aXNNdXRlZCgpOworICAgIHJldHVybiBmcmFtZSgpLT5wYWdlKCktPm11dGVkU3RhdGUoKSAm
IE1lZGlhUHJvZHVjZXI6OkF1ZGlvSXNNdXRlZDsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMjA3NzU4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTMxNCw3ICszMTQsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgICMgTWVkaWEKICAgICBT
ZXRNZWRpYVZvbHVtZShmbG9hdCB2b2x1bWUpCi0gICAgU2V0TXV0ZWQoYm9vbCBtdXRlZCkKKyAg
ICBTZXRNdXRlZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3MgbXV0ZWQp
CiAgICAgU2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhib29sIG1heVN0YXJ0TWVkaWEpCiAK
ICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzc1OCkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDE2LTEwLTI0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFtNZWRpYVN0cmVhbV0gU2VwYXJhdGUgbWVkaWEgY2FwdHVyZSBhbmQgYXVkaW8gcGxheWJh
Y2sgbXV0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjM4NTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4ODI3MTg2PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS1wYWdlLW11dGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1wYWdlLW11dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IG1lZGlhL3ZpZGVvLW11dGVkLWFmdGVyLXNldHRpbmctcGFnZS1tdXRlZC1zdGF0ZS5odG1sOiBV
cGRhdGVkLgorCiAyMDE2LTEwLTI0ICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtDU1MgUGFyc2VyXSBVbnByZWZpeCAtd2Via2l0LXdyaXRpbmctbW9kZQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1wYWdlLW11dGVkLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLXBhZ2UtbXV0ZWQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tcGFnZS1tdXRlZC1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorVGVzdCBlbmFibGluZy9kaXNhYmxpbmcg
bW9jayBtZWRpYSBjYXB0dXJlIGRldmljZXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKKworKioqIE1vY2sgY2FwdHVyZSBkZXZpY2VzIHNob3VsZCBiZSBlbmFibGVkIGJ5IGRlZmF1
bHQKK1BBU1MgbWVkaWFTdHJlYW0gaXMgYW4gaW5zdGFuY2Ugb2YgT2JqZWN0CitQQVNTIG1lZGlh
U3RyZWFtLmdldFRyYWNrcygpLmxlbmd0aCBpcyAyCisKKyoqKiBNdXRpbmcgY2FwdHVyZSBkZXZp
Y2VzCitFVkVOVDogbXV0ZQorUEFTUyBldmVudC50YXJnZXQubXV0ZWQgaXMgdHJ1ZQorCitFVkVO
VDogbXV0ZQorUEFTUyBldmVudC50YXJnZXQubXV0ZWQgaXMgdHJ1ZQorCisKKyoqKiBVbm11dGlu
ZyBjYXB0dXJlIGRldmljZXMKK0VWRU5UOiB1bm11dGUKK1BBU1MgZXZlbnQudGFyZ2V0Lm11dGVk
IGlzIGZhbHNlCisKK0VWRU5UOiB1bm11dGUKK1BBU1MgZXZlbnQudGFyZ2V0Lm11dGVkIGlzIGZh
bHNlCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXBhZ2UtbXV0
ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLXBhZ2UtbXV0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXBhZ2UtbXV0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDgwIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGxldCBtZWRpYVN0cmVhbTsKKyAgICAg
ICAgICAgIGxldCBldmVudENvdW50ID0gMDsKKworICAgICAgICAgICAgZnVuY3Rpb24gbXV0ZUNo
YW5nZWQoZXYpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQgPSBldjsKKyAg
ICAgICAgICAgICAgICBkZWJ1ZyhgRVZFTlQ6ICR7ZXYudHlwZX1gKTsKKyAgICAgICAgICAgICAg
ICBzaG91bGRCZSgnZXZlbnQudGFyZ2V0Lm11dGVkJywgKGV2LnR5cGUgPT0gIm11dGUiKS50b1N0
cmluZygpKTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisKKyAgICAgICAgICAgICAgICBp
ZiAoKytldmVudENvdW50ID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRDb3VudCA9
IDA7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGV2LnR5cGUgPT0gInVubXV0ZSIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVn
KCI8YnI+KioqIFVubXV0aW5nIGNhcHR1cmUgZGV2aWNlcyIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJuYWxzLnNldFBhZ2VNdXRlZCgiIik7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHRlc3RXaGVuRW5hYmxlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcworICAgICAgICAgICAgICAgICAgICAuZ2V0VXNl
ck1lZGlhKHthdWRpbzp7fSwgdmlkZW86e319KQorICAgICAgICAgICAgICAgICAgICAudGhlbihz
dHJlYW0gPT4geworICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW0gPSBzdHJlYW07
CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZVR5cGUoIm1lZGlhU3RyZWFtIiwgIk9i
amVjdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoIm1lZGlhU3RyZWFtLmdl
dFRyYWNrcygpLmxlbmd0aCIsICIyIik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0
cmFja3MgPSBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdHJhY2tzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHJhY2tzW2ldLm9ubXV0ZSA9IG11dGVDaGFuZ2VkOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRyYWNrc1tpXS5vbnVubXV0ZSA9IG11dGVDaGFuZ2VkOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCI8YnI+
KioqIE11dGluZyBjYXB0dXJlIGRldmljZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0UGFnZU11dGVkKCJjYXB0dXJlZGV2aWNlcyIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAg
ICAuY2F0Y2goKGVycikgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChg
bWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpIGZhaWxlZCB3aXRoICR7ZXJyLm5hbWV9YCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZyhgPGJyPioqKiBNb2NrIGNhcHR1cmUg
ZGV2aWNlcyBzaG91bGQgYmUgZW5hYmxlZCBieSBkZWZhdWx0YCk7CisgICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CisKKyAgICAgICAgICAgICAgICB0ZXN0V2hlbkVu
YWJsZWQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisKKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgICAgICBkZXNjcmlwdGlvbigiVGVzdCBlbmFibGluZy9kaXNhYmxpbmcgbW9j
ayBtZWRpYSBjYXB0dXJlIGRldmljZXMiKTsKKyAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CisgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbXV0ZWQtYWZ0ZXItc2V0dGluZy1wYWdlLW11dGVk
LXN0YXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbXV0ZWQt
YWZ0ZXItc2V0dGluZy1wYWdlLW11dGVkLXN0YXRlLmh0bWwJKHJldmlzaW9uIDIwNzc1OCkKKysr
IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLW11dGVkLWFmdGVyLXNldHRpbmctcGFnZS1tdXRlZC1z
dGF0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDEzICs1LDEzIEBACiA8c2NyaXB0PgogICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8ubXV0ZWQiLCBmYWxzZSk7CiAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCi0gICAgICAgIGludGVybmFscy5zZXRQYWdlTXV0ZWQodHJ1ZSk7CisgICAgICAgIGlu
dGVybmFscy5zZXRQYWdlTXV0ZWQoImF1ZGlvIik7CiAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5t
dXRlZCIsIGZhbHNlKTsKIAogICAgIHJ1bigidmlkZW8ubXV0ZWQgPSB0cnVlIik7CiAgICAgdGVz
dEV4cGVjdGVkKCJ2aWRlby5tdXRlZCIsIHRydWUpOwogICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQotICAgICAgICBpbnRlcm5hbHMuc2V0UGFnZU11dGVkKGZhbHNlKTsKKyAgICAgICAgaW50ZXJu
YWxzLnNldFBhZ2VNdXRlZCgiIik7CiAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tdXRlZCIsIHRy
dWUpOwogICAgIGVuZFRlc3QoKTsKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292620</attachid>
            <date>2016-10-24 10:18:19 -0700</date>
            <delta_ts>2016-10-24 10:18:19 -0700</delta_ts>
            <desc>Updated patch for landing.</desc>
            <filename>page_muted_patch_5.txt</filename>
            <type>text/plain</type>
            <size>26015</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE2LTEwLTI0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
U2VwYXJhdGUgbWVkaWEgY2FwdHVyZSBhbmQgYXVkaW8gcGxheWJhY2sgbXV0aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM4NTUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzI4ODI3MTg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tcGFnZS1t
dXRlZC5odG1sCisKKyAgICAgICAgQ2hhbmdlIHBhZ2UubXV0ZWQgZnJvbSBhIGJvb2wgdG8gYSBi
aXRmaWVsZCBzbyBhdWRpbyBhbmQgbWVkaWEgY2FwdHVyZSBtdXRlZCBhcmUgaW5kZXBlbmRlbnQu
CisgICAgICAgIEZpeCBhIGNvdXBsZSBvZiBidWdzIGluIHRoZSBtb2NrIG1lZGlhIGNhcHR1cmUg
ZGV2aWNlIHVuY292ZXJlZCBieSBuZXcgdGVzdCBjYXNlLgorICAgICAgICAKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtOjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSk6IHBhZ2UuaXNNdXRlZCAtPiBwYWdl
Lm11dGVkU3RhdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hh
bmdlKTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlVm9sdW1lKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVNdXRlZCk6IERpdHRv
LgorCisgICAgICAgICogcGFnZS9NZWRpYVByb2R1Y2VyLmg6IEFkZCBNdXRlZFN0YXRlIGVudW0u
CisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRNdXRlZCk6IFRha2UgTXV0ZWRTdGF0ZUZs
YWdzIGluc3RlYWQgb2YgYm9vbC4gbV9tdXRlZCAtPiBtX211dGVkU3RhdGUuCisgICAgICAgICog
cGFnZS9QYWdlLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlh
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpz
dGFydFByb2R1Y2luZ0RhdGEpOiBDYWxsIHNldE11dGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKTogRGl0dG8uCisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorCisgICAgICAgICog
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOiBDYWxsIGNv
cnJlY3QgYmFzZSBjbGFzcyBtZXRob2QuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFBhZ2VNdXRlZCk6IENoYW5nZSBw
YXJhbWV0ZXIgZnJvbSBhIGJvb2wgdG8gYSBzdHJpbmcuCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDoKKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxNi0xMC0y
MSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtNb2Rlcm4g
TWVkaWEgQ29udHJvbHNdIENvbmNhdGVuYXRlIEpTIGFuZCBDU1MgZmlsZXMgaW50byBhIHNpbmds
ZSBKUyBhbmQgQ1NTIHJlc291cmNlcwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHJldmlzaW9uIDIwNzc1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBNZWRpYVN0cmVhbTo6cGFnZU11dGVkU3Rh
dGVEaWRDaGFuZwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJv
b2wgcGFnZU11dGVkID0gZG9jdW1lbnQtPnBhZ2UoKS0+aXNNdXRlZCgpOworICAgIGJvb2wgcGFn
ZU11dGVkID0gZG9jdW1lbnQtPnBhZ2UoKS0+aXNNZWRpYUNhcHR1cmVNdXRlZCgpOwogICAgIGlm
IChtX2V4dGVybmFsbHlNdXRlZCA9PSBwYWdlTXV0ZWQpCiAgICAgICAgIHJldHVybjsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cAkocmV2aXNpb24gMjA3NzU4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzMsNyArOTczLDcgQEAgTWVkaWFQ
cm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIEF1ZGlvQ29udAogdm9pZCBBdWRpb0NvbnRleHQ6OnBh
Z2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkKIHsKICAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUgJiYg
ZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+c2V0TXV0ZWQo
ZG9jdW1lbnQoKS0+cGFnZSgpLT5pc011dGVkKCkpOworICAgICAgICBtX2Rlc3RpbmF0aW9uTm9k
ZS0+c2V0TXV0ZWQoZG9jdW1lbnQoKS0+cGFnZSgpLT5pc0F1ZGlvTXV0ZWQoKSk7CiB9CiAKIHZv
aWQgQXVkaW9Db250ZXh0Ojppc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwNzc1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ4NDYsNyArNDg0Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlVm9sdW1lKCkK
IAogICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsKICAgICAgICAgICAgIHZvbHVtZU11
bHRpcGxpZXIgKj0gbV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpOwotICAgICAgICAgICAgc2hv
dWxkTXV0ZSA9IG1fbWVkaWFDb250cm9sbGVyLT5tdXRlZCgpIHx8IChwYWdlICYmIHBhZ2UtPmlz
TXV0ZWQoKSk7CisgICAgICAgICAgICBzaG91bGRNdXRlID0gbV9tZWRpYUNvbnRyb2xsZXItPm11
dGVkKCkgfHwgKHBhZ2UgJiYgcGFnZS0+aXNBdWRpb011dGVkKCkpOwogICAgICAgICB9CiAKICNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKQEAgLTcwMDcsNyArNzAwNyw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6cGFnZU11dGVkU3RhdGVEaWQKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpl
ZmZlY3RpdmVNdXRlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG11dGVkKCkgfHwgKGRvY3VtZW50
KCkucGFnZSgpICYmIGRvY3VtZW50KCkucGFnZSgpLT5pc011dGVkKCkpOworICAgIHJldHVybiBt
dXRlZCgpIHx8IChkb2N1bWVudCgpLnBhZ2UoKSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+aXNBdWRp
b011dGVkKCkpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUF1ZGlvQXNzZXJ0
aW9uU3RhdGUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVByb2R1Y2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVByb2R1Y2VyLmgJKHJldmlzaW9u
IDIwNzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFQcm9kdWNlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw2ICs0OCwxNCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBN
ZWRpYVN0YXRlRmxhZ3M7CiAKICAgICB2aXJ0dWFsIE1lZGlhU3RhdGVGbGFncyBtZWRpYVN0YXRl
KCkgY29uc3QgPSAwOworCisgICAgZW51bSBNdXRlZFN0YXRlIHsKKyAgICAgICAgTm9uZU11dGVk
ID0gMCwKKyAgICAgICAgQXVkaW9Jc011dGVkID0gMSA8PCAwLAorICAgICAgICBDYXB0dXJlRGV2
aWNlc0FyZU11dGVkID0gMSA8PCAxLAorICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBNdXRl
ZFN0YXRlRmxhZ3M7CisKICAgICB2aXJ0dWFsIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRDaGFuZ2Uo
KSA9IDA7CiAKIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjA3
NzU4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTkzLDcgKzE5Myw2IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkK
ICAgICAsIG1faW5Mb3dRdWFsaXR5SW50ZXJwb2xhdGlvbk1vZGUoZmFsc2UpCiAgICAgLCBtX2Fy
ZU1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKHRydWUpCiAgICAgLCBtX21lZGlhVm9sdW1l
KDEpCi0gICAgLCBtX211dGVkKGZhbHNlKQogICAgICwgbV9wYWdlU2NhbGVGYWN0b3IoMSkKICAg
ICAsIG1fem9vbWVkT3V0UGFnZVNjYWxlRmFjdG9yKDApCiAgICAgLCBtX3RvcENvbnRlbnRJbnNl
dCgwKQpAQCAtMTM4MSwxMiArMTM4MCwxMiBAQCB2b2lkIFBhZ2U6OnVwZGF0ZUlzUGxheWluZ01l
ZGlhKHVpbnQ2NF90CiAgICAgY2hyb21lKCkuY2xpZW50KCkuaXNQbGF5aW5nTWVkaWFEaWRDaGFu
Z2Uoc3RhdGUsIHNvdXJjZUVsZW1lbnRJRCk7CiB9CiAKLXZvaWQgUGFnZTo6c2V0TXV0ZWQoYm9v
bCBtdXRlZCkKK3ZvaWQgUGFnZTo6c2V0TXV0ZWQoTWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZs
YWdzIG11dGVkKQogewotICAgIGlmIChtX211dGVkID09IG11dGVkKQorICAgIGlmIChtX211dGVk
U3RhdGUgPT0gbXV0ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fbXV0ZWQgPSBtdXRlZDsK
KyAgICBtX211dGVkU3RhdGUgPSBtdXRlZDsKIAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1h
aW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7
CiAgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2
aXNpb24gMjA3NzU4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4MCw4ICs0ODAsMTAgQEAgcHVibGljOgogCiAgICAgTWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX21lZGlhU3RhdGU7IH0K
ICAgICB2b2lkIHVwZGF0ZUlzUGxheWluZ01lZGlhKHVpbnQ2NF90KTsKLSAgICBib29sIGlzTXV0
ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRNdXRlZChib29sKTsKKyAgICBNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3MgbXV0ZWRT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWRTdGF0ZTsgfQorICAgIGJvb2wgaXNBdWRpb011
dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZFN0YXRlICYgTWVkaWFQcm9kdWNlcjo6QXVkaW9J
c011dGVkOyB9CisgICAgYm9vbCBpc01lZGlhQ2FwdHVyZU11dGVkKCkgY29uc3QgeyByZXR1cm4g
bV9tdXRlZFN0YXRlICYgTWVkaWFQcm9kdWNlcjo6Q2FwdHVyZURldmljZXNBcmVNdXRlZDsgfTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE11dGVkKE1lZGlhUHJvZHVjZXI6Ok11dGVkU3Rh
dGVGbGFncyk7CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGhhbmRsZU1lZGlhRXZlbnQoTWVkaWFFdmVudFR5cGUpOwpAQCAtNjA5LDcgKzYxMSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luTG93UXVhbGl0eUludGVycG9sYXRpb25Nb2RlOwog
ICAgIGJvb2wgbV9hcmVNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZDsKICAgICBmbG9hdCBt
X21lZGlhVm9sdW1lOwotICAgIGJvb2wgbV9tdXRlZDsKKyAgICBNZWRpYVByb2R1Y2VyOjpNdXRl
ZFN0YXRlRmxhZ3MgbV9tdXRlZFN0YXRlIHsgTWVkaWFQcm9kdWNlcjo6Tm9uZU11dGVkIH07CiAK
ICAgICBmbG9hdCBtX3BhZ2VTY2FsZUZhY3RvcjsKICAgICBmbG9hdCBtX3pvb21lZE91dFBhZ2VT
Y2FsZUZhY3RvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCShyZXZpc2lvbiAyMDc3NTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCB2b2lkIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OnJlbW92ZU9ic2VydmVyCiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0
TXV0ZWQoYm9vbCBtdXRlZCkKIHsKLSAgICBpZiAobV9tdXRlZCA9PSBtdXRlZCkKKyAgICBpZiAo
bV9zdG9wcGVkIHx8IG1fbXV0ZWQgPT0gbXV0ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
bXV0ZWQgPSBtdXRlZDsKQEAgLTE1MCw3ICsxNTAsNiBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnJlcXVlc3RTdG9wKE9iCiAgICAgc3RvcChjYWxsaW5nT2JzZXJ2ZXIpOwogfQogCi0jaWYg
MQogZG91YmxlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmZpdG5lc3NEaXN0YW5jZShjb25zdCBNZWRp
YUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllcyYgY2FwYWJpbGl0aWVzID0gKnRoaXMtPmNhcGFiaWxpdGllcygpOwpAQCAtMjc1LDcg
KzI3NCw2IEBAIGRvdWJsZSBSZWFsdGltZU1lZGlhU291cmNlOjpmaXRuZXNzRGlzdGEKIAogICAg
IHJldHVybiAwOwogfQotI2VuZGlmCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZVR5cGU+CiBz
dGF0aWMgdm9pZCBhcHBseU51bWVyaWNDb25zdHJhaW50KGNvbnN0IE51bWVyaWNDb25zdHJhaW50
PFZhbHVlVHlwZT4mIGNvbnN0cmFpbnQsIFZhbHVlVHlwZSBjdXJyZW50LCBWYWx1ZVR5cGUgY2Fw
YWJpbGl0eU1pbiwgVmFsdWVUeXBlIGNhcGFiaWxpdHlNYXgsIFJlYWx0aW1lTWVkaWFTb3VyY2Uq
IHNvdXJjZSwgdm9pZCAoUmVhbHRpbWVNZWRpYVNvdXJjZTo6KmFwcGxpZXIpKFZhbHVlVHlwZSkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlLmNwcAkocmV2aXNpb24gMjA3NzU4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNCw2ICsxMjQsMTggQEAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0
cmFpbnRzJgogICAgIHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogfQogCit2b2lkIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQoreworICAgIG1faXNQ
cm9kdWNpbmdEYXRhID0gdHJ1ZTsKKyAgICBzZXRNdXRlZChmYWxzZSk7Cit9CisKK3ZvaWQgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKK3sKKyAgICBtX2lzUHJv
ZHVjaW5nRGF0YSA9IGZhbHNlOworICAgIHNldE11dGVkKHRydWUpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2UuaAkocmV2aXNpb24gMjA3NzU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw4ICs2OSw4
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhS
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBp
bml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRl
ZENvbnN0cmFpbnRzJikgPSAwOwogCi0gICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBvdmVy
cmlkZSB7IG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsgfQotICAgIHZvaWQgc3RvcFByb2R1Y2lu
Z0RhdGEoKSBvdmVycmlkZSB7IG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7IH0KKyAgICB2b2lk
IHN0YXJ0UHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOworICAgIHZvaWQgc3RvcFByb2R1Y2luZ0Rh
dGEoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzPiBjYXBhYmlsaXRpZXMoKSBvdmVycmlkZTsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAko
cmV2aXNpb24gMjA3NzU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgdm9p
ZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdQogCiB2b2lkIE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpOwogICAgIG1fdGltZXIuc3RvcCgpOwogICAgIG1fZWxh
cHNlZFRpbWUgKz0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX3N0YXJ0VGltZTsK
ICAgICBtX3N0YXJ0VGltZSA9IE5BTjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAJKHJldmlzaW9uIDIwNzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBAQAogI2luY2x1ZGUgIk1haW5G
cmFtZS5oIgogI2luY2x1ZGUgIk1hbGxvY1N0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJNZWRpYVBs
YXllci5oIgorI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNo
ZS5oIgogI2luY2x1ZGUgIk1lbW9yeUluZm8uaCIKICNpbmNsdWRlICJNZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaCIKQEAgLTI5NDUsMTQgKzI5NDYsMjQgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRl
cm5hbHM6OnBhZ2VPdmVybAogICAgIHJldHVybiBNb2NrUGFnZU92ZXJsYXlDbGllbnQ6OnNpbmds
ZXRvbigpLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudC0+ZnJhbWUoKS0+bWFpbkZyYW1lKCkpOwog
fQogCi12b2lkIEludGVybmFsczo6c2V0UGFnZU11dGVkKGJvb2wgbXV0ZWQpCit2b2lkIEludGVy
bmFsczo6c2V0UGFnZU11dGVkKGNvbnN0IFN0cmluZyYgc3RhdGVzKQogewogICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFn
cyBzdGF0ZSA9IE1lZGlhUHJvZHVjZXI6Ok5vbmVNdXRlZDsKKyAgICBWZWN0b3I8U3RyaW5nPiBz
dGF0ZVN0cmluZzsKKyAgICBzdGF0ZXMuc3BsaXQoJywnLCBmYWxzZSwgc3RhdGVTdHJpbmcpOwor
ICAgIGZvciAoYXV0byYgbXV0ZVN0cmluZyA6IHN0YXRlU3RyaW5nKSB7CisgICAgICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtdXRlU3RyaW5nLCAiYXVkaW8iKSkKKyAgICAg
ICAgICAgIHN0YXRlIHw9IE1lZGlhUHJvZHVjZXI6OkF1ZGlvSXNNdXRlZDsKKyAgICAgICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG11dGVTdHJpbmcsICJjYXB0dXJlZGV2aWNl
cyIpKQorICAgICAgICAgICAgc3RhdGUgfD0gTWVkaWFQcm9kdWNlcjo6Q2FwdHVyZURldmljZXNB
cmVNdXRlZDsKKyAgICB9CisKICAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCkp
Ci0gICAgICAgIHBhZ2UtPnNldE11dGVkKG11dGVkKTsKKyAgICAgICAgcGFnZS0+c2V0TXV0ZWQo
c3RhdGUpOwogfQogCiBib29sIEludGVybmFsczo6aXNQYWdlUGxheWluZ0F1ZGlvKCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkocmV2aXNpb24gMjA3NzU4KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQwLDcgKzQ0
MCw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxSZWY8TW9ja1BhZ2VPdmVybGF5Pj4gaW5z
dGFsbE1vY2tQYWdlT3ZlcmxheShQYWdlT3ZlcmxheVR5cGUpOwogICAgIEV4Y2VwdGlvbk9yPFN0
cmluZz4gcGFnZU92ZXJsYXlMYXllclRyZWVBc1RleHQoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0
UGFnZU11dGVkKGJvb2wpOworICAgIHZvaWQgc2V0UGFnZU11dGVkKGNvbnN0IFN0cmluZyYpOwog
ICAgIGJvb2wgaXNQYWdlUGxheWluZ0F1ZGlvKCk7CiAKICAgICB2b2lkIHNldFBhZ2VEZWZlcnNM
b2FkaW5nKGJvb2wpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2
aXNpb24gMjA3NzU4KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC00MTcsNyArNDE3LDcgQEAgZW51bSBVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uIHsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE1vY2tQYWdlT3ZlcmxheSBpbnN0
YWxsTW9ja1BhZ2VPdmVybGF5KFBhZ2VPdmVybGF5VHlwZSB0eXBlKTsKICAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIERPTVN0cmluZyBwYWdlT3ZlcmxheUxheWVyVHJlZUFzVGV4dCgpOwogCi0gICAg
dm9pZCBzZXRQYWdlTXV0ZWQoYm9vbGVhbiBtdXRlZCk7CisgICAgdm9pZCBzZXRQYWdlTXV0ZWQo
RE9NU3RyaW5nIG11dGVkU3RhdGUpOwogICAgIGJvb2xlYW4gaXNQYWdlUGxheWluZ0F1ZGlvKCk7
CiAKICAgICB2b2lkIHNldFBhZ2VEZWZlcnNMb2FkaW5nKGJvb2xlYW4gZGVmZXJzTG9hZGluZyk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDc3NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxNi0xMC0yNCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1d
IFNlcGFyYXRlIG1lZGlhIGNhcHR1cmUgYW5kIGF1ZGlvIHBsYXliYWNrIG11dGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzODU1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yODgyNzE4Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6IENo
YW5nZSAnbXV0ZWQnIGZyb20gYm9vbCB0byBNdXRlZFN0YXRlRmxhZ3MuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDogQ2hhbmdlIHBhcmFtZXRlciBmcm9tIGJvb2wgdG8g
V0tNZWRpYU11dGVkU3RhdGUuCisgICAgICAgIChXS1BhZ2VTZXRNdXRlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaDogRGVmaW5lIFdLTWVkaWFNdXRlZFN0YXRl
LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZXRNdXRlZCk6IG1fbXV0ZWQgLT4gbV9tdXRlZFN0YXRlLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6IERpdHRvLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6aXNNdXRlZCk6
IHBhZ2UuaXNNdXRlZCAtPiBwYWdlLm11dGVkU3RhdGUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogQ2hhbmdlIFNldE11dGVkIHBhcmFtZXRlci4K
KwogMjAxNi0xMC0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS10gUmVtb3ZlIERPIE5PVCBNT0RJRlkgaGVhZGVycyBmcm9tIGZpbGVz
IHRoYXQgYXJlIG5vIGxvbmdlciBhdXRvZ2VuZXJhdGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIwNzc1
OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9y
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
dFNpemUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUHJvZHVjZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2luYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KQEAgLTk5LDcgKzEwMCw3IEBAIHN0cnVjdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBmbG9hdCB0b3BDb250ZW50SW5zZXQ7CiAg
ICAgCiAgICAgZmxvYXQgbWVkaWFWb2x1bWU7Ci0gICAgYm9vbCBtdXRlZDsKKyAgICBXZWJDb3Jl
OjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3MgbXV0ZWQ7CiAgICAgYm9vbCBtYXlTdGFy
dE1lZGlhV2hlbkluV2luZG93OwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtaW5pbXVtTGF5b3V0
U2l6ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShy
ZXZpc2lvbiAyMDc3NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ0LDcgKzQ0NCw2IEBAIFdlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICAsIG1fc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRl
cyhmYWxzZSkKICAgICAsIG1fYXV0b1NpemluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodChmYWxz
ZSkKICAgICAsIG1fbWVkaWFWb2x1bWUoMSkKLSAgICAsIG1fbXV0ZWQoZmFsc2UpCiAgICAgLCBt
X21heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3codHJ1ZSkKICAgICAsIG1fd2FpdGluZ0ZvckRpZFVw
ZGF0ZVZpZXdTdGF0ZShmYWxzZSkKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE1ODgsNyArMTU4
Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKIAogICAgIC8v
IFdlIHNob3VsZCBzdXBwcmVzcyBpZiB0aGUgcGFnZSBpcyBub3QgYWN0aXZlLCBpcyB2aXN1YWxs
eSBpZGxlLCBhbmQgc3VwcmVzc2lvbiBpcyBlbmFibGVkLgogICAgIGJvb2wgaXNMb2FkaW5nID0g
bV9wYWdlTG9hZFN0YXRlLmlzTG9hZGluZygpOwotICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8gPSBt
X21lZGlhU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbyAmJiAhbV9tdXRlZDsK
KyAgICBib29sIGlzUGxheWluZ0F1ZGlvID0gbV9tZWRpYVN0YXRlICYgTWVkaWFQcm9kdWNlcjo6
SXNQbGF5aW5nQXVkaW8gJiYgIShtX211dGVkU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpBdWRpb0lz
TXV0ZWQpOwogICAgIGJvb2wgcGFnZVNob3VsZEJlU3VwcHJlc3NlZCA9ICFpc0xvYWRpbmcgJiYg
IWlzUGxheWluZ0F1ZGlvICYmIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQgJiYgKG1fdmlld1N0
YXRlICYgVmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CiAgICAgaWYgKG1fcGFnZVN1cHByZXNz
ZWQgIT0gcGFnZVNob3VsZEJlU3VwcHJlc3NlZCkgewogICAgICAgICBtX3BhZ2VTdXBwcmVzc2Vk
ID0gcGFnZVNob3VsZEJlU3VwcHJlc3NlZDsKQEAgLTQxNTIsMTcgKzQxNTEsMTcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldE1lZGlhVm9sdW1lKGZsb2F0IAogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0TWVkaWFWb2x1bWUodm9sdW1lKSwgbV9wYWdlSUQpOyAgICAK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldE11dGVkKGJvb2wgbXV0ZWQpCit2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0TXV0ZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdz
IHN0YXRlKQogewotICAgIGlmIChtX211dGVkID09IG11dGVkKQorICAgIGlmIChtX211dGVkU3Rh
dGUgPT0gc3RhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fbXV0ZWQgPSBtdXRlZDsKKyAg
ICBtX211dGVkU3RhdGUgPSBzdGF0ZTsKIAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE11dGVk
KG11dGVkKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0TXV0ZWQoc3RhdGUpLCBtX3BhZ2VJRCk7CiAKICAgICB1cGRhdGVUaHJvdHRsZVN0YXRl
KCk7CiB9CkBAIC01NDgzLDcgKzU0ODIsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdl
YlBhZ2VQcm94eTo6CiAgICAgcGFyYW1ldGVycy52aWV3U2NhbGVGYWN0b3IgPSBtX3ZpZXdTY2Fs
ZUZhY3RvcjsKICAgICBwYXJhbWV0ZXJzLnRvcENvbnRlbnRJbnNldCA9IG1fdG9wQ29udGVudElu
c2V0OwogICAgIHBhcmFtZXRlcnMubWVkaWFWb2x1bWUgPSBtX21lZGlhVm9sdW1lOwotICAgIHBh
cmFtZXRlcnMubXV0ZWQgPSBtX211dGVkOworICAgIHBhcmFtZXRlcnMubXV0ZWQgPSBtX211dGVk
U3RhdGU7CiAgICAgcGFyYW1ldGVycy5tYXlTdGFydE1lZGlhV2hlbkluV2luZG93ID0gbV9tYXlT
dGFydE1lZGlhV2hlbkluV2luZG93OwogICAgIHBhcmFtZXRlcnMubWluaW11bUxheW91dFNpemUg
PSBtX21pbmltdW1MYXlvdXRTaXplOwogICAgIHBhcmFtZXRlcnMuYXV0b1NpemluZ1Nob3VsZEV4
cGFuZFRvVmlld0hlaWdodCA9IG1fYXV0b1NpemluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIw
Nzc1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTM3LDcgKzkzNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHByaW50TWFpbkZy
YW1lKCk7CiAgICAgCiAgICAgdm9pZCBzZXRNZWRpYVZvbHVtZShmbG9hdCk7Ci0gICAgdm9pZCBz
ZXRNdXRlZChib29sKTsKKyAgICB2b2lkIHNldE11dGVkKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
Ok11dGVkU3RhdGVGbGFncyk7CiAgICAgdm9pZCBzZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93
KGJvb2wpOwogICAgIGJvb2wgbWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdygpIGNvbnN0IHsgcmV0
dXJuIG1fbWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdzsgfQogICAgICAgICAKQEAgLTE4NTIsNyAr
MTg1Miw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX21pbmltdW1MYXlvdXRT
aXplOwogCiAgICAgZmxvYXQgbV9tZWRpYVZvbHVtZTsKLSAgICBib29sIG1fbXV0ZWQ7CisgICAg
V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIG1fbXV0ZWRTdGF0ZSB7IFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok5vbmVNdXRlZCB9OwogICAgIGJvb2wgbV9tYXlTdGFydE1l
ZGlhV2hlbkluV2luZG93OwogCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JEaWRVcGRhdGVWaWV3U3Rh
dGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2
aXNpb24gMjA3NzU4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MDEsNyArMjYwMSw3IEBAIHZvaWQgV0tQYWdlU2V0TWVk
aWFWb2x1bWUoV0tQYWdlUmVmIHBhZ2UKICAgICB0b0ltcGwocGFnZSktPnNldE1lZGlhVm9sdW1l
KHZvbHVtZSk7ICAgIAogfQogCi12b2lkIFdLUGFnZVNldE11dGVkKFdLUGFnZVJlZiBwYWdlLCBi
b29sIG11dGVkKQordm9pZCBXS1BhZ2VTZXRNdXRlZChXS1BhZ2VSZWYgcGFnZSwgV0tNZWRpYU11
dGVkU3RhdGUgbXV0ZWQpCiB7CiAgICAgdG9JbXBsKHBhZ2UpLT5zZXRNdXRlZChtdXRlZCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRl
LmgJKHJldmlzaW9uIDIwNzc1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsMTQgQEAgV0tfRVhQ
T1JUIGJvb2wgV0tQYWdlR2V0QWRkc1Zpc2l0ZWRMaW5rcwogV0tfRVhQT1JUIHZvaWQgV0tQYWdl
U2V0QWRkc1Zpc2l0ZWRMaW5rcyhXS1BhZ2VSZWYgcGFnZSwgYm9vbCB2aXNpdGVkTGlua3MpOwog
CiBXS19FWFBPUlQgYm9vbCBXS1BhZ2VJc1BsYXlpbmdBdWRpbyhXS1BhZ2VSZWYgcGFnZSk7Ci1X
S19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRNdXRlZChXS1BhZ2VSZWYgcGFnZSwgYm9vbCBtdXRlZCk7
CisKK2VudW0geworICAgIGtXS01lZGlhTm9uZU11dGVkID0gMCwKKyAgICBrV0tNZWRpYUF1ZGlv
TXV0ZWQgPSAxIDw8IDAsCisgICAga1dLTWVkaWFDYXB0dXJlRGV2aWNlc011dGVkID0gMSA8PCAx
LAorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tNZWRpYU11dGVkU3RhdGU7CitXS19FWFBPUlQgdm9p
ZCBXS1BhZ2VTZXRNdXRlZChXS1BhZ2VSZWYgcGFnZSwgV0tNZWRpYU11dGVkU3RhdGUgbXV0ZWQp
OwogCiBlbnVtIHsKICAgICBrV0tNZWRpYUlzTm90UGxheWluZyA9IDAsCkBAIC0xMzAsNiArMTM3
LDcgQEAgZW51bSB7CiB9OwogdHlwZWRlZiB1aW50MzJfdCBXS01lZGlhU3RhdGU7CiAKKwogV0tf
RVhQT1JUIFdLTWVkaWFTdGF0ZSBXS1BhZ2VHZXRNZWRpYVN0YXRlKFdLUGFnZVJlZiBwYWdlKTsK
IAogZW51bSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAyMDc3NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MzEsNyAr
MTUzMSw3IEBAIGJvb2wgUGx1Z2luVmlldzo6aXNNdXRlZCgpIGNvbnN0CiAgICAgaWYgKCFmcmFt
ZSgpIHx8ICFmcmFtZSgpLT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJl
dHVybiBmcmFtZSgpLT5wYWdlKCktPmlzTXV0ZWQoKTsKKyAgICByZXR1cm4gZnJhbWUoKS0+cGFn
ZSgpLT5pc0F1ZGlvTXV0ZWQoKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNp
b24gMjA3NzU4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTMxNCw3ICszMTQsNyBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgICMgTWVkaWEKICAgICBTZXRNZWRpYVZv
bHVtZShmbG9hdCB2b2x1bWUpCi0gICAgU2V0TXV0ZWQoYm9vbCBtdXRlZCkKKyAgICBTZXRNdXRl
ZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3MgbXV0ZWQpCiAgICAgU2V0
TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhib29sIG1heVN0YXJ0TWVkaWEpCiAKICNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzc1OCkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTEwLTI0
ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRp
YVN0cmVhbV0gU2VwYXJhdGUgbWVkaWEgY2FwdHVyZSBhbmQgYXVkaW8gcGxheWJhY2sgbXV0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM4NTUK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4ODI3MTg2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1w
YWdlLW11dGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS1wYWdlLW11dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3Zp
ZGVvLW11dGVkLWFmdGVyLXNldHRpbmctcGFnZS1tdXRlZC1zdGF0ZS5odG1sOiBVcGRhdGVkLgor
CiAyMDE2LTEwLTI0ICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFtD
U1MgUGFyc2VyXSBVbnByZWZpeCAtd2Via2l0LXdyaXRpbmctbW9kZQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1wYWdlLW11dGVkLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXBh
Z2UtbXV0ZWQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tcGFnZS1tdXRlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyOSBAQAorVGVzdCBlbmFibGluZy9kaXNhYmxpbmcgbW9jayBtZWRp
YSBjYXB0dXJlIGRldmljZXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworKioq
IE1vY2sgY2FwdHVyZSBkZXZpY2VzIHNob3VsZCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQKK1BBU1Mg
bWVkaWFTdHJlYW0gaXMgYW4gaW5zdGFuY2Ugb2YgT2JqZWN0CitQQVNTIG1lZGlhU3RyZWFtLmdl
dFRyYWNrcygpLmxlbmd0aCBpcyAyCisKKyoqKiBNdXRpbmcgY2FwdHVyZSBkZXZpY2VzCitFVkVO
VDogbXV0ZQorUEFTUyBldmVudC50YXJnZXQubXV0ZWQgaXMgdHJ1ZQorCitFVkVOVDogbXV0ZQor
UEFTUyBldmVudC50YXJnZXQubXV0ZWQgaXMgdHJ1ZQorCisKKyoqKiBVbm11dGluZyBjYXB0dXJl
IGRldmljZXMKK0VWRU5UOiB1bm11dGUKK1BBU1MgZXZlbnQudGFyZ2V0Lm11dGVkIGlzIGZhbHNl
CisKK0VWRU5UOiB1bm11dGUKK1BBU1MgZXZlbnQudGFyZ2V0Lm11dGVkIGlzIGZhbHNlCisKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXBhZ2UtbXV0ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXBh
Z2UtbXV0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLXBhZ2UtbXV0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDgwIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGxldCBtZWRpYVN0cmVhbTsKKyAgICAgICAgICAgIGxl
dCBldmVudENvdW50ID0gMDsKKworICAgICAgICAgICAgZnVuY3Rpb24gbXV0ZUNoYW5nZWQoZXYp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQgPSBldjsKKyAgICAgICAgICAg
ICAgICBkZWJ1ZyhgRVZFTlQ6ICR7ZXYudHlwZX1gKTsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZSgnZXZlbnQudGFyZ2V0Lm11dGVkJywgKGV2LnR5cGUgPT0gIm11dGUiKS50b1N0cmluZygpKTsK
KyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisKKyAgICAgICAgICAgICAgICBpZiAoKytldmVu
dENvdW50ID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRDb3VudCA9IDA7CisKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGV2LnR5cGUgPT0gInVubXV0ZSIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCI8YnI+Kioq
IFVubXV0aW5nIGNhcHR1cmUgZGV2aWNlcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgaW50
ZXJuYWxzLnNldFBhZ2VNdXRlZCgiIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0
aW9uIHRlc3RXaGVuRW5hYmxlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbmF2
aWdhdG9yLm1lZGlhRGV2aWNlcworICAgICAgICAgICAgICAgICAgICAuZ2V0VXNlck1lZGlhKHth
dWRpbzp7fSwgdmlkZW86e319KQorICAgICAgICAgICAgICAgICAgICAudGhlbihzdHJlYW0gPT4g
eworICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW0gPSBzdHJlYW07CisgICAgICAg
ICAgICAgICAgICAgICAgICBzaG91bGRCZVR5cGUoIm1lZGlhU3RyZWFtIiwgIk9iamVjdCIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoIm1lZGlhU3RyZWFtLmdldFRyYWNrcygp
Lmxlbmd0aCIsICIyIik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cmFja3MgPSBt
ZWRpYVN0cmVhbS5nZXRUcmFja3MoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdHJhY2tzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJhY2tzW2ldLm9ubXV0ZSA9IG11dGVDaGFuZ2VkOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRyYWNrc1tpXS5vbnVubXV0ZSA9IG11dGVDaGFuZ2VkOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCI8YnI+KioqIE11dGlu
ZyBjYXB0dXJlIGRldmljZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0UGFnZU11dGVkKCJjYXB0dXJlZGV2aWNlcyIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAgICAuY2F0Y2go
KGVycikgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChgbWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSgpIGZhaWxlZCB3aXRoICR7ZXJyLm5hbWV9YCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBkZWJ1ZyhgPGJyPioqKiBNb2NrIGNhcHR1cmUgZGV2aWNlcyBz
aG91bGQgYmUgZW5hYmxlZCBieSBkZWZhdWx0YCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRp
YVBlcm1pc3Npb24odHJ1ZSk7CisKKyAgICAgICAgICAgICAgICB0ZXN0V2hlbkVuYWJsZWQoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8
Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgICAgICBkZXNjcmlwdGlvbigiVGVzdCBlbmFibGluZy9kaXNhYmxpbmcgbW9jayBtZWRpYSBj
YXB0dXJlIGRldmljZXMiKTsKKyAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAg
ICAgIDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tbXV0ZWQtYWZ0ZXItc2V0dGluZy1wYWdlLW11dGVkLXN0YXRlLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbXV0ZWQtYWZ0ZXItc2V0
dGluZy1wYWdlLW11dGVkLXN0YXRlLmh0bWwJKHJldmlzaW9uIDIwNzc1OCkKKysrIExheW91dFRl
c3RzL21lZGlhL3ZpZGVvLW11dGVkLWFmdGVyLXNldHRpbmctcGFnZS1tdXRlZC1zdGF0ZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC01LDEzICs1LDEzIEBACiA8c2NyaXB0PgogICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8ubXV0ZWQiLCBmYWxzZSk7CiAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0g
ICAgICAgIGludGVybmFscy5zZXRQYWdlTXV0ZWQodHJ1ZSk7CisgICAgICAgIGludGVybmFscy5z
ZXRQYWdlTXV0ZWQoImF1ZGlvIik7CiAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tdXRlZCIsIGZh
bHNlKTsKIAogICAgIHJ1bigidmlkZW8ubXV0ZWQgPSB0cnVlIik7CiAgICAgdGVzdEV4cGVjdGVk
KCJ2aWRlby5tdXRlZCIsIHRydWUpOwogICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAg
ICBpbnRlcm5hbHMuc2V0UGFnZU11dGVkKGZhbHNlKTsKKyAgICAgICAgaW50ZXJuYWxzLnNldFBh
Z2VNdXRlZCgiIik7CiAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tdXRlZCIsIHRydWUpOwogICAg
IGVuZFRlc3QoKTsKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>