<?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>190688</bug_id>
          
          <creation_ts>2018-10-17 13:55:55 -0700</creation_ts>
          <short_desc>[PSON] Cap number of SuspendedPageProxy objects and allow a WebPageProxy to have more than one</short_desc>
          <delta_ts>2018-10-23 13:55:58 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=190804</see_also>
          <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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>mkwst</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1470324</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-17 13:55:55 -0700</bug_when>
    <thetext>Cap number of SuspendedPageProxy objects to 3 to avoid accumulating to many &quot;suspended&quot; processes.
Also allow a WebPageProxy to have more than one SuspendedPageProxy so that PageCache works for more than 1 history navigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470364</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-17 15:42:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/45354095&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470397</commentid>
    <comment_count>2</comment_count>
      <attachid>352662</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-17 16:44:22 -0700</bug_when>
    <thetext>Created attachment 352662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470401</commentid>
    <comment_count>3</comment_count>
      <attachid>352663</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-17 16:57:05 -0700</bug_when>
    <thetext>Created attachment 352663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470431</commentid>
    <comment_count>4</comment_count>
      <attachid>352672</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-17 18:22:17 -0700</bug_when>
    <thetext>Created attachment 352672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470538</commentid>
    <comment_count>5</comment_count>
      <attachid>352672</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-18 08:34:04 -0700</bug_when>
    <thetext>Comment on attachment 352672
Patch

Clearing flags on attachment: 352672

Committed r237257: &lt;https://trac.webkit.org/changeset/237257&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470539</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-18 08:34:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352662</attachid>
            <date>2018-10-17 16:44:22 -0700</date>
            <delta_ts>2018-10-17 16:57:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190688-20181017164421.patch</filename>
            <type>text/plain</type>
            <size>36139</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNkYTVkMjZiOThhOGNhMDBm
YjQxZjY5MmRkMjU1NmViNjliZWNjNGUuLjBhNTNhMDVjZWYzYWFkOTE0MDUzZWVjNDg0NDIxOWYw
OTNjMzQzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTgtMTAtMTcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbUFNPTl0gQ2FwIG51bWJlciBvZiBT
dXNwZW5kZWRQYWdlUHJveHkgb2JqZWN0cyBhbmQgYWxsb3cgYSBXZWJQYWdlUHJveHkgdG8gaGF2
ZSBtb3JlIHRoYW4gb25lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTA2ODgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MzU0MDk1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENhcCBudW1iZXIgb2Yg
U3VzcGVuZGVkUGFnZVByb3h5IG9iamVjdHMgdG8gMyB0byBhdm9pZCBhY2N1bXVsYXRpbmcgdG9v
IG1hbnkgInN1c3BlbmRlZCIgcHJvY2Vzc2VzLgorCisgICAgICAgIEFsc28gYWxsb3cgYSBXZWJQ
YWdlUHJveHkgdG8gaGF2ZSBtb3JlIHRoYW4gb25lIFN1c3BlbmRlZFBhZ2VQcm94eSBzbyB0aGF0
IFBhZ2VDYWNoZSBub3cgd29ya3MgZm9yCisgICAgICAgIG1vcmUgdGhhbiAxIGhpc3RvcnkgbmF2
aWdhdGlvbiAodXAgdG8gMyB3aXRoIHRoZSBzdXNwZW5kZWQgcGFnZSBsaW1pdCBpbiB0aGlzIHBh
dGNoKS4KKworICAgICAgICBUaGUgZm9sbG93aW5nIGNsZWFudXAgLyByZWZhY3RvcmluZyB3YXMg
bWFkZSB0byBzdXBwb3J0IHRoaXM6CisgICAgICAgIC0gVGhlIFN1c3BlbmRlZFBhZ2VQcm94eSBv
YmplY3RzIGFyZSBub3cgb3duZWQgYnkgdGhlIFdlYlByb2Nlc3NQb29sIGluc3RlYWQgb2YgdGhl
IFdlYlBhZ2VQcm94eS4KKyAgICAgICAgICBUaGUgV2ViUHJvY2Vzc1Bvb2wgaXMgaW4gY2hhcmdl
IG9mIGxpbWl0aW5nIHRoZSBudW1iZXIgb2YgU3VzcGVuZGVkUGFnZVByb3h5IG9iamVjdHMgYnkg
ZHJvcHBpbmcKKyAgICAgICAgICB0aGUgb2xkZXN0IG9uZSB3aGVuZXZlciBhIFdlYlBhZ2VQcm94
eSB0cmllcyB0byBhZGQgYSBuZXcgb25lIGFuZCB3ZSd2ZSBhbHJlYWR5IHJlYWNoZWQgdGhlIGxp
bWl0LgorICAgICAgICAtIFdlYlByb2Nlc3NQcm94eSBubyBsb25nZXIgbmVlZHMgdG8ga25vdyBh
bnl0aGluZyBhYm91dCBzdXNwZW5kZWQgcGFnZXMsIHdoaWNoIHNpbXBsaWZpZXMgdGhlCisgICAg
ICAgICAgY29kZSBxdWl0ZSBhIGJpdC4gSW5zdGVhZCwgdGhlIFN1c3BlbmRlZFBhZ2VQcm94eSBv
YmplY3RzIG5vdyByZWdpc3RlciB0aGVtc2VsdmVzIGFzCisgICAgICAgICAgSVBDOjpNZXNzYWdl
UmVjZWl2ZXJzIHdpdGggdGhlaXIgV2ViUHJvY2Vzc1Byb3h5LiBUaGUgU3VzcGVuZGVkUGFnZVBy
b3h5IGFsc28gdGFrZSBjYXJlIG9mCisgICAgICAgICAgY2FsbGluZyBtYXliZVNodXRkb3duKCkg
b24gdGhlaXIgV2ViUHJvY2Vzc1Byb3h5IHdoZW4gdGhleSBnZXQgZGVzdHJveWVkLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlN1c3BlbmRlZFBhZ2VQcm94eTo6flN1c3BlbmRlZFBhZ2VQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6dGVhckRvd25EcmF3aW5nQXJlYUluV2ViUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6dW5zdXNwZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAg
KFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNw
ZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojpzd2FwVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5O
ZXdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21wbGV0ZVBh
Z2VUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjplbnRlckFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWRkU3VzcGVuZGVkUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUFsbFN1c3BlbmRlZFBhZ2VQcm94aWVz
Rm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp0YWtlU3VzcGVuZGVk
UGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Omhhc1N1c3BlbmRl
ZFBhZ2VQcm94eUZvcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGVPckZhaWxlZFRvTGF1bmNoKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjYW5UZXJtaW5hdGVDaGlsZFByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlcXVlc3RUZXJtaW5hdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorCiAyMDE4LTEwLTE3ICBB
bGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGbGFreSBJbnRlcnNlY3Rp
b25PYnNlcnZlciB3ZWIgcGxhdGZvcm0gdGVzdHMgaW52b2x2aW5nIHN0eWxlIHVwZGF0ZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDAy
YWM2NjFiYTc4YWE0NzY5NjRhNDZmYTZiYzkzNGQ2OTdjNzZlZGYuLjE0YzUzMjcyMTk0YzIzNDAz
NDc1YjZkMTMyY2ZkNzhkYWExZGI0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtODEsNDQgKzgxLDQ0IEBAIFN1c3BlbmRlZFBhZ2VQ
cm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nl
c3NQcm94eT4mCiAgICAgLCBtX29yaWdpbihTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoeyB7
IH0sIGl0ZW0udXJsKCkgfSkpCiB7CiAgICAgaXRlbS5zZXRTdXNwZW5kZWRQYWdlKCp0aGlzKTsK
LSAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucmVnaXN0ZXJTdXNwZW5kZWRQYWdlUHJveHko
KnRoaXMpOworICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpLCAqdGhpcyk7
CisKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVk
KHRydWUpLCBtX3BhZ2UucGFnZUlEKCkpOwogfQogCiBTdXNwZW5kZWRQYWdlUHJveHk6On5TdXNw
ZW5kZWRQYWdlUHJveHkoKQogewotICAgIGlmIChhdXRvIHByb2Nlc3MgPSBtX3Byb2Nlc3MpIHsK
LSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SXNTdXNwZW5kZWQo
ZmFsc2UpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAgICAgICBwcm9jZXNzLT5zdXNwZW5kZWRQYWdl
V2FzRGVzdHJveWVkKCp0aGlzKTsKLSAgICAgICAgcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS51bnJl
Z2lzdGVyU3VzcGVuZGVkUGFnZVByb3h5KCp0aGlzKTsKLSAgICB9Ci19Ci0KLXZvaWQgU3VzcGVu
ZGVkUGFnZVByb3h5Ojp3ZWJQcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
KQotewotICAgIEFTU0VSVF9VTlVTRUQocHJvY2VzcywgJnByb2Nlc3MgPT0gbV9wcm9jZXNzKTsK
KyAgICBpZiAoIW1faXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS51bnJlZ2lzdGVyU3VzcGVuZGVkUGFnZVByb3h5KCp0aGlzKTsKLSAg
ICBtX3Byb2Nlc3MgPSBudWxscHRyOworICAgIC8vIElmIHRoZSBzdXNwZW5kZWQgcGFnZSB3YXMg
bm90IGNvbnN1bWVkIGJlZm9yZSBnZXR0aW5nIGRlc3Ryb3llZCwgdGhlbiBjbG9zZSB0aGUgY29y
cmVzcG9uZGluZyBwYWdlCisgICAgLy8gb24gdGhlIFdlYlByb2Nlc3Mgc2lkZS4KKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1fcGFnZS5wYWdlSUQoKSk7
CisgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwogCi0gICAgLy8g
VGhpcyB3aWxsIGRlc3Ryb3kgfHRoaXN8LgotICAgIG1fcGFnZS5zdXNwZW5kZWRQYWdlQ2xvc2Vk
KCp0aGlzKTsKKyAgICAvLyBXZSBjYWxsIG1heWJlU2h1dERvd24oKSBhc3luY2hyb25vdXNseSBz
aW5jZSB0aGUgU3VzcGVuZGVkUGFnZSBpcyBjdXJyZW50bHkgYmVpbmcgcmVtb3ZlZCBmcm9tIHRo
ZSBXZWJQcm9jZXNzUG9vbAorICAgIC8vIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHJlLWVudGVyaW5n
IFdlYlByb2Nlc3NQb29sIG1ldGhvZHMuCisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtw
cm9jZXNzID0gbV9wcm9jZXNzLmNvcHlSZWYoKV0geworICAgICAgICBwcm9jZXNzLT5tYXliZVNo
dXREb3duKCk7CisgICAgfSk7CiB9CiAKLXZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkZXN0cm95
V2ViUGFnZUluV2ViUHJvY2VzcygpCit2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6dGVhckRvd25E
cmF3aW5nQXJlYUluV2ViUHJvY2VzcygpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAgIG1fcGFnZS5zdXNwZW5k
ZWRQYWdlQ2xvc2VkKCp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlRlYXJEb3duRHJhd2luZ0FyZWFGb3JTdXNwZW5kKCksIG1fcGFnZS5wYWdlSUQoKSk7CiB9
CiAKLXZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojp0ZWFyRG93bkRyYXdpbmdBcmVhSW5XZWJQcm9j
ZXNzKCkKK3ZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojp1bnN1c3BlbmQoKQogewotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGVhckRvd25EcmF3aW5nQXJlYUZvclN1c3Bl
bmQoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBBU1NFUlQobV9pc1N1c3BlbmRlZCk7CisKKyAg
ICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7CisgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3Bh
Z2UucGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
SXNTdXNwZW5kZWQoZmFsc2UpLCBtX3BhZ2UucGFnZUlEKCkpOwogfQogCiB2b2lkIFN1c3BlbmRl
ZFBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZCgpCiB7Ci0gICAgQVNTRVJUKG1fcHJvY2Vzcyk7CiAg
ICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlN1c3BlbmRlZFBhZ2VQcm94eSAlcyBmcm9tIHByb2Nl
c3MgJWkgZmluaXNoZWQgdHJhbnNpdGlvbiB0byBzdXNwZW5kZWQiLCBsb2dnaW5nU3RyaW5nKCks
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAKICNpZiAhTE9HX0RJU0FCTEVECkBA
IC0xNDIsNiArMTQyLDEwIEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImIGRlY29kCiAjZW5kaWYKIH0KIAor
dm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpCit7
Cit9CisKICNpZiAhTE9HX0RJU0FCTEVECiBjb25zdCBjaGFyKiBTdXNwZW5kZWRQYWdlUHJveHk6
OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNw
ZW5kZWRQYWdlUHJveHkuaAppbmRleCAwNGM0ZWNmMjU1NDFiMWM1MGM4NmUxMzMwZTk2YTc5MTVl
YzcyMzdkLi4wZDU1ODVlMGI3YjhiMGU0NjE2NGExYzI4MTZlZTAxY2Q1YWM2NmRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApAQCAtMzYsMjIgKzM2
LDIwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2Vi
UHJvY2Vzc1Byb3h5OwogCi1jbGFzcyBTdXNwZW5kZWRQYWdlUHJveHkgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiB7CitjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHkg
ZmluYWw6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFN1c3BlbmRlZFBhZ2VQcm94eT4gewogcHVibGljOgogICAgIFN1c3BlbmRlZFBhZ2VQcm94eShX
ZWJQYWdlUHJveHkmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtJiwgdWludDY0X3QgbWFpbkZyYW1lSUQpOwogICAgIH5TdXNwZW5kZWRQYWdlUHJveHkoKTsK
IAotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7Ci0KICAgICBXZWJQYWdlUHJveHkmIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7
IH0KLSAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nl
c3MuZ2V0KCk7IH0KKyAgICBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MoKSB7IHJldHVybiBtX3By
b2Nlc3MuZ2V0KCk7IH0KICAgICB1aW50NjRfdCBtYWluRnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFpbkZyYW1lSUQ7IH0KICAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAKLSAgICB2b2lkIHdlYlByb2Nl
c3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkmKTsKLSAgICB2b2lkIGRlc3Ryb3lXZWJQYWdlSW5X
ZWJQcm9jZXNzKCk7CiAgICAgdm9pZCB0ZWFyRG93bkRyYXdpbmdBcmVhSW5XZWJQcm9jZXNzKCk7
CiAKKyAgICB2b2lkIHVuc3VzcGVuZCgpOworCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGNvbnN0
IGNoYXIqIGxvZ2dpbmdTdHJpbmcoKSBjb25zdDsKICNlbmRpZgpAQCAtNTksMTEgKzU3LDE3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CiAKKyAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKSBmaW5hbDsKKwogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwotICAgIFJl
ZlB0cjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKKyAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiBtX3Byb2Nlc3M7CiAgICAgdWludDY0X3QgbV9tYWluRnJhbWVJRDsKICAgICBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgbV9vcmlnaW47CiAKKyAgICBib29sIG1faXNTdXNwZW5kZWQgeyB0
cnVlIH07CisKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgYm9vbCBtX2ZpbmlzaGVkU3VzcGVuZGlu
ZyB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDY0NDE1YjJmNWMzZWJlZDRmMWJhMjA1NjU2ZWU2MDU4YWFlOWE5MDkuLjkyODNk
NmIzODE5MTkyYzcwYzZiYzY4OWM5NDg3MTM5YjNkZDcxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzExLDI3ICs3MTEsMjIgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKCkKICAgICBmaW5pc2hBdHRhY2hpbmdUb1dlYlBy
b2Nlc3MoKTsKIH0KIAotU3VzcGVuZGVkUGFnZVByb3h5KiBXZWJQYWdlUHJveHk6Om1heWJlQ3Jl
YXRlU3VzcGVuZGVkUGFnZShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlv
biYgbmF2aWdhdGlvbiwgdWludDY0X3QgbWFpbkZyYW1lSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6
c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1haW5GcmFtZUlEKQogewotICAgIEFTU0VSVCghbV9z
dXNwZW5kZWRQYWdlIHx8IG1fc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpICE9ICZwcm9jZXNzKTsK
KyAgICBpZiAoIW1haW5GcmFtZUlEKQorICAgICAgICByZXR1cm47CiAKICAgICBhdXRvKiBjdXJy
ZW50SXRlbSA9IG5hdmlnYXRpb24uZnJvbUl0ZW0oKTsKICAgICBpZiAoIWN1cnJlbnRJdGVtKSB7
Ci0gICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIg
dW5hYmxlIHRvIGNyZWF0ZSBzdXNwZW5kZWQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgLSBObyBj
dXJyZW50IGJhY2svZm9yd2FyZCBpdGVtIiwgcGFnZUlEKCksIHByb2Nlc3MucHJvY2Vzc0lkZW50
aWZpZXIoKSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBMT0coUHJvY2Vzc1N3
YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIHVuYWJsZSB0byBjcmVhdGUgc3VzcGVu
ZGVkIHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIC0gTm8gY3VycmVudCBiYWNrL2ZvcndhcmQgaXRl
bSIsIHBhZ2VJRCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9zdXNwZW5kZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxT
dXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBwcm9jZXNzLCAqY3VycmVudEl0ZW0sIG1haW5GcmFt
ZUlEKTsKLQotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0
ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9y
d2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLCBtX3N1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdT
dHJpbmcoKSwgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCBjdXJyZW50SXRlbS0+aXRlbUlE
KCkubG9nU3RyaW5nKCkpOworICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8U3VzcGVuZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKmN1cnJl
bnRJdGVtLCAqbWFpbkZyYW1lSUQpOworICAgIG1fbGFzdFN1c3BlbmRlZFBhZ2UgPSBtYWtlV2Vh
a1B0cihzdXNwZW5kZWRQYWdlLmdldCgpKTsKKyAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
YWRkU3VzcGVuZGVkUGFnZVByb3h5KFdURk1vdmUoc3VzcGVuZGVkUGFnZSkpOwogCi0gICAgcmV0
dXJuIG1fc3VzcGVuZGVkUGFnZS5nZXQoKTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OnN1c3Bl
bmRlZFBhZ2VDbG9zZWQoU3VzcGVuZGVkUGFnZVByb3h5JiBwYWdlKQotewotICAgIEFTU0VSVF9V
TlVTRUQocGFnZSwgJnBhZ2UgPT0gbV9zdXNwZW5kZWRQYWdlLmdldCgpKTsKLSAgICBtX3N1c3Bl
bmRlZFBhZ2UgPSBudWxscHRyOworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJv
eHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQg
JWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLCBtX2xhc3RTdXNwZW5k
ZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
Y3VycmVudEl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnN3YXBUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1haW5GcmFt
ZUlESW5QcmV2aW91c1Byb2Nlc3MpCkBAIC03MzksMTEgKzczNCwxOCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEFQ
STo6TmF2aWdhdAogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzLCAiJXAgV2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzXG4iLCB0
aGlzKTsKIAotICAgIC8vIElmIHRoZSBwcm9jZXNzIHdlJ3JlIGF0dGFjaGluZyB0byBpcyBrZXB0
IGFsaXZlIHNvbGVseSBieSBvdXIgY3VycmVudCBzdXNwZW5kZWQgcGFnZSwKLSAgICAvLyB3ZSBu
ZWVkIHRvIG1haW50YWluIHRoYXQgYnkgdGVtcG9yYXJpbHkga2VlcGluZyB0aGUgc3VzcGVuZGVk
IHBhZ2UgYWxpdmUuCi0gICAgYXV0byBjdXJyZW50U3VzcGVuZGVkUGFnZSA9IFdURk1vdmUobV9z
dXNwZW5kZWRQYWdlKTsKLSAgICBpZiAobWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2VzcykKLSAg
ICAgICAgbV9wcm9jZXNzLT5zdXNwZW5kV2ViUGFnZVByb3h5KCp0aGlzLCBuYXZpZ2F0aW9uLCAq
bWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2Vzcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3Bl
bmRlZFBhZ2VQcm94eT4gZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlOworICAgIGlmIChhdXRvKiBi
YWNrRm9yd2FyZExpc3RJdGVtID0gbmF2aWdhdGlvbi50YXJnZXRJdGVtKCkpIHsKKyAgICAgICAg
aWYgKGJhY2tGb3J3YXJkTGlzdEl0ZW0tPnN1c3BlbmRlZFBhZ2UoKSAmJiAmYmFja0ZvcndhcmRM
aXN0SXRlbS0+c3VzcGVuZGVkUGFnZSgpLT5wcm9jZXNzKCkgPT0gcHJvY2Vzcy5wdHIoKSkgewor
ICAgICAgICAgICAgZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlID0gdGhpcy0+cHJvY2VzcygpLnBy
b2Nlc3NQb29sKCkudGFrZVN1c3BlbmRlZFBhZ2VQcm94eSgqYmFja0ZvcndhcmRMaXN0SXRlbS0+
c3VzcGVuZGVkUGFnZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChkZXN0aW5hdGlvblN1c3BlbmRl
ZFBhZ2UpOworICAgICAgICAgICAgZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLT51bnN1c3BlbmQo
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
SUQpOworICAgIHN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUobmF2aWdhdGlvbiwgbWFpbkZy
YW1lSURJblByZXZpb3VzUHJvY2Vzcyk7CisgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0
aGlzLCBtX3BhZ2VJRCk7CiAKICAgICBtX3Byb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpOwogICAg
IG1faXNWYWxpZCA9IHRydWU7CkBAIC03NTIsMTAgKzc1NCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6
TmF2aWdhdAogICAgIC8vIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKCkgd2lsbCBu
b3QgYmUgY2FsbGVkIHRvIGluaXRpYWxpemUgbV9tYWluRnJhbWUuIEluIHN1Y2gKICAgICAvLyBj
YXNlLCB3ZSBuZWVkIHRvIGluaXRpYWxpemUgbV9tYWluRnJhbWUgdG8gcmVmbGVjdCB0aGUgZmFj
dCB0aGUgdGhlIFdlYlByb2Nlc3MnIFdlYlBhZ2UKICAgICAvLyBhbHJlYWR5IGV4aXN0cyBhbmQg
YWxyZWFkeSBoYXMgYSBtYWluIGZyYW1lLgotICAgIGlmIChjdXJyZW50U3VzcGVuZGVkUGFnZSAm
JiBjdXJyZW50U3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpID09IG1fcHJvY2Vzcy5wdHIoKSkgewor
ICAgIGlmIChkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UpIHsKICAgICAgICAgQVNTRVJUKCFtX21h
aW5GcmFtZSk7Ci0gICAgICAgIG1fbWFpbkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRlKHRo
aXMsIGN1cnJlbnRTdXNwZW5kZWRQYWdlLT5tYWluRnJhbWVJRCgpKTsKLSAgICAgICAgbV9wcm9j
ZXNzLT5mcmFtZUNyZWF0ZWQoY3VycmVudFN1c3BlbmRlZFBhZ2UtPm1haW5GcmFtZUlEKCksICpt
X21haW5GcmFtZSk7CisgICAgICAgIEFTU0VSVCgmZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLT5w
cm9jZXNzKCkgPT0gbV9wcm9jZXNzLnB0cigpKTsKKyAgICAgICAgbV9tYWluRnJhbWUgPSBXZWJG
cmFtZVByb3h5OjpjcmVhdGUodGhpcywgZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLT5tYWluRnJh
bWVJRCgpKTsKKyAgICAgICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQoZGVzdGluYXRpb25TdXNw
ZW5kZWRQYWdlLT5tYWluRnJhbWVJRCgpLCAqbV9tYWluRnJhbWUpOwogICAgIH0KIAogICAgIGZp
bmlzaEF0dGFjaGluZ1RvV2ViUHJvY2VzcygpOwpAQCAtOTI4LDYgKzkzMSw4IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpjbG9zZSgpCiAKICAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIucGFn
ZVdhc0ludmFsaWRhdGVkKCk7CiAKKyAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucmVtb3Zl
QWxsU3VzcGVuZGVkUGFnZVByb3hpZXNGb3JQYWdlKCp0aGlzKTsKKwogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vz
cy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlSUQpOwpAQCAtMjU1NCw3ICsyNTU5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRp
b24sIFIKIAogICAgICAgICBhdXRvIGl0ZW1TdGF0ZXMgPSBtX2JhY2tGb3J3YXJkTGlzdC0+Zmls
dGVyZWRJdGVtU3RhdGVzKFt0aGlzLCB0YXJnZXRJdGVtID0gaXRlbV0oV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSYgaXRlbSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBpdGVtLnN1c3Bl
bmRlZFBhZ2UoKSkgewotICAgICAgICAgICAgICAgIGlmIChwYWdlLT5wcm9jZXNzKCkgPT0gbV9w
cm9jZXNzLnB0cigpKQorICAgICAgICAgICAgICAgIGlmICgmcGFnZS0+cHJvY2VzcygpID09IG1f
cHJvY2Vzcy5wdHIoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuICZpdGVtICE9IHRhcmdldEl0ZW07CkBAIC0zNDkw
LDcgKzM0OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoUHJvZ3Jlc3MoKQogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24oYm9vbCBpc0luaXRpYWxF
bXB0eURvY3VtZW50KQogewogICAgIC8vIEF0dGFjaCBkcmF3aW5nIGFyZWEgZm9yIHRoZSBpbml0
aWFsIGVtcHR5IGRvY3VtZW50IG9ubHkgaWYgdGhpcyBpcyBub3QgYSBwcm9jZXNzIHN3YXAuCi0g
ICAgaWYgKGlzSW5pdGlhbEVtcHR5RG9jdW1lbnQgJiYgbV9zdXNwZW5kZWRQYWdlKQorICAgIGlm
IChpc0luaXRpYWxFbXB0eURvY3VtZW50ICYmIG1fbGFzdFN1c3BlbmRlZFBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTM1MDAsOCArMzUwNSw4IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uKGJvb2wgaXNJbml0aWFsRW1w
dHlEb2N1bWVudCkKICAgICAvLyBEcmF3aW5nIGFyZWEgZm9yIHRoZSBzdXNwZW5kZWQgcGFnZSB3
aWxsIGJlIHRvcm4gZG93biB3aGVuIHRoZSBhdHRhY2ggY29tcGxldGVzLgogICAgIG1fZHJhd2lu
Z0FyZWEtPmF0dGFjaEluV2ViUHJvY2VzcygpOwogI2Vsc2UKLSAgICBpZiAobV9zdXNwZW5kZWRQ
YWdlKQotICAgICAgICBtX3N1c3BlbmRlZFBhZ2UtPnRlYXJEb3duRHJhd2luZ0FyZWFJbldlYlBy
b2Nlc3MoKTsKKyAgICBpZiAobV9sYXN0U3VzcGVuZGVkUGFnZSkKKyAgICAgICAgbV9sYXN0U3Vz
cGVuZGVkUGFnZS0+dGVhckRvd25EcmF3aW5nQXJlYUluV2ViUHJvY2VzcygpOwogI2VuZGlmCiB9
CiAKQEAgLTYzOTUsOCArNjQwMCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbnRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyCiAgICAgcGFn
ZUNsaWVudCgpLmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUobGF5ZXJUcmVlQ29udGV4
dCk7CiAKICAgICAvLyBXZSBoYXZlIGNvbXBsZXRlZCB0aGUgcGFnZSB0cmFuc2l0aW9uIGFuZCBj
YW4gdGVhciBkb3duIHRoZSBsYXllcnMgaW4gdGhlIHN1c3BlbmRlZCBwcm9jZXNzLgotICAgIGlm
IChtX3N1c3BlbmRlZFBhZ2UpCi0gICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+dGVhckRvd25EcmF3
aW5nQXJlYUluV2ViUHJvY2VzcygpOworICAgIGlmIChtX2xhc3RTdXNwZW5kZWRQYWdlKQorICAg
ICAgICBtX2xhc3RTdXNwZW5kZWRQYWdlLT50ZWFyRG93bkRyYXdpbmdBcmVhSW5XZWJQcm9jZXNz
KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2N2E4ZTA4MTJj
MmI3ZWIxMDY3NWZmOTc4N2RkMzEzZWE5OTIxYjcyLi4xN2EyYTNhMzRmYTUyMTczNWUzNzM2MmNi
NDMzZGU0NGI0OGNmZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMTM1NSwxMCArMTM1NSw2IEBAIHB1YmxpYzoKIAogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUg
cHJlZmVyZW5jZXNTdG9yZSgpIGNvbnN0OwogCi0gICAgU3VzcGVuZGVkUGFnZVByb3h5KiBtYXli
ZUNyZWF0ZVN1c3BlbmRlZFBhZ2UoV2ViUHJvY2Vzc1Byb3h5JiwgQVBJOjpOYXZpZ2F0aW9uJiwg
dWludDY0X3QgbWFpbkZyYW1lSUQpOwotICAgIFN1c3BlbmRlZFBhZ2VQcm94eSogc3VzcGVuZGVk
UGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VzcGVuZGVkUGFnZS5nZXQoKTsgfQotICAgIHZvaWQg
c3VzcGVuZGVkUGFnZUNsb3NlZChTdXNwZW5kZWRQYWdlUHJveHkmKTsKLQogICAgIHZvaWQgc2V0
RGVmZXJzTG9hZGluZ0ZvclRlc3RpbmcoYm9vbCk7CiAKICAgICBXZWJDb3JlOjpJbnRSZWN0IHN5
bmNSb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0KTsKQEAg
LTEzNzksNiArMTM3NSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRl
KCk7CiAgICAgdm9pZCB1cGRhdGVIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXMoKTsK
IAorICAgIHZvaWQgc3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24m
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtYWluRnJhbWVJRCk7CisKICAgICBlbnVtIGNsYXNz
IFJlc2V0U3RhdGVSZWFzb24gewogICAgICAgICBQYWdlSW52YWxpZGF0ZWQsCiAgICAgICAgIFdl
YlByb2Nlc3NFeGl0ZWQsCkBAIC0yMjYwLDEwICsyMjU4LDggQEAgcHJpdmF0ZToKIAogICAgIHN0
ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGltZT4gbV9wYWdlTG9hZFN0YXJ0OwogCi0gICAgLy8gRklY
TUU6IFN1cHBvcnQgbW9yZSB0aGFuIG9uZSBzdXNwZW5kZWQgcGFnZSBwZXIgV2ViUGFnZVByb3h5
LAotICAgIC8vIGFuZCBoYXZlIGEgZ2xvYmFsIGNvbGxlY3Rpb24gb2YgdGhlbSBwZXIgcHJvY2Vz
cyBwb29sCi0gICAgLy8gKGUuZy4gZm9yIHRoYXQgcHJvY2VzcyBwb29sJ3MgcGFnZSBjYWNoZSkK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2U7
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgYW5kIGdldCByaWQgb2YgdGhpcyBkYXRhIG1l
bWJlci4KKyAgICBXZWFrUHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gbV9sYXN0U3VzcGVuZGVkUGFn
ZTsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPFdlYlBhZ2VQcm94eT4gbV9yZXNldFJlY2VudENyYXNo
Q291bnRUaW1lcjsKICAgICB1bnNpZ25lZCBtX3JlY2VudENyYXNoQ291bnQgeyAwIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYTcyYjU3MTJlMWY2
NjIzNjZmNDQ0YWU0OTZmMmIzNWJjN2M0OTk2Yi4uOTdjODBhZGE0MThmYTcxMTdhNTk3NDEwNjVm
ZjI0MTQ2YjA0ODVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcApAQCAtMTI0LDcgKzEyNCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBERUZJ
TkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHByb2Nlc3NQ
b29sQ291bnRlciwgKCJXZWJQcm9jZXNzUG9vbCIpKTsKIAotc3RhdGljIGNvbnN0IFNlY29uZHMg
c2VydmljZVdvcmtlclRlcm1pbmF0aW9uRGVsYXkgeyA1X3MgfTsKK2NvbnN0IFNlY29uZHMgc2Vy
dmljZVdvcmtlclRlcm1pbmF0aW9uRGVsYXkgeyA1X3MgfTsKK2NvbnN0IHVuc2lnbmVkIG1heGlt
dW1TdXNwZW5kZWRQYWdlc0NvdW50IHsgMyB9OwogCiBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVM
aXN0ZW5lcklkZW50aWZpZXIoKQogewpAQCAtMTAyMiw2ICsxMDIzLDEwIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAg
ICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9PSBwcm9jZXNzKQogICAgICAgICBtX3Byb2Nl
c3NXaXRoUGFnZUNhY2hlID0gbnVsbHB0cjsKIAorICAgIG1fc3VzcGVuZGVkUGFnZXMucmVtb3Zl
QWxsTWF0Y2hpbmcoW3Byb2Nlc3NdKGF1dG8mIHN1c3BlbmRlZFBhZ2UpIHsKKyAgICAgICAgcmV0
dXJuICZzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCkgPT0gcHJvY2VzczsKKyAgICB9KTsKKwogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoaXM8U2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eT4oKnByb2Nlc3MpKSB7CiAgICAgICAgIGF1dG8qIHJlbW92ZWRQcm9jZXNzID0gbV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzLnRha2UoZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nlc3NQcm94
eT4oKnByb2Nlc3MpLnNlY3VyaXR5T3JpZ2luKCkpOwpAQCAtMjExNywxMCArMjEyMiw5IEBAIFJl
ZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbklu
dGVybmFsKFdlYlBhZ2VQcm94eSYKIAogICAgIGlmIChhdXRvKiBiYWNrRm9yd2FyZExpc3RJdGVt
ID0gbmF2aWdhdGlvbi50YXJnZXRJdGVtKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHN1c3BlbmRl
ZFBhZ2UgPSBiYWNrRm9yd2FyZExpc3RJdGVtLT5zdXNwZW5kZWRQYWdlKCkpIHsKLSAgICAgICAg
ICAgIEFTU0VSVChzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCkpOwogICAgICAgICAgICAgYWN0aW9u
ID0gUG9saWN5QWN0aW9uOjpTdXNwZW5kOwogICAgICAgICAgICAgcmVhc29uID0gIlVzaW5nIHRh
cmdldCBiYWNrL2ZvcndhcmQgaXRlbSdzIHByb2Nlc3MiX3M7Ci0gICAgICAgICAgICByZXR1cm4g
KnN1c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKTsKKyAgICAgICAgICAgIHJldHVybiBzdXNwZW5kZWRQ
YWdlLT5wcm9jZXNzKCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGJh
Y2svZm9yd2FyZCBpdGVtIGFuZCB0aGUgY3VycmVudCBiYWNrL2ZvcndhcmQgaXRlbSBvcmlnaW5h
dGVkCkBAIC0yMTcxLDEwICsyMTc1LDcgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwoV2ViUGFnZVByb3h5JgogICAgICAg
ICAgICAgICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIHRoaXMgV2ViUHJvY2VzcyBoYXMgYSBTdXNw
ZW5kZWRQYWdlUHJveHkgZm9yIHRoaXMgV2ViUGFnZSwgd2UgY2FuIHRocm93IGl0IGF3YXkgdG8g
c3VwcG9ydAogICAgICAgICAgICAgICAgIC8vIFdlYlByb2Nlc3MgcmUtdXNlLgogICAgICAgICAg
ICAgICAgIC8vIEluIHRoZSBmdXR1cmUgaXQgd291bGQgYmUgZ3JlYXQgdG8gcmVmYWN0b3Itb3V0
IHRoaXMgbGltaXRhdGlvbi4KLSAgICAgICAgICAgICAgICBpZiAoYXV0byogc3VzcGVuZGVkUGFn
ZSA9IHBhZ2Uuc3VzcGVuZGVkUGFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIExPRyhQcm9j
ZXNzU3dhcHBpbmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBEZXN0cm95aW5nIHN1c3BlbmRlZCBwYWdl
IGZvciB0aGF0IHN3YXAiKTsKLSAgICAgICAgICAgICAgICAgICAgc3VzcGVuZGVkUGFnZS0+ZGVz
dHJveVdlYlBhZ2VJbldlYlByb2Nlc3MoKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5yZW1vdmVBbGxTdXNwZW5kZWRQYWdl
UHJveGllc0ZvclBhZ2UocGFnZSk7CiAKICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVJlZigq
cHJvY2Vzcyk7CiAgICAgICAgICAgICB9CkBAIC0yMTkxLDMwICsyMTkyLDMzIEBAIFJlZjxXZWJQ
cm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFs
KFdlYlBhZ2VQcm94eSYKICAgICByZXR1cm4gY3JlYXRlTmV3V2ViUHJvY2VzcyhwYWdlLndlYnNp
dGVEYXRhU3RvcmUoKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyU3VzcGVu
ZGVkUGFnZVByb3h5KFN1c3BlbmRlZFBhZ2VQcm94eSYgcGFnZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmFkZFN1c3BlbmRlZFBhZ2VQcm94eShzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVBy
b3h5PiYmIHN1c3BlbmRlZFBhZ2UpCiB7Ci0gICAgYXV0byYgdmVjdG9yID0gbV9zdXNwZW5kZWRQ
YWdlcy5lbnN1cmUocGFnZS5vcmlnaW4oKSwgW10gewotICAgICAgICByZXR1cm4gVmVjdG9yPFN1
c3BlbmRlZFBhZ2VQcm94eSo+IHsgfTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgaWYg
KG1fc3VzcGVuZGVkUGFnZXMuc2l6ZSgpID49IG1heGltdW1TdXNwZW5kZWRQYWdlc0NvdW50KQor
ICAgICAgICBtX3N1c3BlbmRlZFBhZ2VzLnJlbW92ZUZpcnN0KCk7CiAKLSAgICB2ZWN0b3IuYXBw
ZW5kKCZwYWdlKTsKLQotI2lmICFMT0dfRElTQUJMRUQKLSAgICBpZiAodmVjdG9yLnNpemUoKSA+
IDUpCi0gICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTZWN1cml0eSBvcmlnaW4gJXMgbm93
IGhhcyAlenUgc3VzcGVuZGVkIHBhZ2VzICh0aGlzIHNlZW1zIHVuZXhwZWN0ZWQpIiwgcGFnZS5v
cmlnaW4oKS5kZWJ1Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHZlY3Rvci5zaXplKCkpOwotI2Vu
ZGlmCisgICAgbV9zdXNwZW5kZWRQYWdlcy5hcHBlbmQoV1RGTW92ZShzdXNwZW5kZWRQYWdlKSk7
CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJTdXNwZW5kZWRQYWdlUHJveHko
U3VzcGVuZGVkUGFnZVByb3h5JiBwYWdlKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlQWxs
U3VzcGVuZGVkUGFnZVByb3hpZXNGb3JQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICBh
dXRvIGl0ZXJhdG9yID0gbV9zdXNwZW5kZWRQYWdlcy5maW5kKHBhZ2Uub3JpZ2luKCkpOwotICAg
IEFTU0VSVChpdGVyYXRvciAhPSBtX3N1c3BlbmRlZFBhZ2VzLmVuZCgpKTsKKyAgICBtX3N1c3Bl
bmRlZFBhZ2VzLnJlbW92ZUFsbE1hdGNoaW5nKFsmcGFnZV0oYXV0byYgc3VzcGVuZGVkUGFnZSkg
eworICAgICAgICByZXR1cm4gJml0ZW0tPnBhZ2UoKSA9PSAmc3VzcGVuZGVkUGFnZTsKKyAgICB9
KTsKK30KIAotICAgIGF1dG8gcmVzdWx0ID0gaXRlcmF0b3ItPnZhbHVlLnJlbW92ZUZpcnN0KCZw
YWdlKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK3N0ZDo6dW5pcXVlX3B0
cjxTdXNwZW5kZWRQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjp0YWtlU3VzcGVuZGVkUGFnZVBy
b3h5KFN1c3BlbmRlZFBhZ2VQcm94eSYgc3VzcGVuZGVkUGFnZSkKK3sKKyAgICByZXR1cm4gbV9z
dXNwZW5kZWRQYWdlcy50YWtlRmlyc3QoWyZzdXNwZW5kZWRQYWdlXShhdXRvJiBpdGVtKSB7Cisg
ICAgICAgIHJldHVybiBpdGVtLmdldCgpID09ICZzdXNwZW5kZWRQYWdlOworICAgIH0pOworfQog
Ci0gICAgaWYgKGl0ZXJhdG9yLT52YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIG1fc3VzcGVuZGVk
UGFnZXMucmVtb3ZlKGl0ZXJhdG9yKTsKK2Jvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1N1c3BlbmRl
ZFBhZ2VQcm94eUZvcihXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit7CisgICAgcmV0dXJuIG1f
c3VzcGVuZGVkUGFnZXMuZmluZElmKFsmcHJvY2Vzc10oYXV0byYgc3VzcGVuZGVkUGFnZSkgewor
ICAgICAgICByZXR1cm4gJnN1c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKSA9PSAmcHJvY2VzczsKKyAg
ICB9KSAhPSBtX3N1c3BlbmRlZFBhZ2VzLmVuZCgpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29s
OjphZGRNb2NrTWVkaWFEZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJiBkZXZpY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA2ODJhYzJmMmQ0ZjZlZmY0
ZWJjYjkyNDVmYjI0OGIyZGY2ODI5MGRiLi5mMmMxYTJhMTYwOGViYWIxZWNlODEwMjUyNjE1OWQ3
ZDAzMDVlMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAg
LTQ0MCw4ICs0NDAsMTMgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBSZWY8V2ViUHJvY2Vzc1By
b3h5PiBwcm9jZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBjb25zdCBBUEk6Ok5hdmln
YXRpb24mLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJDb3JlOjpQb2xpY3lBY3Rp
b24mLCBTdHJpbmcmIHJlYXNvbik7Ci0gICAgdm9pZCByZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94
eShTdXNwZW5kZWRQYWdlUHJveHkmKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTdXNwZW5kZWRQYWdl
UHJveHkoU3VzcGVuZGVkUGFnZVByb3h5Jik7CisKKyAgICAvLyBTdXNwZW5kZWRQYWdlUHJveHkg
bWFuYWdlbWVudC4KKyAgICB2b2lkIGFkZFN1c3BlbmRlZFBhZ2VQcm94eShzdGQ6OnVuaXF1ZV9w
dHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmKTsKKyAgICB2b2lkIHJlbW92ZUFsbFN1c3BlbmRlZFBh
Z2VQcm94aWVzRm9yUGFnZShXZWJQYWdlUHJveHkmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3Vz
cGVuZGVkUGFnZVByb3h5PiB0YWtlU3VzcGVuZGVkUGFnZVByb3h5KFN1c3BlbmRlZFBhZ2VQcm94
eSYpOworICAgIGJvb2wgaGFzU3VzcGVuZGVkUGFnZVByb3h5Rm9yKFdlYlByb2Nlc3NQcm94eSYp
OworCiAgICAgdm9pZCBkaWRSZWFjaEdvb2RUaW1lVG9QcmV3YXJtKCk7CiAKICAgICB2b2lkIGRp
ZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oY29uc3QgU3RyaW5nJiByZWdpc3RyYWJsZURvbWFp
biwgY29uc3QgV2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uJik7CkBAIC03MDMsNyArNzA4LDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogI2VuZGlmCiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSwgVmVjdG9yPFN1c3BlbmRlZFBhZ2VQcm94eSo+PiBtX3N1c3BlbmRlZFBh
Z2VzOworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+PiBtX3N1
c3BlbmRlZFBhZ2VzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5
Pj4gbV9zd2FwcGVkUHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW47CiAKICAgICBIYXNoTWFw
PFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbj4+IG1f
cHJld2FybUluZm9ybWF0aW9uUGVyUmVnaXN0cmFibGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmZDk5OGUxNmQxNWE4YjExYzZlYzEz
NTNjZjA2NzdmZTkyYzU4ODIzLi44YjZlMzZlNzc3NmUxYjVjZjlhNTZhNjAxNDg3ZGYyNzg1MjE3
OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAg
LTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5m
b1N0b3JlLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKLSNpbmNsdWRlICJT
dXNwZW5kZWRQYWdlUHJveHkuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUg
IlRleHRDaGVja2VyU3RhdGUuaCIKICNpbmNsdWRlICJVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmgiCkBAIC00NDQsMjcgKzQ0Myw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRFeGlz
dGluZ1dlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdlSUQpCiAgICAg
dXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIH0KIAotdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnN1c3BlbmRXZWJQYWdlUHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHVpbnQ2NF90IG1haW5GcmFtZUlEKQotewotICAgIGlm
IChhdXRvKiBzdXNwZW5kZWRQYWdlID0gd2ViUGFnZS5tYXliZUNyZWF0ZVN1c3BlbmRlZFBhZ2Uo
KnRoaXMsIG5hdmlnYXRpb24sIG1haW5GcmFtZUlEKSkgewotICAgICAgICBMT0coUHJvY2Vzc1N3
YXBwaW5nLCAiV2ViUHJvY2Vzc1Byb3h5IHBpZCAlaSBhZGRlZCBzdXNwZW5kZWQgcGFnZSAlcyIs
IHByb2Nlc3NJZGVudGlmaWVyKCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSk7Ci0g
ICAgICAgIG1fc3VzcGVuZGVkUGFnZU1hcC5zZXQod2ViUGFnZS5wYWdlSUQoKSwgc3VzcGVuZGVk
UGFnZSk7Ci0gICAgfQotCi0gICAgcmVtb3ZlV2ViUGFnZSh3ZWJQYWdlLCB3ZWJQYWdlLnBhZ2VJ
RCgpKTsKLSAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB3ZWJQYWdlLnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnN1c3BlbmRlZFBhZ2VXYXNEZXN0cm95ZWQoU3VzcGVuZGVkUGFnZVByb3h5
JiBzdXNwZW5kZWRQYWdlKQotewotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQcm9jZXNz
UHJveHkgcGlkICVpIHN1c3BlbmRlZCBwYWdlICVzIHdhcyBkZXN0cm95ZWQiLCBwcm9jZXNzSWRl
bnRpZmllcigpLCBzdXNwZW5kZWRQYWdlLmxvZ2dpbmdTdHJpbmcoKSk7Ci0KLSAgICBBU1NFUlQo
bV9zdXNwZW5kZWRQYWdlTWFwLmNvbnRhaW5zKHN1c3BlbmRlZFBhZ2UucGFnZSgpLnBhZ2VJRCgp
KSk7Ci0gICAgbV9zdXNwZW5kZWRQYWdlTWFwLnJlbW92ZShzdXNwZW5kZWRQYWdlLnBhZ2UoKS5w
YWdlSUQoKSk7Ci0KLSAgICBtYXliZVNodXREb3duKCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjptYXJrSXNOb0xvbmdlckluUHJld2FybWVkUG9vbCgpCiB7CiAgICAgQVNTRVJUKG1faXNQ
cmV3YXJtZWQpOwpAQCAtNjczLDE1ICs2NTEsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gV2ViUGFnZVByb3h5IG1lc3NhZ2VzIGFy
ZSBub3JtYWxseSBoYW5kbGVkIGJ5IHRoZSBub3JtYWwgImRpc3BhdGNoTWVzc2FnZSIgdXAgYWJv
dmUuCi0gICAgLy8gSWYgdGhleSB3ZXJlIG5vdCBoYW5kbGVkIHRoZXJlLCB0aGVuIHRoZXkgbWF5
IHBvdGVudGlhbGx5IGJlIGhhbmRsZWQgYnkgU3VzcGVuZGVkUGFnZVByb3h5IG9iamVjdHMuCi0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byogc3VzcGVu
ZGVkUGFnZSA9IG1fc3VzcGVuZGVkUGFnZU1hcC5nZXQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkp
KSB7Ci0gICAgICAgICAgICBzdXNwZW5kZWRQYWdlLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQog
ICAgIC8vIEZJWE1FOiBBZGQgdW5oYW5kbGVkIG1lc3NhZ2UgbG9nZ2luZy4KIH0KIApAQCAtNzI5
LDExICs2OTgsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9y
RmFpbGVkVG9MYXVuY2goKQogICAgIH0KICNlbmRpZgogCi0gICAgZm9yIChhdXRvKiBzdXNwZW5k
ZWRQYWdlIDogY29weVRvVmVjdG9yT2Y8U3VzcGVuZGVkUGFnZVByb3h5Kj4obV9zdXNwZW5kZWRQ
YWdlTWFwLnZhbHVlcygpKSkKLSAgICAgICAgc3VzcGVuZGVkUGFnZS0+d2ViUHJvY2Vzc0RpZENs
b3NlKCp0aGlzKTsKLQotICAgIG1fc3VzcGVuZGVkUGFnZU1hcC5jbGVhcigpOwotCiAgICAgZm9y
IChhdXRvJiBwYWdlIDogcGFnZXMpCiAgICAgICAgIHBhZ2UtPnByb2Nlc3NEaWRUZXJtaW5hdGUo
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpDcmFzaCk7CiB9CkBAIC05MDEsNyArODY1LDcgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6Om1heWJlU2h1dERvd24oKQogCiBib29sIFdlYlByb2Nlc3NQ
cm94eTo6Y2FuVGVybWluYXRlQ2hpbGRQcm9jZXNzKCkKIHsKLSAgICBpZiAoIW1fcGFnZU1hcC5p
c0VtcHR5KCkgfHwgIW1fc3VzcGVuZGVkUGFnZU1hcC5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3Bh
Z2VNYXAuaXNFbXB0eSgpIHx8IG1fcHJvY2Vzc1Bvb2wtPmhhc1N1c3BlbmRlZFBhZ2VQcm94eUZv
cigqdGhpcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9wcm9jZXNzUG9v
bC0+c2hvdWxkVGVybWluYXRlKHRoaXMpKQpAQCAtMTAxNSwxMSArOTc5LDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb24g
cmVhc29uKQogCiAgICAgc2h1dERvd24oKTsKIAotICAgIGZvciAoYXV0byogc3VzcGVuZGVkUGFn
ZSA6IGNvcHlUb1ZlY3Rvck9mPFN1c3BlbmRlZFBhZ2VQcm94eSo+KG1fc3VzcGVuZGVkUGFnZU1h
cC52YWx1ZXMoKSkpCi0gICAgICAgIHN1c3BlbmRlZFBhZ2UtPndlYlByb2Nlc3NEaWRDbG9zZSgq
dGhpcyk7Ci0KLSAgICBtX3N1c3BlbmRlZFBhZ2VNYXAuY2xlYXIoKTsKLQogICAgIGZvciAoYXV0
byYgcGFnZSA6IHBhZ2VzKQogICAgICAgICBwYWdlLT5wcm9jZXNzRGlkVGVybWluYXRlKHJlYXNv
bik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGQw
ZTdlY2I1NWNkOWZjODRhOTExOWYwNmRlMGNmNjg3M2NlM2EzZGMuLmFjYzUxZjE4YzM1MTE2ZWI0
ZDUyZTdlOTQzYjZlYzc2ZGEzNmEzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCkBAIC02Nyw3ICs2Nyw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
TmV0d29ya1Byb2Nlc3NQcm94eTsKIGNsYXNzIE9iakNPYmplY3RHcmFwaDsKIGNsYXNzIFBhZ2VD
bGllbnQ7Ci1jbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKIGNsYXNzIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW07CkBAIC0yMDgsOSArMjA3LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29t
bWl0UHJvdmlzaW9uYWxMb2FkKCkgeyBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMg
PSB0cnVlOyB9CiAgICAgYm9vbCBoYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzOyB9CiAKLSAgICB2
b2lkIHN1c3BlbmRXZWJQYWdlUHJveHkoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uJiwg
dWludDY0X3QgbWFpbkZyYW1lSUQpOwotICAgIHZvaWQgc3VzcGVuZGVkUGFnZVdhc0Rlc3Ryb3ll
ZChTdXNwZW5kZWRQYWdlUHJveHkmKTsKLQogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAgICAgdm9p
ZCB0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQoKTsKICAgICB2
b2lkIHJlbGVhc2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbkZvckZ1bGxzY3JlZW5JbnB1dCgpOwpA
QCAtMjMyLDYgKzIyOCw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgd2hlbiB0aGUgd2ViIHBy
b2Nlc3MgaGFzIGNyYXNoZWQgb3Igd2Uga25vdyB0aGF0IGl0IHdpbGwgdGVybWluYXRlIHNvb24u
CiAgICAgLy8gV2lsbCBwb3RlbnRpYWxseSBjYXVzZSB0aGUgV2ViUHJvY2Vzc1Byb3h5IG9iamVj
dCB0byBiZSBmcmVlZC4KICAgICB2b2lkIHNodXREb3duKCk7CisgICAgdm9pZCBtYXliZVNodXRE
b3duKCk7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQYWdlSUQo
KTsKQEAgLTI1MSw4ICsyNDgsNiBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAg
ICB2b2lkIG1heWJlU2h1dERvd24oKTsKLQogICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzLgog
ICAgIHZvaWQgdXBkYXRlQmFja0ZvcndhcmRJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZSYpOwogICAgIHZvaWQgZGlkRGVzdHJveUZyYW1lKHVpbnQ2NF90KTsKQEAgLTM2MSw3ICsz
NTYsNiBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2xvY2FsUGF0aHNXaXRoQXNz
dW1lZFJlYWRBY2Nlc3M7CiAKICAgICBXZWJQYWdlUHJveHlNYXAgbV9wYWdlTWFwOwotICAgIEhh
c2hNYXA8dWludDY0X3QsIFN1c3BlbmRlZFBhZ2VQcm94eSo+IG1fc3VzcGVuZGVkUGFnZU1hcDsK
ICAgICBXZWJGcmFtZVByb3h5TWFwIG1fZnJhbWVNYXA7CiAgICAgVXNlckluaXRpYXRlZEFjdGlv
bk1hcCBtX3VzZXJJbml0aWF0ZWRBY3Rpb25NYXA7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyNzA2OGI4NDc5YzJlNzRlZmViYTQ5MWEzOWE0
OWUzODY1NGUzMTAyLi5hODVhNmRkNjk3ZDU5ZDNjZDI5YzIyMzk3MWZhYTlkMzg5MWFhNjYxIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTgtMTAtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBbUFNPTl0gQ2FwIG51bWJlciBvZiBTdXNwZW5kZWRQYWdlUHJveHkgb2JqZWN0cyBh
bmQgYWxsb3cgYSBXZWJQYWdlUHJveHkgdG8gaGF2ZSBtb3JlIHRoYW4gb25lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2ODgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzQ1MzU0MDk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEV4dGVuZGVkIEFQSSB0ZXN0IGNvdmVyYWdlIHRvIGNvbmZpcm0gdGhh
dDoKKyAgICAgICAgLSBXZSBkbyBub3QgYWNjdW11bGF0ZSBtb3JlIHRoYW4gMyBzdXNwZW5kZWQg
cHJvY2Vzc2VzLgorICAgICAgICAtIFdlIGNhbiBuYXZpZ2F0ZSBiYWNrIDMgdGltZXMgYW5kIHVz
ZSB0aGUgcGFnZSBjYWNoZSBmb3IgZWFjaCBvZiB0aGVzZSBsb2Fkcy4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06
CisKIDIwMTgtMTAtMTYgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIGEgc3dpdGNoIGZvciBXZWIgU1FMCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5t
bQppbmRleCA4NDQ4NDI4NjIwMWRjOGI2YmNlZmQ1ZmJmNmU5MmUyYTVhOGU4NWVlLi4wZWQwYTRi
NmMzMzQ4NmYwMTZlMzQyNDkxYjVhZGUwZmRkNDk1M2I4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5h
dmlnYXRpb24ubW0KQEAgLTQxMiw2ICs0MTIsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBOb1N3YXBw
aW5nRm9yZVRMRFBsdXMyKQogICAgIEVYUEVDVF9FUShudW1iZXJPZkRlY2lkZVBvbGljeUNhbGxz
LCAyKTsKIH0KIAorLy8gV2UgY3VycmVudGx5IGtlZXAgMyBzdXNwZW5kZWQgcGFnZXMgYXJvdW5k
IHNvIHdlIGNhbiBnbyBiYWNrIDMgdGltZXMgYW5kIHVzZSB0aGUgcGFnZSBjYWNoZSBmb3IgZWFj
aCBsb2FkLgogVEVTVChQcm9jZXNzU3dhcCwgQmFjaykKIHsKICAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKQEAgLTQyMiw2ICs0MjMsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBCYWNrKQog
ICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQo
KV07CiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1BTT05TY2hlbWUgYWxsb2NdIGluaXRd
KTsKICAgICBbaGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cud2Vi
a2l0Lm9yZy9tYWluLmh0bWwiIHRvRGF0YTp0ZXN0Qnl0ZXNdOworICAgIFtoYW5kbGVyIGFkZE1h
cHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy5hcHBsZS5jb20vbWFpbi5odG1sIiB0b0Rh
dGE6dGVzdEJ5dGVzXTsKKyAgICBbaGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInBz
b246Ly93d3cuZ29vZ2xlLmNvbS9tYWluLmh0bWwiIHRvRGF0YTp0ZXN0Qnl0ZXNdOwogICAgIFt3
ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9y
VVJMU2NoZW1lOkAiUFNPTiJdOwogCiAgICAgUmV0YWluUHRyPFBTT05NZXNzYWdlSGFuZGxlcj4g
bWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbUFNPTk1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CkBAIC00MzksNyArNDQyLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQmFjaykKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIGRvbmUgPSBmYWxzZTsKIAotICAgIGF1
dG8gcGlkMSA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgYXV0byB3ZWJr
aXRQSUQgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOwogCiAgICAgcmVxdWVzdCA9
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29u
Oi8vd3d3LmFwcGxlLmNvbS9tYWluLmh0bWwiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
cmVxdWVzdF07CkBAIC00NDcsMzAgKzQ1MCw3MCBAQCBURVNUKFByb2Nlc3NTd2FwLCBCYWNrKQog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwog
Ci0gICAgYXV0byBwaWQyID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBh
dXRvIGFwcGxlUElEID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBFWFBF
Q1RfTkUod2Via2l0UElELCBhcHBsZVBJRCk7CiAKLSAgICBbd2ViVmlldyBnb0JhY2tdOworICAg
IHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAicHNvbjovL3d3dy5nb29nbGUuY29tL21haW4uaHRtbCJdXTsKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBnb29nbGVQSUQgPSBbd2ViVmlldyBf
d2ViUHJvY2Vzc0lkZW50aWZpZXJdOworICAgIEVYUEVDVF9ORShhcHBsZVBJRCwgZ29vZ2xlUElE
KTsKKworICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAicHNvbjovL3d3dy5iaW5nLmNvbS9tYWluLmh0bWwiXV07CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gYmluZ1BJRCA9IFt3ZWJW
aWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgRVhQRUNUX05FKGdvb2dsZVBJRCwgYmlu
Z1BJRCk7CisKKyAgICBbd2ViVmlldyBnb0JhY2tdOyAvLyBCYWNrIHRvIGdvb2dsZS5jb20uCiAK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7CiAgICAgcmVj
ZWl2ZWRNZXNzYWdlID0gZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKICAgICBkb25lID0gZmFsc2U7CiAKLSAgICBhdXRvIHBpZDMgPSBbd2ViVmlldyBfd2ViUHJv
Y2Vzc0lkZW50aWZpZXJdOworICAgIGF1dG8gcGlkQWZ0ZXJGaXJzdEJhY2tOYXZpZ2F0aW9uID0g
W3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBFWFBFQ1RfRVEoZ29vZ2xlUElE
LCBwaWRBZnRlckZpcnN0QmFja05hdmlnYXRpb24pOwogCi0gICAgLy8gMyBsb2FkcywgMyBkZWNp
ZGVQb2xpY3kgY2FsbHMgKGUuZy4gYW55IGxvYWQgdGhhdCBwZXJmb3JtcyBhIHByb2Nlc3Mgc3dh
cCBzaG91bGQgbm90IGhhdmUgZ2VuZXJhdGVkIGFuCi0gICAgLy8gYWRkaXRpb25hbCBkZWNpZGVQ
b2xpY3kgY2FsbCBhcyBhIHJlc3VsdCBvZiB0aGUgcHJvY2VzcyBzd2FwKQotICAgIEVYUEVDVF9F
UShudW1iZXJPZkRlY2lkZVBvbGljeUNhbGxzLCAzKTsKKyAgICBbd2ViVmlldyBnb0JhY2tdOyAv
LyBCYWNrIHRvIGFwcGxlLmNvbS4KIAotICAgIEVYUEVDVF9FUShbcmVjZWl2ZWRNZXNzYWdlcyBj
b3VudF0sIDJ1KTsKLSAgICBFWFBFQ1RfVFJVRShbcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVswXSBp
c0VxdWFsVG9TdHJpbmc6QCJQYWdlU2hvdyBjYWxsZWQuIFBlcnNpc3RlZDogZmFsc2UsIGFuZCB3
aW5kb3cuaGlzdG9yeS5zdGF0ZSBpczogbnVsbCJdKTsKLSAgICBFWFBFQ1RfVFJVRShbcmVjZWl2
ZWRNZXNzYWdlcy5nZXQoKVsxXSBpc0VxdWFsVG9TdHJpbmc6QCJQYWdlU2hvdyBjYWxsZWQuIFBl
cnNpc3RlZDogdHJ1ZSwgYW5kIHdpbmRvdy5oaXN0b3J5LnN0YXRlIGlzOiBvbmxvYWRDYWxsZWQi
XSk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworICAg
IHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOwogCi0gICAgRVhQRUNUX0VRKDJ1LCBzZWVuUElEcy5z
aXplKCkpOworICAgIGF1dG8gcGlkQWZ0ZXJTZWNvbmRCYWNrTmF2aWdhdGlvbiA9IFt3ZWJWaWV3
IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgRVhQRUNUX0VRKGFwcGxlUElELCBwaWRBZnRl
clNlY29uZEJhY2tOYXZpZ2F0aW9uKTsKIAotICAgIEVYUEVDVF9GQUxTRShwaWQxID09IHBpZDIp
OwotICAgIEVYUEVDVF9GQUxTRShwaWQyID09IHBpZDMpOwotICAgIEVYUEVDVF9UUlVFKHBpZDEg
PT0gcGlkMyk7CisgICAgW3dlYlZpZXcgZ29CYWNrXTsgLy8gQmFjayB0byB3ZWJraXQub3JnLgor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworICAgIHJl
Y2VpdmVkTWVzc2FnZSA9IGZhbHNlOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBwaWRBZnRlclRoaXJkQmFja05hdmln
YXRpb24gPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworICAgIEVYUEVDVF9FUSh3
ZWJraXRQSUQsIHBpZEFmdGVyVGhpcmRCYWNrTmF2aWdhdGlvbik7CisKKyAgICAvLyA3IGxvYWRz
LCA3IGRlY2lkZVBvbGljeSBjYWxscyAoZS5nLiBhbnkgbG9hZCB0aGF0IHBlcmZvcm1zIGEgcHJv
Y2VzcyBzd2FwIHNob3VsZCBub3QgaGF2ZSBnZW5lcmF0ZWQgYW4KKyAgICAvLyBhZGRpdGlvbmFs
IGRlY2lkZVBvbGljeSBjYWxsIGFzIGEgcmVzdWx0IG9mIHRoZSBwcm9jZXNzIHN3YXApCisgICAg
RVhQRUNUX0VRKDcsIG51bWJlck9mRGVjaWRlUG9saWN5Q2FsbHMpOworCisgICAgRVhQRUNUX0VR
KDZ1LCBbcmVjZWl2ZWRNZXNzYWdlcyBjb3VudF0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIlBh
Z2VTaG93IGNhbGxlZC4gUGVyc2lzdGVkOiBmYWxzZSwgYW5kIHdpbmRvdy5oaXN0b3J5LnN0YXRl
IGlzOiBudWxsIiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVswXSk7CisgICAgRVhQRUNUX1dLX1NU
UkVRKEAiUGFnZVNob3cgY2FsbGVkLiBQZXJzaXN0ZWQ6IGZhbHNlLCBhbmQgd2luZG93Lmhpc3Rv
cnkuc3RhdGUgaXM6IG51bGwiLCByZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzFdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoQCJQYWdlU2hvdyBjYWxsZWQuIFBlcnNpc3RlZDogZmFsc2UsIGFuZCB3aW5k
b3cuaGlzdG9yeS5zdGF0ZSBpczogbnVsbCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMl0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUShAIlBhZ2VTaG93IGNhbGxlZC4gUGVyc2lzdGVkOiB0cnVlLCBh
bmQgd2luZG93Lmhpc3Rvcnkuc3RhdGUgaXM6IG9ubG9hZENhbGxlZCIsIHJlY2VpdmVkTWVzc2Fn
ZXMuZ2V0KClbM10pOworICAgIEVYUEVDVF9XS19TVFJFUShAIlBhZ2VTaG93IGNhbGxlZC4gUGVy
c2lzdGVkOiB0cnVlLCBhbmQgd2luZG93Lmhpc3Rvcnkuc3RhdGUgaXM6IG9ubG9hZENhbGxlZCIs
IHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbNF0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIlBhZ2VT
aG93IGNhbGxlZC4gUGVyc2lzdGVkOiB0cnVlLCBhbmQgd2luZG93Lmhpc3Rvcnkuc3RhdGUgaXM6
IG9ubG9hZENhbGxlZCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbNV0pOworCisgICAgRVhQRUNU
X0VRKDR1LCBzZWVuUElEcy5zaXplKCkpOwogfQogCiBURVNUKFByb2Nlc3NTd2FwLCBCYWNrV2l0
aG91dFN1c3BlbmRlZFBhZ2UpCkBAIC0xMTE0LDcgKzExNTcsNyBAQCBURVNUKFByb2Nlc3NTd2Fw
LCBNYWluRnJhbWVzT25seSkKICAgICBFWFBFQ1RfRVEoMXUsIHNlZW5QSURzLnNpemUoKSk7CiB9
CiAKLVRFU1QoUHJvY2Vzc1N3YXAsIE9uZVByZXZpb3VzUHJvY2Vzc1JlbWFpbnMpCitURVNUKFBy
b2Nlc3NTd2FwLCBUaHJlZVByZXZpb3VzUHJvY2Vzc2VzUmVtYWlucykKIHsKICAgICBhdXRvIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFBy
b2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOwpAQCAtMTE0NywxMSArMTE5MCwyMyBAQCBURVNU
KFByb2Nlc3NTd2FwLCBPbmVQcmV2aW91c1Byb2Nlc3NSZW1haW5zKQogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwogCi0gICAgLy8gTmF2aWdh
dGlvbnMgdG8gMyBkaWZmZXJlbnQgZG9tYWlucywgd2UgZXhwZWN0IHRvIGhhdmUgc2VlbiAzIGRp
ZmZlcmVudCBQSURzCi0gICAgRVhQRUNUX0VRKDN1LCBzZWVuUElEcy5zaXplKCkpOworICAgIHJl
cXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAicHNvbjovL3d3dy5iaW5nLmNvbS9tYWluLmh0bWwiXV07CisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6cmVxdWVzdF07CiAKLSAgICAvLyBCdXQgb25seSAyIG9mIHRob3NlIHByb2Nlc3NlcyBz
aG91bGQgc3RpbGwgYmUgYWxpdmUKLSAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9vbCBfd2Vi
UHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIHJlcXVlc3QgPSBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL3d3dy55
YWhvby5jb20vbWFpbi5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3Rd
OworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFs
c2U7CisKKyAgICAvLyBOYXZpZ2F0aW9ucyB0byA1IGRpZmZlcmVudCBkb21haW5zLCB3ZSBleHBl
Y3QgdG8gaGF2ZSBzZWVuIDUgZGlmZmVyZW50IFBJRHMKKyAgICBFWFBFQ1RfRVEoNXUsIHNlZW5Q
SURzLnNpemUoKSk7CisKKyAgICAvLyBCdXQgb25seSA0IG9mIHRob3NlIHByb2Nlc3NlcyBzaG91
bGQgc3RpbGwgYmUgYWxpdmUgKDEgdmlzaWJsZSwgMyBzdXNwZW5kZWQpLgorICAgIEVYUEVDVF9F
USg0dSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZF0pOwog
fQogCiBzdGF0aWMgY29uc3QgY2hhciogcGFnZUNhY2hlMUJ5dGVzID0gUiJQU09OUkVTT1VSQ0Uo
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352663</attachid>
            <date>2018-10-17 16:57:05 -0700</date>
            <delta_ts>2018-10-17 18:22:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190688-20181017165705.patch</filename>
            <type>text/plain</type>
            <size>36139</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNkYTVkMjZiOThhOGNhMDBm
YjQxZjY5MmRkMjU1NmViNjliZWNjNGUuLjBhNTNhMDVjZWYzYWFkOTE0MDUzZWVjNDg0NDIxOWYw
OTNjMzQzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTgtMTAtMTcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbUFNPTl0gQ2FwIG51bWJlciBvZiBT
dXNwZW5kZWRQYWdlUHJveHkgb2JqZWN0cyBhbmQgYWxsb3cgYSBXZWJQYWdlUHJveHkgdG8gaGF2
ZSBtb3JlIHRoYW4gb25lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTA2ODgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MzU0MDk1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENhcCBudW1iZXIgb2Yg
U3VzcGVuZGVkUGFnZVByb3h5IG9iamVjdHMgdG8gMyB0byBhdm9pZCBhY2N1bXVsYXRpbmcgdG9v
IG1hbnkgInN1c3BlbmRlZCIgcHJvY2Vzc2VzLgorCisgICAgICAgIEFsc28gYWxsb3cgYSBXZWJQ
YWdlUHJveHkgdG8gaGF2ZSBtb3JlIHRoYW4gb25lIFN1c3BlbmRlZFBhZ2VQcm94eSBzbyB0aGF0
IFBhZ2VDYWNoZSBub3cgd29ya3MgZm9yCisgICAgICAgIG1vcmUgdGhhbiAxIGhpc3RvcnkgbmF2
aWdhdGlvbiAodXAgdG8gMyB3aXRoIHRoZSBzdXNwZW5kZWQgcGFnZSBsaW1pdCBpbiB0aGlzIHBh
dGNoKS4KKworICAgICAgICBUaGUgZm9sbG93aW5nIGNsZWFudXAgLyByZWZhY3RvcmluZyB3YXMg
bWFkZSB0byBzdXBwb3J0IHRoaXM6CisgICAgICAgIC0gVGhlIFN1c3BlbmRlZFBhZ2VQcm94eSBv
YmplY3RzIGFyZSBub3cgb3duZWQgYnkgdGhlIFdlYlByb2Nlc3NQb29sIGluc3RlYWQgb2YgdGhl
IFdlYlBhZ2VQcm94eS4KKyAgICAgICAgICBUaGUgV2ViUHJvY2Vzc1Bvb2wgaXMgaW4gY2hhcmdl
IG9mIGxpbWl0aW5nIHRoZSBudW1iZXIgb2YgU3VzcGVuZGVkUGFnZVByb3h5IG9iamVjdHMgYnkg
ZHJvcHBpbmcKKyAgICAgICAgICB0aGUgb2xkZXN0IG9uZSB3aGVuZXZlciBhIFdlYlBhZ2VQcm94
eSB0cmllcyB0byBhZGQgYSBuZXcgb25lIGFuZCB3ZSd2ZSBhbHJlYWR5IHJlYWNoZWQgdGhlIGxp
bWl0LgorICAgICAgICAtIFdlYlByb2Nlc3NQcm94eSBubyBsb25nZXIgbmVlZHMgdG8ga25vdyBh
bnl0aGluZyBhYm91dCBzdXNwZW5kZWQgcGFnZXMsIHdoaWNoIHNpbXBsaWZpZXMgdGhlCisgICAg
ICAgICAgY29kZSBxdWl0ZSBhIGJpdC4gSW5zdGVhZCwgdGhlIFN1c3BlbmRlZFBhZ2VQcm94eSBv
YmplY3RzIG5vdyByZWdpc3RlciB0aGVtc2VsdmVzIGFzCisgICAgICAgICAgSVBDOjpNZXNzYWdl
UmVjZWl2ZXJzIHdpdGggdGhlaXIgV2ViUHJvY2Vzc1Byb3h5LiBUaGUgU3VzcGVuZGVkUGFnZVBy
b3h5IGFsc28gdGFrZSBjYXJlIG9mCisgICAgICAgICAgY2FsbGluZyBtYXliZVNodXRkb3duKCkg
b24gdGhlaXIgV2ViUHJvY2Vzc1Byb3h5IHdoZW4gdGhleSBnZXQgZGVzdHJveWVkLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlN1c3BlbmRlZFBhZ2VQcm94eTo6flN1c3BlbmRlZFBhZ2VQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6dGVhckRvd25EcmF3aW5nQXJlYUluV2ViUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6dW5zdXNwZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAg
KFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNw
ZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojpzd2FwVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5O
ZXdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21wbGV0ZVBh
Z2VUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjplbnRlckFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWRkU3VzcGVuZGVkUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUFsbFN1c3BlbmRlZFBhZ2VQcm94aWVz
Rm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp0YWtlU3VzcGVuZGVk
UGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Omhhc1N1c3BlbmRl
ZFBhZ2VQcm94eUZvcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGVPckZhaWxlZFRvTGF1bmNoKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjYW5UZXJtaW5hdGVDaGlsZFByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlcXVlc3RUZXJtaW5hdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorCiAyMDE4LTEwLTE3ICBB
bGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGbGFreSBJbnRlcnNlY3Rp
b25PYnNlcnZlciB3ZWIgcGxhdGZvcm0gdGVzdHMgaW52b2x2aW5nIHN0eWxlIHVwZGF0ZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDAy
YWM2NjFiYTc4YWE0NzY5NjRhNDZmYTZiYzkzNGQ2OTdjNzZlZGYuLjE0YzUzMjcyMTk0YzIzNDAz
NDc1YjZkMTMyY2ZkNzhkYWExZGI0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtODEsNDQgKzgxLDQ0IEBAIFN1c3BlbmRlZFBhZ2VQ
cm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nl
c3NQcm94eT4mCiAgICAgLCBtX29yaWdpbihTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoeyB7
IH0sIGl0ZW0udXJsKCkgfSkpCiB7CiAgICAgaXRlbS5zZXRTdXNwZW5kZWRQYWdlKCp0aGlzKTsK
LSAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucmVnaXN0ZXJTdXNwZW5kZWRQYWdlUHJveHko
KnRoaXMpOworICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpLCAqdGhpcyk7
CisKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVk
KHRydWUpLCBtX3BhZ2UucGFnZUlEKCkpOwogfQogCiBTdXNwZW5kZWRQYWdlUHJveHk6On5TdXNw
ZW5kZWRQYWdlUHJveHkoKQogewotICAgIGlmIChhdXRvIHByb2Nlc3MgPSBtX3Byb2Nlc3MpIHsK
LSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SXNTdXNwZW5kZWQo
ZmFsc2UpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAgICAgICBwcm9jZXNzLT5zdXNwZW5kZWRQYWdl
V2FzRGVzdHJveWVkKCp0aGlzKTsKLSAgICAgICAgcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS51bnJl
Z2lzdGVyU3VzcGVuZGVkUGFnZVByb3h5KCp0aGlzKTsKLSAgICB9Ci19Ci0KLXZvaWQgU3VzcGVu
ZGVkUGFnZVByb3h5Ojp3ZWJQcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
KQotewotICAgIEFTU0VSVF9VTlVTRUQocHJvY2VzcywgJnByb2Nlc3MgPT0gbV9wcm9jZXNzKTsK
KyAgICBpZiAoIW1faXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS51bnJlZ2lzdGVyU3VzcGVuZGVkUGFnZVByb3h5KCp0aGlzKTsKLSAg
ICBtX3Byb2Nlc3MgPSBudWxscHRyOworICAgIC8vIElmIHRoZSBzdXNwZW5kZWQgcGFnZSB3YXMg
bm90IGNvbnN1bWVkIGJlZm9yZSBnZXR0aW5nIGRlc3Ryb3llZCwgdGhlbiBjbG9zZSB0aGUgY29y
cmVzcG9uZGluZyBwYWdlCisgICAgLy8gb24gdGhlIFdlYlByb2Nlc3Mgc2lkZS4KKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1fcGFnZS5wYWdlSUQoKSk7
CisgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwogCi0gICAgLy8g
VGhpcyB3aWxsIGRlc3Ryb3kgfHRoaXN8LgotICAgIG1fcGFnZS5zdXNwZW5kZWRQYWdlQ2xvc2Vk
KCp0aGlzKTsKKyAgICAvLyBXZSBjYWxsIG1heWJlU2h1dERvd24oKSBhc3luY2hyb25vdXNseSBz
aW5jZSB0aGUgU3VzcGVuZGVkUGFnZSBpcyBjdXJyZW50bHkgYmVpbmcgcmVtb3ZlZCBmcm9tIHRo
ZSBXZWJQcm9jZXNzUG9vbAorICAgIC8vIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHJlLWVudGVyaW5n
IFdlYlByb2Nlc3NQb29sIG1ldGhvZHMuCisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtw
cm9jZXNzID0gbV9wcm9jZXNzLmNvcHlSZWYoKV0geworICAgICAgICBwcm9jZXNzLT5tYXliZVNo
dXREb3duKCk7CisgICAgfSk7CiB9CiAKLXZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkZXN0cm95
V2ViUGFnZUluV2ViUHJvY2VzcygpCit2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6dGVhckRvd25E
cmF3aW5nQXJlYUluV2ViUHJvY2VzcygpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAgIG1fcGFnZS5zdXNwZW5k
ZWRQYWdlQ2xvc2VkKCp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlRlYXJEb3duRHJhd2luZ0FyZWFGb3JTdXNwZW5kKCksIG1fcGFnZS5wYWdlSUQoKSk7CiB9
CiAKLXZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojp0ZWFyRG93bkRyYXdpbmdBcmVhSW5XZWJQcm9j
ZXNzKCkKK3ZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojp1bnN1c3BlbmQoKQogewotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGVhckRvd25EcmF3aW5nQXJlYUZvclN1c3Bl
bmQoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBBU1NFUlQobV9pc1N1c3BlbmRlZCk7CisKKyAg
ICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7CisgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3Bh
Z2UucGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
SXNTdXNwZW5kZWQoZmFsc2UpLCBtX3BhZ2UucGFnZUlEKCkpOwogfQogCiB2b2lkIFN1c3BlbmRl
ZFBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZCgpCiB7Ci0gICAgQVNTRVJUKG1fcHJvY2Vzcyk7CiAg
ICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlN1c3BlbmRlZFBhZ2VQcm94eSAlcyBmcm9tIHByb2Nl
c3MgJWkgZmluaXNoZWQgdHJhbnNpdGlvbiB0byBzdXNwZW5kZWQiLCBsb2dnaW5nU3RyaW5nKCks
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAKICNpZiAhTE9HX0RJU0FCTEVECkBA
IC0xNDIsNiArMTQyLDEwIEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImIGRlY29kCiAjZW5kaWYKIH0KIAor
dm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpCit7
Cit9CisKICNpZiAhTE9HX0RJU0FCTEVECiBjb25zdCBjaGFyKiBTdXNwZW5kZWRQYWdlUHJveHk6
OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNw
ZW5kZWRQYWdlUHJveHkuaAppbmRleCAwNGM0ZWNmMjU1NDFiMWM1MGM4NmUxMzMwZTk2YTc5MTVl
YzcyMzdkLi4wZDU1ODVlMGI3YjhiMGU0NjE2NGExYzI4MTZlZTAxY2Q1YWM2NmRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApAQCAtMzYsMjIgKzM2
LDIwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2Vi
UHJvY2Vzc1Byb3h5OwogCi1jbGFzcyBTdXNwZW5kZWRQYWdlUHJveHkgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiB7CitjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHkg
ZmluYWw6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFN1c3BlbmRlZFBhZ2VQcm94eT4gewogcHVibGljOgogICAgIFN1c3BlbmRlZFBhZ2VQcm94eShX
ZWJQYWdlUHJveHkmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtJiwgdWludDY0X3QgbWFpbkZyYW1lSUQpOwogICAgIH5TdXNwZW5kZWRQYWdlUHJveHkoKTsK
IAotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7Ci0KICAgICBXZWJQYWdlUHJveHkmIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7
IH0KLSAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nl
c3MuZ2V0KCk7IH0KKyAgICBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MoKSB7IHJldHVybiBtX3By
b2Nlc3MuZ2V0KCk7IH0KICAgICB1aW50NjRfdCBtYWluRnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFpbkZyYW1lSUQ7IH0KICAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAKLSAgICB2b2lkIHdlYlByb2Nl
c3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkmKTsKLSAgICB2b2lkIGRlc3Ryb3lXZWJQYWdlSW5X
ZWJQcm9jZXNzKCk7CiAgICAgdm9pZCB0ZWFyRG93bkRyYXdpbmdBcmVhSW5XZWJQcm9jZXNzKCk7
CiAKKyAgICB2b2lkIHVuc3VzcGVuZCgpOworCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGNvbnN0
IGNoYXIqIGxvZ2dpbmdTdHJpbmcoKSBjb25zdDsKICNlbmRpZgpAQCAtNTksMTEgKzU3LDE3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CiAKKyAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKSBmaW5hbDsKKwogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwotICAgIFJl
ZlB0cjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKKyAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiBtX3Byb2Nlc3M7CiAgICAgdWludDY0X3QgbV9tYWluRnJhbWVJRDsKICAgICBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgbV9vcmlnaW47CiAKKyAgICBib29sIG1faXNTdXNwZW5kZWQgeyB0
cnVlIH07CisKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgYm9vbCBtX2ZpbmlzaGVkU3VzcGVuZGlu
ZyB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDY0NDE1YjJmNWMzZWJlZDRmMWJhMjA1NjU2ZWU2MDU4YWFlOWE5MDkuLjkyODNk
NmIzODE5MTkyYzcwYzZiYzY4OWM5NDg3MTM5YjNkZDcxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzExLDI3ICs3MTEsMjIgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKCkKICAgICBmaW5pc2hBdHRhY2hpbmdUb1dlYlBy
b2Nlc3MoKTsKIH0KIAotU3VzcGVuZGVkUGFnZVByb3h5KiBXZWJQYWdlUHJveHk6Om1heWJlQ3Jl
YXRlU3VzcGVuZGVkUGFnZShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlv
biYgbmF2aWdhdGlvbiwgdWludDY0X3QgbWFpbkZyYW1lSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6
c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1haW5GcmFtZUlEKQogewotICAgIEFTU0VSVCghbV9z
dXNwZW5kZWRQYWdlIHx8IG1fc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpICE9ICZwcm9jZXNzKTsK
KyAgICBpZiAoIW1haW5GcmFtZUlEKQorICAgICAgICByZXR1cm47CiAKICAgICBhdXRvKiBjdXJy
ZW50SXRlbSA9IG5hdmlnYXRpb24uZnJvbUl0ZW0oKTsKICAgICBpZiAoIWN1cnJlbnRJdGVtKSB7
Ci0gICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIg
dW5hYmxlIHRvIGNyZWF0ZSBzdXNwZW5kZWQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgLSBObyBj
dXJyZW50IGJhY2svZm9yd2FyZCBpdGVtIiwgcGFnZUlEKCksIHByb2Nlc3MucHJvY2Vzc0lkZW50
aWZpZXIoKSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBMT0coUHJvY2Vzc1N3
YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIHVuYWJsZSB0byBjcmVhdGUgc3VzcGVu
ZGVkIHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIC0gTm8gY3VycmVudCBiYWNrL2ZvcndhcmQgaXRl
bSIsIHBhZ2VJRCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9zdXNwZW5kZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxT
dXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBwcm9jZXNzLCAqY3VycmVudEl0ZW0sIG1haW5GcmFt
ZUlEKTsKLQotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0
ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9y
d2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLCBtX3N1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdT
dHJpbmcoKSwgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCBjdXJyZW50SXRlbS0+aXRlbUlE
KCkubG9nU3RyaW5nKCkpOworICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8U3VzcGVuZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKmN1cnJl
bnRJdGVtLCAqbWFpbkZyYW1lSUQpOworICAgIG1fbGFzdFN1c3BlbmRlZFBhZ2UgPSBtYWtlV2Vh
a1B0cihzdXNwZW5kZWRQYWdlLmdldCgpKTsKKyAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
YWRkU3VzcGVuZGVkUGFnZVByb3h5KFdURk1vdmUoc3VzcGVuZGVkUGFnZSkpOwogCi0gICAgcmV0
dXJuIG1fc3VzcGVuZGVkUGFnZS5nZXQoKTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OnN1c3Bl
bmRlZFBhZ2VDbG9zZWQoU3VzcGVuZGVkUGFnZVByb3h5JiBwYWdlKQotewotICAgIEFTU0VSVF9V
TlVTRUQocGFnZSwgJnBhZ2UgPT0gbV9zdXNwZW5kZWRQYWdlLmdldCgpKTsKLSAgICBtX3N1c3Bl
bmRlZFBhZ2UgPSBudWxscHRyOworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJv
eHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQg
JWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLCBtX2xhc3RTdXNwZW5k
ZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
Y3VycmVudEl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnN3YXBUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1haW5GcmFt
ZUlESW5QcmV2aW91c1Byb2Nlc3MpCkBAIC03MzksMTEgKzczNCwxOCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEFQ
STo6TmF2aWdhdAogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzLCAiJXAgV2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzXG4iLCB0
aGlzKTsKIAotICAgIC8vIElmIHRoZSBwcm9jZXNzIHdlJ3JlIGF0dGFjaGluZyB0byBpcyBrZXB0
IGFsaXZlIHNvbGVseSBieSBvdXIgY3VycmVudCBzdXNwZW5kZWQgcGFnZSwKLSAgICAvLyB3ZSBu
ZWVkIHRvIG1haW50YWluIHRoYXQgYnkgdGVtcG9yYXJpbHkga2VlcGluZyB0aGUgc3VzcGVuZGVk
IHBhZ2UgYWxpdmUuCi0gICAgYXV0byBjdXJyZW50U3VzcGVuZGVkUGFnZSA9IFdURk1vdmUobV9z
dXNwZW5kZWRQYWdlKTsKLSAgICBpZiAobWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2VzcykKLSAg
ICAgICAgbV9wcm9jZXNzLT5zdXNwZW5kV2ViUGFnZVByb3h5KCp0aGlzLCBuYXZpZ2F0aW9uLCAq
bWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2Vzcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3Bl
bmRlZFBhZ2VQcm94eT4gZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlOworICAgIGlmIChhdXRvKiBi
YWNrRm9yd2FyZExpc3RJdGVtID0gbmF2aWdhdGlvbi50YXJnZXRJdGVtKCkpIHsKKyAgICAgICAg
aWYgKGJhY2tGb3J3YXJkTGlzdEl0ZW0tPnN1c3BlbmRlZFBhZ2UoKSAmJiAmYmFja0ZvcndhcmRM
aXN0SXRlbS0+c3VzcGVuZGVkUGFnZSgpLT5wcm9jZXNzKCkgPT0gcHJvY2Vzcy5wdHIoKSkgewor
ICAgICAgICAgICAgZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlID0gdGhpcy0+cHJvY2VzcygpLnBy
b2Nlc3NQb29sKCkudGFrZVN1c3BlbmRlZFBhZ2VQcm94eSgqYmFja0ZvcndhcmRMaXN0SXRlbS0+
c3VzcGVuZGVkUGFnZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChkZXN0aW5hdGlvblN1c3BlbmRl
ZFBhZ2UpOworICAgICAgICAgICAgZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLT51bnN1c3BlbmQo
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
SUQpOworICAgIHN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUobmF2aWdhdGlvbiwgbWFpbkZy
YW1lSURJblByZXZpb3VzUHJvY2Vzcyk7CisgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0
aGlzLCBtX3BhZ2VJRCk7CiAKICAgICBtX3Byb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpOwogICAg
IG1faXNWYWxpZCA9IHRydWU7CkBAIC03NTIsMTAgKzc1NCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6
TmF2aWdhdAogICAgIC8vIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKCkgd2lsbCBu
b3QgYmUgY2FsbGVkIHRvIGluaXRpYWxpemUgbV9tYWluRnJhbWUuIEluIHN1Y2gKICAgICAvLyBj
YXNlLCB3ZSBuZWVkIHRvIGluaXRpYWxpemUgbV9tYWluRnJhbWUgdG8gcmVmbGVjdCB0aGUgZmFj
dCB0aGUgdGhlIFdlYlByb2Nlc3MnIFdlYlBhZ2UKICAgICAvLyBhbHJlYWR5IGV4aXN0cyBhbmQg
YWxyZWFkeSBoYXMgYSBtYWluIGZyYW1lLgotICAgIGlmIChjdXJyZW50U3VzcGVuZGVkUGFnZSAm
JiBjdXJyZW50U3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpID09IG1fcHJvY2Vzcy5wdHIoKSkgewor
ICAgIGlmIChkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UpIHsKICAgICAgICAgQVNTRVJUKCFtX21h
aW5GcmFtZSk7Ci0gICAgICAgIG1fbWFpbkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRlKHRo
aXMsIGN1cnJlbnRTdXNwZW5kZWRQYWdlLT5tYWluRnJhbWVJRCgpKTsKLSAgICAgICAgbV9wcm9j
ZXNzLT5mcmFtZUNyZWF0ZWQoY3VycmVudFN1c3BlbmRlZFBhZ2UtPm1haW5GcmFtZUlEKCksICpt
X21haW5GcmFtZSk7CisgICAgICAgIEFTU0VSVCgmZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLT5w
cm9jZXNzKCkgPT0gbV9wcm9jZXNzLnB0cigpKTsKKyAgICAgICAgbV9tYWluRnJhbWUgPSBXZWJG
cmFtZVByb3h5OjpjcmVhdGUodGhpcywgZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLT5tYWluRnJh
bWVJRCgpKTsKKyAgICAgICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQoZGVzdGluYXRpb25TdXNw
ZW5kZWRQYWdlLT5tYWluRnJhbWVJRCgpLCAqbV9tYWluRnJhbWUpOwogICAgIH0KIAogICAgIGZp
bmlzaEF0dGFjaGluZ1RvV2ViUHJvY2VzcygpOwpAQCAtOTI4LDYgKzkzMSw4IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpjbG9zZSgpCiAKICAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIucGFn
ZVdhc0ludmFsaWRhdGVkKCk7CiAKKyAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucmVtb3Zl
QWxsU3VzcGVuZGVkUGFnZVByb3hpZXNGb3JQYWdlKCp0aGlzKTsKKwogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vz
cy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlSUQpOwpAQCAtMjU1NCw3ICsyNTU5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRp
b24sIFIKIAogICAgICAgICBhdXRvIGl0ZW1TdGF0ZXMgPSBtX2JhY2tGb3J3YXJkTGlzdC0+Zmls
dGVyZWRJdGVtU3RhdGVzKFt0aGlzLCB0YXJnZXRJdGVtID0gaXRlbV0oV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSYgaXRlbSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBpdGVtLnN1c3Bl
bmRlZFBhZ2UoKSkgewotICAgICAgICAgICAgICAgIGlmIChwYWdlLT5wcm9jZXNzKCkgPT0gbV9w
cm9jZXNzLnB0cigpKQorICAgICAgICAgICAgICAgIGlmICgmcGFnZS0+cHJvY2VzcygpID09IG1f
cHJvY2Vzcy5wdHIoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuICZpdGVtICE9IHRhcmdldEl0ZW07CkBAIC0zNDkw
LDcgKzM0OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoUHJvZ3Jlc3MoKQogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24oYm9vbCBpc0luaXRpYWxF
bXB0eURvY3VtZW50KQogewogICAgIC8vIEF0dGFjaCBkcmF3aW5nIGFyZWEgZm9yIHRoZSBpbml0
aWFsIGVtcHR5IGRvY3VtZW50IG9ubHkgaWYgdGhpcyBpcyBub3QgYSBwcm9jZXNzIHN3YXAuCi0g
ICAgaWYgKGlzSW5pdGlhbEVtcHR5RG9jdW1lbnQgJiYgbV9zdXNwZW5kZWRQYWdlKQorICAgIGlm
IChpc0luaXRpYWxFbXB0eURvY3VtZW50ICYmIG1fbGFzdFN1c3BlbmRlZFBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTM1MDAsOCArMzUwNSw4IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uKGJvb2wgaXNJbml0aWFsRW1w
dHlEb2N1bWVudCkKICAgICAvLyBEcmF3aW5nIGFyZWEgZm9yIHRoZSBzdXNwZW5kZWQgcGFnZSB3
aWxsIGJlIHRvcm4gZG93biB3aGVuIHRoZSBhdHRhY2ggY29tcGxldGVzLgogICAgIG1fZHJhd2lu
Z0FyZWEtPmF0dGFjaEluV2ViUHJvY2VzcygpOwogI2Vsc2UKLSAgICBpZiAobV9zdXNwZW5kZWRQ
YWdlKQotICAgICAgICBtX3N1c3BlbmRlZFBhZ2UtPnRlYXJEb3duRHJhd2luZ0FyZWFJbldlYlBy
b2Nlc3MoKTsKKyAgICBpZiAobV9sYXN0U3VzcGVuZGVkUGFnZSkKKyAgICAgICAgbV9sYXN0U3Vz
cGVuZGVkUGFnZS0+dGVhckRvd25EcmF3aW5nQXJlYUluV2ViUHJvY2VzcygpOwogI2VuZGlmCiB9
CiAKQEAgLTYzOTUsOCArNjQwMCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbnRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyCiAgICAgcGFn
ZUNsaWVudCgpLmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUobGF5ZXJUcmVlQ29udGV4
dCk7CiAKICAgICAvLyBXZSBoYXZlIGNvbXBsZXRlZCB0aGUgcGFnZSB0cmFuc2l0aW9uIGFuZCBj
YW4gdGVhciBkb3duIHRoZSBsYXllcnMgaW4gdGhlIHN1c3BlbmRlZCBwcm9jZXNzLgotICAgIGlm
IChtX3N1c3BlbmRlZFBhZ2UpCi0gICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+dGVhckRvd25EcmF3
aW5nQXJlYUluV2ViUHJvY2VzcygpOworICAgIGlmIChtX2xhc3RTdXNwZW5kZWRQYWdlKQorICAg
ICAgICBtX2xhc3RTdXNwZW5kZWRQYWdlLT50ZWFyRG93bkRyYXdpbmdBcmVhSW5XZWJQcm9jZXNz
KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2N2E4ZTA4MTJj
MmI3ZWIxMDY3NWZmOTc4N2RkMzEzZWE5OTIxYjcyLi4xN2EyYTNhMzRmYTUyMTczNWUzNzM2MmNi
NDMzZGU0NGI0OGNmZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMTM1NSwxMCArMTM1NSw2IEBAIHB1YmxpYzoKIAogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUg
cHJlZmVyZW5jZXNTdG9yZSgpIGNvbnN0OwogCi0gICAgU3VzcGVuZGVkUGFnZVByb3h5KiBtYXli
ZUNyZWF0ZVN1c3BlbmRlZFBhZ2UoV2ViUHJvY2Vzc1Byb3h5JiwgQVBJOjpOYXZpZ2F0aW9uJiwg
dWludDY0X3QgbWFpbkZyYW1lSUQpOwotICAgIFN1c3BlbmRlZFBhZ2VQcm94eSogc3VzcGVuZGVk
UGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VzcGVuZGVkUGFnZS5nZXQoKTsgfQotICAgIHZvaWQg
c3VzcGVuZGVkUGFnZUNsb3NlZChTdXNwZW5kZWRQYWdlUHJveHkmKTsKLQogICAgIHZvaWQgc2V0
RGVmZXJzTG9hZGluZ0ZvclRlc3RpbmcoYm9vbCk7CiAKICAgICBXZWJDb3JlOjpJbnRSZWN0IHN5
bmNSb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0KTsKQEAg
LTEzNzksNiArMTM3NSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRl
KCk7CiAgICAgdm9pZCB1cGRhdGVIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXMoKTsK
IAorICAgIHZvaWQgc3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24m
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtYWluRnJhbWVJRCk7CisKICAgICBlbnVtIGNsYXNz
IFJlc2V0U3RhdGVSZWFzb24gewogICAgICAgICBQYWdlSW52YWxpZGF0ZWQsCiAgICAgICAgIFdl
YlByb2Nlc3NFeGl0ZWQsCkBAIC0yMjYwLDEwICsyMjU4LDggQEAgcHJpdmF0ZToKIAogICAgIHN0
ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGltZT4gbV9wYWdlTG9hZFN0YXJ0OwogCi0gICAgLy8gRklY
TUU6IFN1cHBvcnQgbW9yZSB0aGFuIG9uZSBzdXNwZW5kZWQgcGFnZSBwZXIgV2ViUGFnZVByb3h5
LAotICAgIC8vIGFuZCBoYXZlIGEgZ2xvYmFsIGNvbGxlY3Rpb24gb2YgdGhlbSBwZXIgcHJvY2Vz
cyBwb29sCi0gICAgLy8gKGUuZy4gZm9yIHRoYXQgcHJvY2VzcyBwb29sJ3MgcGFnZSBjYWNoZSkK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2U7
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgYW5kIGdldCByaWQgb2YgdGhpcyBkYXRhIG1l
bWJlci4KKyAgICBXZWFrUHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gbV9sYXN0U3VzcGVuZGVkUGFn
ZTsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPFdlYlBhZ2VQcm94eT4gbV9yZXNldFJlY2VudENyYXNo
Q291bnRUaW1lcjsKICAgICB1bnNpZ25lZCBtX3JlY2VudENyYXNoQ291bnQgeyAwIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYTcyYjU3MTJlMWY2
NjIzNjZmNDQ0YWU0OTZmMmIzNWJjN2M0OTk2Yi4uOTQ0OWE4MDA1ZTM4NzQwMzMyYWFkNWY0NzNh
ZjMwNzRiMWExMDc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcApAQCAtMTI0LDcgKzEyNCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBERUZJ
TkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHByb2Nlc3NQ
b29sQ291bnRlciwgKCJXZWJQcm9jZXNzUG9vbCIpKTsKIAotc3RhdGljIGNvbnN0IFNlY29uZHMg
c2VydmljZVdvcmtlclRlcm1pbmF0aW9uRGVsYXkgeyA1X3MgfTsKK2NvbnN0IFNlY29uZHMgc2Vy
dmljZVdvcmtlclRlcm1pbmF0aW9uRGVsYXkgeyA1X3MgfTsKK2NvbnN0IHVuc2lnbmVkIG1heGlt
dW1TdXNwZW5kZWRQYWdlc0NvdW50IHsgMyB9OwogCiBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVM
aXN0ZW5lcklkZW50aWZpZXIoKQogewpAQCAtMTAyMiw2ICsxMDIzLDEwIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAg
ICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9PSBwcm9jZXNzKQogICAgICAgICBtX3Byb2Nl
c3NXaXRoUGFnZUNhY2hlID0gbnVsbHB0cjsKIAorICAgIG1fc3VzcGVuZGVkUGFnZXMucmVtb3Zl
QWxsTWF0Y2hpbmcoW3Byb2Nlc3NdKGF1dG8mIHN1c3BlbmRlZFBhZ2UpIHsKKyAgICAgICAgcmV0
dXJuICZzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCkgPT0gcHJvY2VzczsKKyAgICB9KTsKKwogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoaXM8U2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eT4oKnByb2Nlc3MpKSB7CiAgICAgICAgIGF1dG8qIHJlbW92ZWRQcm9jZXNzID0gbV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzLnRha2UoZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nlc3NQcm94
eT4oKnByb2Nlc3MpLnNlY3VyaXR5T3JpZ2luKCkpOwpAQCAtMjExNywxMCArMjEyMiw5IEBAIFJl
ZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbklu
dGVybmFsKFdlYlBhZ2VQcm94eSYKIAogICAgIGlmIChhdXRvKiBiYWNrRm9yd2FyZExpc3RJdGVt
ID0gbmF2aWdhdGlvbi50YXJnZXRJdGVtKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHN1c3BlbmRl
ZFBhZ2UgPSBiYWNrRm9yd2FyZExpc3RJdGVtLT5zdXNwZW5kZWRQYWdlKCkpIHsKLSAgICAgICAg
ICAgIEFTU0VSVChzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCkpOwogICAgICAgICAgICAgYWN0aW9u
ID0gUG9saWN5QWN0aW9uOjpTdXNwZW5kOwogICAgICAgICAgICAgcmVhc29uID0gIlVzaW5nIHRh
cmdldCBiYWNrL2ZvcndhcmQgaXRlbSdzIHByb2Nlc3MiX3M7Ci0gICAgICAgICAgICByZXR1cm4g
KnN1c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKTsKKyAgICAgICAgICAgIHJldHVybiBzdXNwZW5kZWRQ
YWdlLT5wcm9jZXNzKCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGJh
Y2svZm9yd2FyZCBpdGVtIGFuZCB0aGUgY3VycmVudCBiYWNrL2ZvcndhcmQgaXRlbSBvcmlnaW5h
dGVkCkBAIC0yMTcxLDEwICsyMTc1LDcgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwoV2ViUGFnZVByb3h5JgogICAgICAg
ICAgICAgICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIHRoaXMgV2ViUHJvY2VzcyBoYXMgYSBTdXNw
ZW5kZWRQYWdlUHJveHkgZm9yIHRoaXMgV2ViUGFnZSwgd2UgY2FuIHRocm93IGl0IGF3YXkgdG8g
c3VwcG9ydAogICAgICAgICAgICAgICAgIC8vIFdlYlByb2Nlc3MgcmUtdXNlLgogICAgICAgICAg
ICAgICAgIC8vIEluIHRoZSBmdXR1cmUgaXQgd291bGQgYmUgZ3JlYXQgdG8gcmVmYWN0b3Itb3V0
IHRoaXMgbGltaXRhdGlvbi4KLSAgICAgICAgICAgICAgICBpZiAoYXV0byogc3VzcGVuZGVkUGFn
ZSA9IHBhZ2Uuc3VzcGVuZGVkUGFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIExPRyhQcm9j
ZXNzU3dhcHBpbmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBEZXN0cm95aW5nIHN1c3BlbmRlZCBwYWdl
IGZvciB0aGF0IHN3YXAiKTsKLSAgICAgICAgICAgICAgICAgICAgc3VzcGVuZGVkUGFnZS0+ZGVz
dHJveVdlYlBhZ2VJbldlYlByb2Nlc3MoKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5yZW1vdmVBbGxTdXNwZW5kZWRQYWdl
UHJveGllc0ZvclBhZ2UocGFnZSk7CiAKICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVJlZigq
cHJvY2Vzcyk7CiAgICAgICAgICAgICB9CkBAIC0yMTkxLDMwICsyMTkyLDMzIEBAIFJlZjxXZWJQ
cm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFs
KFdlYlBhZ2VQcm94eSYKICAgICByZXR1cm4gY3JlYXRlTmV3V2ViUHJvY2VzcyhwYWdlLndlYnNp
dGVEYXRhU3RvcmUoKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyU3VzcGVu
ZGVkUGFnZVByb3h5KFN1c3BlbmRlZFBhZ2VQcm94eSYgcGFnZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmFkZFN1c3BlbmRlZFBhZ2VQcm94eShzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVBy
b3h5PiYmIHN1c3BlbmRlZFBhZ2UpCiB7Ci0gICAgYXV0byYgdmVjdG9yID0gbV9zdXNwZW5kZWRQ
YWdlcy5lbnN1cmUocGFnZS5vcmlnaW4oKSwgW10gewotICAgICAgICByZXR1cm4gVmVjdG9yPFN1
c3BlbmRlZFBhZ2VQcm94eSo+IHsgfTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgaWYg
KG1fc3VzcGVuZGVkUGFnZXMuc2l6ZSgpID49IG1heGltdW1TdXNwZW5kZWRQYWdlc0NvdW50KQor
ICAgICAgICBtX3N1c3BlbmRlZFBhZ2VzLnJlbW92ZUZpcnN0KCk7CiAKLSAgICB2ZWN0b3IuYXBw
ZW5kKCZwYWdlKTsKLQotI2lmICFMT0dfRElTQUJMRUQKLSAgICBpZiAodmVjdG9yLnNpemUoKSA+
IDUpCi0gICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTZWN1cml0eSBvcmlnaW4gJXMgbm93
IGhhcyAlenUgc3VzcGVuZGVkIHBhZ2VzICh0aGlzIHNlZW1zIHVuZXhwZWN0ZWQpIiwgcGFnZS5v
cmlnaW4oKS5kZWJ1Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHZlY3Rvci5zaXplKCkpOwotI2Vu
ZGlmCisgICAgbV9zdXNwZW5kZWRQYWdlcy5hcHBlbmQoV1RGTW92ZShzdXNwZW5kZWRQYWdlKSk7
CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJTdXNwZW5kZWRQYWdlUHJveHko
U3VzcGVuZGVkUGFnZVByb3h5JiBwYWdlKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlQWxs
U3VzcGVuZGVkUGFnZVByb3hpZXNGb3JQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICBh
dXRvIGl0ZXJhdG9yID0gbV9zdXNwZW5kZWRQYWdlcy5maW5kKHBhZ2Uub3JpZ2luKCkpOwotICAg
IEFTU0VSVChpdGVyYXRvciAhPSBtX3N1c3BlbmRlZFBhZ2VzLmVuZCgpKTsKKyAgICBtX3N1c3Bl
bmRlZFBhZ2VzLnJlbW92ZUFsbE1hdGNoaW5nKFsmcGFnZV0oYXV0byYgc3VzcGVuZGVkUGFnZSkg
eworICAgICAgICByZXR1cm4gJnN1c3BlbmRlZFBhZ2UtPnBhZ2UoKSA9PSAmcGFnZTsKKyAgICB9
KTsKK30KIAotICAgIGF1dG8gcmVzdWx0ID0gaXRlcmF0b3ItPnZhbHVlLnJlbW92ZUZpcnN0KCZw
YWdlKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK3N0ZDo6dW5pcXVlX3B0
cjxTdXNwZW5kZWRQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjp0YWtlU3VzcGVuZGVkUGFnZVBy
b3h5KFN1c3BlbmRlZFBhZ2VQcm94eSYgc3VzcGVuZGVkUGFnZSkKK3sKKyAgICByZXR1cm4gbV9z
dXNwZW5kZWRQYWdlcy50YWtlRmlyc3QoWyZzdXNwZW5kZWRQYWdlXShhdXRvJiBpdGVtKSB7Cisg
ICAgICAgIHJldHVybiBpdGVtLmdldCgpID09ICZzdXNwZW5kZWRQYWdlOworICAgIH0pOworfQog
Ci0gICAgaWYgKGl0ZXJhdG9yLT52YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIG1fc3VzcGVuZGVk
UGFnZXMucmVtb3ZlKGl0ZXJhdG9yKTsKK2Jvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1N1c3BlbmRl
ZFBhZ2VQcm94eUZvcihXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit7CisgICAgcmV0dXJuIG1f
c3VzcGVuZGVkUGFnZXMuZmluZElmKFsmcHJvY2Vzc10oYXV0byYgc3VzcGVuZGVkUGFnZSkgewor
ICAgICAgICByZXR1cm4gJnN1c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKSA9PSAmcHJvY2VzczsKKyAg
ICB9KSAhPSBtX3N1c3BlbmRlZFBhZ2VzLmVuZCgpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29s
OjphZGRNb2NrTWVkaWFEZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJiBkZXZpY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA2ODJhYzJmMmQ0ZjZlZmY0
ZWJjYjkyNDVmYjI0OGIyZGY2ODI5MGRiLi5mMmMxYTJhMTYwOGViYWIxZWNlODEwMjUyNjE1OWQ3
ZDAzMDVlMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAg
LTQ0MCw4ICs0NDAsMTMgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBSZWY8V2ViUHJvY2Vzc1By
b3h5PiBwcm9jZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBjb25zdCBBUEk6Ok5hdmln
YXRpb24mLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJDb3JlOjpQb2xpY3lBY3Rp
b24mLCBTdHJpbmcmIHJlYXNvbik7Ci0gICAgdm9pZCByZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94
eShTdXNwZW5kZWRQYWdlUHJveHkmKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTdXNwZW5kZWRQYWdl
UHJveHkoU3VzcGVuZGVkUGFnZVByb3h5Jik7CisKKyAgICAvLyBTdXNwZW5kZWRQYWdlUHJveHkg
bWFuYWdlbWVudC4KKyAgICB2b2lkIGFkZFN1c3BlbmRlZFBhZ2VQcm94eShzdGQ6OnVuaXF1ZV9w
dHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmKTsKKyAgICB2b2lkIHJlbW92ZUFsbFN1c3BlbmRlZFBh
Z2VQcm94aWVzRm9yUGFnZShXZWJQYWdlUHJveHkmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3Vz
cGVuZGVkUGFnZVByb3h5PiB0YWtlU3VzcGVuZGVkUGFnZVByb3h5KFN1c3BlbmRlZFBhZ2VQcm94
eSYpOworICAgIGJvb2wgaGFzU3VzcGVuZGVkUGFnZVByb3h5Rm9yKFdlYlByb2Nlc3NQcm94eSYp
OworCiAgICAgdm9pZCBkaWRSZWFjaEdvb2RUaW1lVG9QcmV3YXJtKCk7CiAKICAgICB2b2lkIGRp
ZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oY29uc3QgU3RyaW5nJiByZWdpc3RyYWJsZURvbWFp
biwgY29uc3QgV2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uJik7CkBAIC03MDMsNyArNzA4LDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogI2VuZGlmCiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSwgVmVjdG9yPFN1c3BlbmRlZFBhZ2VQcm94eSo+PiBtX3N1c3BlbmRlZFBh
Z2VzOworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+PiBtX3N1
c3BlbmRlZFBhZ2VzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5
Pj4gbV9zd2FwcGVkUHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW47CiAKICAgICBIYXNoTWFw
PFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbj4+IG1f
cHJld2FybUluZm9ybWF0aW9uUGVyUmVnaXN0cmFibGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmZDk5OGUxNmQxNWE4YjExYzZlYzEz
NTNjZjA2NzdmZTkyYzU4ODIzLi44YjZlMzZlNzc3NmUxYjVjZjlhNTZhNjAxNDg3ZGYyNzg1MjE3
OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAg
LTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5m
b1N0b3JlLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKLSNpbmNsdWRlICJT
dXNwZW5kZWRQYWdlUHJveHkuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUg
IlRleHRDaGVja2VyU3RhdGUuaCIKICNpbmNsdWRlICJVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmgiCkBAIC00NDQsMjcgKzQ0Myw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRFeGlz
dGluZ1dlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdlSUQpCiAgICAg
dXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIH0KIAotdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnN1c3BlbmRXZWJQYWdlUHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHVpbnQ2NF90IG1haW5GcmFtZUlEKQotewotICAgIGlm
IChhdXRvKiBzdXNwZW5kZWRQYWdlID0gd2ViUGFnZS5tYXliZUNyZWF0ZVN1c3BlbmRlZFBhZ2Uo
KnRoaXMsIG5hdmlnYXRpb24sIG1haW5GcmFtZUlEKSkgewotICAgICAgICBMT0coUHJvY2Vzc1N3
YXBwaW5nLCAiV2ViUHJvY2Vzc1Byb3h5IHBpZCAlaSBhZGRlZCBzdXNwZW5kZWQgcGFnZSAlcyIs
IHByb2Nlc3NJZGVudGlmaWVyKCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSk7Ci0g
ICAgICAgIG1fc3VzcGVuZGVkUGFnZU1hcC5zZXQod2ViUGFnZS5wYWdlSUQoKSwgc3VzcGVuZGVk
UGFnZSk7Ci0gICAgfQotCi0gICAgcmVtb3ZlV2ViUGFnZSh3ZWJQYWdlLCB3ZWJQYWdlLnBhZ2VJ
RCgpKTsKLSAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB3ZWJQYWdlLnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnN1c3BlbmRlZFBhZ2VXYXNEZXN0cm95ZWQoU3VzcGVuZGVkUGFnZVByb3h5
JiBzdXNwZW5kZWRQYWdlKQotewotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQcm9jZXNz
UHJveHkgcGlkICVpIHN1c3BlbmRlZCBwYWdlICVzIHdhcyBkZXN0cm95ZWQiLCBwcm9jZXNzSWRl
bnRpZmllcigpLCBzdXNwZW5kZWRQYWdlLmxvZ2dpbmdTdHJpbmcoKSk7Ci0KLSAgICBBU1NFUlQo
bV9zdXNwZW5kZWRQYWdlTWFwLmNvbnRhaW5zKHN1c3BlbmRlZFBhZ2UucGFnZSgpLnBhZ2VJRCgp
KSk7Ci0gICAgbV9zdXNwZW5kZWRQYWdlTWFwLnJlbW92ZShzdXNwZW5kZWRQYWdlLnBhZ2UoKS5w
YWdlSUQoKSk7Ci0KLSAgICBtYXliZVNodXREb3duKCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjptYXJrSXNOb0xvbmdlckluUHJld2FybWVkUG9vbCgpCiB7CiAgICAgQVNTRVJUKG1faXNQ
cmV3YXJtZWQpOwpAQCAtNjczLDE1ICs2NTEsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gV2ViUGFnZVByb3h5IG1lc3NhZ2VzIGFy
ZSBub3JtYWxseSBoYW5kbGVkIGJ5IHRoZSBub3JtYWwgImRpc3BhdGNoTWVzc2FnZSIgdXAgYWJv
dmUuCi0gICAgLy8gSWYgdGhleSB3ZXJlIG5vdCBoYW5kbGVkIHRoZXJlLCB0aGVuIHRoZXkgbWF5
IHBvdGVudGlhbGx5IGJlIGhhbmRsZWQgYnkgU3VzcGVuZGVkUGFnZVByb3h5IG9iamVjdHMuCi0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byogc3VzcGVu
ZGVkUGFnZSA9IG1fc3VzcGVuZGVkUGFnZU1hcC5nZXQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkp
KSB7Ci0gICAgICAgICAgICBzdXNwZW5kZWRQYWdlLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQog
ICAgIC8vIEZJWE1FOiBBZGQgdW5oYW5kbGVkIG1lc3NhZ2UgbG9nZ2luZy4KIH0KIApAQCAtNzI5
LDExICs2OTgsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9y
RmFpbGVkVG9MYXVuY2goKQogICAgIH0KICNlbmRpZgogCi0gICAgZm9yIChhdXRvKiBzdXNwZW5k
ZWRQYWdlIDogY29weVRvVmVjdG9yT2Y8U3VzcGVuZGVkUGFnZVByb3h5Kj4obV9zdXNwZW5kZWRQ
YWdlTWFwLnZhbHVlcygpKSkKLSAgICAgICAgc3VzcGVuZGVkUGFnZS0+d2ViUHJvY2Vzc0RpZENs
b3NlKCp0aGlzKTsKLQotICAgIG1fc3VzcGVuZGVkUGFnZU1hcC5jbGVhcigpOwotCiAgICAgZm9y
IChhdXRvJiBwYWdlIDogcGFnZXMpCiAgICAgICAgIHBhZ2UtPnByb2Nlc3NEaWRUZXJtaW5hdGUo
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpDcmFzaCk7CiB9CkBAIC05MDEsNyArODY1LDcgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6Om1heWJlU2h1dERvd24oKQogCiBib29sIFdlYlByb2Nlc3NQ
cm94eTo6Y2FuVGVybWluYXRlQ2hpbGRQcm9jZXNzKCkKIHsKLSAgICBpZiAoIW1fcGFnZU1hcC5p
c0VtcHR5KCkgfHwgIW1fc3VzcGVuZGVkUGFnZU1hcC5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3Bh
Z2VNYXAuaXNFbXB0eSgpIHx8IG1fcHJvY2Vzc1Bvb2wtPmhhc1N1c3BlbmRlZFBhZ2VQcm94eUZv
cigqdGhpcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9wcm9jZXNzUG9v
bC0+c2hvdWxkVGVybWluYXRlKHRoaXMpKQpAQCAtMTAxNSwxMSArOTc5LDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb24g
cmVhc29uKQogCiAgICAgc2h1dERvd24oKTsKIAotICAgIGZvciAoYXV0byogc3VzcGVuZGVkUGFn
ZSA6IGNvcHlUb1ZlY3Rvck9mPFN1c3BlbmRlZFBhZ2VQcm94eSo+KG1fc3VzcGVuZGVkUGFnZU1h
cC52YWx1ZXMoKSkpCi0gICAgICAgIHN1c3BlbmRlZFBhZ2UtPndlYlByb2Nlc3NEaWRDbG9zZSgq
dGhpcyk7Ci0KLSAgICBtX3N1c3BlbmRlZFBhZ2VNYXAuY2xlYXIoKTsKLQogICAgIGZvciAoYXV0
byYgcGFnZSA6IHBhZ2VzKQogICAgICAgICBwYWdlLT5wcm9jZXNzRGlkVGVybWluYXRlKHJlYXNv
bik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGQw
ZTdlY2I1NWNkOWZjODRhOTExOWYwNmRlMGNmNjg3M2NlM2EzZGMuLmFjYzUxZjE4YzM1MTE2ZWI0
ZDUyZTdlOTQzYjZlYzc2ZGEzNmEzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCkBAIC02Nyw3ICs2Nyw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
TmV0d29ya1Byb2Nlc3NQcm94eTsKIGNsYXNzIE9iakNPYmplY3RHcmFwaDsKIGNsYXNzIFBhZ2VD
bGllbnQ7Ci1jbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKIGNsYXNzIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW07CkBAIC0yMDgsOSArMjA3LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29t
bWl0UHJvdmlzaW9uYWxMb2FkKCkgeyBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMg
PSB0cnVlOyB9CiAgICAgYm9vbCBoYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzOyB9CiAKLSAgICB2
b2lkIHN1c3BlbmRXZWJQYWdlUHJveHkoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uJiwg
dWludDY0X3QgbWFpbkZyYW1lSUQpOwotICAgIHZvaWQgc3VzcGVuZGVkUGFnZVdhc0Rlc3Ryb3ll
ZChTdXNwZW5kZWRQYWdlUHJveHkmKTsKLQogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAgICAgdm9p
ZCB0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQoKTsKICAgICB2
b2lkIHJlbGVhc2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbkZvckZ1bGxzY3JlZW5JbnB1dCgpOwpA
QCAtMjMyLDYgKzIyOCw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgd2hlbiB0aGUgd2ViIHBy
b2Nlc3MgaGFzIGNyYXNoZWQgb3Igd2Uga25vdyB0aGF0IGl0IHdpbGwgdGVybWluYXRlIHNvb24u
CiAgICAgLy8gV2lsbCBwb3RlbnRpYWxseSBjYXVzZSB0aGUgV2ViUHJvY2Vzc1Byb3h5IG9iamVj
dCB0byBiZSBmcmVlZC4KICAgICB2b2lkIHNodXREb3duKCk7CisgICAgdm9pZCBtYXliZVNodXRE
b3duKCk7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQYWdlSUQo
KTsKQEAgLTI1MSw4ICsyNDgsNiBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAg
ICB2b2lkIG1heWJlU2h1dERvd24oKTsKLQogICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzLgog
ICAgIHZvaWQgdXBkYXRlQmFja0ZvcndhcmRJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZSYpOwogICAgIHZvaWQgZGlkRGVzdHJveUZyYW1lKHVpbnQ2NF90KTsKQEAgLTM2MSw3ICsz
NTYsNiBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2xvY2FsUGF0aHNXaXRoQXNz
dW1lZFJlYWRBY2Nlc3M7CiAKICAgICBXZWJQYWdlUHJveHlNYXAgbV9wYWdlTWFwOwotICAgIEhh
c2hNYXA8dWludDY0X3QsIFN1c3BlbmRlZFBhZ2VQcm94eSo+IG1fc3VzcGVuZGVkUGFnZU1hcDsK
ICAgICBXZWJGcmFtZVByb3h5TWFwIG1fZnJhbWVNYXA7CiAgICAgVXNlckluaXRpYXRlZEFjdGlv
bk1hcCBtX3VzZXJJbml0aWF0ZWRBY3Rpb25NYXA7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyNzA2OGI4NDc5YzJlNzRlZmViYTQ5MWEzOWE0
OWUzODY1NGUzMTAyLi5hODVhNmRkNjk3ZDU5ZDNjZDI5YzIyMzk3MWZhYTlkMzg5MWFhNjYxIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTgtMTAtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBbUFNPTl0gQ2FwIG51bWJlciBvZiBTdXNwZW5kZWRQYWdlUHJveHkgb2JqZWN0cyBh
bmQgYWxsb3cgYSBXZWJQYWdlUHJveHkgdG8gaGF2ZSBtb3JlIHRoYW4gb25lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2ODgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzQ1MzU0MDk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEV4dGVuZGVkIEFQSSB0ZXN0IGNvdmVyYWdlIHRvIGNvbmZpcm0gdGhh
dDoKKyAgICAgICAgLSBXZSBkbyBub3QgYWNjdW11bGF0ZSBtb3JlIHRoYW4gMyBzdXNwZW5kZWQg
cHJvY2Vzc2VzLgorICAgICAgICAtIFdlIGNhbiBuYXZpZ2F0ZSBiYWNrIDMgdGltZXMgYW5kIHVz
ZSB0aGUgcGFnZSBjYWNoZSBmb3IgZWFjaCBvZiB0aGVzZSBsb2Fkcy4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06
CisKIDIwMTgtMTAtMTYgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIGEgc3dpdGNoIGZvciBXZWIgU1FMCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5t
bQppbmRleCA4NDQ4NDI4NjIwMWRjOGI2YmNlZmQ1ZmJmNmU5MmUyYTVhOGU4NWVlLi4wZWQwYTRi
NmMzMzQ4NmYwMTZlMzQyNDkxYjVhZGUwZmRkNDk1M2I4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5h
dmlnYXRpb24ubW0KQEAgLTQxMiw2ICs0MTIsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBOb1N3YXBw
aW5nRm9yZVRMRFBsdXMyKQogICAgIEVYUEVDVF9FUShudW1iZXJPZkRlY2lkZVBvbGljeUNhbGxz
LCAyKTsKIH0KIAorLy8gV2UgY3VycmVudGx5IGtlZXAgMyBzdXNwZW5kZWQgcGFnZXMgYXJvdW5k
IHNvIHdlIGNhbiBnbyBiYWNrIDMgdGltZXMgYW5kIHVzZSB0aGUgcGFnZSBjYWNoZSBmb3IgZWFj
aCBsb2FkLgogVEVTVChQcm9jZXNzU3dhcCwgQmFjaykKIHsKICAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKQEAgLTQyMiw2ICs0MjMsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBCYWNrKQog
ICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQo
KV07CiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1BTT05TY2hlbWUgYWxsb2NdIGluaXRd
KTsKICAgICBbaGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cud2Vi
a2l0Lm9yZy9tYWluLmh0bWwiIHRvRGF0YTp0ZXN0Qnl0ZXNdOworICAgIFtoYW5kbGVyIGFkZE1h
cHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy5hcHBsZS5jb20vbWFpbi5odG1sIiB0b0Rh
dGE6dGVzdEJ5dGVzXTsKKyAgICBbaGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInBz
b246Ly93d3cuZ29vZ2xlLmNvbS9tYWluLmh0bWwiIHRvRGF0YTp0ZXN0Qnl0ZXNdOwogICAgIFt3
ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9y
VVJMU2NoZW1lOkAiUFNPTiJdOwogCiAgICAgUmV0YWluUHRyPFBTT05NZXNzYWdlSGFuZGxlcj4g
bWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbUFNPTk1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CkBAIC00MzksNyArNDQyLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQmFjaykKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIGRvbmUgPSBmYWxzZTsKIAotICAgIGF1
dG8gcGlkMSA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgYXV0byB3ZWJr
aXRQSUQgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOwogCiAgICAgcmVxdWVzdCA9
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29u
Oi8vd3d3LmFwcGxlLmNvbS9tYWluLmh0bWwiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
cmVxdWVzdF07CkBAIC00NDcsMzAgKzQ1MCw3MCBAQCBURVNUKFByb2Nlc3NTd2FwLCBCYWNrKQog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwog
Ci0gICAgYXV0byBwaWQyID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBh
dXRvIGFwcGxlUElEID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBFWFBF
Q1RfTkUod2Via2l0UElELCBhcHBsZVBJRCk7CiAKLSAgICBbd2ViVmlldyBnb0JhY2tdOworICAg
IHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAicHNvbjovL3d3dy5nb29nbGUuY29tL21haW4uaHRtbCJdXTsKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBnb29nbGVQSUQgPSBbd2ViVmlldyBf
d2ViUHJvY2Vzc0lkZW50aWZpZXJdOworICAgIEVYUEVDVF9ORShhcHBsZVBJRCwgZ29vZ2xlUElE
KTsKKworICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAicHNvbjovL3d3dy5iaW5nLmNvbS9tYWluLmh0bWwiXV07CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gYmluZ1BJRCA9IFt3ZWJW
aWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgRVhQRUNUX05FKGdvb2dsZVBJRCwgYmlu
Z1BJRCk7CisKKyAgICBbd2ViVmlldyBnb0JhY2tdOyAvLyBCYWNrIHRvIGdvb2dsZS5jb20uCiAK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7CiAgICAgcmVj
ZWl2ZWRNZXNzYWdlID0gZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKICAgICBkb25lID0gZmFsc2U7CiAKLSAgICBhdXRvIHBpZDMgPSBbd2ViVmlldyBfd2ViUHJv
Y2Vzc0lkZW50aWZpZXJdOworICAgIGF1dG8gcGlkQWZ0ZXJGaXJzdEJhY2tOYXZpZ2F0aW9uID0g
W3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBFWFBFQ1RfRVEoZ29vZ2xlUElE
LCBwaWRBZnRlckZpcnN0QmFja05hdmlnYXRpb24pOwogCi0gICAgLy8gMyBsb2FkcywgMyBkZWNp
ZGVQb2xpY3kgY2FsbHMgKGUuZy4gYW55IGxvYWQgdGhhdCBwZXJmb3JtcyBhIHByb2Nlc3Mgc3dh
cCBzaG91bGQgbm90IGhhdmUgZ2VuZXJhdGVkIGFuCi0gICAgLy8gYWRkaXRpb25hbCBkZWNpZGVQ
b2xpY3kgY2FsbCBhcyBhIHJlc3VsdCBvZiB0aGUgcHJvY2VzcyBzd2FwKQotICAgIEVYUEVDVF9F
UShudW1iZXJPZkRlY2lkZVBvbGljeUNhbGxzLCAzKTsKKyAgICBbd2ViVmlldyBnb0JhY2tdOyAv
LyBCYWNrIHRvIGFwcGxlLmNvbS4KIAotICAgIEVYUEVDVF9FUShbcmVjZWl2ZWRNZXNzYWdlcyBj
b3VudF0sIDJ1KTsKLSAgICBFWFBFQ1RfVFJVRShbcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVswXSBp
c0VxdWFsVG9TdHJpbmc6QCJQYWdlU2hvdyBjYWxsZWQuIFBlcnNpc3RlZDogZmFsc2UsIGFuZCB3
aW5kb3cuaGlzdG9yeS5zdGF0ZSBpczogbnVsbCJdKTsKLSAgICBFWFBFQ1RfVFJVRShbcmVjZWl2
ZWRNZXNzYWdlcy5nZXQoKVsxXSBpc0VxdWFsVG9TdHJpbmc6QCJQYWdlU2hvdyBjYWxsZWQuIFBl
cnNpc3RlZDogdHJ1ZSwgYW5kIHdpbmRvdy5oaXN0b3J5LnN0YXRlIGlzOiBvbmxvYWRDYWxsZWQi
XSk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworICAg
IHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOwogCi0gICAgRVhQRUNUX0VRKDJ1LCBzZWVuUElEcy5z
aXplKCkpOworICAgIGF1dG8gcGlkQWZ0ZXJTZWNvbmRCYWNrTmF2aWdhdGlvbiA9IFt3ZWJWaWV3
IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgRVhQRUNUX0VRKGFwcGxlUElELCBwaWRBZnRl
clNlY29uZEJhY2tOYXZpZ2F0aW9uKTsKIAotICAgIEVYUEVDVF9GQUxTRShwaWQxID09IHBpZDIp
OwotICAgIEVYUEVDVF9GQUxTRShwaWQyID09IHBpZDMpOwotICAgIEVYUEVDVF9UUlVFKHBpZDEg
PT0gcGlkMyk7CisgICAgW3dlYlZpZXcgZ29CYWNrXTsgLy8gQmFjayB0byB3ZWJraXQub3JnLgor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworICAgIHJl
Y2VpdmVkTWVzc2FnZSA9IGZhbHNlOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBwaWRBZnRlclRoaXJkQmFja05hdmln
YXRpb24gPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworICAgIEVYUEVDVF9FUSh3
ZWJraXRQSUQsIHBpZEFmdGVyVGhpcmRCYWNrTmF2aWdhdGlvbik7CisKKyAgICAvLyA3IGxvYWRz
LCA3IGRlY2lkZVBvbGljeSBjYWxscyAoZS5nLiBhbnkgbG9hZCB0aGF0IHBlcmZvcm1zIGEgcHJv
Y2VzcyBzd2FwIHNob3VsZCBub3QgaGF2ZSBnZW5lcmF0ZWQgYW4KKyAgICAvLyBhZGRpdGlvbmFs
IGRlY2lkZVBvbGljeSBjYWxsIGFzIGEgcmVzdWx0IG9mIHRoZSBwcm9jZXNzIHN3YXApCisgICAg
RVhQRUNUX0VRKDcsIG51bWJlck9mRGVjaWRlUG9saWN5Q2FsbHMpOworCisgICAgRVhQRUNUX0VR
KDZ1LCBbcmVjZWl2ZWRNZXNzYWdlcyBjb3VudF0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIlBh
Z2VTaG93IGNhbGxlZC4gUGVyc2lzdGVkOiBmYWxzZSwgYW5kIHdpbmRvdy5oaXN0b3J5LnN0YXRl
IGlzOiBudWxsIiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVswXSk7CisgICAgRVhQRUNUX1dLX1NU
UkVRKEAiUGFnZVNob3cgY2FsbGVkLiBQZXJzaXN0ZWQ6IGZhbHNlLCBhbmQgd2luZG93Lmhpc3Rv
cnkuc3RhdGUgaXM6IG51bGwiLCByZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzFdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoQCJQYWdlU2hvdyBjYWxsZWQuIFBlcnNpc3RlZDogZmFsc2UsIGFuZCB3aW5k
b3cuaGlzdG9yeS5zdGF0ZSBpczogbnVsbCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMl0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUShAIlBhZ2VTaG93IGNhbGxlZC4gUGVyc2lzdGVkOiB0cnVlLCBh
bmQgd2luZG93Lmhpc3Rvcnkuc3RhdGUgaXM6IG9ubG9hZENhbGxlZCIsIHJlY2VpdmVkTWVzc2Fn
ZXMuZ2V0KClbM10pOworICAgIEVYUEVDVF9XS19TVFJFUShAIlBhZ2VTaG93IGNhbGxlZC4gUGVy
c2lzdGVkOiB0cnVlLCBhbmQgd2luZG93Lmhpc3Rvcnkuc3RhdGUgaXM6IG9ubG9hZENhbGxlZCIs
IHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbNF0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIlBhZ2VT
aG93IGNhbGxlZC4gUGVyc2lzdGVkOiB0cnVlLCBhbmQgd2luZG93Lmhpc3Rvcnkuc3RhdGUgaXM6
IG9ubG9hZENhbGxlZCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbNV0pOworCisgICAgRVhQRUNU
X0VRKDR1LCBzZWVuUElEcy5zaXplKCkpOwogfQogCiBURVNUKFByb2Nlc3NTd2FwLCBCYWNrV2l0
aG91dFN1c3BlbmRlZFBhZ2UpCkBAIC0xMTE0LDcgKzExNTcsNyBAQCBURVNUKFByb2Nlc3NTd2Fw
LCBNYWluRnJhbWVzT25seSkKICAgICBFWFBFQ1RfRVEoMXUsIHNlZW5QSURzLnNpemUoKSk7CiB9
CiAKLVRFU1QoUHJvY2Vzc1N3YXAsIE9uZVByZXZpb3VzUHJvY2Vzc1JlbWFpbnMpCitURVNUKFBy
b2Nlc3NTd2FwLCBUaHJlZVByZXZpb3VzUHJvY2Vzc2VzUmVtYWlucykKIHsKICAgICBhdXRvIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFBy
b2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOwpAQCAtMTE0NywxMSArMTE5MCwyMyBAQCBURVNU
KFByb2Nlc3NTd2FwLCBPbmVQcmV2aW91c1Byb2Nlc3NSZW1haW5zKQogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwogCi0gICAgLy8gTmF2aWdh
dGlvbnMgdG8gMyBkaWZmZXJlbnQgZG9tYWlucywgd2UgZXhwZWN0IHRvIGhhdmUgc2VlbiAzIGRp
ZmZlcmVudCBQSURzCi0gICAgRVhQRUNUX0VRKDN1LCBzZWVuUElEcy5zaXplKCkpOworICAgIHJl
cXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAicHNvbjovL3d3dy5iaW5nLmNvbS9tYWluLmh0bWwiXV07CisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6cmVxdWVzdF07CiAKLSAgICAvLyBCdXQgb25seSAyIG9mIHRob3NlIHByb2Nlc3NlcyBz
aG91bGQgc3RpbGwgYmUgYWxpdmUKLSAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9vbCBfd2Vi
UHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIHJlcXVlc3QgPSBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL3d3dy55
YWhvby5jb20vbWFpbi5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3Rd
OworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFs
c2U7CisKKyAgICAvLyBOYXZpZ2F0aW9ucyB0byA1IGRpZmZlcmVudCBkb21haW5zLCB3ZSBleHBl
Y3QgdG8gaGF2ZSBzZWVuIDUgZGlmZmVyZW50IFBJRHMKKyAgICBFWFBFQ1RfRVEoNXUsIHNlZW5Q
SURzLnNpemUoKSk7CisKKyAgICAvLyBCdXQgb25seSA0IG9mIHRob3NlIHByb2Nlc3NlcyBzaG91
bGQgc3RpbGwgYmUgYWxpdmUgKDEgdmlzaWJsZSwgMyBzdXNwZW5kZWQpLgorICAgIEVYUEVDVF9F
USg0dSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZF0pOwog
fQogCiBzdGF0aWMgY29uc3QgY2hhciogcGFnZUNhY2hlMUJ5dGVzID0gUiJQU09OUkVTT1VSQ0Uo
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352672</attachid>
            <date>2018-10-17 18:22:17 -0700</date>
            <delta_ts>2018-10-18 08:34:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190688-20181017182215.patch</filename>
            <type>text/plain</type>
            <size>36406</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJkYjljNmE1ZTMzNGFkZDIz
ZDU0ZTYwZGRhYmIyZDRhMjA3ZjBjNzkuLjNiZTcyMDlhYjVlZmNhYjA0OTQ5OTQ3Y2I4MWFlZmI1
MDA3ZTA5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTgtMTAtMTcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbUFNPTl0gQ2FwIG51bWJlciBvZiBT
dXNwZW5kZWRQYWdlUHJveHkgb2JqZWN0cyBhbmQgYWxsb3cgYSBXZWJQYWdlUHJveHkgdG8gaGF2
ZSBtb3JlIHRoYW4gb25lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTA2ODgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MzU0MDk1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENhcCBudW1iZXIgb2Yg
U3VzcGVuZGVkUGFnZVByb3h5IG9iamVjdHMgdG8gMyB0byBhdm9pZCBhY2N1bXVsYXRpbmcgdG9v
IG1hbnkgInN1c3BlbmRlZCIgcHJvY2Vzc2VzLgorCisgICAgICAgIEFsc28gYWxsb3cgYSBXZWJQ
YWdlUHJveHkgdG8gaGF2ZSBtb3JlIHRoYW4gb25lIFN1c3BlbmRlZFBhZ2VQcm94eSBzbyB0aGF0
IFBhZ2VDYWNoZSBub3cgd29ya3MgZm9yCisgICAgICAgIG1vcmUgdGhhbiAxIGhpc3RvcnkgbmF2
aWdhdGlvbiAodXAgdG8gMyB3aXRoIHRoZSBzdXNwZW5kZWQgcGFnZSBsaW1pdCBpbiB0aGlzIHBh
dGNoKS4KKworICAgICAgICBUaGUgZm9sbG93aW5nIGNsZWFudXAgLyByZWZhY3RvcmluZyB3YXMg
bWFkZSB0byBzdXBwb3J0IHRoaXM6CisgICAgICAgIC0gVGhlIFN1c3BlbmRlZFBhZ2VQcm94eSBv
YmplY3RzIGFyZSBub3cgb3duZWQgYnkgdGhlIFdlYlByb2Nlc3NQb29sIGluc3RlYWQgb2YgdGhl
IFdlYlBhZ2VQcm94eS4KKyAgICAgICAgICBUaGUgV2ViUHJvY2Vzc1Bvb2wgaXMgaW4gY2hhcmdl
IG9mIGxpbWl0aW5nIHRoZSBudW1iZXIgb2YgU3VzcGVuZGVkUGFnZVByb3h5IG9iamVjdHMgYnkg
ZHJvcHBpbmcKKyAgICAgICAgICB0aGUgb2xkZXN0IG9uZSB3aGVuZXZlciBhIFdlYlBhZ2VQcm94
eSB0cmllcyB0byBhZGQgYSBuZXcgb25lIGFuZCB3ZSd2ZSBhbHJlYWR5IHJlYWNoZWQgdGhlIGxp
bWl0LgorICAgICAgICAtIFdlYlByb2Nlc3NQcm94eSBubyBsb25nZXIgbmVlZHMgdG8ga25vdyBh
bnl0aGluZyBhYm91dCBzdXNwZW5kZWQgcGFnZXMsIHdoaWNoIHNpbXBsaWZpZXMgdGhlCisgICAg
ICAgICAgY29kZSBxdWl0ZSBhIGJpdC4gSW5zdGVhZCwgdGhlIFN1c3BlbmRlZFBhZ2VQcm94eSBv
YmplY3RzIG5vdyByZWdpc3RlciB0aGVtc2VsdmVzIGFzCisgICAgICAgICAgSVBDOjpNZXNzYWdl
UmVjZWl2ZXJzIHdpdGggdGhlaXIgV2ViUHJvY2Vzc1Byb3h5LiBUaGUgU3VzcGVuZGVkUGFnZVBy
b3h5IGFsc28gdGFrZSBjYXJlIG9mCisgICAgICAgICAgY2FsbGluZyBtYXliZVNodXRkb3duKCkg
b24gdGhlaXIgV2ViUHJvY2Vzc1Byb3h5IHdoZW4gdGhleSBnZXQgZGVzdHJveWVkLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlN1c3BlbmRlZFBhZ2VQcm94eTo6flN1c3BlbmRlZFBhZ2VQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6dGVhckRvd25EcmF3aW5nQXJlYUluV2ViUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6dW5zdXNwZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAg
KFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNw
ZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojpzd2FwVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5O
ZXdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21wbGV0ZVBh
Z2VUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjplbnRlckFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWRkU3VzcGVuZGVkUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUFsbFN1c3BlbmRlZFBhZ2VQcm94aWVz
Rm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp0YWtlU3VzcGVuZGVk
UGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Omhhc1N1c3BlbmRl
ZFBhZ2VQcm94eUZvcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGVPckZhaWxlZFRvTGF1bmNoKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjYW5UZXJtaW5hdGVDaGlsZFByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlcXVlc3RUZXJtaW5hdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorCiAyMDE4LTEwLTE3ICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGUgUGF5XSBJbmNy
ZW1lbnQgdGhlIEFQSSB2ZXJzaW9uIHRvIDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDAyYWM2NjFiYTc4YWE0NzY5NjRhNDZmYTZiYzkz
NGQ2OTdjNzZlZGYuLjE0YzUzMjcyMTk0YzIzNDAzNDc1YjZkMTMyY2ZkNzhkYWExZGI0ODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAt
ODEsNDQgKzgxLDQ0IEBAIFN1c3BlbmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdl
YlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mCiAgICAgLCBtX29yaWdpbihT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoeyB7IH0sIGl0ZW0udXJsKCkgfSkpCiB7CiAgICAg
aXRlbS5zZXRTdXNwZW5kZWRQYWdlKCp0aGlzKTsKLSAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29s
KCkucmVnaXN0ZXJTdXNwZW5kZWRQYWdlUHJveHkoKnRoaXMpOworICAgIG1fcHJvY2Vzcy0+YWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlLnBhZ2VJRCgpLCAqdGhpcyk7CisKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKHRydWUpLCBtX3BhZ2UucGFnZUlEKCkpOwog
fQogCiBTdXNwZW5kZWRQYWdlUHJveHk6On5TdXNwZW5kZWRQYWdlUHJveHkoKQogewotICAgIGlm
IChhdXRvIHByb2Nlc3MgPSBtX3Byb2Nlc3MpIHsKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0SXNTdXNwZW5kZWQoZmFsc2UpLCBtX3BhZ2UucGFnZUlEKCkpOwot
ICAgICAgICBwcm9jZXNzLT5zdXNwZW5kZWRQYWdlV2FzRGVzdHJveWVkKCp0aGlzKTsKLSAgICAg
ICAgcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS51bnJlZ2lzdGVyU3VzcGVuZGVkUGFnZVByb3h5KCp0
aGlzKTsKLSAgICB9Ci19Ci0KLXZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojp3ZWJQcm9jZXNzRGlk
Q2xvc2UoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQotewotICAgIEFTU0VSVF9VTlVTRUQocHJv
Y2VzcywgJnByb2Nlc3MgPT0gbV9wcm9jZXNzKTsKKyAgICBpZiAoIW1faXNTdXNwZW5kZWQpCisg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS51bnJlZ2lzdGVy
U3VzcGVuZGVkUGFnZVByb3h5KCp0aGlzKTsKLSAgICBtX3Byb2Nlc3MgPSBudWxscHRyOworICAg
IC8vIElmIHRoZSBzdXNwZW5kZWQgcGFnZSB3YXMgbm90IGNvbnN1bWVkIGJlZm9yZSBnZXR0aW5n
IGRlc3Ryb3llZCwgdGhlbiBjbG9zZSB0aGUgY29ycmVzcG9uZGluZyBwYWdlCisgICAgLy8gb24g
dGhlIFdlYlByb2Nlc3Mgc2lkZS4KKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkNsb3NlKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2UucGFnZUlEKCkpOwogCi0gICAgLy8gVGhpcyB3aWxsIGRlc3Ryb3kgfHRoaXN8Lgot
ICAgIG1fcGFnZS5zdXNwZW5kZWRQYWdlQ2xvc2VkKCp0aGlzKTsKKyAgICAvLyBXZSBjYWxsIG1h
eWJlU2h1dERvd24oKSBhc3luY2hyb25vdXNseSBzaW5jZSB0aGUgU3VzcGVuZGVkUGFnZSBpcyBj
dXJyZW50bHkgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBXZWJQcm9jZXNzUG9vbAorICAgIC8vIGFu
ZCB3ZSB3YW50IHRvIGF2b2lkIHJlLWVudGVyaW5nIFdlYlByb2Nlc3NQb29sIG1ldGhvZHMuCisg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm9jZXNzID0gbV9wcm9jZXNzLmNvcHlSZWYo
KV0geworICAgICAgICBwcm9jZXNzLT5tYXliZVNodXREb3duKCk7CisgICAgfSk7CiB9CiAKLXZv
aWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkZXN0cm95V2ViUGFnZUluV2ViUHJvY2VzcygpCit2b2lk
IFN1c3BlbmRlZFBhZ2VQcm94eTo6dGVhckRvd25EcmF3aW5nQXJlYUluV2ViUHJvY2VzcygpCiB7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2Uu
cGFnZUlEKCkpOwotICAgIG1fcGFnZS5zdXNwZW5kZWRQYWdlQ2xvc2VkKCp0aGlzKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRlYXJEb3duRHJhd2luZ0FyZWFGb3JT
dXNwZW5kKCksIG1fcGFnZS5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgU3VzcGVuZGVkUGFnZVByb3h5
Ojp0ZWFyRG93bkRyYXdpbmdBcmVhSW5XZWJQcm9jZXNzKCkKK3ZvaWQgU3VzcGVuZGVkUGFnZVBy
b3h5Ojp1bnN1c3BlbmQoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VGVhckRvd25EcmF3aW5nQXJlYUZvclN1c3BlbmQoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBBU1NFUlQobV9pc1N1c3BlbmRlZCk7CisKKyAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7Cisg
ICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SXNTdXNwZW5kZWQoZmFsc2UpLCBtX3BhZ2Uu
cGFnZUlEKCkpOwogfQogCiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZCgp
CiB7Ci0gICAgQVNTRVJUKG1fcHJvY2Vzcyk7CiAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlN1
c3BlbmRlZFBhZ2VQcm94eSAlcyBmcm9tIHByb2Nlc3MgJWkgZmluaXNoZWQgdHJhbnNpdGlvbiB0
byBzdXNwZW5kZWQiLCBsb2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSk7CiAKICNpZiAhTE9HX0RJU0FCTEVECkBAIC0xNDIsNiArMTQyLDEwIEBAIHZvaWQgU3Vz
cGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImIGRlY29kCiAjZW5kaWYKIH0KIAordm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpCit7Cit9CisKICNpZiAhTE9HX0RJU0FCTEVECiBj
b25zdCBjaGFyKiBTdXNwZW5kZWRQYWdlUHJveHk6OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRleCAwNGM0
ZWNmMjU1NDFiMWM1MGM4NmUxMzMwZTk2YTc5MTVlYzcyMzdkLi4wZDU1ODVlMGI3YjhiMGU0NjE2
NGExYzI4MTZlZTAxY2Q1YWM2NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNw
ZW5kZWRQYWdlUHJveHkuaApAQCAtMzYsMjIgKzM2LDIwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCi1jbGFzcyBTdXNw
ZW5kZWRQYWdlUHJveHkgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5
PiB7CitjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHkgZmluYWw6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gewogcHVi
bGljOgogICAgIFN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdlUHJveHkmLCBSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgdWludDY0X3QgbWFpbkZyYW1lSUQp
OwogICAgIH5TdXNwZW5kZWRQYWdlUHJveHkoKTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0KICAgICBXZWJQYWdlUHJveHkm
IHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KLSAgICBXZWJQcm9jZXNzUHJveHkqIHBy
b2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3MuZ2V0KCk7IH0KKyAgICBXZWJQcm9jZXNz
UHJveHkmIHByb2Nlc3MoKSB7IHJldHVybiBtX3Byb2Nlc3MuZ2V0KCk7IH0KICAgICB1aW50NjRf
dCBtYWluRnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lSUQ7IH0KICAgICBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
b3JpZ2luOyB9CiAKLSAgICB2b2lkIHdlYlByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkm
KTsKLSAgICB2b2lkIGRlc3Ryb3lXZWJQYWdlSW5XZWJQcm9jZXNzKCk7CiAgICAgdm9pZCB0ZWFy
RG93bkRyYXdpbmdBcmVhSW5XZWJQcm9jZXNzKCk7CiAKKyAgICB2b2lkIHVuc3VzcGVuZCgpOwor
CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGNvbnN0IGNoYXIqIGxvZ2dpbmdTdHJpbmcoKSBjb25z
dDsKICNlbmRpZgpAQCAtNTksMTEgKzU3LDE3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkKCk7CiAKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKwogICAg
IFdlYlBhZ2VQcm94eSYgbV9wYWdlOwotICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IG1fcHJv
Y2VzczsKKyAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7CiAgICAgdWludDY0X3Qg
bV9tYWluRnJhbWVJRDsKICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgbV9vcmlnaW47
CiAKKyAgICBib29sIG1faXNTdXNwZW5kZWQgeyB0cnVlIH07CisKICNpZiAhTE9HX0RJU0FCTEVE
CiAgICAgYm9vbCBtX2ZpbmlzaGVkU3VzcGVuZGluZyB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGJjZjkxYjJjNjg3MGE3Yzg5
NmUyMTJlZDVjOTljYWZiOTk1MWFjODEuLjdlY2YzN2ViZWM2ZjBiY2NiZWM1MGJhY2RlMTVhZDAw
YmZjZGNhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
NzExLDI3ICs3MTEsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNz
KCkKICAgICBmaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoKTsKIH0KIAotU3VzcGVuZGVkUGFn
ZVByb3h5KiBXZWJQYWdlUHJveHk6Om1heWJlQ3JlYXRlU3VzcGVuZGVkUGFnZShXZWJQcm9jZXNz
UHJveHkmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgdWludDY0X3QgbWFp
bkZyYW1lSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJs
ZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1h
aW5GcmFtZUlEKQogewotICAgIEFTU0VSVCghbV9zdXNwZW5kZWRQYWdlIHx8IG1fc3VzcGVuZGVk
UGFnZS0+cHJvY2VzcygpICE9ICZwcm9jZXNzKTsKKyAgICBpZiAoIW1haW5GcmFtZUlEKQorICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvKiBjdXJyZW50SXRlbSA9IG5hdmlnYXRpb24uZnJvbUl0
ZW0oKTsKICAgICBpZiAoIWN1cnJlbnRJdGVtKSB7Ci0gICAgICAgIExPRyhQcm9jZXNzU3dhcHBp
bmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgdW5hYmxlIHRvIGNyZWF0ZSBzdXNwZW5kZWQg
cGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgLSBObyBjdXJyZW50IGJhY2svZm9yd2FyZCBpdGVtIiwg
cGFnZUlEKCksIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBS
SXU2NCAiIHVuYWJsZSB0byBjcmVhdGUgc3VzcGVuZGVkIHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVp
IC0gTm8gY3VycmVudCBiYWNrL2ZvcndhcmQgaXRlbSIsIHBhZ2VJRCgpLCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zdXNw
ZW5kZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBw
cm9jZXNzLCAqY3VycmVudEl0ZW0sIG1haW5GcmFtZUlEKTsKLQotICAgIExPRyhQcm9jZXNzU3dh
cHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAl
cyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJ
RCgpLCBtX3N1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgcHJvY2Vzcy5wcm9jZXNzSWRl
bnRpZmllcigpLCBjdXJyZW50SXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkpOworICAgIGF1dG8g
c3VzcGVuZGVkUGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3VzcGVuZGVkUGFnZVByb3h5PigqdGhp
cywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKmN1cnJlbnRJdGVtLCAqbWFpbkZyYW1lSUQpOworICAg
IG1fbGFzdFN1c3BlbmRlZFBhZ2UgPSBtYWtlV2Vha1B0cihzdXNwZW5kZWRQYWdlLmdldCgpKTsK
KyAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuYWRkU3VzcGVuZGVkUGFnZVByb3h5KFdURk1v
dmUoc3VzcGVuZGVkUGFnZSkpOwogCi0gICAgcmV0dXJuIG1fc3VzcGVuZGVkUGFnZS5nZXQoKTsK
LX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRlZFBhZ2VDbG9zZWQoU3VzcGVuZGVkUGFn
ZVByb3h5JiBwYWdlKQotewotICAgIEFTU0VSVF9VTlVTRUQocGFnZSwgJnBhZ2UgPT0gbV9zdXNw
ZW5kZWRQYWdlLmdldCgpKTsKLSAgICBtX3N1c3BlbmRlZFBhZ2UgPSBudWxscHRyOworICAgIExP
RyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNw
ZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQ
Ukl1NjQsIHBhZ2VJRCgpLCBtX2xhc3RTdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCksIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgY3VycmVudEl0ZW0tPml0ZW1JRCgpLmxvZ1N0
cmluZygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN3YXBUb1dlYlByb2Nlc3MoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MpCkBAIC03
MzksMTEgKzczNCwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdAogICAgIEFTU0VSVCghbV9p
c0Nsb3NlZCk7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiJXAgV2ViUGFn
ZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzXG4iLCB0aGlzKTsKIAotICAgIC8vIElmIHRoZSBwcm9j
ZXNzIHdlJ3JlIGF0dGFjaGluZyB0byBpcyBrZXB0IGFsaXZlIHNvbGVseSBieSBvdXIgY3VycmVu
dCBzdXNwZW5kZWQgcGFnZSwKLSAgICAvLyB3ZSBuZWVkIHRvIG1haW50YWluIHRoYXQgYnkgdGVt
cG9yYXJpbHkga2VlcGluZyB0aGUgc3VzcGVuZGVkIHBhZ2UgYWxpdmUuCi0gICAgYXV0byBjdXJy
ZW50U3VzcGVuZGVkUGFnZSA9IFdURk1vdmUobV9zdXNwZW5kZWRQYWdlKTsKLSAgICBpZiAobWFp
bkZyYW1lSURJblByZXZpb3VzUHJvY2VzcykKLSAgICAgICAgbV9wcm9jZXNzLT5zdXNwZW5kV2Vi
UGFnZVByb3h5KCp0aGlzLCBuYXZpZ2F0aW9uLCAqbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2Vz
cyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gZGVzdGluYXRpb25T
dXNwZW5kZWRQYWdlOworICAgIGlmIChhdXRvKiBiYWNrRm9yd2FyZExpc3RJdGVtID0gbmF2aWdh
dGlvbi50YXJnZXRJdGVtKCkpIHsKKyAgICAgICAgaWYgKGJhY2tGb3J3YXJkTGlzdEl0ZW0tPnN1
c3BlbmRlZFBhZ2UoKSAmJiAmYmFja0ZvcndhcmRMaXN0SXRlbS0+c3VzcGVuZGVkUGFnZSgpLT5w
cm9jZXNzKCkgPT0gcHJvY2Vzcy5wdHIoKSkgeworICAgICAgICAgICAgZGVzdGluYXRpb25TdXNw
ZW5kZWRQYWdlID0gdGhpcy0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkudGFrZVN1c3BlbmRlZFBh
Z2VQcm94eSgqYmFja0ZvcndhcmRMaXN0SXRlbS0+c3VzcGVuZGVkUGFnZSgpKTsKKyAgICAgICAg
ICAgIEFTU0VSVChkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UpOworICAgICAgICAgICAgZGVzdGlu
YXRpb25TdXNwZW5kZWRQYWdlLT51bnN1c3BlbmQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAgIHN1c3BlbmRDdXJyZW50UGFn
ZUlmUG9zc2libGUobmF2aWdhdGlvbiwgbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2Vzcyk7Cisg
ICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBtX3BhZ2VJRCk7CiAKICAgICBtX3By
b2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpOwogICAgIG1faXNWYWxpZCA9IHRydWU7CkBAIC03NTIs
MTAgKzc1NCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdAogICAgIC8vIFdlYlBhZ2VQcm94
eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKCkgd2lsbCBub3QgYmUgY2FsbGVkIHRvIGluaXRpYWxpemUg
bV9tYWluRnJhbWUuIEluIHN1Y2gKICAgICAvLyBjYXNlLCB3ZSBuZWVkIHRvIGluaXRpYWxpemUg
bV9tYWluRnJhbWUgdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGUgdGhlIFdlYlByb2Nlc3MnIFdlYlBh
Z2UKICAgICAvLyBhbHJlYWR5IGV4aXN0cyBhbmQgYWxyZWFkeSBoYXMgYSBtYWluIGZyYW1lLgot
ICAgIGlmIChjdXJyZW50U3VzcGVuZGVkUGFnZSAmJiBjdXJyZW50U3VzcGVuZGVkUGFnZS0+cHJv
Y2VzcygpID09IG1fcHJvY2Vzcy5wdHIoKSkgeworICAgIGlmIChkZXN0aW5hdGlvblN1c3BlbmRl
ZFBhZ2UpIHsKICAgICAgICAgQVNTRVJUKCFtX21haW5GcmFtZSk7Ci0gICAgICAgIG1fbWFpbkZy
YW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRlKHRoaXMsIGN1cnJlbnRTdXNwZW5kZWRQYWdlLT5t
YWluRnJhbWVJRCgpKTsKLSAgICAgICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQoY3VycmVudFN1
c3BlbmRlZFBhZ2UtPm1haW5GcmFtZUlEKCksICptX21haW5GcmFtZSk7CisgICAgICAgIEFTU0VS
VCgmZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCkgPT0gbV9wcm9jZXNzLnB0cigp
KTsKKyAgICAgICAgbV9tYWluRnJhbWUgPSBXZWJGcmFtZVByb3h5OjpjcmVhdGUodGhpcywgZGVz
dGluYXRpb25TdXNwZW5kZWRQYWdlLT5tYWluRnJhbWVJRCgpKTsKKyAgICAgICAgbV9wcm9jZXNz
LT5mcmFtZUNyZWF0ZWQoZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLT5tYWluRnJhbWVJRCgpLCAq
bV9tYWluRnJhbWUpOwogICAgIH0KIAogICAgIGZpbmlzaEF0dGFjaGluZ1RvV2ViUHJvY2Vzcygp
OwpAQCAtOTI4LDYgKzkzMSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAKICAgICBt
X3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIucGFnZVdhc0ludmFsaWRhdGVkKCk7CiAKKyAgICBt
X3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucmVtb3ZlQWxsU3VzcGVuZGVkUGFnZVByb3hpZXNGb3JQ
YWdlKCp0aGlzKTsKKwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xv
c2UoKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgbV9w
YWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwpAQCAtMjU1NCw3
ICsyNTU5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJv
Y2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFIKIAogICAgICAgICBhdXRvIGl0ZW1T
dGF0ZXMgPSBtX2JhY2tGb3J3YXJkTGlzdC0+ZmlsdGVyZWRJdGVtU3RhdGVzKFt0aGlzLCB0YXJn
ZXRJdGVtID0gaXRlbV0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkgewogICAgICAgICAg
ICAgaWYgKGF1dG8qIHBhZ2UgPSBpdGVtLnN1c3BlbmRlZFBhZ2UoKSkgewotICAgICAgICAgICAg
ICAgIGlmIChwYWdlLT5wcm9jZXNzKCkgPT0gbV9wcm9jZXNzLnB0cigpKQorICAgICAgICAgICAg
ICAgIGlmICgmcGFnZS0+cHJvY2VzcygpID09IG1fcHJvY2Vzcy5wdHIoKSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJu
ICZpdGVtICE9IHRhcmdldEl0ZW07CkBAIC0zNDkwLDcgKzM0OTUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkRmluaXNoUHJvZ3Jlc3MoKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbXBsZXRl
UGFnZVRyYW5zaXRpb24oYm9vbCBpc0luaXRpYWxFbXB0eURvY3VtZW50KQogewogICAgIC8vIEF0
dGFjaCBkcmF3aW5nIGFyZWEgZm9yIHRoZSBpbml0aWFsIGVtcHR5IGRvY3VtZW50IG9ubHkgaWYg
dGhpcyBpcyBub3QgYSBwcm9jZXNzIHN3YXAuCi0gICAgaWYgKGlzSW5pdGlhbEVtcHR5RG9jdW1l
bnQgJiYgbV9zdXNwZW5kZWRQYWdlKQorICAgIGlmIChpc0luaXRpYWxFbXB0eURvY3VtZW50ICYm
IG1fbGFzdFN1c3BlbmRlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFBMQVRGT1JNKE1B
QykKQEAgLTM1MDAsOCArMzUwNSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21wbGV0ZVBh
Z2VUcmFuc2l0aW9uKGJvb2wgaXNJbml0aWFsRW1wdHlEb2N1bWVudCkKICAgICAvLyBEcmF3aW5n
IGFyZWEgZm9yIHRoZSBzdXNwZW5kZWQgcGFnZSB3aWxsIGJlIHRvcm4gZG93biB3aGVuIHRoZSBh
dHRhY2ggY29tcGxldGVzLgogICAgIG1fZHJhd2luZ0FyZWEtPmF0dGFjaEluV2ViUHJvY2Vzcygp
OwogI2Vsc2UKLSAgICBpZiAobV9zdXNwZW5kZWRQYWdlKQotICAgICAgICBtX3N1c3BlbmRlZFBh
Z2UtPnRlYXJEb3duRHJhd2luZ0FyZWFJbldlYlByb2Nlc3MoKTsKKyAgICBpZiAobV9sYXN0U3Vz
cGVuZGVkUGFnZSkKKyAgICAgICAgbV9sYXN0U3VzcGVuZGVkUGFnZS0+dGVhckRvd25EcmF3aW5n
QXJlYUluV2ViUHJvY2VzcygpOwogI2VuZGlmCiB9CiAKQEAgLTYzOTUsOCArNjQwMCw4IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExh
eWVyVHJlZUNvbnRleHQmIGxheWVyCiAgICAgcGFnZUNsaWVudCgpLmVudGVyQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUobGF5ZXJUcmVlQ29udGV4dCk7CiAKICAgICAvLyBXZSBoYXZlIGNvbXBs
ZXRlZCB0aGUgcGFnZSB0cmFuc2l0aW9uIGFuZCBjYW4gdGVhciBkb3duIHRoZSBsYXllcnMgaW4g
dGhlIHN1c3BlbmRlZCBwcm9jZXNzLgotICAgIGlmIChtX3N1c3BlbmRlZFBhZ2UpCi0gICAgICAg
IG1fc3VzcGVuZGVkUGFnZS0+dGVhckRvd25EcmF3aW5nQXJlYUluV2ViUHJvY2VzcygpOworICAg
IGlmIChtX2xhc3RTdXNwZW5kZWRQYWdlKQorICAgICAgICBtX2xhc3RTdXNwZW5kZWRQYWdlLT50
ZWFyRG93bkRyYXdpbmdBcmVhSW5XZWJQcm9jZXNzKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCA3MGZiOWI1NjI3NDE4OGViZDllM2I5ZTViZDNlZDk2MTg5Yzhh
ODFhLi5iODU3OWQxMTkyMjE1OTQzMjkyNDBkMDgzMGMyOTA0ZWEwMTM3Yzk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTM1NSwxMCArMTM1NSw2IEBAIHB1Ymxp
YzoKIAogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUgcHJlZmVyZW5jZXNTdG9yZSgpIGNvbnN0Owog
Ci0gICAgU3VzcGVuZGVkUGFnZVByb3h5KiBtYXliZUNyZWF0ZVN1c3BlbmRlZFBhZ2UoV2ViUHJv
Y2Vzc1Byb3h5JiwgQVBJOjpOYXZpZ2F0aW9uJiwgdWludDY0X3QgbWFpbkZyYW1lSUQpOwotICAg
IFN1c3BlbmRlZFBhZ2VQcm94eSogc3VzcGVuZGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vz
cGVuZGVkUGFnZS5nZXQoKTsgfQotICAgIHZvaWQgc3VzcGVuZGVkUGFnZUNsb3NlZChTdXNwZW5k
ZWRQYWdlUHJveHkmKTsKLQogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZ0ZvclRlc3RpbmcoYm9v
bCk7CiAKICAgICBXZWJDb3JlOjpJbnRSZWN0IHN5bmNSb290Vmlld1RvU2NyZWVuKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHZpZXdSZWN0KTsKQEAgLTEzNzksNiArMTM3NSw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAgICAgdm9pZCB1cGRhdGVIaWRkZW5Q
YWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXMoKTsKIAorICAgIHZvaWQgc3VzcGVuZEN1cnJlbnRQ
YWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBt
YWluRnJhbWVJRCk7CisKICAgICBlbnVtIGNsYXNzIFJlc2V0U3RhdGVSZWFzb24gewogICAgICAg
ICBQYWdlSW52YWxpZGF0ZWQsCiAgICAgICAgIFdlYlByb2Nlc3NFeGl0ZWQsCkBAIC0yMjYwLDEw
ICsyMjU4LDggQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGltZT4g
bV9wYWdlTG9hZFN0YXJ0OwogCi0gICAgLy8gRklYTUU6IFN1cHBvcnQgbW9yZSB0aGFuIG9uZSBz
dXNwZW5kZWQgcGFnZSBwZXIgV2ViUGFnZVByb3h5LAotICAgIC8vIGFuZCBoYXZlIGEgZ2xvYmFs
IGNvbGxlY3Rpb24gb2YgdGhlbSBwZXIgcHJvY2VzcyBwb29sCi0gICAgLy8gKGUuZy4gZm9yIHRo
YXQgcHJvY2VzcyBwb29sJ3MgcGFnZSBjYWNoZSkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVu
ZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2U7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0
cnkgYW5kIGdldCByaWQgb2YgdGhpcyBkYXRhIG1lbWJlci4KKyAgICBXZWFrUHRyPFN1c3BlbmRl
ZFBhZ2VQcm94eT4gbV9sYXN0U3VzcGVuZGVkUGFnZTsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPFdl
YlBhZ2VQcm94eT4gbV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1lcjsKICAgICB1bnNpZ25lZCBt
X3JlY2VudENyYXNoQ291bnQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKaW5kZXggYTcyYjU3MTJlMWY2NjIzNjZmNDQ0YWU0OTZmMmIzNWJjN2M0OTk2
Yi4uNGE0NzlhZDllODMyODc0ODk5YTNlYWU0MDM4MzliNDNlOTdkZDY0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTI0LDcgKzEyNCw4IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpS
ZWZDb3VudGVkTGVha0NvdW50ZXIsIHByb2Nlc3NQb29sQ291bnRlciwgKCJXZWJQcm9jZXNzUG9v
bCIpKTsKIAotc3RhdGljIGNvbnN0IFNlY29uZHMgc2VydmljZVdvcmtlclRlcm1pbmF0aW9uRGVs
YXkgeyA1X3MgfTsKK2NvbnN0IFNlY29uZHMgc2VydmljZVdvcmtlclRlcm1pbmF0aW9uRGVsYXkg
eyA1X3MgfTsKK2NvbnN0IHVuc2lnbmVkIG1heGltdW1TdXNwZW5kZWRQYWdlc0NvdW50IHsgMyB9
OwogCiBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVMaXN0ZW5lcklkZW50aWZpZXIoKQogewpAQCAt
MTAyMiw2ICsxMDIzLDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNz
KFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAgICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNo
ZSA9PSBwcm9jZXNzKQogICAgICAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0gbnVsbHB0cjsK
IAorICAgIG1fc3VzcGVuZGVkUGFnZXMucmVtb3ZlQWxsTWF0Y2hpbmcoW3Byb2Nlc3NdKGF1dG8m
IHN1c3BlbmRlZFBhZ2UpIHsKKyAgICAgICAgcmV0dXJuICZzdXNwZW5kZWRQYWdlLT5wcm9jZXNz
KCkgPT0gcHJvY2VzczsKKyAgICB9KTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBpZiAoaXM8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4oKnByb2Nlc3MpKSB7CiAgICAgICAg
IGF1dG8qIHJlbW92ZWRQcm9jZXNzID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnRha2UoZG93
bmNhc3Q8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4oKnByb2Nlc3MpLnNlY3VyaXR5T3JpZ2lu
KCkpOwpAQCAtMTI5MSw2ICsxMjk2LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aGFuZGxlTWVt
b3J5UHJlc3N1cmVXYXJuaW5nKENyaXRpY2FsKQogICAgIGlmIChtX3ByZXdhcm1lZFByb2Nlc3Mp
CiAgICAgICAgIG1fcHJld2FybWVkUHJvY2Vzcy0+c2h1dERvd24oKTsKICAgICBBU1NFUlQoIW1f
cHJld2FybWVkUHJvY2Vzcyk7CisKKyAgICBtX3N1c3BlbmRlZFBhZ2VzLmNsZWFyKCk7CiB9CiAK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTIxMTcsMTAgKzIxMjQsOSBAQCBS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25J
bnRlcm5hbChXZWJQYWdlUHJveHkmCiAKICAgICBpZiAoYXV0byogYmFja0ZvcndhcmRMaXN0SXRl
bSA9IG5hdmlnYXRpb24udGFyZ2V0SXRlbSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzdXNwZW5k
ZWRQYWdlID0gYmFja0ZvcndhcmRMaXN0SXRlbS0+c3VzcGVuZGVkUGFnZSgpKSB7Ci0gICAgICAg
ICAgICBBU1NFUlQoc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpKTsKICAgICAgICAgICAgIGFjdGlv
biA9IFBvbGljeUFjdGlvbjo6U3VzcGVuZDsKICAgICAgICAgICAgIHJlYXNvbiA9ICJVc2luZyB0
YXJnZXQgYmFjay9mb3J3YXJkIGl0ZW0ncyBwcm9jZXNzIl9zOwotICAgICAgICAgICAgcmV0dXJu
ICpzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCk7CisgICAgICAgICAgICByZXR1cm4gc3VzcGVuZGVk
UGFnZS0+cHJvY2VzcygpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBi
YWNrL2ZvcndhcmQgaXRlbSBhbmQgdGhlIGN1cnJlbnQgYmFjay9mb3J3YXJkIGl0ZW0gb3JpZ2lu
YXRlZApAQCAtMjE3MSwxMCArMjE3Nyw3IEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nl
c3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQcm94eSYKICAgICAg
ICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSB3aGVyZSB0aGlzIFdlYlByb2Nlc3MgaGFzIGEgU3Vz
cGVuZGVkUGFnZVByb3h5IGZvciB0aGlzIFdlYlBhZ2UsIHdlIGNhbiB0aHJvdyBpdCBhd2F5IHRv
IHN1cHBvcnQKICAgICAgICAgICAgICAgICAvLyBXZWJQcm9jZXNzIHJlLXVzZS4KICAgICAgICAg
ICAgICAgICAvLyBJbiB0aGUgZnV0dXJlIGl0IHdvdWxkIGJlIGdyZWF0IHRvIHJlZmFjdG9yLW91
dCB0aGlzIGxpbWl0YXRpb24uCi0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIHN1c3BlbmRlZFBh
Z2UgPSBwYWdlLnN1c3BlbmRlZFBhZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBMT0coUHJv
Y2Vzc1N3YXBwaW5nLCAiKFByb2Nlc3NTd2FwcGluZykgRGVzdHJveWluZyBzdXNwZW5kZWQgcGFn
ZSBmb3IgdGhhdCBzd2FwIik7Ci0gICAgICAgICAgICAgICAgICAgIHN1c3BlbmRlZFBhZ2UtPmRl
c3Ryb3lXZWJQYWdlSW5XZWJQcm9jZXNzKCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIHBhZ2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkucmVtb3ZlQWxsU3VzcGVuZGVkUGFn
ZVByb3hpZXNGb3JQYWdlKHBhZ2UpOwogCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWYo
KnByb2Nlc3MpOwogICAgICAgICAgICAgfQpAQCAtMjE5MSwzMCArMjE5NCwzMyBAQCBSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5h
bChXZWJQYWdlUHJveHkmCiAgICAgcmV0dXJuIGNyZWF0ZU5ld1dlYlByb2Nlc3MocGFnZS53ZWJz
aXRlRGF0YVN0b3JlKCkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclN1c3Bl
bmRlZFBhZ2VQcm94eShTdXNwZW5kZWRQYWdlUHJveHkmIHBhZ2UpCit2b2lkIFdlYlByb2Nlc3NQ
b29sOjphZGRTdXNwZW5kZWRQYWdlUHJveHkoc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQ
cm94eT4mJiBzdXNwZW5kZWRQYWdlKQogewotICAgIGF1dG8mIHZlY3RvciA9IG1fc3VzcGVuZGVk
UGFnZXMuZW5zdXJlKHBhZ2Uub3JpZ2luKCksIFtdIHsKLSAgICAgICAgcmV0dXJuIFZlY3RvcjxT
dXNwZW5kZWRQYWdlUHJveHkqPiB7IH07Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlOwotCi0gICAg
dmVjdG9yLmFwcGVuZCgmcGFnZSk7CisgICAgaWYgKG1fc3VzcGVuZGVkUGFnZXMuc2l6ZSgpID49
IG1heGltdW1TdXNwZW5kZWRQYWdlc0NvdW50KQorICAgICAgICBtX3N1c3BlbmRlZFBhZ2VzLnJl
bW92ZUZpcnN0KCk7CiAKLSNpZiAhTE9HX0RJU0FCTEVECi0gICAgaWYgKHZlY3Rvci5zaXplKCkg
PiA1KQotICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiU2VjdXJpdHkgb3JpZ2luICVzIG5v
dyBoYXMgJXp1IHN1c3BlbmRlZCBwYWdlcyAodGhpcyBzZWVtcyB1bmV4cGVjdGVkKSIsIHBhZ2Uu
b3JpZ2luKCkuZGVidWdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKTsKLSNl
bmRpZgorICAgIG1fc3VzcGVuZGVkUGFnZXMuYXBwZW5kKFdURk1vdmUoc3VzcGVuZGVkUGFnZSkp
OwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyU3VzcGVuZGVkUGFnZVByb3h5
KFN1c3BlbmRlZFBhZ2VQcm94eSYgcGFnZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUFs
bFN1c3BlbmRlZFBhZ2VQcm94aWVzRm9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAg
YXV0byBpdGVyYXRvciA9IG1fc3VzcGVuZGVkUGFnZXMuZmluZChwYWdlLm9yaWdpbigpKTsKLSAg
ICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9zdXNwZW5kZWRQYWdlcy5lbmQoKSk7CisgICAgbV9zdXNw
ZW5kZWRQYWdlcy5yZW1vdmVBbGxNYXRjaGluZyhbJnBhZ2VdKGF1dG8mIHN1c3BlbmRlZFBhZ2Up
IHsKKyAgICAgICAgcmV0dXJuICZzdXNwZW5kZWRQYWdlLT5wYWdlKCkgPT0gJnBhZ2U7CisgICAg
fSk7Cit9CiAKLSAgICBhdXRvIHJlc3VsdCA9IGl0ZXJhdG9yLT52YWx1ZS5yZW1vdmVGaXJzdCgm
cGFnZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CitzdGQ6OnVuaXF1ZV9w
dHI8U3VzcGVuZGVkUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6dGFrZVN1c3BlbmRlZFBhZ2VQ
cm94eShTdXNwZW5kZWRQYWdlUHJveHkmIHN1c3BlbmRlZFBhZ2UpCit7CisgICAgcmV0dXJuIG1f
c3VzcGVuZGVkUGFnZXMudGFrZUZpcnN0KFsmc3VzcGVuZGVkUGFnZV0oYXV0byYgaXRlbSkgewor
ICAgICAgICByZXR1cm4gaXRlbS5nZXQoKSA9PSAmc3VzcGVuZGVkUGFnZTsKKyAgICB9KTsKK30K
IAotICAgIGlmIChpdGVyYXRvci0+dmFsdWUuaXNFbXB0eSgpKQotICAgICAgICBtX3N1c3BlbmRl
ZFBhZ2VzLnJlbW92ZShpdGVyYXRvcik7Citib29sIFdlYlByb2Nlc3NQb29sOjpoYXNTdXNwZW5k
ZWRQYWdlUHJveHlGb3IoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQoreworICAgIHJldHVybiBt
X3N1c3BlbmRlZFBhZ2VzLmZpbmRJZihbJnByb2Nlc3NdKGF1dG8mIHN1c3BlbmRlZFBhZ2UpIHsK
KyAgICAgICAgcmV0dXJuICZzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCkgPT0gJnByb2Nlc3M7Cisg
ICAgfSkgIT0gbV9zdXNwZW5kZWRQYWdlcy5lbmQoKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9v
bDo6YWRkTW9ja01lZGlhRGV2aWNlKGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2aWNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggNjgyYWMyZjJkNGY2ZWZm
NGViY2I5MjQ1ZmIyNDhiMmRmNjgyOTBkYi4uZjJjMWEyYTE2MDhlYmFiMWVjZTgxMDI1MjYxNTlk
N2QwMzA1ZTIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBA
IC00NDAsOCArNDQwLDEzIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgUmVmPFdlYlByb2Nlc3NQ
cm94eT4gcHJvY2Vzc0Zvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgY29uc3QgQVBJOjpOYXZp
Z2F0aW9uJiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViQ29yZTo6UG9saWN5QWN0
aW9uJiwgU3RyaW5nJiByZWFzb24pOwotICAgIHZvaWQgcmVnaXN0ZXJTdXNwZW5kZWRQYWdlUHJv
eHkoU3VzcGVuZGVkUGFnZVByb3h5Jik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyU3VzcGVuZGVkUGFn
ZVByb3h5KFN1c3BlbmRlZFBhZ2VQcm94eSYpOworCisgICAgLy8gU3VzcGVuZGVkUGFnZVByb3h5
IG1hbmFnZW1lbnQuCisgICAgdm9pZCBhZGRTdXNwZW5kZWRQYWdlUHJveHkoc3RkOjp1bmlxdWVf
cHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJik7CisgICAgdm9pZCByZW1vdmVBbGxTdXNwZW5kZWRQ
YWdlUHJveGllc0ZvclBhZ2UoV2ViUGFnZVByb3h5Jik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1
c3BlbmRlZFBhZ2VQcm94eT4gdGFrZVN1c3BlbmRlZFBhZ2VQcm94eShTdXNwZW5kZWRQYWdlUHJv
eHkmKTsKKyAgICBib29sIGhhc1N1c3BlbmRlZFBhZ2VQcm94eUZvcihXZWJQcm9jZXNzUHJveHkm
KTsKKwogICAgIHZvaWQgZGlkUmVhY2hHb29kVGltZVRvUHJld2FybSgpOwogCiAgICAgdm9pZCBk
aWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFN0cmluZyYgcmVnaXN0cmFibGVEb21h
aW4sIGNvbnN0IFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbiYpOwpAQCAtNzAzLDcgKzcwOCw3
IEBAIHByaXZhdGU6CiAjZW5kaWYKICNlbmRpZgogCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEsIFZlY3RvcjxTdXNwZW5kZWRQYWdlUHJveHkqPj4gbV9zdXNwZW5kZWRQ
YWdlczsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5Pj4gbV9z
dXNwZW5kZWRQYWdlczsKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlByb2Nlc3NQcm94
eT4+IG1fc3dhcHBlZFByb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluOwogCiAgICAgSGFzaE1h
cDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24+PiBt
X3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZmQ5OThlMTZkMTVhOGIxMWM2ZWMx
MzUzY2YwNjc3ZmU5MmM1ODgyMy4uOGI2ZTM2ZTc3NzZlMWI1Y2Y5YTU2YTYwMTQ4N2RmMjc4NTIx
NzlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBA
IC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsdWdpbklu
Zm9TdG9yZS5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCi0jaW5jbHVkZSAi
U3VzcGVuZGVkUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRl
ICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5oIgpAQCAtNDQ0LDI3ICs0NDMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkRXhp
c3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgdWludDY0X3QgcGFnZUlEKQogICAg
IHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpzdXNwZW5kV2ViUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgQVBJ
OjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCB1aW50NjRfdCBtYWluRnJhbWVJRCkKLXsKLSAgICBp
ZiAoYXV0byogc3VzcGVuZGVkUGFnZSA9IHdlYlBhZ2UubWF5YmVDcmVhdGVTdXNwZW5kZWRQYWdl
KCp0aGlzLCBuYXZpZ2F0aW9uLCBtYWluRnJhbWVJRCkpIHsKLSAgICAgICAgTE9HKFByb2Nlc3NT
d2FwcGluZywgIldlYlByb2Nlc3NQcm94eSBwaWQgJWkgYWRkZWQgc3VzcGVuZGVkIHBhZ2UgJXMi
LCBwcm9jZXNzSWRlbnRpZmllcigpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCkpOwot
ICAgICAgICBtX3N1c3BlbmRlZFBhZ2VNYXAuc2V0KHdlYlBhZ2UucGFnZUlEKCksIHN1c3BlbmRl
ZFBhZ2UpOwotICAgIH0KLQotICAgIHJlbW92ZVdlYlBhZ2Uod2ViUGFnZSwgd2ViUGFnZS5wYWdl
SUQoKSk7Ci0gICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgd2ViUGFnZS5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpzdXNwZW5kZWRQYWdlV2FzRGVzdHJveWVkKFN1c3BlbmRlZFBhZ2VQcm94
eSYgc3VzcGVuZGVkUGFnZSkKLXsKLSAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiV2ViUHJvY2Vz
c1Byb3h5IHBpZCAlaSBzdXNwZW5kZWQgcGFnZSAlcyB3YXMgZGVzdHJveWVkIiwgcHJvY2Vzc0lk
ZW50aWZpZXIoKSwgc3VzcGVuZGVkUGFnZS5sb2dnaW5nU3RyaW5nKCkpOwotCi0gICAgQVNTRVJU
KG1fc3VzcGVuZGVkUGFnZU1hcC5jb250YWlucyhzdXNwZW5kZWRQYWdlLnBhZ2UoKS5wYWdlSUQo
KSkpOwotICAgIG1fc3VzcGVuZGVkUGFnZU1hcC5yZW1vdmUoc3VzcGVuZGVkUGFnZS5wYWdlKCku
cGFnZUlEKCkpOwotCi0gICAgbWF5YmVTaHV0RG93bigpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6bWFya0lzTm9Mb25nZXJJblByZXdhcm1lZFBvb2woKQogewogICAgIEFTU0VSVChtX2lz
UHJld2FybWVkKTsKQEAgLTY3MywxNSArNjUxLDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGUK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIFdlYlBhZ2VQcm94eSBtZXNzYWdlcyBh
cmUgbm9ybWFsbHkgaGFuZGxlZCBieSB0aGUgbm9ybWFsICJkaXNwYXRjaE1lc3NhZ2UiIHVwIGFi
b3ZlLgotICAgIC8vIElmIHRoZXkgd2VyZSBub3QgaGFuZGxlZCB0aGVyZSwgdGhlbiB0aGV5IG1h
eSBwb3RlbnRpYWxseSBiZSBoYW5kbGVkIGJ5IFN1c3BlbmRlZFBhZ2VQcm94eSBvYmplY3RzLgot
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHN1c3Bl
bmRlZFBhZ2UgPSBtX3N1c3BlbmRlZFBhZ2VNYXAuZ2V0KGRlY29kZXIuZGVzdGluYXRpb25JRCgp
KSkgewotICAgICAgICAgICAgc3VzcGVuZGVkUGFnZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0K
ICAgICAvLyBGSVhNRTogQWRkIHVuaGFuZGxlZCBtZXNzYWdlIGxvZ2dpbmcuCiB9CiAKQEAgLTcy
OSwxMSArNjk4LDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGVP
ckZhaWxlZFRvTGF1bmNoKCkKICAgICB9CiAjZW5kaWYKIAotICAgIGZvciAoYXV0byogc3VzcGVu
ZGVkUGFnZSA6IGNvcHlUb1ZlY3Rvck9mPFN1c3BlbmRlZFBhZ2VQcm94eSo+KG1fc3VzcGVuZGVk
UGFnZU1hcC52YWx1ZXMoKSkpCi0gICAgICAgIHN1c3BlbmRlZFBhZ2UtPndlYlByb2Nlc3NEaWRD
bG9zZSgqdGhpcyk7Ci0KLSAgICBtX3N1c3BlbmRlZFBhZ2VNYXAuY2xlYXIoKTsKLQogICAgIGZv
ciAoYXV0byYgcGFnZSA6IHBhZ2VzKQogICAgICAgICBwYWdlLT5wcm9jZXNzRGlkVGVybWluYXRl
KFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6Q3Jhc2gpOwogfQpAQCAtOTAxLDcgKzg2NSw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjptYXliZVNodXREb3duKCkKIAogYm9vbCBXZWJQcm9jZXNz
UHJveHk6OmNhblRlcm1pbmF0ZUNoaWxkUHJvY2VzcygpCiB7Ci0gICAgaWYgKCFtX3BhZ2VNYXAu
aXNFbXB0eSgpIHx8ICFtX3N1c3BlbmRlZFBhZ2VNYXAuaXNFbXB0eSgpKQorICAgIGlmICghbV9w
YWdlTWFwLmlzRW1wdHkoKSB8fCBtX3Byb2Nlc3NQb29sLT5oYXNTdXNwZW5kZWRQYWdlUHJveHlG
b3IoKnRoaXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIW1fcHJvY2Vzc1Bv
b2wtPnNob3VsZFRlcm1pbmF0ZSh0aGlzKSkKQEAgLTEwMTUsMTEgKzk3OSw2IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpyZXF1ZXN0VGVybWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
IHJlYXNvbikKIAogICAgIHNodXREb3duKCk7CiAKLSAgICBmb3IgKGF1dG8qIHN1c3BlbmRlZFBh
Z2UgOiBjb3B5VG9WZWN0b3JPZjxTdXNwZW5kZWRQYWdlUHJveHkqPihtX3N1c3BlbmRlZFBhZ2VN
YXAudmFsdWVzKCkpKQotICAgICAgICBzdXNwZW5kZWRQYWdlLT53ZWJQcm9jZXNzRGlkQ2xvc2Uo
KnRoaXMpOwotCi0gICAgbV9zdXNwZW5kZWRQYWdlTWFwLmNsZWFyKCk7Ci0KICAgICBmb3IgKGF1
dG8mIHBhZ2UgOiBwYWdlcykKICAgICAgICAgcGFnZS0+cHJvY2Vzc0RpZFRlcm1pbmF0ZShyZWFz
b24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBk
MGU3ZWNiNTVjZDlmYzg0YTkxMTlmMDZkZTBjZjY4NzNjZTNhM2RjLi5hY2M1MWYxOGMzNTExNmVi
NGQ1MmU3ZTk0M2I2ZWM3NmRhMzZhM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaApAQCAtNjcsNyArNjcsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IE5ldHdvcmtQcm9jZXNzUHJveHk7CiBjbGFzcyBPYmpDT2JqZWN0R3JhcGg7CiBjbGFzcyBQYWdl
Q2xpZW50OwotY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OwogY2xhc3MgVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eTsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CiBjbGFzcyBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtOwpAQCAtMjA4LDkgKzIwNyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENv
bW1pdFByb3Zpc2lvbmFsTG9hZCgpIHsgbV9oYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRz
ID0gdHJ1ZTsgfQogICAgIGJvb2wgaGFzQ29tbWl0dGVkQW55UHJvdmlzaW9uYWxMb2FkcygpIGNv
bnN0IHsgcmV0dXJuIG1faGFzQ29tbWl0dGVkQW55UHJvdmlzaW9uYWxMb2FkczsgfQogCi0gICAg
dm9pZCBzdXNwZW5kV2ViUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiYs
IHVpbnQ2NF90IG1haW5GcmFtZUlEKTsKLSAgICB2b2lkIHN1c3BlbmRlZFBhZ2VXYXNEZXN0cm95
ZWQoU3VzcGVuZGVkUGFnZVByb3h5Jik7Ci0KICNpZiBQTEFURk9STShXQVRDSE9TKQogICAgIHZv
aWQgdGFrZUJhY2tncm91bmRBY3Rpdml0eVRva2VuRm9yRnVsbHNjcmVlbklucHV0KCk7CiAgICAg
dm9pZCByZWxlYXNlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQoKTsK
QEAgLTIzMiw2ICsyMjgsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIHdlYiBw
cm9jZXNzIGhhcyBjcmFzaGVkIG9yIHdlIGtub3cgdGhhdCBpdCB3aWxsIHRlcm1pbmF0ZSBzb29u
LgogICAgIC8vIFdpbGwgcG90ZW50aWFsbHkgY2F1c2UgdGhlIFdlYlByb2Nlc3NQcm94eSBvYmpl
Y3QgdG8gYmUgZnJlZWQuCiAgICAgdm9pZCBzaHV0RG93bigpOworICAgIHZvaWQgbWF5YmVTaHV0
RG93bigpOwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUGFnZUlE
KCk7CkBAIC0yNTEsOCArMjQ4LDYgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0g
ICAgdm9pZCBtYXliZVNodXREb3duKCk7Ci0KICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVycy4K
ICAgICB2b2lkIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUmKTsKICAgICB2b2lkIGRpZERlc3Ryb3lGcmFtZSh1aW50NjRfdCk7CkBAIC0zNjEsNyAr
MzU2LDYgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFN0cmluZz4gbV9sb2NhbFBhdGhzV2l0aEFz
c3VtZWRSZWFkQWNjZXNzOwogCiAgICAgV2ViUGFnZVByb3h5TWFwIG1fcGFnZU1hcDsKLSAgICBI
YXNoTWFwPHVpbnQ2NF90LCBTdXNwZW5kZWRQYWdlUHJveHkqPiBtX3N1c3BlbmRlZFBhZ2VNYXA7
CiAgICAgV2ViRnJhbWVQcm94eU1hcCBtX2ZyYW1lTWFwOwogICAgIFVzZXJJbml0aWF0ZWRBY3Rp
b25NYXAgbV91c2VySW5pdGlhdGVkQWN0aW9uTWFwOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGViNzYxY2VlMmY0MWNhOGQzZDZhODQ5N2Ux
MmJjMjI2NTg1ZWE1Zi4uYTgzZjBhNzc2N2IwNjk4Mjk4MWJiOGQzZGFjM2UyYmYxYTBiN2NjNSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE4LTEwLTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgW1BTT05dIENhcCBudW1iZXIgb2YgU3VzcGVuZGVkUGFnZVByb3h5IG9iamVjdHMg
YW5kIGFsbG93IGEgV2ViUGFnZVByb3h5IHRvIGhhdmUgbW9yZSB0aGFuIG9uZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNjg4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS80NTM1NDA5NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBFeHRlbmRlZCBBUEkgdGVzdCBjb3ZlcmFnZSB0byBjb25maXJtIHRo
YXQ6CisgICAgICAgIC0gV2UgZG8gbm90IGFjY3VtdWxhdGUgbW9yZSB0aGFuIDMgc3VzcGVuZGVk
IHByb2Nlc3Nlcy4KKyAgICAgICAgLSBXZSBjYW4gbmF2aWdhdGUgYmFjayAzIHRpbWVzIGFuZCB1
c2UgdGhlIHBhZ2UgY2FjaGUgZm9yIGVhY2ggb2YgdGhlc2UgbG9hZHMuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1t
OgorCiAyMDE4LTEwLTE3ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVg6IENlcnRhaW4gdGFncyBzaG91bGQgaWRlbnRpZnkgdGhlaXIgY29udGV4dCB0
byBpT1MgQVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCA4NDQ4NDI4NjIw
MWRjOGI2YmNlZmQ1ZmJmNmU5MmUyYTVhOGU4NWVlLi4wZWQwYTRiNmMzMzQ4NmYwMTZlMzQyNDkx
YjVhZGUwZmRkNDk1M2I4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTQx
Miw2ICs0MTIsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBOb1N3YXBwaW5nRm9yZVRMRFBsdXMyKQog
ICAgIEVYUEVDVF9FUShudW1iZXJPZkRlY2lkZVBvbGljeUNhbGxzLCAyKTsKIH0KIAorLy8gV2Ug
Y3VycmVudGx5IGtlZXAgMyBzdXNwZW5kZWQgcGFnZXMgYXJvdW5kIHNvIHdlIGNhbiBnbyBiYWNr
IDMgdGltZXMgYW5kIHVzZSB0aGUgcGFnZSBjYWNoZSBmb3IgZWFjaCBsb2FkLgogVEVTVChQcm9j
ZXNzU3dhcCwgQmFjaykKIHsKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTQy
Miw2ICs0MjMsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBCYWNrKQogICAgIFt3ZWJWaWV3Q29uZmln
dXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CiAgICAgYXV0byBoYW5k
bGVyID0gYWRvcHROUyhbW1BTT05TY2hlbWUgYWxsb2NdIGluaXRdKTsKICAgICBbaGFuZGxlciBh
ZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwi
IHRvRGF0YTp0ZXN0Qnl0ZXNdOworICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5n
OkAicHNvbjovL3d3dy5hcHBsZS5jb20vbWFpbi5odG1sIiB0b0RhdGE6dGVzdEJ5dGVzXTsKKyAg
ICBbaGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cuZ29vZ2xlLmNv
bS9tYWluLmh0bWwiIHRvRGF0YTp0ZXN0Qnl0ZXNdOwogICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlv
biBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiUFNPTiJd
OwogCiAgICAgUmV0YWluUHRyPFBTT05NZXNzYWdlSGFuZGxlcj4gbWVzc2FnZUhhbmRsZXIgPSBh
ZG9wdE5TKFtbUFNPTk1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CkBAIC00MzksNyArNDQy
LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQmFjaykKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOwogICAgIGRvbmUgPSBmYWxzZTsKIAotICAgIGF1dG8gcGlkMSA9IFt3ZWJWaWV3
IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgYXV0byB3ZWJraXRQSUQgPSBbd2ViVmlldyBf
d2ViUHJvY2Vzc0lkZW50aWZpZXJdOwogCiAgICAgcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uOi8vd3d3LmFwcGxlLmNvbS9t
YWluLmh0bWwiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CkBAIC00NDcs
MzAgKzQ1MCw3MCBAQCBURVNUKFByb2Nlc3NTd2FwLCBCYWNrKQogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwogCi0gICAgYXV0byBwaWQyID0g
W3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBhdXRvIGFwcGxlUElEID0gW3dl
YlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBFWFBFQ1RfTkUod2Via2l0UElELCBh
cHBsZVBJRCk7CiAKLSAgICBbd2ViVmlldyBnb0JhY2tdOworICAgIHJlcXVlc3QgPSBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL3d3dy5n
b29nbGUuY29tL21haW4uaHRtbCJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0
XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZh
bHNlOworCisgICAgYXV0byBnb29nbGVQSUQgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZp
ZXJdOworICAgIEVYUEVDVF9ORShhcHBsZVBJRCwgZ29vZ2xlUElEKTsKKworICAgIHJlcXVlc3Qg
PSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNv
bjovL3d3dy5iaW5nLmNvbS9tYWluLmh0bWwiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRv
bmUgPSBmYWxzZTsKKworICAgIGF1dG8gYmluZ1BJRCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRl
bnRpZmllcl07CisgICAgRVhQRUNUX05FKGdvb2dsZVBJRCwgYmluZ1BJRCk7CisKKyAgICBbd2Vi
VmlldyBnb0JhY2tdOyAvLyBCYWNrIHRvIGdvb2dsZS5jb20uCiAKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRNZXNzYWdlID0gZmFs
c2U7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBkb25lID0gZmFs
c2U7CiAKLSAgICBhdXRvIHBpZDMgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOwor
ICAgIGF1dG8gcGlkQWZ0ZXJGaXJzdEJhY2tOYXZpZ2F0aW9uID0gW3dlYlZpZXcgX3dlYlByb2Nl
c3NJZGVudGlmaWVyXTsKKyAgICBFWFBFQ1RfRVEoZ29vZ2xlUElELCBwaWRBZnRlckZpcnN0QmFj
a05hdmlnYXRpb24pOwogCi0gICAgLy8gMyBsb2FkcywgMyBkZWNpZGVQb2xpY3kgY2FsbHMgKGUu
Zy4gYW55IGxvYWQgdGhhdCBwZXJmb3JtcyBhIHByb2Nlc3Mgc3dhcCBzaG91bGQgbm90IGhhdmUg
Z2VuZXJhdGVkIGFuCi0gICAgLy8gYWRkaXRpb25hbCBkZWNpZGVQb2xpY3kgY2FsbCBhcyBhIHJl
c3VsdCBvZiB0aGUgcHJvY2VzcyBzd2FwKQotICAgIEVYUEVDVF9FUShudW1iZXJPZkRlY2lkZVBv
bGljeUNhbGxzLCAzKTsKKyAgICBbd2ViVmlldyBnb0JhY2tdOyAvLyBCYWNrIHRvIGFwcGxlLmNv
bS4KIAotICAgIEVYUEVDVF9FUShbcmVjZWl2ZWRNZXNzYWdlcyBjb3VudF0sIDJ1KTsKLSAgICBF
WFBFQ1RfVFJVRShbcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVswXSBpc0VxdWFsVG9TdHJpbmc6QCJQ
YWdlU2hvdyBjYWxsZWQuIFBlcnNpc3RlZDogZmFsc2UsIGFuZCB3aW5kb3cuaGlzdG9yeS5zdGF0
ZSBpczogbnVsbCJdKTsKLSAgICBFWFBFQ1RfVFJVRShbcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsx
XSBpc0VxdWFsVG9TdHJpbmc6QCJQYWdlU2hvdyBjYWxsZWQuIFBlcnNpc3RlZDogdHJ1ZSwgYW5k
IHdpbmRvdy5oaXN0b3J5LnN0YXRlIGlzOiBvbmxvYWRDYWxsZWQiXSk7CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworICAgIHJlY2VpdmVkTWVzc2FnZSA9
IGZhbHNlOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9
IGZhbHNlOwogCi0gICAgRVhQRUNUX0VRKDJ1LCBzZWVuUElEcy5zaXplKCkpOworICAgIGF1dG8g
cGlkQWZ0ZXJTZWNvbmRCYWNrTmF2aWdhdGlvbiA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRp
Zmllcl07CisgICAgRVhQRUNUX0VRKGFwcGxlUElELCBwaWRBZnRlclNlY29uZEJhY2tOYXZpZ2F0
aW9uKTsKIAotICAgIEVYUEVDVF9GQUxTRShwaWQxID09IHBpZDIpOwotICAgIEVYUEVDVF9GQUxT
RShwaWQyID09IHBpZDMpOwotICAgIEVYUEVDVF9UUlVFKHBpZDEgPT0gcGlkMyk7CisgICAgW3dl
YlZpZXcgZ29CYWNrXTsgLy8gQmFjayB0byB3ZWJraXQub3JnLgorCisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZh
bHNlOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZh
bHNlOworCisgICAgYXV0byBwaWRBZnRlclRoaXJkQmFja05hdmlnYXRpb24gPSBbd2ViVmlldyBf
d2ViUHJvY2Vzc0lkZW50aWZpZXJdOworICAgIEVYUEVDVF9FUSh3ZWJraXRQSUQsIHBpZEFmdGVy
VGhpcmRCYWNrTmF2aWdhdGlvbik7CisKKyAgICAvLyA3IGxvYWRzLCA3IGRlY2lkZVBvbGljeSBj
YWxscyAoZS5nLiBhbnkgbG9hZCB0aGF0IHBlcmZvcm1zIGEgcHJvY2VzcyBzd2FwIHNob3VsZCBu
b3QgaGF2ZSBnZW5lcmF0ZWQgYW4KKyAgICAvLyBhZGRpdGlvbmFsIGRlY2lkZVBvbGljeSBjYWxs
IGFzIGEgcmVzdWx0IG9mIHRoZSBwcm9jZXNzIHN3YXApCisgICAgRVhQRUNUX0VRKDcsIG51bWJl
ck9mRGVjaWRlUG9saWN5Q2FsbHMpOworCisgICAgRVhQRUNUX0VRKDZ1LCBbcmVjZWl2ZWRNZXNz
YWdlcyBjb3VudF0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIlBhZ2VTaG93IGNhbGxlZC4gUGVy
c2lzdGVkOiBmYWxzZSwgYW5kIHdpbmRvdy5oaXN0b3J5LnN0YXRlIGlzOiBudWxsIiwgcmVjZWl2
ZWRNZXNzYWdlcy5nZXQoKVswXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiUGFnZVNob3cgY2Fs
bGVkLiBQZXJzaXN0ZWQ6IGZhbHNlLCBhbmQgd2luZG93Lmhpc3Rvcnkuc3RhdGUgaXM6IG51bGwi
LCByZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzFdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQYWdl
U2hvdyBjYWxsZWQuIFBlcnNpc3RlZDogZmFsc2UsIGFuZCB3aW5kb3cuaGlzdG9yeS5zdGF0ZSBp
czogbnVsbCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMl0pOworICAgIEVYUEVDVF9XS19TVFJF
UShAIlBhZ2VTaG93IGNhbGxlZC4gUGVyc2lzdGVkOiB0cnVlLCBhbmQgd2luZG93Lmhpc3Rvcnku
c3RhdGUgaXM6IG9ubG9hZENhbGxlZCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbM10pOworICAg
IEVYUEVDVF9XS19TVFJFUShAIlBhZ2VTaG93IGNhbGxlZC4gUGVyc2lzdGVkOiB0cnVlLCBhbmQg
d2luZG93Lmhpc3Rvcnkuc3RhdGUgaXM6IG9ubG9hZENhbGxlZCIsIHJlY2VpdmVkTWVzc2FnZXMu
Z2V0KClbNF0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIlBhZ2VTaG93IGNhbGxlZC4gUGVyc2lz
dGVkOiB0cnVlLCBhbmQgd2luZG93Lmhpc3Rvcnkuc3RhdGUgaXM6IG9ubG9hZENhbGxlZCIsIHJl
Y2VpdmVkTWVzc2FnZXMuZ2V0KClbNV0pOworCisgICAgRVhQRUNUX0VRKDR1LCBzZWVuUElEcy5z
aXplKCkpOwogfQogCiBURVNUKFByb2Nlc3NTd2FwLCBCYWNrV2l0aG91dFN1c3BlbmRlZFBhZ2Up
CkBAIC0xMTE0LDcgKzExNTcsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBNYWluRnJhbWVzT25seSkK
ICAgICBFWFBFQ1RfRVEoMXUsIHNlZW5QSURzLnNpemUoKSk7CiB9CiAKLVRFU1QoUHJvY2Vzc1N3
YXAsIE9uZVByZXZpb3VzUHJvY2Vzc1JlbWFpbnMpCitURVNUKFByb2Nlc3NTd2FwLCBUaHJlZVBy
ZXZpb3VzUHJvY2Vzc2VzUmVtYWlucykKIHsKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKICAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdh
dGlvbjpZRVNdOwpAQCAtMTE0NywxMSArMTE5MCwyMyBAQCBURVNUKFByb2Nlc3NTd2FwLCBPbmVQ
cmV2aW91c1Byb2Nlc3NSZW1haW5zKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CiAgICAgZG9uZSA9IGZhbHNlOwogCi0gICAgLy8gTmF2aWdhdGlvbnMgdG8gMyBkaWZmZXJl
bnQgZG9tYWlucywgd2UgZXhwZWN0IHRvIGhhdmUgc2VlbiAzIGRpZmZlcmVudCBQSURzCi0gICAg
RVhQRUNUX0VRKDN1LCBzZWVuUElEcy5zaXplKCkpOworICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL3d3dy5iaW5n
LmNvbS9tYWluLmh0bWwiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAK
LSAgICAvLyBCdXQgb25seSAyIG9mIHRob3NlIHByb2Nlc3NlcyBzaG91bGQgc3RpbGwgYmUgYWxp
dmUKLSAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3Jp
bmdQcmV3YXJtZWRdKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAg
IGRvbmUgPSBmYWxzZTsKKworICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL3d3dy55YWhvby5jb20vbWFpbi5odG1s
Il1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICAvLyBOYXZp
Z2F0aW9ucyB0byA1IGRpZmZlcmVudCBkb21haW5zLCB3ZSBleHBlY3QgdG8gaGF2ZSBzZWVuIDUg
ZGlmZmVyZW50IFBJRHMKKyAgICBFWFBFQ1RfRVEoNXUsIHNlZW5QSURzLnNpemUoKSk7CisKKyAg
ICAvLyBCdXQgb25seSA0IG9mIHRob3NlIHByb2Nlc3NlcyBzaG91bGQgc3RpbGwgYmUgYWxpdmUg
KDEgdmlzaWJsZSwgMyBzdXNwZW5kZWQpLgorICAgIEVYUEVDVF9FUSg0dSwgW3Byb2Nlc3NQb29s
IF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZF0pOwogfQogCiBzdGF0aWMgY29uc3Qg
Y2hhciogcGFnZUNhY2hlMUJ5dGVzID0gUiJQU09OUkVTT1VSQ0UoCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>