<?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>202427</bug_id>
          
          <creation_ts>2019-10-01 12:55:41 -0700</creation_ts>
          <short_desc>[WebAuthn] Support googleLegacyAppidSupport extension</short_desc>
          <delta_ts>2019-10-03 10:39:41 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexei Czeskis">aczeskis</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>alex.gaynor</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1575671</commentid>
    <comment_count>0</comment_count>
    <who name="Alexei Czeskis">aczeskis</who>
    <bug_when>2019-10-01 12:55:41 -0700</bug_when>
    <thetext>***Background***
Google launched support for U2F Security Keys long before FIDO2/WebAuthn existed.  As a result all Security Keys registered to Google Accounts are &quot;bound&quot; to the appID https://www.gstatic.com/securitykey/origins.json.

The add-account-flow in Android is burned in by OEMs and cannot be updated — as a result, many Android devices only know how to speak U2F to authenticators.  If Google were to begin registering Security Keys over WebAuthn — specifically, using an RP ID rather than an appID — Google users with Security Keys would not be able to sign into their accounts on the aforementioned Android devices.  While Google intends to move fully to WebAuthn, the transition will take some time.


***Tweaks for create()***
The following describes the necessary behavior for any WebAuthn Client (that does not also provide a U2F API or that wants to deprecate its U2F APIs) so that users may register security keys with Google accounts.

Google will eventually deprecate this behavior, therefore this behavior SHALL be controlled by a (new) WebAuthn registration extension &quot;googleLegacyAppidSupport&quot;, which will take in a single boolean value.  When set to true, the &quot;legacy behavior&quot; defined below will be enabled; when set to false, the behavior will be disabled.  When not specified, the value of this extension is false. 

When receiving a WebAuthn create() request with an RP ID of google.com and the googleLegacyAppidSupport value set to true, the WebAuthn Client MUST: 1) only use the U2F transport protocol, 2) communicate only with roaming authenticators (that support U2F), and 3) use a hard-coded appID of https://www.gstatic.com/securitykey/origins.json


***Tweaks for get()***
We have previously filed bugs that describe the necessary WebAuth Client behavior changes here:
https://bugs.webkit.org/show_bug.cgi?id=196046</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575688</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-01 13:19:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/55887473&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575727</commentid>
    <comment_count>2</comment_count>
      <attachid>379948</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-01 14:04:20 -0700</bug_when>
    <thetext>Created attachment 379948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576093</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-10-02 11:51:41 -0700</bug_when>
    <thetext>This seems to have some API failures:

TestWebKitAPI.U2fCommandConstructorTest.TestConvertCtapMakeCredentialToU2fRegister
    Child process terminated with signal 4: Illegal instruction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576335</commentid>
    <comment_count>4</comment_count>
      <attachid>380089</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-03 01:49:21 -0700</bug_when>
    <thetext>Created attachment 380089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576440</commentid>
    <comment_count>5</comment_count>
      <attachid>380089</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-10-03 09:22:42 -0700</bug_when>
    <thetext>Comment on attachment 380089
Patch

Nice teamwork with Google, here :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576454</commentid>
    <comment_count>6</comment_count>
      <attachid>380089</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-03 09:54:44 -0700</bug_when>
    <thetext>Comment on attachment 380089
Patch

Thanks, Brent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576467</commentid>
    <comment_count>7</comment_count>
      <attachid>380089</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-03 10:39:40 -0700</bug_when>
    <thetext>Comment on attachment 380089
Patch

Clearing flags on attachment: 380089

Committed r250659: &lt;https://trac.webkit.org/changeset/250659&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576468</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-03 10:39:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379948</attachid>
            <date>2019-10-01 14:04:20 -0700</date>
            <delta_ts>2019-10-03 01:49:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202427-20191001140418.patch</filename>
            <type>text/plain</type>
            <size>25526</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjIxZTFiZGZlYmE0ZGVi
ZDI4ZDRjMzlkNDRlOTY3ZDJmYWQzY2Y4NC4uNWY2ZDAxMzA0ZGJjZDYwNzkwODJiZTI5ODlhMzc4
ODkxZGQ5OWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE5LTEwLTAxICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBnb29nbGVM
ZWdhY3lBcHBpZFN1cHBvcnQgZXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI0MjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1ODg3
NDczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBh
cnRpYWxseSBjb3ZlcmVkIGJ5IG5ldyB0ZXN0IGNhc2VzIGluIGV4aXN0aW5nIHRlc3RzLCBhbmQg
cmVtYWluaW5nIHdpbGwgYmUgY292ZXJlZCBieSBtYW51YWwgdGVzdHMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCBleHRlbnNp
b24sIHdoZW4gc2V0OgorICAgICAgICAxKSB1c2VyIGFnZW50IHNob3VsZCBvbmx5IHVzZSB0aGUg
VTJGIHRyYW5zcG9ydCBwcm90b2NvbCwKKyAgICAgICAgMikgc2hvdWxkIG9ubHkgY29tbXVuaWNh
dGUgd2l0aCByb2FtaW5nIGF1dGhlbnRpY2F0b3JzLCBhbmQKKyAgICAgICAgMykgc2hvdWxkIHVz
ZSBhIGhhcmQtY29kZWQgYXBwSUQgb2YgaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vc2VjdXJpdHlr
ZXkvb3JpZ2lucy5qc29uLgorICAgICAgICBUbyBiZSBub3RpY2VkIGFzIHRoZSBuYW1lIGltcGxp
ZXMsIHRoaXMgZXh0ZW5zaW9uIGlzIGV4Y2x1c2l2ZWx5IGZvciBSUCBJRCA9IGdvb2dsZS5jb20u
CisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gd2lzZSwgYWxsIG9wZXJhdGlvbnMgYXJlIGNhcHR1
cmVkIGluIG1ldGhvZHMgd2l0aCBuYW1lIHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRF
eHRlbnNpb24uCisgICAgICAgIDEpIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvciB0YWtlcyBjYXJl
IG9mIHNldHRpbmcgdGhlIHZhbHVlLgorICAgICAgICAyKSBVMmZDb21tYW5kQ29uc3RydWN0b3Ig
dGFrZXMgY2FyZSBvZiBoYXJkIGNvZGluZyB0aGUgQXBwSUQuCisgICAgICAgIDMpIEF1dGhlbnRp
Y2F0b3JNYW5hZ2VyIHRha2VzIGNhcmUgb2YgcmVtb3ZpbmcgQXV0aGVudGljYXRvclRyYW5zcG9y
dDo6SW50ZXJuYWwgZnJvbSBUcmFuc3BvcnRTZXQsIHNvIHN0YXJ0RGlzY292ZXJ5CisgICAgICAg
IHdpbGwgbm90IHBva2UgcGxhdGZvcm0gYXV0aGVudGljYXRvcnMuCisgICAgICAgIDQpIEN0YXBB
dXRoZW50aWNhdG9yIHRha2VzIGNhcmUgb2YgZG93bmdyYWRpbmcgdG8gVTJmQXV0aGVudGljYXRv
ci4KKyAgICAgICAgNSkgVTJmQXV0aGVudGljYXRvciB0YWtlcyBjYXJlIG9mIHNldHRpbmcgdGhl
IEFwcElEIGluIHRoZSByZXNwb25zZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmg6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM6OmRlY29k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRJbnB1dHMuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckludGVybmFsOjpwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoZmlkbzo6Y29udmVy
dFRvVTJmUmVnaXN0ZXJDb21tYW5kKToKKyAgICAgICAgKGZpZG86OnByb2Nlc3NHb29nbGVMZWdh
Y3lBcHBJZFN1cHBvcnRFeHRlbnNpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlk
by9VMmZDb21tYW5kQ29uc3RydWN0b3IuaDoKKwogMjAxOS0wOS0yNyAgS2VpdGggUm9sbGluICA8
a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29hbGVzY2Ugb3IgcmVtb3ZlIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2M0MzczYWE5OWNlZGIz
NjRmNmMwY2M1NWNjNDViZTI0ZGMzZTQ3YS4uYWM5NmEzNmZkODYyOGRkNWI4MmZkYWRhYzlhZmVk
YjllZWRkYTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0xMC0wMSAgSmlld2Vu
IFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgZ29vZ2xlTGVn
YWN5QXBwaWRTdXBwb3J0IGV4dGVuc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNDI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTg4NzQ3
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VySW50ZXJuYWw6OmNvbGxlY3RUcmFuc3Bv
cnRzKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXJJbnRlcm5hbDo6cHJv
Y2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpoYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN0YXBBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChX
ZWJLaXQ6OkN0YXBBdXRoZW50aWNhdG9yOjpwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0
RXh0ZW5zaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9D
dGFwQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpVMmZBdXRoZW50
aWNhdG9yOjpjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisK
IDIwMTktMDktMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBNb3ZlIERvd25sb2FkTW9uaXRvciB0ZXN0IHNwZWVkIG11bHRpcGxpZXIgZnJv
bSBXZWJQcm9jZXNzUG9vbCB0byBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVu
c2lvbnNDbGllbnRJbnB1dHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmgKaW5kZXggOGUyZDg0NzM4MGZhNzk1
MzRhNWJlOTA5OGYxOWFkMTI5YzIzODUzNi4uZGJiZWUzM2IzNzRlM2JlMmU1MDE1ZGU3NWVhMGY2
MzhkNGExNzc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5o
CkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEF1dGhlbnRp
Y2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cyB7CiAgICAgU3RyaW5nIGFwcGlkOworICAgIGJv
b2wgZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+
IGRlY29kZShEZWNvZGVyJik7CkBAIC00MSw3ICs0Miw3IEBAIHN0cnVjdCBBdXRoZW50aWNhdGlv
bkV4dGVuc2lvbnNDbGllbnRJbnB1dHMgewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQg
QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGFwcGlkOworICAgIGVuY29kZXIgPDwgYXBw
aWQgPDwgZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgpAQCAtNTUsNiArNTYsMTIgQEAgT3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25z
Q2xpZW50SW5wdXRzPiBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnAKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXN1bHQuYXBwaWQgPSBXVEZNb3ZlKCphcHBpZCk7
CiAKKyAgICBPcHRpb25hbDxib29sPiBnb29nbGVMZWdhY3lBcHBpZFN1cHBvcnQ7CisgICAgZGVj
b2RlciA+PiBnb29nbGVMZWdhY3lBcHBpZFN1cHBvcnQ7CisgICAgaWYgKCFnb29nbGVMZWdhY3lB
cHBpZFN1cHBvcnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0Lmdv
b2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCA9IFdURk1vdmUoKmdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9y
dCk7CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudElucHV0cy5pZGwKaW5kZXggN2U5ZTk3YjhkZDI3NDc2OTRlYTdkZmVjMDlkZTY4
MWY0YTI0ZTNiMC4uOTcxYmMxYTNjZWY2NGE0MWY3MDlkNmVjOGM0NDA2OGU2ZWFlYTA3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmlkbApAQCAtMjcsNCAr
MjcsNiBAQAogICAgIENvbmRpdGlvbmFsPVdFQl9BVVRITiwKIF0gZGljdGlvbmFyeSBBdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMgewogICAgIFVTVlN0cmluZyBhcHBpZDsKKyAg
ICAvLyBGb3IgR29vZ2xlIHRvIHR1cm4gb2ZmIHRoZSBsZWdhY3kgQXBwSUQgc3VwcG9ydC4KKyAg
ICBib29sZWFuIGdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCA9IHRydWU7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3IuY3BwCmluZGV4IDc0N2FhYjMyZjMyOGZkMTEyMzI5YjY4NTkyZWNiOGJhOTNmOWY5
MzUuLjkxOTM0ZThkNDJjZGEyZmNmOTI1NjlhZWUwNzRhNWMwODYyNTM4MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgZW51bSBjbGFzcyBDbGllbnREYXRhVHlw
ZSB7CiAgICAgR2V0CiB9OwogCi0vLyBGSVhNRSgxODE5NDgpOiBBZGQgdG9rZW4gYmluZGluZyBJ
RCBhbmQgZXh0ZW5zaW9ucy4KKy8vIEZJWE1FKDE4MTk0OCk6IEFkZCB0b2tlbiBiaW5kaW5nIElE
Lgogc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gcHJvZHVjZUNsaWVudERhdGFKc29uKENsaWVudERh
dGFUeXBlIHR5cGUsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgY2hhbGxlbmdlLCBjb25zdCBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKQogewogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVh
dGUoKTsKQEAgLTExMiw2ICsxMTIsMTYgQEAgc3RhdGljIFN0cmluZyBwcm9jZXNzQXBwSWRFeHRl
bnNpb24oY29uc3QgU2VjdXJpdHlPcmlnaW4mIGZhY2V0SWQsIGNvbnN0IFN0cmluZyYKICAgICBy
ZXR1cm4gYXBwSWQ7CiB9CiAKKy8vIFRoZSBkZWZhdWx0IGJlaGF2aW91ciBmb3IgZ29vZ2xlLmNv
bSBpcyB0byBhbHdheXMgdHVybiBvbiB0aGUgbGVnYWN5IEFwcElEIHN1cHBvcnQuCitzdGF0aWMg
Ym9vbCBwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKGNvbnN0IE9wdGlv
bmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4mIGV4dGVuc2lvbnMsIGNv
bnN0IFN0cmluZyYgcnBJZCkKK3sKKyAgICBpZiAocnBJZCAhPSAiZ29vZ2xlLmNvbSJfcykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZXh0ZW5zaW9ucykKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIGV4dGVuc2lvbnMtPmdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydDsK
K30KKwogfSAvLyBuYW1lc3BhY2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWwKIAog
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ioc3RkOjp1
bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4mJiBjbGllbnQpCkBAIC0x
MjksNyArMTM5LDYgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmNyZWF0ZShjb25z
dCBTZWN1cml0eU9yaWdpbiYgY2FsbGVyT3JpZ2luLCBjb25zdAogICAgIHVzaW5nIG5hbWVzcGFj
ZSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDsKIAogICAgIC8vIFRoZSBmb2xsb3dp
bmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2NyZWF0ZUNyZWRl
bnRpYWwgYXMgb2YgNSBEZWNlbWJlciAyMDE3LgotICAgIC8vIEV4dGVuc2lvbnMgYXJlIG5vdCBz
dXBwb3J0ZWQuIFNraXAgU3RlcCAxMS0xMi4KICAgICAvLyBTdGVwIDEsIDMsIDE2IGFyZSBoYW5k
bGVkIGJ5IHRoZSBjYWxsZXIuCiAgICAgLy8gU3RlcCAyLgogICAgIGlmICghc2FtZU9yaWdpbldp
dGhBbmNlc3RvcnMpIHsKQEAgLTE2MSw2ICsxNzAsMTAgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3I6OmNyZWF0ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgY2FsbGVyT3JpZ2luLCBjb25z
dAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gU3RlcCAxMS0xMi4KKyAgICAvLyBP
bmx5IEdvb2dsZSBMZWdhY3kgQXBwSUQgU3VwcG9ydCBFeHRlbnNpb24gaXMgc3VwcG9ydGVkLgor
ICAgIG9wdGlvbnMuZXh0ZW5zaW9ucyA9IEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElu
cHV0cyB7IFN0cmluZygpLCBwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9u
KG9wdGlvbnMuZXh0ZW5zaW9ucywgb3B0aW9ucy5ycC5pZCkgfTsKKwogICAgIC8vIFN0ZXAgMTMt
MTUuCiAgICAgYXV0byBjbGllbnREYXRhSnNvbiA9IHByb2R1Y2VDbGllbnREYXRhSnNvbihDbGll
bnREYXRhVHlwZTo6Q3JlYXRlLCBvcHRpb25zLmNoYWxsZW5nZSwgY2FsbGVyT3JpZ2luKTsKICAg
ICBhdXRvIGNsaWVudERhdGFKc29uSGFzaCA9IHByb2R1Y2VDbGllbnREYXRhSnNvbkhhc2goY2xp
ZW50RGF0YUpzb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaAppbmRl
eCBkNTQ4YWFkNWIwNzg2ZDMzOTdhYTI2YzU1MDM2NjBiZTEzMGQwYWViLi4zNzJkZjFiOTRlOGJm
NjQwMjMzMGU1NDVlZDQ3NTY4MGI3NDIzZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMuaApAQCAtODYsNyArODYsNyBAQCBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucyB7CiAgICAgVmVjdG9yPFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlw
dG9yPiBleGNsdWRlQ3JlZGVudGlhbHM7CiAgICAgT3B0aW9uYWw8QXV0aGVudGljYXRvclNlbGVj
dGlvbkNyaXRlcmlhPiBhdXRoZW50aWNhdG9yU2VsZWN0aW9uOwogICAgIEF0dGVzdGF0aW9uQ29u
dmV5YW5jZVByZWZlcmVuY2UgYXR0ZXN0YXRpb247Ci0gICAgT3B0aW9uYWw8QXV0aGVudGljYXRp
b25FeHRlbnNpb25zQ2xpZW50SW5wdXRzPiBleHRlbnNpb25zOyAvLyBBIHBsYWNlIGhvbGRlciwg
YnV0IG5ldmVyIHVzZWQuCisgICAgbXV0YWJsZSBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVu
c2lvbnNDbGllbnRJbnB1dHM+IGV4dGVuc2lvbnM7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+
IGRlY29kZShEZWNvZGVyJik7CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAg
ICBlbmNvZGVyIDw8IHJwLmlkIDw8IHJwLm5hbWUgPDwgcnAuaWNvbjsKICAgICBlbmNvZGVyIDw8
IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1c2VyLmlkLmxlbmd0aCgpKTsKICAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YSh1c2VyLmlkLmRhdGEoKSwgdXNlci5pZC5sZW5ndGgoKSwgMSk7
Ci0gICAgZW5jb2RlciA8PCB1c2VyLmRpc3BsYXlOYW1lIDw8IHVzZXIubmFtZSA8PCB1c2VyLmlj
b24gPDwgcHViS2V5Q3JlZFBhcmFtcyA8PCB0aW1lb3V0IDw8IGV4Y2x1ZGVDcmVkZW50aWFscyA8
PCBhdXRoZW50aWNhdG9yU2VsZWN0aW9uIDw8IGF0dGVzdGF0aW9uOworICAgIGVuY29kZXIgPDwg
dXNlci5kaXNwbGF5TmFtZSA8PCB1c2VyLm5hbWUgPDwgdXNlci5pY29uIDw8IHB1YktleUNyZWRQ
YXJhbXMgPDwgdGltZW91dCA8PCBleGNsdWRlQ3JlZGVudGlhbHMgPDwgYXV0aGVudGljYXRvclNl
bGVjdGlvbiA8PCBhdHRlc3RhdGlvbiA8PCBleHRlbnNpb25zOwogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgpAQCAtMTg5LDI5ICsxODksMTggQEAgT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucz4gUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczoK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXN1bHQuYXR0ZXN0YXRpb24gPSBX
VEZNb3ZlKCphdHRlc3RhdGlvbik7CiAKKyAgICBPcHRpb25hbDxPcHRpb25hbDxBdXRoZW50aWNh
dGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+PiBleHRlbnNpb25zOworICAgIGRlY29kZXIgPj4g
ZXh0ZW5zaW9uczsKKyAgICBpZiAoIWV4dGVuc2lvbnMpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmVzdWx0LmV4dGVuc2lvbnMgPSBXVEZNb3ZlKCpleHRlbnNpb25zKTsKKwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNw
YWNlIFdURiB7Ci0vLyBOb3QgZXZlcnkgbWVtYmVyIGlzIGNvcGllZC4KLXRlbXBsYXRlPD4gc3Ry
dWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFdlYkNvcmU6OlB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+IHsKLSAgICB0eXBlZGVmIFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgVHlwZTsKLSAgICBzdGF0aWMgVHlwZSBjb3B5
KGNvbnN0IFR5cGUmIHNvdXJjZSkKLSAgICB7Ci0gICAgICAgIFR5cGUgcmVzdWx0OwotICAgICAg
ICByZXN1bHQucnAubmFtZSA9IHNvdXJjZS5ycC5uYW1lLmlzb2xhdGVkQ29weSgpOwotICAgICAg
ICByZXN1bHQucnAuaWNvbiA9IHNvdXJjZS5ycC5pY29uLmlzb2xhdGVkQ29weSgpOwotICAgICAg
ICByZXN1bHQucnAuaWQgPSBzb3VyY2UucnAuaWQuaXNvbGF0ZWRDb3B5KCk7Ci0KLSAgICAgICAg
cmVzdWx0LnVzZXIubmFtZSA9IHNvdXJjZS51c2VyLm5hbWUuaXNvbGF0ZWRDb3B5KCk7Ci0gICAg
ICAgIHJlc3VsdC51c2VyLmljb24gPSBzb3VyY2UudXNlci5pY29uLmlzb2xhdGVkQ29weSgpOwot
ICAgICAgICByZXN1bHQudXNlci5kaXNwbGF5TmFtZSA9IHNvdXJjZS51c2VyLmRpc3BsYXlOYW1l
Lmlzb2xhdGVkQ29weSgpOwotICAgICAgICByZXN1bHQudXNlci5pZFZlY3RvciA9IHNvdXJjZS51
c2VyLmlkVmVjdG9yOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLX07CiAKIHRlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9uczo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+IHsKICAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzPApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcAppbmRleCA2MTY1Yjg4MTRj
M2RkNDA1YTE2MDNiYjJkY2JjYzI2YmM2YTc4NmYzLi5mMmY5ZGMzMTRjOTg5NGY3MjM0YjM2ZjQ5
Mjk5NjI2ODg4NjE2ZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcApAQCAtMTAzLDcg
KzEwMyw4IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmUmVnaXN0ZXJD
b21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpCiAgICAgaWYgKCFpc0NvbnZlcnRpYmxl
VG9VMmZSZWdpc3RlckNvbW1hbmQocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKLSAgICByZXR1cm4gY29uc3RydWN0VTJmUmVnaXN0ZXJDb21tYW5kKHByb2R1Y2VScElk
SGFzaChyZXF1ZXN0LnJwLmlkKSwgY2xpZW50RGF0YUhhc2gpOworICAgIGF1dG8gYXBwSWQgPSBw
cm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKHJlcXVlc3QuZXh0ZW5zaW9u
cyk7CisgICAgcmV0dXJuIGNvbnN0cnVjdFUyZlJlZ2lzdGVyQ29tbWFuZChwcm9kdWNlUnBJZEhh
c2goIWFwcElkID8gcmVxdWVzdC5ycC5pZCA6IGFwcElkKSwgY2xpZW50RGF0YUhhc2gpOwogfQog
CiBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRUb1UyZkNoZWNrT25seVNpZ25Db21t
YW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIHJlcXVlc3QsIGNvbnN0IFB1YmxpY0tleUNyZWRl
bnRpYWxEZXNjcmlwdG9yJiBrZXlIYW5kbGUpCkBAIC0xMzAsNiArMTMxLDE1IEBAIFZlY3Rvcjx1
aW50OF90PiBjb25zdHJ1Y3RCb2d1c1UyZlJlZ2lzdHJhdGlvbkNvbW1hbmQoKQogICAgIHJldHVy
biBjb25zdHJ1Y3RVMmZSZWdpc3RlckNvbW1hbmQoY29udmVydEJ5dGVzVG9WZWN0b3Ioa0JvZ3Vz
QXBwUGFyYW0sIHNpemVvZihrQm9ndXNBcHBQYXJhbSkpLCBjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcihr
Qm9ndXNDaGFsbGVuZ2UsIHNpemVvZihrQm9ndXNDaGFsbGVuZ2UpKSk7CiB9CiAKK1N0cmluZyBw
cm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKGNvbnN0IE9wdGlvbmFsPEF1
dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4mIGV4dGVuc2lvbnMpCit7CisgICAg
Ly8gQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUgc2hvdWxkIGFsd2F5cyBzZXQgaXQu
CisgICAgQVNTRVJUKCEhZXh0ZW5zaW9ucyk7CisgICAgaWYgKCFleHRlbnNpb25zLT5nb29nbGVM
ZWdhY3lBcHBpZFN1cHBvcnQpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4g
Imh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL3NlY3VyaXR5a2V5L29yaWdpbnMuanNvbiJfczsKK30K
KwogfSAvLyBuYW1lc3BhY2UgZmlkbwogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5k
Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZD
b21tYW5kQ29uc3RydWN0b3IuaAppbmRleCBlZWJlMjkyZmYyYWM0N2ZmY2EzNzk0MjBkNWRlYWFm
ZTc0NmM5ZDRkLi4yODQyNzYyZWQxYzQwZWQyNjRiOTAxYzU3NzEyM2MyMDgxZWE5ZDk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENv
bnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZkNvbW1hbmRDb25zdHJ1Y3Rvci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEF1dGhlbnRpY2F0aW9uRXh0
ZW5zaW9uc0NsaWVudElucHV0czsKIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zOwogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOwogc3RydWN0IFB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczsKQEAgLTY2LDYgKzY3LDkgQEAgV0VCQ09S
RV9FWFBPUlQgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZTaWduQ29tbWFu
ZChjb25zdCBWZWN0b3I8dWkKIAogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvbnN0
cnVjdEJvZ3VzVTJmUmVnaXN0cmF0aW9uQ29tbWFuZCgpOwogCisvLyBSZXR1cm5zICJodHRwczov
L3d3dy5nc3RhdGljLmNvbS9zZWN1cml0eWtleS9vcmlnaW5zLmpzb24iIGFzIGFuIEFwcElEIHdo
ZW4gZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0IGlzIHRydWUuCitXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbihjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+Jik7CisKIH0g
Ly8gbmFtZXNwYWNlIGZpZG8KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggOTMwNDQxZWMwN2E4YTUwZWZhZmU1NmNh
YzNiZDM5N2NmMWMwNjZlNC4uOWEyYjM0ODM2N2NiZGQ1NTgwYTk4NGRiYjdjMzc0NDEzNGMzNjIy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtNzQsNyArNzQsNyBA
QCBzdGF0aWMgQXV0aGVudGljYXRvck1hbmFnZXI6OlRyYW5zcG9ydFNldCBjb2xsZWN0VHJhbnNw
b3J0cyhjb25zdCBPcHRpb25hbDxQdWJsaQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS8vIEZJ
WE1FKDE4ODYyNCwgMTg4NjI1KTogU3VwcG9ydCBORkMgYW5kIEJMRSBhdXRoZW50aWNhdG9ycy4K
Ky8vIEZJWE1FKDE4ODYyNSk6IFN1cHBvcnQgQkxFIGF1dGhlbnRpY2F0b3JzLgogLy8gVGhlIGdv
YWwgaXMgdG8gZmluZCBhIHVuaW9uIG9mIGRpZmZlcmVudCB0cmFuc3BvcnRzIGZyb20gYWxsb3dD
cmVkZW50aWFscy4KIC8vIElmIGl0IGlzIG5vdCBzcGVjaWZpZWQgb3IgYW55IG9mIGl0cyBjcmVk
ZW50aWFscyBkb2Vzbid0IHNwZWNpZnkgaXRzIG93bi4gV2Ugc2hvdWxkIGRpc2NvdmVyIGFsbC4K
IC8vIFRoaXMgaXMgYSB2YXJpYW50IG9mIFN0ZXAuIDE4LiouNCBmcm9tIGh0dHBzOi8vd3d3Lncz
Lm9yZy9UUi93ZWJhdXRobi8jZGlzY292ZXItZnJvbS1leHRlcm5hbC1zb3VyY2UKQEAgLTk5LDIw
ICs5OSwzMCBAQCBzdGF0aWMgQXV0aGVudGljYXRvck1hbmFnZXI6OlRyYW5zcG9ydFNldCBjb2xs
ZWN0VHJhbnNwb3J0cyhjb25zdCBWZWN0b3I8UHVibGljSwogICAgICAgICAgICAgcmVzdWx0LmFk
ZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoIXJlc3VsdC5jb250YWlucyhBdXRoZW50aWNhdG9y
VHJhbnNwb3J0OjpJbnRlcm5hbCkgJiYgYWxsb3dDcmVkZW50aWFsLnRyYW5zcG9ydHMuY29udGFp
bnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWwpKQotICAgICAgICAgICAgcmVzdWx0
LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCk7Ci0gICAgICAgIGlmICghcmVz
dWx0LmNvbnRhaW5zKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYikgJiYgYWxsb3dDcmVkZW50
aWFsLnRyYW5zcG9ydHMuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKSkKLSAg
ICAgICAgICAgIHJlc3VsdC5hZGQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKTsKLSAgICAg
ICAgaWYgKCFyZXN1bHQuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKSAmJiBh
bGxvd0NyZWRlbnRpYWwudHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpOZmMpKQotICAgICAgICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpO
ZmMpOwotICAgICAgICBpZiAocmVzdWx0LnNpemUoKSA+PSBtYXhUcmFuc3BvcnROdW1iZXIpCi0g
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgdHJh
bnNwb3J0IDogYWxsb3dDcmVkZW50aWFsLnRyYW5zcG9ydHMpIHsKKyAgICAgICAgICAgIGlmICh0
cmFuc3BvcnQgPT0gQXV0aGVudGljYXRvclRyYW5zcG9ydDo6QmxlKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgcmVzdWx0LmFkZCh0cmFuc3BvcnQpOworICAgICAgICAg
ICAgaWYgKHJlc3VsdC5zaXplKCkgPj0gbWF4VHJhbnNwb3J0TnVtYmVyKQorICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KICAgICB9CiAKICAgICBBU1NFUlQocmVzdWx0
LnNpemUoKSA8IG1heFRyYW5zcG9ydE51bWJlcik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
Ly8gT25seSByb2FtaW5nIGF1dGhlbnRpY2F0b3JzIGFyZSBzdXBwb3J0ZWQgZm9yIEdvb2dsZSBs
ZWdhY3kgQXBwSUQgc3VwcG9ydC4KK3N0YXRpYyB2b2lkIHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJ
ZFN1cHBvcnRFeHRlbnNpb24oY29uc3QgT3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25z
Q2xpZW50SW5wdXRzPiYgZXh0ZW5zaW9ucywgQXV0aGVudGljYXRvck1hbmFnZXI6OlRyYW5zcG9y
dFNldCYgdHJhbnNwb3J0cykKK3sKKyAgICAvLyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmNy
ZWF0ZSBzaG91bGQgYWx3YXlzIHNldCBpdC4KKyAgICBBU1NFUlQoISFleHRlbnNpb25zKTsKKyAg
ICBpZiAoIWV4dGVuc2lvbnMtPmdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCkKKyAgICAgICAgcmV0
dXJuOworICAgIHRyYW5zcG9ydHMucmVtb3ZlKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVy
bmFsKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgQXV0aGVudGljYXRvck1hbmFnZXJJbnRlcm5hbAog
CiBBdXRoZW50aWNhdG9yTWFuYWdlcjo6QXV0aGVudGljYXRvck1hbmFnZXIoKQpAQCAtMTM3LDcg
KzE0NywxMCBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpoYW5kbGVSZXF1ZXN0KFdlYkF1
dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiBkYXRhLCBDYQogICAgIC8vIDIuIEdldCBhdmFpbGFi
bGUgdHJhbnNwb3J0cyBhbmQgc3RhcnQgZGlzY292ZXJpbmcgYXV0aGVudGljYXRvcnMgb24gdGhl
bS4KICAgICBXVEY6OnN3aXRjaE9uKG1fcGVuZGluZ1JlcXVlc3REYXRhLm9wdGlvbnMsIFsmXShj
b25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zKSB7CiAgICAg
ICAgIGluaXRUaW1lT3V0VGltZXIob3B0aW9ucy50aW1lb3V0KTsKLSAgICAgICAgc3RhcnREaXNj
b3ZlcnkoY29sbGVjdFRyYW5zcG9ydHMob3B0aW9ucy5hdXRoZW50aWNhdG9yU2VsZWN0aW9uKSk7
CisKKyAgICAgICAgYXV0byB0cmFuc3BvcnRzID0gY29sbGVjdFRyYW5zcG9ydHMob3B0aW9ucy5h
dXRoZW50aWNhdG9yU2VsZWN0aW9uKTsKKyAgICAgICAgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElk
U3VwcG9ydEV4dGVuc2lvbihvcHRpb25zLmV4dGVuc2lvbnMsIHRyYW5zcG9ydHMpOworICAgICAg
ICBzdGFydERpc2NvdmVyeShXVEZNb3ZlKHRyYW5zcG9ydHMpKTsKICAgICB9LCBbJl0oY29uc3Qg
IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucykgewogICAgICAgICBp
bml0VGltZU91dFRpbWVyKG9wdGlvbnMudGltZW91dCk7CiAgICAgICAgIHN0YXJ0RGlzY292ZXJ5
KGNvbGxlY3RUcmFuc3BvcnRzKG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0
aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcAppbmRleCA3NDNjYTI4M2NjY2JlNmRhYjA3MTAz
OThjN2IwZjg2ODQwMzc5NjIwLi44ZWRhMTFiOTFhOWM0OWY2NWE4NzQzNTAzNGU0YzhkMmU1YWM2
Yzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcApAQCAtNTIsNiAr
NTIsOCBAQCBDdGFwQXV0aGVudGljYXRvcjo6Q3RhcEF1dGhlbnRpY2F0b3Ioc3RkOjp1bmlxdWVf
cHRyPEN0YXBEcml2ZXI+JiYgZHJpdmVyLCBBdXRoZQogdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6
bWFrZUNyZWRlbnRpYWwoKQogewogICAgIEFTU0VSVCghbV9pc0Rvd25ncmFkZWQpOworICAgIGlm
IChwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKCkpCisgICAgICAgIHJl
dHVybjsKICAgICBhdXRvIGNib3JDbWQgPSBlbmNvZGVNYWtlQ3JlZGVuaXRhbFJlcXVlc3RBc0NC
T1IocmVxdWVzdERhdGEoKS5oYXNoLCBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpLCBtX2luZm8ub3B0aW9ucygpLnVzZXJW
ZXJpZmljYXRpb25BdmFpbGFiaWxpdHkoKSk7CiAgICAgbV9kcml2ZXItPnRyYW5zYWN0KFdURk1v
dmUoY2JvckNtZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMTEz
LDYgKzExNSwxNyBAQCBib29sIEN0YXBBdXRoZW50aWNhdG9yOjp0cnlEb3duZ3JhZGUoKQogICAg
IHJldHVybiB0cnVlOwogfQogCisvLyBPbmx5IFUyRiBwcm90b2NvbCBpcyBzdXBwb3J0ZWQgZm9y
IEdvb2dsZSBsZWdhY3kgQXBwSUQgc3VwcG9ydC4KK2Jvb2wgQ3RhcEF1dGhlbnRpY2F0b3I6OnBy
b2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24oKQoreworICAgIC8vIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlIHNob3VsZCBhbHdheXMgc2V0IGl0LgorICAgIGF1
dG8mIGV4dGVuc2lvbnMgPSBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpLmV4dGVuc2lvbnM7CisgICAgQVNTRVJUKCEhZXh0
ZW5zaW9ucyk7CisgICAgaWYgKGV4dGVuc2lvbnMtPmdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCkK
KyAgICAgICAgdHJ5RG93bmdyYWRlKCk7CisgICAgcmV0dXJuIGV4dGVuc2lvbnMtPmdvb2dsZUxl
Z2FjeUFwcGlkU3VwcG9ydDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oCmlu
ZGV4IGExOGRmMDQ5NGE5NzdlOTkwNWQ0ZmUzZGU2MDgyODZjZTQ3N2IwNzkuLjgwNTQxOTgxNGE2
YTIyNzUzMjAzZjgzYmM2NjJmNjdlNzdlNzkyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRo
ZW50aWNhdG9yLmgKQEAgLTUwLDYgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnRpbnVl
R2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmKTsKIAog
ICAgIGJvb2wgdHJ5RG93bmdyYWRlKCk7CisgICAgYm9vbCBwcm9jZXNzR29vZ2xlTGVnYWN5QXBw
SWRTdXBwb3J0RXh0ZW5zaW9uKCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4g
bV9kcml2ZXI7CiAgICAgZmlkbzo6QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSBtX2luZm87
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcAppbmRleCAzMWIyNDkwZTJhYzI3
MjI1MWZkOWIzNDM5NTZlNTAzZmQ0NGIzZjM2Li5iZDQyNDU5NGZiZmE1YTI2ZGUwMWNhNDdhYzIz
ZThlYThkOWUwODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKQEAg
LTE1NSw3ICsxNTUsOSBAQCB2b2lkIFUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlUmVnaXN0ZXJD
b21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKEFwZHVSZXNwb25zZQogewogICAgIHN3aXRjaCAo
YXBkdVJlc3BvbnNlLnN0YXR1cygpKSB7CiAgICAgY2FzZSBBcGR1UmVzcG9uc2U6OlN0YXR1czo6
U1dfTk9fRVJST1I6IHsKLSAgICAgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJl
c3BvbnNlKFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVl
c3REYXRhKCkub3B0aW9ucykucnAuaWQsIGFwZHVSZXNwb25zZS5kYXRhKCksIFdURjo6Z2V0PFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyku
YXR0ZXN0YXRpb24pOworICAgICAgICBhdXRvJiBvcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKKyAgICAg
ICAgYXV0byBhcHBJZCA9IHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24o
b3B0aW9ucy5leHRlbnNpb25zKTsKKyAgICAgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdp
c3RlclJlc3BvbnNlKCFhcHBJZCA/IG9wdGlvbnMucnAuaWQgOiBhcHBJZCwgYXBkdVJlc3BvbnNl
LmRhdGEoKSwgb3B0aW9ucy5hdHRlc3RhdGlvbik7CiAgICAgICAgIGlmICghcmVzcG9uc2UpIHsK
ICAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3Is
ICJDb3VsZG4ndCBwYXJzZSB0aGUgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlLiJfcyB9KTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5OTQ3YjU3NjZjZDcyYmJhZmNiNzIzZDFhNzVhNzFlY2Q3
MTY5OTU1Li5hZDgwOWRkNzNjZTJlYjRjYTU4MzUzN2NkMGYwYmJlNTkyNzFmYzUzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTktMTAtMDEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxl
LmNvbT4KKworICAgICAgICBTdXBwb3J0IGdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCBleHRlbnNp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjQy
NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU4ODc0NzM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIHRvIGNvbmZpcm0gdGhlIGdv
b2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCBleHRlbnNpb24gaXMgaWdub3JlZCBmb3IgUlAgSUQgIT0g
Z29vZ2xlLmNvbS4KKworICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1o
aWQuaHR0cHMuaHRtbDoKKwogMjAxOS0wOS0yOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIHdoZW4gcmVtb3ZpbmcgdGhlIHRhcmdl
dCBlbGVtZW50IHdoaWxlIGFuaW1hdGluZyBpdHMgYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1z
dWNjZXNzLWhpZC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLWV4cGVj
dGVkLnR4dAppbmRleCA4MDcyNTFmODY5NWRiODEyY2U0Njc0NzUyOWFmNDE4MDdiNzNhYWEyLi44
MGFmYjFiNzVlZWFhZGQ2MDM5ZDliNzQwMDU2YmJiZjViN2Y5MjcyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1
Y2Nlc3MtaGlkLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLWV4
cGVjdGVkLnR4dApAQCAtOSw0ICs5LDYgQEAgUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIHR3byBjb25zZWN1dGl2ZSByZXF1ZXN0cy4KIFBBU1MgUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBub25lIGF0dGVzdGF0aW9uIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4gCiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCiBQQVNT
IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggaW5kaXJlY3QgYXR0ZXN0YXRp
b24gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCBnb29nbGVMZWdhY3lBcHBpZFN1cHBvcnQgZXh0ZW5zaW9uIGlu
IGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0IGFuZCBhcHBpZCBleHRlbnNp
b25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vz
cy1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAppbmRleCBmNTI5Njg3
NDhiMjBkMWJiZTBiOWYzNmM0Yjg0ZjBiNGU4YWNmZjQ5Li42YThjMzU4MTNlZTJhZDcyN2JiYzU2
NjExYThiMmNiOTBhZGJhZjY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCkBAIC0yMzcsNCArMjM3LDUxIEBACiAgICAg
ICAgICAgICBjaGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsLCBmYWxzZSk7
CiAgICAgICAgIH0pOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3
aXRoIGluZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsK
KworICAgIC8vIFdoZW4gUlAgSUQgaXMgbm90IGdvb2dsZS5jb20sIGdvb2dsZUxlZ2FjeUFwcGlk
U3VwcG9ydCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdHMuCisgICAgcHJvbWlzZV90ZXN0KHQg
PT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7
CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2Fs
aG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAg
ICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAg
ICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAg
ICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwK
KyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIs
IGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uczogeyBnb29nbGVMZWdhY3lB
cHBpZFN1cHBvcnQ6IHRydWUgfSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMDAKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgY2hl
Y2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0pOworICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGdvb2dsZUxlZ2FjeUFw
cGlkU3VwcG9ydCBleHRlbnNpb24gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisg
ICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAg
ICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAg
ICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIs
CisgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVC
YXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5w
YXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0
eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9u
czogeyBnb29nbGVMZWdhY3lBcHBpZFN1cHBvcnQ6IHRydWUsIGFwcGlkOiAiIiB9LAorICAgICAg
ICAgICAgICAgIHRpbWVvdXQ6IDEwMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAg
ICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3Jl
ZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChj
cmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0IGFuZCBhcHBpZCBleHRlbnNp
b25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380089</attachid>
            <date>2019-10-03 01:49:21 -0700</date>
            <delta_ts>2019-10-03 10:39:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202427-20191003014920.patch</filename>
            <type>text/plain</type>
            <size>30337</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjIxZTFiZGZlYmE0ZGVi
ZDI4ZDRjMzlkNDRlOTY3ZDJmYWQzY2Y4NC4uN2QxNTUyMTc3NzczMzI3Y2Y3N2RlNDMxZmQwZDJi
NDY3ZDg3Y2Q0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE5LTEwLTAxICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBnb29nbGVM
ZWdhY3lBcHBpZFN1cHBvcnQgZXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI0MjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1ODg3
NDczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBnb29nbGVMZWdhY3lBcHBpZFN1cHBvcnQgZXh0ZW5z
aW9uLCB3aGVuIHNldDoKKyAgICAgICAgMSkgdXNlciBhZ2VudCBzaG91bGQgb25seSB1c2UgdGhl
IFUyRiB0cmFuc3BvcnQgcHJvdG9jb2wsCisgICAgICAgIDIpIHNob3VsZCBvbmx5IGNvbW11bmlj
YXRlIHdpdGggcm9hbWluZyBhdXRoZW50aWNhdG9ycywgYW5kCisgICAgICAgIDMpIHNob3VsZCB1
c2UgYSBoYXJkLWNvZGVkIGFwcElEIG9mIGh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL3NlY3VyaXR5
a2V5L29yaWdpbnMuanNvbi4KKyAgICAgICAgVG8gYmUgbm90aWNlZCBhcyB0aGUgbmFtZSBpbXBs
aWVzLCB0aGlzIGV4dGVuc2lvbiBpcyBleGNsdXNpdmVseSBmb3IgUlAgSUQgPSBnb29nbGUuY29t
LgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIHdpc2UsIGFsbCBvcGVyYXRpb25zIGFyZSBjYXB0
dXJlZCBpbiBtZXRob2RzIHdpdGggbmFtZSBwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0
RXh0ZW5zaW9uLgorICAgICAgICAxKSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgdGFrZXMgY2Fy
ZSBvZiBzZXR0aW5nIHRoZSB2YWx1ZS4KKyAgICAgICAgMikgVTJmQ29tbWFuZENvbnN0cnVjdG9y
IHRha2VzIGNhcmUgb2YgaGFyZCBjb2RpbmcgdGhlIEFwcElELgorICAgICAgICAzKSBBdXRoZW50
aWNhdG9yTWFuYWdlciB0YWtlcyBjYXJlIG9mIHJlbW92aW5nIEF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQ6OkludGVybmFsIGZyb20gVHJhbnNwb3J0U2V0LCBzbyBzdGFydERpc2NvdmVyeQorICAgICAg
ICB3aWxsIG5vdCBwb2tlIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3JzLgorICAgICAgICA0KSBDdGFw
QXV0aGVudGljYXRvciB0YWtlcyBjYXJlIG9mIGRvd25ncmFkaW5nIHRvIFUyZkF1dGhlbnRpY2F0
b3IuCisgICAgICAgIDUpIFUyZkF1dGhlbnRpY2F0b3IgdGFrZXMgY2FyZSBvZiBzZXR0aW5nIHRo
ZSBBcHBJRCBpbiB0aGUgcmVzcG9uc2UuCisKKyAgICAgICAgUGFydGlhbGx5IGNvdmVyZWQgYnkg
bmV3IHRlc3QgY2FzZXMgaW4gZXhpc3RpbmcgdGVzdHMsIGFuZCByZW1haW5pbmcgd2lsbCBiZSBj
b3ZlcmVkIGJ5IG1hbnVhbCB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmg6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM6OmRlY29k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRJbnB1dHMuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckludGVybmFsOjpwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoZmlkbzo6Y29udmVy
dFRvVTJmUmVnaXN0ZXJDb21tYW5kKToKKyAgICAgICAgKGZpZG86OnByb2Nlc3NHb29nbGVMZWdh
Y3lBcHBJZFN1cHBvcnRFeHRlbnNpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlk
by9VMmZDb21tYW5kQ29uc3RydWN0b3IuaDoKKwogMjAxOS0wOS0yNyAgS2VpdGggUm9sbGluICA8
a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29hbGVzY2Ugb3IgcmVtb3ZlIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2M0MzczYWE5OWNlZGIz
NjRmNmMwY2M1NWNjNDViZTI0ZGMzZTQ3YS4uYWM5NmEzNmZkODYyOGRkNWI4MmZkYWRhYzlhZmVk
YjllZWRkYTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0xMC0wMSAgSmlld2Vu
IFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgZ29vZ2xlTGVn
YWN5QXBwaWRTdXBwb3J0IGV4dGVuc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNDI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTg4NzQ3
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VySW50ZXJuYWw6OmNvbGxlY3RUcmFuc3Bv
cnRzKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXJJbnRlcm5hbDo6cHJv
Y2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpoYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN0YXBBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChX
ZWJLaXQ6OkN0YXBBdXRoZW50aWNhdG9yOjpwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0
RXh0ZW5zaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9D
dGFwQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpVMmZBdXRoZW50
aWNhdG9yOjpjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisK
IDIwMTktMDktMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBNb3ZlIERvd25sb2FkTW9uaXRvciB0ZXN0IHNwZWVkIG11bHRpcGxpZXIgZnJv
bSBXZWJQcm9jZXNzUG9vbCB0byBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVu
c2lvbnNDbGllbnRJbnB1dHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmgKaW5kZXggOGUyZDg0NzM4MGZhNzk1
MzRhNWJlOTA5OGYxOWFkMTI5YzIzODUzNi4uZGJiZWUzM2IzNzRlM2JlMmU1MDE1ZGU3NWVhMGY2
MzhkNGExNzc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5o
CkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEF1dGhlbnRp
Y2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cyB7CiAgICAgU3RyaW5nIGFwcGlkOworICAgIGJv
b2wgZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+
IGRlY29kZShEZWNvZGVyJik7CkBAIC00MSw3ICs0Miw3IEBAIHN0cnVjdCBBdXRoZW50aWNhdGlv
bkV4dGVuc2lvbnNDbGllbnRJbnB1dHMgewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQg
QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGFwcGlkOworICAgIGVuY29kZXIgPDwgYXBw
aWQgPDwgZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgpAQCAtNTUsNiArNTYsMTIgQEAgT3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25z
Q2xpZW50SW5wdXRzPiBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnAKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXN1bHQuYXBwaWQgPSBXVEZNb3ZlKCphcHBpZCk7
CiAKKyAgICBPcHRpb25hbDxib29sPiBnb29nbGVMZWdhY3lBcHBpZFN1cHBvcnQ7CisgICAgZGVj
b2RlciA+PiBnb29nbGVMZWdhY3lBcHBpZFN1cHBvcnQ7CisgICAgaWYgKCFnb29nbGVMZWdhY3lB
cHBpZFN1cHBvcnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0Lmdv
b2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCA9IFdURk1vdmUoKmdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9y
dCk7CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudElucHV0cy5pZGwKaW5kZXggN2U5ZTk3YjhkZDI3NDc2OTRlYTdkZmVjMDlkZTY4
MWY0YTI0ZTNiMC4uOTcxYmMxYTNjZWY2NGE0MWY3MDlkNmVjOGM0NDA2OGU2ZWFlYTA3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmlkbApAQCAtMjcsNCAr
MjcsNiBAQAogICAgIENvbmRpdGlvbmFsPVdFQl9BVVRITiwKIF0gZGljdGlvbmFyeSBBdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMgewogICAgIFVTVlN0cmluZyBhcHBpZDsKKyAg
ICAvLyBGb3IgR29vZ2xlIHRvIHR1cm4gb2ZmIHRoZSBsZWdhY3kgQXBwSUQgc3VwcG9ydC4KKyAg
ICBib29sZWFuIGdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCA9IHRydWU7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3IuY3BwCmluZGV4IDc0N2FhYjMyZjMyOGZkMTEyMzI5YjY4NTkyZWNiOGJhOTNmOWY5
MzUuLjkxOTM0ZThkNDJjZGEyZmNmOTI1NjlhZWUwNzRhNWMwODYyNTM4MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgZW51bSBjbGFzcyBDbGllbnREYXRhVHlw
ZSB7CiAgICAgR2V0CiB9OwogCi0vLyBGSVhNRSgxODE5NDgpOiBBZGQgdG9rZW4gYmluZGluZyBJ
RCBhbmQgZXh0ZW5zaW9ucy4KKy8vIEZJWE1FKDE4MTk0OCk6IEFkZCB0b2tlbiBiaW5kaW5nIElE
Lgogc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gcHJvZHVjZUNsaWVudERhdGFKc29uKENsaWVudERh
dGFUeXBlIHR5cGUsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgY2hhbGxlbmdlLCBjb25zdCBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKQogewogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVh
dGUoKTsKQEAgLTExMiw2ICsxMTIsMTYgQEAgc3RhdGljIFN0cmluZyBwcm9jZXNzQXBwSWRFeHRl
bnNpb24oY29uc3QgU2VjdXJpdHlPcmlnaW4mIGZhY2V0SWQsIGNvbnN0IFN0cmluZyYKICAgICBy
ZXR1cm4gYXBwSWQ7CiB9CiAKKy8vIFRoZSBkZWZhdWx0IGJlaGF2aW91ciBmb3IgZ29vZ2xlLmNv
bSBpcyB0byBhbHdheXMgdHVybiBvbiB0aGUgbGVnYWN5IEFwcElEIHN1cHBvcnQuCitzdGF0aWMg
Ym9vbCBwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKGNvbnN0IE9wdGlv
bmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4mIGV4dGVuc2lvbnMsIGNv
bnN0IFN0cmluZyYgcnBJZCkKK3sKKyAgICBpZiAocnBJZCAhPSAiZ29vZ2xlLmNvbSJfcykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZXh0ZW5zaW9ucykKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIGV4dGVuc2lvbnMtPmdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydDsK
K30KKwogfSAvLyBuYW1lc3BhY2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWwKIAog
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ioc3RkOjp1
bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4mJiBjbGllbnQpCkBAIC0x
MjksNyArMTM5LDYgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmNyZWF0ZShjb25z
dCBTZWN1cml0eU9yaWdpbiYgY2FsbGVyT3JpZ2luLCBjb25zdAogICAgIHVzaW5nIG5hbWVzcGFj
ZSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDsKIAogICAgIC8vIFRoZSBmb2xsb3dp
bmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2NyZWF0ZUNyZWRl
bnRpYWwgYXMgb2YgNSBEZWNlbWJlciAyMDE3LgotICAgIC8vIEV4dGVuc2lvbnMgYXJlIG5vdCBz
dXBwb3J0ZWQuIFNraXAgU3RlcCAxMS0xMi4KICAgICAvLyBTdGVwIDEsIDMsIDE2IGFyZSBoYW5k
bGVkIGJ5IHRoZSBjYWxsZXIuCiAgICAgLy8gU3RlcCAyLgogICAgIGlmICghc2FtZU9yaWdpbldp
dGhBbmNlc3RvcnMpIHsKQEAgLTE2MSw2ICsxNzAsMTAgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3I6OmNyZWF0ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgY2FsbGVyT3JpZ2luLCBjb25z
dAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gU3RlcCAxMS0xMi4KKyAgICAvLyBP
bmx5IEdvb2dsZSBMZWdhY3kgQXBwSUQgU3VwcG9ydCBFeHRlbnNpb24gaXMgc3VwcG9ydGVkLgor
ICAgIG9wdGlvbnMuZXh0ZW5zaW9ucyA9IEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElu
cHV0cyB7IFN0cmluZygpLCBwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9u
KG9wdGlvbnMuZXh0ZW5zaW9ucywgb3B0aW9ucy5ycC5pZCkgfTsKKwogICAgIC8vIFN0ZXAgMTMt
MTUuCiAgICAgYXV0byBjbGllbnREYXRhSnNvbiA9IHByb2R1Y2VDbGllbnREYXRhSnNvbihDbGll
bnREYXRhVHlwZTo6Q3JlYXRlLCBvcHRpb25zLmNoYWxsZW5nZSwgY2FsbGVyT3JpZ2luKTsKICAg
ICBhdXRvIGNsaWVudERhdGFKc29uSGFzaCA9IHByb2R1Y2VDbGllbnREYXRhSnNvbkhhc2goY2xp
ZW50RGF0YUpzb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaAppbmRl
eCBkNTQ4YWFkNWIwNzg2ZDMzOTdhYTI2YzU1MDM2NjBiZTEzMGQwYWViLi4zNzJkZjFiOTRlOGJm
NjQwMjMzMGU1NDVlZDQ3NTY4MGI3NDIzZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMuaApAQCAtODYsNyArODYsNyBAQCBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucyB7CiAgICAgVmVjdG9yPFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlw
dG9yPiBleGNsdWRlQ3JlZGVudGlhbHM7CiAgICAgT3B0aW9uYWw8QXV0aGVudGljYXRvclNlbGVj
dGlvbkNyaXRlcmlhPiBhdXRoZW50aWNhdG9yU2VsZWN0aW9uOwogICAgIEF0dGVzdGF0aW9uQ29u
dmV5YW5jZVByZWZlcmVuY2UgYXR0ZXN0YXRpb247Ci0gICAgT3B0aW9uYWw8QXV0aGVudGljYXRp
b25FeHRlbnNpb25zQ2xpZW50SW5wdXRzPiBleHRlbnNpb25zOyAvLyBBIHBsYWNlIGhvbGRlciwg
YnV0IG5ldmVyIHVzZWQuCisgICAgbXV0YWJsZSBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVu
c2lvbnNDbGllbnRJbnB1dHM+IGV4dGVuc2lvbnM7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+
IGRlY29kZShEZWNvZGVyJik7CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAg
ICBlbmNvZGVyIDw8IHJwLmlkIDw8IHJwLm5hbWUgPDwgcnAuaWNvbjsKICAgICBlbmNvZGVyIDw8
IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1c2VyLmlkLmxlbmd0aCgpKTsKICAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YSh1c2VyLmlkLmRhdGEoKSwgdXNlci5pZC5sZW5ndGgoKSwgMSk7
Ci0gICAgZW5jb2RlciA8PCB1c2VyLmRpc3BsYXlOYW1lIDw8IHVzZXIubmFtZSA8PCB1c2VyLmlj
b24gPDwgcHViS2V5Q3JlZFBhcmFtcyA8PCB0aW1lb3V0IDw8IGV4Y2x1ZGVDcmVkZW50aWFscyA8
PCBhdXRoZW50aWNhdG9yU2VsZWN0aW9uIDw8IGF0dGVzdGF0aW9uOworICAgIGVuY29kZXIgPDwg
dXNlci5kaXNwbGF5TmFtZSA8PCB1c2VyLm5hbWUgPDwgdXNlci5pY29uIDw8IHB1YktleUNyZWRQ
YXJhbXMgPDwgdGltZW91dCA8PCBleGNsdWRlQ3JlZGVudGlhbHMgPDwgYXV0aGVudGljYXRvclNl
bGVjdGlvbiA8PCBhdHRlc3RhdGlvbiA8PCBleHRlbnNpb25zOwogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgpAQCAtMTg5LDI5ICsxODksMTggQEAgT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucz4gUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczoK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXN1bHQuYXR0ZXN0YXRpb24gPSBX
VEZNb3ZlKCphdHRlc3RhdGlvbik7CiAKKyAgICBPcHRpb25hbDxPcHRpb25hbDxBdXRoZW50aWNh
dGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+PiBleHRlbnNpb25zOworICAgIGRlY29kZXIgPj4g
ZXh0ZW5zaW9uczsKKyAgICBpZiAoIWV4dGVuc2lvbnMpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmVzdWx0LmV4dGVuc2lvbnMgPSBXVEZNb3ZlKCpleHRlbnNpb25zKTsKKwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNw
YWNlIFdURiB7Ci0vLyBOb3QgZXZlcnkgbWVtYmVyIGlzIGNvcGllZC4KLXRlbXBsYXRlPD4gc3Ry
dWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFdlYkNvcmU6OlB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+IHsKLSAgICB0eXBlZGVmIFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgVHlwZTsKLSAgICBzdGF0aWMgVHlwZSBjb3B5
KGNvbnN0IFR5cGUmIHNvdXJjZSkKLSAgICB7Ci0gICAgICAgIFR5cGUgcmVzdWx0OwotICAgICAg
ICByZXN1bHQucnAubmFtZSA9IHNvdXJjZS5ycC5uYW1lLmlzb2xhdGVkQ29weSgpOwotICAgICAg
ICByZXN1bHQucnAuaWNvbiA9IHNvdXJjZS5ycC5pY29uLmlzb2xhdGVkQ29weSgpOwotICAgICAg
ICByZXN1bHQucnAuaWQgPSBzb3VyY2UucnAuaWQuaXNvbGF0ZWRDb3B5KCk7Ci0KLSAgICAgICAg
cmVzdWx0LnVzZXIubmFtZSA9IHNvdXJjZS51c2VyLm5hbWUuaXNvbGF0ZWRDb3B5KCk7Ci0gICAg
ICAgIHJlc3VsdC51c2VyLmljb24gPSBzb3VyY2UudXNlci5pY29uLmlzb2xhdGVkQ29weSgpOwot
ICAgICAgICByZXN1bHQudXNlci5kaXNwbGF5TmFtZSA9IHNvdXJjZS51c2VyLmRpc3BsYXlOYW1l
Lmlzb2xhdGVkQ29weSgpOwotICAgICAgICByZXN1bHQudXNlci5pZFZlY3RvciA9IHNvdXJjZS51
c2VyLmlkVmVjdG9yOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLX07CiAKIHRlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9uczo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+IHsKICAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzPApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcAppbmRleCA2MTY1Yjg4MTRj
M2RkNDA1YTE2MDNiYjJkY2JjYzI2YmM2YTc4NmYzLi5mMmY5ZGMzMTRjOTg5NGY3MjM0YjM2ZjQ5
Mjk5NjI2ODg4NjE2ZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcApAQCAtMTAzLDcg
KzEwMyw4IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmUmVnaXN0ZXJD
b21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpCiAgICAgaWYgKCFpc0NvbnZlcnRpYmxl
VG9VMmZSZWdpc3RlckNvbW1hbmQocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKLSAgICByZXR1cm4gY29uc3RydWN0VTJmUmVnaXN0ZXJDb21tYW5kKHByb2R1Y2VScElk
SGFzaChyZXF1ZXN0LnJwLmlkKSwgY2xpZW50RGF0YUhhc2gpOworICAgIGF1dG8gYXBwSWQgPSBw
cm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKHJlcXVlc3QuZXh0ZW5zaW9u
cyk7CisgICAgcmV0dXJuIGNvbnN0cnVjdFUyZlJlZ2lzdGVyQ29tbWFuZChwcm9kdWNlUnBJZEhh
c2goIWFwcElkID8gcmVxdWVzdC5ycC5pZCA6IGFwcElkKSwgY2xpZW50RGF0YUhhc2gpOwogfQog
CiBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRUb1UyZkNoZWNrT25seVNpZ25Db21t
YW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIHJlcXVlc3QsIGNvbnN0IFB1YmxpY0tleUNyZWRl
bnRpYWxEZXNjcmlwdG9yJiBrZXlIYW5kbGUpCkBAIC0xMzAsNiArMTMxLDE1IEBAIFZlY3Rvcjx1
aW50OF90PiBjb25zdHJ1Y3RCb2d1c1UyZlJlZ2lzdHJhdGlvbkNvbW1hbmQoKQogICAgIHJldHVy
biBjb25zdHJ1Y3RVMmZSZWdpc3RlckNvbW1hbmQoY29udmVydEJ5dGVzVG9WZWN0b3Ioa0JvZ3Vz
QXBwUGFyYW0sIHNpemVvZihrQm9ndXNBcHBQYXJhbSkpLCBjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcihr
Qm9ndXNDaGFsbGVuZ2UsIHNpemVvZihrQm9ndXNDaGFsbGVuZ2UpKSk7CiB9CiAKK1N0cmluZyBw
cm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKGNvbnN0IE9wdGlvbmFsPEF1
dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4mIGV4dGVuc2lvbnMpCit7CisgICAg
Ly8gQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUgc2hvdWxkIGFsd2F5cyBzZXQgaXQu
CisgICAgQVNTRVJUKCEhZXh0ZW5zaW9ucyk7CisgICAgaWYgKCFleHRlbnNpb25zLT5nb29nbGVM
ZWdhY3lBcHBpZFN1cHBvcnQpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4g
Imh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL3NlY3VyaXR5a2V5L29yaWdpbnMuanNvbiJfczsKK30K
KwogfSAvLyBuYW1lc3BhY2UgZmlkbwogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5k
Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZD
b21tYW5kQ29uc3RydWN0b3IuaAppbmRleCBlZWJlMjkyZmYyYWM0N2ZmY2EzNzk0MjBkNWRlYWFm
ZTc0NmM5ZDRkLi4yODQyNzYyZWQxYzQwZWQyNjRiOTAxYzU3NzEyM2MyMDgxZWE5ZDk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENv
bnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZkNvbW1hbmRDb25zdHJ1Y3Rvci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEF1dGhlbnRpY2F0aW9uRXh0
ZW5zaW9uc0NsaWVudElucHV0czsKIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zOwogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOwogc3RydWN0IFB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczsKQEAgLTY2LDYgKzY3LDkgQEAgV0VCQ09S
RV9FWFBPUlQgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZTaWduQ29tbWFu
ZChjb25zdCBWZWN0b3I8dWkKIAogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvbnN0
cnVjdEJvZ3VzVTJmUmVnaXN0cmF0aW9uQ29tbWFuZCgpOwogCisvLyBSZXR1cm5zICJodHRwczov
L3d3dy5nc3RhdGljLmNvbS9zZWN1cml0eWtleS9vcmlnaW5zLmpzb24iIGFzIGFuIEFwcElEIHdo
ZW4gZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0IGlzIHRydWUuCitXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbihjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+Jik7CisKIH0g
Ly8gbmFtZXNwYWNlIGZpZG8KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggOTMwNDQxZWMwN2E4YTUwZWZhZmU1NmNh
YzNiZDM5N2NmMWMwNjZlNC4uOWEyYjM0ODM2N2NiZGQ1NTgwYTk4NGRiYjdjMzc0NDEzNGMzNjIy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtNzQsNyArNzQsNyBA
QCBzdGF0aWMgQXV0aGVudGljYXRvck1hbmFnZXI6OlRyYW5zcG9ydFNldCBjb2xsZWN0VHJhbnNw
b3J0cyhjb25zdCBPcHRpb25hbDxQdWJsaQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS8vIEZJ
WE1FKDE4ODYyNCwgMTg4NjI1KTogU3VwcG9ydCBORkMgYW5kIEJMRSBhdXRoZW50aWNhdG9ycy4K
Ky8vIEZJWE1FKDE4ODYyNSk6IFN1cHBvcnQgQkxFIGF1dGhlbnRpY2F0b3JzLgogLy8gVGhlIGdv
YWwgaXMgdG8gZmluZCBhIHVuaW9uIG9mIGRpZmZlcmVudCB0cmFuc3BvcnRzIGZyb20gYWxsb3dD
cmVkZW50aWFscy4KIC8vIElmIGl0IGlzIG5vdCBzcGVjaWZpZWQgb3IgYW55IG9mIGl0cyBjcmVk
ZW50aWFscyBkb2Vzbid0IHNwZWNpZnkgaXRzIG93bi4gV2Ugc2hvdWxkIGRpc2NvdmVyIGFsbC4K
IC8vIFRoaXMgaXMgYSB2YXJpYW50IG9mIFN0ZXAuIDE4LiouNCBmcm9tIGh0dHBzOi8vd3d3Lncz
Lm9yZy9UUi93ZWJhdXRobi8jZGlzY292ZXItZnJvbS1leHRlcm5hbC1zb3VyY2UKQEAgLTk5LDIw
ICs5OSwzMCBAQCBzdGF0aWMgQXV0aGVudGljYXRvck1hbmFnZXI6OlRyYW5zcG9ydFNldCBjb2xs
ZWN0VHJhbnNwb3J0cyhjb25zdCBWZWN0b3I8UHVibGljSwogICAgICAgICAgICAgcmVzdWx0LmFk
ZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoIXJlc3VsdC5jb250YWlucyhBdXRoZW50aWNhdG9y
VHJhbnNwb3J0OjpJbnRlcm5hbCkgJiYgYWxsb3dDcmVkZW50aWFsLnRyYW5zcG9ydHMuY29udGFp
bnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWwpKQotICAgICAgICAgICAgcmVzdWx0
LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCk7Ci0gICAgICAgIGlmICghcmVz
dWx0LmNvbnRhaW5zKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYikgJiYgYWxsb3dDcmVkZW50
aWFsLnRyYW5zcG9ydHMuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKSkKLSAg
ICAgICAgICAgIHJlc3VsdC5hZGQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKTsKLSAgICAg
ICAgaWYgKCFyZXN1bHQuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKSAmJiBh
bGxvd0NyZWRlbnRpYWwudHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpOZmMpKQotICAgICAgICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpO
ZmMpOwotICAgICAgICBpZiAocmVzdWx0LnNpemUoKSA+PSBtYXhUcmFuc3BvcnROdW1iZXIpCi0g
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgdHJh
bnNwb3J0IDogYWxsb3dDcmVkZW50aWFsLnRyYW5zcG9ydHMpIHsKKyAgICAgICAgICAgIGlmICh0
cmFuc3BvcnQgPT0gQXV0aGVudGljYXRvclRyYW5zcG9ydDo6QmxlKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgcmVzdWx0LmFkZCh0cmFuc3BvcnQpOworICAgICAgICAg
ICAgaWYgKHJlc3VsdC5zaXplKCkgPj0gbWF4VHJhbnNwb3J0TnVtYmVyKQorICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KICAgICB9CiAKICAgICBBU1NFUlQocmVzdWx0
LnNpemUoKSA8IG1heFRyYW5zcG9ydE51bWJlcik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
Ly8gT25seSByb2FtaW5nIGF1dGhlbnRpY2F0b3JzIGFyZSBzdXBwb3J0ZWQgZm9yIEdvb2dsZSBs
ZWdhY3kgQXBwSUQgc3VwcG9ydC4KK3N0YXRpYyB2b2lkIHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJ
ZFN1cHBvcnRFeHRlbnNpb24oY29uc3QgT3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25z
Q2xpZW50SW5wdXRzPiYgZXh0ZW5zaW9ucywgQXV0aGVudGljYXRvck1hbmFnZXI6OlRyYW5zcG9y
dFNldCYgdHJhbnNwb3J0cykKK3sKKyAgICAvLyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmNy
ZWF0ZSBzaG91bGQgYWx3YXlzIHNldCBpdC4KKyAgICBBU1NFUlQoISFleHRlbnNpb25zKTsKKyAg
ICBpZiAoIWV4dGVuc2lvbnMtPmdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCkKKyAgICAgICAgcmV0
dXJuOworICAgIHRyYW5zcG9ydHMucmVtb3ZlKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVy
bmFsKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgQXV0aGVudGljYXRvck1hbmFnZXJJbnRlcm5hbAog
CiBBdXRoZW50aWNhdG9yTWFuYWdlcjo6QXV0aGVudGljYXRvck1hbmFnZXIoKQpAQCAtMTM3LDcg
KzE0NywxMCBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpoYW5kbGVSZXF1ZXN0KFdlYkF1
dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiBkYXRhLCBDYQogICAgIC8vIDIuIEdldCBhdmFpbGFi
bGUgdHJhbnNwb3J0cyBhbmQgc3RhcnQgZGlzY292ZXJpbmcgYXV0aGVudGljYXRvcnMgb24gdGhl
bS4KICAgICBXVEY6OnN3aXRjaE9uKG1fcGVuZGluZ1JlcXVlc3REYXRhLm9wdGlvbnMsIFsmXShj
b25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zKSB7CiAgICAg
ICAgIGluaXRUaW1lT3V0VGltZXIob3B0aW9ucy50aW1lb3V0KTsKLSAgICAgICAgc3RhcnREaXNj
b3ZlcnkoY29sbGVjdFRyYW5zcG9ydHMob3B0aW9ucy5hdXRoZW50aWNhdG9yU2VsZWN0aW9uKSk7
CisKKyAgICAgICAgYXV0byB0cmFuc3BvcnRzID0gY29sbGVjdFRyYW5zcG9ydHMob3B0aW9ucy5h
dXRoZW50aWNhdG9yU2VsZWN0aW9uKTsKKyAgICAgICAgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElk
U3VwcG9ydEV4dGVuc2lvbihvcHRpb25zLmV4dGVuc2lvbnMsIHRyYW5zcG9ydHMpOworICAgICAg
ICBzdGFydERpc2NvdmVyeShXVEZNb3ZlKHRyYW5zcG9ydHMpKTsKICAgICB9LCBbJl0oY29uc3Qg
IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucykgewogICAgICAgICBp
bml0VGltZU91dFRpbWVyKG9wdGlvbnMudGltZW91dCk7CiAgICAgICAgIHN0YXJ0RGlzY292ZXJ5
KGNvbGxlY3RUcmFuc3BvcnRzKG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0
aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcAppbmRleCA3NDNjYTI4M2NjY2JlNmRhYjA3MTAz
OThjN2IwZjg2ODQwMzc5NjIwLi44ZWRhMTFiOTFhOWM0OWY2NWE4NzQzNTAzNGU0YzhkMmU1YWM2
Yzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcApAQCAtNTIsNiAr
NTIsOCBAQCBDdGFwQXV0aGVudGljYXRvcjo6Q3RhcEF1dGhlbnRpY2F0b3Ioc3RkOjp1bmlxdWVf
cHRyPEN0YXBEcml2ZXI+JiYgZHJpdmVyLCBBdXRoZQogdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6
bWFrZUNyZWRlbnRpYWwoKQogewogICAgIEFTU0VSVCghbV9pc0Rvd25ncmFkZWQpOworICAgIGlm
IChwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKCkpCisgICAgICAgIHJl
dHVybjsKICAgICBhdXRvIGNib3JDbWQgPSBlbmNvZGVNYWtlQ3JlZGVuaXRhbFJlcXVlc3RBc0NC
T1IocmVxdWVzdERhdGEoKS5oYXNoLCBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpLCBtX2luZm8ub3B0aW9ucygpLnVzZXJW
ZXJpZmljYXRpb25BdmFpbGFiaWxpdHkoKSk7CiAgICAgbV9kcml2ZXItPnRyYW5zYWN0KFdURk1v
dmUoY2JvckNtZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMTEz
LDYgKzExNSwxNyBAQCBib29sIEN0YXBBdXRoZW50aWNhdG9yOjp0cnlEb3duZ3JhZGUoKQogICAg
IHJldHVybiB0cnVlOwogfQogCisvLyBPbmx5IFUyRiBwcm90b2NvbCBpcyBzdXBwb3J0ZWQgZm9y
IEdvb2dsZSBsZWdhY3kgQXBwSUQgc3VwcG9ydC4KK2Jvb2wgQ3RhcEF1dGhlbnRpY2F0b3I6OnBy
b2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24oKQoreworICAgIC8vIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlIHNob3VsZCBhbHdheXMgc2V0IGl0LgorICAgIGF1
dG8mIGV4dGVuc2lvbnMgPSBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpLmV4dGVuc2lvbnM7CisgICAgQVNTRVJUKCEhZXh0
ZW5zaW9ucyk7CisgICAgaWYgKGV4dGVuc2lvbnMtPmdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCkK
KyAgICAgICAgdHJ5RG93bmdyYWRlKCk7CisgICAgcmV0dXJuIGV4dGVuc2lvbnMtPmdvb2dsZUxl
Z2FjeUFwcGlkU3VwcG9ydDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oCmlu
ZGV4IGExOGRmMDQ5NGE5NzdlOTkwNWQ0ZmUzZGU2MDgyODZjZTQ3N2IwNzkuLjgwNTQxOTgxNGE2
YTIyNzUzMjAzZjgzYmM2NjJmNjdlNzdlNzkyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRo
ZW50aWNhdG9yLmgKQEAgLTUwLDYgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnRpbnVl
R2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmKTsKIAog
ICAgIGJvb2wgdHJ5RG93bmdyYWRlKCk7CisgICAgYm9vbCBwcm9jZXNzR29vZ2xlTGVnYWN5QXBw
SWRTdXBwb3J0RXh0ZW5zaW9uKCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4g
bV9kcml2ZXI7CiAgICAgZmlkbzo6QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSBtX2luZm87
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcAppbmRleCAzMWIyNDkwZTJhYzI3
MjI1MWZkOWIzNDM5NTZlNTAzZmQ0NGIzZjM2Li5iZDQyNDU5NGZiZmE1YTI2ZGUwMWNhNDdhYzIz
ZThlYThkOWUwODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKQEAg
LTE1NSw3ICsxNTUsOSBAQCB2b2lkIFUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlUmVnaXN0ZXJD
b21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKEFwZHVSZXNwb25zZQogewogICAgIHN3aXRjaCAo
YXBkdVJlc3BvbnNlLnN0YXR1cygpKSB7CiAgICAgY2FzZSBBcGR1UmVzcG9uc2U6OlN0YXR1czo6
U1dfTk9fRVJST1I6IHsKLSAgICAgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdpc3RlclJl
c3BvbnNlKFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVl
c3REYXRhKCkub3B0aW9ucykucnAuaWQsIGFwZHVSZXNwb25zZS5kYXRhKCksIFdURjo6Z2V0PFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyku
YXR0ZXN0YXRpb24pOworICAgICAgICBhdXRvJiBvcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKKyAgICAg
ICAgYXV0byBhcHBJZCA9IHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24o
b3B0aW9ucy5leHRlbnNpb25zKTsKKyAgICAgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdp
c3RlclJlc3BvbnNlKCFhcHBJZCA/IG9wdGlvbnMucnAuaWQgOiBhcHBJZCwgYXBkdVJlc3BvbnNl
LmRhdGEoKSwgb3B0aW9ucy5hdHRlc3RhdGlvbik7CiAgICAgICAgIGlmICghcmVzcG9uc2UpIHsK
ICAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3Is
ICJDb3VsZG4ndCBwYXJzZSB0aGUgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlLiJfcyB9KTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAzMzZkZDZmMmQ4ZTU5Y2FlNjQ4Y2I4ZTJkNmIwOWE5MGI5ZTJmN2NlLi5lNDE4
NTRjMDFkNDFlZDVlMjg0NjNjN2Q0YTdhMjY4MDBhNjcwZTNlIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMTAt
MDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0
IGdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjQyNworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTU4ODc0NzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkcyBhbiBBUEkgdGVzdCBmb3IgZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0IGV4dGVu
c2lvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERh
dGEuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVTJmQ29tbWFuZENv
bnN0cnVjdG9yVGVzdC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjb25zdHJ1Y3RNYWtl
Q3JlZGVudGlhbFJlcXVlc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y29uc3RydWN0TWFr
ZUNyZWRlbnRpYWxSZXF1ZXN0V2l0aEdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOS0wOS0zMCAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgRG93bmxvYWRNb25pdG9y
IHRlc3Qgc3BlZWQgbXVsdGlwbGllciBmcm9tIFdlYlByb2Nlc3NQb29sIHRvIFdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvRmlkb1Rlc3REYXRhLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlkb1Rlc3REYXRhLmgKaW5kZXggMDA4NmU2ZTA1OTMzODIwMWE0YmRmODQyN2M3MDczNTI2
MTU0NjQ4OC4uZDhmZGQwZjdmNTExZDhhNDhjZTA2M2QyMWFkNzQ1NzRlZjJkYjRiNCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEuaApAQCAt
NjYsNiArNjYsMjMgQEAgY29uc3RleHByIHVpbnQ4X3Qga1UyZlJlZ2lzdGVyQ29tbWFuZEFwZHVb
XSA9IHsKICAgICAweDAwLCAweDAwLAogfTsKIAorY29uc3RleHByIHVpbnQ4X3Qga1UyZlJlZ2lz
dGVyQ29tbWFuZEFwZHVXaXRoR29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0W10gPSB7CisgICAgLy8g
Q0xBLCBJTlMsIFAxLCBQMiBBUERVIGluc3RydWN0aW9ucworICAgIDB4MDAsIDB4MDEsIDB4MDMs
IDB4MDAsCisgICAgLy8gRGF0YSBsZW5ndGggaW4gMyBieXRlcyBpbiBiaWcgZW5kaWFuIG9yZGVy
LgorICAgIDB4MDAsIDB4MDAsIDB4NDAsCisgICAgLy8gQ2hhbGxlbmdlIHBhcmFtZXRlciAtLSBz
ZWUga0NsaWVudERhdGFIYXNoCisgICAgMHg2OCwgMHg3MSwgMHgzNCwgMHg5NiwgMHg4MiwgMHgy
MiwgMHhlYywgMHgxNywgMHgyMCwgMHgyZSwgMHg0MiwKKyAgICAweDUwLCAweDVmLCAweDhlLCAw
eGQyLCAweGIxLCAweDZhLCAweGUyLCAweDJmLCAweDE2LCAweGJiLCAweDA1LAorICAgIDB4Yjgs
IDB4OGMsIDB4MjUsIDB4ZGIsIDB4OWUsIDB4NjAsIDB4MjYsIDB4NDUsIDB4ZjEsIDB4NDEsCisg
ICAgLy8gQXBwbGljYXRpb24gcGFyYW1ldGVyCisgICAgMHhBNSwgMHg0NiwgMHg3MiwgMHhCMiwg
MHgyMiwgMHhDNCwgMHhDRiwgMHg5NSwgMHhFMSwgMHg1MSwgMHhFRCwKKyAgICAweDhELCAweDRE
LCAweDNDLCAweDc2LCAweDdBLCAweDZDLCAweEMzLCAweDQ5LCAweDQzLCAweDU5LCAweDQzLAor
ICAgIDB4NzksIDB4NEUsIDB4ODgsIDB4NEYsIDB4M0QsIDB4MDIsIDB4M0EsIDB4ODIsIDB4Mjks
IDB4RkQsCisgICAgLy8gTWF4IHJlc3BvbnNlIGxlbmd0aAorICAgIDB4MDAsIDB4MDAsCit9Owor
CiAvLyBTYW1wbGUgVTJGIHNpZ24gcmVxdWVzdCBwYXJhbWV0ZXJzIHVzZWQgaW4gZXhhbXBsZSA3
IG9mIHRoZSBDVEFQIHNwZWMuCiAvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlk
by12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wt
djIuMC1wcy0yMDE3MDkyNy5odG1sI3VzaW5nLXRoZS1jdGFwMi1hdXRoZW50aWNhdG9ybWFrZWNy
ZWRlbnRpYWwtY29tbWFuZC13aXRoLWN0YXAxLXUyZi1hdXRoZW50aWNhdG9ycwogY29uc3RleHBy
IHVpbnQ4X3Qga1UyZlNpZ25LZXlIYW5kbGVbXSA9IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0
LmNwcAppbmRleCA2NDYwNDQ2MjJmYmMxOTI1MTgxYzcyMTJjNDBhYTRlYTJmODBlOWQ0Li4yYjhi
OTZiYWJmMmJlZWMwMGJiY2JiMzMzMzk4NzAzNzMwZmEwZjQ0IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdC5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1UyZkNvbW1hbmRDb25zdHJ1
Y3RvclRlc3QuY3BwCkBAIC01OSwxNCArNTksMjUgQEAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyBjb25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3QoKQogICAgIHBhcmFtcy50
eXBlID0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleTsKICAgICBwYXJhbXMuYWxn
ID0gQ09TRTo6RVMyNTY7CiAKKyAgICBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1
dHMgZXh0ZW5zaW9uczsKKyAgICBleHRlbnNpb25zLmdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCA9
IGZhbHNlOworCiAgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25z
OwogICAgIG9wdGlvbnMucnAgPSBXVEZNb3ZlKHJwKTsKICAgICBvcHRpb25zLnVzZXIgPSBXVEZN
b3ZlKHVzZXIpOwogICAgIG9wdGlvbnMucHViS2V5Q3JlZFBhcmFtcy5hcHBlbmQoV1RGTW92ZShw
YXJhbXMpKTsKKyAgICBvcHRpb25zLmV4dGVuc2lvbnMgPSBXVEZNb3ZlKGV4dGVuc2lvbnMpOwog
CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKK1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMgY29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0V2l0aEdvb2dsZUxlZ2FjeUFwcGlk
U3VwcG9ydCgpCit7CisgICAgYXV0byBvcHRpb25zID0gY29uc3RydWN0TWFrZUNyZWRlbnRpYWxS
ZXF1ZXN0KCk7CisgICAgb3B0aW9ucy5leHRlbnNpb25zLT5nb29nbGVMZWdhY3lBcHBpZFN1cHBv
cnQgPSB0cnVlOworICAgIHJldHVybiBvcHRpb25zOworfQorCiBQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMgY29uc3RydWN0R2V0QXNzZXJ0aW9uUmVxdWVzdCgpCiB7CiAgICAgUHVi
bGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlvbnM7CkBAIC04NSw2ICs5NiwxNyBA
QCBURVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QsIFRlc3RDb252ZXJ0Q3RhcE1ha2VDcmVk
ZW50aWFsVG9VMmZSZWdpc3RlcikKICAgICBFWFBFQ1RfRVEoKnUyZlJlZ2lzdGVyQ29tbWFuZCwg
Y29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtVMmZSZWdpc3RlckNvbW1hbmRBcGR1LCBz
aXplb2YoVGVzdERhdGE6OmtVMmZSZWdpc3RlckNvbW1hbmRBcGR1KSkpOwogfQogCitURVNUKFUy
ZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QsIFRlc3RDb252ZXJ0Q3RhcE1ha2VDcmVkZW50aWFsVG9V
MmZSZWdpc3RlcldpdGhHb29nbGVMZWdhY3lBcHBpZFN1cHBvcnQpCit7CisgICAgY29uc3QgYXV0
byBtYWtlQ3JlZGVudGlhbFBhcmFtID0gY29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0V2l0
aEdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCgpOworCisgICAgRVhQRUNUX1RSVUUoaXNDb252ZXJ0
aWJsZVRvVTJmUmVnaXN0ZXJDb21tYW5kKG1ha2VDcmVkZW50aWFsUGFyYW0pKTsKKworICAgIGNv
bnN0IGF1dG8gdTJmUmVnaXN0ZXJDb21tYW5kID0gY29udmVydFRvVTJmUmVnaXN0ZXJDb21tYW5k
KGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gsIHNpemVvZihU
ZXN0RGF0YTo6a0NsaWVudERhdGFIYXNoKSksIG1ha2VDcmVkZW50aWFsUGFyYW0pOworICAgIEFT
U0VSVF9UUlVFKHUyZlJlZ2lzdGVyQ29tbWFuZCk7CisgICAgRVhQRUNUX0VRKCp1MmZSZWdpc3Rl
ckNvbW1hbmQsIGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVTJmUmVnaXN0ZXJDb21t
YW5kQXBkdVdpdGhHb29nbGVMZWdhY3lBcHBpZFN1cHBvcnQsIHNpemVvZihUZXN0RGF0YTo6a1Uy
ZlJlZ2lzdGVyQ29tbWFuZEFwZHVXaXRoR29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0KSkpOworfQor
CiBURVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QsIFRlc3RDb252ZXJ0Q3RhcE1ha2VDcmVk
ZW50aWFsVG9VMmZDaGVja09ubHlTaWduKQogewogICAgIGF1dG8gbWFrZUNyZWRlbnRpYWxQYXJh
bSA9IGNvbnN0cnVjdE1ha2VDcmVkZW50aWFsUmVxdWVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk5NDdiNTc2NmNk
NzJiYmFmY2I3MjNkMWE3NWE3MWVjZDcxNjk5NTUuLmFkODA5ZGQ3M2NlMmViNGNhNTgzNTM3Y2Qw
ZjBiYmU1OTI3MWZjNTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0xMC0wMSAgSmlld2Vu
IFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgZ29vZ2xlTGVn
YWN5QXBwaWRTdXBwb3J0IGV4dGVuc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNDI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTg4NzQ3
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
dGVzdHMgdG8gY29uZmlybSB0aGUgZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0IGV4dGVuc2lvbiBp
cyBpZ25vcmVkIGZvciBSUCBJRCAhPSBnb29nbGUuY29tLgorCisgICAgICAgICogaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sOgorCiAyMDE5LTA5LTI4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2gg
d2hlbiByZW1vdmluZyB0aGUgdGFyZ2V0IGVsZW1lbnQgd2hpbGUgYW5pbWF0aW5nIGl0cyBhdHRy
aWJ1dGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
c3VjY2Vzcy1oaWQuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDgwNzI1MWY4Njk1ZGI4MTJjZTQ2
NzQ3NTI5YWY0MTgwN2I3M2FhYTIuLjgwYWZiMWI3NWVlYWFkZDYwMzlkOWI3NDAwNTZiYmJmNWI3
ZjkyNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtc3VjY2Vzcy1oaWQuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC05LDQgKzksNiBAQCBQQVNTIFB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdHdvIGNvbnNlY3V0aXZlIHJlcXVl
c3RzLgogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG5vbmUgYXR0
ZXN0YXRpb24gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKIFBBU1MgUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBkaXJlY3QgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiAKIFBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCBpbmRpcmVjdCBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAor
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGdvb2dsZUxlZ2FjeUFw
cGlkU3VwcG9ydCBleHRlbnNpb24gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1Mg
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBnb29nbGVMZWdhY3lBcHBpZFN1
cHBvcnQgYW5kIGFwcGlkIGV4dGVuc2lvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5o
dHRwcy5odG1sCmluZGV4IGY1Mjk2ODc0OGIyMGQxYmJlMGI5ZjM2YzRiODRmMGI0ZThhY2ZmNDku
LjZhOGMzNTgxM2VlMmFkNzI3YmJjNTY2MTFhOGIyY2I5MGFkYmFmNjQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
c3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKQEAg
LTIzNyw0ICsyMzcsNTEgQEAKICAgICAgICAgICAgIGNoZWNrQ3RhcE1ha2VDcmVkZW50aWFsUmVz
dWx0KGNyZWRlbnRpYWwsIGZhbHNlKTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggaW5kaXJlY3QgYXR0ZXN0YXRpb24gaW4gYSBtb2Nr
IGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgLy8gV2hlbiBSUCBJRCBpcyBub3QgZ29vZ2xl
LmNvbSwgZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0
cy4KKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Cisg
ICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAg
ICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVz
ZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhh
bmRsZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVk
IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0
VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6
IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleHRl
bnNpb25zOiB7IGdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydDogdHJ1ZSB9LAorICAgICAgICAgICAg
ICAgIHRpbWVvdXQ6IDEwMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJl
dHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlh
bCA9PiB7CisgICAgICAgICAgICBjaGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50
aWFsKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0IGV4dGVuc2lvbiBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAg
ICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAg
bmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVS
TC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3Bs
YXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAg
IHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAg
ICAgICAgICAgICAgICBleHRlbnNpb25zOiB7IGdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydDogdHJ1
ZSwgYXBwaWQ6ICIiIH0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAwCisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrQ3Rh
cE1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICB9KTsKKyAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBnb29nbGVMZWdhY3lBcHBpZFN1
cHBvcnQgYW5kIGFwcGlkIGV4dGVuc2lvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIp
OwogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>