<?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>145508</bug_id>
          
          <creation_ts>2015-06-01 00:19:06 -0700</creation_ts>
          <short_desc>Purge PassRefPtr in WebCore/Modules - 3</short_desc>
          <delta_ts>2015-06-01 23:40:32 -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>New Bugs</component>
          <version>528+ (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>
          
          <blocked>144092</blocked>
    
    <blocked>145549</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1098457</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-01 00:19:06 -0700</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098458</commentid>
    <comment_count>1</comment_count>
      <attachid>253990</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-01 00:20:34 -0700</bug_when>
    <thetext>Created attachment 253990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098672</commentid>
    <comment_count>2</comment_count>
      <attachid>253990</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-01 18:04:57 -0700</bug_when>
    <thetext>Comment on attachment 253990
Patch

Clearing flags on attachment: 253990

Committed r185091: &lt;http://trac.webkit.org/changeset/185091&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098673</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-01 18:05:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098730</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-06-01 22:01:48 -0700</bug_when>
    <thetext>There are a few crashing IndexedDB tests on the debug bots:
&lt;https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK2%20(Tests)/r185101%20(4698)/results.html&gt;

&gt; Regressions: Unexpected crashes (5)
&gt;   storage/indexeddb/error-causes-abort-by-default.html [ Crash ]
&gt;   storage/indexeddb/exception-in-event-aborts.html [ Crash ]
&gt;   storage/indexeddb/mozilla/add-twice-failure.html [ Crash ]
&gt;   storage/indexeddb/request-event-propagation.html [ Crash ]
&gt;   storage/indexeddb/transaction-event-propagation.html [ Crash ]

I am not certain, but could these be a result of this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098731</commentid>
    <comment_count>5</comment_count>
      <attachid>253990</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-06-01 22:03:31 -0700</bug_when>
    <thetext>Comment on attachment 253990
Patch

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

&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:456
&gt; -    serverRequest-&gt;completeRequest(resultKey.isNull ? nullptr : resultKey.maybeCreateIDBKey(), errorCode ? IDBDatabaseError::create(errorCode, errorMessage) : nullptr);
&gt; +    serverRequest-&gt;completeRequest(resultKey.isNull ? nullptr : resultKey.maybeCreateIDBKey(), errorCode ? IDBDatabaseError::create(errorCode, errorMessage).ptr() : nullptr);

Hmm, seems likely. This did modify the code at the ASSERT crash point:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x000000010eac4d17 WTFCrashWithSecurityImplication + 39
1   com.apple.WebKit              	0x000000010afa4542 WTF::RefCountedBase::derefBase() + 66 (RefCounted.h:94)
2   com.apple.WebKit              	0x000000010b65f39f WTF::RefCounted&lt;WebCore::IDBDatabaseError&gt;::deref() + 31 (RefCounted.h:145)
3   com.apple.WebKit              	0x000000010b65f890 WTF::Ref&lt;WebCore::IDBDatabaseError&gt;::~Ref() + 48 (Ref.h:57)
4   com.apple.WebKit              	0x000000010b65a255 WTF::Ref&lt;WebCore::IDBDatabaseError&gt;::~Ref() + 21 (Ref.h:57)
5   com.apple.WebKit              	0x000000010b663699 WebKit::WebIDBServerConnection::didPutRecord(unsigned long long, WebCore::IDBKeyData const&amp;, unsigned int, WTF::String const&amp;) + 377 (WebIDBServerConnection.cpp:456)
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098732</commentid>
    <comment_count>6</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-01 22:05:16 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 253990 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=253990&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:456
&gt; &gt; -    serverRequest-&gt;completeRequest(resultKey.isNull ? nullptr : resultKey.maybeCreateIDBKey(), errorCode ? IDBDatabaseError::create(errorCode, errorMessage) : nullptr);
&gt; &gt; +    serverRequest-&gt;completeRequest(resultKey.isNull ? nullptr : resultKey.maybeCreateIDBKey(), errorCode ? IDBDatabaseError::create(errorCode, errorMessage).ptr() : nullptr);
&gt; 
&gt; Hmm, seems likely. This did modify the code at the ASSERT crash point:
&gt; 
&gt; Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
&gt; 0   com.apple.JavaScriptCore      	0x000000010eac4d17
&gt; WTFCrashWithSecurityImplication + 39
&gt; 1   com.apple.WebKit              	0x000000010afa4542
&gt; WTF::RefCountedBase::derefBase() + 66 (RefCounted.h:94)
&gt; 2   com.apple.WebKit              	0x000000010b65f39f
&gt; WTF::RefCounted&lt;WebCore::IDBDatabaseError&gt;::deref() + 31 (RefCounted.h:145)
&gt; 3   com.apple.WebKit              	0x000000010b65f890
&gt; WTF::Ref&lt;WebCore::IDBDatabaseError&gt;::~Ref() + 48 (Ref.h:57)
&gt; 4   com.apple.WebKit              	0x000000010b65a255
&gt; WTF::Ref&lt;WebCore::IDBDatabaseError&gt;::~Ref() + 21 (Ref.h:57)
&gt; 5   com.apple.WebKit              	0x000000010b663699
&gt; WebKit::WebIDBServerConnection::didPutRecord(unsigned long long,
&gt; WebCore::IDBKeyData const&amp;, unsigned int, WTF::String const&amp;) + 377
&gt; (WebIDBServerConnection.cpp:456)
&gt; ...

Oops, let me check it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098749</commentid>
    <comment_count>7</comment_count>
      <attachid>253990</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-01 23:40:32 -0700</bug_when>
    <thetext>Comment on attachment 253990
Patch

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

&gt;&gt;&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:456
&gt;&gt;&gt; +    serverRequest-&gt;completeRequest(resultKey.isNull ? nullptr : resultKey.maybeCreateIDBKey(), errorCode ? IDBDatabaseError::create(errorCode, errorMessage).ptr() : nullptr);
&gt;&gt; 
&gt;&gt; Hmm, seems likely. This did modify the code at the ASSERT crash point:
&gt;&gt; 
&gt;&gt; Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
&gt;&gt; 0   com.apple.JavaScriptCore      	0x000000010eac4d17 WTFCrashWithSecurityImplication + 39
&gt;&gt; 1   com.apple.WebKit              	0x000000010afa4542 WTF::RefCountedBase::derefBase() + 66 (RefCounted.h:94)
&gt;&gt; 2   com.apple.WebKit              	0x000000010b65f39f WTF::RefCounted&lt;WebCore::IDBDatabaseError&gt;::deref() + 31 (RefCounted.h:145)
&gt;&gt; 3   com.apple.WebKit              	0x000000010b65f890 WTF::Ref&lt;WebCore::IDBDatabaseError&gt;::~Ref() + 48 (Ref.h:57)
&gt;&gt; 4   com.apple.WebKit              	0x000000010b65a255 WTF::Ref&lt;WebCore::IDBDatabaseError&gt;::~Ref() + 21 (Ref.h:57)
&gt;&gt; 5   com.apple.WebKit              	0x000000010b663699 WebKit::WebIDBServerConnection::didPutRecord(unsigned long long, WebCore::IDBKeyData const&amp;, unsigned int, WTF::String const&amp;) + 377 (WebIDBServerConnection.cpp:456)
&gt;&gt; ...
&gt; 
&gt; Oops, let me check it soon.

There was my mistake. I should use leakRef() instead of ptr(). Crash happens when doing dereferencing for the instance created by IDBDatabaseError::create() factory function, because .ptr() doesn&apos;t reduce reference count. I upload a patch to fix this crash on Bug 145549.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253990</attachid>
            <date>2015-06-01 00:20:34 -0700</date>
            <delta_ts>2015-06-01 18:04:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145508-20150601162016.patch</filename>
            <type>text/plain</type>
            <size>89251</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2NkZmQxMDM1NjcwZTZi
N2JlODA5NDlkNmY0MzRhYTkwZjA1NWIyMS4uZGIwMWQzODNmMDQ4ZTJkZTEzZDdjOWFjMDYyYjQ3
OGMxYmM4ZTc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAxNS0wNi0wMSAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHVyZ2UgUGFz
c1JlZlB0ciBpbiBXZWJDb3JlL01vZHVsZXMgLSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU1MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBcyBhIHN0ZXAgdG8gcHVyZ2UgUGFzc1JlZlB0ciwgdGhp
cyBwYXRjaCByZW1vdmVzIFBhc3NSZWZQdHIsIHRoZW4gdXNlIFJlZiBvciBSZWZQdHIuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZE9wZXJhdGlvbnMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1cnNvckFkdmFuY2VPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VFcnJvci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6OmNyZWF0ZUlu
dmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5OjpjcmVhdGVOdW1iZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCS2V5OjpjcmVhdGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SURC
S2V5OjpjcmVhdGVEYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6Y3JlYXRlQXJyYXkp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQktleVJhbmdlOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQktleVJhbmdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQk9wZW5EQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVz
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVjb3JkSWRlbnRpZmllci5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVjb3JkSWRlbnRpZmllcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpnZXRSZXN1
bHRDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJh
Y2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kT3BlcmF0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlT2JqZWN0U3RvcmVP
cGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVPYmplY3RTdG9yZU9w
ZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6
VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0
ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
ZWxldGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kOjpWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRpb246OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcmVhdGVJbmRleE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEZWxldGVJbmRleE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlbGV0ZUluZGV4QWJvcnRPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHZXRPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQdXRPcGVyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXRJbmRleGVzUmVhZHlPcGVyYXRpb246
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuQ3Vyc29yT3BlcmF0aW9uOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q291bnRPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWxldGVSYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNsZWFyT2JqZWN0U3RvcmVPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNvdXJjZS9WaWRlb1BsYXliYWNrUXVhbGl0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1BsYXliYWNrUXVhbGl0eTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291
cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0
cmFpbnRzSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
Q29uc3RyYWludHNJbXBsLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RU
TUZTZW5kZXI6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1G
U2VuZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENPZmZlckFuc3dlck9w
dGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDT2ZmZXJBbnN3ZXJPcHRpb25zOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDT2ZmZXJPcHRpb25zOjpjcmVhdGUpOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmg6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cGFyc2VDb25maWd1cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNy
ZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2Vy
dmVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dXZWJEYXRhYmFzZTo6b3BlbkRhdGFi
YXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNl
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpleGlzdGluZ0RhdGFiYXNlQ29udGV4
dEZvcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlQ29udGV4
dEZvcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlU2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VTZXJ2ZXI6OmNyZWF0ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlU2VydmVyLmg6CisKIDIwMTUtMDUtMjkgIEpvc2VwaCBQZWNvcmFybyAg
PHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJpbmRpbmdzIHRlc3Qg
cmViYXNlbGluZSBhZnRlciByMTg1MDIzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggMmU4NDZkZDdmYzg5Y2FjYjU0MTY5ODljZTc3MGFj
Y2MwYjQ3YWY1Zi4uYTIwZTFlMWFjZTI0OTk0ODRkZjc0NTkxOThhMTExZTE4NDI5MGU2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC00
Myw5ICs0Myw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJDdXJz
b3I+IElEQkN1cnNvcjo6Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gYmFja2Vu
ZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1
ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorUmVmPElE
QkN1cnNvcj4gSURCQ3Vyc29yOjpjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBi
YWNrZW5kLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3Qq
IHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDdXJzb3IoYmFja2VuZCwgZGlyZWN0aW9uLCBy
ZXF1ZXN0LCBzb3VyY2UsIHRyYW5zYWN0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SURCQ3Vyc29yKGJhY2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291cmNlLCB0cmFuc2FjdGlv
bikpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCmluZGV4IGI1
OGQ1YWVlOWUwYzdhZTkxMmVlNTYwYjA2N2Q0N2E0YzhjMTNkYzIuLmM0M2NiNGEyYjg1NDFlZDJl
YWM4YWI1YTI3YTlkM2YyY2M4MjhkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gc3RyaW5nVG9EaXJlY3Rpb24oY29uc3QgU3RyaW5n
JiBtb2RlU3RyaW5nLCBFeGNlcHRpb25Db2RlJik7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgZGlyZWN0aW9uVG9TdHJpbmcoSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gbW9kZSk7
CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3I+IGNyZWF0ZShQYXNzUmVmUHRyPElE
QkN1cnNvckJhY2tlbmQ+LCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgSURCUmVxdWVzdCos
IElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOworICAgIHN0YXRpYyBSZWY8SURCQ3Vy
c29yPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiwgSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24q
KTsKICAgICB2aXJ0dWFsIH5JREJDdXJzb3IoKTsKIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURM
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNr
ZW5kLmgKaW5kZXggOTk0MzQxZjFkNTQzNjA4NThmOWYxNDZhMGMxNmZmMDAwNWE2ZGMxMS4uNDI0
ZDFmOThmNjIwY2IxZGE0Y2MwYjZiZWYyYzdmYjcwNjQ5YWZmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmQuaApAQCAtNDAsMTMg
KzQwLDEzIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSURCQ3Vyc29yQmFja2VuZCA6
IHB1YmxpYyBSZWZDb3VudGVkPElEQkN1cnNvckJhY2tlbmQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBjcmVhdGUoaW50NjRfdCBjdXJzb3JJRCwg
SW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZCYg
dHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkKKyAgICBzdGF0aWMgUmVmPElEQkN1
cnNvckJhY2tlbmQ+IGNyZWF0ZShpbnQ2NF90IGN1cnNvcklELCBJbmRleGVkREI6OkN1cnNvclR5
cGUgY3Vyc29yVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBvYmplY3RTdG9yZUlEKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJD
dXJzb3JCYWNrZW5kKGN1cnNvcklELCBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmQ6Ok5v
cm1hbFRhc2ssIHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlEKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IElEQkN1cnNvckJhY2tlbmQoY3Vyc29ySUQsIGN1cnNvclR5cGUsIElEQkRh
dGFiYXNlQmFja2VuZDo6Tm9ybWFsVGFzaywgdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSUQpKTsK
ICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gY3JlYXRlKGlu
dDY0X3QgY3Vyc29ySUQsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRh
YmFzZUJhY2tlbmQ6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmQmIHRy
YW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpCisgICAgc3RhdGljIFJlZjxJREJDdXJz
b3JCYWNrZW5kPiBjcmVhdGUoaW50NjRfdCBjdXJzb3JJRCwgSW5kZXhlZERCOjpDdXJzb3JUeXBl
IGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUgdGFza1R5cGUsIElEQlRy
YW5zYWN0aW9uQmFja2VuZCYgdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQ3Vyc29yQmFja2VuZChjdXJzb3JJ
RCwgY3Vyc29yVHlwZSwgdGFza1R5cGUsIHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlEKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElEQkN1cnNvckJhY2tlbmQoY3Vyc29ySUQsIGN1
cnNvclR5cGUsIHRhc2tUeXBlLCB0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJRCkpOwogICAgIH0K
ICAgICB+SURCQ3Vyc29yQmFja2VuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kT3BlcmF0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZE9wZXJhdGlvbnMuaAppbmRl
eCA0NjdmMWRlYjRlYWIwN2JkOTcwNjc5ZTE3NTY1ODhjZmFiNjgyNTgxLi42Mjc5NzdiNGVhYjY3
ZGFjNTk5NWJiZjBlNTgyZjAyYTZlMGMzODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRPcGVyYXRpb25zLmgK
QEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJzb3JJdGVy
YXRpb25PcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmQ+IGN1cnNvciwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcykKKyAgICBzdGF0aWMgUmVmPElEQk9wZXJhdGlvbj4gY3JlYXRlKFBh
c3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gY3Vyc29yLCBQYXNzUmVmUHRyPElEQktleT4ga2V5
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24oY3Vyc29yLCBrZXksIGNh
bGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdXJzb3JJdGVyYXRpb25P
cGVyYXRpb24oY3Vyc29yLCBrZXksIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZv
aWQgcGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVy
cmlkZSBmaW5hbDsKIApAQCAtNjAsOSArNjAsOSBAQCBwcml2YXRlOgogCiBjbGFzcyBDdXJzb3JB
ZHZhbmNlT3BlcmF0aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kPiBjdXJzb3IsIHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCisgICAgc3RhdGljIFJlZjxJREJPcGVyYXRpb24+IGNyZWF0ZShQYXNz
UmVmUHRyPElEQkN1cnNvckJhY2tlbmQ+IGN1cnNvciwgdW5zaWduZWQgbG9uZyBjb3VudCwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ3Vyc29yQWR2YW5jZU9wZXJhdGlvbihjdXJzb3IsIGNvdW50LCBjYWxsYmFj
a3MpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3Vyc29yQWR2YW5jZU9wZXJhdGlv
bihjdXJzb3IsIGNvdW50LCBjYWxsYmFja3MpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBl
cmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxsYmFjaykgb3ZlcnJpZGUg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmNwcAppbmRleCA0YTFiZTgxMmQwNzY3ZDdkMGE4MjRmZGVkZTBlYzNlYjJkNTYxNmRlLi40
N2ZhNGUwMDNlZWJmMmFjYjVkYzIwMTJmZGU5ZDJjZGNjNDVlNzJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC01MCwxMSArNTAs
MTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBJ
REJEYXRhYmFzZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gY2FsbGJhY2tzKQorUmVmPElEQkRhdGFiYXNlPiBJREJEYXRhYmFzZTo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kPiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogewotICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UoYWRvcHRSZWYo
bmV3IElEQkRhdGFiYXNlKGNvbnRleHQsIGRhdGFiYXNlLCBjYWxsYmFja3MpKSk7CisgICAgUmVm
PElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZShhZG9wdFJlZigqbmV3IElEQkRhdGFiYXNlKGNvbnRl
eHQsIGRhdGFiYXNlLCBjYWxsYmFja3MpKSk7CiAgICAgaWRiRGF0YWJhc2UtPnN1c3BlbmRJZk5l
ZWRlZCgpOwotICAgIHJldHVybiBpZGJEYXRhYmFzZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGlk
YkRhdGFiYXNlOwogfQogCiBJREJEYXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmQ+IGJhY2tlbmQs
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCmluZGV4IDU4ZTJmNmM4NGUz
YTA1YTUyNjQ0MDdjMDgwMWZiODA0MGQ3MDNiMjEuLjQ4MTc5YjQyZTFjYTAxNTA1MTU4YzI1Njcw
NzljNGExYTk5ZjdjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuaApAQCAtNTEsNyArNTEsNyBAQCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2Rl
OwogCiBjbGFzcyBJREJEYXRhYmFzZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkRhdGFi
YXNlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGlu
ZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4pOworICAgIHN0YXRpYyBSZWY8SURCRGF0YWJhc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmQ+LCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPik7CiAgICAgfklEQkRhdGFiYXNlKCk7CiAKICAgICB2b2lkIHNldE1l
dGFkYXRhKGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKSB7IG1fbWV0YWRhdGEg
PSBtZXRhZGF0YTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKaW5kZXggYzgyOTI2YWQ5OGVmZDI0MjY4ZjAyMDZk
YjQ3N2Q4NmUxYTA0NjczNy4uZTU5NDNkYzc4M2RmMjAyNWEwMmYwNmJhYzdiOGIzMmIzMTcyNmFi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmQuY3BwCkBAIC00MywxMiArNDMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1QYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZD4gSURCRGF0YWJhc2VCYWNrZW5k
OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZp
ZXIsIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBmYWN0b3J5LCBJREJTZXJ2ZXJDb25uZWN0
aW9uJiBzZXJ2ZXJDb25uZWN0aW9uKQorUmVmPElEQkRhdGFiYXNlQmFja2VuZD4gSURCRGF0YWJh
c2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVuaXF1
ZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBmYWN0b3J5LCBJREJTZXJ2
ZXJDb25uZWN0aW9uJiBzZXJ2ZXJDb25uZWN0aW9uKQogewotICAgIFJlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmQ+IGJhY2tlbmQgPSBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VCYWNrZW5kKG5hbWUs
IHVuaXF1ZUlkZW50aWZpZXIsIGZhY3RvcnksIHNlcnZlckNvbm5lY3Rpb24pKTsKKyAgICBSZWY8
SURCRGF0YWJhc2VCYWNrZW5kPiBiYWNrZW5kID0gYWRvcHRSZWYoKm5ldyBJREJEYXRhYmFzZUJh
Y2tlbmQobmFtZSwgdW5pcXVlSWRlbnRpZmllciwgZmFjdG9yeSwgc2VydmVyQ29ubmVjdGlvbikp
OwogICAgIGJhY2tlbmQtPm9wZW5JbnRlcm5hbEFzeW5jKCk7CiAgICAgCi0gICAgcmV0dXJuIGJh
Y2tlbmQucmVsZWFzZSgpOworICAgIHJldHVybiBiYWNrZW5kOwogfQogCiBJREJEYXRhYmFzZUJh
Y2tlbmQ6OklEQkRhdGFiYXNlQmFja2VuZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdW5pcXVlSWRlbnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqIGZhY3Rvcnks
IElEQlNlcnZlckNvbm5lY3Rpb24mIHNlcnZlckNvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5oCmluZGV4IGYy
NDA0NmFhODg4ZGJkMWRmZmE5Nzk3MDI4NWNhMDFlMDU0ODg4ZjMuLjM4MTk5MjYxZDU1ZDE0NWVj
YjE5ZmE5MzdmZDZjN2VlYTU3MmNmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5oCkBAIC01OSw3ICs1OSw3IEBAIHR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZCA6IHB1
YmxpYyBSZWZDb3VudGVkPElEQkRhdGFiYXNlQmFja2VuZD4gewogcHVibGljOgotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZD4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyLCBJREJGYWN0
b3J5QmFja2VuZEludGVyZmFjZSosIElEQlNlcnZlckNvbm5lY3Rpb24mKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPElEQkRhdGFiYXNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyLCBJREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZSosIElEQlNlcnZlckNvbm5lY3Rpb24mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+
SURCRGF0YWJhc2VCYWNrZW5kKCk7CiAKICAgICBJREJTZXJ2ZXJDb25uZWN0aW9uJiBzZXJ2ZXJD
b25uZWN0aW9uKCkgeyByZXR1cm4gbV9zZXJ2ZXJDb25uZWN0aW9uLmdldCgpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsLmNwcAppbmRleCA1ODdjNGE3NTYzMDFhM2M0YTg2NTZlMzVmMDI2OGJiN2Rl
NDU1OWMyLi5kOTJhMzUxMGNkOTRjMzg0YjcwYzNhZDI3MWY1NWZjZmU0ODExMjJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTMyLDkgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1QYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gSURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsOjpjcmVhdGUoKQorUmVmPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpKTsKIH0KIAogSURCRGF0YWJhc2VDYWxsYmFja3NJ
bXBsOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaAppbmRl
eCAyNDgzMzJhMzUzN2YyMzA0MTk1MTMzYWJkY2RlNjUwZTEyZDhlZTdkLi5mN2Q1YTIyMmUzNDE5
M2Q2NWUwM2NlZjIwMjI4OGRlZmRkMjQ4YmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaApAQCAt
MzgsNyArMzgsNyBAQCBjbGFzcyBJREJEYXRhYmFzZTsKIAogY2xhc3MgSURCRGF0YWJhc2VDYWxs
YmFja3NJbXBsIGZpbmFsIDogcHVibGljIElEQkRhdGFiYXNlQ2FsbGJhY2tzIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGNyZWF0ZSgp
OworICAgIHN0YXRpYyBSZWY8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBjcmVhdGUoKTsKICAg
ICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKSBvdmVycmlkZTsKIAogICAgIC8v
IElEQkRhdGFiYXNlQ2FsbGJhY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUVycm9yLmgKaW5kZXggN2E5MzliNWI2MGY0MTdjMGFjYTIwM2E0
MDg3NjEwZmJmNGE3NzYwMS4uOGZiNDU5ZGYyOTQ2Yzk4Y2VmYWFkNjE1MGY5M2U2YmFjNzQ3NWYy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlRXJyb3IuaApAQCAtMzcsMTggKzM3LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSURCRGF0YWJhc2VFcnJvciA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkRhdGFiYXNlRXJyb3I+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBjcmVh
dGUodW5zaWduZWQgc2hvcnQgY29kZSkKKyAgICBzdGF0aWMgUmVmPElEQkRhdGFiYXNlRXJyb3I+
IGNyZWF0ZSh1bnNpZ25lZCBzaG9ydCBjb2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvZGUg
Pj0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQkRhdGFiYXNlRXhjZXB0aW9uT2Zmc2V0KTsKICAg
ICAgICAgQVNTRVJUKGNvZGUgPCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCRGF0YWJhc2VFeGNl
cHRpb25NYXgpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlRXJyb3Io
Y29kZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJEYXRhYmFzZUVycm9yKGNv
ZGUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBj
cmVhdGUodW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorICAgIHN0
YXRpYyBSZWY8SURCRGF0YWJhc2VFcnJvcj4gY3JlYXRlKHVuc2lnbmVkIHNob3J0IGNvZGUsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
Y29kZSA+PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCRGF0YWJhc2VFeGNlcHRpb25PZmZzZXQs
ICIlZCA+PSAlZCIsIGNvZGUsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJEYXRhYmFzZUV4Y2Vw
dGlvbk9mZnNldCk7CiAgICAgICAgIEFTU0VSVChjb2RlIDwgSURCRGF0YWJhc2VFeGNlcHRpb246
OklEQkRhdGFiYXNlRXhjZXB0aW9uTWF4KTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
REJEYXRhYmFzZUVycm9yKGNvZGUsIG1lc3NhZ2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSURCRGF0YWJhc2VFcnJvcihjb2RlLCBtZXNzYWdlKSk7CiAgICAgfQogCiAgICAgfklE
QkRhdGFiYXNlRXJyb3IoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleC5oCmluZGV4IGY5NTRhZDZhY2FiZTRiMDViM2MxZmNjNzFlNGQzYzVkYzU1ZmE5ODUu
LmIxNmY3OGY1OWRkMTc3NzQyZmZkNzk1NGE1YTc3ZmUzNmJmZDMyODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaApAQCAtNDUsOSArNDUsOSBAQCBjbGFz
cyBJREJPYmplY3RTdG9yZTsKIAogY2xhc3MgSURCSW5kZXggOiBwdWJsaWMgU2NyaXB0V3JhcHBh
YmxlLCBwdWJsaWMgUmVmQ291bnRlZDxJREJJbmRleD4gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQkluZGV4PiBjcmVhdGUoY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgbWV0YWRh
dGEsIElEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uKQorICAgIHN0YXRpYyBSZWY8SURCSW5kZXg+IGNyZWF0ZShjb25zdCBJREJJbmRleE1ldGFk
YXRhJiBtZXRhZGF0YSwgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQklu
ZGV4KG1ldGFkYXRhLCBvYmplY3RTdG9yZSwgdHJhbnNhY3Rpb24pKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSURCSW5kZXgobWV0YWRhdGEsIG9iamVjdFN0b3JlLCB0cmFuc2FjdGlv
bikpOwogICAgIH0KICAgICB+SURCSW5kZXgoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXkuaAppbmRleCA3ODUzMGIzMTBkMWYwNGFlOWM2Njg2MmI1YTk5ZGQzYmU5
MDNmNDNiLi42ZDJhMmEzMjhlOTIzZmJjZGZiZGQxNjE0YTA5YzkzMTFkNzNhMmY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaApAQCAtMzksMjQgKzM5LDI0IEBA
IGNsYXNzIElEQktleSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQktleT4gewogcHVibGljOgogICAg
IHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiBLZXlBcnJheTsKIAotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQktleT4gY3JlYXRlSW52YWxpZCgpCisgICAgc3RhdGljIFJlZjxJREJLZXk+
IGNyZWF0ZUludmFsaWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJL
ZXkoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElEQktleSgpKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZU51bWJlcihkb3VibGUgbnVtYmVy
KQorICAgIHN0YXRpYyBSZWY8SURCS2V5PiBjcmVhdGVOdW1iZXIoZG91YmxlIG51bWJlcikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCS2V5KE51bWJlclR5cGUsIG51bWJl
cikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJLZXkoTnVtYmVyVHlwZSwgbnVt
YmVyKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVTdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgc3RhdGljIFJlZjxJREJLZXk+IGNyZWF0ZVN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSURCS2V5KHN0cmluZykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJL
ZXkoc3RyaW5nKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVh
dGVEYXRlKGRvdWJsZSBkYXRlKQorICAgIHN0YXRpYyBSZWY8SURCS2V5PiBjcmVhdGVEYXRlKGRv
dWJsZSBkYXRlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJLZXkoRGF0
ZVR5cGUsIGRhdGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCS2V5KERhdGVU
eXBlLCBkYXRlKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVh
dGVNdWx0aUVudHJ5QXJyYXkoY29uc3QgS2V5QXJyYXkmIGFycmF5KQpAQCAtODUsMTMgKzg1LDEz
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGlkYktleS5yZWxlYXNlKCk7CiAgICAgfQogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVBcnJheShjb25zdCBLZXlBcnJheSYg
YXJyYXkpCisgICAgc3RhdGljIFJlZjxJREJLZXk+IGNyZWF0ZUFycmF5KGNvbnN0IEtleUFycmF5
JiBhcnJheSkKICAgICB7CiAgICAgICAgIHNpemVfdCBzaXplRXN0aW1hdGUgPSAwOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LnNpemUoKTsgKytpKQogICAgICAgICAgICAg
c2l6ZUVzdGltYXRlICs9IGFycmF5W2ldLT5tX3NpemVFc3RpbWF0ZTsKIAotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IElEQktleShhcnJheSwgc2l6ZUVzdGltYXRlKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IElEQktleShhcnJheSwgc2l6ZUVzdGltYXRlKSk7CiAgICAgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgfklEQktleSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwCmluZGV4IDNkNTRmYzJiMmVmMmFlY2U3NGM0
NTllOTMwNWNiNDE5OGRjNjc2YjcuLmY2YjE3ZTA3NzQ4NmY4Mzc2YTZlZjNjY2E3OGFmZDFhYmIy
ZGQ3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eVJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlS
YW5nZS5jcHAKQEAgLTM1LDEwICszNSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpjcmVhdGUoUGFzc1JlZlB0cjxJREJL
ZXk+IHBycEtleSkKK1JlZjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OmNyZWF0ZShQYXNzUmVm
UHRyPElEQktleT4gcHJwS2V5KQogewogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQktleVJhbmdlKGtleSwga2V5LCBMb3dlckJvdW5k
Q2xvc2VkLCBVcHBlckJvdW5kQ2xvc2VkKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURC
S2V5UmFuZ2Uoa2V5LCBrZXksIExvd2VyQm91bmRDbG9zZWQsIFVwcGVyQm91bmRDbG9zZWQpKTsK
IH0KIAogSURCS2V5UmFuZ2U6OklEQktleVJhbmdlKFBhc3NSZWZQdHI8SURCS2V5PiBsb3dlciwg
UGFzc1JlZlB0cjxJREJLZXk+IHVwcGVyLCBMb3dlckJvdW5kVHlwZSBsb3dlclR5cGUsIFVwcGVy
Qm91bmRUeXBlIHVwcGVyVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQktleVJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXlSYW5nZS5oCmluZGV4IGExNjhkYjQyNzBkNjgyZjFiYmYzNTM4NmU3YjEzODYwY2Vi
MDYyNmYuLjMzOTdiZDI2MTYyZmRkNTM0N2JlOTAzYzlhMjVmOTExMjY4YjM1MDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaApAQCAtNDksMTEg
KzQ5LDExIEBAIHB1YmxpYzoKICAgICAgICAgVXBwZXJCb3VuZENsb3NlZAogICAgIH07CiAKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gY3JlYXRlKFBhc3NSZWZQdHI8SURCS2V5
PiBsb3dlciwgUGFzc1JlZlB0cjxJREJLZXk+IHVwcGVyLCBMb3dlckJvdW5kVHlwZSBsb3dlclR5
cGUsIFVwcGVyQm91bmRUeXBlIHVwcGVyVHlwZSkKKyAgICBzdGF0aWMgUmVmPElEQktleVJhbmdl
PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJLZXk+IGxvd2VyLCBQYXNzUmVmUHRyPElEQktleT4gdXBw
ZXIsIExvd2VyQm91bmRUeXBlIGxvd2VyVHlwZSwgVXBwZXJCb3VuZFR5cGUgdXBwZXJUeXBlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJLZXlSYW5nZShsb3dlciwgdXBw
ZXIsIGxvd2VyVHlwZSwgdXBwZXJUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IElEQktleVJhbmdlKGxvd2VyLCB1cHBlciwgbG93ZXJUeXBlLCB1cHBlclR5cGUpKTsKICAgICB9
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGNyZWF0ZShQYXNzUmVmUHRyPElE
QktleT4gcHJwS2V5KTsKKyAgICBzdGF0aWMgUmVmPElEQktleVJhbmdlPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxJREJLZXk+IHBycEtleSk7CiAgICAgfklEQktleVJhbmdlKCkgeyB9CiAKICAgICBQYXNz
UmVmUHRyPElEQktleT4gbG93ZXIoKSBjb25zdCB7IHJldHVybiBtX2xvd2VyOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5k
ZXggNGVmNDlhY2Q5MzlhNTJjZmJlYzRiZjZmYmQwNzk5Y2QzNDllNjI4OS4uZTg2MDgyYzA0Njg0
NjViYzFlMDQwM2JmNDViZTQwNzgwZDVlMGViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMjgxLDkgKzI4MSw5IEBA
IG5hbWVzcGFjZSB7CiAvLyBjdXJzb3Igc3VjY2VzcyBoYW5kbGVycyBhcmUga2VwdCBhbGl2ZS4K
IGNsYXNzIEluZGV4UG9wdWxhdG9yIDogcHVibGljIEV2ZW50TGlzdGVuZXIgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluZGV4UG9wdWxhdG9yPiBjcmVhdGUoUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmQ+IGJhY2tlbmQsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhKQor
ICAgIHN0YXRpYyBSZWY8SW5kZXhQb3B1bGF0b3I+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZD4gYmFja2VuZCwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluZGV4UG9wdWxhdG9yKGJhY2tlbmQsIHRyYW5z
YWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4TWV0YWRhdGEpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW5kZXhQb3B1bGF0b3IoYmFja2VuZCwgdHJhbnNhY3Rpb25JZCwgb2Jq
ZWN0U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKaW5kZXggZGE2NWEwNTRmNjFk
MzI5MGNjZmMwYmI0MTUxNjhkNWFlMzY2ODE1MC4uN2ZkZWM4NDA4NGIxMzQ1ODU0ZWJhNzhiZjVj
YWUzOWFiNWQwYTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5oCkBAIC01MCw5ICs1MCw5IEBAIGNsYXNzIElEQkFueTsKIAogY2xh
c3MgSURCT2JqZWN0U3RvcmUgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291
bnRlZDxJREJPYmplY3RTdG9yZT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlPiBjcmVhdGUoY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRh
dGEsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICBzdGF0aWMgUmVmPElEQk9iamVj
dFN0b3JlPiBjcmVhdGUoY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEsIElE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSURCT2JqZWN0U3RvcmUobWV0YWRhdGEsIHRyYW5zYWN0aW9uKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IElEQk9iamVjdFN0b3JlKG1ldGFkYXRhLCB0cmFuc2FjdGlvbikp
OwogICAgIH0KICAgICB+SURCT2JqZWN0U3RvcmUoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcAppbmRleCBlOTI5
YzZjMmI0NmFiMjQ3YjJhMDc0MzQzMTI1ZDA3OGUwMjQzYjMyLi40YmY3YjZlYWQ2YTk3ODg5MzBi
YWVkZjM2YmQ0NTNmMTk3YWYzNTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcApAQCAtMzcsMTEgKzM3LDExIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJP
cGVuREJSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0
aW9uSWQsIHVpbnQ2NF90IHZlcnNpb24sIEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzIHZlcnNp
b25OdWxsbmVzcykKK1JlZjxJREJPcGVuREJSZXF1ZXN0PiBJREJPcGVuREJSZXF1ZXN0OjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIHVpbnQ2NF90IHZl
cnNpb24sIEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzIHZlcnNpb25OdWxsbmVzcykKIHsKLSAg
ICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdChhZG9wdFJlZihuZXcgSURCT3BlbkRC
UmVxdWVzdChjb250ZXh0LCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHZlcnNpb24sIHZlcnNp
b25OdWxsbmVzcykpKTsKKyAgICBSZWY8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdChhZG9wdFJl
ZigqbmV3IElEQk9wZW5EQlJlcXVlc3QoY29udGV4dCwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbklk
LCB2ZXJzaW9uLCB2ZXJzaW9uTnVsbG5lc3MpKSk7CiAgICAgcmVxdWVzdC0+c3VzcGVuZElmTmVl
ZGVkKCk7Ci0gICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOworICAgIHJldHVybiByZXF1ZXN0
OwogfQogCiBJREJPcGVuREJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxi
YWNrcywgaW50NjRfdCB0cmFuc2FjdGlvbklkLCB1aW50NjRfdCB2ZXJzaW9uLCBJbmRleGVkREI6
OlZlcnNpb25OdWxsbmVzcyB2ZXJzaW9uTnVsbG5lc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmgKaW5kZXggMzMzOWZhMzU4OGQy
YTU3ZmQxNDg1YTMxOThiMGJiOWYyNTdlZDY1NS4uN2FhOGIwZDY0NDg1MjNjNTRjYzgzMzUzOTk4
YjY4NmY0MmRjZjM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT3BlbkRCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9wZW5EQlJlcXVlc3QuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBJREJEYXRhYmFz
ZUNhbGxiYWNrczsKIAogY2xhc3MgSURCT3BlbkRCUmVxdWVzdCA6IHB1YmxpYyBJREJSZXF1ZXN0
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIHVpbnQ2NF90IHZlcnNpb24sIEluZGV4ZWREQjo6
VmVyc2lvbk51bGxuZXNzKTsKKyAgICBzdGF0aWMgUmVmPElEQk9wZW5EQlJlcXVlc3Q+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgdWludDY0X3QgdmVyc2lvbiwgSW5kZXhlZERCOjpW
ZXJzaW9uTnVsbG5lc3MpOwogICAgIHZpcnR1YWwgfklEQk9wZW5EQlJlcXVlc3QoKTsKIAogICAg
IHVzaW5nIElEQlJlcXVlc3Q6Om9uU3VjY2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlY29yZElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlY29yZElkZW50aWZpZXIuaAppbmRleCBmMDNhNjlkNzlh
ZWY5MzhiNjI3YTk4MDdjNWQwNmI0YWE3NDYzNmFlLi5lNjU4ZWNjNmFjY2RhNGI3M2Q0YjYyMmIx
YzUxMzJjMDhlOTYwNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZWNvcmRJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVjb3JkSWRlbnRpZmllci5oCkBAIC0zNywxNCArMzcsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJSZWNvcmRJZGVudGlmaWVyIDogcHVibGljIFJlZkNv
dW50ZWQ8SURCUmVjb3JkSWRlbnRpZmllcj4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQlJlY29yZElkZW50aWZpZXI+IGNyZWF0ZShjb25zdCBWZWN0b3I8Y2hhcj4mIGVuY29k
ZWRQcmltYXJ5S2V5LCBpbnQ2NF90IHZlcnNpb24pCisgICAgc3RhdGljIFJlZjxJREJSZWNvcmRJ
ZGVudGlmaWVyPiBjcmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+JiBlbmNvZGVkUHJpbWFyeUtleSwg
aW50NjRfdCB2ZXJzaW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJS
ZWNvcmRJZGVudGlmaWVyKGVuY29kZWRQcmltYXJ5S2V5LCB2ZXJzaW9uKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IElEQlJlY29yZElkZW50aWZpZXIoZW5jb2RlZFByaW1hcnlLZXks
IHZlcnNpb24pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJSZWNvcmRJZGVu
dGlmaWVyPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8SURCUmVjb3JkSWRlbnRpZmllcj4gY3Jl
YXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCUmVjb3JkSWRlbnRp
Zmllcik7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElEQlJlY29yZElkZW50aWZpZXIp
OwogICAgIH0KIAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgZW5jb2RlZFByaW1hcnlLZXkoKSBj
b25zdCB7IHJldHVybiBtX2VuY29kZWRQcmltYXJ5S2V5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IDJjYWMzMjVjYTExNjJiZGQz
ZjZmNjkwYzQ2OWM1NDYyOWRlYjcwNTEuLjE1NGEwNmZjYTkyY2MzNGNlMjE1MTlmZmFlZDE5YWZh
ZTE0MGY1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJl
cXVlc3QuY3BwCkBAIC00OCwyNCArNDgsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24pCitSZWY8SURCUmVxdWVzdD4gSURCUmVxdWVzdDo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKIHsKLSAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVx
dWVzdChhZG9wdFJlZihuZXcgSURCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIElEQkRhdGFiYXNl
QmFja2VuZDo6Tm9ybWFsVGFzaywgdHJhbnNhY3Rpb24pKSk7CisgICAgUmVmPElEQlJlcXVlc3Q+
IHJlcXVlc3QoYWRvcHRSZWYoKm5ldyBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgSURCRGF0
YWJhc2VCYWNrZW5kOjpOb3JtYWxUYXNrLCB0cmFuc2FjdGlvbikpKTsKICAgICByZXF1ZXN0LT5z
dXNwZW5kSWZOZWVkZWQoKTsKICAgICAvLyBSZXF1ZXN0cyBhc3NvY2lhdGVkIHdpdGggSURCRmFj
dG9yeSAob3Blbi9kZWxldGVEYXRhYmFzZS9nZXREYXRhYmFzZU5hbWVzKSBhcmUgbm90IGFzc29j
aWF0ZWQgd2l0aCB0cmFuc2FjdGlvbnMuCiAgICAgaWYgKHRyYW5zYWN0aW9uKQotICAgICAgICB0
cmFuc2FjdGlvbi0+cmVnaXN0ZXJSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgIHJldHVybiBy
ZXF1ZXN0LnJlbGVhc2UoKTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPnJlZ2lzdGVyUmVxdWVzdChy
ZXF1ZXN0LnB0cigpKTsKKyAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlw
ZSB0YXNrVHlwZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorUmVmPElEQlJlcXVlc3Q+
IElEQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQkFueT4gc291cmNlLCBJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlIHRhc2tU
eXBlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiB7Ci0gICAgUmVmUHRyPElEQlJlcXVl
c3Q+IHJlcXVlc3QoYWRvcHRSZWYobmV3IElEQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCB0YXNr
VHlwZSwgdHJhbnNhY3Rpb24pKSk7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QoYWRvcHRS
ZWYoKm5ldyBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgdGFza1R5cGUsIHRyYW5zYWN0aW9u
KSkpOwogICAgIHJlcXVlc3QtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIC8vIFJlcXVlc3RzIGFz
c29jaWF0ZWQgd2l0aCBJREJGYWN0b3J5IChvcGVuL2RlbGV0ZURhdGFiYXNlL2dldERhdGFiYXNl
TmFtZXMpIGFyZSBub3QgYXNzb2NpYXRlZCB3aXRoIHRyYW5zYWN0aW9ucy4KICAgICBpZiAodHJh
bnNhY3Rpb24pCi0gICAgICAgIHRyYW5zYWN0aW9uLT5yZWdpc3RlclJlcXVlc3QocmVxdWVzdC5n
ZXQoKSk7Ci0gICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOworICAgICAgICB0cmFuc2FjdGlv
bi0+cmVnaXN0ZXJSZXF1ZXN0KHJlcXVlc3QucHRyKCkpOworICAgIHJldHVybiByZXF1ZXN0Owog
fQogCiBJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5
cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKQEAgLTIwMiwxNSArMjAy
LDE1IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UGVuZGluZ0N1cnNvcihQYXNzUmVmUHRyPElEQkN1
cnNvcj4gY3Vyc29yKQogICAgIG1fdHJhbnNhY3Rpb24tPnJlZ2lzdGVyUmVxdWVzdCh0aGlzKTsK
IH0KIAotUGFzc1JlZlB0cjxJREJDdXJzb3I+IElEQlJlcXVlc3Q6OmdldFJlc3VsdEN1cnNvcigp
CitSZWZQdHI8SURCQ3Vyc29yPiBJREJSZXF1ZXN0OjpnZXRSZXN1bHRDdXJzb3IoKQogewogICAg
IGlmICghbV9yZXN1bHQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBpZiAobV9yZXN1bHQtPnR5cGUoKSA9PSBJREJBbnk6OklEQkN1cnNvclR5cGUpCiAg
ICAgICAgIHJldHVybiBtX3Jlc3VsdC0+aWRiQ3Vyc29yKCk7CiAgICAgaWYgKG1fcmVzdWx0LT50
eXBlKCkgPT0gSURCQW55OjpJREJDdXJzb3JXaXRoVmFsdWVUeXBlKQogICAgICAgICByZXR1cm4g
bV9yZXN1bHQtPmlkYkN1cnNvcldpdGhWYWx1ZSgpOwotICAgIHJldHVybiAwOworICAgIHJldHVy
biBudWxscHRyOwogfQogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdEN1cnNvcihQYXNzUmVm
UHRyPElEQkN1cnNvcj4gY3Vyc29yLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRy
PElEQktleT4gcHJpbWFyeUtleSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4
IDc5ZWRjNjRmZDJkOTYwYThiMGIzYWQ1MDgyOWE4MWFjMmZhYmI1MGYuLjE4M2I5ZmMzZGFiMDkw
NmQxZjBmMjRhZTUyMDY5MzZkMDYwMmQwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTUzLDggKzUzLDggQEAgdHlwZWRlZiBpbnQgRXhj
ZXB0aW9uQ29kZTsKIAogY2xhc3MgSURCUmVxdWVzdCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUs
IHB1YmxpYyBJREJDYWxsYmFja3MsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURC
QW55PiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFu
eT4gc291cmNlLCBJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbiop
OworICAgIHN0YXRpYyBSZWY8SURCUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJUcmFuc2FjdGlvbiopOworICAgIHN0
YXRpYyBSZWY8SURCUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQkFueT4gc291cmNlLCBJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlLCBJREJU
cmFuc2FjdGlvbiopOwogICAgIHZpcnR1YWwgfklEQlJlcXVlc3QoKTsKIAogICAgIFBhc3NSZWZQ
dHI8SURCQW55PiByZXN1bHQoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwpAQCAtMTM2LDcgKzEzNiw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUg
ZmluYWwgeyByZWYoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3Zl
cnJpZGUgZmluYWwgeyBkZXJlZigpOyB9CiAKLSAgICBQYXNzUmVmUHRyPElEQkN1cnNvcj4gZ2V0
UmVzdWx0Q3Vyc29yKCk7CisgICAgUmVmUHRyPElEQkN1cnNvcj4gZ2V0UmVzdWx0Q3Vyc29yKCk7
CiAgICAgdm9pZCBzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+LCBQYXNzUmVm
UHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYpOwogCiAgICAgUmVmUHRyPElEQkFueT4gbV9zb3VyY2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAK
aW5kZXggN2E3MzdlMWJiOWVmOWJkNjI4YTQ2NjU0OTI5NTIyNDllZjY4NmJiMy4uMzM2OTRjNWY2
NjIyNjJmZGRmNzcxOGI1NmYwMDY3MDFjN2U3MjdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtNDMsMTkgKzQzLDE5
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4g
SURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBp
bnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSW5kZXhl
ZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiKQorUmVmPElEQlRyYW5z
YWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGludDY0X3QgaWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZU5hbWVz
LCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIpCiB7Ci0g
ICAgSURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCA9IDA7Ci0gICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uPiB0cmFuc2FjdGlvbihhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb24oY29udGV4
dCwgaWQsIG9iamVjdFN0b3JlTmFtZXMsIG1vZGUsIGRiLCBvcGVuREJSZXF1ZXN0LCBJREJEYXRh
YmFzZU1ldGFkYXRhKCkpKSk7CisgICAgSURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCA9
IG51bGxwdHI7CisgICAgUmVmPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbihhZG9wdFJlZigq
bmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGlkLCBvYmplY3RTdG9yZU5hbWVzLCBtb2RlLCBk
Yiwgb3BlbkRCUmVxdWVzdCwgSURCRGF0YWJhc2VNZXRhZGF0YSgpKSkpOwogICAgIHRyYW5zYWN0
aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgp
OworICAgIHJldHVybiB0cmFuc2FjdGlvbjsKIH0KIAotUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBpbnQ2NF90IGlkLCBJREJEYXRhYmFzZSogZGIsIElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJl
cXVlc3QsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIHByZXZpb3VzTWV0YWRhdGEpCitSZWY8
SURCVHJhbnNhY3Rpb24+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgaW50NjRfdCBpZCwgSURCRGF0YWJhc2UqIGRiLCBJREJPcGVuREJSZXF1
ZXN0KiBvcGVuREJSZXF1ZXN0LCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBwcmV2aW91c01l
dGFkYXRhKQogewotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRS
ZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGlkLCBWZWN0b3I8U3RyaW5nPigpLCBJbmRl
eGVkREI6OlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbkNoYW5nZSwgZGIsIG9wZW5EQlJlcXVlc3Qs
IHByZXZpb3VzTWV0YWRhdGEpKSk7CisgICAgUmVmPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlv
bihhZG9wdFJlZigqbmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGlkLCBWZWN0b3I8U3RyaW5n
PigpLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbkNoYW5nZSwgZGIsIG9wZW5E
QlJlcXVlc3QsIHByZXZpb3VzTWV0YWRhdGEpKSk7CiAgICAgdHJhbnNhY3Rpb24tPnN1c3BlbmRJ
Zk5lZWRlZCgpOwotICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IHRyYW5zYWN0aW9uOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElEQlRyYW5zYWN0aW9uOjpt
b2RlUmVhZE9ubHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmgKaW5kZXggYWM0N2U1YWE5ODE1Y2EyMDg3OTk2NTQ0ODkwMWY0MDlkYTRm
ODE5Ni4uOWYzNDMxNDg0NzI0OTcwZjg2MmMzY2U2MzQ0ODNmZGNiZTM4MDUzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCkBAIC01
MSw4ICs1MSw4IEBAIHN0cnVjdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhOwogCiBjbGFzcyBJREJU
cmFuc2FjdGlvbiBmaW5hbCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3Vu
dGVkPElEQlRyYW5zYWN0aW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludDY0X3QsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZU5hbWVzLCBJbmRleGVkREI6OlRyYW5zYWN0
aW9uTW9kZSwgSURCRGF0YWJhc2UqKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBJREJEYXRhYmFz
ZSosIElEQk9wZW5EQlJlcXVlc3QqLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBwcmV2aW91
c01ldGFkYXRhKTsKKyAgICBzdGF0aWMgUmVmPElEQlRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGludDY0X3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RT
dG9yZU5hbWVzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSwgSURCRGF0YWJhc2UqKTsKKyAg
ICBzdGF0aWMgUmVmPElEQlRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGludDY0X3QsIElEQkRhdGFiYXNlKiwgSURCT3BlbkRCUmVxdWVzdCosIGNvbnN0IElEQkRh
dGFiYXNlTWV0YWRhdGEmIHByZXZpb3VzTWV0YWRhdGEpOwogICAgIHZpcnR1YWwgfklEQlRyYW5z
YWN0aW9uKCk7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlUmVhZE9ubHko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmQuY3BwCmluZGV4IGFiYjVkMGYyM2U2ZWVlNGE0MDQyODY3NDE1ZTM5
Y2FiNTYwNDhlODguLmFmYmM2MWJlY2QyOTYyNGYxZTgyNTRjZDFkZmVjMGJhMDg5OTI3OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb25CYWNrZW5kLmNwcApAQCAtNDEsMTMgKzQxLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmQ+IElEQlRyYW5zYWN0aW9u
QmFja2VuZDo6Y3JlYXRlKElEQkRhdGFiYXNlQmFja2VuZCogZGF0YWJhc2VCYWNrZW5kLCBpbnQ2
NF90IGlkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25N
b2RlIG1vZGUpCitSZWY8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiBJREJUcmFuc2FjdGlvbkJhY2tl
bmQ6OmNyZWF0ZShJREJEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlQmFja2VuZCwgaW50NjRfdCBp
ZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0
b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBt
b2RlKQogewogICAgIEhhc2hTZXQ8aW50NjRfdD4gb2JqZWN0U3RvcmVIYXNoU2V0OwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U3RvcmVJZHMuc2l6ZSgpOyArK2kpCiAgICAgICAg
IG9iamVjdFN0b3JlSGFzaFNldC5hZGQob2JqZWN0U3RvcmVJZHNbaV0pOwogCi0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbkJhY2tlbmQoZGF0YWJhc2VCYWNrZW5kLCBpZCwg
Y2FsbGJhY2tzLCBvYmplY3RTdG9yZUhhc2hTZXQsIG1vZGUpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJREJUcmFuc2FjdGlvbkJhY2tlbmQoZGF0YWJhc2VCYWNrZW5kLCBpZCwgY2FsbGJh
Y2tzLCBvYmplY3RTdG9yZUhhc2hTZXQsIG1vZGUpKTsKIH0KIAogSURCVHJhbnNhY3Rpb25CYWNr
ZW5kOjpJREJUcmFuc2FjdGlvbkJhY2tlbmQoSURCRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZUJh
Y2tlbmQsIGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxi
YWNrcywgY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIEluZGV4ZWREQjo6
VHJhbnNhY3Rpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZC5oCmluZGV4IGU2MDJmMjQ3ZDZhNDg5
YWRlNTQwMmY4NTk3MTg2OGMzOTQ5ZGIxNTQuLjgzYjllZjM5OTNkZmZlMWI0N2Y5MjVkNTE5MTVl
OTY0YmY5ZTcyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZC5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIElE
QkRhdGFiYXNlQ2FsbGJhY2tzOwogCiBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmQgOiBwdWJs
aWMgUmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbkJhY2tlbmQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmQ+IGNyZWF0ZShJREJEYXRhYmFzZUJh
Y2tlbmQqLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJbmRleGVkREI6
OlRyYW5zYWN0aW9uTW9kZSk7CisgICAgc3RhdGljIFJlZjxJREJUcmFuc2FjdGlvbkJhY2tlbmQ+
IGNyZWF0ZShJREJEYXRhYmFzZUJhY2tlbmQqLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVj
dFN0b3JlSWRzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSk7CiAgICAgfklEQlRyYW5zYWN0
aW9uQmFja2VuZCgpOwogCiAgICAgdm9pZCBjb21taXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2Vu
ZE9wZXJhdGlvbnMuaAppbmRleCA5NjRjYjg1YmE1ZWM5NjE3M2IyZDVjZTRkNmYyMTRlM2NkYjZk
NTM5Li4xNDEwOTc5MzAxYjczNzFjYzg4YzJlYmRjZGE3ZTIwODI1OTg5OTE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIElEQlNl
cnZlckNvbm5lY3Rpb247CiAKIGNsYXNzIENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uIDogcHVi
bGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3Bl
cmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgY29uc3Qg
SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKKyAgICBzdGF0aWMg
UmVmPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rp
b24sIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0
aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU1ldGFkYXRhKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmpl
Y3RTdG9yZU1ldGFkYXRhKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIG92ZXJyaWRlIGZpbmFsOwogCkBAIC01
OSw5ICs1OSw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9u
IDogcHVibGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwg
Y29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKKyAgICBz
dGF0aWMgUmVmPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJh
bnNhY3Rpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRh
dGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlbGV0ZU9iamVjdFN0b3Jl
T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU1ldGFkYXRhKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uKHRyYW5zYWN0aW9u
LCBvYmplY3RTdG9yZU1ldGFkYXRhKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3Jt
KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIG92ZXJyaWRlIGZpbmFsOwog
CkBAIC04MSw5ICs4MSw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZDo6
VmVyc2lvbkNoYW5nZU9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9u
QmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJh
c2VDYWxsYmFja3MpCisgICAgc3RhdGljIFJlZjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFu
c2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
IGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBW
ZXJzaW9uQ2hhbmdlT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCB2ZXJzaW9uLCBjYWxsYmFja3MsIGRh
dGFiYXNlQ2FsbGJhY2tzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZlcnNpb25D
aGFuZ2VPcGVyYXRpb24odHJhbnNhY3Rpb24sIHZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VD
YWxsYmFja3MpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oc3RkOjpmdW5jdGlv
bjx2b2lkKCk+IHN1Y2Nlc3NDYWxsYmFjaykgb3ZlcnJpZGUgZmluYWw7CiAKQEAgLTEwOCw5ICsx
MDgsOSBAQCBwcml2YXRlOgogCiBjbGFzcyBDcmVhdGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9u
IDogcHVibGljIElEQlN5bmNocm9ub3VzT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJTeW5jaHJvbm91c09wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9u
QmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKKyAgICBzdGF0aWMg
UmVmPElEQlN5bmNocm9ub3VzT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5k
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDcmVhdGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uKHRyYW5zYWN0
aW9uLCBvYmplY3RTdG9yZUlkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENyZWF0
ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb24odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQpKTsK
ICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBvdmVycmlkZSBmaW5hbDsKIHByaXZh
dGU6CkBAIC0xMjYsOSArMTI2LDkgQEAgcHJpdmF0ZToKIAogY2xhc3MgRGVsZXRlT2JqZWN0U3Rv
cmVBYm9ydE9wZXJhdGlvbiA6IHB1YmxpYyBJREJTeW5jaHJvbm91c09wZXJhdGlvbiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCU3luY2hyb25vdXNPcGVyYXRpb24+IGNyZWF0
ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9y
ZU1ldGFkYXRhJiBvYmplY3RTdG9yZSkKKyAgICBzdGF0aWMgUmVmPElEQlN5bmNocm9ub3VzT3Bl
cmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgY29uc3Qg
SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmUpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IERlbGV0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb24odHJhbnNhY3Rp
b24sIG9iamVjdFN0b3JlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlbGV0ZU9i
amVjdFN0b3JlQWJvcnRPcGVyYXRpb24odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlKSk7CiAgICAg
fQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgb3ZlcnJpZGUgZmluYWw7CiBwcml2YXRlOgpA
QCAtMTQ0LDkgKzE0NCw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZDo6
VmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uIDogcHVibGljIElEQlN5bmNocm9ub3VzT3BlcmF0
aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJTeW5jaHJvbm91c09wZXJh
dGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGNvbnN0IFN0
cmluZyYgcHJldmlvdXNWZXJzaW9uLCBpbnQ2NF90IHByZXZpb3VzSW50VmVyc2lvbikKKyAgICBz
dGF0aWMgUmVmPElEQlN5bmNocm9ub3VzT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25C
YWNrZW5kKiB0cmFuc2FjdGlvbiwgY29uc3QgU3RyaW5nJiBwcmV2aW91c1ZlcnNpb24sIGludDY0
X3QgcHJldmlvdXNJbnRWZXJzaW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRpb24odHJhbnNhY3Rpb24sIHByZXZpb3VzVmVyc2lv
biwgcHJldmlvdXNJbnRWZXJzaW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZl
cnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbih0cmFuc2FjdGlvbiwgcHJldmlvdXNWZXJzaW9uLCBw
cmV2aW91c0ludFZlcnNpb24pKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBv
dmVycmlkZSBmaW5hbDsKIHByaXZhdGU6CkBAIC0xNjQsOSArMTY0LDkgQEAgcHJpdmF0ZToKIAog
Y2xhc3MgQ3JlYXRlSW5kZXhPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2Fj
dGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElE
QkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCisgICAgc3RhdGljIFJlZjxJREJPcGVyYXRp
b24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyZWF0ZUluZGV4T3BlcmF0aW9uKHRyYW5z
YWN0aW9uLCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENyZWF0ZUluZGV4T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9y
ZUlkLCBpbmRleE1ldGFkYXRhKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIG92ZXJyaWRlIGZpbmFsOwogCkBA
IC0xODgsOSArMTg4LDkgQEAgcHJpdmF0ZToKIAogY2xhc3MgQ3JlYXRlSW5kZXhBYm9ydE9wZXJh
dGlvbiA6IHB1YmxpYyBJREJTeW5jaHJvbm91c09wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCU3luY2hyb25vdXNPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2Fj
dGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCkKKyAgICBzdGF0aWMgUmVmPElEQlN5bmNocm9ub3VzT3BlcmF0aW9uPiBjcmVhdGUo
SURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENy
ZWF0ZUluZGV4QWJvcnRPcGVyYXRpb24odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQsIGluZGV4
SWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3JlYXRlSW5kZXhBYm9ydE9wZXJh
dGlvbih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCkpOwogICAgIH0KICAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybSgpIG92ZXJyaWRlIGZpbmFsOwogcHJpdmF0ZToKQEAgLTIwOCw5
ICsyMDgsOSBAQCBwcml2YXRlOgogCiBjbGFzcyBEZWxldGVJbmRleE9wZXJhdGlvbiA6IHB1Ymxp
YyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJh
dGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKKyAg
ICBzdGF0aWMgUmVmPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCog
dHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0
YSYgaW5kZXhNZXRhZGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVs
ZXRlSW5kZXhPcGVyYXRpb24odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQsIGluZGV4TWV0YWRh
dGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVsZXRlSW5kZXhPcGVyYXRpb24o
dHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQsIGluZGV4TWV0YWRhdGEpKTsKICAgICB9CiAgICAg
dmlydHVhbCB2b2lkIHBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1Y2Nlc3NDYWxsYmFj
aykgb3ZlcnJpZGUgZmluYWw7CiAKQEAgLTIzMiw5ICsyMzIsOSBAQCBwcml2YXRlOgogCiBjbGFz
cyBEZWxldGVJbmRleEFib3J0T3BlcmF0aW9uIDogcHVibGljIElEQlN5bmNocm9ub3VzT3BlcmF0
aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJTeW5jaHJvbm91c09wZXJh
dGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKKyAg
ICBzdGF0aWMgUmVmPElEQlN5bmNocm9ub3VzT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rp
b25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJ
bmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBEZWxldGVJbmRleEFib3J0T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9y
ZUlkLCBpbmRleE1ldGFkYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlbGV0
ZUluZGV4QWJvcnRPcGVyYXRpb24odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQsIGluZGV4TWV0
YWRhdGEpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBvdmVycmlkZSBmaW5h
bDsKIHByaXZhdGU6CkBAIC0yNTIsOSArMjUyLDkgQEAgcHJpdmF0ZToKIAogY2xhc3MgR2V0T3Bl
cmF0aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2Fj
dGlvbiwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCisgICAgc3RhdGljIFJlZjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJU
cmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRh
JiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29y
VHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgR2V0T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBtZXRhZGF0YSwg
b2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGN1cnNvclR5cGUsIGNhbGxiYWNrcykp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHZXRPcGVyYXRpb24odHJhbnNhY3Rpb24s
IG1ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY3Vyc29yVHlwZSwg
Y2FsbGJhY2tzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIG92ZXJyaWRlIGZpbmFsOwogCkBAIC0yOTIsOSAr
MjkyLDkgQEAgcHJpdmF0ZToKIAogY2xhc3MgUHV0T3BlcmF0aW9uIDogcHVibGljIElEQk9wZXJh
dGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBjcmVh
dGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0U3Rv
cmVNZXRhZGF0YSYgb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwg
UGFzc1JlZlB0cjxJREJLZXk+IGtleSwgSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlIHB1dE1v
ZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiBpbmRleEtleXMpCisgICAg
c3RhdGljIFJlZjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRy
YW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZSwgUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBJREJE
YXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcywgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9y
PEluZGV4S2V5cz4mIGluZGV4S2V5cykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUHV0T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZSwgdmFsdWUsIGtleSwgcHV0
TW9kZSwgY2FsbGJhY2tzLCBpbmRleElkcywgaW5kZXhLZXlzKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFB1dE9wZXJhdGlvbih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmUsIHZhbHVl
LCBrZXksIHB1dE1vZGUsIGNhbGxiYWNrcywgaW5kZXhJZHMsIGluZGV4S2V5cykpOwogICAgIH0K
ICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0Nh
bGxiYWNrKSBvdmVycmlkZSBmaW5hbDsKIApAQCAtMzMwLDkgKzMzMCw5IEBAIHByaXZhdGU6CiAK
IGNsYXNzIFNldEluZGV4ZXNSZWFkeU9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRy
YW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIHNpemVfdCBpbmRleENvdW50KQorICAgIHN0
YXRpYyBSZWY8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFu
c2FjdGlvbiwgc2l6ZV90IGluZGV4Q291bnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNldEluZGV4ZXNSZWFkeU9wZXJhdGlvbih0cmFuc2FjdGlvbiwgaW5kZXhDb3VudCkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXRJbmRleGVzUmVhZHlPcGVyYXRpb24o
dHJhbnNhY3Rpb24sIGluZGV4Q291bnQpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZv
cm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1Y2Nlc3NDYWxsYmFjaykgb3ZlcnJpZGUgZmluYWw7
CiBwcml2YXRlOgpAQCAtMzQ4LDkgKzM0OCw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIE9wZW5DdXJz
b3JPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRy
YW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRp
cmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFj
a2VuZDo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCisgICAgc3RhdGljIFJlZjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJh
Y2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRh
dGFiYXNlQmFja2VuZDo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9wZW5DdXJz
b3JPcGVyYXRpb24odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdl
LCBkaXJlY3Rpb24sIGN1cnNvclR5cGUsIHRhc2tUeXBlLCBjYWxsYmFja3MpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BlbkN1cnNvck9wZXJhdGlvbih0cmFuc2FjdGlvbiwgb2Jq
ZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgY3Vyc29yVHlwZSwgdGFz
a1R5cGUsIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrKSBvdmVycmlkZSBmaW5hbDsKIApAQCAt
Mzg4LDkgKzM4OCw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIENvdW50T3BlcmF0aW9uIDogcHVibGlj
IElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0
aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtl
eVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBS
ZWY8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlv
biwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb3VudE9wZXJhdGlvbih0cmFuc2Fj
dGlvbiwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGNhbGxiYWNrcykpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb3VudE9wZXJhdGlvbih0cmFuc2FjdGlvbiwgb2Jq
ZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNr
KSBvdmVycmlkZSBmaW5hbDsKIApAQCAtNDE3LDkgKzQxNyw5IEBAIHByaXZhdGU6CiAKIGNsYXNz
IERlbGV0ZVJhbmdlT3BlcmF0aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25C
YWNrZW5kKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykK
KyAgICBzdGF0aWMgUmVmPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlbGV0ZVJhbmdlT3BlcmF0aW9uKHRyYW5z
YWN0aW9uLCBvYmplY3RTdG9yZUlkLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERlbGV0ZVJhbmdlT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmpl
Y3RTdG9yZUlkLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIG92ZXJyaWRl
IGZpbmFsOwogCkBAIC00NDMsOSArNDQzLDkgQEAgcHJpdmF0ZToKIAogY2xhc3MgQ2xlYXJPYmpl
Y3RTdG9yZU9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcykKKyAgICBzdGF0aWMgUmVmPElEQk9wZXJhdGlvbj4gY3JlYXRlKElE
QlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ2xlYXJPYmplY3RTdG9yZU9wZXJhdGlvbih0cmFuc2FjdGlvbiwgb2Jq
ZWN0U3RvcmVJZCwgY2FsbGJhY2tzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENs
ZWFyT2JqZWN0U3RvcmVPcGVyYXRpb24odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQsIGNhbGxi
YWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gc3VjY2Vzc0NhbGxiYWNrKSBvdmVycmlkZSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9WaWRlb1BsYXliYWNrUXVhbGl0eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5
LmNwcAppbmRleCBmN2E1Y2Y4M2NmMjBlYzg3OWZiODQ4OTQ1OTE4YmFiNjlmNGU2ZmFhLi5mMTk1
NjFmMzAzY2U2ZGM4MTRkMTkwYjUyM2RjZjVlNjJiMzE1YzVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5
LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxW
aWRlb1BsYXliYWNrUXVhbGl0eT4gVmlkZW9QbGF5YmFja1F1YWxpdHk6OmNyZWF0ZShkb3VibGUg
Y3JlYXRpb25UaW1lLCB1bnNpZ25lZCBsb25nIHRvdGFsVmlkZW9GcmFtZXMsIHVuc2lnbmVkIGxv
bmcgZHJvcHBlZFZpZGVvRnJhbWVzLCB1bnNpZ25lZCBsb25nIGNvcnJ1cHRlZFZpZGVvRnJhbWVz
LCBkb3VibGUgdG90YWxGcmFtZURlbGF5KQorUmVmPFZpZGVvUGxheWJhY2tRdWFsaXR5PiBWaWRl
b1BsYXliYWNrUXVhbGl0eTo6Y3JlYXRlKGRvdWJsZSBjcmVhdGlvblRpbWUsIHVuc2lnbmVkIGxv
bmcgdG90YWxWaWRlb0ZyYW1lcywgdW5zaWduZWQgbG9uZyBkcm9wcGVkVmlkZW9GcmFtZXMsIHVu
c2lnbmVkIGxvbmcgY29ycnVwdGVkVmlkZW9GcmFtZXMsIGRvdWJsZSB0b3RhbEZyYW1lRGVsYXkp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1BsYXliYWNrUXVhbGl0eShjcmVhdGlv
blRpbWUsIHRvdGFsVmlkZW9GcmFtZXMsIGRyb3BwZWRWaWRlb0ZyYW1lcywgY29ycnVwdGVkVmlk
ZW9GcmFtZXMsIHRvdGFsRnJhbWVEZWxheSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZp
ZGVvUGxheWJhY2tRdWFsaXR5KGNyZWF0aW9uVGltZSwgdG90YWxWaWRlb0ZyYW1lcywgZHJvcHBl
ZFZpZGVvRnJhbWVzLCBjb3JydXB0ZWRWaWRlb0ZyYW1lcywgdG90YWxGcmFtZURlbGF5KSk7CiB9
CiAKIFZpZGVvUGxheWJhY2tRdWFsaXR5OjpWaWRlb1BsYXliYWNrUXVhbGl0eShkb3VibGUgY3Jl
YXRpb25UaW1lLCB1bnNpZ25lZCBsb25nIHRvdGFsVmlkZW9GcmFtZXMsIHVuc2lnbmVkIGxvbmcg
ZHJvcHBlZFZpZGVvRnJhbWVzLCB1bnNpZ25lZCBsb25nIGNvcnJ1cHRlZFZpZGVvRnJhbWVzLCBk
b3VibGUgdG90YWxGcmFtZURlbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9WaWRlb1BsYXliYWNrUXVhbGl0eS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9WaWRlb1BsYXliYWNrUXVhbGl0eS5oCmluZGV4IDViODkzNzdiN2M1
MDY2MzUzYzI2N2I5Y2FiMjY2MDRmNDBiMDI4MDcuLjhiMDNiODVlMDU3NjlmMTU0NjdjNGNlYjRk
M2M1ZjAzZDJkY2JkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvVmlkZW9QbGF5YmFja1F1YWxpdHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVmlkZW9QbGF5YmFja1F1YWxpdHkgOiBwdWJsaWMgUmVm
Q291bnRlZDxWaWRlb1BsYXliYWNrUXVhbGl0eT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFZpZGVvUGxheWJhY2tRdWFsaXR5KQogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8VmlkZW9Q
bGF5YmFja1F1YWxpdHk+IGNyZWF0ZShkb3VibGUgY3JlYXRpb25UaW1lLCB1bnNpZ25lZCBsb25n
IHRvdGFsVmlkZW9GcmFtZXMsIHVuc2lnbmVkIGxvbmcgZHJvcHBlZFZpZGVvRnJhbWVzLCB1bnNp
Z25lZCBsb25nIGNvcnJ1cHRlZFZpZGVvRnJhbWVzLCBkb3VibGUgdG90YWxGcmFtZURlbGF5KTsK
KyAgICBzdGF0aWMgUmVmPFZpZGVvUGxheWJhY2tRdWFsaXR5PiBjcmVhdGUoZG91YmxlIGNyZWF0
aW9uVGltZSwgdW5zaWduZWQgbG9uZyB0b3RhbFZpZGVvRnJhbWVzLCB1bnNpZ25lZCBsb25nIGRy
b3BwZWRWaWRlb0ZyYW1lcywgdW5zaWduZWQgbG9uZyBjb3JydXB0ZWRWaWRlb0ZyYW1lcywgZG91
YmxlIHRvdGFsRnJhbWVEZWxheSk7CiAKICAgICBkb3VibGUgY3JlYXRpb25UaW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KICAgICB1bnNpZ25lZCBsb25nIHRvdGFsVmlkZW9G
cmFtZXMoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsVmlkZW9GcmFtZXM7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRz
SW1wbC5jcHAKaW5kZXggMTBmODEyYmRhYjJmNzUxY2IzMjkwMDU0NTQ5MGRkZWNmMWJiNzc0Yy4u
NWNmMmMzZWJjMDBjNTcxZDQ0ZTIxMzIyOWYwZGY0ODI0YTZlNTMxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRz
SW1wbC5jcHAKQEAgLTQxLDE5ICs0MSwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBh
c3NSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVh
dGUoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVm
UHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNv
bnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBS
ZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IG9iamVjdCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNv
bnN0cmFpbnRzSW1wbCgpKTsKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IG9iamVj
dCA9IGFkb3B0UmVmKCpuZXcgTWVkaWFDb25zdHJhaW50c0ltcGwoKSk7CiAgICAgaWYgKCFvYmpl
Y3QtPmluaXRpYWxpemUoY29uc3RyYWludHMpKSB7CiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRD
SF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
Ci0gICAgcmV0dXJuIG9iamVjdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG9iamVjdDsKIH0KIAot
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNy
ZWF0ZSgpCitSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+IE1lZGlhQ29uc3RyYWludHNJbXBsOjpj
cmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb25zdHJhaW50c0ltcGwo
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFDb25zdHJhaW50c0ltcGwoKSk7CiB9
CiAKIGJvb2wgTWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUoY29uc3QgRGljdGlvbmFy
eSYgY29uc3RyYWludHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgKaW5kZXggZWViNjMxY2EzODFiZDQ5ZDI2
MDJlYTNhNjRkODhkZDI5MWE3Y2MxNi4uYTRjMWY3Y2U2Nzg5MzJmZGQ3ODk2YTM3NWRjODFjNGNk
Y2E0Mjc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYUNvbnN0cmFpbnRzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaApAQCAtNDMsOCArNDMsOCBAQCBjbGFzcyBEaWN0
aW9uYXJ5OwogCiBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbCA6IHB1YmxpYyBNZWRpYUNvbnN0
cmFpbnRzIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
SW1wbD4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50c0lt
cGw+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRp
YyBSZWY8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWZQdHI8
TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgdmlydHVhbCB+TWVkaWFDb25zdHJhaW50c0ltcGwoKTsKICAgICBib29s
IGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAppbmRleCA5ZmJmYjgyNjdlMmUxMjc5
ZjlhOGQxMTVjNDhlOTJkNjQyMTQ4MmQ0Li40NzIwZjAzMjdjNzUzNGY1MDZlM2U0MGVkMmFlZTgy
OTIyNzU1YWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmNwcApAQCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorUmVmPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIE1l
ZGlhU3RyZWFtOjpjcmVhdGUoY29udGV4dCwgTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoVmVj
dG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4oKSwgVmVjdG9yPFJlZlB0cjxSZWFsdGlt
ZU1lZGlhU291cmNlPj4oKSkpOwogfQogCi1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBNZWRpYVN0
cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW0+IHN0cmVhbSkKK1JlZjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
PiBzdHJlYW0pCiB7CiAgICAgQVNTRVJUKHN0cmVhbSk7CiAKQEAgLTYwLDcgKzYwLDcgQEAgUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBQYXMKICAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250
ZXh0LCBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1RyYWNrcywgdmlkZW9UcmFja3Mp
KTsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+PiYgdHJhY2tzKQorUmVmPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVk
aWFTdHJlYW1UcmFjaz4+JiB0cmFja3MpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZT4+IGF1ZGlvVHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU+PiB2aWRlb1RyYWNrczsKQEAgLTc1LDkgKzc1LDkgQEAgUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb24KICAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LCBN
ZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1RyYWNrcywgdmlkZW9UcmFja3MpKTsKIH0K
IAotUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gcHJp
dmF0ZVN0cmVhbSkKK1JlZjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4g
cHJpdmF0ZVN0cmVhbSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtKGNv
bnRleHQsIHByaXZhdGVTdHJlYW0pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0
cmVhbShjb250ZXh0LCBwcml2YXRlU3RyZWFtKSk7CiB9CiAKIE1lZGlhU3RyZWFtOjpNZWRpYVN0
cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtUHJpdmF0ZT4gcHJpdmF0ZVN0cmVhbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAppbmRleCBkMjczZGFlOTM5MTM1OTBlYmFmNTVkYTFh
NmZiOWU1OWFmNmFhMTBkLi5iZjYzODg1MjkxYjU2YjUyMjM3NzM5YThhYzI5MTBmM2JlYmE2NjJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS5oCkBAIC01MSwxMCArNTEsMTAgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
QWRkT3JSZW1vdmVUcmFjaygpID0gMDsKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4pOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4+Jik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVBy
aXZhdGU+KTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpOworICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4pOworICAgIHN0YXRpYyBS
ZWY8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgVmVj
dG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4mKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU3Ry
ZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1Qcml2YXRlPik7CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW0oKTsKIAogICAgIFN0cmluZyBp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS0+aWQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKaW5kZXggYjc5MmMy
ZmQxYzhlNjE1MDNkMzMwMzA0YmU0M2M2ZGM0NzBjOWQ0ZS4uM2NmZmI4NmI2YTVkYjMzNWYwYTk5
NTY4YjUwNTFhMGE0MjQyY2YwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBj
b25zdCBsb25nIG1heFRvbmVEdXJhdGlvbk1zID0gNjAwMDsKIHN0YXRpYyBjb25zdCBsb25nIG1p
bkludGVyVG9uZUdhcE1zID0gMzA7CiBzdGF0aWMgY29uc3QgbG9uZyBkZWZhdWx0SW50ZXJUb25l
R2FwTXMgPSA3MDsKIAotUGFzc1JlZlB0cjxSVENEVE1GU2VuZGVyPiBSVENEVE1GU2VuZGVyOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyKiBwZWVyQ29ubmVjdGlvbkhhbmRsZXIsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4gcHJwVHJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IFJU
Q0RUTUZTZW5kZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIqIHBlZXJDb25uZWN0aW9uSGFuZGxlciwgUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFJUQ0RUTUZTZW5kZXJIYW5kbGVyPiBoYW5kbGVyID0gcGVlckNvbm5lY3Rpb25IYW5kbGVy
LT5jcmVhdGVEVE1GU2VuZGVyKHRyYWNrLT5zb3VyY2UoKSk7CkBAIC01NSw3ICs1NSw3IEBAIFBh
c3NSZWZQdHI8UlRDRFRNRlNlbmRlcj4gUlRDRFRNRlNlbmRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsCiAKICAgICBSZWZQdHI8UlRDRFRNRlNlbmRlcj4gZHRtZlNl
bmRlciA9IGFkb3B0UmVmKG5ldyBSVENEVE1GU2VuZGVyKGNvbnRleHQsIHRyYWNrLCBXVEY6Om1v
dmUoaGFuZGxlcikpKTsKICAgICBkdG1mU2VuZGVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICBy
ZXR1cm4gZHRtZlNlbmRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGR0bWZTZW5kZXI7CiB9CiAK
IFJUQ0RUTUZTZW5kZXI6OlJUQ0RUTUZTZW5kZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjaywgc3RkOjp1bmlxdWVfcHRy
PFJUQ0RUTUZTZW5kZXJIYW5kbGVyPiBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaAppbmRleCBhYWEwYzNjM2ExY2E1MWUx
MTU0OThjMjVjYWVkMmYxNGFkNjVjYzhiLi4wMjNlODI3OTdiNjM0NTBkYWZjMzQ0YzgyNmE2NzNk
OTNjM2NmZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBSVENEVE1GU2VuZGVySGFu
ZGxlcjsKIAogY2xhc3MgUlRDRFRNRlNlbmRlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFJU
Q0RUTUZTZW5kZXI+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSwgcHVibGljIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50LCBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEVE1G
U2VuZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlciosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBzdGF0aWMgUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIH5SVENEVE1GU2VuZGVyKCk7CiAKICAgICBi
b29sIGNhbkluc2VydERUTUYoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmNwcAppbmRleCAx
ODU1YjgwYzU3NDdlODJmNWEyZmJhNDU0YmNmZmI3NGJlYmVjMzRkLi5lZjBhYTZkZTgzM2UwNGIz
NDNiZTIyOTc5YzQ3NGZjYzkxZWQ2YWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ09mZmVyQW5zd2VyT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENPZmZlckFuc3dlck9wdGlvbnMuY3BwCkBAIC0z
Miw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxSVENPZmZl
ckFuc3dlck9wdGlvbnM+IFJUQ09mZmVyQW5zd2VyT3B0aW9uczo6Y3JlYXRlKGNvbnN0IERpY3Rp
b25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPFJUQ09mZmVyQW5zd2Vy
T3B0aW9ucz4gUlRDT2ZmZXJBbnN3ZXJPcHRpb25zOjpjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYg
b3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPFJUQ09mZmVyQW5zd2Vy
T3B0aW9ucz4gb2ZmZXJBbnN3ZXJPcHRpb25zID0gYWRvcHRSZWYobmV3IFJUQ09mZmVyQW5zd2Vy
T3B0aW9ucygpKTsKICAgICBTdHJpbmcgcmVxdWVzdElkZW50aXR5OwpAQCAtNDMsNyArNDMsNyBA
QCBQYXNzUmVmUHRyPFJUQ09mZmVyQW5zd2VyT3B0aW9ucz4gUlRDT2ZmZXJBbnN3ZXJPcHRpb25z
OjpjcmVhdGUoY29uc3QgRGljdGlvbmFyeQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICByZXR1cm4gb2ZmZXJBbnN3ZXJPcHRpb25zLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
b2ZmZXJBbnN3ZXJPcHRpb25zOwogfQogCiBib29sIFJUQ09mZmVyQW5zd2VyT3B0aW9uczo6aW5p
dGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKQpAQCAtNTksNyArNTksNyBAQCBib29s
IFJUQ09mZmVyQW5zd2VyT3B0aW9uczo6aW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5JiBvcHRp
b25zKQogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmUHRyPFJUQ09mZmVyT3B0aW9ucz4g
UlRDT2ZmZXJPcHRpb25zOjpjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0
aW9uQ29kZSYgZWMpCitSZWZQdHI8UlRDT2ZmZXJPcHRpb25zPiBSVENPZmZlck9wdGlvbnM6OmNy
ZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBSZWZQdHI8UlRDT2ZmZXJPcHRpb25zPiBvZmZlck9wdGlvbnMgPSBhZG9wdFJlZihuZXcgUlRD
T2ZmZXJPcHRpb25zKCkpOwogICAgIGlmICghb2ZmZXJPcHRpb25zLT5pbml0aWFsaXplKG9wdGlv
bnMpKSB7CkBAIC02OSw3ICs2OSw3IEBAIFBhc3NSZWZQdHI8UlRDT2ZmZXJPcHRpb25zPiBSVENP
ZmZlck9wdGlvbnM6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBvZmZlck9wdGlvbnMucmVsZWFz
ZSgpOworICAgIHJldHVybiBvZmZlck9wdGlvbnM7CiB9CiAKIGJvb2wgUlRDT2ZmZXJPcHRpb25z
Ojppbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ09mZmVyQW5zd2VyT3B0aW9ucy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENPZmZlckFuc3dlck9wdGlvbnMu
aAppbmRleCBhZDU4MjQ4YmQwMDFjNjczNWYxMzVjN2RmOTJjMDZhYWVmZTJjMzJjLi41ZjNhZTFm
YTMzYTAxOWUyYTg1OTliMWZiODVmYWRiZmRiNzgxODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ09mZmVyQW5zd2VyT3B0aW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmgK
QEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgRGljdGlvbmFyeTsKIAogY2xhc3MgUlRDT2ZmZXJBbnN3
ZXJPcHRpb25zIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDT2ZmZXJBbnN3ZXJPcHRpb25zPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDT2ZmZXJBbnN3ZXJPcHRpb25zPiBjcmVh
dGUoY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUmVmUHRy
PFJUQ09mZmVyQW5zd2VyT3B0aW9ucz4gY3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRp
b25Db2RlJik7CiAKICAgICBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZGVudGl0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpdmF0ZS0+cmVxdWVzdElkZW50aXR5KCk7IH0KICAgICBSVENPZmZlckFuc3dl
ck9wdGlvbnNQcml2YXRlKiBwcml2YXRlT2ZmZXJBbnN3ZXJPcHRpb25zKCkgY29uc3QgeyByZXR1
cm4gbV9wcml2YXRlLmdldCgpOyB9CkBAIC01Niw3ICs1Niw3IEBAIHByb3RlY3RlZDoKIAogY2xh
c3MgUlRDT2ZmZXJPcHRpb25zIDogcHVibGljIFJUQ09mZmVyQW5zd2VyT3B0aW9ucyB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDT2ZmZXJPcHRpb25zPiBjcmVhdGUoY29uc3Qg
RGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFJUQ09mZmVy
T3B0aW9ucz4gY3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7CiAKICAg
ICBpbnQ2NF90IG9mZmVyVG9SZWNlaXZlVmlkZW8oKSBjb25zdCB7IHJldHVybiBwcml2YXRlT2Zm
ZXJPcHRpb25zKCktPm9mZmVyVG9SZWNlaXZlVmlkZW8oKTsgfQogICAgIGludDY0X3Qgb2ZmZXJU
b1JlY2VpdmVBdWRpbygpIGNvbnN0IHsgcmV0dXJuIHByaXZhdGVPZmZlck9wdGlvbnMoKS0+b2Zm
ZXJUb1JlY2VpdmVBdWRpbygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IDAxZGFlZTcwMTRiMTQ2
ZjhkYzc2ODk2MjBkMGFiZTA4ZGFkM2U2NWIuLjE2MDk4MTZiODU5OWQwZDBkYTMzMTQyYWIyZTA2
ODkwNDEyYTU1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGlj
IEV4Y2VwdGlvbkNvZGUgcHJvY2Vzc0ljZVNlcnZlcihjb25zdCBEaWN0aW9uYXJ5JiBpY2VTZXJ2
ZXIsIFJUQ0NvbmZpZ3VyYXQKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxSVENDb25m
aWd1cmF0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6cGFyc2VDb25maWd1cmF0aW9uKGNvbnN0IERp
Y3Rpb25hcnkmIGNvbmZpZ3VyYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPFJUQ0Nv
bmZpZ3VyYXRpb24+IFJUQ1BlZXJDb25uZWN0aW9uOjpwYXJzZUNvbmZpZ3VyYXRpb24oY29uc3Qg
RGljdGlvbmFyeSYgY29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYg
KGNvbmZpZ3VyYXRpb24uaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IFJU
Q1BlZXJDb25uZWN0aW9uOjpwYXJzZUNvbmZpZ3VyYXRpb24oY29uc3QgRGljdGlvbgogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHJ0Y0NvbmZpZ3VyYXRp
b24ucmVsZWFzZSgpOworICAgIHJldHVybiBydGNDb25maWd1cmF0aW9uOwogfQogCi1QYXNzUmVm
UHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3VyYXRp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBSVENQZWVy
Q29ubmVjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0
IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3VyYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IFJlZlB0cjxSVENDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gcGFyc2VDb25maWd1cmF0
aW9uKHJ0Y0NvbmZpZ3VyYXRpb24sIGVjKTsKICAgICBpZiAoZWMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXgg
NGI0YTlkMTNlZTkxMGVhZDZjNjUwN2RhYTUzMTM5NDY2ZjA5MmEwNi4uNTJkYzc5MzBiMDQyNjIw
MTAxYWRmNmQyZjY0M2RmY2E1ZTg1ZTBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNjAsNyArNjAsNyBA
QCBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIGZpbmFsIDog
cHVibGljIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+LCBwdWJsaWMgU2NyaXB0V3JhcHBh
YmxlLCBwdWJsaWMgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIE1lZGlh
U3RyZWFtOjpPYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDUGVl
ckNvbm5lY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRGljdGlv
bmFyeSYgcnRjQ29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBSZWZQ
dHI8UlRDUGVlckNvbm5lY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29u
c3QgRGljdGlvbmFyeSYgcnRjQ29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIH5S
VENQZWVyQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCBjcmVhdGVPZmZlcihQYXNzUmVmUHRyPFJU
Q1Nlc3Npb25EZXNjcmlwdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxSVENQZWVyQ29ubmVjdGlv
bkVycm9yQ2FsbGJhY2s+LCBjb25zdCBEaWN0aW9uYXJ5JiBvZmZlck9wdGlvbnMsIEV4Y2VwdGlv
bkNvZGUmKTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFJUQ1Bl
ZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBQYXNzUmVmUHRyPFJUQ0NvbmZp
Z3VyYXRpb24+LCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVEND
b25maWd1cmF0aW9uPiBwYXJzZUNvbmZpZ3VyYXRpb24oY29uc3QgRGljdGlvbmFyeSYgY29uZmln
dXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBSZWZQdHI8UlRDQ29uZmlndXJh
dGlvbj4gcGFyc2VDb25maWd1cmF0aW9uKGNvbnN0IERpY3Rpb25hcnkmIGNvbmZpZ3VyYXRpb24s
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50Pik7CiAgICAgdm9pZCBzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoKTsKICAgICBi
b29sIGhhc0xvY2FsU3RyZWFtV2l0aFRyYWNrSWQoY29uc3QgU3RyaW5nJiB0cmFja0lkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRl
eCA5MGFjNDkwYTI3ZjI4NTI1NjIxMGE0YThlM2QxMjk4Njg3ZTA4ZTcyLi5hMjkzMTZhMTVmZjJl
Yjc5NTg5MjA2YTEyNDUxMGRmYTA3ZTU4MTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgUmVmUHRy
PEF1ZGlvQ29udGV4dD4gQXVkaW9Db250ZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBF
eGNlcHRpb25Db2RlJiBlYykKIAogICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IGF1ZGlvQ29udGV4
dChhZG9wdFJlZihuZXcgQXVkaW9Db250ZXh0KGRvY3VtZW50KSkpOwogICAgIGF1ZGlvQ29udGV4
dC0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGF1ZGlvQ29udGV4dC5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIGF1ZGlvQ29udGV4dDsKIH0KIAogLy8gQ29uc3RydWN0b3IgZm9yIHJlbmRl
cmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCmluZGV4IGU5
NTE1N2Q3NDlhY2FlODM0NGQzMGMxMmI1MzRmNzM4MDQyZjFiNDQuLjIxYzRhOTAwZDI2NDA2ODdi
Njc2ZmM3YmE4YWI0MThjYTBkOGQ3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCkBAIC01NSw3
ICs1NSw3IEBAIHB1YmxpYzoKICAgICAgICAgUmV0cnlPcGVuRGF0YWJhc2UKICAgICB9OwogCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZEJhc2U+IG9wZW5EYXRhYmFzZShS
ZWZQdHI8RGF0YWJhc2VDb250ZXh0PiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxv
bmcgZXN0aW1hdGVkU2l6ZSwgYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VF
cnJvciYsIFN0cmluZyYgZXJyb3JNZXNzYWdlLCBPcGVuQXR0ZW1wdCA9IEZpcnN0VHJ5VG9PcGVu
RGF0YWJhc2UpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxEYXRhYmFzZUJhY2tlbmRCYXNlPiBv
cGVuRGF0YWJhc2UoUmVmUHRyPERhdGFiYXNlQ29udGV4dD4mLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
LCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJh
c2UsIERhdGFiYXNlRXJyb3ImLCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgT3BlbkF0dGVtcHQgPSBG
aXJzdFRyeVRvT3BlbkRhdGFiYXNlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VBbGxE
YXRhYmFzZXMoKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAKaW5kZXggMDE1NGJhMDQ1YjQ0
MTRlZThhMTBkOGM1YjcyMTc3MGQ1NzQxNTExNC4uMTIxN2U1YmU5ZWNiN2ZiZTQ3NGM3Njk0OThi
NWU3N2M3ZmFiMWJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAKQEAgLTM3LDEyICszNywxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8RGF0YWJhc2U+IERPTVdpbmRv
d1dlYkRhdGFiYXNlOjpvcGVuRGF0YWJhc2UoRE9NV2luZG93KiB3aW5kb3csIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
LCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFj
az4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8RGF0YWJhc2U+
IERPTVdpbmRvd1dlYkRhdGFiYXNlOjpvcGVuRGF0YWJhc2UoRE9NV2luZG93KiB3aW5kb3csIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJh
c2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKCF3aW5kb3ctPmlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RGF0YWJhc2U+IGRh
dGFiYXNlID0gMDsKKyAgICBSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlID0gbnVsbHB0cjsKICAg
ICBEYXRhYmFzZU1hbmFnZXImIGRiTWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9u
KCk7CiAgICAgRGF0YWJhc2VFcnJvciBlcnJvciA9IERhdGFiYXNlRXJyb3I6Ok5vbmU7CiAgICAg
aWYgKGRiTWFuYWdlci5pc0F2YWlsYWJsZSgpICYmIHdpbmRvdy0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2Uod2luZG93LT5kb2N1bWVudCgpLT50b3BPcmln
aW4oKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RE9NV2luZG93V2ViRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRE9NV2luZG93V2ViRGF0YWJhc2UuaAppbmRleCBmZDc1NTM0YjUxZGRhN2U3MjJlMGNjYzVl
ZDBkNzhlMjU4YzkxMmJiLi5iZmQ3MWE4ZTlmZjJhZmUxN2I4ZTkyZjU2OTc5MTkwNmY2MjU5ZGYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRv
d1dlYkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
T01XaW5kb3dXZWJEYXRhYmFzZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEZyYW1lOwogCiBj
bGFzcyBET01XaW5kb3dXZWJEYXRhYmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8RGF0YWJhc2U+IG9wZW5EYXRhYmFzZShET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWdu
ZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0
aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUmVmUHRyPERhdGFiYXNl
PiBvcGVuRGF0YWJhc2UoRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0
aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6CiAgICAgRE9NV2luZG93V2ViRGF0YWJhc2Uo
KSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5jcHAKaW5kZXggN2Y2ZmIyN2JhODM3ODYwMDFiYjEzYTBjOThmYjA3Njli
MTE3ZjVlMS4uNWI1YjBlNjAwZTE1N2I5ZmZmNzViNjBiMjZjNWI4YzZhN2Y1YTQ1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5h
Z2VyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzZXRJc0F2
YWlsYWJsZShib29sIGF2YWlsYWJsZSkKICAgICBtX2RhdGFiYXNlSXNBdmFpbGFibGUgPSBhdmFp
bGFibGU7CiB9CiAKLVBhc3NSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBEYXRhYmFzZU1hbmFnZXI6
OmV4aXN0aW5nRGF0YWJhc2VDb250ZXh0Rm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCitSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBEYXRhYmFzZU1hbmFnZXI6OmV4aXN0aW5nRGF0
YWJhc2VDb250ZXh0Rm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
c3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sobV9tdXRleCk7CiAKQEAgLTEyNywxNSAr
MTI3LDE1IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBEYXRhYmFzZU1hbmFnZXI6OmV4
aXN0aW5nRGF0YWJhc2VDb250ZXh0Rm9yKFNjcmlwdEV4CiAgICAgICAgIC8vIFdlIGRvIHRoaXMg
YnkgcmVmJ2luZyB0aGUgcmV1c2VkIGRhdGFiYXNlQ29udGV4dCBiZWZvcmUgcmV0dXJuaW5nIGl0
LgogICAgICAgICBkYXRhYmFzZUNvbnRleHQtPnJlZigpOwogICAgIH0KLSAgICByZXR1cm4gZGF0
YWJhc2VDb250ZXh0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YWJhc2VDb250ZXh0OwogfQog
Ci1QYXNzUmVmUHRyPERhdGFiYXNlQ29udGV4dD4gRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZUNv
bnRleHRGb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxEYXRhYmFz
ZUNvbnRleHQ+IERhdGFiYXNlTWFuYWdlcjo6ZGF0YWJhc2VDb250ZXh0Rm9yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgUmVmUHRyPERhdGFiYXNlQ29udGV4dD4gZGF0
YWJhc2VDb250ZXh0ID0gZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGb3IoY29udGV4dCk7CiAgICAg
aWYgKCFkYXRhYmFzZUNvbnRleHQpCi0gICAgICAgIGRhdGFiYXNlQ29udGV4dCA9IGFkb3B0UmVm
KG5ldyBEYXRhYmFzZUNvbnRleHQoY29udGV4dCkpOwotICAgIHJldHVybiBkYXRhYmFzZUNvbnRl
eHQucmVsZWFzZSgpOworICAgICAgICBkYXRhYmFzZUNvbnRleHQgPSBhZG9wdFJlZigqbmV3IERh
dGFiYXNlQ29udGV4dChjb250ZXh0KSk7CisgICAgcmV0dXJuIGRhdGFiYXNlQ29udGV4dDsKIH0K
IAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnJlZ2lzdGVyRGF0YWJhc2VDb250ZXh0KERhdGFiYXNl
Q29udGV4dCogZGF0YWJhc2VDb250ZXh0KQpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpyZW1vdmVQcm9wb3NlZERhdGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UqIHByb3Bv
c2VkRGIpCiAgICAgbV9wcm9wb3NlZERhdGFiYXNlcy5yZW1vdmUocHJvcG9zZWREYik7CiB9CiAK
LVBhc3NSZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCitSZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlTWFu
YWdlcjo6b3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5TmFtZSwKICAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBh
c3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywKICAgICBEYXRhYmFz
ZUVycm9yJiBlcnJvcikKQEAgLTI4NCw3ICsyODQsNyBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBE
YXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZQogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CiAgICAgUmVmUHRyPERhdGFiYXNlQmFja2VuZEJh
c2U+IGJhY2tlbmQgPSBvcGVuRGF0YWJhc2VCYWNrZW5kKGNvbnRleHQsIG5hbWUsIGV4cGVjdGVk
VmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIHNldFZlcnNpb25Jbk5ld0RhdGFi
YXNlLCBlcnJvciwgZXJyb3JNZXNzYWdlKTsKICAgICBpZiAoIWJhY2tlbmQpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxEYXRhYmFzZT4g
ZGF0YWJhc2UgPSBEYXRhYmFzZTo6Y3JlYXRlKGNvbnRleHQsIGJhY2tlbmQpOwogCkBAIC0zMDIs
NyArMzAyLDcgQEAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gRGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0
YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGUKICAgICB9CiAKICAgICBBU1NFUlQo
ZGF0YWJhc2UpOwotICAgIHJldHVybiBkYXRhYmFzZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRh
dGFiYXNlOwogfQogCiBib29sIERhdGFiYXNlTWFuYWdlcjo6aGFzT3BlbkRhdGFiYXNlcyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgKaW5kZXggMzIwZDRjZGYyNzhmM2Yw
YjFkNWQxOWM4YTUxZGZmOTZmZGIyOTEyMS4uNjY0ZGE1MjZiZGY3OGUzODI2MWY2YjljNzVjNWVk
N2FkZDU3ODQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIC8v
IFRoaXMgZ2V0cyBhIERhdGFiYXNlQ29udGV4dCBmb3IgdGhlIHNwZWNpZmllZCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0LgogICAgIC8vIElmIG9uZSBkb2Vzbid0IGFscmVhZHkgZXhpc3QsIGl0IHdp
bGwgY3JlYXRlIGEgbmV3IG9uZS4KLSAgICBQYXNzUmVmUHRyPERhdGFiYXNlQ29udGV4dD4gZGF0
YWJhc2VDb250ZXh0Rm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBSZWZQdHI8RGF0
YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHRGb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OwogCiAgICAgLy8gVGhlc2UgMiBtZXRob2RzIGFyZSBmb3IgRGF0YWJhc2VDb250ZXh0ICh1bily
ZWdpc3RyYXRpb24sIGFuZCBzaG91bGQgb25seQogICAgIC8vIGJlIGNhbGxlZCBieSB0aGUgRGF0
YWJhc2VDb250ZXh0IGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yLgpAQCAtODIsNyArODIsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlRm9yRGF0
YWJhc2VFcnJvcihEYXRhYmFzZUVycm9yKTsKIAotICAgIFBhc3NSZWZQdHI8RGF0YWJhc2U+IG9w
ZW5EYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+
LCBEYXRhYmFzZUVycm9yJik7CisgICAgUmVmUHRyPERhdGFiYXNlPiBvcGVuRGF0YWJhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBl
eHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcg
ZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiwgRGF0YWJhc2VFcnJv
ciYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKIApAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAKICAgICAv
LyBUaGlzIGdldHMgYSBEYXRhYmFzZUNvbnRleHQgZm9yIHRoZSBzcGVjaWZpZWQgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCBpZgogICAgIC8vIGl0IGFscmVhZHkgZXhpc3QgcHJldmlvdXNseS4gT3Ro
ZXJ3aXNlLCBpdCByZXR1cm5zIDAuCi0gICAgUGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+IGV4
aXN0aW5nRGF0YWJhc2VDb250ZXh0Rm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBS
ZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBleGlzdGluZ0RhdGFiYXNlQ29udGV4dEZvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZEJhc2U+
IG9wZW5EYXRhYmFzZUJhY2tlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlz
cGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgYm9vbCBzZXRWZXJzaW9uSW5O
ZXdEYXRhYmFzZSwgRGF0YWJhc2VFcnJvciYsIFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVy
LmNwcAppbmRleCBhODBhYzhlYjRkZTM2YzM1OTBiZWYxMWZiZDc0YzhhMDAxODY4MmY4Li4yNDA5
NmZiZjNhODEzN2RlNDYwNWNiN2YzMmUwZDExM2JhNzg4ZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIHZvaWQgRGF0YWJhc2VTZXJ2ZXI6OmludGVycnVwdEFsbERhdGFiYXNlc0Zv
ckNvbnRleHQoY29uc3QgRGF0YWJhc2VDb250ZXh0KiBjb250CiAgICAgRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb250ZXh0KTsKIH0K
IAotUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRCYXNlPiBEYXRhYmFzZVNlcnZlcjo6b3BlbkRh
dGFiYXNlKFJlZlB0cjxEYXRhYmFzZUNvbnRleHQ+JiBiYWNrZW5kQ29udGV4dCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNpb25J
bk5ld0RhdGFiYXNlLCBEYXRhYmFzZUVycm9yICZlcnJvciwgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
CitSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQmFzZT4gRGF0YWJhc2VTZXJ2ZXI6Om9wZW5EYXRhYmFz
ZShSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiYgYmFja2VuZENvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgYm9vbCBzZXRWZXJzaW9uSW5OZXdE
YXRhYmFzZSwgRGF0YWJhc2VFcnJvciAmZXJyb3IsIFN0cmluZyYgZXJyb3JNZXNzYWdlLAogICAg
IE9wZW5BdHRlbXB0IGF0dGVtcHQpCiB7CiAgICAgUmVmUHRyPERhdGFiYXNlQmFja2VuZEJhc2U+
IGRhdGFiYXNlOwpAQCAtMTM0LDE4ICsxMzQsMTggQEAgUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tl
bmRCYXNlPiBEYXRhYmFzZVNlcnZlcjo6b3BlbkRhdGFiYXNlKFJlZlB0cjxEYXRhYmFzZUNvbnQK
IAogICAgIGlmIChzdWNjZXNzKQogICAgICAgICBkYXRhYmFzZSA9IGNyZWF0ZURhdGFiYXNlKGJh
Y2tlbmRDb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0
ZWRTaXplLCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgZXJyb3IsIGVycm9yTWVzc2FnZSk7Ci0g
ICAgcmV0dXJuIGRhdGFiYXNlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YWJhc2U7CiB9CiAK
LVBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQmFzZT4gRGF0YWJhc2VTZXJ2ZXI6OmNyZWF0ZURh
dGFiYXNlKFJlZlB0cjxEYXRhYmFzZUNvbnRleHQ+JiBiYWNrZW5kQ29udGV4dCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNpb25J
bk5ld0RhdGFiYXNlLCBEYXRhYmFzZUVycm9yJiBlcnJvciwgU3RyaW5nJiBlcnJvck1lc3NhZ2Up
CitSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQmFzZT4gRGF0YWJhc2VTZXJ2ZXI6OmNyZWF0ZURhdGFi
YXNlKFJlZlB0cjxEYXRhYmFzZUNvbnRleHQ+JiBiYWNrZW5kQ29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNpb25Jbk5l
d0RhdGFiYXNlLCBEYXRhYmFzZUVycm9yJiBlcnJvciwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7
CiAgICAgUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSA9IGFkb3B0UmVmKG5ldyBEYXRhYmFzZShi
YWNrZW5kQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1h
dGVkU2l6ZSkpOwogCiAgICAgaWYgKCFkYXRhYmFzZS0+b3BlbkFuZFZlcmlmeVZlcnNpb24oc2V0
VmVyc2lvbkluTmV3RGF0YWJhc2UsIGVycm9yLCBlcnJvck1lc3NhZ2UpKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5zZXREYXRhYmFzZURldGFpbHMoYmFja2VuZENvbnRleHQtPnNlY3VyaXR5T3JpZ2lu
KCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKLSAgICByZXR1cm4gZGF0YWJh
c2UucmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhYmFzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVNlcnZlci5oCmluZGV4IDJlODA4MWMzYjMyODEwYjVhY2E4ZGFkY2ExNDM3NTc5OTdhODYw
NGYuLmJlNDgxMDgwY2MyMTE1MGI2N2RhOWQ1NTgwZjA0ZmQwOTFiZTU3YmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmgKQEAg
LTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcgZnVsbFBhdGhGb3JE
YXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJ
ZkRvZXNOb3RFeGlzdCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5k
QmFzZT4gb3BlbkRhdGFiYXNlKFJlZlB0cjxEYXRhYmFzZUNvbnRleHQ+JiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNpb25Jbk5l
d0RhdGFiYXNlLCBEYXRhYmFzZUVycm9yJiwgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIE9wZW5BdHRl
bXB0KTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxEYXRhYmFzZUJhY2tlbmRCYXNlPiBvcGVuRGF0YWJh
c2UoUmVmUHRyPERhdGFiYXNlQ29udGV4dD4mLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25l
ZCBsb25nIGVzdGltYXRlZFNpemUsIGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIERhdGFi
YXNlRXJyb3ImLCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgT3BlbkF0dGVtcHQpOwogCiAgICAgdm9p
ZCBjbG9zZUFsbERhdGFiYXNlcygpIG92ZXJyaWRlOwogCkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25z
dCBEYXRhYmFzZUNvbnRleHQqKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxEYXRhYmFzZUJhY2tlbmRCYXNlPiBjcmVhdGVEYXRhYmFzZShSZWZQdHI8RGF0YWJhc2VDb250
ZXh0PiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24s
IGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwg
Ym9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VFcnJvciYsIFN0cmluZyYgZXJy
b3JNZXNzYWdlKTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxEYXRhYmFzZUJhY2tlbmRCYXNlPiBjcmVh
dGVEYXRhYmFzZShSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiYsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUs
IHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFz
ZSwgRGF0YWJhc2VFcnJvciYsIFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0
YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9u
LmNwcAppbmRleCAwZTA3YjJmMjM4OTBiOTgzN2Q3NGRlNjhiN2QzMjFlYzgxYjA4Yzk4Li4zN2Iy
ZWIyODBlMGNlNTczNGExZDBkYWY5OTFmZDUyNDQ3YTJmNWUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhl
ZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBX
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRDcmVhdGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1
ZXN0SUQsIGJvb2wgc3VjY2UKICAgICBpZiAoIXNlcnZlclJlcXVlc3QpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHNlcnZlclJlcXVlc3QtPmNvbXBsZXRlUmVxdWVzdChzdWNjZXNzID8gbnVsbHB0
ciA6IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93
bkVycm9yLCAiVW5rbm93biBlcnJvciBvY2N1cmVkIGNyZWF0aW5nIG9iamVjdCBzdG9yZSIpKTsK
KyAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoc3VjY2VzcyA/IG51bGxwdHIgOiBJ
REJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJv
ciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBjcmVhdGluZyBvYmplY3Qgc3RvcmUiKS5wdHIoKSk7
CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlSW5kZXgoSURCVHJhbnNh
Y3Rpb25CYWNrZW5kJnRyYW5zYWN0aW9uLCBjb25zdCBDcmVhdGVJbmRleE9wZXJhdGlvbiYgb3Bl
cmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4p
PiBjb21wbGV0aW9uQ2FsbGJhY2spCkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBXZWJJREJTZXJ2
ZXJDb25uZWN0aW9uOjpkaWRDcmVhdGVJbmRleCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3Vj
Y2VzcykKICAgICBpZiAoIXNlcnZlclJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNl
cnZlclJlcXVlc3QtPmNvbXBsZXRlUmVxdWVzdChzdWNjZXNzID8gbnVsbHB0ciA6IElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiVW5r
bm93biBlcnJvciBvY2N1cmVkIGNyZWF0aW5nIGluZGV4IikpOworICAgIHNlcnZlclJlcXVlc3Qt
PmNvbXBsZXRlUmVxdWVzdChzdWNjZXNzID8gbnVsbHB0ciA6IElEQkRhdGFiYXNlRXJyb3I6OmNy
ZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiVW5rbm93biBlcnJvciBv
Y2N1cmVkIGNyZWF0aW5nIGluZGV4IikucHRyKCkpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlckNv
bm5lY3Rpb246OmRlbGV0ZUluZGV4KElEQlRyYW5zYWN0aW9uQmFja2VuZCZ0cmFuc2FjdGlvbiwg
Y29uc3QgRGVsZXRlSW5kZXhPcGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lk
IChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQpAQCAt
Mzk0LDcgKzM5NCw3IEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkRGVsZXRlSW5k
ZXgodWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MpCiAgICAgaWYgKCFzZXJ2ZXJSZXF1
ZXN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVl
c3Qoc3VjY2VzcyA/IG51bGxwdHIgOiBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBkZWxldGlu
ZyBpbmRleCIpKTsKKyAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoc3VjY2VzcyA/
IG51bGxwdHIgOiBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBkZWxldGluZyBpbmRleCIpLnB0
cigpKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpnZXQoSURCVHJhbnNhY3Rp
b25CYWNrZW5kJiB0cmFuc2FjdGlvbiwgY29uc3QgR2V0T3BlcmF0aW9uJiBvcGVyYXRpb24sIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgSURCR2V0UmVzdWx0JiwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lk
IFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZFB1dFJlY29yZCh1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IFdlYkNvcmU6OklEQgogICAgIGlmICghc2VydmVyUmVxdWVzdCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc2VydmVyUmVxdWVzdC0+Y29tcGxldGVSZXF1ZXN0KHJlc3VsdEtleS5pc051
bGwgPyBudWxscHRyIDogcmVzdWx0S2V5Lm1heWJlQ3JlYXRlSURCS2V5KCksIGVycm9yQ29kZSA/
IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkgOiBudWxs
cHRyKTsKKyAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3QocmVzdWx0S2V5LmlzTnVs
bCA/IG51bGxwdHIgOiByZXN1bHRLZXkubWF5YmVDcmVhdGVJREJLZXkoKSwgZXJyb3JDb2RlID8g
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKS5wdHIoKSA6
IG51bGxwdHIpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZEdldFJlY29y
ZCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OklEQkdldFJlc3VsdCYgZ2V0UmVz
dWx0LCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpAQCAt
NDY1LDcgKzQ2NSw3IEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkR2V0UmVjb3Jk
KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6SURCCiAgICAgaWYgKCFzZXJ2ZXJS
ZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJl
cXVlc3QoZ2V0UmVzdWx0LCBlcnJvckNvZGUgPyBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoZXJy
b3JDb2RlLCBlcnJvck1lc3NhZ2UpIDogbnVsbHB0cik7CisgICAgc2VydmVyUmVxdWVzdC0+Y29t
cGxldGVSZXF1ZXN0KGdldFJlc3VsdCwgZXJyb3JDb2RlID8gSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKS5wdHIoKSA6IG51bGxwdHIpOwogfQogCiB2b2lk
IFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZE9wZW5DdXJzb3IodWludDY0X3QgcmVxdWVzdElE
LCBpbnQ2NF90IGN1cnNvcklELCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURh
dGEmIHByaW1hcnlLZXksIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgdmFsdWVEYXRhLCB1aW50
MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpAQCAtNDc4LDcgKzQ3
OCw3IEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkT3BlbkN1cnNvcih1aW50NjRf
dCByZXF1ZXN0SUQsIGludDY0X3QgY3Vyc29ySUQsCiAgICAgICAgIHJldHVybjsKIAogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodmFsdWVEYXRh
LmRhdGEoKSwgdmFsdWVEYXRhLnNpemUoKSk7Ci0gICAgc2VydmVyUmVxdWVzdC0+Y29tcGxldGVS
ZXF1ZXN0KGN1cnNvcklELCBrZXkubWF5YmVDcmVhdGVJREJLZXkoKSwgcHJpbWFyeUtleS5tYXli
ZUNyZWF0ZUlEQktleSgpLCB2YWx1ZS5yZWxlYXNlKCksIGVycm9yQ29kZSA/IElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkgOiBudWxscHRyKTsKKyAgICBz
ZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3QoY3Vyc29ySUQsIGtleS5tYXliZUNyZWF0ZUlE
QktleSgpLCBwcmltYXJ5S2V5Lm1heWJlQ3JlYXRlSURCS2V5KCksIHZhbHVlLnJlbGVhc2UoKSwg
ZXJyb3JDb2RlID8gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKGVycm9yQ29kZSwgZXJyb3JNZXNz
YWdlKS5wdHIoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246
OmRpZEFkdmFuY2VDdXJzb3IodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJLZXlEYXRhJiBr
ZXksIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgdmFsdWVEYXRhLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQpAQCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlk
QWR2YW5jZUN1cnNvcih1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQktleURhCiAgICAgICAg
IHJldHVybjsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUodmFsdWVEYXRhLmRhdGEoKSwgdmFsdWVEYXRhLnNpemUoKSk7Ci0gICAgc2VydmVy
UmVxdWVzdC0+Y29tcGxldGVSZXF1ZXN0KGtleS5tYXliZUNyZWF0ZUlEQktleSgpLCBwcmltYXJ5
S2V5Lm1heWJlQ3JlYXRlSURCS2V5KCksIHZhbHVlLnJlbGVhc2UoKSwgZXJyb3JDb2RlID8gSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSA6IG51bGxwdHIp
OworICAgIHNlcnZlclJlcXVlc3QtPmNvbXBsZXRlUmVxdWVzdChrZXkubWF5YmVDcmVhdGVJREJL
ZXkoKSwgcHJpbWFyeUtleS5tYXliZUNyZWF0ZUlEQktleSgpLCB2YWx1ZS5yZWxlYXNlKCksIGVy
cm9yQ29kZSA/IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShlcnJvckNvZGUsIGVycm9yTWVzc2Fn
ZSkucHRyKCkgOiBudWxscHRyKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpk
aWRJdGVyYXRlQ3Vyc29yKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCS2V5RGF0YSYga2V5
LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IHZhbHVlRGF0YSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkKQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZEl0
ZXJhdGVDdXJzb3IodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJLZXlEYQogICAgICAgICBy
ZXR1cm47CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHZhbHVlRGF0YS5kYXRhKCksIHZhbHVlRGF0YS5zaXplKCkpOwotICAgIHNlcnZlclJl
cXVlc3QtPmNvbXBsZXRlUmVxdWVzdChrZXkubWF5YmVDcmVhdGVJREJLZXkoKSwgcHJpbWFyeUtl
eS5tYXliZUNyZWF0ZUlEQktleSgpLCB2YWx1ZS5yZWxlYXNlKCksIGVycm9yQ29kZSA/IElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkgOiBudWxscHRyKTsK
KyAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoa2V5Lm1heWJlQ3JlYXRlSURCS2V5
KCksIHByaW1hcnlLZXkubWF5YmVDcmVhdGVJREJLZXkoKSwgdmFsdWUucmVsZWFzZSgpLCBlcnJv
ckNvZGUgPyBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2Up
LnB0cigpIDogbnVsbHB0cik7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y291
bnQoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwgY29uc3QgQ291bnRPcGVyYXRp
b24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChpbnQ2NF90LCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQpAQCAtNTMzLDcgKzUzMyw3IEBA
IHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkQ291bnQodWludDY0X3QgcmVxdWVzdElE
LCBpbnQ2NF90IGNvdW50LCB1aW50MzJfCiAgICAgaWYgKCFzZXJ2ZXJSZXF1ZXN0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3QoY291bnQsIGVy
cm9yQ29kZSA/IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShlcnJvckNvZGUsIGVycm9yTWVzc2Fn
ZSkgOiBudWxscHRyKTsKKyAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3QoY291bnQs
IGVycm9yQ29kZSA/IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShlcnJvckNvZGUsIGVycm9yTWVz
c2FnZSkucHRyKCkgOiBudWxscHRyKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9u
OjpkZWxldGVSYW5nZShJREJUcmFuc2FjdGlvbkJhY2tlbmQmIHRyYW5zYWN0aW9uLCBjb25zdCBE
ZWxldGVSYW5nZU9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCkBAIC01NjIsNyAr
NTYyLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWREZWxldGVSYW5nZSh1aW50
NjRfdCByZXF1ZXN0SUQsIHVpbnQzMl90IGVycm9yQ28KICAgICBpZiAoIXNlcnZlclJlcXVlc3Qp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHNlcnZlclJlcXVlc3QtPmNvbXBsZXRlUmVxdWVzdChl
cnJvckNvZGUgPyBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoZXJyb3JDb2RlLCBlcnJvck1lc3Nh
Z2UpIDogbnVsbHB0cik7CisgICAgc2VydmVyUmVxdWVzdC0+Y29tcGxldGVSZXF1ZXN0KGVycm9y
Q29kZSA/IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShlcnJvckNvZGUsIGVycm9yTWVzc2FnZSku
cHRyKCkgOiBudWxscHRyKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjbGVh
ck9iamVjdFN0b3JlKElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IENsZWFyT2JqZWN0U3Rv
cmVPcGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPElE
QkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQpAQCAtNTkxLDcgKzU5MSw3IEBA
IHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkQ2xlYXJPYmplY3RTdG9yZSh1aW50NjRf
dCByZXF1ZXN0SUQsIGJvb2wgc3VjY2VzCiAgICAgaWYgKCFzZXJ2ZXJSZXF1ZXN0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoc3VjY2VzcyA/
IG51bGxwdHIgOiBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBjbGVhcmluZyBvYmplY3Qgc3Rv
cmUiKSk7CisgICAgc2VydmVyUmVxdWVzdC0+Y29tcGxldGVSZXF1ZXN0KHN1Y2Nlc3MgPyBudWxs
cHRyIDogSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtu
b3duRXJyb3IsICJVbmtub3duIGVycm9yIG9jY3VyZWQgY2xlYXJpbmcgb2JqZWN0IHN0b3JlIiku
cHRyKCkpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRlbGV0ZU9iamVjdFN0
b3JlKElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0
aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKQEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lkIFdl
YklEQlNlcnZlckNvbm5lY3Rpb246OmRpZERlbGV0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IHJlcXVl
c3RJRCwgYm9vbCBzdWNjZQogICAgIGlmICghc2VydmVyUmVxdWVzdCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgc2VydmVyUmVxdWVzdC0+Y29tcGxldGVSZXF1ZXN0KHN1Y2Nlc3MgPyBudWxscHRy
IDogSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3du
RXJyb3IsICJVbmtub3duIGVycm9yIG9jY3VyZWQgZGVsZXRpbmcgb2JqZWN0IHN0b3JlIikpOwor
ICAgIHNlcnZlclJlcXVlc3QtPmNvbXBsZXRlUmVxdWVzdChzdWNjZXNzID8gbnVsbHB0ciA6IElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9y
LCAiVW5rbm93biBlcnJvciBvY2N1cmVkIGRlbGV0aW5nIG9iamVjdCBzdG9yZSIpLnB0cigpKTsK
IH0KIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjaGFuZ2VEYXRhYmFzZVZlcnNpb24o
SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kOjpWZXJzaW9u
Q2hhbmdlT3BlcmF0aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKQEAgLTY0OSw3ICs2NDks
NyBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZENoYW5nZURhdGFiYXNlVmVyc2lv
bih1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgcwogICAgIGlmICghc2VydmVyUmVxdWVzdCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgc2VydmVyUmVxdWVzdC0+Y29tcGxldGVSZXF1ZXN0KHN1Y2Nl
c3MgPyBudWxscHRyIDogSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsICJVbmtub3duIGVycm9yIG9jY3VyZWQgY2hhbmdpbmcgZGF0YWJh
c2UgdmVyc2lvbiIpKTsKKyAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoc3VjY2Vz
cyA/IG51bGxwdHIgOiBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBjaGFuZ2luZyBkYXRhYmFz
ZSB2ZXJzaW9uIikucHRyKCkpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246Om9w
ZW5DdXJzb3IoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgT3BlbkN1cnNvck9wZXJhdGlv
biYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGludDY0X3QsIFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>