<?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>154130</bug_id>
          
          <creation_ts>2016-02-11 14:03:29 -0800</creation_ts>
          <short_desc>Web Inspector: disambiguate the various identifier and connection types in RemoteInspector</short_desc>
          <delta_ts>2016-02-12 14:35:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>msaboff</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1163860</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-11 14:03:29 -0800</bug_when>
    <thetext>It&apos;s really confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163861</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-02-11 14:03:50 -0800</bug_when>
    <thetext>&lt;rdar://problem/24615659&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163900</commentid>
    <comment_count>2</comment_count>
      <attachid>271096</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-11 15:02:05 -0800</bug_when>
    <thetext>Created attachment 271096
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164269</commentid>
    <comment_count>3</comment_count>
      <attachid>271096</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-02-12 12:29:58 -0800</bug_when>
    <thetext>Comment on attachment 271096
Proposed Fix

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:67
&gt; +2016-02-11  Brian Burg  &lt;bburg@apple.com&gt;

Double ChangeLog.

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h:52
&gt; +// COMPATABILITY(iOS 9): The key string is intentionally mismatched to support old relays.
&gt; +#define WIRTargetIdentifierKey                  @&quot;WIRPageIdentifierKey&quot;

Ew, but okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164355</commentid>
    <comment_count>4</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-12 14:35:46 -0800</bug_when>
    <thetext>Committed r196515: &lt;http://trac.webkit.org/changeset/196515&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271096</attachid>
            <date>2016-02-11 15:02:05 -0800</date>
            <delta_ts>2016-02-12 12:29:58 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-154130-20160211150143.patch</filename>
            <type>text/plain</type>
            <size>42218</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MGU2ZTcyZDgzODk0NmU4MThkOTYyZTMwMzdjNWJlNWEzMWFhZDM3Li5iNTgyYzA5YmRiNzNhYWU4
OTA0ZTBhZmY2NjY5YjNlNTIyY2MwOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTcgQEAKKzIwMTYtMDItMTEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzYW1iaWd1YXRlIHRoZSB2YXJpb3VzIGlkZW50aWZp
ZXIgYW5kIGNvbm5lY3Rpb24gdHlwZXMgaW4gUmVtb3RlSW5zcGVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQxMzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgbXVsdGlwbGUgaWRl
bnRpZmllciB0eXBlczoKKyAgICAgICAgICAgIC0gY29ubmVjdGlvbiBpZGVudGlmaWVyLCBhIHN0
cmluZyBVVUlEIGZvciBhIHJlbW90ZSBkZWJ1Z2dlciBwcm9jZXNzLgorICAgICAgICAgICAgLSBz
ZXNzaW9uIGlkZW50aWZpZXIsIGEgc3RyaW5nIFVVSUQgZm9yIGEgcmVtb3RlIGRyaXZlci9kZWJ1
Z2dlciBpbnN0YW5jZS4KKyAgICAgICAgICAgIC0gcGFnZS90YXJnZXQgaWRlbnRpZmllciwgYSBu
dW1iZXIgdW5pcXVlIHdpdGhpbiBhIHNpbmdsZSBwcm9jZXNzLgorCisgICAgICAgIFRoZXJlIGFy
ZSBtdWx0aXBsZSBjb25uZWN0aW9uIHR5cGVzOgorICAgICAgICAgICAgLSBSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uLCBhIGNvbm5lY3Rpb24gZnJvbSBSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9ub3IgdG8gYSByZWxheS4KKyAgICAgICAgICAgIC0gUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0LCBhIGNsYXNzIHRoYXQgYnJpZGdlcyB0byB0YXJnZXRzJyBkaXNwYXRjaCBxdWV1ZXMuCisK
KyAgICAgICAgVXNlIGNvbnNpc3RlbnQgdmFyaWFibGUgYW5kIGdldHRlciBuYW1lcyBzbyB0aGF0
IHRoZXNlIGRvbid0IGdldCBjb25mdXNlZCBhbmQKKyAgICAgICAgc28gdGhhdCB0aGUgY29kZSBp
cyBlYXNpZXIgdG8gcmVhZC4gVGhpcyBpcyBlc3BlY2lhbGx5IGFuIGltcHJvdmVtZW50IHdoZW4g
d29ya2luZworICAgICAgICB3aXRoIG11bHRpcGxlIHRhcmdldCB0eXBlcyBvciBjb25uZWN0aW9u
IHR5cGVzIHdpdGhpbiB0aGUgc2FtZSBmdW5jdGlvbi4KKworICAgICAgICAqIGluc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW06CisgICAgICAgIFJlbW92ZSB0aGUgbWVt
YmVyIGZvciBtX2lkZW50aWZpZXIgc2luY2Ugd2UgY2FuIGFzayB0aGUgdGFyZ2V0IGZvciBpdHMg
dGFyZ2V0IGlkZW50aWZpZXIKKyAgICAgICAgb3IgdXNlIGEgZGVmYXVsdCB2YWx1ZSB2aWEgV1RG
OjpPcHRpb25hbC4gVGhlcmUncyBubyByZWFzb24gdG8gY2FjaGUgdGhlIHZhbHVlLgorCisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZVRhcmdldEhhbmRsZVJ1blNvdXJjZVdpdGhJbmZvKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlm
aWVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpkZXN0
aW5hdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6
c2V0dXApOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNl
bmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAgICAgIEJhaWwgb3V0IGlmIHRoZSB0YXJnZXQgcG9p
bnRlciB3YXMgc29tZWhvdyBjbGVhcmVkIGFuZCB3ZSBjYW4ndCBnZXQgYSB1c2VmdWwgdGFyZ2V0
IGlkZW50aWZpZXIuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0OjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQpOiBEZWxldGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdGlvblRhcmdldDo6cGF1c2VXYWl0aW5nRm9yQXV0b21hdGljSW5zcGVj
dGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rpb25UYXJnZXQ6OnVucGF1
c2VGb3JJbml0aWFsaXplZEluc3BlY3Rvcik6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3Bl
Y3Rvci5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpuZXh0QXZhaWxh
YmxlVGFyZ2V0SWRlbnRpZmllcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
cjo6cmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6
OnVucmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6
OnVwZGF0ZVRhcmdldCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBk
YXRlQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3Rvcjo6c2VuZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3Rl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cEZhaWxlZCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2V0dXBDb21wbGV0ZWQpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0b3BJbnRlcm5hbCk6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQp
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25GYWls
ZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6Omxpc3RpbmdGb3JJbnNw
ZWN0aW9uVGFyZ2V0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpsaXN0
aW5nRm9yQXV0b21hdGlvblRhcmdldCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3Rvcjo6cHVzaExpc3RpbmdzTm93KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVj
dG9yOjpwdXNoTGlzdGluZ3NTb29uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVj
dG9yOjp1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERhdGFNZXNzYWdlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERpZENsb3NlTWVzc2FnZSk6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkUHJveHlBcHBsaWNh
dGlvblNldHVwTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
cmVjZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OnJlY2VpdmVkQXV0b21hdGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6Om5leHRBdmFpbGFibGVJZGVudGlm
aWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ckNvbnN0YW50cy5oOgorCisyMDE2LTAyLTExICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29t
PgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLgorICAgICAgICBO
ZWVkIHRoZSBidWcgVVJMIChPT1BTISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldC5oOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Lm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVUYXJnZXRIYW5kbGVSdW5Tb3VyY2VX
aXRoSW5mbyk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6
dGFyZ2V0SWRlbnRpZmllcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldDo6ZGVzdGluYXRpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQ6OnNldHVwKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldCk6IERlbGV0
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFibGVUYXJnZXQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rpb25UYXJnZXQuY3Bw
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0OjpwYXVzZVdhaXRp
bmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdGlvblRhcmdldDo6dW5wYXVzZUZvckluaXRpYWxpemVkSW5zcGVjdG9yKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6Om5leHRBdmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWdpc3RlclRhcmdldCk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlclRhcmdldCk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlVGFyZ2V0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21hdGljSW5zcGVjdGlv
bkNhbmRpZGF0ZU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6
OnNlbmRNZXNzYWdlVG9SZW1vdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3I6OnNldHVwRmFpbGVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpz
ZXR1cENvbXBsZXRlZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3Rv
cEludGVybmFsKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQ
Q0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
cjo6eHBjQ29ubmVjdGlvbkZhaWxlZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3Rvcjo6bGlzdGluZ0Zvckluc3BlY3Rpb25UYXJnZXQpOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6Omxpc3RpbmdGb3JBdXRvbWF0aW9uVGFyZ2V0KToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NOb3cpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nc1Nvb24pOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbik6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2Up
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3Nh
Z2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGlkQ2xv
c2VNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZl
ZEluZGljYXRlTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
cmVjZWl2ZWRQcm94eUFwcGxpY2F0aW9uU2V0dXBNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZENvbm5lY3Rpb25EaWVkTWVzc2FnZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRBdXRvbWF0aWNJbnNwZWN0
aW9uUmVqZWN0TWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
bmV4dEF2YWlsYWJsZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg6CisKIDIwMTYtMDItMTEgIENzYWJhIE9z
enRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHR5cG8g
Zml4IGFmdGVyIHIxOTAwNjMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCmluZGV4
IDM0OTBjZDg0YWViYzMzOGY1YjBkNTM3MDZlYmY3NjI3N2UzMmI2OTguLmQzZThkMzE5YmY3MzYx
ODAyNDE4MTc1ZTlmNzMxZTE2MzgxMmVjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2Uo
KTsKICAgICB2aXJ0dWFsIHZvaWQgdGFyZ2V0Q2xvc2VkKCk7CiAKLSAgICB1bnNpZ25lZCBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgT3B0aW9uYWw8dW5z
aWduZWQ+IHRhcmdldElkZW50aWZpZXIoKSBjb25zdDsKICAgICBOU1N0cmluZyAqY29ubmVjdGlv
bklkZW50aWZpZXIoKSBjb25zdDsKICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24oKSBjb25zdDsK
IApAQCAtODYsNyArODYsNiBAQCBwcml2YXRlOgogICAgIExvY2sgbV9xdWV1ZU11dGV4OwogCiAg
ICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiBtX3RhcmdldCB7IG51bGxwdHIgfTsKLSAgICB1
bnNpZ25lZCBtX2lkZW50aWZpZXIgeyAwIH07CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2Nv
bm5lY3Rpb25JZGVudGlmaWVyOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9kZXN0aW5hdGlv
bjsKICAgICBib29sIG1fY29ubmVjdGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rp
b25Ub1RhcmdldC5tbQppbmRleCBlNTVmMDczNzg3ZGQwZTVjNWM0YTFjYmM4MmE4M2NkNTYxMDU5
MWQzLi44MDQ4NDg0YjEwN2Y1NTM4MDkyZmI4OTE3ZjNmZjhmMzM2ZTAzZTYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJS
ZW1vdGVBdXRvbWF0aW9uVGFyZ2V0LmgiCiAjaW1wb3J0ICJSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0
LmgiCiAjaW1wb3J0IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgorI2ltcG9ydCA8d3RmL09wdGlvbmFs
Lmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC05Miwx
MyArOTMsMTMgQEAgc3RhdGljIHZvaWQgUmVtb3RlVGFyZ2V0SW5pdGlhbGl6ZUdsb2JhbFF1ZXVl
KCkKIAogc3RhdGljIHZvaWQgUmVtb3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlV2l0aEluZm8odm9p
ZCogaW5mbykKIHsKLSAgICBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQgKmNvbm5lY3Rpb24gPSBz
dGF0aWNfY2FzdDxSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQqPihpbmZvKTsKKyAgICBSZW1vdGVD
b25uZWN0aW9uVG9UYXJnZXQgKmNvbm5lY3Rpb25Ub1RhcmdldCA9IHN0YXRpY19jYXN0PFJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldCo+KGluZm8pOwogCiAgICAgUmVtb3RlVGFyZ2V0UXVldWUgcXVl
dWVDb3B5OwogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soY29ubmVj
dGlvbi0+cXVldWVNdXRleCgpKTsKLSAgICAgICAgcXVldWVDb3B5ID0gY29ubmVjdGlvbi0+cXVl
dWUoKTsKLSAgICAgICAgY29ubmVjdGlvbi0+Y2xlYXJRdWV1ZSgpOworICAgICAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8TG9jaz4gbG9jayhjb25uZWN0aW9uVG9UYXJnZXQtPnF1ZXVlTXV0ZXgoKSk7Cisg
ICAgICAgIHF1ZXVlQ29weSA9IGNvbm5lY3Rpb25Ub1RhcmdldC0+cXVldWUoKTsKKyAgICAgICAg
Y29ubmVjdGlvblRvVGFyZ2V0LT5jbGVhclF1ZXVlKCk7CiAgICAgfQogCiAgICAgZm9yIChjb25z
dCBhdXRvJiBibG9jayA6IHF1ZXVlQ29weSkKQEAgLTEwOCw3ICsxMDksNiBAQCBzdGF0aWMgdm9p
ZCBSZW1vdGVUYXJnZXRIYW5kbGVSdW5Tb3VyY2VXaXRoSW5mbyh2b2lkKiBpbmZvKQogCiBSZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQ6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldChSZW1vdGVDb250
cm9sbGFibGVUYXJnZXQqIHRhcmdldCwgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyLCBO
U1N0cmluZyAqZGVzdGluYXRpb24pCiAgICAgOiBtX3RhcmdldCh0YXJnZXQpCi0gICAgLCBtX2lk
ZW50aWZpZXIodGFyZ2V0LT5pZGVudGlmaWVyKCkpCiAgICAgLCBtX2Nvbm5lY3Rpb25JZGVudGlm
aWVyKGNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgICwgbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlv
bikKIHsKQEAgLTEyMCw5ICsxMjAsOSBAQCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6On5SZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQoKQogICAgIHRlYXJkb3duUnVuTG9vcCgpOwogfQogCi1OU1N0
cmluZyAqUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpkZXN0aW5hdGlvbigpIGNvbnN0CitPcHRp
b25hbDx1bnNpZ25lZD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlmaWVy
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gW1ttX2Rlc3RpbmF0aW9uIGNvcHldIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gbV90YXJnZXQgPyBPcHRpb25hbDx1bnNpZ25lZD4obV90YXJnZXQtPnRh
cmdldElkZW50aWZpZXIoKSkgOiBOdWxsb3B0OwogfQogCiBOU1N0cmluZyAqUmVtb3RlQ29ubmVj
dGlvblRvVGFyZ2V0Ojpjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0CkBAIC0xMzAsNiArMTMw
LDExIEBAIE5TU3RyaW5nICpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNvbm5lY3Rpb25JZGVu
dGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gW1ttX2Nvbm5lY3Rpb25JZGVudGlmaWVyIGNvcHld
IGF1dG9yZWxlYXNlXTsKIH0KIAorTlNTdHJpbmcgKlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6
ZGVzdGluYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBbW21fZGVzdGluYXRpb24gY29weV0g
YXV0b3JlbGVhc2VdOworfQorCiB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6ZGlzcGF0
Y2hBc3luY09uVGFyZ2V0KHZvaWQgKF5ibG9jaykoKSkKIHsKICAgICBpZiAobV9ydW5Mb29wKSB7
CkBAIC0xNTksNyArMTY0LDcgQEAgYm9vbCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVw
KGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBib29sIGF1dG9tYXRpY2EKICAgICAgICAgewog
ICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV90YXJnZXRNdXRleCk7CiAg
ICAgICAgICAgICBpZiAoIW1fdGFyZ2V0IHx8ICFtX3RhcmdldC0+cmVtb3RlQ29udHJvbEFsbG93
ZWQoKSkgewotICAgICAgICAgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0
dXBGYWlsZWQobV9pZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBSZW1vdGVJbnNwZWN0b3I6
OnNpbmdsZXRvbigpLnNldHVwRmFpbGVkKHRhcmdldElkZW50aWZpZXIoKS52YWx1ZU9yKDApKTsK
ICAgICAgICAgICAgICAgICBtX3RhcmdldCA9IG51bGxwdHI7CiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKGlzPFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ+KG1fdGFyZ2V0KSkgewogICAgICAgICAgICAg
ICAgIGF1dG8gY2FzdGVkVGFyZ2V0ID0gZG93bmNhc3Q8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4o
bV90YXJnZXQpOwpAQCAtMjI2LDggKzIzMSwxMCBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldDo6c2VuZE1lc3NhZ2VUb1RhcmdldChOU1N0cmluZyAqbWVzc2FnZSkKIAogYm9vbCBSZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7Ci0gICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZW5kTWVzc2Fn
ZVRvUmVtb3RlKGlkZW50aWZpZXIoKSwgbWVzc2FnZSk7CisgICAgaWYgKCFtX3RhcmdldCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5z
ZW5kTWVzc2FnZVRvUmVtb3RlKHRhcmdldElkZW50aWZpZXIoKS52YWx1ZSgpLCBtZXNzYWdlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFibGVUYXJnZXQuaApp
bmRleCA1Zjg2N2RhZWIwNGUzNTM3NGVhODdlMDU0ZDgzZTU3ODc3NDIyODlhLi4zNDlhZDllY2U3
YjllZjlhNTgxNzFkNjQ5OWNhM2Y5YWE5NDk0NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFibGVUYXJnZXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFi
bGVUYXJnZXQuaApAQCAtNDYsOCArNDYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNv
bm5lY3QoRnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0Nvbm5lY3Rpb24gPSBmYWxz
ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KEZyb250ZW5kQ2hhbm5lbCopID0g
MDsKIAotICAgIHVuc2lnbmVkIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KLSAgICB2b2lkIHNldElkZW50aWZpZXIodW5zaWduZWQgaWRlbnRpZmllcikgeyBtX2lk
ZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CisgICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0VGFyZ2V0SWRlbnRp
Zmllcih1bnNpZ25lZCBpZGVudGlmaWVyKSB7IG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0K
IAogICAgIGVudW0gY2xhc3MgVHlwZSB7IEphdmFTY3JpcHQsIFdlYiwgQXV0b21hdGlvbiB9Owog
ICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdGlvblRhcmdldC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0aW9u
VGFyZ2V0LmNwcAppbmRleCA1YjkxMGIwOTRlNDE3ZjY4NTI5YTAyYWVjOWU1OGZkZGRkZmVjNjlk
Li41ZDVmM2ViYzdmNDQzNDUwZGI3OTczNjQzZWNiNWUwYTdjN2NmODlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0aW9uVGFy
Z2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0aW9uVGFyZ2V0LmNwcApAQCAtNTMsMTggKzUzLDE4IEBAIHZvaWQgUmVtb3RlSW5z
cGVjdGlvblRhcmdldDo6c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChib29sIGFsbG93ZWQpCiAK
IHZvaWQgUmVtb3RlSW5zcGVjdGlvblRhcmdldDo6cGF1c2VXYWl0aW5nRm9yQXV0b21hdGljSW5z
cGVjdGlvbigpCiB7Ci0gICAgQVNTRVJUKGlkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUKHRhcmdl
dElkZW50aWZpZXIoKSk7CiAgICAgQVNTRVJUKG1fYWxsb3dlZCk7CiAgICAgQVNTRVJUKGF1dG9t
YXRpY0luc3BlY3Rpb25BbGxvd2VkKCkpOwogCiAgICAgRXZlbnRMb29wIGxvb3A7Ci0gICAgd2hp
bGUgKFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkud2FpdGluZ0ZvckF1dG9tYXRpY0luc3Bl
Y3Rpb24oaWRlbnRpZmllcigpKSAmJiAhbG9vcC5lbmRlZCgpKQorICAgIHdoaWxlIChSZW1vdGVJ
bnNwZWN0b3I6OnNpbmdsZXRvbigpLndhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKHRhcmdl
dElkZW50aWZpZXIoKSkgJiYgIWxvb3AuZW5kZWQoKSkKICAgICAgICAgbG9vcC5jeWNsZSgpOwog
fQogCiB2b2lkIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ6OnVucGF1c2VGb3JJbml0aWFsaXplZElu
c3BlY3RvcigpCiB7Ci0gICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cENvbXBs
ZXRlZChpZGVudGlmaWVyKCkpOworICAgIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0
dXBDb21wbGV0ZWQodGFyZ2V0SWRlbnRpZmllcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3Rvci5oCmluZGV4IDc5MzM0MmM2MjZhNTgzYjY1ZGVlNzMxZGM0M2Mw
NGU4ODY5ZDgyYTYuLjM2ZWIwZGRmNWYzZWYzNjVkNzA3ODdjMGVkYWMwYWRjMmJkMDA1Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3Rvci5oCkBAIC02MiwxNCArNjIsMTQgQEAgcHVibGljOgogICAgIHZvaWQgcmVn
aXN0ZXJUYXJnZXQoUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0Kik7CiAgICAgdm9pZCB1bnJlZ2lz
dGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCopOwogICAgIHZvaWQgdXBkYXRlVGFy
Z2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCopOwotICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1Jl
bW90ZSh1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZv
aWQgc2VuZE1lc3NhZ2VUb1JlbW90ZSh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwogCiAgICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2Fu
ZGlkYXRlKFJlbW90ZUluc3BlY3Rpb25UYXJnZXQqKTsKICAgICB2b2lkIHNldFJlbW90ZUluc3Bl
Y3RvckNsaWVudChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCopOwogCi0gICAgdm9pZCBzZXR1cEZh
aWxlZCh1bnNpZ25lZCBpZGVudGlmaWVyKTsKLSAgICB2b2lkIHNldHVwQ29tcGxldGVkKHVuc2ln
bmVkIGlkZW50aWZpZXIpOwotICAgIGJvb2wgd2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24o
dW5zaWduZWQgaWRlbnRpZmllcik7CisgICAgdm9pZCBzZXR1cEZhaWxlZCh1bnNpZ25lZCB0YXJn
ZXRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHNldHVwQ29tcGxldGVkKHVuc2lnbmVkIHRhcmdldElk
ZW50aWZpZXIpOworICAgIGJvb2wgd2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24odW5zaWdu
ZWQgdGFyZ2V0SWRlbnRpZmllcik7CiAgICAgdm9pZCBjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFu
Z2UoKSB7IHB1c2hMaXN0aW5nc1Nvb24oKTsgfQogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9lbmFibGVkOyB9CkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgUmVtb3RlSW5zcGVjdG9yKCk7CiAKLSAgICB1bnNpZ25lZCBuZXh0QXZhaWxhYmxlSWRl
bnRpZmllcigpOworICAgIHVuc2lnbmVkIG5leHRBdmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKCk7
CiAKICAgICBlbnVtIGNsYXNzIFN0b3BTb3VyY2UgeyBBUEksIFhQQ01lc3NhZ2UgfTsKICAgICB2
b2lkIHN0b3BJbnRlcm5hbChTdG9wU291cmNlKTsKQEAgLTEyNywxNSArMTI3LDE1IEBAIHByaXZh
dGU6CiAgICAgTG9jayBtX211dGV4OwogCiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmVtb3RlQ29u
dHJvbGxhYmxlVGFyZ2V0Kj4gbV90YXJnZXRNYXA7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgUmV0
YWluUHRyPE5TRGljdGlvbmFyeT4+IG1fbGlzdGluZ01hcDsKLSAgICBIYXNoTWFwPHVuc2lnbmVk
LCBSZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Pj4gbV9jb25uZWN0aW9uTWFwOworICAg
IEhhc2hNYXA8dW5zaWduZWQsIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+PiBtX3RhcmdldExpc3Rp
bmdNYXA7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRyPFJlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldD4+IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcDsKIAotICAgIFJlZlB0cjxSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uPiBtX3hwY0Nvbm5lY3Rpb247CisgICAgUmVmUHRyPFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24+IG1fcmVsYXlDb25uZWN0aW9uOwogCiAgICAgUmVtb3RlSW5zcGVj
dG9yOjpDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgZGlzcGF0Y2hfcXVldWVf
dCBtX3hwY1F1ZXVlOwotICAgIHVuc2lnbmVkIG1fbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIgeyAx
IH07CisgICAgdW5zaWduZWQgbV9uZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllciB7IDEgfTsK
ICAgICBpbnQgbV9ub3RpZnlUb2tlbiB7IDAgfTsKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbiB7IGZhbHNlIH07CkBAIC0xNDYs
NyArMTQ2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkU2VuZFBhcmVudFByb2Nlc3NJ
bmZvcm1hdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFi
bGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCB7IGZh
bHNlIH07Ci0gICAgdW5zaWduZWQgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRp
ZmllciB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVU
YXJnZXRJZGVudGlmaWVyIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3IubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3IubW0KaW5kZXggOTQ4NTM1M2U5ODc0Zjk5NGRmMDY5MTVkNTZmMzE3Mzk1MjU3
MmNkOS4uZmNhYTZhNTc5OWFmY2E2ODhmMzU3M2I5OWQzMTBlOTUzMDhlYjE0NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3Rvci5tbQpAQCAtMTAxLDEzICsxMDEsMTMgQEAgUmVtb3RlSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3IoKQogewogfQogCi11bnNpZ25lZCBSZW1vdGVJbnNwZWN0b3I6Om5leHRBdmFpbGFi
bGVJZGVudGlmaWVyKCkKK3Vuc2lnbmVkIFJlbW90ZUluc3BlY3Rvcjo6bmV4dEF2YWlsYWJsZVRh
cmdldElkZW50aWZpZXIoKQogewotICAgIHVuc2lnbmVkIG5leHRWYWxpZElkZW50aWZpZXI7Cisg
ICAgdW5zaWduZWQgbmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmllcjsKICAgICBkbyB7Ci0gICAgICAg
IG5leHRWYWxpZElkZW50aWZpZXIgPSBtX25leHRBdmFpbGFibGVJZGVudGlmaWVyKys7Ci0gICAg
fSB3aGlsZSAoIW5leHRWYWxpZElkZW50aWZpZXIgfHwgbmV4dFZhbGlkSWRlbnRpZmllciA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgfHwgbV90YXJnZXRNYXAuY29udGFp
bnMobmV4dFZhbGlkSWRlbnRpZmllcikpOwotICAgIHJldHVybiBuZXh0VmFsaWRJZGVudGlmaWVy
OworICAgICAgICBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyID0gbV9uZXh0QXZhaWxhYmxlVGFy
Z2V0SWRlbnRpZmllcisrOworICAgIH0gd2hpbGUgKCFuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVy
IHx8IG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpIHx8IG1fdGFyZ2V0TWFwLmNvbnRhaW5zKG5leHRWYWxpZFRhcmdldElkZW50
aWZpZXIpKTsKKyAgICByZXR1cm4gbmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmllcjsKIH0KIAogdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdl
dCogdGFyZ2V0KQpAQCAtMTE2LDE3ICsxMTYsMTcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJl
Z2lzdGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQogCiAgICAgc3Rk
Ojpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CiAKLSAgICB1bnNpZ25lZCBpZGVudGlm
aWVyID0gbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIoKTsKLSAgICB0YXJnZXQtPnNldElkZW50aWZp
ZXIoaWRlbnRpZmllcik7CisgICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciA9IG5leHRBdmFp
bGFibGVUYXJnZXRJZGVudGlmaWVyKCk7CisgICAgdGFyZ2V0LT5zZXRUYXJnZXRJZGVudGlmaWVy
KHRhcmdldElkZW50aWZpZXIpOwogCiAgICAgewotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdGFy
Z2V0TWFwLnNldChpZGVudGlmaWVyLCB0YXJnZXQpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1f
dGFyZ2V0TWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXQpOwogICAgICAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KLSAgICAKKwogICAgIC8v
IElmIHJlbW90ZSBjb250cm9sIGlzIG5vdCBhbGxvd2VkLCBhIG51bGwgbGlzdGluZyBpcyByZXR1
cm5lZC4KLSAgICBpZiAoUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gbGlzdGluZyA9IGxpc3RpbmdG
b3JUYXJnZXQoKnRhcmdldCkpIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX2xpc3RpbmdNYXAu
c2V0KGlkZW50aWZpZXIsIGxpc3RpbmcpOworICAgIGlmIChSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5
PiB0YXJnZXRMaXN0aW5nID0gbGlzdGluZ0ZvclRhcmdldCgqdGFyZ2V0KSkgeworICAgICAgICBh
dXRvIHJlc3VsdCA9IG1fdGFyZ2V0TGlzdGluZ01hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgdGFy
Z2V0TGlzdGluZyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7CiAgICAgfQogCkBAIC0xMzksMTggKzEzOSwxOCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6dW5yZWdpc3RlclRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCkKIAog
ICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwogCi0gICAgdW5zaWduZWQg
aWRlbnRpZmllciA9IHRhcmdldC0+aWRlbnRpZmllcigpOwotICAgIGlmICghaWRlbnRpZmllcikK
KyAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVy
KCk7CisgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBi
b29sIHdhc1JlbW92ZWQgPSBtX3RhcmdldE1hcC5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgYm9v
bCB3YXNSZW1vdmVkID0gbV90YXJnZXRNYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOwogICAg
IEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7CiAKICAgICAvLyBUaGUgbGlz
dGluZyBtYXkgbmV2ZXIgaGF2ZSBiZWVuIGFkZGVkIGlmIHJlbW90ZSBjb250cm9sIGlzbid0IGFs
bG93ZWQuCi0gICAgbV9saXN0aW5nTWFwLnJlbW92ZShpZGVudGlmaWVyKTsKKyAgICBtX3Rhcmdl
dExpc3RpbmdNYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOwogCi0gICAgaWYgKGF1dG8gY29u
bmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC50YWtlKGlkZW50aWZpZXIpKQotICAgICAgICBjb25u
ZWN0aW9uLT50YXJnZXRDbG9zZWQoKTsKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uVG9UYXJnZXQg
PSBtX3RhcmdldENvbm5lY3Rpb25NYXAudGFrZSh0YXJnZXRJZGVudGlmaWVyKSkKKyAgICAgICAg
Y29ubmVjdGlvblRvVGFyZ2V0LT50YXJnZXRDbG9zZWQoKTsKIAogICAgIHB1c2hMaXN0aW5nc1Nv
b24oKTsKIH0KQEAgLTE2MSwxOCArMTYxLDE4IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRh
dGVUYXJnZXQoUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQpCiAKICAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKIAotICAgIHVuc2lnbmVkIGlkZW50aWZpZXIg
PSB0YXJnZXQtPmlkZW50aWZpZXIoKTsKLSAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgdW5zaWdu
ZWQgdGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOworICAgIGlm
ICghdGFyZ2V0SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgewotICAgICAgICBh
dXRvIHJlc3VsdCA9IG1fdGFyZ2V0TWFwLnNldChpZGVudGlmaWVyLCB0YXJnZXQpOworICAgICAg
ICBhdXRvIHJlc3VsdCA9IG1fdGFyZ2V0TWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXQp
OwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdC5pc05ld0VudHJ5KTsKICAg
ICB9CiAKICAgICAvLyBJZiB0aGUgdGFyZ2V0IGhhcyBqdXN0IGFsbG93ZWQgcmVtb3RlIGNvbnRy
b2wsIHRoZW4gdGhlIGxpc3Rpbmcgd29uJ3QgZXhpc3QgeWV0LgotICAgIGlmIChSZXRhaW5QdHI8
TlNEaWN0aW9uYXJ5PiBsaXN0aW5nID0gbGlzdGluZ0ZvclRhcmdldCgqdGFyZ2V0KSkKLSAgICAg
ICAgbV9saXN0aW5nTWFwLnNldChpZGVudGlmaWVyLCBsaXN0aW5nKTsKKyAgICBpZiAoUmV0YWlu
UHRyPE5TRGljdGlvbmFyeT4gdGFyZ2V0TGlzdGluZyA9IGxpc3RpbmdGb3JUYXJnZXQoKnRhcmdl
dCkpCisgICAgICAgIG1fdGFyZ2V0TGlzdGluZ01hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgdGFy
Z2V0TGlzdGluZyk7CiAKICAgICBwdXNoTGlzdGluZ3NTb29uKCk7CiB9CkBAIC0xODMsMTYgKzE4
MywxNiBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQXV0b21hdGljSW5zcGVjdGlvbkNh
bmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0KgogICAgIHsKICAgICAgICAgc3RkOjpsb2Nr
X2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CiAKLSAgICAgICAgdW5zaWduZWQgaWRlbnRpZmll
ciA9IHRhcmdldC0+aWRlbnRpZmllcigpOwotICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAg
ICAgIHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIgPSB0YXJnZXQtPnRhcmdldElkZW50aWZpZXIo
KTsKKyAgICAgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAuc2V0KGlkZW50aWZpZXIsIHRhcmdl
dCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAuc2V0KHRhcmdldElkZW50aWZp
ZXIsIHRhcmdldCk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0LmlzTmV3
RW50cnkpOwogCiAgICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaGFzIGp1c3QgYWxsb3dlZCByZW1v
dGUgY29udHJvbCwgdGhlbiB0aGUgbGlzdGluZyB3b24ndCBleGlzdCB5ZXQuCi0gICAgICAgIGlm
IChSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBsaXN0aW5nID0gbGlzdGluZ0ZvclRhcmdldCgqdGFy
Z2V0KSkKLSAgICAgICAgICAgIG1fbGlzdGluZ01hcC5zZXQoaWRlbnRpZmllciwgbGlzdGluZyk7
CisgICAgICAgIGlmIChSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB0YXJnZXRMaXN0aW5nID0gbGlz
dGluZ0ZvclRhcmdldCgqdGFyZ2V0KSkKKyAgICAgICAgICAgIG1fdGFyZ2V0TGlzdGluZ01hcC5z
ZXQodGFyZ2V0SWRlbnRpZmllciwgdGFyZ2V0TGlzdGluZyk7CiAKICAgICAgICAgLy8gRG9uJ3Qg
YWxsb3cgYXV0b21hdGljIGluc3BlY3Rpb24gdW5sZXNzIGl0IGlzIGFsbG93ZWQgb3Igd2UgYXJl
IHN0b3BwZWQuCiAgICAgICAgIGlmICghbV9hdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZCB8fCAh
bV9lbmFibGVkKSB7CkBAIC0yMDEsMTkgKzIwMSwxOSBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6
dXBkYXRlQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0
KgogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYW5kbGUgbXVsdGlw
bGUgZGVidWdnYWJsZXMgdHJ5aW5nIHRvIHBhdXNlIGF0IHRoZSBzYW1lIHRpbWUgb24gZGlmZmVy
ZW50IHRocmVhZHMuCi0gICAgICAgIC8vIFRvIG1ha2UgdGhpcyB3b3JrIHdlIHdpbGwgbmVlZCB0
byBjaGFuZ2UgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRpZmllciB0byBiZSBh
IHBlci10aHJlYWQgdmFsdWUuCisgICAgICAgIC8vIFRvIG1ha2UgdGhpcyB3b3JrIHdlIHdpbGwg
bmVlZCB0byBjaGFuZ2UgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRp
ZmllciB0byBiZSBhIHBlci10aHJlYWQgdmFsdWUuCiAgICAgICAgIC8vIE11bHRpcGxlIGF0dGVt
cHRzIG9uIHRoZSBzYW1lIHRocmVhZCBzaG91bGQgbm90IGJlIHBvc3NpYmxlIGJlY2F1c2Ugb3Vy
IG5lc3RlZCBydW4gbG9vcCBpcyBpbiBhIHNwZWNpYWwgUldJIG1vZGUuCiAgICAgICAgIGlmICht
X2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiU2tp
cHBpbmcgQXV0b21hdGljIEluc3BlY3Rpb24gQ2FuZGlkYXRlIHdpdGggcGFnZUlkKCV1KSBiZWNh
dXNlIHdlIGFyZSBhbHJlYWR5IHBhdXNlZCB3YWl0aW5nIGZvciBwYWdlSWQoJXUpIiwgaWRlbnRp
ZmllciwgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRpZmllcik7CisgICAgICAg
ICAgICBMT0dfRVJST1IoIlNraXBwaW5nIEF1dG9tYXRpYyBJbnNwZWN0aW9uIENhbmRpZGF0ZSB3
aXRoIHBhZ2VJZCgldSkgYmVjYXVzZSB3ZSBhcmUgYWxyZWFkeSBwYXVzZWQgd2FpdGluZyBmb3Ig
cGFnZUlkKCV1KSIsIHRhcmdldElkZW50aWZpZXIsIG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRp
ZGF0ZVRhcmdldElkZW50aWZpZXIpOwogICAgICAgICAgICAgcHVzaExpc3RpbmdzU29vbigpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgbV9hdXRvbWF0aWNJbnNw
ZWN0aW9uUGF1c2VkID0gdHJ1ZTsKLSAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlk
YXRlSWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlv
bkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIgPSB0YXJnZXRJZGVudGlmaWVyOwogCiAgICAgICAg
IC8vIElmIHdlIGFyZSBwYXVzaW5nIGJlZm9yZSB3ZSBoYXZlIGNvbm5lY3RlZCB0byB3ZWJpbnNw
ZWN0b3JkIHRoZSBjYW5kaWRhdGUgbWVzc2FnZSB3aWxsIGJlIHNlbnQgYXMgc29vbiBhcyB0aGUg
Y29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4KLSAgICAgICAgaWYgKG1feHBjQ29ubmVjdGlvbikg
eworICAgICAgICBpZiAobV9yZWxheUNvbm5lY3Rpb24pIHsKICAgICAgICAgICAgIHB1c2hMaXN0
aW5nc05vdygpOwogICAgICAgICAgICAgc2VuZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVN
ZXNzYWdlKCk7CiAgICAgICAgIH0KQEAgLTIyMSw4ICsyMjEsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6dXBkYXRlQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9u
VGFyZ2V0KgogICAgICAgICAvLyBJbiBjYXNlIGRlYnVnZ2VycyBmYWlsIHRvIHJlc3BvbmQsIG9y
IHdlIGNhbm5vdCBjb25uZWN0IHRvIHdlYmluc3BlY3RvcmQsIGF1dG9tYXRpY2FsbHkgY29udGlu
dWUgYWZ0ZXIgYSBzaG9ydCBwZXJpb2Qgb2YgdGltZS4KICAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIo
ZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgMC44ICogTlNFQ19QRVJfU0VDKSwgZGlz
cGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAw
KSwgXnsKICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwot
ICAgICAgICAgICAgaWYgKG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIg
PT0gaWRlbnRpZmllcikgewotICAgICAgICAgICAgICAgIExPR19FUlJPUigiU2tpcHBpbmcgQXV0
b21hdGljIEluc3BlY3Rpb24gQ2FuZGlkYXRlIHdpdGggcGFnZUlkKCV1KSBiZWNhdXNlIHdlIGZh
aWxlZCB0byByZWNlaXZlIGEgcmVzcG9uc2UgaW4gdGltZS4iLCBtX2F1dG9tYXRpY0luc3BlY3Rp
b25DYW5kaWRhdGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGlmIChtX2F1dG9tYXRpY0luc3Bl
Y3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyID09IHRhcmdldElkZW50aWZpZXIpIHsKKyAg
ICAgICAgICAgICAgICBMT0dfRVJST1IoIlNraXBwaW5nIEF1dG9tYXRpYyBJbnNwZWN0aW9uIENh
bmRpZGF0ZSB3aXRoIHBhZ2VJZCgldSkgYmVjYXVzZSB3ZSBmYWlsZWQgdG8gcmVjZWl2ZSBhIHJl
c3BvbnNlIGluIHRpbWUuIiwgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRl
bnRpZmllcik7CiAgICAgICAgICAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0g
ZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwpAQCAtMjMzLDggKzIzMyw4IEBAIHZv
aWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJl
bW90ZUluc3BlY3Rpb25UYXJnZXQqCiAgICAgewogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9j
az4gbG9jayhtX211dGV4KTsKIAotICAgICAgICBBU1NFUlQobV9hdXRvbWF0aWNJbnNwZWN0aW9u
Q2FuZGlkYXRlSWRlbnRpZmllcik7Ci0gICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRp
ZGF0ZUlkZW50aWZpZXIgPSAwOworICAgICAgICBBU1NFUlQobV9hdXRvbWF0aWNJbnNwZWN0aW9u
Q2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcik7CisgICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlv
bkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIgPSAwOwogICAgIH0KIH0KIApAQCAtMjU1LDUyICsy
NTUsNTIgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRBdXRvbWF0aWNJbnNwZWN0aW9uQ2Fu
ZGlkYXRlTWVzc2FnZSgpCiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CiAgICAgQVNTRVJUKG1fYXV0
b21hdGljSW5zcGVjdGlvbkVuYWJsZWQpOwogICAgIEFTU0VSVChtX2F1dG9tYXRpY0luc3BlY3Rp
b25QYXVzZWQpOwotICAgIEFTU0VSVChtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVJZGVu
dGlmaWVyKTsKLSAgICBBU1NFUlQobV94cGNDb25uZWN0aW9uKTsKKyAgICBBU1NFUlQobV9hdXRv
bWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcik7CisgICAgQVNTRVJUKG1f
cmVsYXlDb25uZWN0aW9uKTsKIAotICAgIE5TRGljdGlvbmFyeSAqZGV0YWlscyA9IEB7V0lSUGFn
ZUlkZW50aWZpZXJLZXk6IEAobV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRpZmll
cil9OwotICAgIG1feHBjQ29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV0lSQXV0b21hdGljSW5zcGVj
dGlvbkNhbmRpZGF0ZU1lc3NhZ2UsIGRldGFpbHMpOworICAgIE5TRGljdGlvbmFyeSAqZGV0YWls
cyA9IEB7V0lSVGFyZ2V0SWRlbnRpZmllcktleTogQChtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5k
aWRhdGVUYXJnZXRJZGVudGlmaWVyKX07CisgICAgbV9yZWxheUNvbm5lY3Rpb24tPnNlbmRNZXNz
YWdlKFdJUkF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlLCBkZXRhaWxzKTsKIH0K
IAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGUodW5zaWduZWQgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNl
bmRNZXNzYWdlVG9SZW1vdGUodW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwog
Ci0gICAgaWYgKCFtX3hwY0Nvbm5lY3Rpb24pCisgICAgaWYgKCFtX3JlbGF5Q29ubmVjdGlvbikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFw
LmdldChpZGVudGlmaWVyKTsKLSAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgYXV0byB0YXJnZXRD
b25uZWN0aW9uID0gbV90YXJnZXRDb25uZWN0aW9uTWFwLmdldCh0YXJnZXRJZGVudGlmaWVyKTsK
KyAgICBpZiAoIXRhcmdldENvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TRGlj
dGlvbmFyeSAqdXNlckluZm8gPSBAewogICAgICAgICBXSVJSYXdEYXRhS2V5OiBbc3RhdGljX2Nh
c3Q8TlNTdHJpbmcgKj4obWVzc2FnZSkgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddLAotICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubmVjdGlvbi0+
Y29ubmVjdGlvbklkZW50aWZpZXIoKSwKLSAgICAgICAgV0lSRGVzdGluYXRpb25LZXk6IGNvbm5l
Y3Rpb24tPmRlc3RpbmF0aW9uKCkKKyAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6
IHRhcmdldENvbm5lY3Rpb24tPmNvbm5lY3Rpb25JZGVudGlmaWVyKCksCisgICAgICAgIFdJUkRl
c3RpbmF0aW9uS2V5OiB0YXJnZXRDb25uZWN0aW9uLT5kZXN0aW5hdGlvbigpCiAgICAgfTsKIAot
ICAgIG1feHBjQ29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV0lSUmF3RGF0YU1lc3NhZ2UsIHVzZXJJ
bmZvKTsKKyAgICBtX3JlbGF5Q29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV0lSUmF3RGF0YU1lc3Nh
Z2UsIHVzZXJJbmZvKTsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwRmFpbGVkKHVu
c2lnbmVkIGlkZW50aWZpZXIpCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBGYWlsZWQodW5z
aWduZWQgdGFyZ2V0SWRlbnRpZmllcikKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9j
ayhtX211dGV4KTsKIAotICAgIG1fY29ubmVjdGlvbk1hcC5yZW1vdmUoaWRlbnRpZmllcik7Cisg
ICAgbV90YXJnZXRDb25uZWN0aW9uTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKIAogICAg
IHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOwogCi0gICAgaWYgKGlkZW50aWZpZXIgPT0g
bV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRpZmllcikKKyAgICBpZiAodGFyZ2V0
SWRlbnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlm
aWVyKQogICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKIAogICAg
IHB1c2hMaXN0aW5nc1Nvb24oKTsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwQ29t
cGxldGVkKHVuc2lnbmVkIGlkZW50aWZpZXIpCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBD
b21wbGV0ZWQodW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllcikKIHsKICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8TG9jaz4gbG9jayhtX211dGV4KTsKIAotICAgIGlmIChpZGVudGlmaWVyID09IG1fYXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIpCisgICAgaWYgKHRhcmdldElkZW50aWZp
ZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcikKICAg
ICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7CiB9CiAKQEAgLTM0OCwy
NSArMzQ4LDI1IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwoU3RvcFNvdXJj
ZSBzb3VyY2UpCiAKICAgICBtX3B1c2hTY2hlZHVsZWQgPSBmYWxzZTsKIAotICAgIGZvciAoYXV0
byBjb25uZWN0aW9uIDogbV9jb25uZWN0aW9uTWFwLnZhbHVlcygpKQotICAgICAgICBjb25uZWN0
aW9uLT5jbG9zZSgpOwotICAgIG1fY29ubmVjdGlvbk1hcC5jbGVhcigpOworICAgIGZvciAoYXV0
byB0YXJnZXRDb25uZWN0aW9uIDogbV90YXJnZXRDb25uZWN0aW9uTWFwLnZhbHVlcygpKQorICAg
ICAgICB0YXJnZXRDb25uZWN0aW9uLT5jbG9zZSgpOworICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1h
cC5jbGVhcigpOwogCiAgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CiAKICAgICBt
X2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKIAotICAgIGlmIChtX3hwY0Nvbm5l
Y3Rpb24pIHsKKyAgICBpZiAobV9yZWxheUNvbm5lY3Rpb24pIHsKICAgICAgICAgc3dpdGNoIChz
b3VyY2UpIHsKICAgICAgICAgY2FzZSBTdG9wU291cmNlOjpBUEk6Ci0gICAgICAgICAgICBtX3hw
Y0Nvbm5lY3Rpb24tPmNsb3NlKCk7CisgICAgICAgICAgICBtX3JlbGF5Q29ubmVjdGlvbi0+Y2xv
c2UoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0b3BTb3VyY2U6OlhQQ01l
c3NhZ2U6Ci0gICAgICAgICAgICBtX3hwY0Nvbm5lY3Rpb24tPmNsb3NlRnJvbU1lc3NhZ2UoKTsK
KyAgICAgICAgICAgIG1fcmVsYXlDb25uZWN0aW9uLT5jbG9zZUZyb21NZXNzYWdlKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIG1feHBjQ29ubmVjdGlvbiA9IG51
bGxwdHI7CisgICAgICAgIG1fcmVsYXlDb25uZWN0aW9uID0gbnVsbHB0cjsKICAgICB9CiAKICAg
ICBub3RpZnlfY2FuY2VsKG1fbm90aWZ5VG9rZW4pOwpAQCAtMzc2LDE4ICszNzYsMTggQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCkKIHsKICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKIAotICAgIGlmIChtX3hwY0Nvbm5l
Y3Rpb24pCisgICAgaWYgKG1fcmVsYXlDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAg
ICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFj
aF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCk7CiAgICAgaWYgKCFj
b25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3hwY0Nvbm5lY3Rpb24gPSBhZG9w
dFJlZihuZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9uLCBtX3hwY1F1
ZXVlLCB0aGlzKSk7Ci0gICAgbV94cGNDb25uZWN0aW9uLT5zZW5kTWVzc2FnZShAInN5biIsIG5p
bCk7IC8vIFNlbmQgYSBzaW1wbGUgbWVzc2FnZSB0byBpbml0aWFsaXplIHRoZSBYUEMgY29ubmVj
dGlvbi4KKyAgICBtX3JlbGF5Q29ubmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uKGNvbm5lY3Rpb24sIG1feHBjUXVldWUsIHRoaXMpKTsKKyAgICBtX3Jl
bGF5Q29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoQCJzeW4iLCBuaWwpOyAvLyBTZW5kIGEgc2ltcGxl
IG1lc3NhZ2UgdG8gaW5pdGlhbGl6ZSB0aGUgWFBDIGNvbm5lY3Rpb24uCiAgICAgeHBjX3JlbGVh
c2UoY29ubmVjdGlvbik7CiAKLSAgICBpZiAobV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRl
SWRlbnRpZmllcikgeworICAgIGlmIChtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJn
ZXRJZGVudGlmaWVyKSB7CiAgICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhIGRlYnVnZ2FibGUg
d2FpdGluZyB0byBiZSBhdXRvbWF0aWNhbGx5IGluc3BlY3RlZC4KICAgICAgICAgcHVzaExpc3Rp
bmdzTm93KCk7CiAgICAgICAgIHNlbmRBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlTWVzc2Fn
ZSgpOwpAQCAtNDQ0LDI2ICs0NDQsMjYgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5l
Y3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbioKICAgICAg
ICAgTlNMb2coQCJVbnJlY29nbml6ZWQgUmVtb3RlSW5zcGVjdG9yIFhQQyBNZXNzYWdlOiAlQCIs
IG1lc3NhZ2VOYW1lKTsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25G
YWlsZWQoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiogY29ubmVjdGlvbikKK3ZvaWQgUmVt
b3RlSW5zcGVjdG9yOjp4cGNDb25uZWN0aW9uRmFpbGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24qIHJlbGF5Q29ubmVjdGlvbikKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9j
ayhtX211dGV4KTsKIAotICAgIEFTU0VSVChjb25uZWN0aW9uID09IG1feHBjQ29ubmVjdGlvbik7
Ci0gICAgaWYgKGNvbm5lY3Rpb24gIT0gbV94cGNDb25uZWN0aW9uKQorICAgIEFTU0VSVChyZWxh
eUNvbm5lY3Rpb24gPT0gbV9yZWxheUNvbm5lY3Rpb24pOworICAgIGlmIChyZWxheUNvbm5lY3Rp
b24gIT0gbV9yZWxheUNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcHVzaFNj
aGVkdWxlZCA9IGZhbHNlOwogCi0gICAgZm9yIChhdXRvIGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rp
b25NYXAudmFsdWVzKCkpCi0gICAgICAgIGNvbm5lY3Rpb24tPmNsb3NlKCk7Ci0gICAgbV9jb25u
ZWN0aW9uTWFwLmNsZWFyKCk7CisgICAgZm9yIChhdXRvIHRhcmdldENvbm5lY3Rpb24gOiBtX3Rh
cmdldENvbm5lY3Rpb25NYXAudmFsdWVzKCkpCisgICAgICAgIHRhcmdldENvbm5lY3Rpb24tPmNs
b3NlKCk7CisgICAgbV90YXJnZXRDb25uZWN0aW9uTWFwLmNsZWFyKCk7CiAKICAgICB1cGRhdGVI
YXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKIAogICAgIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNl
ZCA9IGZhbHNlOwogCi0gICAgLy8gVGhlIGNvbm5lY3Rpb24gd2lsbCBjbG9zZSBpdHNlbGYuCi0g
ICAgbV94cGNDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICAvLyBUaGUgWFBDIGNvbm5lY3Rpb24g
d2lsbCBjbG9zZSBpdHNlbGYuCisgICAgbV9yZWxheUNvbm5lY3Rpb24gPSBudWxscHRyOwogfQog
CiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UoUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIHhwY19vYmplY3RfdCkKQEAgLTQ5Myw3ICs0OTMs
NyBAQCBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBSZW1vdGVJbnNwZWN0b3I6Omxpc3RpbmdGb3JJ
bnNwZWN0aW9uVGFyZ2V0KGNvbnN0IFJlbW90ZQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAg
UmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGxpc3RpbmcgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwotICAgIFtsaXN0aW5nIHNldE9iamVjdDpAKHRh
cmdldC5pZGVudGlmaWVyKCkpIGZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07CisgICAgW2xp
c3Rpbmcgc2V0T2JqZWN0OkAodGFyZ2V0LnRhcmdldElkZW50aWZpZXIoKSkgZm9yS2V5OldJUlRh
cmdldElkZW50aWZpZXJLZXldOwogCiAgICAgc3dpdGNoICh0YXJnZXQudHlwZSgpKSB7CiAgICAg
Y2FzZSBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0OjpUeXBlOjpKYXZhU2NyaXB0OgpAQCAtNTEwLDcg
KzUxMCw3IEBAIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IFJlbW90ZUluc3BlY3Rvcjo6bGlzdGlu
Z0Zvckluc3BlY3Rpb25UYXJnZXQoY29uc3QgUmVtb3RlCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAotICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldCh0YXJnZXQu
aWRlbnRpZmllcigpKSkKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fdGFyZ2V0Q29ubmVj
dGlvbk1hcC5nZXQodGFyZ2V0LnRhcmdldElkZW50aWZpZXIoKSkpCiAgICAgICAgIFtsaXN0aW5n
IHNldE9iamVjdDpjb25uZWN0aW9uLT5jb25uZWN0aW9uSWRlbnRpZmllcigpIGZvcktleTpXSVJD
b25uZWN0aW9uSWRlbnRpZmllcktleV07CiAKICAgICBpZiAodGFyZ2V0Lmhhc0xvY2FsRGVidWdn
ZXIoKSkKQEAgLTUyOSwyOCArNTI5LDI4IEBAIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IFJlbW90
ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvckF1dG9tYXRpb25UYXJnZXQoY29uc3QgUmVtb3RlCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbGlz
dGluZyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7Ci0gICAg
W2xpc3Rpbmcgc2V0T2JqZWN0OkAodGFyZ2V0LmlkZW50aWZpZXIoKSkgZm9yS2V5OldJUlBhZ2VJ
ZGVudGlmaWVyS2V5XTsKICAgICBbbGlzdGluZyBzZXRPYmplY3Q6dGFyZ2V0Lm5hbWUoKSBmb3JL
ZXk6V0lSVGl0bGVLZXldOworICAgIFtsaXN0aW5nIHNldE9iamVjdDpAKHRhcmdldC50YXJnZXRJ
ZGVudGlmaWVyKCkpIGZvcktleTpXSVJUYXJnZXRJZGVudGlmaWVyS2V5XTsKICAgICBbbGlzdGlu
ZyBzZXRPYmplY3Q6V0lSVHlwZUF1dG9tYXRpb24gZm9yS2V5OldJUlR5cGVLZXldOwogCi0gICAg
aWYgKGF1dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQodGFyZ2V0LmlkZW50aWZp
ZXIoKSkpCi0gICAgICAgIFtsaXN0aW5nIHNldE9iamVjdDpjb25uZWN0aW9uLT5jb25uZWN0aW9u
SWRlbnRpZmllcigpIGZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07CisgICAgaWYg
KGF1dG8gY29ubmVjdGlvblRvVGFyZ2V0ID0gbV90YXJnZXRDb25uZWN0aW9uTWFwLmdldCh0YXJn
ZXQudGFyZ2V0SWRlbnRpZmllcigpKSkKKyAgICAgICAgW2xpc3Rpbmcgc2V0T2JqZWN0OmNvbm5l
Y3Rpb25Ub1RhcmdldC0+Y29ubmVjdGlvbklkZW50aWZpZXIoKSBmb3JLZXk6V0lSQ29ubmVjdGlv
bklkZW50aWZpZXJLZXldOwogCiAgICAgcmV0dXJuIGxpc3Rpbmc7CiB9CiAKIHZvaWQgUmVtb3Rl
SW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NOb3coKQogewotICAgIEFTU0VSVChtX3hwY0Nvbm5lY3Rp
b24pOwotICAgIGlmICghbV94cGNDb25uZWN0aW9uKQorICAgIEFTU0VSVChtX3JlbGF5Q29ubmVj
dGlvbik7CisgICAgaWYgKCFtX3JlbGF5Q29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9wdXNoU2NoZWR1bGVkID0gZmFsc2U7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGlj
dGlvbmFyeT4gbGlzdGluZ3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdF0pOwotICAgIGZvciAoUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gbGlzdGluZyA6IG1fbGlz
dGluZ01hcC52YWx1ZXMoKSkgewotICAgICAgICBOU1N0cmluZyAqaWRlbnRpZmllciA9IFtbbGlz
dGluZy5nZXQoKSBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldIHN0cmluZ1ZhbHVl
XTsKLSAgICAgICAgW2xpc3RpbmdzIHNldE9iamVjdDpsaXN0aW5nLmdldCgpIGZvcktleTppZGVu
dGlmaWVyXTsKKyAgICBmb3IgKFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGxpc3RpbmcgOiBtX3Rh
cmdldExpc3RpbmdNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgTlNTdHJpbmcgKnRhcmdldElkZW50
aWZpZXJTdHJpbmcgPSBbW2xpc3RpbmcuZ2V0KCkgb2JqZWN0Rm9yS2V5OldJUlRhcmdldElkZW50
aWZpZXJLZXldIHN0cmluZ1ZhbHVlXTsKKyAgICAgICAgW2xpc3RpbmdzIHNldE9iamVjdDpsaXN0
aW5nLmdldCgpIGZvcktleTp0YXJnZXRJZGVudGlmaWVyU3RyaW5nXTsKICAgICB9CiAKICAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbWVzc2FnZSA9IGFkb3B0TlMoW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CkBAIC01NTksMTIgKzU1OSwxMiBAQCB2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdzTm93KCkKICAgICBCT09MIGlzQWxsb3dlZCA9IG1f
Y2xpZW50ICYmIG1fY2xpZW50LT5yZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpOwogICAgIFttZXNz
YWdlIHNldE9iamVjdDpAKGlzQWxsb3dlZCkgZm9yS2V5OldJUlJlbW90ZUF1dG9tYXRpb25FbmFi
bGVkS2V5XTsKIAotICAgIG1feHBjQ29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV0lSTGlzdGluZ01l
c3NhZ2UsIG1lc3NhZ2UuZ2V0KCkpOworICAgIG1fcmVsYXlDb25uZWN0aW9uLT5zZW5kTWVzc2Fn
ZShXSVJMaXN0aW5nTWVzc2FnZSwgbWVzc2FnZS5nZXQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlSW5z
cGVjdG9yOjpwdXNoTGlzdGluZ3NTb29uKCkKIHsKLSAgICBpZiAoIW1feHBjQ29ubmVjdGlvbikK
KyAgICBpZiAoIW1fcmVsYXlDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
bV9wdXNoU2NoZWR1bGVkKQpAQCAtNTgyLDcgKzU4Miw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpwdXNoTGlzdGluZ3NTb29uKCkKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUhhc0Fj
dGl2ZURlYnVnU2Vzc2lvbigpCiB7Ci0gICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb24g
PSAhbV9jb25uZWN0aW9uTWFwLmlzRW1wdHkoKTsKKyAgICBib29sIGhhc0FjdGl2ZURlYnVnZ2Vy
U2Vzc2lvbiA9ICFtX3RhcmdldENvbm5lY3Rpb25NYXAuaXNFbXB0eSgpOwogICAgIGlmIChoYXNB
Y3RpdmVEZWJ1Z2dlclNlc3Npb24gPT0gbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24pCiAgICAgICAg
IHJldHVybjsKIApAQCAtNTk3LDggKzU5Nyw4IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRh
dGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2
ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKIHsKLSAgICB1bnNpZ25lZCBp
ZGVudGlmaWVyID0gW1t1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXld
IHVuc2lnbmVkSW50ZWdlclZhbHVlXTsKLSAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgdW5zaWdu
ZWQgdGFyZ2V0SWRlbnRpZmllciA9IFtbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlRhcmdldElk
ZW50aWZpZXJLZXldIHVuc2lnbmVkSW50ZWdlclZhbHVlXTsKKyAgICBpZiAoIXRhcmdldElkZW50
aWZpZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRp
ZmllciA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXld
OwpAQCAtNjA5LDMzICs2MDksMzMgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0
dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCiAgICAgaWYgKCFzZW5kZXIpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChtX2Nvbm5lY3Rpb25NYXAuY29udGFpbnMoaWRlbnRpZmll
cikpCisgICAgaWYgKG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5jb250YWlucyh0YXJnZXRJZGVudGlm
aWVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBmaW5kUmVzdWx0ID0gbV90YXJnZXRN
YXAuZmluZChpZGVudGlmaWVyKTsKKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3RhcmdldE1hcC5m
aW5kKHRhcmdldElkZW50aWZpZXIpOwogICAgIGlmIChmaW5kUmVzdWx0ID09IG1fdGFyZ2V0TWFw
LmVuZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBBdHRlbXB0IHRvIGNyZWF0ZSBhIGNv
bm5lY3Rpb24uIFRoaXMgbWF5IGZhaWwgaWYgdGhlIHBhZ2UgYWxyZWFkeSBoYXMgYW4gaW5zcGVj
dG9yIG9yIGlmIGl0IGRpc2FsbG93cyBpbnNwZWN0aW9uLgogICAgIFJlbW90ZUNvbnRyb2xsYWJs
ZVRhcmdldCogdGFyZ2V0ID0gZmluZFJlc3VsdC0+dmFsdWU7Ci0gICAgUmVmUHRyPFJlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldD4gY29ubmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQoZG93bmNhc3Q8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4odGFyZ2V0KSwgY29u
bmVjdGlvbklkZW50aWZpZXIsIHNlbmRlcikpOworICAgIFJlZlB0cjxSZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXQ+IGNvbm5lY3Rpb25Ub1RhcmdldCA9IGFkb3B0UmVmKG5ldyBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQoZG93bmNhc3Q8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4odGFyZ2V0KSwgY29u
bmVjdGlvbklkZW50aWZpZXIsIHNlbmRlcikpOwogCiAgICAgaWYgKGlzPFJlbW90ZUluc3BlY3Rp
b25UYXJnZXQ+KHRhcmdldCkpIHsKLSAgICAgICAgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24g
PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlmaWVyID09IHRhcmdldC0+aWRl
bnRpZmllcigpOworICAgICAgICBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiA9IG1fYXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIgPT0gdGFyZ2V0LT50YXJnZXRJ
ZGVudGlmaWVyKCk7CiAgICAgICAgIGJvb2wgYXV0b21hdGljYWxseVBhdXNlID0gW1t1c2VySW5m
byBvYmplY3RGb3JLZXk6V0lSQXV0b21hdGljYWxseVBhdXNlXSBib29sVmFsdWVdOwogCi0gICAg
ICAgIGlmICghY29ubmVjdGlvbi0+c2V0dXAoaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBhdXRvbWF0
aWNhbGx5UGF1c2UpKSB7Ci0gICAgICAgICAgICBjb25uZWN0aW9uLT5jbG9zZSgpOworICAgICAg
ICBpZiAoIWNvbm5lY3Rpb25Ub1RhcmdldC0+c2V0dXAoaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBh
dXRvbWF0aWNhbGx5UGF1c2UpKSB7CisgICAgICAgICAgICBjb25uZWN0aW9uVG9UYXJnZXQtPmNs
b3NlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9jb25uZWN0
aW9uTWFwLnNldChpZGVudGlmaWVyLCBjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgICAgIG1f
dGFyZ2V0Q29ubmVjdGlvbk1hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgY29ubmVjdGlvblRvVGFy
Z2V0LnJlbGVhc2UoKSk7CiAgICAgICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOwog
ICAgIH0gZWxzZSBpZiAoaXM8UmVtb3RlQXV0b21hdGlvblRhcmdldD4odGFyZ2V0KSkgewotICAg
ICAgICBpZiAoIWNvbm5lY3Rpb24tPnNldHVwKCkpIHsKLSAgICAgICAgICAgIGNvbm5lY3Rpb24t
PmNsb3NlKCk7CisgICAgICAgIGlmICghY29ubmVjdGlvblRvVGFyZ2V0LT5zZXR1cCgpKSB7Cisg
ICAgICAgICAgICBjb25uZWN0aW9uVG9UYXJnZXQtPmNsb3NlKCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9jb25uZWN0aW9uTWFwLnNldChpZGVudGlmaWVyLCBj
b25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5zZXQo
dGFyZ2V0SWRlbnRpZmllciwgY29ubmVjdGlvblRvVGFyZ2V0LnJlbGVhc2UoKSk7CiAgICAgICAg
IHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOwogICAgIH0gZWxzZQogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY0NSwzOCArNjQ1LDM4IEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpyZWNlaXZlZFNldHVwTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQogCiB2b2lk
IFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWREYXRhTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJ
bmZvKQogewotICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBbW3VzZXJJbmZvIG9iamVjdEZvcktl
eTpXSVJQYWdlSWRlbnRpZmllcktleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOwotICAgIGlmICgh
aWRlbnRpZmllcikKKyAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gW1t1c2VySW5mbyBv
YmplY3RGb3JLZXk6V0lSVGFyZ2V0SWRlbnRpZmllcktleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVd
OworICAgIGlmICghdGFyZ2V0SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldChpZGVudGlmaWVyKTsKLSAgICBpZiAo
IWNvbm5lY3Rpb24pCisgICAgYXV0byBjb25uZWN0aW9uVG9UYXJnZXQgPSBtX3RhcmdldENvbm5l
Y3Rpb25NYXAuZ2V0KHRhcmdldElkZW50aWZpZXIpOworICAgIGlmICghY29ubmVjdGlvblRvVGFy
Z2V0KQogICAgICAgICByZXR1cm47CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbdXNlckluZm8gb2Jq
ZWN0Rm9yS2V5OldJUlNvY2tldERhdGFLZXldOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gbWVz
c2FnZSA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKLSAgICBjb25uZWN0aW9uLT5zZW5kTWVzc2FnZVRv
VGFyZ2V0KG1lc3NhZ2UuZ2V0KCkpOworICAgIGNvbm5lY3Rpb25Ub1RhcmdldC0+c2VuZE1lc3Nh
Z2VUb1RhcmdldChtZXNzYWdlLmdldCgpKTsKIH0KIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJl
Y2VpdmVkRGlkQ2xvc2VNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCiB7Ci0gICAgdW5z
aWduZWQgaWRlbnRpZmllciA9IFtbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlBhZ2VJZGVudGlm
aWVyS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1ZV07Ci0gICAgaWYgKCFpZGVudGlmaWVyKQorICAg
IHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIgPSBbW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJU
YXJnZXRJZGVudGlmaWVyS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1ZV07CisgICAgaWYgKCF0YXJn
ZXRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKICAgICBOU1N0cmluZyAqY29ubmVjdGlv
bklkZW50aWZpZXIgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlm
aWVyS2V5XTsKICAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KGlkZW50aWZpZXIp
OwotICAgIGlmICghY29ubmVjdGlvbikKKyAgICBhdXRvIGNvbm5lY3Rpb25Ub1RhcmdldCA9IG1f
dGFyZ2V0Q29ubmVjdGlvbk1hcC5nZXQodGFyZ2V0SWRlbnRpZmllcik7CisgICAgaWYgKCFjb25u
ZWN0aW9uVG9UYXJnZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghW2Nvbm5lY3Rpb25J
ZGVudGlmaWVyIGlzRXF1YWxUb1N0cmluZzpjb25uZWN0aW9uLT5jb25uZWN0aW9uSWRlbnRpZmll
cigpXSkKKyAgICBpZiAoIVtjb25uZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6Y29u
bmVjdGlvblRvVGFyZ2V0LT5jb25uZWN0aW9uSWRlbnRpZmllcigpXSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgY29ubmVjdGlvbi0+Y2xvc2UoKTsKLSAgICBtX2Nvbm5lY3Rpb25NYXAucmVtb3Zl
KGlkZW50aWZpZXIpOworICAgIGNvbm5lY3Rpb25Ub1RhcmdldC0+Y2xvc2UoKTsKKyAgICBtX3Rh
cmdldENvbm5lY3Rpb25NYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOwogCiAgICAgdXBkYXRl
SGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CiAKQEAgLTY5MCw3ICs2OTAsNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3Rvcjo6cmVjZWl2ZWRHZXRMaXN0aW5nTWVzc2FnZShOU0RpY3Rpb25hcnkgKikKIAog
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkSW5kaWNhdGVNZXNzYWdlKE5TRGljdGlvbmFy
eSAqdXNlckluZm8pCiB7Ci0gICAgdW5zaWduZWQgaWRlbnRpZmllciA9IFtbdXNlckluZm8gb2Jq
ZWN0Rm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1ZV07Cisg
ICAgdW5zaWduZWQgaWRlbnRpZmllciA9IFtbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlRhcmdl
dElkZW50aWZpZXJLZXldIHVuc2lnbmVkSW50ZWdlclZhbHVlXTsKICAgICBpZiAoIWlkZW50aWZp
ZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtNzE0LDggKzcxNCw4IEBAIHZvaWQgUmVtb3RlSW5z
cGVjdG9yOjpyZWNlaXZlZEluZGljYXRlTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQog
CiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRQcm94eUFwcGxpY2F0aW9uU2V0dXBNZXNz
YWdlKE5TRGljdGlvbmFyeSAqKQogewotICAgIEFTU0VSVChtX3hwY0Nvbm5lY3Rpb24pOwotICAg
IGlmICghbV94cGNDb25uZWN0aW9uKQorICAgIEFTU0VSVChtX3JlbGF5Q29ubmVjdGlvbik7Cisg
ICAgaWYgKCFtX3JlbGF5Q29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFt
X3BhcmVudFByb2Nlc3NJZGVudGlmaWVyIHx8ICFtX3BhcmVudFByb2Nlc3NBdWRpdERhdGEpIHsK
QEAgLTczMiw3ICs3MzIsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRQcm94eUFw
cGxpY2F0aW9uU2V0dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqKQogCiAgICAgbV9zaG91bGRTZW5k
UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uID0gZmFsc2U7CiAKLSAgICBtX3hwY0Nvbm5lY3Rpb24t
PnNlbmRNZXNzYWdlKFdJUlByb3h5QXBwbGljYXRpb25TZXR1cFJlc3BvbnNlTWVzc2FnZSwgQHsK
KyAgICBtX3JlbGF5Q29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV0lSUHJveHlBcHBsaWNhdGlvblNl
dHVwUmVzcG9uc2VNZXNzYWdlLCBAewogICAgICAgICBXSVJQcm94eUFwcGxpY2F0aW9uUGFyZW50
UElES2V5OiBAKG1fcGFyZW50UHJvY2Vzc0lkZW50aWZpZXIpLAogICAgICAgICBXSVJQcm94eUFw
cGxpY2F0aW9uUGFyZW50QXVkaXREYXRhS2V5OiAoTlNEYXRhICopbV9wYXJlbnRQcm9jZXNzQXVk
aXREYXRhLmdldCgpLAogICAgIH0pOwpAQCAtNzQ0LDggKzc0NCw4IEBAIHZvaWQgUmVtb3RlSW5z
cGVjdG9yOjpyZWNlaXZlZENvbm5lY3Rpb25EaWVkTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJ
bmZvKQogICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gaXQgPSBtX2Nvbm5lY3Rpb25NYXAuYmVnaW4oKTsKLSAgICBhdXRvIGVuZCA9IG1f
Y29ubmVjdGlvbk1hcC5lbmQoKTsKKyAgICBhdXRvIGl0ID0gbV90YXJnZXRDb25uZWN0aW9uTWFw
LmJlZ2luKCk7CisgICAgYXV0byBlbmQgPSBtX3RhcmdldENvbm5lY3Rpb25NYXAuZW5kKCk7CiAg
ICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoW2Nvbm5lY3Rpb25JZGVu
dGlmaWVyIGlzRXF1YWxUb1N0cmluZzppdC0+dmFsdWUtPmNvbm5lY3Rpb25JZGVudGlmaWVyKCld
KQogICAgICAgICAgICAgYnJlYWs7CkBAIC03NTYsNyArNzU2LDcgQEAgdm9pZCBSZW1vdGVJbnNw
ZWN0b3I6OnJlY2VpdmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlcklu
Zm8pCiAKICAgICBhdXRvIGNvbm5lY3Rpb24gPSBpdC0+dmFsdWU7CiAgICAgY29ubmVjdGlvbi0+
Y2xvc2UoKTsKLSAgICBtX2Nvbm5lY3Rpb25NYXAucmVtb3ZlKGl0KTsKKyAgICBtX3RhcmdldENv
bm5lY3Rpb25NYXAucmVtb3ZlKGl0KTsKIAogICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lv
bigpOwogfQpAQCAtNzcxLDEwICs3NzEsMTAgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2Vp
dmVkQXV0b21hdGljSW5zcGVjdGlvbkNvbmZpZ3VyYXRpb25NZXNzYWdlKE5TRGljdGlvbmEKIAog
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQXV0b21hdGljSW5zcGVjdGlvblJlamVjdE1l
c3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKIHsKLSAgICB1bnNpZ25lZCByZWplY3Rpb25J
ZGVudGlmaWVyID0gW1t1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXld
IHVuc2lnbmVkSW50VmFsdWVdOworICAgIHVuc2lnbmVkIHJlamVjdGlvbklkZW50aWZpZXIgPSBb
W3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJUYXJnZXRJZGVudGlmaWVyS2V5XSB1bnNpZ25lZElu
dFZhbHVlXTsKIAotICAgIEFTU0VSVChyZWplY3Rpb25JZGVudGlmaWVyID09IG1fYXV0b21hdGlj
SW5zcGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIpOwotICAgIGlmIChyZWplY3Rpb25JZGVudGlm
aWVyID09IG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIpCisgICAgQVNT
RVJUKHJlamVjdGlvbklkZW50aWZpZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRl
VGFyZ2V0SWRlbnRpZmllcik7CisgICAgaWYgKHJlamVjdGlvbklkZW50aWZpZXIgPT0gbV9hdXRv
bWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcikKICAgICAgICAgbV9hdXRv
bWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
Q29uc3RhbnRzLmgKaW5kZXggZjA1ZDljYmRlZjE0YTlhMjdiOWU2M2IzNzM3YWIzMmE4ZTY3ODFi
ZS4uYzViZWMyZjZlNGE3NzVhMzIyZWEwZTM0ODM3NmQxNWZmNmM2NDVmYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29u
c3RhbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yQ29uc3RhbnRzLmgKQEAgLTQ4LDcgKzQ4LDggQEAKICNkZWZpbmUgV0lSSG9z
dEFwcGxpY2F0aW9uSWRlbnRpZmllcktleSAgICAgICAgIEAiV0lSSG9zdEFwcGxpY2F0aW9uSWRl
bnRpZmllcktleSIKICNkZWZpbmUgV0lSSG9zdEFwcGxpY2F0aW9uTmFtZUtleSAgICAgICAgICAg
ICAgIEAiV0lSSG9zdEFwcGxpY2F0aW9uTmFtZUtleSIKICNkZWZpbmUgV0lSQ29ubmVjdGlvbklk
ZW50aWZpZXJLZXkgICAgICAgICAgICAgIEAiV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXkiCi0j
ZGVmaW5lIFdJUlBhZ2VJZGVudGlmaWVyS2V5ICAgICAgICAgICAgICAgICAgICBAIldJUlBhZ2VJ
ZGVudGlmaWVyS2V5IgorLy8gQ09NUEFUQUJJTElUWShpT1MgOSk6IFRoZSBrZXkgc3RyaW5nIGlz
IGludGVudGlvbmFsbHkgbWlzbWF0Y2hlZCB0byBzdXBwb3J0IG9sZCByZWxheXMuCisjZGVmaW5l
IFdJUlRhcmdldElkZW50aWZpZXJLZXkgICAgICAgICAgICAgICAgICBAIldJUlBhZ2VJZGVudGlm
aWVyS2V5IgogI2RlZmluZSBXSVJIYXNMb2NhbERlYnVnZ2VyS2V5ICAgICAgICAgICAgICAgICAg
QCJXSVJIYXNMb2NhbERlYnVnZ2VyS2V5IgogI2RlZmluZSBXSVJUaXRsZUtleSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQCJXSVJUaXRsZUtleSIKICNkZWZpbmUgV0lSVVJMS2V5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSVVJMS2V5Igo=
</data>
<flag name="review"
          id="295935"
          type_id="1"
          status="+"
          setter="joepeck"
    />
    <flag name="commit-queue"
          id="296029"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>