<?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>164562</bug_id>
          
          <creation_ts>2016-11-09 15:03:15 -0800</creation_ts>
          <short_desc>Clean up Storage code</short_desc>
          <delta_ts>2016-11-09 15:31:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1249526</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-09 15:03:15 -0800</bug_when>
    <thetext>Clean up Storage code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249527</commentid>
    <comment_count>1</comment_count>
      <attachid>294296</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-09 15:04:39 -0800</bug_when>
    <thetext>Created attachment 294296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249529</commentid>
    <comment_count>2</comment_count>
      <attachid>294296</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-09 15:18:48 -0800</bug_when>
    <thetext>Comment on attachment 294296
Patch

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

&gt; Source/WebKit2/ChangeLog:3
&gt; +        Clean up Storage code

This patch doesn&apos;t appear to be exclusively related to doing... this.

&gt; Source/WebKit2/Platform/IPC/HandleMessage.h:3
&gt; +/*
&gt; + * Copyright (C) 2016 Apple Inc. All rights reserved.
&gt; + *

A long used .h file without a header! Wow!

Please put in all the copyright dates where Apple has touched it. (assuming it&apos;s not new this year)

&gt; Source/WebKit2/Platform/IPC/HandleMessage.h:82
&gt;  void callMemberFunctionImpl(C* object, MF function, Connection&amp; connection, ArgsTuple&amp;&amp; args, std::index_sequence&lt;ArgsIndex...&gt;)
&gt;  {
&gt; -    (object-&gt;*function)(connection, std::get&lt;ArgsIndex&gt;(args)...);
&gt; +    (object-&gt;*function)(connection, std::get&lt;ArgsIndex&gt;(std::forward&lt;ArgsTuple&gt;(args))...);

Apparently this is for a future patch.

Please do it in the future patch.

&gt; Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.h:26
&gt; +#pragma once

👍

&gt; Source/WebKit/Storage/StorageAreaImpl.h:26
&gt; +#pragma once

👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249536</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-09 15:31:29 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/208499</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294296</attachid>
            <date>2016-11-09 15:04:39 -0800</date>
            <delta_ts>2016-11-09 15:18:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164562-20161109150028.patch</filename>
            <type>text/plain</type>
            <size>55790</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODQ0NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE2LTExLTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAg
U3RvcmFnZSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjQ1NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2UgbW9yZSBSZWZzIQorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgIChJUEM6OmNhbGxN
ZW1iZXJGdW5jdGlvbkltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlOjpMb2NhbFN0
b3JhZ2VEYXRhYmFzZSk6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlcjo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyOjpTdG9yYWdlQXJlYTo6b3BlbkRhdGFiYXNlQW5kSW1wb3J0SXRlbXNJZk5lZWRlZCk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlTWFuYWdlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9jZXNzV2lsbE9wZW5Db25uZWN0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTZWNJdGVtU2hpbVByb3h5Ojppbml0aWFsaXplQ29ubmVjdGlvbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6
aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9FdmVu
dERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpFdmVudERpc3BhdGNoZXI6OmluaXRp
YWxpemVDb25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0
ZURpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6
aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorCiAyMDE2LTExLTA5ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl1bTkVUV09SS19TRVNTSU9OXSBBZGQgc3VwcG9y
dCBmb3IgZG93bmxvYWRpbmcgZmlsZSBiYWNrZWQgYmxvYnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2Nv
bHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgJKHJldmlzaW9uIDIwODQ0NykKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
d2FzUmVkaXJlY3RlZFRvUmVxdWVzdCh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlKTsKIAogICAgIENoaWxkUHJvY2VzcyogbV9jaGlsZFByb2Nlc3M7
Ci0gICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9tZXNzYWdlUXVldWU7CisgICAgUmVmPFdvcmtRdWV1
ZT4gbV9tZXNzYWdlUXVldWU7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBIYXNoU2V0PFN0
cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX3JlZ2lzdGVyZWRTY2hlbWVzOwpJbmRl
eDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAkocmV2aXNpb24g
MjA4NDQ3KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjQsMTEgKzI2NCwxMSBAQCB2b2lkIENvbm5lY3Rpb246OnNldFNo
b3VsZEV4aXRPblN5bmNNZXNzCiAgICAgbV9zaG91bGRFeGl0T25TeW5jTWVzc2FnZVNlbmRGYWls
dXJlID0gc2hvdWxkRXhpdE9uU3luY01lc3NhZ2VTZW5kRmFpbHVyZTsKIH0KIAotdm9pZCBDb25u
ZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIFdvcmtRdWV1ZSogd29ya1F1ZXVlLCBXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIqIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgQ29ubmVjdGlvbjo6YWRkV29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKiB3b3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lID0gV1RGTW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1l
KSwgd29ya1F1ZXVlLCB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJdKCkgbXV0YWJsZSB7CisgICAg
bV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIG1lc3NhZ2VSZWNlaXZlck5hbWUgPSBXVEZNb3ZlKG1lc3NhZ2VSZWNlaXZlck5hbWUpLCB3
b3JrUXVldWUgPSAmd29ya1F1ZXVlLCB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJdKCkgbXV0YWJs
ZSB7CiAgICAgICAgIEFTU0VSVCghcHJvdGVjdGVkVGhpcy0+bV93b3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKIAogICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5tX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuYWRkKG1lc3NhZ2VSZWNlaXZlck5h
bWUsIHN0ZDo6bWFrZV9wYWlyKHdvcmtRdWV1ZSwgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgJKHJldmlzaW9u
IDIwODQ0NykKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB2b2lk
ICgqRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjaykoQ29ubmVjdGlvbiopOwog
ICAgIHZvaWQgc2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhEaWRDbG9z
ZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrIGNhbGxiYWNrKTsKIAotICAgIHZvaWQgYWRk
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBXb3JrUXVldWUqLCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIqKTsKKyAgICB2b2lkIGFk
ZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgV29ya1F1ZXVlJiwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKik7CiAgICAgdm9pZCBy
ZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUpOwogCiAgICAgYm9vbCBvcGVuKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgJKHJldmlzaW9uIDIwODQ0NykKKysrIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnMuaCIKQEAgLTU0LDcgKzc5LDcgQEAgdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oQXJn
c1R1cGxlJiYgYXJncwogdGVtcGxhdGUgPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFt
ZSBBcmdzVHVwbGUsIHNpemVfdC4uLiBBcmdzSW5kZXg+CiB2b2lkIGNhbGxNZW1iZXJGdW5jdGlv
bkltcGwoQyogb2JqZWN0LCBNRiBmdW5jdGlvbiwgQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgQXJn
c1R1cGxlJiYgYXJncywgc3RkOjppbmRleF9zZXF1ZW5jZTxBcmdzSW5kZXguLi4+KQogewotICAg
IChvYmplY3QtPipmdW5jdGlvbikoY29ubmVjdGlvbiwgc3RkOjpnZXQ8QXJnc0luZGV4Pihhcmdz
KS4uLik7CisgICAgKG9iamVjdC0+KmZ1bmN0aW9uKShjb25uZWN0aW9uLCBzdGQ6OmdldDxBcmdz
SW5kZXg+KHN0ZDo6Zm9yd2FyZDxBcmdzVHVwbGU+KGFyZ3MpKS4uLik7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBBcmdzVHVwbGUsIHR5cGVuYW1lIEFy
Z3NJbmRpY2llcyA9IHN0ZDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8QXJn
c1R1cGxlPjo6dmFsdWU+PgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDIw
ODQ0NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlYQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc1dpbGxPcGVuQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkm
LCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7Ci0gICAgY29ubmVjdGlvbi5hZGRXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAmbV9zdGF0aXN0aWNzUXVldWUuZ2V0KCksIHRo
aXMpOworICAgIGNvbm5lY3Rpb24uYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9zdGF0aXN0aWNzUXVldWUuZ2V0KCksIHRoaXMpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJv
eHkmLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3Bw
CShyZXZpc2lvbiAyMDg0NDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE0ICs0NiwxNCBA
QCBzdGF0aWMgY29uc3QgaW50IG1heGltdW1JdGVtc1RvVXBkYXRlID0gCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1QYXNzUmVmUHRyPExvY2FsU3RvcmFnZURhdGFiYXNlPiBMb2NhbFN0b3JhZ2VE
YXRhYmFzZTo6Y3JlYXRlKFBhc3NSZWZQdHI8V29ya1F1ZXVlPiBxdWV1ZSwgUGFzc1JlZlB0cjxM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI+IHRyYWNrZXIsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiBzZWN1cml0eU9yaWdpbikKK1JlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZT4gTG9jYWxTdG9yYWdl
RGF0YWJhc2U6OmNyZWF0ZShSZWY8V29ya1F1ZXVlPiYmIHF1ZXVlLCBSZWY8TG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyPiYmIHRyYWNrZXIsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0
eU9yaWdpbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IExvY2FsU3RvcmFnZURhdGFiYXNl
KHF1ZXVlLCB0cmFja2VyLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IExvY2FsU3RvcmFnZURhdGFiYXNlKFdURk1vdmUocXVldWUpLCBXVEZNb3Zl
KHRyYWNrZXIpLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkpOwogfQogCi1Mb2NhbFN0b3JhZ2VE
YXRhYmFzZTo6TG9jYWxTdG9yYWdlRGF0YWJhc2UoUGFzc1JlZlB0cjxXb3JrUXVldWU+IHF1ZXVl
LCBQYXNzUmVmUHRyPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcj4gdHJhY2tlciwgUmVmPFNl
Y3VyaXR5T3JpZ2luPiYmIHNlY3VyaXR5T3JpZ2luKQotICAgIDogbV9xdWV1ZShxdWV1ZSkKLSAg
ICAsIG1fdHJhY2tlcih0cmFja2VyKQorTG9jYWxTdG9yYWdlRGF0YWJhc2U6OkxvY2FsU3RvcmFn
ZURhdGFiYXNlKFJlZjxXb3JrUXVldWU+JiYgcXVldWUsIFJlZjxMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXI+JiYgdHJhY2tlciwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHNlY3VyaXR5T3JpZ2lu
KQorICAgIDogbV9xdWV1ZShXVEZNb3ZlKHF1ZXVlKSkKKyAgICAsIG1fdHJhY2tlcihXVEZNb3Zl
KHRyYWNrZXIpKQogICAgICwgbV9zZWN1cml0eU9yaWdpbihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2lu
KSkKICAgICAsIG1fZGF0YWJhc2VQYXRoKG1fdHJhY2tlci0+ZGF0YWJhc2VQYXRoKG1fc2VjdXJp
dHlPcmlnaW4ucHRyKCkpKQogICAgICwgbV9mYWlsZWRUb09wZW5EYXRhYmFzZShmYWxzZSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxT
dG9yYWdlRGF0YWJhc2UuaAkocmV2aXNpb24gMjA4NDQ3KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgTG9jYWxTdG9yYWdlRGF0YWJhc2VfaAotI2RlZmluZSBMb2NhbFN0b3JhZ2VEYXRh
YmFzZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2Uu
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNDUsNyArNDQsNyBAQCBjbGFzcyBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI7CiAKIGNsYXNzIExvY2FsU3RvcmFnZURhdGFiYXNlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPExvY2FsU3RvcmFnZURhdGFiYXNlPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TG9jYWxTdG9yYWdlRGF0YWJhc2U+IGNyZWF0ZShQ
YXNzUmVmUHRyPFdvcmtRdWV1ZT4sIFBhc3NSZWZQdHI8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyPiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmKTsKKyAgICBzdGF0aWMgUmVmPExv
Y2FsU3RvcmFnZURhdGFiYXNlPiBjcmVhdGUoUmVmPFdvcmtRdWV1ZT4mJiwgUmVmPExvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlcj4mJiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmKTsK
ICAgICB+TG9jYWxTdG9yYWdlRGF0YWJhc2UoKTsKIAogICAgIC8vIFdpbGwgYmxvY2sgdW50aWwg
dGhlIGltcG9ydCBpcyBjb21wbGV0ZS4KQEAgLTU5LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgY2xvc2UoKTsKIAogcHJpdmF0ZToKLSAgICBMb2NhbFN0b3JhZ2VEYXRhYmFzZShQYXNzUmVm
UHRyPFdvcmtRdWV1ZT4sIFBhc3NSZWZQdHI8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiwg
UmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmKTsKKyAgICBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZShSZWY8V29ya1F1ZXVlPiYmLCBSZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiYmLCBS
ZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYpOwogCiAgICAgZW51bSBEYXRhYmFzZU9wZW5p
bmdTdHJhdGVneSB7CiAgICAgICAgIENyZWF0ZUlmTm9uRXhpc3RlbnQsCkBAIC03OCw4ICs3Nyw4
IEBAIHByaXZhdGU6CiAKICAgICBib29sIGRhdGFiYXNlSXNFbXB0eSgpOwogCi0gICAgUmVmUHRy
PFdvcmtRdWV1ZT4gbV9xdWV1ZTsKLSAgICBSZWZQdHI8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyPiBtX3RyYWNrZXI7CisgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICBSZWY8TG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiBtX3RyYWNrZXI7CiAgICAgUmVmPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogCiAgICAgU3RyaW5nIG1fZGF0YWJhc2VQ
YXRoOwpAQCAtOTcsNSArOTYsMyBAQCBwcml2YXRlOgogCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gTG9jYWxTdG9yYWdlRGF0YWJhc2VfaApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIuY3BwCShyZXZpc2lvbiAyMDg0NDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCwxMyArMzgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cj4gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpjcmVhdGUoUGFzc1JlZlB0cjxXb3JrUXVl
dWU+IHF1ZXVlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKK1JlZjxMb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI+IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6Y3Jl
YXRlKFJlZjxXb3JrUXVldWU+JiYgcXVldWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGly
ZWN0b3J5KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyKHF1ZXVlLCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoV1RGTW92ZShxdWV1ZSksIGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSkpOwogfQogCi1Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Okxv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihQYXNzUmVmUHRyPFdvcmtRdWV1ZT4gcXVldWUsIGNv
bnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQotICAgIDogbV9xdWV1ZShxdWV1ZSkK
K0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
KFJlZjxXb3JrUXVldWU+JiYgcXVldWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0
b3J5KQorICAgIDogbV9xdWV1ZShXVEZNb3ZlKHF1ZXVlKSkKICAgICAsIG1fbG9jYWxTdG9yYWdl
RGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSkKIHsKICAgICBB
U1NFUlQoIW1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuaAkocmV2aXNpb24gMjA4NDQ3KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDEzICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyX2gKLSNkZWZp
bmUgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgpAQCAtNDYsNyArNDQsNyBAQCBzdHJ1Y3Qg
TG9jYWxTdG9yYWdlRGV0YWlsczsKIAogY2xhc3MgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cj4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcj4gY3JlYXRlKFBhc3NSZWZQdHI8V29ya1F1ZXVlPiwgY29uc3QgU3RyaW5nJiBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkpOworICAgIHN0YXRpYyBSZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyPiBjcmVhdGUoUmVmPFdvcmtRdWV1ZT4mJiwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkpOwogICAgIH5Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoKTsKIAogICAg
IFN0cmluZyBkYXRhYmFzZVBhdGgoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKSBjb25zdDsKQEAg
LTY4LDcgKzY2LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxPcmlnaW5EZXRhaWxzPiBvcmlnaW5E
ZXRhaWxzKCk7CiAKIHByaXZhdGU6Ci0gICAgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKFBh
c3NSZWZQdHI8V29ya1F1ZXVlPiwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnkp
OworICAgIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihSZWY8V29ya1F1ZXVlPiYmLCBjb25z
dCBTdHJpbmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CiAKICAgICBTdHJpbmcgZGF0YWJhc2VQ
YXRoKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpIGNvbnN0OwogICAgIFN0cmluZyB0cmFja2VyRGF0
YWJhc2VQYXRoKCkgY29uc3Q7CkBAIC05NCw1ICs5MiwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMDg0NDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Miw3
ICsyOTIsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6b3BlbkRhCiAKICAg
ICAvLyBXZSBvcGVuIHRoZSBkYXRhYmFzZSBoZXJlIGV2ZW4gaWYgd2UndmUgYWxyZWFkeSBpbXBv
cnRlZCBvdXIgaXRlbXMgdG8gZW5zdXJlIHRoYXQgdGhlIGRhdGFiYXNlIGlzIG9wZW4gaWYgd2Ug
bmVlZCB0byB3cml0ZSB0byBpdC4KICAgICBpZiAoIW1fbG9jYWxTdG9yYWdlRGF0YWJhc2UpCi0g
ICAgICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2UgPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6Y3Jl
YXRlKG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTWFuYWdlcigpLT5tX3F1ZXVlLCBt
X2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU1hbmFnZXIoKS0+bV9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIsIG1fc2VjdXJpdHlPcmlnaW4uY29weVJlZigpKTsKKyAgICAgICAgbV9s
b2NhbFN0b3JhZ2VEYXRhYmFzZSA9IExvY2FsU3RvcmFnZURhdGFiYXNlOjpjcmVhdGUobV9sb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VNYW5hZ2VyKCktPm1fcXVldWUuY29weVJlZigpLCBt
X2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU1hbmFnZXIoKS0+bV9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIuY29weVJlZigpLCBtX3NlY3VyaXR5T3JpZ2luLmNvcHlSZWYoKSk7CiAK
ICAgICBpZiAobV9kaWRJbXBvcnRJdGVtc0Zyb21EYXRhYmFzZSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNDYxLDcgKzQ2MSw3IEBAIFJlZjxTdG9yYWdlTWFuYWdlcj4gU3RvcmFnZU1hbmFnZXI6OmNy
ZWEKIAogU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFN0cmluZyYgbG9jYWxT
dG9yYWdlRGlyZWN0b3J5KQogICAgIDogbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFw
cGxlLldlYktpdC5TdG9yYWdlTWFuYWdlciIpKQotICAgICwgbV9sb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIoTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpjcmVhdGUobV9xdWV1ZSwgbG9j
YWxTdG9yYWdlRGlyZWN0b3J5KSkKKyAgICAsIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
KExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6Y3JlYXRlKG1fcXVldWUuY29weVJlZigpLCBs
b2NhbFN0b3JhZ2VEaXJlY3RvcnkpKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGUgZW5jb2Rpbmcg
aXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHdlIHN0YXJ0IGRpc3BhdGNoaW5nIHRoaW5ncyB0byB0aGUg
cXVldWUuCiAgICAgVVRGOEVuY29kaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgJKHJldmlzaW9uIDIwODQ0NykKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk4LDkgKzk4LDkgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2U7CiAgICAgVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
KiBnZXRPckNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9y
YWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbik7
CiAKLSAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX3F1ZXVlOworICAgIFJlZjxXb3JrUXVldWU+IG1f
cXVldWU7CiAKLSAgICBSZWZQdHI8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiBtX2xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlcjsKKyAgICBSZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyPiBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjsKICAgICBIYXNoTWFwPHVpbnQ2NF90
LCBSZWZQdHI8TG9jYWxTdG9yYWdlTmFtZXNwYWNlPj4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2Vz
OwogCiAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4+LCBSZWZQdHI8VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlPj4gbV90
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuY3BwCShyZXZpc2lvbiAyMDg0NDcp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIFNlY0l0ZW1TaGltUHJveHk6OlNlY0l0ZW1T
aGltUHJveHkoKQogCiB2b2lkIFNlY0l0ZW1TaGltUHJveHk6OmluaXRpYWxpemVDb25uZWN0aW9u
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKLSAgICBjb25uZWN0aW9uLmFkZFdvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U2VjSXRlbVNoaW1Qcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCAmbV9xdWV1ZS5nZXQoKSwgdGhpcyk7CisgICAgY29ubmVjdGlvbi5hZGRX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNlY0l0ZW1TaGltUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9xdWV1ZS5nZXQoKSwgdGhpcyk7CiB9CiAKIHZvaWQgU2VjSXRl
bVNoaW1Qcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCShyZXZp
c2lvbiAyMDg0NDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgs
NyBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6On5QbHVnaW5QCiAKIHZvaWQgUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNv
bm5lY3Rpb24qIGNvbm5lY3Rpb24pCiB7Ci0gICAgY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgJm1fcXVldWUuZ2V0KCksIHRoaXMpOworICAgIGNvbm5lY3Rp
b24tPmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUuZ2V0KCksIHRo
aXMpOwogfQogCiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9j
ZXNzVG9rZW4pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnRE
aXNwYXRjaGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAkocmV2aXNpb24gMjA4NDQ3KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OnJlbW92ZVNjcm9sbGlu
Z1RyZQogCiB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpD
b25uZWN0aW9uKiBjb25uZWN0aW9uKQogewotICAgIGNvbm5lY3Rpb24tPmFkZFdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RXZlbnREaXNwYXRjaGVyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksICZtX3F1ZXVlLmdldCgpLCB0aGlzKTsKKyAgICBjb25uZWN0aW9uLT5hZGRXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkV2ZW50RGlzcGF0Y2hlcjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3F1ZXVlLmdldCgpLCB0aGlzKTsKIH0KIAogdm9pZCBFdmVudERpc3BhdGNo
ZXI6OndoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVl
bEV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0Umln
aHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0
Y2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAkocmV2aXNpb24gMjA4NDQ3KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6flZpZXdVcGRh
dGVEaXNwYXRjCiAKIHZvaWQgVmlld1VwZGF0ZURpc3BhdGNoZXI6OmluaXRpYWxpemVDb25uZWN0
aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKIHsKLSAgICBjb25uZWN0aW9uLT5hZGRX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdVcGRhdGVEaXNwYXRjaGVyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksICZtX3F1ZXVlLmdldCgpLCB0aGlzKTsKKyAgICBjb25uZWN0
aW9uLT5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdVcGRhdGVEaXNw
YXRjaGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUuZ2V0KCksIHRoaXMpOwogfQog
CiB2b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVyOjp2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUodWlu
dDY0X3QgcGFnZUlELCBjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJiB2aXNpYmxl
Q29udGVudFJlY3RVcGRhdGVJbmZvKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODQ5MikKKysr
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMxIEBA
CisyMDE2LTExLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgQ2xlYW4gdXAgU3RvcmFnZSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ1NjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21lIGNsYXNzZXMgd2VyZSBpbiBXZWJDb3JlIG5h
bWVzcGFjZSBpbnN0ZWFkIG9mIFdlYktpdC4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFy
ZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpTdG9yYWdlQXJl
YUltcGwpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlQXJlYUltcGw6On5TdG9yYWdlQXJlYUltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3RvcmFnZUFyZWFJbXBsOjpTdG9yYWdlQXJlYUltcGwpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFJbXBsOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZUFyZWFJbXBsOjpjb3B5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2VBcmVhSW1wbDo6Y2FuQWNjZXNzU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlQXJlYUltcGw6OnN0b3JhZ2VUeXBlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhSW1wbDo6bGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2VBcmVhSW1wbDo6a2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2VBcmVhSW1wbDo6aXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlQXJlYUltcGw6OnNldEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3Rv
cmFnZUFyZWFJbXBsOjpyZW1vdmVJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0
b3JhZ2VBcmVhSW1wbDo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFn
ZUFyZWFJbXBsOjpjb250YWlucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
QXJlYUltcGw6OmltcG9ydEl0ZW1zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2VBcmVhSW1wbDo6Y2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFy
ZWFJbXBsOjpjbGVhckZvck9yaWdpbkRlbGV0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2VBcmVhSW1wbDo6c3luYyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlQXJlYUltcGw6OmJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYUltcGw6Om1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFJbXBsOjppbmNyZW1lbnRBY2Nl
c3NDb3VudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYUltcGw6OmRl
Y3JlbWVudEFjY2Vzc0NvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VB
cmVhSW1wbDo6Y2xvc2VEYXRhYmFzZVRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3RvcmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhSW1wbDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQpOiBE
ZWxldGVkLgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6CisgICAgICAgICog
U3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YVN5bmM6OlN0b3JhZ2VBcmVhU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhU3lu
Yzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhU3luYzo6U3RvcmFnZUFy
ZWFTeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhU3luYzo6Y3Jl
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhU3luYzo6flN0b3Jh
Z2VBcmVhU3luYyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6
OnNjaGVkdWxlRmluYWxTeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VB
cmVhU3luYzo6c2NoZWR1bGVJdGVtRm9yU3luYyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlQXJlYVN5bmM6OnNjaGVkdWxlQ2xlYXIpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3RvcmFnZUFyZWFTeW5jOjpzY2hlZHVsZUNsb3NlRGF0YWJhc2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFTeW5jOjpzeW5jVGltZXJGaXJlZCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6Om9wZW5EYXRhYmFzZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6Om1pZ3JhdGVJdGVtVGFi
bGVJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6
OnBlcmZvcm1JbXBvcnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFT
eW5jOjptYXJrSW1wb3J0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFy
ZWFTeW5jOjpibG9ja1VudGlsSW1wb3J0Q29tcGxldGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3RvcmFnZUFyZWFTeW5jOjpzeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybVN5bmMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U3RvcmFnZUFyZWFTeW5jOjpkZWxldGVFbXB0eURhdGFiYXNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhU3luYzo6c2NoZWR1bGVTeW5jKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oOgorICAgICAgICAqIFN0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEpOgorICAg
ICAgICAoV2ViQ29yZTo6bG9jYWxTdG9yYWdlTmFtZXNwYWNlTWFwKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjp+U3RvcmFnZU5h
bWVzcGFjZUltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNvcHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZUltcGw6OnN0b3JhZ2VBcmVhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjbG9zZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6Y2xlYXJPcmlnaW5Gb3JEZWxldGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y2xlYXJBbGxPcmlnaW5zRm9yRGVsZXRp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN5
bmMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNs
b3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcyk6IERlbGV0ZWQuCisgICAgICAgICogU3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OmluaXRpYWxpemVUcmFj
a2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjppbnRlcm5h
bEluaXRpYWxpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6
OnRyYWNrZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OlN0
b3JhZ2VUcmFja2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2Vy
OjpzZXREYXRhYmFzZURpcmVjdG9yeVBhdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZVRyYWNrZXI6OmRhdGFiYXNlRGlyZWN0b3J5UGF0aCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlckRhdGFiYXNlUGF0aCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjplbnN1cmVEYXRhYmFzZUZpbGVFeGlzdHMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6Om9wZW5UcmFja2VyRGF0YWJhc2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OmltcG9ydE9yaWdpbklk
ZW50aWZpZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpm
aW5pc2hlZEltcG9ydGluZ09yaWdpbklkZW50aWZpZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpzeW5jSW1wb3J0T3JpZ2luSWRlbnRpZmllcnMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnN5bmNGaWxlU3lzdGVtQW5k
VHJhY2tlckRhdGFiYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFj
a2VyOjpzZXRPcmlnaW5EZXRhaWxzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2VUcmFja2VyOjpzeW5jU2V0T3JpZ2luRGV0YWlscyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTdG9yYWdlVHJhY2tlcjo6b3JpZ2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlVHJhY2tlcjo6ZGVsZXRlQWxsT3JpZ2lucyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjp0cnVuY2F0ZURhdGFiYXNlRmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbldpdGhJZGVudGlmaWVyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpkZWxldGVPcmlnaW4p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVP
cmlnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OndpbGxE
ZWxldGVBbGxPcmlnaW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFj
a2VyOjp3aWxsRGVsZXRlT3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2VUcmFja2VyOjpjYW5EZWxldGVPcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZVRyYWNrZXI6OmNhbmNlbERlbGV0aW5nT3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjppc0FjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6c2V0SXNBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OmRhdGFiYXNlUGF0aEZvck9yaWdpbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKTog
RGVsZXRlZC4KKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6c3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpzZXRTdG9yYWdlRGF0YWJh
c2VJZGxlSW50ZXJ2YWwpOiBEZWxldGVkLgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjp+V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y2xvc2VMb2NhbFN0b3JhZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjbGVhckxvY2Fs
U3RvcmFnZUZvckFsbE9yaWdpbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpjbGVhckxvY2FsU3RvcmFnZUZvck9yaWdpbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNsb3NlSWRsZUxvY2FsU3RvcmFnZURh
dGFiYXNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OnN5bmNMb2NhbFN0b3JhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVz
cGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICog
U3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJWaWV3R3JvdXAuY3BwOgorICAgICAgICAoV2ViVmlld0dyb3VwOjpzdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIpOgorCiAyMDE2LTExLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBDb3B5IGJ1aWxkIHJlc3VsdHMgdG8gQUFTICdQ
cm9ncmFtIEZpbGVzJyBmb2xkZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFn
ZUFyZWFJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFn
ZUFyZWFJbXBsLmNwcAkocmV2aXNpb24gMjA4NDQ3KQorKysgU291cmNlL1dlYktpdC9TdG9yYWdl
L1N0b3JhZ2VBcmVhSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE4ICszNCwyMCBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKIAogU3RvcmFnZUFyZWFJbXBsOjp+U3RvcmFnZUFyZWFJbXBsKCkK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogfQogCi1pbmxpbmUgU3RvcmFnZUFyZWFJ
bXBsOjpTdG9yYWdlQXJlYUltcGwoU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiwgUGFzc1JlZlB0cjxTdG9yYWdlU3luY01hbmFnZXI+IHN5
bmNNYW5hZ2VyLCB1bnNpZ25lZCBxdW90YSkKK2lubGluZSBTdG9yYWdlQXJlYUltcGw6OlN0b3Jh
Z2VBcmVhSW1wbChTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiYmIG9yaWdpbiwgUmVmUHRyPFN0b3JhZ2VTeW5jTWFuYWdlcj4mJiBzeW5jTWFuYWdlciwgdW5z
aWduZWQgcXVvdGEpCiAgICAgOiBtX3N0b3JhZ2VUeXBlKHN0b3JhZ2VUeXBlKQotICAgICwgbV9z
ZWN1cml0eU9yaWdpbihvcmlnaW4pCisgICAgLCBtX3NlY3VyaXR5T3JpZ2luKFdURk1vdmUob3Jp
Z2luKSkKICAgICAsIG1fc3RvcmFnZU1hcChTdG9yYWdlTWFwOjpjcmVhdGUocXVvdGEpKQotICAg
ICwgbV9zdG9yYWdlU3luY01hbmFnZXIoc3luY01hbmFnZXIpCisgICAgLCBtX3N0b3JhZ2VTeW5j
TWFuYWdlcihXVEZNb3ZlKHN5bmNNYW5hZ2VyKSkKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2lz
U2h1dGRvd24oZmFsc2UpCiAjZW5kaWYKQEAgLTYxLDMzICs2MywzMSBAQCBpbmxpbmUgU3RvcmFn
ZUFyZWFJbXBsOjpTdG9yYWdlQXJlYUltcGwoCiAgICAgU3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIo
KTsKIH0KIAotUmVmPFN0b3JhZ2VBcmVhSW1wbD4gU3RvcmFnZUFyZWFJbXBsOjpjcmVhdGUoU3Rv
cmFnZVR5cGUgc3RvcmFnZVR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiwg
UGFzc1JlZlB0cjxTdG9yYWdlU3luY01hbmFnZXI+IHN5bmNNYW5hZ2VyLCB1bnNpZ25lZCBxdW90
YSkKK1JlZjxTdG9yYWdlQXJlYUltcGw+IFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKFN0b3JhZ2VU
eXBlIHN0b3JhZ2VUeXBlLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBSZWZQdHI8
U3RvcmFnZVN5bmNNYW5hZ2VyPiYmIHN5bmNNYW5hZ2VyLCB1bnNpZ25lZCBxdW90YSkKIHsKLSAg
ICBSZWY8U3RvcmFnZUFyZWFJbXBsPiBhcmVhID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlQXJlYUlt
cGwoc3RvcmFnZVR5cGUsIG9yaWdpbiwgc3luY01hbmFnZXIsIHF1b3RhKSk7Ci0KKyAgICBSZWY8
U3RvcmFnZUFyZWFJbXBsPiBhcmVhID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlQXJlYUltcGwoc3Rv
cmFnZVR5cGUsIFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShzeW5jTWFuYWdlciksIHF1b3RhKSk7
CiAgICAgLy8gRklYTUU6IElmIHRoZXJlJ3Mgbm8gYmFja2luZyBzdG9yYWdlIGZvciBMb2NhbFN0
b3JhZ2UsIHRoZSBkZWZhdWx0IFdlYktpdCBiZWhhdmlvciBzaG91bGQgYmUgdGhhdCBvZiBwcml2
YXRlIGJyb3dzaW5nLAogICAgIC8vIG5vdCBzaWxlbnRseSBpZ25vcmluZyBpdC4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODk0CiAgICAgaWYgKGFyZWEtPm1fc3Rv
cmFnZVN5bmNNYW5hZ2VyKSB7Ci0gICAgICAgIGFyZWEtPm1fc3RvcmFnZUFyZWFTeW5jID0gU3Rv
cmFnZUFyZWFTeW5jOjpjcmVhdGUoYXJlYS0+bV9zdG9yYWdlU3luY01hbmFnZXIsIGFyZWEucHRy
KCksIGFyZWEtPm1fc2VjdXJpdHlPcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICAg
ICAgYXJlYS0+bV9zdG9yYWdlQXJlYVN5bmMgPSBTdG9yYWdlQXJlYVN5bmM6OmNyZWF0ZShhcmVh
LT5tX3N0b3JhZ2VTeW5jTWFuYWdlci5nZXQoKSwgYXJlYS5jb3B5UmVmKCksIGFyZWEtPm1fc2Vj
dXJpdHlPcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICAgICAgQVNTRVJUKGFyZWEt
Pm1fc3RvcmFnZUFyZWFTeW5jKTsKICAgICB9Ci0KICAgICByZXR1cm4gYXJlYTsKIH0KIAotUGFz
c1JlZlB0cjxTdG9yYWdlQXJlYUltcGw+IFN0b3JhZ2VBcmVhSW1wbDo6Y29weSgpCitSZWY8U3Rv
cmFnZUFyZWFJbXBsPiBTdG9yYWdlQXJlYUltcGw6OmNvcHkoKQogewogICAgIEFTU0VSVCghbV9p
c1NodXRkb3duKTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VBcmVhSW1wbCh0aGlz
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZUFyZWFJbXBsKCp0aGlzKSk7CiB9
CiAKLVN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBsKFN0b3JhZ2VBcmVhSW1wbCogYXJl
YSkKLSAgICA6IG1fc3RvcmFnZVR5cGUoYXJlYS0+bV9zdG9yYWdlVHlwZSkKLSAgICAsIG1fc2Vj
dXJpdHlPcmlnaW4oYXJlYS0+bV9zZWN1cml0eU9yaWdpbikKLSAgICAsIG1fc3RvcmFnZU1hcChh
cmVhLT5tX3N0b3JhZ2VNYXApCi0gICAgLCBtX3N0b3JhZ2VTeW5jTWFuYWdlcihhcmVhLT5tX3N0
b3JhZ2VTeW5jTWFuYWdlcikKK1N0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBsKGNvbnN0
IFN0b3JhZ2VBcmVhSW1wbCYgYXJlYSkKKyAgICA6IG1fc3RvcmFnZVR5cGUoYXJlYS5tX3N0b3Jh
Z2VUeXBlKQorICAgICwgbV9zZWN1cml0eU9yaWdpbihhcmVhLm1fc2VjdXJpdHlPcmlnaW4uY29w
eVJlZigpKQorICAgICwgbV9zdG9yYWdlTWFwKGFyZWEubV9zdG9yYWdlTWFwKQorICAgICwgbV9z
dG9yYWdlU3luY01hbmFnZXIoYXJlYS5tX3N0b3JhZ2VTeW5jTWFuYWdlcikKICNpZm5kZWYgTkRF
QlVHCi0gICAgLCBtX2lzU2h1dGRvd24oYXJlYS0+bV9pc1NodXRkb3duKQorICAgICwgbV9pc1No
dXRkb3duKGFyZWEubV9pc1NodXRkb3duKQogI2VuZGlmCiAgICAgLCBtX2FjY2Vzc0NvdW50KDAp
CiAgICAgLCBtX2Nsb3NlRGF0YWJhc2VUaW1lcigqdGhpcywgJlN0b3JhZ2VBcmVhSW1wbDo6Y2xv
c2VEYXRhYmFzZVRpbWVyRmlyZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFn
ZUFyZWFJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5oCShyZXZpc2lvbiAyMDg0NDcpCisrKyBTb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3Rv
cmFnZUFyZWFJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDM2ICsyMywzNyBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFN0b3JhZ2VBcmVhSW1wbF9oCi0jZGVmaW5lIFN0b3Jh
Z2VBcmVhSW1wbF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZUFy
ZWEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotCiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFN0
b3JhZ2VNYXA7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCiBjbGFzcyBTdG9yYWdlQXJlYVN5
bmM7CiAKLWNsYXNzIFN0b3JhZ2VBcmVhSW1wbCA6IHB1YmxpYyBTdG9yYWdlQXJlYSB7CitjbGFz
cyBTdG9yYWdlQXJlYUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZUFyZWEgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8U3RvcmFnZUFyZWFJbXBsPiBjcmVhdGUoU3RvcmFnZVR5cGUsIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBQYXNzUmVmUHRyPFN0b3JhZ2VTeW5jTWFuYWdlcj4s
IHVuc2lnbmVkIHF1b3RhKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VBcmVhSW1wbD4gY3JlYXRl
KFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYs
IFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI+JiYsIHVuc2lnbmVkIHF1b3RhKTsK
ICAgICB2aXJ0dWFsIH5TdG9yYWdlQXJlYUltcGwoKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgp
IG92ZXJyaWRlOwogICAgIFN0cmluZyBrZXkodW5zaWduZWQgaW5kZXgpIG92ZXJyaWRlOwogICAg
IFN0cmluZyBpdGVtKGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEl0
ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgYm9vbCYgcXVvdGFFeGNlcHRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgcmVtb3ZlSXRl
bShGcmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKLSAgICB2
b2lkIGNsZWFyKEZyYW1lKiBzb3VyY2VGcmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRJdGVt
KFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgdmFsdWUsIGJvb2wmIHF1b3RhRXhjZXB0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIHJl
bW92ZUl0ZW0oV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBTdHJpbmcmIGtleSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhcihXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUpIG92
ZXJyaWRlOwogICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwog
Ci0gICAgYm9vbCBjYW5BY2Nlc3NTdG9yYWdlKEZyYW1lKiBzb3VyY2VGcmFtZSkgb3ZlcnJpZGU7
Ci0gICAgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGNhbkFjY2Vzc1N0b3JhZ2UoV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lKSBvdmVycmlkZTsK
KyAgICBXZWJDb3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBvdmVycmlkZTsKIApAQCAtNjAs
OSArNjEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJy
aWRlOwogICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJyaWRlOwogCi0gICAgU2Vj
dXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgb3ZlcnJpZGUgeyByZXR1cm4gKm1fc2VjdXJp
dHlPcmlnaW47IH0KKyAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4o
KSBvdmVycmlkZSB7IHJldHVybiAqbV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQogCi0gICAgUGFz
c1JlZlB0cjxTdG9yYWdlQXJlYUltcGw+IGNvcHkoKTsKKyAgICBSZWY8U3RvcmFnZUFyZWFJbXBs
PiBjb3B5KCk7CiAgICAgdm9pZCBjbG9zZSgpOwogCiAgICAgLy8gT25seSBjYWxsZWQgZnJvbSBh
IGJhY2tncm91bmQgdGhyZWFkLgpAQCAtNzQsMjggKzc1LDI2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHN5bmMoKTsKIAogcHJpdmF0ZToKLSAgICBTdG9yYWdlQXJlYUltcGwoU3RvcmFnZVR5cGUsIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBQYXNzUmVmUHRyPFN0b3JhZ2VTeW5jTWFuYWdlcj4s
IHVuc2lnbmVkIHF1b3RhKTsKLSAgICBleHBsaWNpdCBTdG9yYWdlQXJlYUltcGwoU3RvcmFnZUFy
ZWFJbXBsKik7CisgICAgU3RvcmFnZUFyZWFJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBSZWZQ
dHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlU3lu
Y01hbmFnZXI+JiYsIHVuc2lnbmVkIHF1b3RhKTsKKyAgICBleHBsaWNpdCBTdG9yYWdlQXJlYUlt
cGwoY29uc3QgU3RvcmFnZUFyZWFJbXBsJik7CiAKICAgICB2b2lkIGJsb2NrVW50aWxJbXBvcnRD
b21wbGV0ZSgpIGNvbnN0OwogICAgIHZvaWQgY2xvc2VEYXRhYmFzZVRpbWVyRmlyZWQoKTsKIAot
ICAgIHZvaWQgZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIEZyYW1lKiBzb3VyY2VGcmFt
ZSk7CisgICAgdm9pZCBkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgV2ViQ29yZTo6RnJh
bWUqIHNvdXJjZUZyYW1lKTsKIAotICAgIFN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7Ci0gICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwotICAgIFJlZlB0cjxTdG9y
YWdlTWFwPiBtX3N0b3JhZ2VNYXA7CisgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGUgbV9zdG9yYWdl
VHlwZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmln
aW47CisgICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VNYXA+IG1fc3RvcmFnZU1hcDsKIAogICAg
IFJlZlB0cjxTdG9yYWdlQXJlYVN5bmM+IG1fc3RvcmFnZUFyZWFTeW5jOwotICAgIFJlZlB0cjxT
dG9yYWdlU3luY01hbmFnZXI+IG1fc3RvcmFnZVN5bmNNYW5hZ2VyOworICAgIFJlZlB0cjxXZWJD
b3JlOjpTdG9yYWdlU3luY01hbmFnZXI+IG1fc3RvcmFnZVN5bmNNYW5hZ2VyOwogCiAjaWZuZGVm
IE5ERUJVRwogICAgIGJvb2wgbV9pc1NodXRkb3duOwogI2VuZGlmCiAgICAgdW5zaWduZWQgbV9h
Y2Nlc3NDb3VudDsKLSAgICBUaW1lciBtX2Nsb3NlRGF0YWJhc2VUaW1lcjsKKyAgICBXZWJDb3Jl
OjpUaW1lciBtX2Nsb3NlRGF0YWJhc2VUaW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIFN0b3JhZ2VBcmVhSW1wbF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1N0
b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1N0
b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAkocmV2aXNpb24gMjA4NDQ3KQorKysgU291cmNlL1dl
YktpdC9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcg
KzM1LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1N1ZGRlblRlcm1pbmF0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBJZiB0aGUgU3RvcmFnZUFy
ZWEgdW5kZXJnb2VzIHJhcGlkIGNoYW5nZXMsIGRvbid0IHN5bmMgZWFjaCBjaGFuZ2UgdG8gZGlz
ay4KIC8vIEluc3RlYWQsIHF1ZXVlIHVwIGEgYmF0Y2ggb2YgaXRlbXMgdG8gc3luYyBhbmQgYWN0
dWFsbHkgZG8gdGhlIHN5bmMgYXQgdGhlIGZvbGxvd2luZyBpbnRlcnZhbC4KQEAgLTQ1LDEyICs0
NywxMiBAQCBzdGF0aWMgY29uc3QgZG91YmxlIFN0b3JhZ2VTeW5jSW50ZXJ2YWwgCiAvLyBtdWNo
IGhhcmRlciB0byBzdGFydmUgdGhlIHJlc3Qgb2YgTG9jYWxTdG9yYWdlIGFuZCB0aGUgT1MncyBJ
TyBzdWJzeXN0ZW0gaW4gZ2VuZXJhbC4KIHN0YXRpYyBjb25zdCBpbnQgTWF4aXVtSXRlbXNUb1N5
bmMgPSAxMDA7CiAKLWlubGluZSBTdG9yYWdlQXJlYVN5bmM6OlN0b3JhZ2VBcmVhU3luYyhQYXNz
UmVmUHRyPFN0b3JhZ2VTeW5jTWFuYWdlcj4gc3RvcmFnZVN5bmNNYW5hZ2VyLCBQYXNzUmVmUHRy
PFN0b3JhZ2VBcmVhSW1wbD4gc3RvcmFnZUFyZWEsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVu
dGlmaWVyKQoraW5saW5lIFN0b3JhZ2VBcmVhU3luYzo6U3RvcmFnZUFyZWFTeW5jKFJlZlB0cjxT
dG9yYWdlU3luY01hbmFnZXI+JiYgc3RvcmFnZVN5bmNNYW5hZ2VyLCBSZWY8U3RvcmFnZUFyZWFJ
bXBsPiYmIHN0b3JhZ2VBcmVhLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKICAg
ICA6IG1fc3luY1RpbWVyKCp0aGlzLCAmU3RvcmFnZUFyZWFTeW5jOjpzeW5jVGltZXJGaXJlZCkK
ICAgICAsIG1faXRlbXNDbGVhcmVkKGZhbHNlKQogICAgICwgbV9maW5hbFN5bmNTY2hlZHVsZWQo
ZmFsc2UpCi0gICAgLCBtX3N0b3JhZ2VBcmVhKHN0b3JhZ2VBcmVhKQotICAgICwgbV9zeW5jTWFu
YWdlcihzdG9yYWdlU3luY01hbmFnZXIpCisgICAgLCBtX3N0b3JhZ2VBcmVhKFdURk1vdmUoc3Rv
cmFnZUFyZWEpKQorICAgICwgbV9zeW5jTWFuYWdlcihXVEZNb3ZlKHN0b3JhZ2VTeW5jTWFuYWdl
cikpCiAgICAgLCBtX2RhdGFiYXNlSWRlbnRpZmllcihkYXRhYmFzZUlkZW50aWZpZXIuaXNvbGF0
ZWRDb3B5KCkpCiAgICAgLCBtX2NsZWFySXRlbXNXaGlsZVN5bmNpbmcoZmFsc2UpCiAgICAgLCBt
X3N5bmNTY2hlZHVsZWQoZmFsc2UpCkBAIC03MSw5ICs3Myw5IEBAIGlubGluZSBTdG9yYWdlQXJl
YVN5bmM6OlN0b3JhZ2VBcmVhU3luYygKICAgICB9KTsKIH0KIAotUmVmPFN0b3JhZ2VBcmVhU3lu
Yz4gU3RvcmFnZUFyZWFTeW5jOjpjcmVhdGUoUGFzc1JlZlB0cjxTdG9yYWdlU3luY01hbmFnZXI+
IHN0b3JhZ2VTeW5jTWFuYWdlciwgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYUltcGw+IHN0b3JhZ2VB
cmVhLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKK1JlZjxTdG9yYWdlQXJlYVN5
bmM+IFN0b3JhZ2VBcmVhU3luYzo6Y3JlYXRlKFJlZlB0cjxTdG9yYWdlU3luY01hbmFnZXI+JiYg
c3RvcmFnZVN5bmNNYW5hZ2VyLCBSZWY8U3RvcmFnZUFyZWFJbXBsPiYmIHN0b3JhZ2VBcmVhLCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdG9yYWdlQXJlYVN5bmMoc3RvcmFnZVN5bmNNYW5hZ2VyLCBzdG9yYWdlQXJlYSwgZGF0
YWJhc2VJZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZUFyZWFT
eW5jKFdURk1vdmUoc3RvcmFnZVN5bmNNYW5hZ2VyKSwgV1RGTW92ZShzdG9yYWdlQXJlYSksIGRh
dGFiYXNlSWRlbnRpZmllcikpOwogfQogCiBTdG9yYWdlQXJlYVN5bmM6On5TdG9yYWdlQXJlYVN5
bmMoKQpJbmRleDogU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaAkocmV2aXNp
b24gMjA4NDQ3KQorKysgU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgU3RvcmFnZUFyZWFTeW5jX2gKLSNkZWZpbmUgU3RvcmFnZUFyZWFTeW5jX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVGltZXIuaD4KQEAgLTMzLDE0ICszMiwxNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU3RvcmFnZVN5bmNN
YW5hZ2VyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgRnJhbWU7CiBjbGFzcyBT
dG9yYWdlQXJlYUltcGw7Ci1jbGFzcyBTdG9yYWdlU3luY01hbmFnZXI7CiAKIGNsYXNzIFN0b3Jh
Z2VBcmVhU3luYyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTdG9yYWdlQXJlYVN5bmM+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VBcmVhU3luYz4gY3JlYXRlKFBhc3NS
ZWZQdHI8U3RvcmFnZVN5bmNNYW5hZ2VyPiwgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYUltcGw+LCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxTdG9yYWdl
QXJlYVN5bmM+IGNyZWF0ZShSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2VyPiYmLCBS
ZWY8U3RvcmFnZUFyZWFJbXBsPiYmLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcik7
CiAgICAgflN0b3JhZ2VBcmVhU3luYygpOwogCiAgICAgdm9pZCBzY2hlZHVsZUZpbmFsU3luYygp
OwpAQCAtNTMsMTkgKzU0LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlU3luYygpOwog
CiBwcml2YXRlOgotICAgIFN0b3JhZ2VBcmVhU3luYyhQYXNzUmVmUHRyPFN0b3JhZ2VTeW5jTWFu
YWdlcj4sIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPiwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZUlkZW50aWZpZXIpOworICAgIFN0b3JhZ2VBcmVhU3luYyhSZWZQdHI8V2ViQ29yZTo6U3RvcmFn
ZVN5bmNNYW5hZ2VyPiYmLCBSZWY8U3RvcmFnZUFyZWFJbXBsPiYmLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlSWRlbnRpZmllcik7CiAKLSAgICBUaW1lciBtX3N5bmNUaW1lcjsKKyAgICBXZWJDb3Jl
OjpUaW1lciBtX3N5bmNUaW1lcjsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2NoYW5n
ZWRJdGVtczsKICAgICBib29sIG1faXRlbXNDbGVhcmVkOwogCiAgICAgYm9vbCBtX2ZpbmFsU3lu
Y1NjaGVkdWxlZDsKIAogICAgIFJlZlB0cjxTdG9yYWdlQXJlYUltcGw+IG1fc3RvcmFnZUFyZWE7
Ci0gICAgUmVmUHRyPFN0b3JhZ2VTeW5jTWFuYWdlcj4gbV9zeW5jTWFuYWdlcjsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2VyPiBtX3N5bmNNYW5hZ2VyOwogCiAgICAgLy8g
VGhlIGRhdGFiYXNlIGhhbmRsZSB3aWxsIG9ubHkgZXZlciBiZSBvcGVuZWQgYW5kIHVzZWQgb24g
dGhlIGJhY2tncm91bmQgdGhyZWFkLgotICAgIFNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7Cisg
ICAgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UgbV9kYXRhYmFzZTsKIAogICAgIC8vIFRoZSBmb2xs
b3dpbmcgbWVtYmVycyBhcmUgc3ViamVjdCB0byB0aHJlYWQgc3luY2hyb25pemF0aW9uIGlzc3Vl
cy4KIHB1YmxpYzoKQEAgLTEwMyw1ICsxMDQsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU3RvcmFnZUFyZWFTeW5jX2gKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAkocmV2aXNpb24g
MjA4NDQ3KQorKysgU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsOSBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotbmFtZXNwYWNl
IFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
ewogCiBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFN0b3JhZ2VOYW1lc3BhY2VJbXBsKj4mIGxvY2Fs
U3RvcmFnZU5hbWVzcGFjZU1hcCgpCiB7CkBAIC00MiwyMSArNDQsMjEgQEAgc3RhdGljIEhhc2hN
YXA8U3RyaW5nLCBTdG9yYWdlTmFtZXNwYWNlSQogICAgIHJldHVybiBsb2NhbFN0b3JhZ2VOYW1l
c3BhY2VNYXA7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQor
UmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTZXNzaW9uU3RvcmFnZSwgU3RyaW5nKCksIHF1
b3RhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU2Vz
c2lvblN0b3JhZ2UsIFN0cmluZygpLCBxdW90YSkpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVz
cGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5h
bWVzcGFjZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCwgdW5zaWduZWQgcXVvdGEpCitSZWY8
U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCwgdW5zaWduZWQg
cXVvdGEpCiB7CiAgICAgQVNTRVJUKCFkYXRhYmFzZVBhdGguaXNOdWxsKCkpOwogCiAgICAgYXV0
byYgc2xvdCA9IGxvY2FsU3RvcmFnZU5hbWVzcGFjZU1hcCgpLmFkZChkYXRhYmFzZVBhdGgsIG51
bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoc2xvdCkKLSAgICAgICAgcmV0dXJuIHNs
b3Q7CisgICAgICAgIHJldHVybiAqc2xvdDsKIAotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNl
SW1wbD4gc3RvcmFnZU5hbWVzcGFjZSA9IGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1w
bChMb2NhbFN0b3JhZ2UsIGRhdGFiYXNlUGF0aCwgcXVvdGEpKTsKLSAgICBzbG90ID0gc3RvcmFn
ZU5hbWVzcGFjZS5nZXQoKTsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IHN0b3JhZ2VO
YW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKExvY2FsU3RvcmFn
ZSwgZGF0YWJhc2VQYXRoLCBxdW90YSkpOworICAgIHNsb3QgPSBzdG9yYWdlTmFtZXNwYWNlLnB0
cigpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2U7CiB9CkBAIC0xMDUsMTEgKzEwNywx
MSBAQCBSZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsCiAgICAgQVNTRVJU
KCFtX2lzU2h1dGRvd24pOwogCiAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhSW1wbD4gc3RvcmFnZUFy
ZWE7Ci0gICAgaWYgKChzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFNYXAuZ2V0KG9yaWdpbikp
KQorICAgIGlmICgoc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhTWFwLmdldChvcmlnaW4uZ2V0
KCkpKSkKICAgICAgICAgcmV0dXJuIHN0b3JhZ2VBcmVhOwogCi0gICAgc3RvcmFnZUFyZWEgPSBT
dG9yYWdlQXJlYUltcGw6OmNyZWF0ZShtX3N0b3JhZ2VUeXBlLCBvcmlnaW4uY29weVJlZigpLCBt
X3N5bmNNYW5hZ2VyLCBtX3F1b3RhKTsKLSAgICBtX3N0b3JhZ2VBcmVhTWFwLnNldChXVEZNb3Zl
KG9yaWdpbiksIHN0b3JhZ2VBcmVhKTsKKyAgICBzdG9yYWdlQXJlYSA9IFN0b3JhZ2VBcmVhSW1w
bDo6Y3JlYXRlKG1fc3RvcmFnZVR5cGUsIG9yaWdpbi5nZXQoKSwgbV9zeW5jTWFuYWdlci5nZXQo
KSwgbV9xdW90YSk7CisgICAgbV9zdG9yYWdlQXJlYU1hcC5zZXQob3JpZ2luLCBzdG9yYWdlQXJl
YS5nZXQoKSk7CiAgICAgcmV0dXJuIHN0b3JhZ2VBcmVhOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAkocmV2aXNpb24gMjA4NDQ3KQor
KysgU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBT
dG9yYWdlTmFtZXNwYWNlSW1wbF9oCi0jZGVmaW5lIFN0b3JhZ2VOYW1lc3BhY2VJbXBsX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2guaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VBcmVhLmg+CkBAIC0zMywxNCArMzIsMTQgQEAKICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTdG9yYWdlQXJl
YUltcGw7CiAKLWNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFN0b3JhZ2VOYW1l
c3BhY2UgeworY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3Rv
cmFnZU5hbWVzcGFjZSB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodW5z
aWduZWQgcXVvdGEpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZUltcGw+IGdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YSk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdl
TmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVv
dGEpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGdldE9yQ3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBx
dW90YSk7CiAgICAgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZUltcGwoKTsKIAogICAgIHZvaWQg
Y2xvc2UoKTsKQEAgLTQ5LDI1ICs0OCwyNSBAQCBwdWJsaWM6CiAgICAgLy8gd2UncmUganVzdCBk
ZWxldGluZyB0aGUgdW5kZXJseWluZyBkYiBmaWxlLiBJZiBhbiBpdGVtIGlzIGFkZGVkIGltbWVk
aWF0ZWx5CiAgICAgLy8gYWZ0ZXIgZmlsZSBkZWxldGlvbiwgd2Ugd2FudCB0aGUgc2FtZSBTdG9y
YWdlQXJlYSB0byBldmVudHVhbGx5IHRyaWdnZXIKICAgICAvLyBhIHN5bmMgYW5kIGZvciBTdG9y
YWdlQXJlYVN5bmMgdG8gcmVjcmVhdGUgdGhlIGJhY2tpbmcgZGIgZmlsZS4KLSAgICB2b2lkIGNs
ZWFyT3JpZ2luRm9yRGVsZXRpb24oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2b2lkIGNsZWFyT3Jp
Z2luRm9yRGVsZXRpb24oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKICAgICB2b2lkIGNsZWFy
QWxsT3JpZ2luc0ZvckRlbGV0aW9uKCk7CiAgICAgdm9pZCBzeW5jKCk7CiAgICAgdm9pZCBjbG9z
ZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMoKTsKIAogcHJpdmF0ZToKLSAgICBTdG9yYWdlTmFt
ZXNwYWNlSW1wbChTdG9yYWdlVHlwZSwgY29uc3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25lZCBxdW90
YSk7CisgICAgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIGNvbnN0
IFN0cmluZyYgcGF0aCwgdW5zaWduZWQgcXVvdGEpOwogCi0gICAgUmVmUHRyPFN0b3JhZ2VBcmVh
PiBzdG9yYWdlQXJlYShSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYpICBvdmVycmlkZTsKLSAgICBS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKFJlZlB0cjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4mJikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IGNvcHkoV2ViQ29yZTo6UGFnZSogbmV3UGFnZSkgb3ZlcnJpZGU7CiAKLSAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgUmVmUHRyPFN0b3JhZ2VBcmVhSW1wbD4+
IFN0b3JhZ2VBcmVhTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+LCBSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPj4gU3RvcmFnZUFyZWFNYXA7CiAg
ICAgU3RvcmFnZUFyZWFNYXAgbV9zdG9yYWdlQXJlYU1hcDsKIAotICAgIFN0b3JhZ2VUeXBlIG1f
c3RvcmFnZVR5cGU7CisgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGUgbV9zdG9yYWdlVHlwZTsKIAog
ICAgIC8vIE9ubHkgdXNlZCBpZiBtX3N0b3JhZ2VUeXBlID09IExvY2FsU3RvcmFnZSBhbmQgdGhl
IHBhdGggd2FzIG5vdCAiIiBpbiBvdXIgY29uc3RydWN0b3IuCiAgICAgU3RyaW5nIG1fcGF0aDsK
LSAgICBSZWZQdHI8U3RvcmFnZVN5bmNNYW5hZ2VyPiBtX3N5bmNNYW5hZ2VyOworICAgIFJlZlB0
cjxXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI+IG1fc3luY01hbmFnZXI7CiAKICAgICAvLyBU
aGUgZGVmYXVsdCBxdW90YSBmb3IgZWFjaCBuZXcgc3RvcmFnZSBhcmVhLgogICAgIHVuc2lnbmVk
IG1fcXVvdGE7CkBAIC03Niw1ICs3NSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBTdG9yYWdlTmFtZXNwYWNlSW1wbF9oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAJKHJldmlzaW9uIDIwODQ0NykKKysr
IFNvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDkgKzQzLDExIEBACiAjaW5jbHVkZSA8c3FsaXRlM19wcml2YXRlLmg+CiAjZW5kaWYK
IAotbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRp
YyBTdG9yYWdlVHJhY2tlciogc3RvcmFnZVRyYWNrZXIgPSAwOworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3N0YXRpYyBTdG9yYWdlVHJhY2tlciogc3RvcmFnZVRyYWNrZXIgPSBudWxscHRyOwogCiAv
LyBJZiB0aGVyZSBpcyBubyBkb2N1bWVudCByZWZlcmVuY2luZyBhIHN0b3JhZ2UgZGF0YWJhc2Us
IGNsb3NlIHRoZSB1bmRlcmx5aW5nIGRhdGFiYXNlCiAvLyBhZnRlciBpdCBoYXMgYmVlbiBpZGxl
IGZvciBtX1N0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCBzZWNvbmRzLgpJbmRleDogU291cmNl
L1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmgJKHJldmlzaW9uIDIwODQ0NykKKysrIFNvdXJj
ZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4
ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBTdG9yYWdlVHJhY2tlcl9oCi0jZGVmaW5lIFN0b3JhZ2VUcmFja2VyX2gKKyNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CkBAIC0zMywyOSArMzIsMzAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTdG9yYWdlVGFzazsKIGNs
YXNzIFN0b3JhZ2VUaHJlYWQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFN0b3JhZ2VU
cmFja2VyQ2xpZW50OyAgICAKK2NsYXNzIFN0b3JhZ2VUcmFja2VyQ2xpZW50OworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3RvcmFnZVRyYWNrZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFN0b3JhZ2VUcmFja2VyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBpbml0aWFsaXplVHJhY2tl
cihjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCBTdG9yYWdlVHJhY2tlckNsaWVudCopOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdG9yYWdlVHJhY2tlciYgdHJhY2tlcigpOworICAgIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVUcmFja2VyKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIFdl
YkNvcmU6OlN0b3JhZ2VUcmFja2VyQ2xpZW50Kik7CisgICAgc3RhdGljIFN0b3JhZ2VUcmFja2Vy
JiB0cmFja2VyKCk7CiAKICAgICB2b2lkIHNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChjb25zdCBT
dHJpbmcmKTsKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CiAKICAg
ICB2b2lkIHNldE9yaWdpbkRldGFpbHMoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlRmlsZSk7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkZWxldGVBbGxPcmlnaW5zKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVPcmln
aW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2b2lkIGRlbGV0ZUFsbE9yaWdpbnMoKTsKKyAgICB2
b2lkIGRlbGV0ZU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwogICAgIHZvaWQgZGVs
ZXRlT3JpZ2luV2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4+JiByZXN1bHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIGxvbmcgbG9uZyBkaXNrVXNhZ2VG
b3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2b2lkIG9yaWdpbnMoVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+JiByZXN1bHQpOworICAgIGxvbmcgbG9uZyBkaXNr
VXNhZ2VGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKICAgICAKICAgICB2b2lk
IGNhbmNlbERlbGV0aW5nT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcik7CiAg
ICAgCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgc3RvcmFnZURhdGFiYXNl
SWRsZUludGVydmFsKCkgeyByZXR1cm4gbV9TdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWw7IH0K
ICAgICB2b2lkIHNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwp
IHsgbV9TdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwgPSBpbnRlcnZhbDsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSgpOworICAg
IHZvaWQgc3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKTsKIAogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBTdG9yYWdlVHJhY2tlcihjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoKTsKQEAg
LTk2LDExICs5NiwxMSBAQCBwcml2YXRlOgogCiAgICAgLy8gTXV0ZXggZm9yIG1fZGF0YWJhc2Ug
YW5kIG1fc3RvcmFnZURpcmVjdG9yeVBhdGguCiAgICAgTG9jayBtX2RhdGFiYXNlTXV0ZXg7Ci0g
ICAgU1FMaXRlRGF0YWJhc2UgbV9kYXRhYmFzZTsKKyAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZSBtX2RhdGFiYXNlOwogICAgIFN0cmluZyBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoOwogCiAgICAg
TG9jayBtX2NsaWVudE11dGV4OwotICAgIFN0b3JhZ2VUcmFja2VyQ2xpZW50KiBtX2NsaWVudDsK
KyAgICBXZWJDb3JlOjpTdG9yYWdlVHJhY2tlckNsaWVudCogbV9jbGllbnQ7CiAKICAgICAvLyBH
dWFyZCBmb3IgbV9vcmlnaW5TZXQgYW5kIG1fb3JpZ2luc0JlaW5nRGVsZXRlZC4KICAgICBMb2Nr
IG1fb3JpZ2luU2V0TXV0ZXg7CkBAIC0xMDgsNyArMTA4LDcgQEAgcHJpdmF0ZToKICAgICBPcmln
aW5TZXQgbV9vcmlnaW5TZXQ7CiAgICAgT3JpZ2luU2V0IG1fb3JpZ2luc0JlaW5nRGVsZXRlZDsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlVGhyZWFkPiBtX3RocmVhZDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3RvcmFnZVRocmVhZD4gbV90aHJlYWQ7CiAgICAgCiAgICAg
Ym9vbCBtX2lzQWN0aXZlOwogICAgIGJvb2wgbV9uZWVkc0luaXRpYWxpemF0aW9uOwpAQCAtMTE2
LDUgKzExNiwzIEBAIHByaXZhdGU6CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gU3RvcmFnZVRyYWNrZXJfaApJbmRleDogU291cmNlL1dlYktpdC9TdG9yYWdl
L1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAJKHJldmlzaW9uIDIw
ODQ0NykKKysrIFNvdXJjZS9XZWJLaXQvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4IEBACiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCituYW1lc3BhY2UgV2ViS2l0IHsKKwogc3RhdGljIEhhc2hTZXQ8V2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyKj4mIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMoKQogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcio+PiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzOwpAQCAtMTEwLDMgKzExMiw1IEBAIFJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXMKICAgICAvLyBTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSBoZXJlLgogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3Jl
YXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOwogfQorCit9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCShy
ZXZpc2lvbiAyMDg0NDcpCisrKyBTb3VyY2UvV2ViS2l0L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDExICsyMywxMiBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyX2gKLSNkZWZpbmUgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyX2gK
KyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuaD4KIAorbmFtZXNwYWNlIFdlYktpdCB7CisKIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIg
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwpAQCAtNTEs
NCArNTIsNCBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2xvY2FsU3RvcmFnZURhdGFi
YXNlUGF0aDsKIH07CiAKLSNlbmRpZiAvLyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJfaAor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0
L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgJKHJldmlzaW9uIDIwODQ0
NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDcgQEAKICAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcl9o
Ci0jZGVmaW5lIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9h
ZGVyU3RyYXRlZ3kuaD4KQEAgLTEwNCw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAg
CiAgICAgSG9zdEluZm9ybWF0aW9uKiBob3N0Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENy
ZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXJ2
ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQ
cmlvcml0eSk7CisgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24q
LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSk7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBIb3N0SW5mb3JtYXRpb24qLCBTdHJpbmdIYXNoPiBIb3N0TWFwOwogICAgIEhvc3RN
YXAgbV9ob3N0czsKQEAgLTExNSw1ICsxMTQsMyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
c3VzcGVuZFBlbmRpbmdSZXF1ZXN0c0NvdW50OwogICAgIGJvb2wgbV9pc1NlcmlhbExvYWRpbmdF
bmFibGVkOwogfTsKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0
L1dlYlZpZXdHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJDb3JlU3Vw
cG9ydC9XZWJWaWV3R3JvdXAuY3BwCShyZXZpc2lvbiAyMDg0NDcpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcg
Kzk0LDcgQEAgdm9pZCBXZWJWaWV3R3JvdXA6OnJlbW92ZVdlYlZpZXcoV2ViVmlldwogU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyJiBXZWJWaWV3R3JvdXA6OnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cigpCiB7CiAgICAgaWYgKCFtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcikKLSAgICAgICAgbV9z
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZShtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CisgICAgICAgIG1fc3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyID0gV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZShtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAKICAgICByZXR1cm4gKm1fc3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOwogfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4NDQ3
KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTYtMTEtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBDbGVhbiB1cCBTdG9yYWdlIGNvZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDU2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9XZWJTdG9yYWdlTWFu
YWdlci5tbToKKyAgICAgICAgKC1bV2ViU3RvcmFnZU1hbmFnZXIgb3JpZ2luc10pOgorICAgICAg
ICAoLVtXZWJTdG9yYWdlTWFuYWdlciBkZWxldGVBbGxPcmlnaW5zXSk6CisgICAgICAgICgtW1dl
YlN0b3JhZ2VNYW5hZ2VyIGRlbGV0ZU9yaWdpbjpdKToKKyAgICAgICAgKC1bV2ViU3RvcmFnZU1h
bmFnZXIgZGlza1VzYWdlRm9yT3JpZ2luOl0pOgorICAgICAgICAoLVtXZWJTdG9yYWdlTWFuYWdl
ciBzeW5jTG9jYWxTdG9yYWdlXSk6CisgICAgICAgICgtW1dlYlN0b3JhZ2VNYW5hZ2VyIHN5bmNG
aWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlXSk6CisgICAgICAgICgrW1dlYlN0b3JhZ2VNYW5h
Z2VyIHNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbDpdKToKKyAgICAgICAgKCtbV2ViU3Rv
cmFnZU1hbmFnZXIgY2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzXSk6CisgICAgICAgIChX
ZWJLaXRJbml0aWFsaXplU3RvcmFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX2FwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZV0p
OgorCiAyMDE2LTExLTA0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFNhZmFyaSBkb2VzIG5vdCBlbWl0IGNvbXBvc2l0aW9uIGVuZCBpZiBibHVycmVk
IGZvciBkZWFkIGtleSAvIEphcGFuZXNlIElNRQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3Rv
cmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCShyZXZpc2lvbiAyMDg0NDcpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC02Niw3ICs2Niw3IEBAIC0gKE5TQXJyYXkgKilvcmlnaW5zCiB7CiAgICAgVmVjdG9yPFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4+IGNvcmVPcmlnaW5zOwogCi0gICAgU3RvcmFnZVRyYWNrZXI6
OnRyYWNrZXIoKS5vcmlnaW5zKGNvcmVPcmlnaW5zKTsKKyAgICBXZWJLaXQ6OlN0b3JhZ2VUcmFj
a2VyOjp0cmFja2VyKCkub3JpZ2lucyhjb3JlT3JpZ2lucyk7CiAKICAgICBOU011dGFibGVBcnJh
eSAqd2ViT3JpZ2lucyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6
Y29yZU9yaWdpbnMuc2l6ZSgpXTsKIApAQCAtODEsNyArODEsNyBAQCAtIChOU0FycmF5ICopb3Jp
Z2lucwogCiAtICh2b2lkKWRlbGV0ZUFsbE9yaWdpbnMKIHsKLSAgICBTdG9yYWdlVHJhY2tlcjo6
dHJhY2tlcigpLmRlbGV0ZUFsbE9yaWdpbnMoKTsKKyAgICBXZWJLaXQ6OlN0b3JhZ2VUcmFja2Vy
Ojp0cmFja2VyKCkuZGVsZXRlQWxsT3JpZ2lucygpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICAv
LyBGSVhNRTogVGhpcyBuZWVkcyB0byBiZSByZW1vdmVkIG9uY2UgU3RvcmFnZVRyYWNrZXJzIGlu
IG11bHRpcGxlIHByb2Nlc3NlcwogICAgIC8vIGFyZSBpbiBzeW5jOiA8cmRhcjovL3Byb2JsZW0v
OTU2NzUwMD4gUmVtb3ZlIFdlYnNpdGUgRGF0YSBwYW5lIGlzIG5vdCBrZXB0IGluIHN5bmMgd2l0
aCBTYWZhcmkKQEAgLTkxLDIyICs5MSwyMiBAQCAtICh2b2lkKWRlbGV0ZUFsbE9yaWdpbnMKIAog
LSAodm9pZClkZWxldGVPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiB7Ci0gICAg
U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVPcmlnaW4oW29yaWdpbiBfY29yZV0pOwor
ICAgIFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVPcmlnaW4oW29yaWdp
biBfY29yZV0pOwogfQogCiAtICh1bnNpZ25lZCBsb25nIGxvbmcpZGlza1VzYWdlRm9yT3JpZ2lu
OihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewotICAgIHJldHVybiBTdG9yYWdlVHJhY2tl
cjo6dHJhY2tlcigpLmRpc2tVc2FnZUZvck9yaWdpbihbb3JpZ2luIF9jb3JlXSk7CisgICAgcmV0
dXJuIFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5kaXNrVXNhZ2VGb3JPcmlnaW4o
W29yaWdpbiBfY29yZV0pOwogfQogCiAtICh2b2lkKXN5bmNMb2NhbFN0b3JhZ2UKIHsKLSAgICBX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OnN5bmNMb2NhbFN0b3JhZ2UoKTsKKyAgICBXZWJL
aXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6c3luY0xvY2FsU3RvcmFnZSgpOwogfQog
CiAtICh2b2lkKXN5bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlCiB7Ci0gICAgU3RvcmFn
ZVRyYWNrZXI6OnRyYWNrZXIoKS5zeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSgpOwor
ICAgIFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5zeW5jRmlsZVN5c3RlbUFuZFRy
YWNrZXJEYXRhYmFzZSgpOwogfQogCiArIChOU1N0cmluZyAqKV9zdG9yYWdlRGlyZWN0b3J5UGF0
aApAQCAtMTE3LDEyICsxMTcsMTIgQEAgKyAoTlNTdHJpbmcgKilfc3RvcmFnZURpcmVjdG9yeVBh
dGgKIAogKyAodm9pZClzZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWw6KGRvdWJsZSlpbnRl
cnZhbAogewotICAgIFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuc2V0U3RvcmFnZURhdGFiYXNl
SWRsZUludGVydmFsKGludGVydmFsKTsKKyAgICBXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjp0cmFj
a2VyKCkuc2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKGludGVydmFsKTsKIH0KIAogKyAo
dm9pZCljbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMKIHsKLSAgICBXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcygpOworICAgIFdl
YktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjbG9zZUlkbGVMb2NhbFN0b3JhZ2VE
YXRhYmFzZXMoKTsKIH0KIAogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUxvY2FsU3RvcmFnZVBhdGgo
KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZVN0b3JhZ2VJZk5lY2Vz
c2FyeSgKICAgICBpZiAoaW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBT
dG9yYWdlVHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIoW1dlYlN0b3JhZ2VNYW5hZ2VyIF9zdG9y
YWdlRGlyZWN0b3J5UGF0aF0sIFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50OjpzaGFyZWRXZWJTdG9y
YWdlVHJhY2tlckNsaWVudCgpKTsKKyAgICBXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjppbml0aWFs
aXplVHJhY2tlcihbV2ViU3RvcmFnZU1hbmFnZXIgX3N0b3JhZ2VEaXJlY3RvcnlQYXRoXSwgV2Vi
U3RvcmFnZVRyYWNrZXJDbGllbnQ6OnNoYXJlZFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50KCkpOwog
ICAgICAgICAKICAgICBpbml0aWFsaXplZCA9IFlFUzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDIwODQ0NykKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDkyMSw3ICs0OTIxLDcgQEAg
KyAodm9pZClfYXBwbGljYXRpb25XaWxsVGVybWluYXRlCiAgICAgaWYgKCFwbHVnaW5EYXRhYmFz
ZUNsaWVudENvdW50KQogICAgICAgICBbV2ViUGx1Z2luRGF0YWJhc2UgY2xvc2VTaGFyZWREYXRh
YmFzZV07CiAKLSAgICBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNsb3NlTG9jYWxTdG9y
YWdlKCk7CisgICAgV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNsb3NlTG9j
YWxTdG9yYWdlKCk7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAo=
</data>
<flag name="review"
          id="317013"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>