<?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>167289</bug_id>
          
          <creation_ts>2017-01-21 23:19:07 -0800</creation_ts>
          <short_desc>[WebRTC] Implement WebRTC PeerConnection backend based on libwebrtc</short_desc>
          <delta_ts>2017-02-08 11:58:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>167293</dependson>
    
    <dependson>167294</dependson>
    
    <dependson>168010</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1268844</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-01-21 23:19:07 -0800</bug_when>
    <thetext>Let&apos;s implement WebRTC PeerConnection backend based on libwebrtc, behind the flag until we are ready to pass some tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268853</commentid>
    <comment_count>1</comment_count>
      <attachid>299459</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-01-21 23:56:03 -0800</bug_when>
    <thetext>Created attachment 299459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268854</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-21 23:57:07 -0800</bug_when>
    <thetext>Attachment 299459 did not pass style-queue:


ERROR: Source/WebCore/platform/mediastream/mac/RealtimeOutgoingVideoSource.h:55:  is_screencast is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/platform/mediastream/mac/RealtimeOutgoingVideoSource.h:56:  needs_denoising is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCUtils.cpp:58:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:117:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:144:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:104:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:117:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:130:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 8 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268857</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-01-22 00:00:38 -0800</bug_when>
    <thetext>This patch is not functional as is as it is missing WK1/WK2 pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268871</commentid>
    <comment_count>4</comment_count>
      <attachid>299464</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-01-22 00:16:53 -0800</bug_when>
    <thetext>Created attachment 299464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268872</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-22 00:18:19 -0800</bug_when>
    <thetext>Attachment 299464 did not pass style-queue:


ERROR: Source/WebCore/platform/mediastream/mac/RealtimeOutgoingVideoSource.h:55:  is_screencast is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/platform/mediastream/mac/RealtimeOutgoingVideoSource.h:56:  needs_denoising is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCUtils.cpp:59:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:117:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:144:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:104:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:117:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:130:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 8 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268894</commentid>
    <comment_count>6</comment_count>
      <attachid>299469</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-01-22 10:01:15 -0800</bug_when>
    <thetext>Created attachment 299469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270361</commentid>
    <comment_count>7</comment_count>
      <attachid>299859</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-01-26 14:57:03 -0800</bug_when>
    <thetext>Created attachment 299859
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270363</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-26 15:01:15 -0800</bug_when>
    <thetext>Attachment 299859 did not pass style-queue:


ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:107:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:121:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:135:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 3 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270365</commentid>
    <comment_count>9</comment_count>
      <attachid>299859</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-01-26 15:08:45 -0800</bug_when>
    <thetext>Comment on attachment 299859
Patch

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

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:284
&gt; +    RefPtr&lt;LibWebRTCMediaEndpoint&gt; protectedThis(this);
&gt; +    callOnMainThread([protectedThis = WTFMove(protectedThis), stream = WTFMove(stream)] {

Here&apos;s the cool C++14/WTF way of doing things like this.
protectedThis = makeRef(*this)

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:107
&gt; +        explicit CreateSessionDescriptionObserver(LibWebRTCMediaEndpoint &amp;endpoint) : m_endpoint(endpoint) { }

needs to be on more than one line according to stylebot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270410</commentid>
    <comment_count>10</comment_count>
      <attachid>299859</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-01-26 16:07:15 -0800</bug_when>
    <thetext>Comment on attachment 299859
Patch

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

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:13
&gt; + * 3.  Neither the name of Apple Inc. nor the names of

I think we use a 2-clause copyright header by default for new files now.  See Source/WebCore/LICENSE-APPLE

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:64
&gt; +    m_backend = client.createPeerConnection(*this);

This can be in the initializers.

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:316
&gt; +    // ASSERT_NOT_REACHED();

Commented out?  Maybe this and the previous one should be notImplemented();

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:336
&gt; +    default:

Could we not do a default?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270424</commentid>
    <comment_count>11</comment_count>
      <attachid>299859</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-01-26 16:27:12 -0800</bug_when>
    <thetext>Comment on attachment 299859
Patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:13
&gt;&gt; + * 3.  Neither the name of Apple Inc. nor the names of
&gt; 
&gt; I think we use a 2-clause copyright header by default for new files now.  See Source/WebCore/LICENSE-APPLE

I&apos;ll check that

&gt;&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:64
&gt;&gt; +    m_backend = client.createPeerConnection(*this);
&gt; 
&gt; This can be in the initializers.

ok

&gt;&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:316
&gt;&gt; +    // ASSERT_NOT_REACHED();
&gt; 
&gt; Commented out?  Maybe this and the previous one should be notImplemented();

Sure

&gt;&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:336
&gt;&gt; +    default:
&gt; 
&gt; Could we not do a default?

There is a kMax value that we could use instead of default.

&gt;&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:107
&gt;&gt; +        explicit CreateSessionDescriptionObserver(LibWebRTCMediaEndpoint &amp;endpoint) : m_endpoint(endpoint) { }
&gt; 
&gt; needs to be on more than one line according to stylebot.

I prefer this style when there is only one initialiser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270469</commentid>
    <comment_count>12</comment_count>
      <attachid>299890</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-01-26 17:58:55 -0800</bug_when>
    <thetext>Created attachment 299890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270470</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-26 18:01:32 -0800</bug_when>
    <thetext>Attachment 299890 did not pass style-queue:


ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:103:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:117:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:131:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 3 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270473</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-01-26 18:02:06 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Attachment 299890 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR:
&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:103: 
&gt; Should be indented on a separate line, with the colon or comma first on that
&gt; line.  [whitespace/indent] [4]
&gt; ERROR:
&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:117: 
&gt; Should be indented on a separate line, with the colon or comma first on that
&gt; line.  [whitespace/indent] [4]
&gt; ERROR:
&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:131: 
&gt; Should be indented on a separate line, with the colon or comma first on that
&gt; line.  [whitespace/indent] [4]
&gt; Total errors found: 3 in 6 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

Fixing style and license comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270495</commentid>
    <comment_count>15</comment_count>
      <attachid>299890</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-01-26 19:38:29 -0800</bug_when>
    <thetext>Comment on attachment 299890
Patch

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

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:56
&gt; +class LibWebRTCMediaEndpoint final : public RefCounted&lt;LibWebRTCMediaEndpoint&gt;, private webrtc::PeerConnectionObserver {

This should probably be ThreadSafeRefCounted&lt;LibWebRTCMediaEndpoint&gt; since we are ref&apos;ing and deref&apos;ing on different threads.  It hurts performance a bit if we ref and deref a lot because it has to clear the instruction pipeline, but it is necessary if we are ref&apos;ing and deref&apos;ing from different threads.

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:47
&gt; +static std::unique_ptr&lt;PeerConnectionBackend&gt; createLibWebRTCPeerConnectionBackend(RTCPeerConnection&amp; peerConnection)
&gt; +{
&gt; +    return std::unique_ptr&lt;PeerConnectionBackend&gt;(new LibWebRTCPeerConnectionBackend(peerConnection));
&gt; +}

This whole function shouldn&apos;t be necessary.  Just make the constructor public and call std::make_unique

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:53
&gt; +    ASSERT(peerConnection.scriptExecutionContext()-&gt;isDocument());

It would be nice if we could make every scriptExecutionContext have a LibWebRTCProvider.  We would need to make LibWebRTCProvider ThreadSafeRefCounted and pass Ref&apos;s around.  I might do it later.  This is fine for now, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270539</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-01-26 21:22:35 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Comment on attachment 299890 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=299890&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:56
&gt; &gt; +class LibWebRTCMediaEndpoint final : public RefCounted&lt;LibWebRTCMediaEndpoint&gt;, private webrtc::PeerConnectionObserver {
&gt; 
&gt; This should probably be ThreadSafeRefCounted&lt;LibWebRTCMediaEndpoint&gt; since
&gt; we are ref&apos;ing and deref&apos;ing on different threads.  It hurts performance a
&gt; bit if we ref and deref a lot because it has to clear the instruction
&gt; pipeline, but it is necessary if we are ref&apos;ing and deref&apos;ing from different
&gt; threads.

Good point, it is probably the simplest solution.


&gt; &gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:47
&gt; &gt; +static std::unique_ptr&lt;PeerConnectionBackend&gt; createLibWebRTCPeerConnectionBackend(RTCPeerConnection&amp; peerConnection)
&gt; &gt; +{
&gt; &gt; +    return std::unique_ptr&lt;PeerConnectionBackend&gt;(new LibWebRTCPeerConnectionBackend(peerConnection));
&gt; &gt; +}
&gt; 
&gt; This whole function shouldn&apos;t be necessary.  Just make the constructor
&gt; public and call std::make_unique

Will use make_unique.

&gt; &gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:53
&gt; &gt; +    ASSERT(peerConnection.scriptExecutionContext()-&gt;isDocument());
&gt; 
&gt; It would be nice if we could make every scriptExecutionContext have a
&gt; LibWebRTCProvider.  We would need to make LibWebRTCProvider
&gt; ThreadSafeRefCounted and pass Ref&apos;s around.  I might do it later.  This is
&gt; fine for now, though.

There is no planned support for WebRTC in workers so is it really worth it.
Having a RefCounted LibWebRTCProvider would be useful for the mock implementation too though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270548</commentid>
    <comment_count>17</comment_count>
      <attachid>299910</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-01-26 21:34:38 -0800</bug_when>
    <thetext>Created attachment 299910
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270563</commentid>
    <comment_count>18</comment_count>
      <attachid>299910</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-26 22:11:01 -0800</bug_when>
    <thetext>Comment on attachment 299910
Patch for landing

Clearing flags on attachment: 299910

Committed r211255: &lt;http://trac.webkit.org/changeset/211255&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270564</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-26 22:11:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299459</attachid>
            <date>2017-01-21 23:56:03 -0800</date>
            <delta_ts>2017-01-22 00:16:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167289-20170121235407.patch</filename>
            <type>text/plain</type>
            <size>139301</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzgzM2RiZTZhZTg0ZmExMWRhNDhkMzk1YmZiMzIxZDY5ZDExYTcyLi4xOGYyZjBmODMzMGU4NTk2
ZjE1MjUwYmJlODFmNDJjMzc4MWRiN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNy0wMS0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubmZAZ21haWwuY29t
PgorCisgICAgICAgIFtXZWJSVENdIEltcGxlbWVudCBXZWJSVEMgUGVlckNvbm5lY3Rpb24gYmFj
a2VuZCBiYXNlZCBvbiBsaWJ3ZWJydGMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NzI4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6
CisKIDIwMTctMDEtMjEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAK
ICAgICAgICAgW0pTQ10gZXhwb3J0IEpTQzo6aW1wb3J0TW9kdWxlIEFQSSBmb3IgV2ViQ29yZSBk
eW5hbWljIGltcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgxNDA5YmZlOWU0M2FlOTIwZDhjNDFkODAxMjQz
ZGZlNmJhYjY3ZWUuLjYxZDA5Yzk5MWU0OGI2NzFlZjRkMTczYzI4NjI0OWVmNmRmMDY2Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMTYgQEAKKzIwMTctMDEtMjEgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5mQGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViUlRDXSBJbXBsZW1lbnQgV2ViUlRDIFBl
ZXJDb25uZWN0aW9uIGJhY2tlbmQgYmFzZWQgb24gbGlid2VicnRjCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjcyODkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2luZyBhbiBpbml0aWFsIGlt
cGxlbWVudGF0aW9uIG9mIFdlYlJUQyBwZWVyIGNvbm5lY3Rpb24gYmFja2VuZCBiYXNlZCBvbiBM
aWJXZWJSVEMuCisgICAgICAgIFRoaXMgaXMgZG9uZSBiZWhpbmQgYSBjb21waWxhdGlvbiBmbGFn
IHdoaWNoIGlzIG9mZiBieSBkZWZhdWx0LCB1bnRpbCB0aGUgaW1wbGVtZW50YXRpb24gaXMgcmVh
ZHkuCisKKyAgICAgICAgVGhlIGJhY2tlbmQgaW1wbGVtZW50cyB0aGUgUGVlckNvbm5lY3Rpb25C
YWNrZW5kIEFQSS4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIHNwbGl0IGludG8gTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kIHdoaWNoIGNvbnRhaW5zIG1vc3RseSBnZW5lcmlj
IGNvZGUgYW5kIHBhc3NlcyB0aGUgcmVhbCB3b3JrIHRvIExpYldlYlJUQ01lZGlhRW5kcG9pbnQu
CisgICAgICAgIFRoZSBsYXR0ZXIgY2xhc3MgaXMgaW1wbGVtZW50aW5nIHRoZSBBUEkgdXNpbmcg
TGliV2ViUlRDLgorCisgICAgICAgIEludHJvZHVjaW5nIGNsYXNzZXMgdG8gc3VwcG9ydCBpbmNv
bWluZyBhbmQgb3V0Z29pbmcgdmlkZW8gc3RyZWFtcworCisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvV2Vi
Q29yZS54Y2NvbmZpZzoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpMaWJXZWJSVENNZWRpYUVuZHBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnNlc3Npb25EZXNjcmlwdGlvblR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6ZG9TZXRMb2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvU2V0UmVtb3RlRGVzY3JpcHRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUGVuZGluZ0ljZUNhbmRp
ZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9DcmVh
dGVPZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb0Ny
ZWF0ZUFuc3dlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpn
ZXRTdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpTdGF0
c0NvbGxlY3Rvcjo6U3RhdHNDb2xsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6U3RhdHNDb2xsZWN0b3I6Ok9uU3RhdHNEZWxpdmVyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2lnbmFsaW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6T25TaWduYWxpbmdDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6dHJh
Y2tJZCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNZWRpYVN0cmVhbVRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkFkZFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPblJlbW92ZVN0cmVhbSk6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGREYXRhQ2hhbm5lbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkRhdGFDaGFubmVsKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnN0b3ApOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25SZW5lZ290aWF0aW9uTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OmljZUNvbm5lY3Rpb25TdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkljZUNvbm5lY3Rpb25DaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25JY2VHYXRoZXJpbmdDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25JY2VDYW5k
aWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25JY2VD
YW5kaWRhdGVzUmVtb3ZlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldExvY2FsU2Vz
c2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OnNldExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldFJlbW90ZVNlc3Npb25EZXNjcmlw
dGlvblN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50
OjpzZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaDogQWRkZWQuCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29uZmlndXJhdGlvbkZyb21NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNl
dENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpnZXRTdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmRvU2V0TG9jYWxEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvU2V0UmVtb3RlRGVzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb0Ny
ZWF0ZU9mZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZDo6ZG9DcmVhdGVBbnN3ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpkb1N0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpkb0FkZEljZUNhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om1hcmtBc05lZWRpbmdOZWdvdGlhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNy
ZWF0ZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZDo6Y3JlYXRlRGF0YUNoYW5uZWxIYW5kbGVyKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDogQWRk
ZWQuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHBsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1TdHJhdGVnaWVzOjpydGNTdHJhdGVneSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01hY3Jvcy5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZE5vdEJlQ2FsbGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YnJ0Y0F1ZGlvTW9kdWxlOjpXZWJydGNBdWRpb01vZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJydGNBdWRpb01vZHVsZTo6UmVnaXN0ZXJBdWRpb0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYnJ0Y0F1ZGlvTW9kdWxlOjpPbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
cnRjQXVkaW9Nb2R1bGU6OlN0YXJ0UGxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJydGNB
dWRpb01vZHVsZTo6U3RvcFBsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6V2VicnRjQXVkaW9N
b2R1bGU6OlN0YXJ0UGxheW91dE9uQXVkaW9UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
cnRjQXVkaW9Nb2R1bGU6OlBvbGxGcm9tU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRp
Y0ZhY3RvcnlBbmRUaHJlYWRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtUaHJlYWRNZXNz
YWdlRGF0YTo6TmV0d29ya1RocmVhZE1lc3NhZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHM6Ok9uTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OmluaXRp
YWxpemVQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzKToKKyAgICAgICAgKFdlYkNvcmU6
OmluaXRpYWxpemVMaWJXZWJSVENJbnRlcm5hbHNXaXRoU29ja2V0U2VydmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OnBlZXJDb25uZWN0aW9uRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1V0aWxzLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9SVENTdHJhdGVneS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OlJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6T25GcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnByb2Nlc3NOZXdTYW1wbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZTo6Y3VycmVudEZyYW1lSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmNhcGFiaWxp
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnNl
dHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6
c3VwcG9ydGVkQ29uc3RyYWludHMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpSZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlOjpHZXRTdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2U6OkFkZE9yVXBkYXRlU2luayk6CisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OlJlbW92ZVNpbmspOgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpzb3VyY2VIYXNNb3JlTWVkaWFEYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlLmg6IEFkZGVkLgorCiAyMDE3LTAxLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dENoYW5nZWQoKSBi
eXBhc3NlcyBBWExpdmVSZWdpb25DaGFuZ2VkIG5vdGlmaWNhdGlvbiBjb2FsZXNjaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKaW5kZXggMDA5ZDhiODMzMjM5ZGYxYTdlM2EzMTA3YmVkMGM3MzU3YTBmNjYxOC4u
ZTFkMDU5MzlhMTk0ZDY0ZDMxOWUxNTJiZDJiMzg0ZGI4NjE3OWEzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTAxLTIxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uZkBn
bWFpbC5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gSW1wbGVtZW50IFdlYlJUQyBQZWVyQ29ubmVj
dGlvbiBiYWNrZW5kIGJhc2VkIG9uIGxpYndlYnJ0YworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3Mjg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZzoKKwogMjAxNy0wMS0yMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgLVtXZWJGcmFtZSBzZW5kT3JpZW50YXRpb25DaGFuZ2VF
dmVudDpdIHdoaWNoIGlzIHVudXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDNiYWM3YTAxMzJkMTlkMjI3YjY1
MWVjYWYzYTI5YTUxOWQ5YWYyMzQuLmY2Y2IzNDRhOGY5YTU2YWQwNjg1OTVjN2ExNDUxNDg1NTUz
NWJiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNy0wMS0yMSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubmZAZ21haWwuY29tPgorCisgICAgICAgIFtXZWJSVENdIEltcGxlbWVudCBX
ZWJSVEMgUGVlckNvbm5lY3Rpb24gYmFja2VuZCBiYXNlZCBvbiBsaWJ3ZWJydGMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzI4OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTctMDEtMjEgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIyMTEwMTIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggMmQwNDNhMDZlNTRkMWNk
ZGU0Y2VhODUwYzYyMzg4ODlkNzNjMDkxZi4uZWVjYzZiNDIyOWJmNWViMTBiOWY4MjEyN2M5ZDY3
OTk2ZWVlYmExMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTY1LDYgKzE2NSw3IEBA
IEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTID0gRU5BQkxFX1NQRUVDSF9TWU5USEVTSVM7CiBFTkFC
TEVfU1VCVExFX0NSWVBUTyA9IEVOQUJMRV9TVUJUTEVfQ1JZUFRPOwogRU5BQkxFX1NWR19GT05U
UyA9IEVOQUJMRV9TVkdfRk9OVFM7CiBFTkFCTEVfV0VCX1JUQyA9IEVOQUJMRV9XRUJfUlRDOwor
RU5BQkxFX0xJQldFQlJUQ19FTkRQT0lOVCA9IEVOQUJMRV9MSUJXRUJSVENfRU5EUE9JTlQ7CiBF
TkFCTEVfV1JJVEFCTEVfU1RSRUFNX0FQSSA9IEVOQUJMRV9XUklUQUJMRV9TVFJFQU1fQVBJOwog
CiBFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04gPSBFTkFCTEVfVEVMRVBIT05FX05V
TUJFUl9ERVRFQ1RJT047CkBAIC0yMTYsNCArMjE3LDQgQEAgRU5BQkxFX1ZBUklBVElPTl9GT05U
U19JRl9OT1RfID0gJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTX0lGX05PVF9OTyk7CiBFTkFCTEVf
VkFSSUFUSU9OX0ZPTlRTX0lGX05PVF9OTyA9IEVOQUJMRV9WQVJJQVRJT05fRk9OVFM7CiBFTkFC
TEVfVkFSSUFUSU9OX0ZPTlRTX0lGX05PVF9ZRVMgPSA7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQo
RU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChF
TkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BUFBMRV9QQVkp
ICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVO
QUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9D
QU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NT
X0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxF
X0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJM
RV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAk
KEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9D
U1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxF
X0NTUzNfVEVYVCkgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9T
Q0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFf
VFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RBVEFMSVNU
X0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRU5DUllQVEVE
X01FRElBKSAkKEVOQUJMRV9GRVRDSF9BUEkpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChF
TkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVMTFND
UkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0FNRVBBRCkg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5E
RVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1Ip
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9J
TkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lO
UFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9XRUVLKSAkKEVOQUJMRV9JTlRFUlNFQ1RJT05fT0JTRVJWRVIpICQoRU5BQkxFX0lOVEwp
ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykg
JChFTkFCTEVfSklUKSAkKEVOQUJMRV9LRVlCT0FSRF9LRVlfQVRUUklCVVRFKSAkKEVOQUJMRV9L
RVlCT0FSRF9DT0RFX0FUVFJJQlVURSkgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklY
RVMpICQoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0xFR0FDWV9OT1RJ
RklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRU
RVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZF
TlRTKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01F
RElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVE
SUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJF
QU0pICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VT
RV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJM
RV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFC
TEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9YSU1J
VFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAk
KEVOQUJMRV9SRUFEQUJMRV9TVFJFQU1fQVBJKSAkKEVOQUJMRV9SRUFEQUJMRV9CWVRFX1NUUkVB
TV9BUEkpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NP
TVBMRVRFKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SRVNPVVJD
RV9VU0FHRSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJP
TFMpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQo
RU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQo
RU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9U
T1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WQVJJ
QVRJT05fRk9OVFMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSAkKEVOQUJMRV9W
SURFT19UUkFDSykgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEp
ICQoRU5BQkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dF
Ql9SRVBMQVkpICQoRU5BQkxFX1dFQl9SVEMpICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJM
RV9XRUJfVElNSU5HKSAkKEVOQUJMRV9VU0VSX1RJTUlORykgJChFTkFCTEVfV0VCQVNTRU1CTFkp
ICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkgJChFTkFCTEVfV1JJVEFCTEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfWFNMVCk7
CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElO
RykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5B
QkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9D
QU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NB
R0lORykgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTU19BTklNQVRJT05T
X0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NT
X0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NT
U19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9D
U1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19T
Q1JPTExfU05BUCkgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19U
UkFJTElOR19XT1JEKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NVUlNPUl9WSVNJQklM
SVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9T
VVBQT1JUKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9EQVRBQ1VFX1ZB
TFVFKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJ
T04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRkVUQ0hfQVBJKSAkKEVOQUJM
RV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZU
TF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FU
RUQpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09O
REFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVf
SU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxF
X0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
VElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09C
U0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5B
QkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZ
X0FUVFJJQlVURSkgJChFTkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xF
R0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElB
KSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9Q
UkVGSVhFUykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQo
RU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJ
QV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElB
X1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElD
UykgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJM
RV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1Jf
Q09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxF
X05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJf
TE9DSykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9M
SVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVBREFCTEVfU1RSRUFNX0FQSSkgJChFTkFC
TEVfUkVBREFCTEVfQllURV9TVFJFQU1fQVBJKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAk
KEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVURSkgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9R
VUVSWSkgJChFTkFCTEVfUkVTT1VSQ0VfVVNBR0UpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAk
KEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVO
QUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9O
RV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RP
VUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VM
RUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5U
QVRJT05fTU9ERSkgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJM
RV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJfQU5JTUFUSU9OUykgJChFTkFCTEVf
V0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9MSUJXRUJSVENfRU5EUE9J
TlQpICQoRU5BQkxFX1dFQl9SVEMpICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJf
VElNSU5HKSAkKEVOQUJMRV9VU0VSX1RJTUlORykgJChFTkFCTEVfV0VCQVNTRU1CTFkpICQoRU5B
QkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgJChFTkFCTEVfV1JJVEFCTEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfWFNMVCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCmluZGV4IDJkMDQzYTA2ZTU0ZDFjZGRlNGNlYTg1MGM2MjM4ODg5ZDczYzA5MWYuLmVlY2M2
YjQyMjliZjVlYjEwYjlmODIxMjdjOWQ2Nzk5NmVlZWJhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xNjUs
NiArMTY1LDcgQEAgRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMgPSBFTkFCTEVfU1BFRUNIX1NZTlRI
RVNJUzsKIEVOQUJMRV9TVUJUTEVfQ1JZUFRPID0gRU5BQkxFX1NVQlRMRV9DUllQVE87CiBFTkFC
TEVfU1ZHX0ZPTlRTID0gRU5BQkxFX1NWR19GT05UUzsKIEVOQUJMRV9XRUJfUlRDID0gRU5BQkxF
X1dFQl9SVEM7CitFTkFCTEVfTElCV0VCUlRDX0VORFBPSU5UID0gRU5BQkxFX0xJQldFQlJUQ19F
TkRQT0lOVDsKIEVOQUJMRV9XUklUQUJMRV9TVFJFQU1fQVBJID0gRU5BQkxFX1dSSVRBQkxFX1NU
UkVBTV9BUEk7CiAKIEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTiA9IEVOQUJMRV9U
RUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTjsKQEAgLTIxNiw0ICsyMTcsNCBAQCBFTkFCTEVfVkFS
SUFUSU9OX0ZPTlRTX0lGX05PVF8gPSAkKEVOQUJMRV9WQVJJQVRJT05fRk9OVFNfSUZfTk9UX05P
KTsKIEVOQUJMRV9WQVJJQVRJT05fRk9OVFNfSUZfTk9UX05PID0gRU5BQkxFX1ZBUklBVElPTl9G
T05UUzsKIEVOQUJMRV9WQVJJQVRJT05fRk9OVFNfSUZfTk9UX1lFUyA9IDsKIAotRkVBVFVSRV9E
RUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRf
Q0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxF
X0FQUExFX1BBWSkgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQ
VElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgp
ICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5B
QkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAk
KEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElO
RykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlP
VVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JF
U09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVAp
ICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09S
RCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFC
TEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChF
TkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFC
TEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZFVENIX0FQSSkgJChFTkFCTEVfRklMVEVSU19M
RVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVExfSklUKSAkKEVO
QUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJM
RV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAk
KEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lOREVYRURfREFU
QUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRf
VFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNFUlZFUikgJChF
TkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVE9V
Q0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUp
ICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZF
TkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVf
TEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQo
RU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQUNf
R0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ0FQVFVSRSkg
JChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TRVNTSU9OKSAk
KEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxF
X01FRElBX1NUUkVBTSkgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQo
RU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJ
TFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJRklDQVRJ
T05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5B
QkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFC
TEVfUVVPVEEpICQoRU5BQkxFX1JFQURBQkxFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1JFQURBQkxF
X0JZVEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVR
VUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5B
QkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfU0VS
VklDRV9DT05UUk9MUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1VCVExF
X0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RF
VEVDVElPTikgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMp
ICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQo
RU5BQkxFX1ZBUklBVElPTl9GT05UUykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUp
ICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklFV19NT0RF
X0NTU19NRURJQSkgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dFQl9BVURJTykg
JChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVfV0VCX1NPQ0tF
VFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1VTRVJfVElNSU5HKSAkKEVOQUJMRV9X
RUJBU1NFTUJMWSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQkdMMikgJChFTkFCTEVfV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9XUklUQUJMRV9TVFJFQU1fQVBJKSAkKEVO
QUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQo
RU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZM
T1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BUFBMRV9QQVkpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxF
TUVOVCkgJChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcp
ICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NI
QU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NT
X0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAk
KEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikg
JChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChF
TkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChF
TkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1VS
U09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVf
REFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxF
X0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RFVklD
RV9PUklFTlRBVElPTikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9GRVRDSF9B
UEkpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykg
JChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQ
QURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQo
RU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJT
KSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BP
UE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFU
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxF
X0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9JTlRF
UlNFQ1RJT05fT0JTRVJWRVIpICQoRU5BQkxFX0lOVEwpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VW
RU5UUykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9L
RVlCT0FSRF9LRVlfQVRUUklCVVRFKSAkKEVOQUJMRV9LRVlCT0FSRF9DT0RFX0FUVFJJQlVURSkg
JChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9FTkNS
WVBURURfTUVESUEpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdB
Q1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19Q
UkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9NQVRITUwpICQo
RU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChF
TkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJ
QV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5BQkxFX01FVEVSX0VMRU1F
TlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxF
X05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5D
WSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFC
TEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJM
SUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRUFEQUJMRV9TVFJFQU1f
QVBJKSAkKEVOQUJMRV9SRUFEQUJMRV9CWVRFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1JFTU9URV9J
TlNQRUNUT1IpICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRFKSAkKEVOQUJMRV9SRVNPTFVU
SU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SRVNPVVJDRV9VU0FHRSkgJChFTkFCTEVfUlVCQkVS
X0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX1NQRUVDSF9TWU5U
SEVTSVMpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFC
TEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykg
JChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5B
QkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WQVJJQVRJT05fRk9OVFMpICQoRU5BQkxFX1ZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklE
RU8pICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQl9BTklNQVRJT05T
KSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX0xJQldF
QlJUQ19FTkRQT0lOVCkgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQo
RU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1VTRVJfVElNSU5HKSAkKEVOQUJMRV9XRUJBU1NF
TUJMWSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQkdMMikgJChFTkFCTEVfV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9XUklUQUJMRV9TVFJFQU1fQVBJKSAkKEVOQUJMRV9Y
U0xUKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUu
eGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmln
CmluZGV4IDZiMTlhY2Y2NDVjZDg5OTZkNjAzYjRhMDAxNDRlYWI4NmRjOGI0MzcuLjc3NGUwYTkw
N2NkMTM5MGFjNTQ2OWVlOTAxYmQ0Mzg2ZTVjMWYxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZwpAQCAtNDYsNyArNDYsNyBAQCBPVEhFUl9D
UExVU1BMVVNGTEFHUyA9ICQoT1RIRVJfQ0ZMQUdTKTsKIAogV0VCS0lUQURESVRJT05TX0hFQURF
Ul9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUv
V2ViS2l0QWRkaXRpb25zICQoU0RLUk9PVCkvdXNyL2xvY2FsL2luY2x1ZGUvV2ViS2l0QWRkaXRp
b25zOwogCi1IRUFERVJfU0VBUkNIX1BBVEhTID0gRm9yd2FyZGluZ0hlYWRlcnMgaWN1IC91c3Iv
aW5jbHVkZS9saWJ4c2x0IC91c3IvaW5jbHVkZS9saWJ4bWwyICIkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZSIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9j
YWwvaW5jbHVkZSIgJChXRUJLSVRBRERJVElPTlNfSEVBREVSX1NFQVJDSF9QQVRIUykgJChIRUFE
RVJfU0VBUkNIX1BBVEhTKTsKK0hFQURFUl9TRUFSQ0hfUEFUSFMgPSBGb3J3YXJkaW5nSGVhZGVy
cyBpY3UgL3Vzci9pbmNsdWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnhtbDIgIiQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlIiAiJChCVUlMVF9QUk9EVUNUU19E
SVIpL3Vzci9sb2NhbC9pbmNsdWRlIiAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BB
VEhTKSAkKFNSQ1JPT1QpLy4uL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZSAkKEhFQURFUl9T
RUFSQ0hfUEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwogSU5TVEFMTF9QQVRI
ID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzOwogSU5TVEFMTF9QQVRI
W3Nkaz1tYWNvc3gqXSA9ICQoV0VCQ09SRV9GUkFNRVdPUktTX0RJUik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRp
YUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkMTNmNjFjYzMwMjc5
MWYwZDlkNTg0MTVjZjNiYzAzZDQyN2ZlMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50
LmNwcApAQCAtMCwwICsxLDQxNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8g
YmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENNZWRpYUVu
ZHBvaW50LmgiCisKKyNpZiBFTkFCTEUoTElCV0VCUlRDX0VORFBPSU5UKQorCisjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCIKKyNpbmNsdWRlICJSVENJY2VDYW5kaWRhdGUuaCIKKyNpbmNsdWRlICJSVENQZWVy
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oIgorI2luY2x1
ZGUgIlJUQ1N0cmF0ZWd5LmgiCisjaW5jbHVkZSAiUlRDVHJhY2tFdmVudC5oIgorI2luY2x1ZGUg
IlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6TGli
V2ViUlRDTWVkaWFFbmRwb2ludChMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQmIHBlZXJD
b25uZWN0aW9uKQorICAgIDogbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQocGVlckNvbm5lY3Rpb24p
CisgICAgLCBtX2NyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyKCp0aGlzKQorICAgICwg
bV9zZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyKCp0aGlzKQorICAgICwgbV9zZXRS
ZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcigqdGhpcykKK3sKKyAgICBtX2JhY2tlbmQg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cnRjU3RyYXRlZ3koKS5jcmVhdGVQZWVyQ29ubmVjdGlv
bigqdGhpcyk7CisgICAgQVNTRVJUKG1fYmFja2VuZCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgY29u
c3QgY2hhciogc2Vzc2lvbkRlc2NyaXB0aW9uVHlwZShSVENTZXNzaW9uRGVzY3JpcHRpb246OlNk
cFR5cGUgc2RwVHlwZSkKK3sKKyAgICBzd2l0Y2ggKHNkcFR5cGUpIHsKKyAgICBjYXNlIFJUQ1Nl
c3Npb25EZXNjcmlwdGlvbjo6U2RwVHlwZTo6T2ZmZXI6CisgICAgICAgIHJldHVybiAib2ZmZXIi
OworICAgIGNhc2UgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpQcmFuc3dlcjoKKyAg
ICAgICAgcmV0dXJuICJwcmFuc3dlciI7CisgICAgY2FzZSBSVENTZXNzaW9uRGVzY3JpcHRpb246
OlNkcFR5cGU6OkFuc3dlcjoKKyAgICAgICAgcmV0dXJuICJhbnN3ZXIiOworICAgIGNhc2UgUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpSb2xsYmFjazoKKyAgICAgICAgcmV0dXJuICJy
b2xsYmFjayI7CisgICAgfQorfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvU2V0
TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQorewor
ICAgIHdlYnJ0Yzo6U2RwUGFyc2VFcnJvciBlcnJvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2Vi
cnRjOjpTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U+IHNlc3Npb25EZXNjcmlwdGlvbih3ZWJy
dGM6OkNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb25UeXBlKGRlc2Ny
aXB0aW9uLnR5cGUoKSksIGRlc2NyaXB0aW9uLnNkcCgpLnV0ZjgoKS5kYXRhKCksICZlcnJvcikp
OworCisgICAgaWYgKCFzZXNzaW9uRGVzY3JpcHRpb24pIHsKKyAgICAgICAgU3RyaW5nIGVycm9y
TWVzc2FnZShlcnJvci5kZXNjcmlwdGlvbi5kYXRhKCksIGVycm9yLmRlc2NyaXB0aW9uLnNpemUo
KSk7CisgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNldExvY2FsRGVzY3JpcHRpb25G
YWlsZWQoRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIFdURk1vdmUoZXJyb3JNZXNzYWdlKSB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2JhY2tlbmQtPlNldExvY2FsRGVzY3Jp
cHRpb24oJm1fc2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciwgc2Vzc2lvbkRlc2Ny
aXB0aW9uLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9T
ZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQor
eworICAgIHdlYnJ0Yzo6U2RwUGFyc2VFcnJvciBlcnJvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
d2VicnRjOjpTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U+IHNlc3Npb25EZXNjcmlwdGlvbih3
ZWJydGM6OkNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb25UeXBlKGRl
c2NyaXB0aW9uLnR5cGUoKSksIGRlc2NyaXB0aW9uLnNkcCgpLnV0ZjgoKS5kYXRhKCksICZlcnJv
cikpOworICAgIGlmICghc2Vzc2lvbkRlc2NyaXB0aW9uKSB7CisgICAgICAgIFN0cmluZyBlcnJv
ck1lc3NhZ2UoZXJyb3IuZGVzY3JpcHRpb24uZGF0YSgpLCBlcnJvci5kZXNjcmlwdGlvbi5zaXpl
KCkpOworICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5zZXRSZW1vdGVEZXNjcmlwdGlv
bkZhaWxlZChFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgV1RGTW92ZShlcnJvck1lc3NhZ2Up
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fYmFja2VuZC0+U2V0UmVtb3RlRGVz
Y3JpcHRpb24oJm1fc2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIsIHNlc3Npb25E
ZXNjcmlwdGlvbi5yZWxlYXNlKCkpOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmFkZFBlbmRpbmdJY2VDYW5kaWRhdGVzKCkKK3sKKyAgICB3aGlsZSAobV9wZW5kaW5nQ2FuZGlk
YXRlcy5zaXplKCkpCisgICAgICAgIG1fYmFja2VuZC0+QWRkSWNlQ2FuZGlkYXRlKG1fcGVuZGlu
Z0NhbmRpZGF0ZXMudGFrZUxhc3QoKS5yZWxlYXNlKCkpOworfQorCit2b2lkIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmRvQ3JlYXRlT2ZmZXIoKQoreworICAgIG1faXNJbml0aWF0b3IgPSB0cnVl
OworICAgIGF1dG8mIHNlbmRlcnMgPSBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9u
KCkuZ2V0U2VuZGVycygpOworICAgIGlmIChzZW5kZXJzLnNpemUoKSkgeworICAgICAgICAvLyBG
SVhNRTogV2Ugb25seSBzdXBwb3J0IG9uZSBzdHJlYW0gZm9yIHRoZSBtb21lbnQuCisgICAgICAg
IGF1dG8gc3RyZWFtID0gcGVlckNvbm5lY3Rpb25GYWN0b3J5KCkuQ3JlYXRlTG9jYWxNZWRpYVN0
cmVhbSgiYXZfbGFiZWwiKTsKKyAgICAgICAgZm9yIChSVENSdHBTZW5kZXImIHNlbmRlciA6IHNl
bmRlcnMpIHsKKyAgICAgICAgICAgIGF1dG8qIHRyYWNrID0gc2VuZGVyLnRyYWNrKCk7CisgICAg
ICAgICAgICBpZiAodHJhY2spIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2VuZGVyLm1lZGlh
U3RyZWFtSWRzKCkuc2l6ZSgpID09IDEpOworICAgICAgICAgICAgICAgIGF1dG8mIHNvdXJjZSA9
IHRyYWNrLT5zb3VyY2UoKTsKKyAgICAgICAgICAgICAgICBpZiAoc291cmNlLnR5cGUoKSA9PSBS
ZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykgeworICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogQWRkIHN1cHBvcnQgZm9yIG91dGdvaW5nIGF1ZGlvIHRyYWNrcy4KKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtX3ZpZGVvU291cmNlcy5hcHBlbmQoUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpjcmVhdGUoc291cmNlKSk7CisgICAgICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgdXNpbmcgdHJhY2stPmxhYmVsKCksIGJ1dCBp
dCBtYXkgY29udGFpbiBzcGFjZXMgd2hpY2ggbWF5IGNhdXNlIGlzc3Vlcy4KKyAgICAgICAgICAg
ICAgICAgICAgLy8gV2UgdGVtcG9yYXJpbHkgdXNlICJ2aWRlb190cmFjayIgaW5zdGVhZC4KKyAg
ICAgICAgICAgICAgICAgICAgc3RyZWFtLT5BZGRUcmFjayhwZWVyQ29ubmVjdGlvbkZhY3Rvcnko
KS5DcmVhdGVWaWRlb1RyYWNrKCJ2aWRlb190cmFjayIsIG1fdmlkZW9Tb3VyY2VzLmxhc3QoKS5w
dHIoKSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBtX2JhY2tlbmQtPkFkZFN0cmVhbShzdHJlYW0pOworICAgIH0KKyAgICBtX2JhY2tlbmQt
PkNyZWF0ZU9mZmVyKCZtX2NyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyLCBudWxscHRy
KTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb0NyZWF0ZUFuc3dlcigpCit7
CisgICAgbV9pc0luaXRpYXRvciA9IGZhbHNlOworICAgICAgICBhdXRvJiBzZW5kZXJzID0gbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLmdldFNlbmRlcnMoKTsKKyAgICBpZiAo
c2VuZGVycy5zaXplKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIG9ubHkgc3VwcG9ydCBvbmUg
c3RyZWFtIGZvciB0aGUgbW9tZW50LgorICAgICAgICBhdXRvIHN0cmVhbSA9IHBlZXJDb25uZWN0
aW9uRmFjdG9yeSgpLkNyZWF0ZUxvY2FsTWVkaWFTdHJlYW0oImF2X2xhYmVsIik7CisgICAgICAg
IGZvciAoUlRDUnRwU2VuZGVyJiBzZW5kZXIgOiBzZW5kZXJzKSB7CisgICAgICAgICAgICBhdXRv
KiB0cmFjayA9IHNlbmRlci50cmFjaygpOworICAgICAgICAgICAgaWYgKHRyYWNrKSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKHNlbmRlci5tZWRpYVN0cmVhbUlkcygpLnNpemUoKSA9PSAxKTsK
KyAgICAgICAgICAgICAgICBhdXRvJiBzb3VyY2UgPSB0cmFjay0+c291cmNlKCk7CisgICAgICAg
ICAgICAgICAgaWYgKHNvdXJjZS50eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8p
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdXRnb2lu
ZyBhdWRpbyB0cmFja3MuCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgbV92aWRlb1NvdXJjZXMuYXBwZW5kKFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6
Y3JlYXRlKHNvdXJjZSkpOworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGJlIHVzaW5nIHRyYWNrLT5sYWJlbCgpLCBidXQgaXQgbWF5IGNvbnRhaW4gc3BhY2VzIHdoaWNo
IG1heSBjYXVzZSBpc3N1ZXMuCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIHRlbXBvcmFyaWx5
IHVzZSAidmlkZW9fdHJhY2siIGluc3RlYWQuCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbS0+
QWRkVHJhY2socGVlckNvbm5lY3Rpb25GYWN0b3J5KCkuQ3JlYXRlVmlkZW9UcmFjaygidmlkZW9f
dHJhY2siLCBtX3ZpZGVvU291cmNlcy5sYXN0KCkucHRyKCkpKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbV9iYWNrZW5kLT5BZGRTdHJlYW0o
c3RyZWFtKTsKKyAgICB9CisgICAgbV9iYWNrZW5kLT5DcmVhdGVBbnN3ZXIoJm1fY3JlYXRlU2Vz
c2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIsIG51bGxwdHIpOworfQorCit2b2lkIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrLCBQZWVyQ29ubmVj
dGlvbjo6U3RhdHNQcm9taXNlJiYgcHJvbWlzZSkKK3sKKyAgICBhdXRvIGNvbGxlY3RvciA9IFN0
YXRzQ29sbGVjdG9yOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIHRyYWNrKTsKKyAg
ICBtX2JhY2tlbmQtPkdldFN0YXRzKGNvbGxlY3Rvci5wdHIoKSk7CisgICAgbV9zdGF0c0NvbGxl
Y3RvcnMuYXBwZW5kKFdURk1vdmUoY29sbGVjdG9yKSk7Cit9CisKK0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6OlN0YXRzQ29sbGVjdG9yOjpTdGF0c0NvbGxlY3RvcihMaWJXZWJSVENNZWRpYUVuZHBv
aW50JiBlbmRwb2ludCwgUGVlckNvbm5lY3Rpb246OlN0YXRzUHJvbWlzZSYmIHByb21pc2UsIE1l
ZGlhU3RyZWFtVHJhY2sqIHRyYWNrKQorICAgIDogbV9lbmRwb2ludChlbmRwb2ludCkKKyAgICAs
IG1fcHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKQoreworICAgIGlmICh0cmFjaykKKyAgICAgICAg
bV9pZCA9IHRyYWNrLT5pZCgpOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OlN0
YXRzQ29sbGVjdG9yOjpPblN0YXRzRGVsaXZlcmVkKGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxj
b25zdCB3ZWJydGM6OlJUQ1N0YXRzUmVwb3J0PiYgcmVwb3J0KQoreworICAgIFJlZjxMaWJXZWJS
VENNZWRpYUVuZHBvaW50PiBwcm90ZWN0b3IgPSBtX2VuZHBvaW50OworICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHJlcG9ydCwgcHJvdGVjdG9yID0gV1RGTW92ZShwcm90ZWN0b3IpXSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZnVsZmlsbGluZyBvZiB0aGUgcHJvbWlzZSBiYXNl
ZCBvbiByZXBvcnQgaW5mb3JtYXRpb24uCisgICAgICAgIG1fcHJvbWlzZS5yZWplY3QoTk9UX1NV
UFBPUlRFRF9FUlIsICJOb3QgaW1wbGVtZW50ZWQgeWV0Iik7CisgICAgICAgIG1fZW5kcG9pbnQu
bV9zdGF0c0NvbGxlY3RvcnMucmVtb3ZlRmlyc3RNYXRjaGluZyhbdGhpc10oY29uc3QgUmVmPFN0
YXRzQ29sbGVjdG9yPiYgY29sbGVjdG9yKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcyA9PSBj
b2xsZWN0b3IucHRyKCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitzdGF0aWMgUGVlckNv
bm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGluZ1N0YXRlIHNpZ25hbGluZ1N0YXRlKHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OlNpZ25hbGluZ1N0YXRlIHN0YXRlKQoreworICAgIHN3aXRj
aCAoc3RhdGUpIHsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtT
dGFibGU6CisgICAgICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblN0YXRlczo6U2lnbmFsaW5nU3Rh
dGU6OlN0YWJsZTsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtI
YXZlTG9jYWxPZmZlcjoKKyAgICAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpTaWdu
YWxpbmdTdGF0ZTo6SGF2ZUxvY2FsT2ZmZXI7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjprSGF2ZUxvY2FsUHJBbnN3ZXI6CisgICAgICAgIHJldHVybiBQZWVyQ29u
bmVjdGlvblN0YXRlczo6U2lnbmFsaW5nU3RhdGU6OkhhdmVMb2NhbFByQW5zd2VyOworICAgIGNh
c2Ugd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0hhdmVSZW1vdGVPZmZlcjoKKyAg
ICAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZTo6SGF2ZVJl
bW90ZU9mZmVyOworICAgIGNhc2Ugd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0hh
dmVSZW1vdGVQckFuc3dlcjoKKyAgICAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpT
aWduYWxpbmdTdGF0ZTo6SGF2ZVJlbW90ZVByQW5zd2VyOworICAgIGNhc2Ugd2VicnRjOjpQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6a0Nsb3NlZDoKKyAgICAgICAgcmV0dXJuIFBlZXJDb25uZWN0
aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZTo6Q2xvc2VkOworICAgIH0KK30KKwordm9pZCBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpPblNpZ25hbGluZ0NoYW5nZSh3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjpTaWduYWxpbmdTdGF0ZSBydGNTdGF0ZSkKK3sKKyAgICBhdXRvIHN0YXRl
ID0gc2lnbmFsaW5nU3RhdGUocnRjU3RhdGUpOworICAgIFJlZlB0cjxMaWJXZWJSVENNZWRpYUVu
ZHBvaW50PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBzdGF0ZV0geworICAgICAgICBpZiAo
cHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnVwZGF0ZVNpZ25hbGluZ1N0
YXRlKHN0YXRlKTsKKyAgICB9KTsKK30KKworc3RhdGljIGlubGluZSBTdHJpbmcgdHJhY2tJZCh3
ZWJydGM6Ok1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2UmIHZpZGVvVHJhY2spCit7CisgICAgcmV0
dXJuIFN0cmluZyh2aWRlb1RyYWNrLmlkKCkuZGF0YSgpLCB2aWRlb1RyYWNrLmlkKCkuc2l6ZSgp
KTsKK30KKworc3RhdGljIGlubGluZSBSZWY8TWVkaWFTdHJlYW1UcmFjaz4gY3JlYXRlTWVkaWFT
dHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4mJiByZW1vdGVTb3VyY2UpCit7CisgICAgU3RyaW5nIHRyYWNrSWQgPSByZW1v
dGVTb3VyY2UtPmlkKCk7CisgICAgcmV0dXJuIE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShjb250
ZXh0LCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKFdURk1vdmUocmVtb3RlU291cmNl
KSwgV1RGTW92ZSh0cmFja0lkKSkpOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmFkZFN0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlJiBzdHJlYW0pCit7CisgICAg
TWVkaWFTdHJlYW1UcmFja1ZlY3RvciB0cmFja3M7CisgICAgZm9yIChhdXRvJiB2aWRlb1RyYWNr
IDogc3RyZWFtLkdldFZpZGVvVHJhY2tzKCkpIHsKKyAgICAgICAgQVNTRVJUKHZpZGVvVHJhY2sp
OworICAgICAgICBTdHJpbmcgaWQgPSB0cmFja0lkKCp2aWRlb1RyYWNrKTsKKyAgICAgICAgYXV0
byByZW1vdGVTb3VyY2UgPSBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZShXVEZN
b3ZlKHZpZGVvVHJhY2spLCBXVEZNb3ZlKGlkKSk7CisgICAgICAgIHRyYWNrcy5hcHBlbmQoY3Jl
YXRlTWVkaWFTdHJlYW1UcmFjaygqbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigp
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShyZW1vdGVTb3VyY2UpKSk7CisgICAg
fQorICAgIC8vIEZJWE1FOiBTdXBwb3J0IGF1ZGlvIHRyYWNrcworCisgICAgYXV0byBuZXdTdHJl
YW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKCptX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0
aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKHRyYWNrcykpOworICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5maXJlRXZlbnQoTWVkaWFTdHJlYW1F
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGRzdHJlYW1FdmVudCwgZmFsc2UsIGZhbHNlLCBu
ZXdTdHJlYW0uY29weVJlZigpKSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4g
c3RyZWFtczsKKyAgICBzdHJlYW1zLmFwcGVuZChuZXdTdHJlYW0uY29weVJlZigpKTsKKyAgICBm
b3IgKGF1dG8mIHRyYWNrIDogbmV3U3RyZWFtLT5nZXRUcmFja3MoKSkKKyAgICAgICAgbV9wZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLmZpcmVFdmVudChSVENUcmFja0V2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLnRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgbnVsbHB0ciwgdHJh
Y2suZ2V0KCksIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PihzdHJlYW1zKSwgbnVsbHB0cikp
OworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uQWRkU3RyZWFtKHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPiBzdHJlYW0pCit7CisgICAg
UmVmUHRyPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IHN0cmVhbSA9IFdURk1vdmUoc3RyZWFtKV0geworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+
aXNTdG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChzdHJlYW0p
OworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRTdHJlYW0oKnN0cmVhbS5nZXQoKSk7CisgICAg
fSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25SZW1vdmVTdHJlYW0ocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2U+KQoreworICAgIC8v
IEZJWE1FOiBUbyBiZSBpbXBsZW1lbnRlZC4KK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjphZGREYXRhQ2hhbm5lbChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5l
bEludGVyZmFjZT4mJikKK3sKKyAgICAvLyBGSVhNRTogVG8gYmUgaW1wbGVtZW50ZWQuCit9CisK
K3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25EYXRhQ2hhbm5lbChydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4gZGF0YUNoYW5uZWwpCit7CisgICAg
UmVmUHRyPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IGRhdGFDaGFubmVsID0gV1RGTW92ZShkYXRhQ2hhbm5lbCldIHsKKyAgICAgICAgaWYgKHByb3Rl
Y3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5hZGREYXRhQ2hhbm5lbChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRh
Q2hhbm5lbEludGVyZmFjZT4oZGF0YUNoYW5uZWwpKTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpzdG9wKCkKK3sKKyAgICBBU1NFUlQobV9iYWNrZW5kKTsKKyAg
ICBtX2JhY2tlbmQtPkNsb3NlKCk7CisgICAgbV9iYWNrZW5kID0gbnVsbHB0cjsKK30KKwordm9p
ZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPblJlbmVnb3RpYXRpb25OZWVkZWQoKQoreworICAg
IC8vIEZJWE1FOiBUbyBiZSBpbXBsZW1lbnRlZC4KK30KKworc3RhdGljIGlubGluZSBQZWVyQ29u
bmVjdGlvblN0YXRlczo6SWNlQ29ubmVjdGlvblN0YXRlIGljZUNvbm5lY3Rpb25TdGF0ZSh3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUgc3RhdGUpCit7
CisgICAgQVNTRVJUKHN0YXRlICE9IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJ
Y2VDb25uZWN0aW9uTWF4KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGVlckNvbm5lY3Rpb25T
dGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZT4oc3RhdGUpOworfQorCit2b2lkIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6Ok9uSWNlQ29ubmVjdGlvbkNoYW5nZSh3ZWJydGM6OlBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUgc3RhdGUpCit7CisgICAgYXV0byBjb25uZWN0
aW9uU3RhdGUgPSBpY2VDb25uZWN0aW9uU3RhdGUoc3RhdGUpOworICAgIFJlZlB0cjxMaWJXZWJS
VENNZWRpYUVuZHBvaW50PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb25uZWN0aW9uU3Rh
dGVdIHsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY29ubmVjdGlvbigpLmludGVybmFsSWNlQ29ubmVjdGlvblN0YXRlKCkgIT0gY29ubmVj
dGlvblN0YXRlKQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY29ubmVjdGlvbigpLnVwZGF0ZUljZUNvbm5lY3Rpb25TdGF0ZShjb25uZWN0aW9uU3Rh
dGUpOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uSWNlR2F0
aGVyaW5nQ2hhbmdlKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUdhdGhlcmlu
Z1N0YXRlIHN0YXRlKQoreworICAgIGlmIChzdGF0ZSA9PSB3ZWJydGM6OlBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjprSWNlR2F0aGVyaW5nQ29tcGxldGUpIHsKKyAgICAgICAgUmVmUHRyPExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7CisgICAg
ICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQuZG9uZUdhdGhlcmluZ0NhbmRpZGF0ZXMoKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2
b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uSWNlQ2FuZGlkYXRlKGNvbnN0IHdlYnJ0Yzo6
SWNlQ2FuZGlkYXRlSW50ZXJmYWNlICpydGNDYW5kaWRhdGUpCit7CisgICAgQVNTRVJUKHJ0Y0Nh
bmRpZGF0ZSk7CisKKyAgICBzdGQ6OnN0cmluZyBzZHA7CisgICAgcnRjQ2FuZGlkYXRlLT5Ub1N0
cmluZygmc2RwKTsKKyAgICBTdHJpbmcgY2FuZGlkYXRlU0RQKHNkcC5kYXRhKCksIHNkcC5zaXpl
KCkpOworCisgICAgYXV0byBtaWQgPSBydGNDYW5kaWRhdGUtPnNkcF9taWQoKTsKKyAgICBTdHJp
bmcgY2FuZGlkYXRlTWlkKG1pZC5kYXRhKCksIG1pZC5zaXplKCkpOworCisgICAgUmVmUHRyPExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgY2FsbE9uTWFp
blRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIG1pZCA9IFdU
Rk1vdmUoY2FuZGlkYXRlTWlkKSwgc2RwID0gV1RGTW92ZShjYW5kaWRhdGVTRFApXSB7CisgICAg
ICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuZmlyZUlDRUNh
bmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFN0cmluZyhzZHApLCBTdHJpbmco
bWlkKSwgMCkpOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9u
SWNlQ2FuZGlkYXRlc1JlbW92ZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Y3JpY2tldDo6Q2FuZGlkYXRl
PiYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKHdlYnJ0Yzo6U2Vz
c2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlKiBkZXNjcmlwdGlvbikKK3sKKyAgICBzdGQ6OnN0cmlu
ZyBzZHA7CisgICAgZGVzY3JpcHRpb24tPlRvU3RyaW5nKCZzZHApOworICAgIFN0cmluZyBzZHBT
dHJpbmcoc2RwLmRhdGEoKSwgc2RwLnNpemUoKSk7CisKKyAgICBSZWZQdHI8TGliV2ViUlRDTWVk
aWFFbmRwb2ludD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgc2RwID0gV1RGTW92ZShzZHBT
dHJpbmcpXSB7CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1faXNJbml0aWF0b3Ip
CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jcmVh
dGVPZmZlclN1Y2NlZWRlZChTdHJpbmcoc2RwKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2Nl
ZWRlZChTdHJpbmcoc2RwKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRw
b2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3RyaW5nJiBl
cnJvck1lc3NhZ2UpCit7CisgICAgU3RyaW5nIGVycm9yKGVycm9yTWVzc2FnZS5kYXRhKCksIGVy
cm9yTWVzc2FnZS5zaXplKCkpOworICAgIFJlZlB0cjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7CisgICAg
ICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1faXNJbml0aWF0b3IpCisgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jcmVhdGVPZmZlckZhaWxlZChF
eGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgU3RyaW5nKGVycm9yKSB9KTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Jl
YXRlQW5zd2VyRmFpbGVkKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBTdHJpbmcoZXJyb3Ip
IH0pOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldExvY2Fs
U2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKCkKK3sKKyAgICBSZWZQdHI8TGliV2ViUlRDTWVk
aWFFbmRwb2ludD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0geworICAgICAgICBpZiAocHJv
dGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHBy
b3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNldExvY2FsRGVzY3JpcHRpb25T
dWNjZWVkZWQoKTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpz
ZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZChjb25zdCBzdGQ6OnN0cmluZyYgZXJyb3JN
ZXNzYWdlKQoreworICAgIFN0cmluZyBlcnJvcihlcnJvck1lc3NhZ2UuZGF0YSgpLCBlcnJvck1l
c3NhZ2Uuc2l6ZSgpKTsKKyAgICBSZWZQdHI8TGliV2ViUlRDTWVkaWFFbmRwb2ludD4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKV0geworICAgICAgICBp
ZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNldExvY2FsRGVzY3Jp
cHRpb25GYWlsZWQoRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIFN0cmluZyhlcnJvcikgfSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0UmVtb3RlU2Vz
c2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKCkKK3sKKyAgICBSZWZQdHI8TGliV2ViUlRDTWVkaWFF
bmRwb2ludD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0geworICAgICAgICBpZiAocHJvdGVj
dGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNldFJlbW90ZURlc2NyaXB0aW9uU3Vj
Y2VlZGVkKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0
UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3RyaW5nJiBlcnJvck1l
c3NhZ2UpCit7CisgICAgU3RyaW5nIGVycm9yKGVycm9yTWVzc2FnZS5kYXRhKCksIGVycm9yTWVz
c2FnZS5zaXplKCkpOworICAgIFJlZlB0cjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7CisgICAgICAgIGlm
IChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuc2V0UmVtb3RlRGVzY3Jp
cHRpb25GYWlsZWQoRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIFN0cmluZyhlcnJvcikgfSk7
CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShMSUJXRUJSVENfRU5EUE9JTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBv
aW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODMwNDYyNmUyM2JlYjQwZWZjMzMwNDc2ZjA5NDBkNGE5ZTc1YTZi
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaApAQCAtMCwwICsxLDE3MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKExJQldFQlJUQ19FTkRQT0lOVCkKKworI2luY2x1ZGUgIkxpYldlYlJUQ1V0aWxz
LmgiCisjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgiCisjaW5jbHVkZSAiUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlLmgiCisKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL2pzZXAuaD4K
KyNpbmNsdWRlIDx3ZWJydGMvYXBpL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5oPgorI2luY2x1ZGUg
PHdlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDx3ZWJydGMv
YXBpL3J0Y3N0YXRzY29sbGVjdG9yLmg+CisKK25hbWVzcGFjZSB3ZWJydGMgeworY2xhc3MgQ3Jl
YXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXI7CitjbGFzcyBEYXRhQ2hhbm5lbEludGVyZmFj
ZTsKK2NsYXNzIEljZUNhbmRpZGF0ZUludGVyZmFjZTsKK2NsYXNzIE1lZGlhU3RyZWFtSW50ZXJm
YWNlOworY2xhc3MgUGVlckNvbm5lY3Rpb25PYnNlcnZlcjsKK2NsYXNzIFNlc3Npb25EZXNjcmlw
dGlvbkludGVyZmFjZTsKK2NsYXNzIFNldFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyOworfQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU3RyZWFtVHJhY2s7CitjbGFzcyBM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CitjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRp
b247CisKK2NsYXNzIExpYldlYlJUQ01lZGlhRW5kcG9pbnQgZmluYWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiwgcHJpdmF0ZSB3ZWJydGM6OlBlZXJDb25uZWN0
aW9uT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TGliV2ViUlRDTWVkaWFFbmRw
b2ludD4gY3JlYXRlKExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYgcGVlckNvbm5lY3Rp
b24pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGliV2ViUlRDTWVkaWFFbmRwb2ludChwZWVyQ29u
bmVjdGlvbikpOyB9CisKKyAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlJiBiYWNr
ZW5kKCkgY29uc3QgeyBBU1NFUlQobV9iYWNrZW5kKTsgcmV0dXJuICptX2JhY2tlbmQuZ2V0KCk7
IH0KKyAgICB2b2lkIGRvU2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24m
KTsKKyAgICB2b2lkIGRvU2V0UmVtb3RlRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
Jik7CisgICAgdm9pZCBkb0NyZWF0ZU9mZmVyKCk7CisgICAgdm9pZCBkb0NyZWF0ZUFuc3dlcigp
OworICAgIHZvaWQgZ2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayosIFBlZXJDb25uZWN0aW9uOjpT
dGF0c1Byb21pc2UmJik7CisKKyAgICB2b2lkIHN0b3JlSWNlQ2FuZGlkYXRlKHN0ZDo6dW5pcXVl
X3B0cjx3ZWJydGM6OkljZUNhbmRpZGF0ZUludGVyZmFjZT4mJiBjYW5kaWRhdGUpIHsgbV9wZW5k
aW5nQ2FuZGlkYXRlcy5hcHBlbmQoV1RGTW92ZShjYW5kaWRhdGUpKTsgfQorICAgIHZvaWQgYWRk
UGVuZGluZ0ljZUNhbmRpZGF0ZXMoKTsKKworICAgIHZvaWQgc3RvcCgpOworCitwcml2YXRlOgor
ICAgIGV4cGxpY2l0IExpYldlYlJUQ01lZGlhRW5kcG9pbnQoTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kJik7CisKKyAgICBpbnQgQWRkUmVmKCkgY29uc3QgeyByZWYoKTsgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4ocmVmQ291bnQoKSk7IH0KKyAgICBpbnQgUmVsZWFzZSgpIGNvbnN0IHsg
ZGVyZWYoKTsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVmQ291bnQoKSk7IH0KKworICAgIC8v
IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciBBUEkKKyAgICB2b2lkIE9uU2lnbmFsaW5n
Q2hhbmdlKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlNpZ25hbGluZ1N0YXRlKSBm
aW5hbDsKKyAgICB2b2lkIE9uQWRkU3RyZWFtKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6Ok1l
ZGlhU3RyZWFtSW50ZXJmYWNlPikgZmluYWw7CisgICAgdm9pZCBPblJlbW92ZVN0cmVhbShydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZT4pIGZpbmFsOworICAg
IHZvaWQgT25EYXRhQ2hhbm5lbChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5l
bEludGVyZmFjZT4pIGZpbmFsOworICAgIHZvaWQgT25SZW5lZ290aWF0aW9uTmVlZGVkKCkgZmlu
YWw7CisgICAgdm9pZCBPbkljZUNvbm5lY3Rpb25DaGFuZ2Uod2VicnRjOjpQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlKSBmaW5hbDsKKyAgICB2b2lkIE9uSWNlR2F0
aGVyaW5nQ2hhbmdlKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUdhdGhlcmlu
Z1N0YXRlKSBmaW5hbDsKKyAgICB2b2lkIE9uSWNlQ2FuZGlkYXRlKGNvbnN0IHdlYnJ0Yzo6SWNl
Q2FuZGlkYXRlSW50ZXJmYWNlKikgZmluYWw7CisgICAgdm9pZCBPbkljZUNhbmRpZGF0ZXNSZW1v
dmVkKGNvbnN0IHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OkNhbmRpZGF0ZT4mKSBmaW5hbDsKKworICAg
IHZvaWQgY3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKHdlYnJ0Yzo6U2Vzc2lvbkRl
c2NyaXB0aW9uSW50ZXJmYWNlKik7CisgICAgdm9pZCBjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25G
YWlsZWQoY29uc3Qgc3RkOjpzdHJpbmcmKTsKKyAgICB2b2lkIHNldExvY2FsU2Vzc2lvbkRlc2Ny
aXB0aW9uU3VjY2VlZGVkKCk7CisgICAgdm9pZCBzZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbkZh
aWxlZChjb25zdCBzdGQ6OnN0cmluZyYpOworICAgIHZvaWQgc2V0UmVtb3RlU2Vzc2lvbkRlc2Ny
aXB0aW9uU3VjY2VlZGVkKCk7CisgICAgdm9pZCBzZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25G
YWlsZWQoY29uc3Qgc3RkOjpzdHJpbmcmKTsKKyAgICB2b2lkIGFkZFN0cmVhbSh3ZWJydGM6Ok1l
ZGlhU3RyZWFtSW50ZXJmYWNlJik7CisgICAgdm9pZCBhZGREYXRhQ2hhbm5lbChydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4mJik7CisKKyAgICBib29sIGlz
U3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2JhY2tlbmQ7IH0KKworICAgIGNsYXNzIENyZWF0
ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIDogcHVibGljIHdlYnJ0Yzo6Q3JlYXRlU2Vzc2lv
bkRlc2NyaXB0aW9uT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgQ3JlYXRlU2Vzc2lv
bkRlc2NyaXB0aW9uT2JzZXJ2ZXIoTGliV2ViUlRDTWVkaWFFbmRwb2ludCAmZW5kcG9pbnQpIDog
bV9lbmRwb2ludChlbmRwb2ludCkgeyB9CisgICAgICAgIHZvaWQgT25TdWNjZXNzKHdlYnJ0Yzo6
U2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlKiBzZXNzaW9uRGVzY3JpcHRpb24pIGZpbmFsIHsg
bV9lbmRwb2ludC5jcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQoc2Vzc2lvbkRlc2Ny
aXB0aW9uKTsgfQorICAgICAgICB2b2lkIE9uRmFpbHVyZShjb25zdCBzdGQ6OnN0cmluZyYgZXJy
b3IpIGZpbmFsIHsgbV9lbmRwb2ludC5jcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoZXJy
b3IpOyB9CisKKyAgICAgICAgaW50IEFkZFJlZigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kcG9pbnQu
QWRkUmVmKCk7IH0KKyAgICAgICAgaW50IFJlbGVhc2UoKSBjb25zdCB7IHJldHVybiBtX2VuZHBv
aW50LlJlbGVhc2UoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgTGliV2ViUlRDTWVkaWFF
bmRwb2ludCYgbV9lbmRwb2ludDsKKyAgICB9OworCisgICAgY2xhc3MgU2V0TG9jYWxTZXNzaW9u
RGVzY3JpcHRpb25PYnNlcnZlciA6IHB1YmxpYyB3ZWJydGM6OlNldFNlc3Npb25EZXNjcmlwdGlv
bk9ic2VydmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNldExvY2FsU2Vzc2lvbkRlc2NyaXB0
aW9uT2JzZXJ2ZXIoTGliV2ViUlRDTWVkaWFFbmRwb2ludCAmZW5kcG9pbnQpIDogbV9lbmRwb2lu
dChlbmRwb2ludCkgeyB9CisgICAgICAgIHZvaWQgT25TdWNjZXNzKCkgZmluYWwgeyBtX2VuZHBv
aW50LnNldExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKCk7IH0KKyAgICAgICAgdm9p
ZCBPbkZhaWx1cmUoY29uc3Qgc3RkOjpzdHJpbmcmIGVycm9yKSBmaW5hbCB7IG1fZW5kcG9pbnQu
c2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoZXJyb3IpOyB9CisKKyAgICAgICAgaW50
IEFkZFJlZigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kcG9pbnQuQWRkUmVmKCk7IH0KKyAgICAgICAg
aW50IFJlbGVhc2UoKSBjb25zdCB7IHJldHVybiBtX2VuZHBvaW50LlJlbGVhc2UoKTsgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgTGliV2ViUlRDTWVkaWFFbmRwb2ludCYgbV9lbmRwb2ludDsK
KyAgICB9OworCisgICAgY2xhc3MgU2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIg
OiBwdWJsaWMgd2VicnRjOjpTZXRTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciB7CisgICAgcHVi
bGljOgorICAgICAgICBTZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcihMaWJXZWJS
VENNZWRpYUVuZHBvaW50ICZlbmRwb2ludCkgOiBtX2VuZHBvaW50KGVuZHBvaW50KSB7IH0KKyAg
ICAgICAgdm9pZCBPblN1Y2Nlc3MoKSBmaW5hbCB7IG1fZW5kcG9pbnQuc2V0UmVtb3RlU2Vzc2lv
bkRlc2NyaXB0aW9uU3VjY2VlZGVkKCk7IH0KKyAgICAgICAgdm9pZCBPbkZhaWx1cmUoY29uc3Qg
c3RkOjpzdHJpbmcmIGVycm9yKSBmaW5hbCB7IG1fZW5kcG9pbnQuc2V0UmVtb3RlU2Vzc2lvbkRl
c2NyaXB0aW9uRmFpbGVkKGVycm9yKTsgfQorCisgICAgICAgIGludCBBZGRSZWYoKSBjb25zdCB7
IHJldHVybiBtX2VuZHBvaW50LkFkZFJlZigpOyB9CisgICAgICAgIGludCBSZWxlYXNlKCkgY29u
c3QgeyByZXR1cm4gbV9lbmRwb2ludC5SZWxlYXNlKCk7IH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIExpYldlYlJUQ01lZGlhRW5kcG9pbnQmIG1fZW5kcG9pbnQ7CisgICAgfTsKKworICAgIGNs
YXNzIFN0YXRzQ29sbGVjdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8U3RhdHNDb2xsZWN0b3I+LCBw
dWJsaWMgd2VicnRjOjpSVENTdGF0c0NvbGxlY3RvckNhbGxiYWNrIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHN0YXRpYyBSZWY8U3RhdHNDb2xsZWN0b3I+IGNyZWF0ZShMaWJXZWJSVENNZWRpYUVu
ZHBvaW50JiBlbmRwb2ludCwgUGVlckNvbm5lY3Rpb246OlN0YXRzUHJvbWlzZSYmIHByb21pc2Us
IE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJlZigqIG5ldyBTdGF0c0Nv
bGxlY3RvcihlbmRwb2ludCwgV1RGTW92ZShwcm9taXNlKSwgdHJhY2spKTsgfQorICAgIHByaXZh
dGU6CisgICAgICAgIFN0YXRzQ29sbGVjdG9yKExpYldlYlJUQ01lZGlhRW5kcG9pbnQmLCBQZWVy
Q29ubmVjdGlvbjo6U3RhdHNQcm9taXNlJiYsIE1lZGlhU3RyZWFtVHJhY2sqKTsKKworICAgICAg
ICAvLyB3ZWJydGM6OlJUQ1N0YXRzQ29sbGVjdG9yQ2FsbGJhY2sgQVBJCisgICAgICAgIGludCBB
ZGRSZWYoKSBjb25zdCBmaW5hbCB7IHJlZigpOyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZWZD
b3VudCgpKTsgfQorICAgICAgICBpbnQgUmVsZWFzZSgpIGNvbnN0IGZpbmFsIHsgZGVyZWYoKTsg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVmQ291bnQoKSk7IH0KKyAgICAgICAgdm9pZCBPblN0
YXRzRGVsaXZlcmVkKGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCB3ZWJydGM6OlJUQ1N0
YXRzUmVwb3J0PiYpIGZpbmFsOworCisgICAgICAgIExpYldlYlJUQ01lZGlhRW5kcG9pbnQmIG1f
ZW5kcG9pbnQ7CisgICAgICAgIFBlZXJDb25uZWN0aW9uOjpTdGF0c1Byb21pc2UgbV9wcm9taXNl
OworICAgICAgICBTdHJpbmcgbV9pZDsKKyAgICB9OworCisgICAgTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kJiBtX3BlZXJDb25uZWN0aW9uQmFja2VuZDsKKyAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gbV9iYWNrZW5kOworCisgICAg
Q3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgbV9jcmVhdGVTZXNzaW9uRGVzY3JpcHRp
b25PYnNlcnZlcjsKKyAgICBTZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIG1fc2V0
TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjsKKyAgICBTZXRSZW1vdGVTZXNzaW9uRGVz
Y3JpcHRpb25PYnNlcnZlciBtX3NldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyOwor
CisgICAgYm9vbCBtX2lzSW5pdGlhdG9yIHsgZmFsc2UgfTsKKworICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8d2VicnRjOjpJY2VDYW5kaWRhdGVJbnRlcmZhY2U+PiBtX3BlbmRpbmdDYW5kaWRh
dGVzOworICAgIFZlY3RvcjxSZWY8UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlPj4gbV92aWRl
b1NvdXJjZXM7CisgICAgVmVjdG9yPFJlZjxTdGF0c0NvbGxlY3Rvcj4+IG1fc3RhdHNDb2xsZWN0
b3JzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKExJ
QldFQlJUQ19FTkRQT0lOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzYmM4YzE0ZGIyZjAyNjBhZTllOTQy
MjQ4NTk2ZjJkODY5MDI3MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3BwCkBAIC0wLDAgKzEsMTc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJlZCB0byBi
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5oIgorCisjaWYgRU5BQkxFKExJQldFQlJUQ19FTkRQT0lOVCkKKworI2lu
Y2x1ZGUgIkljZUNhbmRpZGF0ZS5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ01lZGlhRW5kcG9pbnQu
aCIKKyNpbmNsdWRlICJNZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJU
Q0ljZUNhbmRpZGF0ZS5oIgorI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiUlRDUnRwUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRpb24uaCIK
KyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBlZXJDb25uZWN0aW9uQmFja2VuZD4g
Y3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKFJUQ1BlZXJDb25uZWN0aW9uJiBw
ZWVyQ29ubmVjdGlvbikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBlZXJDb25uZWN0
aW9uQmFja2VuZD4obmV3IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZChwZWVyQ29ubmVj
dGlvbikpOworfQorCitDcmVhdGVQZWVyQ29ubmVjdGlvbkJhY2tlbmQgUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjpjcmVhdGUgPSBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CisK
K0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kKFJUQ1BlZXJDb25uZWN0aW9uJiBwZWVyQ29ubmVjdGlvbikKKyAgICA6IFBlZXJDb25u
ZWN0aW9uQmFja2VuZChwZWVyQ29ubmVjdGlvbikKKyAgICAsIG1fZW5kcG9pbnQoTGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6Y3JlYXRlKCp0aGlzKSkKK3sKK30KKworc3RhdGljIHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbkZyb21N
ZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbiYmIGNv
bmZpZ3VyYXRpb24pCit7CisgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRD
Q29uZmlndXJhdGlvbiBydGNDb25maWd1cmF0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb25UeXBlOjprQWdncmVzc2l2ZSk7CisKKyAgICBpZiAoY29u
ZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kgPT0gUGVlckNvbm5lY3Rpb25TdGF0ZXM6Oklj
ZVRyYW5zcG9ydFBvbGljeTo6UmVsYXkpCisgICAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24udHlwZSA9
IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtSZWxheTsKKworICAgIGlmIChjb25m
aWd1cmF0aW9uLmJ1bmRsZVBvbGljeSA9PSBQZWVyQ29ubmVjdGlvblN0YXRlczo6QnVuZGxlUG9s
aWN5OjpNYXhCdW5kbGUpCisgICAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uYnVuZGxlX3BvbGljeSA9
IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtCdW5kbGVQb2xpY3lNYXhCdW5kbGU7
CisgICAgZWxzZSBpZiAoY29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kgPT0gUGVlckNvbm5lY3Rp
b25TdGF0ZXM6OkJ1bmRsZVBvbGljeTo6TWF4Q29tcGF0KQorICAgICAgICBydGNDb25maWd1cmF0
aW9uLmJ1bmRsZV9wb2xpY3kgPSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprQnVu
ZGxlUG9saWN5TWF4Q29tcGF0OworCisgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBjb25maWd1cmF0
aW9uLmljZVNlcnZlcnMpIHsKKyAgICAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZTo6SWNlU2VydmVyIGljZVNlcnZlcjsKKyAgICAgICAgaWNlU2VydmVyLnVzZXJuYW1lID0gc2Vy
dmVyLnVzZXJuYW1lLnV0ZjgoKS5kYXRhKCk7CisgICAgICAgIGljZVNlcnZlci5wYXNzd29yZCA9
IHNlcnZlci5jcmVkZW50aWFsLnV0ZjgoKS5kYXRhKCk7CisgICAgICAgIGZvciAoYXV0byYgdXJs
IDogc2VydmVyLnVybHMpCisgICAgICAgICAgICBpY2VTZXJ2ZXIudXJscy5wdXNoX2JhY2soeyB1
cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSB9KTsKKyAgICAgICAgcnRjQ29uZmlndXJhdGlvbi5z
ZXJ2ZXJzLnB1c2hfYmFjayhXVEZNb3ZlKGljZVNlcnZlcikpOworICAgIH0KKworICAgIHJldHVy
biBydGNDb25maWd1cmF0aW9uOworfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZDo6c2V0Q29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbiYmIGNvbmZp
Z3VyYXRpb24pCit7CisgICAgbV9lbmRwb2ludC0+YmFja2VuZCgpLlNldENvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbkZyb21NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZp
Z3VyYXRpb24pKSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpn
ZXRTdGF0cyhNZWRpYVN0cmVhbVRyYWNrKiB0cmFjaywgUGVlckNvbm5lY3Rpb246OlN0YXRzUHJv
bWlzZSYmIHByb21pc2UpCit7CisgICAgbV9lbmRwb2ludC0+Z2V0U3RhdHModHJhY2ssIFdURk1v
dmUocHJvbWlzZSkpOworfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6
ZG9TZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24p
Cit7CisgICAgbV9lbmRwb2ludC0+ZG9TZXRMb2NhbERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsK
KyAgICBpZiAoIW1faXNMb2NhbERlc2NyaXB0aW9uU2V0KSB7CisgICAgICAgIGlmIChtX2lzUmVt
b3RlRGVzY3JpcHRpb25TZXQpCisgICAgICAgICAgICBtX2VuZHBvaW50LT5hZGRQZW5kaW5nSWNl
Q2FuZGlkYXRlcygpOworICAgICAgICBtX2lzTG9jYWxEZXNjcmlwdGlvblNldCA9IHRydWU7Cisg
ICAgfQorfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9TZXRSZW1v
dGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQoreworICAg
IG1fZW5kcG9pbnQtPmRvU2V0UmVtb3RlRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pOworICAgIGlm
ICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7CisgICAgICAgIGlmIChtX2lzTG9jYWxEZXNj
cmlwdGlvblNldCkKKyAgICAgICAgICAgIG1fZW5kcG9pbnQtPmFkZFBlbmRpbmdJY2VDYW5kaWRh
dGVzKCk7CisgICAgICAgIG1faXNSZW1vdGVEZXNjcmlwdGlvblNldCA9IHRydWU7CisgICAgfQor
fQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVPZmZlcihS
VENPZmZlck9wdGlvbnMmJikKK3sKKyAgICBtX2VuZHBvaW50LT5kb0NyZWF0ZU9mZmVyKCk7Cit9
CisKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb0NyZWF0ZUFuc3dlcihS
VENBbnN3ZXJPcHRpb25zJiYpCit7CisgICAgbV9lbmRwb2ludC0+ZG9DcmVhdGVBbnN3ZXIoKTsK
K30KKwordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvU3RvcCgpCit7Cisg
ICAgbV9lbmRwb2ludC0+c3RvcCgpOworfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZDo6ZG9BZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUpCit7
CisgICAgd2VicnRjOjpTZHBQYXJzZUVycm9yIGVycm9yOworICAgIGludCBzZHBNTGluZUluZGV4
ID0gY2FuZGlkYXRlLnNkcE1MaW5lSW5kZXgoKSA/IGNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KCku
dmFsdWUoKSA6IDA7CisgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6SWNlQ2FuZGlkYXRlSW50
ZXJmYWNlPiBydGNDYW5kaWRhdGUod2VicnRjOjpDcmVhdGVJY2VDYW5kaWRhdGUoY2FuZGlkYXRl
LnNkcE1pZCgpLnV0ZjgoKS5kYXRhKCksIHNkcE1MaW5lSW5kZXgsIGNhbmRpZGF0ZS5jYW5kaWRh
dGUoKS51dGY4KCkuZGF0YSgpLCAmZXJyb3IpKTsKKworICAgIGlmICghcnRjQ2FuZGlkYXRlKSB7
CisgICAgICAgIFN0cmluZyBtZXNzYWdlKGVycm9yLmRlc2NyaXB0aW9uLmRhdGEoKSwgZXJyb3Iu
ZGVzY3JpcHRpb24uc2l6ZSgpKTsKKyAgICAgICAgYWRkSWNlQ2FuZGlkYXRlRmFpbGVkKEV4Y2Vw
dGlvbiB7IE9wZXJhdGlvbkVycm9yLCBXVEZNb3ZlKG1lc3NhZ2UpIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgLy8gbGlid2VicnRjIGRvZXMgbm90IGxpa2UgdGhhdCBpY2UgY2Fu
ZGlkYXRlcyBhcmUgc2V0IGJlZm9yZSB0aGUgZGVzY3JpcHRpb24uCisgICAgaWYgKCFtX2lzTG9j
YWxEZXNjcmlwdGlvblNldCB8fCAhbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KQorICAgICAgICBt
X2VuZHBvaW50LT5zdG9yZUljZUNhbmRpZGF0ZShXVEZNb3ZlKHJ0Y0NhbmRpZGF0ZSkpOworICAg
IGVsc2UgaWYgKCFtX2VuZHBvaW50LT5iYWNrZW5kKCkuQWRkSWNlQ2FuZGlkYXRlKHJ0Y0NhbmRp
ZGF0ZS5nZXQoKSkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGFk
ZEljZUNhbmRpZGF0ZUZhaWxlZChFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgQVNDSUlMaXRl
cmFsKCJGYWlsZWQgdG8gYXBwbHkgdGhlIHJlY2VpdmVkIGNhbmRpZGF0ZSIpIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGFkZEljZUNhbmRpZGF0ZVN1Y2NlZWRlZCgpOworfQorCit2
b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6bWFya0FzTmVlZGluZ05lZ290aWF0
aW9uKCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMKK30KKworUmVmPFJUQ1J0cFJl
Y2VpdmVyPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHJhY2tJZCkKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBjcmVhdGUg
YSBzb3VyY2UgdGhhdCB3aWxsIGdldCBmdWVsZWQgb25jZSB3ZSB3aWxsIHJlY2VpdmUgT25BZGRT
dHJlYW0uCisgICAgLy8gRm9yIHRoZSBtb21lbnQsIHdlIGNyZWF0ZSBhbiBlbXB0eSBvbmUuCisg
ICAgYXV0byByZW1vdGVUcmFja1ByaXZhdGUgPSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3Jl
YXRlKFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFN0cmluZyh0
cmFja0lkKSkpOworICAgIGF1dG8gcmVtb3RlVHJhY2sgPSBNZWRpYVN0cmVhbVRyYWNrOjpjcmVh
dGUoKm1fcGVlckNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKHJl
bW90ZVRyYWNrUHJpdmF0ZSkpOworCisgICAgcmV0dXJuIFJUQ1J0cFJlY2VpdmVyOjpjcmVhdGUo
V1RGTW92ZShyZW1vdGVUcmFjaykpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5u
ZWxIYW5kbGVyPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZURhdGFDaGFu
bmVsSGFuZGxlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQmKQorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTElCV0VCUlRDX0VORFBPSU5U
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTAyOTM4ZjZjNTZkODg0MTJjMzg4OGZiNjBhYjM2YTk1MTJhZjI3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKQEAgLTAsMCArMSw5MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKExJQldFQlJUQ19FTkRQT0lOVCkKKworI2luY2x1ZGUgIlBlZXJDb25uZWN0
aW9uQmFja2VuZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ7CitjbGFzcyBSVENSdHBSZWNlaXZlcjsKK2NsYXNzIFJUQ1Nlc3Npb25EZXNj
cmlwdGlvbjsKKworY2xhc3MgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kIGZpbmFsIDog
cHVibGljIFBlZXJDb25uZWN0aW9uQmFja2VuZCB7CitwdWJsaWM6CisgICAgTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kKFJUQ1BlZXJDb25uZWN0aW9uJik7CisKK3ByaXZhdGU6CisgICAg
dm9pZCBkb0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmKSBmaW5hbDsKKyAgICB2b2lkIGRv
Q3JlYXRlQW5zd2VyKFJUQ0Fuc3dlck9wdGlvbnMmJikgZmluYWw7CisgICAgdm9pZCBkb1NldExv
Y2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJikgZmluYWw7CisgICAgdm9pZCBk
b1NldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYpIGZpbmFsOworICAg
IHZvaWQgZG9BZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlJikgZmluYWw7CisgICAgdm9p
ZCBkb1N0b3AoKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5k
bGVyPiBjcmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgUlRDRGF0
YUNoYW5uZWxJbml0JikgZmluYWw7CisKKyAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IGNyZWF0ZVJl
Y2VpdmVyKGNvbnN0IFN0cmluZyYgdHJhbnNjZWl2ZXJNaWQsIGNvbnN0IFN0cmluZyYgdHJhY2tL
aW5kLCBjb25zdCBTdHJpbmcmIHRyYWNrSWQpOworCisgICAgdm9pZCBzZXRDb25maWd1cmF0aW9u
KE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uJiYpIGZpbmFsOworCisgICAgdm9pZCBnZXRTdGF0
cyhNZWRpYVN0cmVhbVRyYWNrKiwgUGVlckNvbm5lY3Rpb246OlN0YXRzUHJvbWlzZSYmKTsKKwor
ICAgIGZyaWVuZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OworICAgIFJUQ1BlZXJDb25uZWN0aW9u
JiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9wZWVyQ29ubmVjdGlvbjsgfQorCisgICAgLy8gRklY
TUU6IEFQSSB0byBpbXBsZW1lbnQgZm9yIHJlYWwKKyAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uPiBsb2NhbERlc2NyaXB0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IGN1cnJlbnRMb2NhbERlc2NyaXB0
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIFJlZlB0cjxSVENTZXNz
aW9uRGVzY3JpcHRpb24+IHBlbmRpbmdMb2NhbERlc2NyaXB0aW9uKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorCisgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gcmVt
b3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisgICAgUmVm
UHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gY3VycmVudFJlbW90ZURlc2NyaXB0aW9uKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3Jp
cHRpb24+IHBlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51
bGxwdHI7IH0KKworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PiBnZXRSZW1vdGVTdHJl
YW1zKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyB9OyB9CisKKyAgICB2b2lkIHJlcGxhY2VUcmFj
ayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2
b2lkPiYmKSBmaW5hbCB7IH0KKworICAgIGJvb2wgaXNOZWdvdGlhdGlvbk5lZWRlZCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBtYXJrQXNOZWVkaW5nTmVnb3RpYXRp
b24oKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyTmVnb3RpYXRpb25OZWVkZWRTdGF0ZSgpIGZpbmFs
IHsgfQorCisgICAgdm9pZCBlbXVsYXRlUGxhdGZvcm1FdmVudChjb25zdCBTdHJpbmcmKSBmaW5h
bCB7IH0KKworcHJpdmF0ZToKKyAgICBSZWY8TGliV2ViUlRDTWVkaWFFbmRwb2ludD4gbV9lbmRw
b2ludDsKKyAgICBib29sIG1faXNMb2NhbERlc2NyaXB0aW9uU2V0IHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNSZW1vdGVEZXNjcmlwdGlvblNldCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTElCV0VCUlRDX0VORFBPSU5UKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDk4OTk5MjI4MjU3NGNmYWJiNjU0ZjY3YzEzMWQ1NzJmZjI2ZWUxODYuLjI0OTViNzQyODY1OTUx
OTMyOTgwNjBmZThiMGVmN2RjODQ2YzczZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1MDgsNiArMTUwOCwxOCBAQAogCQk0
MDlFQkRDNTE2QjdGM0NBMDBDQkEzRkMgLyogSlNDU1NGb250RmFjZUxvYWRFdmVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDlFQkRDNDE2QjdG
M0NBMDBDQkEzRkMgLyogSlNDU1NGb250RmFjZUxvYWRFdmVudC5jcHAgKi87IH07CiAJCTQwRUNB
RTdFMTZCOEI2NzIwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNE
T01FcnJvci5oICovOyB9OwogCQk0MEVDQUU4MTE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVD
QUU4MDE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJvci5jcHAgKi87IH07CisJCTQxMDIzMTM4
MUUzNDdCMjYwMDNEQ0QzMiAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDIzMTMzMUUzNDdBRUEwMDNE
Q0QzMiAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCAqLzsgfTsKKwkJNDEwMjMxMzkxRTM0
N0IyNjAwM0RDRDMyIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAyMzEzNDFFMzQ3QUVB
MDAzRENEMzIgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCAqLzsgfTsKKwkJ
NDEwMjMxM0ExRTM0N0IyOTAwM0RDRDMyIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDIzMTM1MUUzNDdB
RUEwMDNEQ0QzMiAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggKi87IH07CisJCTQxMDIzMTNC
MUUzNDdCMjkwMDNEQ0QzMiAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDIzMTM2MUUzNDdB
RUEwMDNEQ0QzMiAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCAqLzsgfTsKKwkJ
NDEwMjMxNDAxRTM0N0IzMTAwM0RDRDMyIC8qIExpYldlYlJUQ01hY3Jvcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMjMxM0MxRTM0N0IyQTAwM0RD
RDMyIC8qIExpYldlYlJUQ01hY3Jvcy5oICovOyB9OworCQk0MTAyMzE0MTFFMzQ3QjMxMDAzRENE
MzIgLyogTGliV2ViUlRDVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDEwMjMxM0QxRTM0N0IyQTAwM0RDRDMyIC8qIExpYldlYlJUQ1V0aWxz
LmNwcCAqLzsgfTsKKwkJNDEwMjMxNDIxRTM0N0IzMTAwM0RDRDMyIC8qIExpYldlYlJUQ1V0aWxz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAyMzEz
RTFFMzQ3QjJBMDAzRENEMzIgLyogTGliV2ViUlRDVXRpbHMuaCAqLzsgfTsKKwkJNDEwMjMxNDMx
RTM0N0IzMTAwM0RDRDMyIC8qIFJUQ1N0cmF0ZWd5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAyMzEzRjFFMzQ3QjJBMDAzRENEMzIgLyogUlRDU3Ry
YXRlZ3kuaCAqLzsgfTsKKwkJNDEwMjMxNDgxRTM0ODRDQzAwM0RDRDMyIC8qIFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTAyMzE0NDFFMzQ4NEJGMDAzRENEMzIgLyogUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlLmNwcCAqLzsgfTsKKwkJNDEwMjMxNDkxRTM0ODRDQzAwM0RDRDMyIC8qIFJlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDEwMjMxNDUxRTM0ODRCRjAwM0RDRDMyIC8qIFJlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZS5oICovOyB9OworCQk0MTAyMzE0QTFFMzQ4NENDMDAzRENEMzIgLyogUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDIzMTQ2MUUzNDg0QkYwMDNEQ0QzMiAvKiBSZWFsdGltZU91
dGdvaW5nVmlkZW9Tb3VyY2UuY3BwICovOyB9OworCQk0MTAyMzE0QjFFMzQ4NENDMDAzRENEMzIg
LyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAyMzE0NzFFMzQ4NEJGMDAzRENEMzIgLyogUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlLmggKi87IH07CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0
RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdl
RXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2Vi
Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0YxOUIxQTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87
IH07CiAJCTQxMjMwOTEzMTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIx
NjI5OTAyOUY0RkI1MDEwMDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwpA
QCAtODY1Miw2ICs4NjY0LDE4IEBACiAJCTQwOUVCREM0MTZCN0YzQ0EwMENCQTNGQyAvKiBKU0NT
U0ZvbnRGYWNlTG9hZEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQ1NTRm9udEZhY2VMb2FkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQwRUNBRTgwMTZCOEI2OEEwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NRXJyb3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MTAyMzEzMzFFMzQ3QUVBMDAzRENEMzIgLyogTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEwMjMxMzQx
RTM0N0FFQTAwM0RDRDMyIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMDIzMTM1MUUzNDdBRUEw
MDNEQ0QzMiAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaDsgcGF0aCA9IGxpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
MDIzMTM2MUUzNDdBRUEwMDNEQ0QzMiAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMDIzMTNDMUUzNDdCMkEwMDNE
Q0QzMiAvKiBMaWJXZWJSVENNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTGliV2ViUlRDTWFjcm9zLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDTWFjcm9zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMDIzMTNEMUUzNDdCMkEwMDNEQ0QzMiAv
KiBMaWJXZWJSVENVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBMaWJXZWJSVENVdGlscy5jcHA7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTAyMzEzRTFFMzQ3QjJBMDAzRENEMzIg
LyogTGliV2ViUlRDVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGli
V2ViUlRDVXRpbHMuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MTAyMzEzRjFFMzQ3QjJBMDAzRENEMzIgLyogUlRDU3Ry
YXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUlRDU3RyYXRlZ3kuaDsg
cGF0aCA9IGxpYndlYnJ0Yy9SVENTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTAyMzE0NDFFMzQ4NEJGMDAzRENEMzIgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMDIz
MTQ1MUUzNDg0QkYwMDNEQ0QzMiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMDIzMTQ2MUUzNDg0QkYwMDNEQ0Qz
MiAvKiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEwMjMxNDcxRTM0ODRCRjAwM0RDRDMyIC8qIFJlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVzc2FnZUV2ZW50Q3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAw
QjkwQTBEIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTNGNjQgLyogUmVhZGFi
bGVCeXRlU3RyZWFtQ29udHJvbGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFi
bGVCeXRlU3RyZWFtQ29udHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNTA2NCw2ICsxNTA4OCw3IEBACiAJCTA3MjIxQjQ2MTdDRUMzMjcwMDg0OEU1MSAvKiBtZWRp
YXN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
NDEwMjMxMzIxRTM0N0FDRjAwM0RDRDMyIC8qIGxpYndlYnJ0YyAqLywKIAkJCQkwNzM3OTRFRDE5
RUUzNjQyMDBFNUEwNDUgLyogRE9NVVJMTWVkaWFTdHJlYW0uY3BwICovLAogCQkJCTE1RkNDOUZE
MUI0REY4NTYwMEU3MjMyNiAvKiBET01VUkxNZWRpYVN0cmVhbS5oICovLAogCQkJCTA3Mzc5NEVF
MTlFRTM2NDIwMEU1QTA0NSAvKiBET01VUkxNZWRpYVN0cmVhbS5pZGwgKi8sCkBAIC0xNTE4NSw2
ICsxNTIxMCw3IEBACiAJCTA3MjIxQjkyMTdDRjBBRDQwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDEwMjMxMzcx
RTM0N0IwRTAwM0RDRDMyIC8qIGxpYndlYnJ0YyAqLywKIAkJCQkwNzI5QjE0RDE3Q0ZDQ0EwMDA0
RjFENjAgLyogbWFjICovLAogCQkJCTA3RDZBNEY2MUJGMjMwN0QwMDE3NDE0NiAvKiBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggKi8sCiAJCQkJMDdCNzExNkExRDg5OUU2MzAwOUYwRkZC
IC8qIENhcHR1cmVEZXZpY2UuaCAqLywKQEAgLTE1MjU0LDYgKzE1MjgwLDEwIEBACiAJCQkJMDdF
RTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tICov
LAogCQkJCTRBMEZGQUEzMUFBRjVFRjYwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjLmNwcCAqLywKIAkJCQk0QTBGRkFBNDFBQUY1RUY2MDA2MjgwM0IgLyogUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYy5oICovLAorCQkJCTQxMDIzMTQ0MUUzNDg0QkYwMDNEQ0QzMiAv
KiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwICovLAorCQkJCTQxMDIzMTQ1MUUzNDg0
QkYwMDNEQ0QzMiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKKwkJCQk0MTAy
MzE0NjFFMzQ4NEJGMDAzRENEMzIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcCAq
LywKKwkJCQk0MTAyMzE0NzFFMzQ4NEJGMDAzRENEMzIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlLmggKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCiAJCQkJMDdENjM3M0YxQkIwQjExMzAwMjU2Q0U5IC8q
IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tICovLAogCQkJKTsKQEAgLTE2NTU1LDYg
KzE2NTg1LDI4IEBACiAJCQlwYXRoID0gbWh0bWw7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQk0MTAyMzEzMjFFMzQ3QUNGMDAzRENEMzIgLyogbGlid2VicnRjICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTAyMzEzMzFFMzQ3QUVB
MDAzRENEMzIgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgKi8sCisJCQkJNDEwMjMxMzUx
RTM0N0FFQTAwM0RDRDMyIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCAqLywKKwkJCQk0MTAy
MzEzNDFFMzQ3QUVBMDAzRENEMzIgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cCAqLywKKwkJCQk0MTAyMzEzNjFFMzQ3QUVBMDAzRENEMzIgLyogTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmggKi8sCisJCQkpOworCQkJbmFtZSA9IGxpYndlYnJ0YzsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTQxMDIzMTM3MUUzNDdCMEUwMDNEQ0QzMiAvKiBs
aWJ3ZWJydGMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTQxMDIzMTNDMUUzNDdCMkEwMDNEQ0QzMiAvKiBMaWJXZWJSVENNYWNyb3MuaCAqLywKKwkJCQk0
MTAyMzEzRDFFMzQ3QjJBMDAzRENEMzIgLyogTGliV2ViUlRDVXRpbHMuY3BwICovLAorCQkJCTQx
MDIzMTNFMUUzNDdCMkEwMDNEQ0QzMiAvKiBMaWJXZWJSVENVdGlscy5oICovLAorCQkJCTQxMDIz
MTNGMUUzNDdCMkEwMDNEQ0QzMiAvKiBSVENTdHJhdGVneS5oICovLAorCQkJKTsKKwkJCW5hbWUg
PSBsaWJ3ZWJydGM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk0MTUwRjlF
RDEyQjZFMDk5MDAwOEM4NjAgLyogc2hhZG93ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKQEAgLTI1MTE2LDYgKzI1MTY4LDcgQEAKIAkJCQlDNTU5MkY3ODFBOTJB
QTI4MDAxRjg4NjIgLyogQ2hhcmFjdGVyUHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTdCOEZGRDExNkFFN0Y5NjAwMzgzODhEIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTJBMEQwMDZDMUQwMEVGNkYyNiAvKiBDaGFy
c2V0RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEwMjMxM0IxRTM0N0IyOTAwM0RDRDMyIC8q
IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1
QjNEQjIxMjUxRjEyRDAwM0VGMjY5IC8qIENoZWNrYm94SW5wdXRUeXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlENjE5QTMwODE0NEUwMEJFMDA0QkMzMDIgLyogQ2hpbGRMaXN0TXV0YXRpb25TY29w
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMjAwOTc3RDNDMDAwNTgyNkQ5IC8qIENoaWxk
Tm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjU2ODQsNiArMjU3MzcsNyBAQAogCQkJCTRB
MERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUQwNUNFRDJBMEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTZDQkZCMTg3RjM3MDcwMEQ0NkJGNSAvKiBGb3Jt
YXRDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMDIzMTNBMUUzNDdCMjkwMDNEQ0Qz
MiAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTA2NjRG
ODE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxNEM3NjcwMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNBODA2MUUxRTAzQjU4NTAwOEExRjI2IC8qIEpTRG91YmxlUmFuZ2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjU3ODgsNiArMjU4NDIsNyBAQAogCQkJCUU0NDYxM0EyMENENjMzMTAwMEZBREE3
NSAvKiBIVE1MQXVkaW9FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREMxRjBBMTUy
MDU3MDBCMTJBNjggLyogSFRNTEJhc2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjI0
REU4RTE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQxMDIzMTQ5MUUzNDg0Q0MwMDNEQ0QzMiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFERTJDMEExNTJBQzgwMEIxMkE2OCAvKiBIVE1M
Qm9keUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGN0FBMEExNTY5NzgwMDBBNDIz
NCAvKiBIVE1MQlJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEzNjlEMjA5NzM3NEY2
MDBENzQ0NjMgLyogSFRNTEJ1dHRvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU5NjQs
NiArMjYwMTksNyBAQAogCQkJCTUxOThGN0FEMUJCREQzRUIwMEUyQ0M1RiAvKiBJREJUcmFuc2Fj
dGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOEVGNTM4MURDMTQ5RTIwMDhGMEMzOSAv
KiBJREJUcmFuc2FjdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NzA3Q0IwMUUyMDVF
RTMwMDAwNUJGNyAvKiBBdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDEwMjMxNDIxRTM0N0IzMTAwM0RDRDMyIC8qIExpYldlYlJUQ1V0aWxzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTYxMDNBRjFDQURCQTc3MDAxNkI0QzcgLyogSURCVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxODVGQ0IwMUJCNEM0RTgwMDEyODk4RiAvKiBJREJWZXJzaW9uQ2hhbmdl
RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTgxNEUwMUM3MzM4RUIwMEJGODVBQyAvKiBJ
ZENoYW5nZUludmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjA5Myw2ICsyNjE0OSw3
IEBACiAJCQkJMUFFOTZBOEQxRDFBMERERDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50TWV0
aG9kU2VsZWN0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFOTZBOEYxRDFBMERERDAw
Qjg2NzY4IC8qIEpTQXBwbGVQYXlTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU5NkE5
MTFEMUEwREREMDBCODY3NjggLyogSlNBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZl
bnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMDIzMTRCMUUzNDg0Q0MwMDNEQ0QzMiAvKiBSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTk2QTkzMUQx
QTBEREQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFEQjA5RDFDMTIzMDAwQkUzMjUgLyogSlNBdHRyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGREExNUU5RTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0J1
ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjI1MSw2ICsyNjMwOCw3IEBACiAJCQkJNTE4RjUw
MDIxOTRDQUMzQTAwODFCQUFFIC8qIEpTR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4
RjUwMDQxOTRDQUMzQTAwODFCQUFFIC8qIEpTR2FtZXBhZEJ1dHRvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkU4MERBNjQwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxMDIzMTQwMUUzNDdCMzEwMDNEQ0QzMiAvKiBMaWJXZWJSVENNYWNyb3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFODBEQTY2MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bv
c2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRBN0MxRjE4ODMyMkZDMDBDOTU0QjUgLyog
SlNHZXN0dXJlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0ODJCNzUyMTE5OENCNkIwMEJG
QjAwNSAvKiBKU0hhc2hDaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjg2OCw2ICsy
NjkyNiw3IEBACiAJCQkJQ0Q1MjA5RTQxQjBCRDgzODAwNzcxODRFIC8qIE1lZGlhUGxheWVyRW51
bXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NkYwRDBFMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCURGOUFGRDcy
MTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0MTAyMzE0MzFFMzQ3QjMxMDAzRENEMzIgLyogUlRDU3RyYXRl
Z3kuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzhCNUEzMTgwNDYzNDcwMDE2RTY4NSAvKiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE1
MDUyNEY0MUI3MTJGRjYwMDY5NkFBOSAvKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxM0U2MENENjgxQTkwMEZBREE3NSAvKiBN
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODg2NSw2ICsyODky
NCw3IEBACiAJCQkJRkQzMTYwMEYxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTGlzdGVuZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwMTIxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTm9k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAxNTEyQjAyNjc2MDBDMUEzNTkgLyogQXVk
aW9Ob2RlSW5wdXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDEwMjMxNEExRTM0ODRDQzAwM0RD
RDMyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGRDMxNjAxNzEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlT3V0cHV0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZEMzE2MDFDMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb1BhcmFtLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNERjRCNzE1MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0yOTU1Niw2ICsyOTYxNiw3IEBACiAJCQkJQTgxMzY5RDMwOTczNzRG
NjAwRDc0NDYzIC8qIEhUTUxCdXR0b25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
RjE5QUZEMDgyNDVFNTkwMDFFOUFCQyAvKiBIVE1MQ2FudmFzRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOERGM0ZEMTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNDEwMjMxNDExRTM0N0IzMTAwM0RDRDMyIC8qIExpYldlYlJU
Q1V0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0IzODY0MTIyODgzRTkwMEI4MUZGOCAv
KiBIVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzNFNTEwQjE4
REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTgz
MTIwQzcwMUM1NkYzRjYwMDFDQjExMiAvKiBIVE1MRGF0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0zMTI4Niw2ICszMTM0Nyw3IEBACiAJCQkJRDAxQTI3QUQxMEM5QkZEODAwMDI2QTQy
IC8qIFNwYWNlU3BsaXRTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjI2Q0RFMEUxMTQw
NDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUFBMkE1QUQ1MTZBNDg2MTQwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDEwMjMxMzkxRTM0N0IyNjAwM0RDRDMyIC8qIExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTJBNUFEMzE2QTQ4NjBEMDA5
NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUEy
QTVBRDExNkE0ODYwNzAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBQTJBNUFDRDE2QTQ4NUZBMDA5NzVBMjUgLyogU3BlZWNoU3ludGhl
c2lzVm9pY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTY5MCw2ICszMTc1Miw3IEBACiAJCQkJ
ODM3QjdEMjAxREMzRjU1MDAwRDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291
cmNlcyAqLywKIAkJCQk4M0M0NUI4QzFEQzJCNjY3MDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJs
ZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY1QTE1NDI3MTI3OTUzNEQwMEQwQjBDMCAvKiBW
YWxpZGF0aW9uTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTAyMzE0ODFFMzQ4NEND
MDAzRENEMzIgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZEMzE2MEFFMTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUyRDVBMThGMUM1NDU5MjMwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREU4M0RCMTE4M0M0NDA2MDAzMUVB
QTMgLyogVmlkZW9QbGF5YmFja1F1YWxpdHkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTgzOSw2
ICszMTkwMiw3IEBACiAJCQkJRjU1QjNEREYxMjUxRjEyRDAwM0VGMjY5IC8qIFdlZWtJbnB1dFR5
cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCNTAwQTQ0RUZDNzAwRjk5MkUwIC8qIFdo
ZWVsRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUxOTUxNkIxQjY1OThEMjAwREY2RUVG
IC8qIFdoZWVsRXZlbnREZWx0YUZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTAyMzEz
ODFFMzQ3QjI2MDAzRENEMzIgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyRUVFRTU1QzFCNjZBMDQ3MDA4RTJDQkMgLyogV2hlZWxFdmVudERlbHRhRmls
dGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FFMzM1RjExQUNCMDlFMjAwRTQwMUVGIC8q
IFdoZWVsRXZlbnRUZXN0VHJpZ2dlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzgwRjQ3MzA5
QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBmZmZiMGRkNGNkMjlkYjRi
ZmZjNTgwOWMzM2ZjOGZjYTNkNWNhNzQzLi5iNjE0YmNkMjlhZTczYzQ0NGFhZTliOTQxYWQyMThj
YTUwNGRhYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0
cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdp
ZXMuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgUGxhdGZvcm1TdHJhdGVnaWVzX2gKLSNkZWZpbmUgUGxhdGZvcm1T
dHJhdGVnaWVzX2gKKyNwcmFnbWEgb25jZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMy
LDYgKzMxLDcgQEAgY2xhc3MgQmxvYlJlZ2lzdHJ5OwogY2xhc3MgQ29va2llc1N0cmF0ZWd5Owog
Y2xhc3MgTG9hZGVyU3RyYXRlZ3k7CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRlZ3k7CitjbGFzcyBS
VENTdHJhdGVneTsKIAogY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzIHsKIHB1YmxpYzoKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9sb2FkZXJTdHJhdGVneSA9IGNyZWF0
ZUxvYWRlclN0cmF0ZWd5KCk7CiAgICAgICAgIHJldHVybiBtX2xvYWRlclN0cmF0ZWd5OwogICAg
IH0KLSAgICAKKwogICAgIFBhc3RlYm9hcmRTdHJhdGVneSogcGFzdGVib2FyZFN0cmF0ZWd5KCkK
ICAgICB7CiAgICAgICAgIGlmICghbV9wYXN0ZWJvYXJkU3RyYXRlZ3kpCkBAIC02Myw2ICs2Mywx
MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2Jsb2JSZWdpc3RyeTsKICAgICB9CiAKKyAg
ICBSVENTdHJhdGVneSYgcnRjU3RyYXRlZ3koKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3J0Y1N0
cmF0ZWd5KQorICAgICAgICAgICAgbV9ydGNTdHJhdGVneSA9ICZjcmVhdGVSVENTdHJhdGVneSgp
OworICAgICAgICByZXR1cm4gKm1fcnRjU3RyYXRlZ3k7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAg
ICAgUGxhdGZvcm1TdHJhdGVnaWVzKCkKICAgICB7CkBAIC03NywxNiArODQsMTYgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIExvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpID0g
MDsKICAgICB2aXJ0dWFsIFBhc3RlYm9hcmRTdHJhdGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0
ZWd5KCkgPSAwOwogICAgIHZpcnR1YWwgQmxvYlJlZ2lzdHJ5KiBjcmVhdGVCbG9iUmVnaXN0cnko
KSA9IDA7CisgICAgdmlydHVhbCBSVENTdHJhdGVneSYgY3JlYXRlUlRDU3RyYXRlZ3koKSA9IDA7
CiAKICAgICBDb29raWVzU3RyYXRlZ3kqIG1fY29va2llc1N0cmF0ZWd5IHsgfTsKICAgICBMb2Fk
ZXJTdHJhdGVneSogbV9sb2FkZXJTdHJhdGVneSB7IH07CiAgICAgUGFzdGVib2FyZFN0cmF0ZWd5
KiBtX3Bhc3RlYm9hcmRTdHJhdGVneSB7IH07CiAgICAgQmxvYlJlZ2lzdHJ5KiBtX2Jsb2JSZWdp
c3RyeSB7IH07CisgICAgUlRDU3RyYXRlZ3kqIG1fcnRjU3RyYXRlZ3kgeyBudWxscHRyIH07CiB9
OwogCiBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVN0cmF0ZWdpZXMqIHBsYXRmb3JtU3RyYXRlZ2ll
cygpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQbGF0Zm9ybVN0cmF0ZWdpZXMoUGxhdGZvcm1T
dHJhdGVnaWVzKik7Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQ
bGF0Zm9ybVN0cmF0ZWdpZXNfaAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01h
Y3Jvcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ01hY3Jvcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzZWMyZDViZTExMTJlMWI0MDhjNjMwMmM0N2I3
M2M0OGRkNTkyZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWFjcm9zLmgKQEAgLTAsMCArMSw0NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKExJQldFQlJUQ19FTkRQT0lOVCkKKworI2lmIFBMQVRGT1JNKElPUykKKyNk
ZWZpbmUgV0VCUlRDX0lPUworI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpCisjZGVmaW5lIFdF
QlJUQ19NQUMKKyNlbmRpZgorCisjZGVmaW5lIFdFQlJUQ19QT1NJWCAxCisjZGVmaW5lIF9DT01N
T05fSU5DTFVERURfCisKKyNlbmRpZiAvLyBFTkFCTEUoTElCV0VCUlRDX0VORFBPSU5UKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1V0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY2YTVlMTM4MDE4NmM1NWM2
ODA5YzE5MGVhY2RjYmJmNzcxYmU4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHAKQEAgLTAs
MCArMSwxNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDVXRpbHMuaCIKKworI2lmIEVO
QUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSA8d2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmZhY3Rv
cnkuaD4KKyNpbmNsdWRlIDx3ZWJydGMvYmFzZS9waHlzaWNhbHNvY2tldHNlcnZlci5oPgorI2lu
Y2x1ZGUgPHdlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvci5oPgorI2luY2x1ZGUg
PHdlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvQ2xhc3Nlcy92aWRlb3Rvb2xib3h2aWRlb2NvZGVj
ZmFjdG9yeS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0cnVjdCBQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzIDogcHVi
bGljIHJ0Yzo6TWVzc2FnZUhhbmRsZXIgeworICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVh
ZD4gbmV0d29ya1RocmVhZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHNpZ25h
bGluZ1RocmVhZDsKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlv
bkZhY3RvcnlJbnRlcmZhY2U+IGZhY3Rvcnk7CisgICAgYm9vbCBuZXR3b3JrVGhyZWFkV2l0aFNv
Y2tldFNlcnZlciB7IGZhbHNlIH07Citwcml2YXRlOgorICAgIHZvaWQgT25NZXNzYWdlKHJ0Yzo6
TWVzc2FnZSopOworfTsKKworc3RhdGljIGlubGluZSBQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRU
aHJlYWRzJiBzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHM+IGZhY3RvcnlBbmRUaHJlYWRz
OworICAgIHJldHVybiBmYWN0b3J5QW5kVGhyZWFkcy5nZXQoKTsKK30KKworc3RydWN0IE5ldHdv
cmtUaHJlYWRNZXNzYWdlRGF0YSA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VEYXRhIHsKKyAgICBleHBs
aWNpdCBOZXR3b3JrVGhyZWFkTWVzc2FnZURhdGEoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9u
KSA6IGZ1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKSB7IH0KKyAgICBGdW5jdGlvbjx2b2lkKCk+
IGZ1bmN0aW9uOworfTsKKwordm9pZCBQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzOjpP
bk1lc3NhZ2UocnRjOjpNZXNzYWdlKiBtZXNzYWdlKQoreworICAgIEFTU0VSVChtZXNzYWdlLT5t
ZXNzYWdlX2lkID09IDEpOworICAgIHN0YXRpY19jYXN0PE5ldHdvcmtUaHJlYWRNZXNzYWdlRGF0
YSo+KG1lc3NhZ2UtPnBkYXRhKS0+ZnVuY3Rpb24oKTsKK30KKwordm9pZCBjYWxsT25XZWJSVENO
ZXR3b3JrVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBQZWVyQ29u
bmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzJiB0aHJlYWRzID0gc3RhdGljRmFjdG9yeUFuZFRocmVh
ZHMoKTsKKyAgICB0aHJlYWRzLm5ldHdvcmtUaHJlYWQtPlBvc3QoUlRDX0ZST01fSEVSRSwgJnRo
cmVhZHMsIDEsIG5ldyBOZXR3b3JrVGhyZWFkTWVzc2FnZURhdGEoV1RGTW92ZShjYWxsYmFjaykp
KTsKK30KKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRo
cmVhZHMoKQoreworICAgIGF1dG8mIGZhY3RvcnlBbmRUaHJlYWRzID0gc3RhdGljRmFjdG9yeUFu
ZFRocmVhZHMoKTsKKworICAgIEFTU0VSVCghZmFjdG9yeUFuZFRocmVhZHMuZmFjdG9yeSk7CisK
KyAgICBhdXRvIHRocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDcmVhdGUoKTsKKyAgICBmYWN0b3J5QW5k
VGhyZWFkcy5uZXR3b3JrVGhyZWFkID0gZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZFdp
dGhTb2NrZXRTZXJ2ZXIgPyBydGM6OlRocmVhZDo6Q3JlYXRlV2l0aFNvY2tldFNlcnZlcigpIDog
cnRjOjpUaHJlYWQ6OkNyZWF0ZSgpOworICAgIGF1dG8gcmVzdWx0ID0gZmFjdG9yeUFuZFRocmVh
ZHMubmV0d29ya1RocmVhZC0+U3RhcnQoKTsKKyAgICBBU1NFUlQocmVzdWx0KTsKKworICAgIGZh
Y3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1RocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDcmVhdGUoKTsK
KyAgICByZXN1bHQgPSBmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQtPlN0YXJ0KCk7
CisgICAgQVNTRVJUKHJlc3VsdCk7CisKKyAgICBmYWN0b3J5QW5kVGhyZWFkcy5mYWN0b3J5ID0g
d2VicnRjOjpDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoZmFjdG9yeUFuZFRocmVhZHMubmV0
d29ya1RocmVhZC5nZXQoKSwgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZC5nZXQoKSwg
ZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLmdldCgpLCBudWxscHRyLCBuZXcgd2Vi
cnRjOjpWaWRlb1Rvb2xib3hWaWRlb0VuY29kZXJGYWN0b3J5KCkgLCBuZXcgd2VicnRjOjpWaWRl
b1Rvb2xib3hWaWRlb0RlY29kZXJGYWN0b3J5KCkpOworCisgICAgQVNTRVJUKGZhY3RvcnlBbmRU
aHJlYWRzLmZhY3RvcnkpOworfQorCit2b2lkIGluaXRpYWxpemVMaWJXZWJSVENJbnRlcm5hbHNX
aXRoU29ja2V0U2VydmVyKCkKK3sKKyAgICBzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpLm5ldHdv
cmtUaHJlYWRXaXRoU29ja2V0U2VydmVyID0gdHJ1ZTsKK30KKword2VicnRjOjpQZWVyQ29ubmVj
dGlvbkZhY3RvcnlJbnRlcmZhY2UmIHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpCit7CisgICAgaWYg
KCFzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpLmZhY3RvcnkpCisgICAgICAgIGluaXRpYWxpemVQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzKCk7CisgICAgcmV0dXJuICpzdGF0aWNGYWN0
b3J5QW5kVGhyZWFkcygpLmZhY3Rvcnk7Cit9CisKK3N0YXRpYyBydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24od2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgc3RkOjp1bmlxdWVfcHRyPGNy
aWNrZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcj4mJiBwb3J0QWxsb2NhdG9yKQoreworICAgIEFTU0VS
VChzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpLmZhY3RvcnkpOworCisgICAgd2VicnRjOjpQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiBjb25maWc7CisgICAgLy8gRklY
TUU6IFdlIG1pZ2h0IHdhbnQgdG8gcHV0IGEgZGVmYXVsdCBjb25maWd1cmF0aW9uIGhlcmUuCisK
KyAgICByZXR1cm4gc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKS5mYWN0b3J5LT5DcmVhdGVQZWVy
Q29ubmVjdGlvbihjb25maWcsIFdURk1vdmUocG9ydEFsbG9jYXRvciksIG51bGxwdHIsICZvYnNl
cnZlcik7Cit9CisKK3J0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2
ZXImIG9ic2VydmVyKQoreworICAgIEFTU0VSVChzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpLm5l
dHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsKKworICAgIGF1dG8mIGZhY3RvcnlBbmRUaHJl
YWRzID0gc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKTsKKyAgICBpZiAoIWZhY3RvcnlBbmRUaHJl
YWRzLmZhY3RvcnkpCisgICAgICAgIGluaXRpYWxpemVQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRU
aHJlYWRzKCk7CisKKyAgICByZXR1cm4gY3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIsIG51
bGxwdHIpOworfQorCitydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2Vy
dmVyJiBvYnNlcnZlciwgcnRjOjpOZXR3b3JrTWFuYWdlciYgbmV0d29ya01hbmFnZXIsIHJ0Yzo6
UGFja2V0U29ja2V0RmFjdG9yeSYgcGFja2V0U29ja2V0RmFjdG9yeSkKK3sKKyAgICBBU1NFUlQo
IXN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkubmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIp
OworCisgICAgYXV0byYgZmFjdG9yeUFuZFRocmVhZHMgPSBzdGF0aWNGYWN0b3J5QW5kVGhyZWFk
cygpOworICAgIGlmICghZmFjdG9yeUFuZFRocmVhZHMuZmFjdG9yeSkKKyAgICAgICAgaW5pdGlh
bGl6ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMoKTsKKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+IHBvcnRBbGxvY2F0b3I7CisgICAgc3Rh
dGljRmFjdG9yeUFuZFRocmVhZHMoKS5zaWduYWxpbmdUaHJlYWQtPkludm9rZTx2b2lkPihSVENf
RlJPTV9IRVJFLCBbJl0oKSB7CisgICAgICAgIHBvcnRBbGxvY2F0b3IucmVzZXQobmV3IGNyaWNr
ZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcigmbmV0d29ya01hbmFnZXIsICZwYWNrZXRTb2NrZXRGYWN0
b3J5KSk7CisgICAgfSk7CisKKyAgICByZXR1cm4gY3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2
ZXIsIFdURk1vdmUocG9ydEFsbG9jYXRvcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2JmNjFjMTdhODI5ZWZmYmRhMjA5NWM3YjVhMTExZWNiNTg2M2IyNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENVdGlscy5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSA8V2ViQ29yZS9MaWJX
ZWJSVENNYWNyb3MuaD4KKyNpbmNsdWRlIDx3ZWJydGMvYmFzZS9zY29wZWRfcmVmX3B0ci5oPgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBydGMgeworY2xhc3MgTmV0d29y
a01hbmFnZXI7CitjbGFzcyBQYWNrZXRTb2NrZXRGYWN0b3J5OworY2xhc3MgVGhyZWFkOworfQor
CituYW1lc3BhY2Ugd2VicnRjIHsKK2NsYXNzIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFj
ZTsKK2NsYXNzIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOworY2xhc3MgUGVlckNvbm5lY3Rpb25P
YnNlcnZlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRpYWxpemVMaWJXZWJSVENJbnRlcm5hbHNXaXRoU29ja2V0U2VydmVyKCk7CisKK3dlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlJiBwZWVyQ29ubmVjdGlvbkZhY3Rvcnko
KTsKK1dFQkNPUkVfRVhQT1JUIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9u
T2JzZXJ2ZXImLCBydGM6Ok5ldHdvcmtNYW5hZ2VyJiwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5
Jik7CitXRUJDT1JFX0VYUE9SVCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVj
dGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlv
bk9ic2VydmVyJik7CisKK1dFQkNPUkVfRVhQT1JUIHZvaWQgY2FsbE9uV2ViUlRDTmV0d29ya1Ro
cmVhZChGdW5jdGlvbjx2b2lkKCk+JiYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9SVENTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1JUQ1N0cmF0ZWd5LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjgxYWI5N2Y2ZThhZTc5YmZkMGNmMjJlODBhMWFlNDY1MjE0NzEwMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9SVENTdHJh
dGVneS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIldlYkNvcmUvTGliV2ViUlRDTWFjcm9zLmgiCisjaW5jbHVkZSA8d2VicnRjL2Jhc2Uv
c2NvcGVkX3JlZl9wdHIuaD4KKworbmFtZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTsKK2NsYXNzIFBlZXJDb25uZWN0aW9uT2JzZXJ2ZXI7Cit9CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgUlRDU3RyYXRlZ3kgeworcHVi
bGljOgorICAgIHZpcnR1YWwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25P
YnNlcnZlciYpID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflJUQ1N0cmF0ZWd5KCkg
eyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MjY3NGExNzRlZGEwNDBmOTA2NmJk
ZjY0ODUyOTQzOWYwYzQ3YmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcApAQCAt
MCwwICsxLDIwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2UuaCIKKworI2lmIEVOQUJMRShMSUJXRUJSVENfRU5EUE9JTlQpCisKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkludFJl
Y3QuaCIKKyNpbmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKKyNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgorCisjaW5jbHVkZSAiQ29yZU1lZGlhU29mdExpbmsuaCIKKyNpbmNsdWRlICJD
b3JlVmlkZW9Tb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxSZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2U+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRl
KHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZhY2U+JiYgdmlkZW9U
cmFjaywgU3RyaW5nJiYgdHJhY2tJZCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlv
bmFyeVJlZj4gY29uZm9ybWVyT3B0aW9ucyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0
YWJsZSgwLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlv
bmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgY29uc3QgT1NUeXBlIGltYWdlRm9ybWF0ID0ga0NW
UGl4ZWxGb3JtYXRUeXBlXzMyQkdSQTsKKyAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGltYWdl
Rm9ybWF0TnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShudWxscHRyLCAga0NGTnVtYmVy
SW50VHlwZSwgICZpbWFnZUZvcm1hdCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNvbmZv
cm1lck9wdGlvbnMuZ2V0KCksIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LCBpbWFn
ZUZvcm1hdE51bWJlci5nZXQoKSk7CisgICAgUGl4ZWxCdWZmZXJDb25mb3JtZXJDViBjb25mb3Jt
ZXIoY29uZm9ybWVyT3B0aW9ucy5nZXQoKSk7CisKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVm
KCpuZXcgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlKFdURk1vdmUodmlkZW9UcmFjayksIFdU
Rk1vdmUodHJhY2tJZCksIGNvbmZvcm1lck9wdGlvbnMuZ2V0KCkpKTsKKyAgICBzb3VyY2UtPnN0
YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgIHJldHVybiBzb3VyY2U7Cit9CisKK1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZhY2U+JiYgdmlkZW9UcmFjaywgU3RyaW5n
JiYgdmlkZW9UcmFja0lkLCBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNvbmZvcm1lck9wdGlvbnMp
CisgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFdURk1vdmUodmlkZW9UcmFja0lkKSwgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8sIFN0cmluZygpKQorICAgICwgbV92aWRlb1RyYWNr
KFdURk1vdmUodmlkZW9UcmFjaykpCisgICAgLCBtX2NvbmZvcm1lcihjb25mb3JtZXJPcHRpb25z
KQoreworICAgIG1fY3VycmVudFNldHRpbmdzLnNldFdpZHRoKDY0MCk7CisgICAgbV9jdXJyZW50
U2V0dGluZ3Muc2V0SGVpZ2h0KDQ4MCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQoreworICAgIGlmIChtX2lzUHJvZHVjaW5nRGF0
YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSB0cnVlOworICAg
IGlmIChtX3ZpZGVvVHJhY2spCisgICAgICAgIG1fdmlkZW9UcmFjay0+QWRkT3JVcGRhdGVTaW5r
KHRoaXMsIHJ0Yzo6VmlkZW9TaW5rV2FudHMoKSk7Cit9CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKCFtX2lzUHJvZHVj
aW5nRGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxz
ZTsKKyAgICBpZiAobV92aWRlb1RyYWNrKQorICAgICAgICBtX3ZpZGVvVHJhY2stPlJlbW92ZVNp
bmsodGhpcyk7Cit9CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpPbkZyYW1l
KGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUpCit7CisgICAgaWYgKCFtX2lzUHJvZHVj
aW5nRGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBidWZmZXIgPSBmcmFtZS52aWRl
b19mcmFtZV9idWZmZXIoKTsKKyAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyID0gc3Rh
dGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oYnVmZmVyLT5uYXRpdmVfaGFuZGxlKCkpOworCisg
ICAgLy8gRklYTUU6IENvbnZlcnQgdGltaW5nIGluZm9ybWF0aW9uIGZyb20gVmlkZW9GcmFtZSB0
byBDTVNhbXBsZVRpbWluZ0luZm8uCisgICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZ0luZm87
CisgICAgdGltaW5nSW5mby5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSBrQ01UaW1lSW52YWxpZDsK
KyAgICB0aW1pbmdJbmZvLmRlY29kZVRpbWVTdGFtcCA9IGtDTVRpbWVJbnZhbGlkOworICAgIHRp
bWluZ0luZm8uZHVyYXRpb24gPSBrQ01UaW1lSW52YWxpZDsKKworICAgIENNVmlkZW9Gb3JtYXRE
ZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbjsKKyAgICBPU1N0YXR1cyBvc3RhdHVzID0g
Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlRm9ySW1hZ2VCdWZmZXIoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgKENWSW1hZ2VCdWZmZXJSZWYpcGl4ZWxCdWZmZXIsICZmb3JtYXREZXNjcmlwdGlv
bik7CisgICAgaWYgKG9zdGF0dXMgIT0gbm9FcnIpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gaW5pdGlhbGl6ZSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb246ICVkIiwgb3N0YXR1cyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVC
dWZmZXI7CisgICAgb3N0YXR1cyA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHlXaXRoSW1hZ2VC
dWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKENWSW1hZ2VCdWZmZXJSZWYpcGl4ZWxCdWZmZXIs
IGZvcm1hdERlc2NyaXB0aW9uLCAmdGltaW5nSW5mbywgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYg
KG9zdGF0dXMgIT0gbm9FcnIpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRl
IHRoZSBzYW1wbGUgYnVmZmVyOiAlZCIsIG9zdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIENGUmVsZWFzZShmb3JtYXREZXNjcmlwdGlvbik7CisKKyAgICBSZXRhaW5QdHI8Q01T
YW1wbGVCdWZmZXJSZWY+IHNhbXBsZSA9IHNhbXBsZUJ1ZmZlcjsKKworICAgIC8vIEZvciB0aGUg
bW9tZW50LCBqdXN0IHByZXRlbmQgZnJhbWVzIHNob3VsZCBiZSByZW5kZXJlZCBhc2FwLgorICAg
IENGQXJyYXlSZWYgYXR0YWNobWVudHNBcnJheSA9IENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0
YWNobWVudHNBcnJheShzYW1wbGVCdWZmZXIsIHRydWUpOworICAgIGZvciAoQ0ZJbmRleCBpID0g
MDsgaSA8IENGQXJyYXlHZXRDb3VudChhdHRhY2htZW50c0FycmF5KTsgKytpKSB7CisgICAgICAg
IENGTXV0YWJsZURpY3Rpb25hcnlSZWYgYXR0YWNobWVudHMgPSAoQ0ZNdXRhYmxlRGljdGlvbmFy
eVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KGF0dGFjaG1lbnRzQXJyYXksIGkpOworICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShhdHRhY2htZW50cywga0NNU2FtcGxlQXR0YWNobWVudEtl
eV9EaXNwbGF5SW1tZWRpYXRlbHksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICB9CisKKyAgICB1bnNp
Z25lZCB3aWR0aCA9IGZyYW1lLndpZHRoKCk7CisgICAgdW5zaWduZWQgaGVpZ2h0ID0gZnJhbWUu
aGVpZ2h0KCk7CisgICAgUmVmUHRyPFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgc2FtcGxlID0gV1RGTW92ZShzYW1wbGUpLCB3aWR0aCwgaGVp
Z2h0XSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPnByb2Nlc3NOZXdTYW1wbGUoc2FtcGxlLmdl
dCgpLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9KTsKK30KKwordm9pZCBSZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2U6OnByb2Nlc3NOZXdTYW1wbGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCB1
bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQoreworICAgIG1fYnVmZmVyID0gc2FtcGxl
OworICAgIGlmICh3aWR0aCAhPSBtX2N1cnJlbnRTZXR0aW5ncy53aWR0aCgpIHx8IGhlaWdodCAh
PSBtX2N1cnJlbnRTZXR0aW5ncy5oZWlnaHQoKSkgeworICAgICAgICBtX2N1cnJlbnRTZXR0aW5n
cy5zZXRXaWR0aCh3aWR0aCk7CisgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldEhlaWdodCho
ZWlnaHQpOworICAgICAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAgIH0KKworICAgIG1lZGlh
RGF0YVVwZGF0ZWQoTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlKSk7Cit9CisKK3N0
YXRpYyBpbmxpbmUgdm9pZCBkcmF3SW1hZ2UoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBDR0lt
YWdlUmVmIGltYWdlLCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgYXV0byYgY29udGV4dCA9IGlt
YWdlQnVmZmVyLmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgp
ICsgcmVjdC5oZWlnaHQoKSk7CisgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsK
KyAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxv
dyk7CisgICAgSW50UmVjdCBwYWludFJlY3QoSW50UG9pbnQoMCwgMCksIEludFNpemUocmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCksIENHUmVjdE1ha2UoMCwgMCwgcGFpbnRSZWN0LndpZHRoKCksIHBh
aW50UmVjdC5oZWlnaHQoKSksIGltYWdlKTsKK30KKworUmVmUHRyPEltYWdlPiBSZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2U6OmN1cnJlbnRGcmFtZUltYWdlKCkKK3sKKyAgICBpZiAoIW1fYnVm
ZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEZsb2F0UmVjdCByZWN0KDAsIDAs
IG1fY3VycmVudFNldHRpbmdzLndpZHRoKCksIG1fY3VycmVudFNldHRpbmdzLmhlaWdodCgpKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShyZWN0LnNpemUoKSwgVW5hY2NlbGVyYXRlZCk7CisgICAgQ1ZQaXhlbEJ1ZmZl
clJlZiBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KENNU2FtcGxl
QnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9idWZmZXIuZ2V0KCkpKTsKKyAgICBhdXRvIGltYWdlID0g
bV9jb25mb3JtZXIuY3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpOworICAg
IGRyYXdJbWFnZSgqaW1hZ2VCdWZmZXIsIGltYWdlLmdldCgpLCByZWN0KTsKKworICAgIHJldHVy
biBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSk7Cit9CisK
K3ZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sK
KyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBTaGFy
ZSBtb3JlIGNvZGUgd2l0aCBjdXJyZW50RnJhbWVJbWFnZQorICAgIEZsb2F0UmVjdCBmdWxsUmVj
dCgwLCAwLCBtX2N1cnJlbnRTZXR0aW5ncy53aWR0aCgpLCBtX2N1cnJlbnRTZXR0aW5ncy5oZWln
aHQoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoZnVsbFJlY3Quc2l6ZSgpLCBVbmFjY2VsZXJhdGVkKTsKKyAgICBD
VlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJl
Zj4oQ01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihtX2J1ZmZlci5nZXQoKSkpOworICAgIGF1
dG8gaW1hZ2UgPSBtX2NvbmZvcm1lci5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1
ZmZlcik7CisgICAgZHJhd0ltYWdlKCppbWFnZUJ1ZmZlciwgaW1hZ2UuZ2V0KCksIGZ1bGxSZWN0
KTsKKworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsK
KyAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxv
dyk7CisgICAgSW50UmVjdCBwYWludFJlY3QoSW50UG9pbnQoMCwgMCksIEludFNpemUocmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlQnVm
ZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpLCByZWN0KTsKK30KKworUmVmUHRy
PFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZTo6Y2FwYWJpbGl0aWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jYXBhYmlsaXRpZXM7
Cit9CisKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlOjpzZXR0aW5ncygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY3VycmVudFNl
dHRpbmdzOworfQorCitSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIFJl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c3VwcG9ydGVkQ29uc3RyYWludHMoKQoreworICAg
IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTElCV0VCUlRDX0VORFBPSU5UKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiOGJjNzlkYTZhNDc2NzMz
N2Q2ZTMxMmI1ZjVjOTNhMTYwYTliOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgK
QEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTElCV0VCUlRDX0VORFBPSU5UKQorCisj
aW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCisjaW5jbHVkZSAiUGl4ZWxCdWZmZXJDb25mb3Jt
ZXJDVi5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3ZWJy
dGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJS
ZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UsIHByaXZhdGUgcnRjOjpW
aWRlb1NpbmtJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U+IGNyZWF0ZShydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CisgICAgflJl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZSgpIHsgc3RvcFByb2R1Y2luZ0RhdGEoKTsgfQorCitw
cml2YXRlOgorICAgIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZShydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJiwgQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZik7CisKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOworICAg
IHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSAgZmluYWw7CisKKyAgICBSZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7CisgICAg
Y29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFs
OworCisgICAgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMoKSB7IHJldHVybiAqbV9jb25z
dHJhaW50cy5nZXQoKTsgfQorICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJh
aW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKKworICAgIHZvaWQgcHJvY2Vzc05ld1NhbXBs
ZShDTVNhbXBsZUJ1ZmZlclJlZiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKKyAgICBSZWZQdHI8SW1h
Z2U+IGN1cnJlbnRGcmFtZUltYWdlKCkgZmluYWw7CisKKyAgICB2b2lkIHBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwor
CisgICAgdm9pZCBPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpIGZpbmFsOworICAg
IGJvb2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1Byb2R1Y2lu
Z0RhdGEgJiYgbV9idWZmZXI7IH0KKyAgICBib29sIGFwcGx5U2l6ZShjb25zdCBJbnRTaXplJikg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgUmVmUHRyPEltYWdlPiBtX2N1cnJlbnRJbWFn
ZTsKKworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJlbnRTZXR0aW5nczsK
KyAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRD
b25zdHJhaW50czsKKyAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4g
bV9jYXBhYmlsaXRpZXM7CisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IG1fY29uc3RyYWlu
dHM7CisgICAgYm9vbCBtX2lzUHJvZHVjaW5nRGF0YSB7IGZhbHNlIH07CisgICAgcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4gbV92aWRlb1RyYWNrOworICAg
IFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gbV9idWZmZXI7CisgICAgUGl4ZWxCdWZmZXJD
b25mb3JtZXJDViBtX2NvbmZvcm1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShMSUJXRUJSVENfRU5EUE9JTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwZTkxMGNiYzUzODZjMWY3YTI2
OTFlM2FlZTc1NzA1MzBlODZlM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcApA
QCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2UuaCIKKworI2lmIEVOQUJMRShMSUJXRUJSVENfRU5EUE9JTlQpCisKKyNpbmNsdWRlIDx3
ZWJydGMvY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaD4KKworI2lu
Y2x1ZGUgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UoUmVm
PFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgdmlkZW9Tb3VyY2UpCisgICAgOiBtX3ZpZGVvU291cmNl
KFdURk1vdmUodmlkZW9Tb3VyY2UpKQoreworICAgIG1fdmlkZW9Tb3VyY2UtPmFkZE9ic2VydmVy
KHRoaXMpOworfQorCitib29sIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6R2V0U3RhdHMo
U3RhdHMqKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2U6OkFkZE9yVXBkYXRlU2luayhydGM6OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJy
dGM6OlZpZGVvRnJhbWU+KiBzaW5rLCBjb25zdCBydGM6OlZpZGVvU2lua1dhbnRzJikKK3sKKyAg
ICAvLyBGSVhNRTogc3VwcG9ydCBzaW5rV2FudHMKKyAgICBpZiAoIW1fc2lua3MuY29udGFpbnMo
c2luaykpCisgICAgICAgIG1fc2lua3MuYXBwZW5kKHNpbmspOworfQorCit2b2lkIFJlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZTo6UmVtb3ZlU2luayhydGM6OlZpZGVvU2lua0ludGVyZmFjZTx3
ZWJydGM6OlZpZGVvRnJhbWU+KiBzaW5rKQoreworICAgIG1fc2lua3MucmVtb3ZlRmlyc3Qoc2lu
ayk7Cit9CisKKy8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBtYWRlIG1vcmUgZWZm
aWNpZW50OgorLy8gLSBJdCBhbGxvY2F0ZXMgb25lIEk0MjBCdWZmZXIgYnVmZmVyIGZvciBlYWNo
IGNhbGwuCisvLyAtIEluIGNhc2Ugb2Yga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhQbGFu
YXIsIHdlIGNhbiBwcm9iYWJseSBtZW1jcHkgdGhlIGRhdGEgZGlyZWN0bHkuCisvLyAtVGhlIG51
bWJlciBvZiBzdXBvcnRlZCBjb252ZXJzaW9ucyAoMyBjdXJyZW50bHkpIHNob3VsZCBiZSByZWR1
Y2VkIHRvIDEgb3IgMi4KK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpzb3VyY2VI
YXNNb3JlTWVkaWFEYXRhKE1lZGlhU2FtcGxlJiBzYW1wbGUpCit7CisgICAgaWYgKCFtX3Npbmtz
LnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKHNhbXBsZS5wbGF0Zm9ybVNh
bXBsZSgpLnR5cGUgPT0gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSk7CisgICAg
YXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KENNU2FtcGxl
QnVmZmVyR2V0SW1hZ2VCdWZmZXIoc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2Ft
cGxlQnVmZmVyKSk7CisgICAgYXV0byBwaXhlbEZvcm1hdFR5cGUgPSBDVlBpeGVsQnVmZmVyR2V0
UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKTsKKworICAgIENWUGl4ZWxCdWZmZXJMb2NrQmFz
ZUFkZHJlc3MocGl4ZWxCdWZmZXIsIDApOworICAgIHVpbnQ4X3QqIHNyYyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUocGl4ZWxC
dWZmZXIsIDApKTsKKworICAgIC8vIEZJWE1FOiBTaG91bGRuJ3Qgd2UgdXNlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OnNpemUoKT8KKyAgICBjb25zdCBhdXRvJiBzZXR0aW5ncyA9IG1fdmlkZW9Tb3Vy
Y2UtPnNldHRpbmdzKCk7CisKKyAgICBhdXRvIGRlc3QgPSB3ZWJydGM6Okk0MjBCdWZmZXI6OkNy
ZWF0ZShzZXR0aW5ncy53aWR0aCgpLCBzZXR0aW5ncy5oZWlnaHQoKSk7CisKKyAgICBpZiAocGl4
ZWxGb3JtYXRUeXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4UGxhbmFyKQorICAg
ICAgICB3ZWJydGM6OkNvbnZlcnRUb0k0MjAod2VicnRjOjprSTQyMCwgc3JjLCAwLCAwLCBzZXR0
aW5ncy53aWR0aCgpLCBzZXR0aW5ncy5oZWlnaHQoKSwgMCwgd2VicnRjOjprVmlkZW9Sb3RhdGlv
bl8wLCBkZXN0KTsKKyAgICBlbHNlIGlmIChwaXhlbEZvcm1hdFR5cGUgPT0ga0NWUGl4ZWxGb3Jt
YXRUeXBlXzMyQkdSQSkKKyAgICAgICAgd2VicnRjOjpDb252ZXJ0VG9JNDIwKHdlYnJ0Yzo6a0FS
R0IsIHNyYywgMCwgMCwgc2V0dGluZ3Mud2lkdGgoKSwgc2V0dGluZ3MuaGVpZ2h0KCksIDAsIHdl
YnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCwgZGVzdCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VS
VChwaXhlbEZvcm1hdFR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQVJHQik7CisgICAgICAg
IHdlYnJ0Yzo6Q29udmVydFRvSTQyMCh3ZWJydGM6OmtCR1JBLCBzcmMsIDAsIDAsIHNldHRpbmdz
LndpZHRoKCksIHNldHRpbmdzLmhlaWdodCgpLCAwLCB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzAs
IGRlc3QpOworICAgIH0KKworICAgIENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhwaXhl
bEJ1ZmZlciwgMCk7CisgICAgd2VicnRjOjpWaWRlb0ZyYW1lIGZyYW1lKGRlc3QsIDAsIDAsICB3
ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzApOworICAgIGZvciAoYXV0byogc2luayA6IG1fc2lua3Mp
CisgICAgICAgIHNpbmstPk9uRnJhbWUoZnJhbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTElCV0VCUlRDX0VORFBPSU5UKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlM2JiMDNkZWE4ZTM3NTY1
MjliNWJmNWZkMmVjNTEwNmRjODU5YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmgK
QEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExJQldFQlJUQ19FTkRQT0lOVCkKKworI2lu
Y2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2Uu
aCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+CisjaW5jbHVk
ZSA8d2VicnRjL2Jhc2Uvb3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxS
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+LCBwdWJsaWMgd2VicnRjOjpWaWRlb1RyYWNrU291
cmNlSW50ZXJmYWNlLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZT4gY3JlYXRl
KFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHZpZGVvU291cmNlKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZShXVEZNb3ZlKHZpZGVvU291cmNlKSkp
OyB9CisKKyAgICBpbnQgQWRkUmVmKCkgY29uc3QgZmluYWwgeyByZWYoKTsgcmV0dXJuIHJlZkNv
dW50KCk7IH0KKyAgICBpbnQgUmVsZWFzZSgpIGNvbnN0IGZpbmFsIHsgZGVyZWYoKTsgcmV0dXJu
IHJlZkNvdW50KCk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYpOworCisgICAgLy8gTm90aWZp
ZXIgQVBJCisgICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0Yzo6T2JzZXJ2ZXJJbnRlcmZh
Y2UqKSBmaW5hbCB7IH0KKyAgICB2b2lkIFVucmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2Vy
dmVySW50ZXJmYWNlKikgZmluYWwgeyB9CisKKyAgICAvLyBWaWRlb1RyYWNrU291cmNlSW50ZXJm
YWNlIEFQSQorICAgIGJvb2wgaXNfc2NyZWVuY2FzdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgcnRjOjpPcHRpb25hbDxib29sPiBuZWVkc19kZW5vaXNpbmcoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBydGM6Ok9wdGlvbmFsPGJvb2w+KCk7IH0KKyAgICBib29sIEdldFN0YXRz
KFN0YXRzKikgZmluYWw7CisKKyAgICAvLyBNZWRpYVNvdXJjZUludGVyZmFjZSBBUEkKKyAgICBT
b3VyY2VTdGF0ZSBzdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNvdXJjZVN0YXRlKCk7IH0K
KyAgICBib29sIHJlbW90ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8v
IHJ0Yzo6VmlkZW9Tb3VyY2VJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPiBBUEkKKyAgICB2
b2lkIEFkZE9yVXBkYXRlU2luayhydGM6OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVv
RnJhbWU+KiwgY29uc3QgcnRjOjpWaWRlb1NpbmtXYW50cyYpIGZpbmFsOworICAgIHZvaWQgUmVt
b3ZlU2luayhydGM6OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+KikgZmlu
YWw7CisKKyAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciBBUEkKKyAgICBib29s
IHByZXZlbnRTb3VyY2VGcm9tU3RvcHBpbmcoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZvaWQgc291cmNlU3RvcHBlZCgpIGZpbmFsIHsgfQorICAgIHZvaWQgc291cmNlTXV0ZWRDaGFu
Z2VkKCkgZmluYWwgeyB9CisgICAgdm9pZCBzb3VyY2VTZXR0aW5nc0NoYW5nZWQoKSBmaW5hbCB7
IH0KKyAgICB2b2lkIHNvdXJjZUhhc01vcmVNZWRpYURhdGEoTWVkaWFTYW1wbGUmKSBmaW5hbDsK
KworICAgIFZlY3RvcjxydGM6OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+
Kj4gbV9zaW5rczsKKyAgICBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gbV92aWRlb1NvdXJjZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShMSUJXRUJS
VENfRU5EUE9JTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDJkMDQzYTA2ZTU0ZDFjZGRlNGNlYTg1
MGM2MjM4ODg5ZDczYzA5MWYuLmVlY2M2YjQyMjliZjVlYjEwYjlmODIxMjdjOWQ2Nzk5NmVlZWJh
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xNjUsNiArMTY1LDcgQEAgRU5BQkxFX1NQRUVDSF9T
WU5USEVTSVMgPSBFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUzsKIEVOQUJMRV9TVUJUTEVfQ1JZUFRP
ID0gRU5BQkxFX1NVQlRMRV9DUllQVE87CiBFTkFCTEVfU1ZHX0ZPTlRTID0gRU5BQkxFX1NWR19G
T05UUzsKIEVOQUJMRV9XRUJfUlRDID0gRU5BQkxFX1dFQl9SVEM7CitFTkFCTEVfTElCV0VCUlRD
X0VORFBPSU5UID0gRU5BQkxFX0xJQldFQlJUQ19FTkRQT0lOVDsKIEVOQUJMRV9XUklUQUJMRV9T
VFJFQU1fQVBJID0gRU5BQkxFX1dSSVRBQkxFX1NUUkVBTV9BUEk7CiAKIEVOQUJMRV9URUxFUEhP
TkVfTlVNQkVSX0RFVEVDVElPTiA9IEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTjsK
QEAgLTIxNiw0ICsyMTcsNCBAQCBFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTX0lGX05PVF8gPSAkKEVO
QUJMRV9WQVJJQVRJT05fRk9OVFNfSUZfTk9UX05PKTsKIEVOQUJMRV9WQVJJQVRJT05fRk9OVFNf
SUZfTk9UX05PID0gRU5BQkxFX1ZBUklBVElPTl9GT05UUzsKIEVOQUJMRV9WQVJJQVRJT05fRk9O
VFNfSUZfTk9UX1lFUyA9IDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNG
T1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRF
RF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FQUExFX1BBWSkgJChFTkFCTEVfQVRUQUNI
TUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJ
VElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChF
TkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVO
QUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05f
QlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQ
VEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklF
TlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJ
T05TKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVW
RUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVO
QUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAk
KEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykg
JChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFC
TEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxF
X0ZFVENIX0FQSSkgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURf
RVZFTlRTKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFC
TEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NB
VElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lO
X1dPUktFUlMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5B
QkxFX0lOVEVSU0VDVElPTl9PQlNFUlZFUikgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dF
U1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQo
RU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRU
UklCVVRFKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJM
RV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQUNfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX01B
VEhNTCkgJChFTkFCTEVfTUVESUFfQ0FQVFVSRSkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NS
SVBUKSAkKEVOQUJMRV9NRURJQV9TRVNTSU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5B
QkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FRElBX1NUUkVBTSkgJChFTkFCTEVfTUVU
RVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkg
JChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NP
TkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lO
KSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5B
QkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFQURBQkxF
X1NUUkVBTV9BUEkpICQoRU5BQkxFX1JFQURBQkxFX0JZVEVfU1RSRUFNX0FQSSkgJChFTkFCTEVf
UkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxF
X1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJM
RV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU1BF
RUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRT
KSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9BVVRP
U0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElO
RykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykgJChF
TkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVO
QUJMRV9WSURFTykgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCX0FO
SU1BVElPTlMpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFC
TEVfV0VCX1JUQykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQo
RU5BQkxFX1VTRVJfVElNSU5HKSAkKEVOQUJMRV9XRUJBU1NFTUJMWSkgJChFTkFCTEVfV0VCR0wp
ICQoRU5BQkxFX1dFQkdMMikgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVO
QUJMRV9XUklUQUJMRV9TVFJFQU1fQVBJKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5F
UyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZB
UykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BUFBM
RV9QQVkpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChFTkFCTEVfQVZGX0NBUFRJT05T
KSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVO
QUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9D
T05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFC
TEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQo
RU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAk
KEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVU
SU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVO
QUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQo
RU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NV
U1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxF
X0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RB
VEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRU5D
UllQVEVEX01FRElBKSAkKEVOQUJMRV9GRVRDSF9BUEkpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxf
MikgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVf
RlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0FN
RVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFC
TEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
VElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5B
QkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVf
SU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9JTlRFUlNFQ1RJT05fT0JTRVJWRVIpICQoRU5BQkxF
X0lOVEwpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RPVUNIX0VW
RU5UUykgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9LRVlCT0FSRF9LRVlfQVRUUklCVVRFKSAkKEVO
QUJMRV9LRVlCT0FSRF9DT0RFX0FUVFJJQlVURSkgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1Jf
UFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0xFR0FD
WV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJM
RV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RV
UkVfRVZFTlRTKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5B
QkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFC
TEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJ
QV9TVFJFQU0pICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJM
RV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAk
KEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykg
JChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9Q
Uk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FV
T1RBKSAkKEVOQUJMRV9SRUFEQUJMRV9TVFJFQU1fQVBJKSAkKEVOQUJMRV9SRUFEQUJMRV9CWVRF
X1NUUkVBTV9BUEkpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFUVVFU1Rf
QVVUT0NPTVBMRVRFKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9S
RVNPVVJDRV9VU0FHRSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0Vf
Q09OVFJPTFMpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NVQlRMRV9DUllQ
VE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJ
T04pICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVO
QUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJM
RV9WQVJJQVRJT05fRk9OVFMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSAkKEVO
QUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1Nf
TUVESUEpICQoRU5BQkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5B
QkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX0xJQldFQlJUQ19FTkRQT0lOVCkgJChFTkFCTEVfV0VC
X1JUQykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxF
X1VTRVJfVElNSU5HKSAkKEVOQUJMRV9XRUJBU1NFTUJMWSkgJChFTkFCTEVfV0VCR0wpICQoRU5B
QkxFX1dFQkdMMikgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9X
UklUQUJMRV9TVFJFQU1fQVBJKSAkKEVOQUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dl
YktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggMmQwNDNh
MDZlNTRkMWNkZGU0Y2VhODUwYzYyMzg4ODlkNzNjMDkxZi4uZWVjYzZiNDIyOWJmNWViMTBiOWY4
MjEyN2M5ZDY3OTk2ZWVlYmExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTE2NSw2ICsxNjUsNyBAQCBFTkFC
TEVfU1BFRUNIX1NZTlRIRVNJUyA9IEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTOwogRU5BQkxFX1NV
QlRMRV9DUllQVE8gPSBFTkFCTEVfU1VCVExFX0NSWVBUTzsKIEVOQUJMRV9TVkdfRk9OVFMgPSBF
TkFCTEVfU1ZHX0ZPTlRTOwogRU5BQkxFX1dFQl9SVEMgPSBFTkFCTEVfV0VCX1JUQzsKK0VOQUJM
RV9MSUJXRUJSVENfRU5EUE9JTlQgPSBFTkFCTEVfTElCV0VCUlRDX0VORFBPSU5UOwogRU5BQkxF
X1dSSVRBQkxFX1NUUkVBTV9BUEkgPSBFTkFCTEVfV1JJVEFCTEVfU1RSRUFNX0FQSTsKIAogRU5B
QkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OID0gRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJf
REVURUNUSU9OOwpAQCAtMjE2LDQgKzIxNyw0IEBAIEVOQUJMRV9WQVJJQVRJT05fRk9OVFNfSUZf
Tk9UXyA9ICQoRU5BQkxFX1ZBUklBVElPTl9GT05UU19JRl9OT1RfTk8pOwogRU5BQkxFX1ZBUklB
VElPTl9GT05UU19JRl9OT1RfTk8gPSBFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTOwogRU5BQkxFX1ZB
UklBVElPTl9GT05UU19JRl9OT1RfWUVTID0gOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJM
RV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxF
X0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVO
QUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVf
Q0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFT
X1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ09OVEVOVF9GSUxU
RVJJTkcpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hf
REVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1Nf
REVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NT
X0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFC
TEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVfQ1NTX1NF
TEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9DU1Mz
X1RFWFQpICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1F
X0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBX1RSQU5T
RkVSX0lURU1TKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVN
RU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QSkgJChFTkFCTEVfRkVUQ0hfQVBJKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxF
X0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5f
QVBJKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5B
QkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVf
SU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01Q
TEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVf
V0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVO
QUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5B
QkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVfS0VZQk9B
UkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAk
KEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FU
SU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVUVEVSUFJF
U1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUykg
JChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJQV9D
T05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NP
VVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAk
KEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VS
U09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFW
SUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BE
RktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFJPWElNSVRZX0VW
RU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFC
TEVfUkVBREFCTEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfUkVBREFCTEVfQllURV9TVFJFQU1fQVBJ
KSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVU
RSkgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUkVTT1VSQ0VfVVNB
R0UpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAk
KEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJM
RV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJM
RV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hf
SUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9O
X0ZPTlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFCTEVfVklERU9f
VFJBQ0spICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVO
QUJMRV9XRUJfQU5JTUFUSU9OUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQ
TEFZKSAkKEVOQUJMRV9XRUJfUlRDKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VC
X1RJTUlORykgJChFTkFCTEVfVVNFUl9USU1JTkcpICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVO
QUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpICQoRU5BQkxFX1dSSVRBQkxFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1hTTFQpOworRkVB
VFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQo
RU5BQkxFX0FQUExFX1BBWSkgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9B
VkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFT
X1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcp
ICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZF
TF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01Q
T1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJ
RF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lN
QUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0NST0xM
X1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJ
TkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkg
JChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9S
VCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkg
JChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZFVENIX0FQSSkgJChFTkFCTEVfRklM
VEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVExfSklU
KSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAk
KEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFC
QVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVf
SU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVM
T0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1F
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNFUlZF
UikgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9J
T1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRS
SUJVVEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9MRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJChF
TkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklY
RVMpICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJM
RV9NQUNfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ0FQ
VFVSRSkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TRVNT
SU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQo
RU5BQkxFX01FRElBX1NUUkVBTSkgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhU
TUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRF
TlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJ
RklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0sp
ICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkg
JChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFQURBQkxFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1JF
QURBQkxFX0JZVEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFC
TEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkp
ICQoRU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFC
TEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVf
U1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9F
VkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9B
TEwpICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9O
X01PREUpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklF
V19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dFQl9B
VURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfTElCV0VCUlRDX0VORFBPSU5UKSAk
KEVOQUJMRV9XRUJfUlRDKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlO
RykgJChFTkFCTEVfVVNFUl9USU1JTkcpICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVOQUJMRV9X
RUJHTCkgJChFTkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
ICQoRU5BQkxFX1dSSVRBQkxFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1hTTFQpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGM0ZTc4ZmU2NTMzY2Fi
MzcyM2RkMTdmMTNjZmVjNDYxYzM4NGRhZWEuLmI2MmViMWJlMDhkYjAzMTZhYWEzZDViYTI0NTIy
ZGFjYWE1MzNkZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wMS0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bmZAZ21haWwuY29tPgorCisgICAgICAgIFtXZWJSVENdIEltcGxlbWVudCBXZWJSVEMgUGVlckNv
bm5lY3Rpb24gYmFja2VuZCBiYXNlZCBvbiBsaWJ3ZWJydGMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzI4OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVM
aXN0LnBtOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWc6CisKIDIwMTctMDEtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJyaW5nIGJhY2sgZ3RrLWRv
YyBlcnJvciBtZXNzYWdlcyBhZnRlciByMjA5OTgxLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0Zl
YXR1cmVMaXN0LnBtCmluZGV4IGQyYjMwMzllMWNjNjQ1MTJjYjNlMGU3ZGY3OGE1ODBkOTNhZGZl
ODkuLjVmN2NkN2E5NDJjZTc4NDE1NDAyZWJhMWNiNTkxNTE4MWFjYzUxZWIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTk4LDYgKzk4LDcgQEAgbXkgKAogICAg
ICRsZWdhY3lOb3RpZmljYXRpb25zU3VwcG9ydCwKICAgICAkbGVnYWN5VmVuZG9yUHJlZml4U3Vw
cG9ydCwKICAgICAkbGVnYWN5V2ViQXVkaW9TdXBwb3J0LAorICAgICRsaWJXZWJSVENFbmRwb2lu
dCwKICAgICAkbGlua1ByZWZldGNoU3VwcG9ydCwKICAgICAkbGlua1ByZXJlbmRlclN1cHBvcnQs
CiAgICAgJG1hdGhtbFN1cHBvcnQsCkBAIC0yOTQsNiArMjk1LDkgQEAgbXkgQGZlYXR1cmVzID0g
KAogICAgIHsgb3B0aW9uID0+ICJsZWdhY3ktd2ViLWF1ZGlvIiwgZGVzYyA9PiAiVG9nZ2xlIExl
Z2FjeSBXZWIgQXVkaW8gc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9MRUdBQ1lf
V0VCX0FVRElPIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJGxlZ2FjeVdlYkF1ZGlvU3VwcG9y
dCB9LAogCisgICAgeyBvcHRpb24gPT4gImxpYndlYnJ0Yy1lbmRwb2ludCIsIGRlc2MgPT4gIlRv
Z2dsZSBMaWJXZWJSVEMgZW5kcG9pbnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTElCV0VC
UlRDX0VORFBPSU5UIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGxpYldlYlJUQ0VuZHBvaW50
IH0sCisKICAgICB7IG9wdGlvbiA9PiAibGluay1wcmVmZXRjaCIsIGRlc2MgPT4gIlRvZ2dsZSBM
aW5rIFByZWZldGNoIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTElOS19QUkVG
RVRDSCIsIGRlZmF1bHQgPT4gKGlzR3RrKCkgfHwgaXNFZmwoKSksIHZhbHVlID0+IFwkbGlua1By
ZWZldGNoU3VwcG9ydCB9LAogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCAyZDA0M2EwNmU1NGQx
Y2RkZTRjZWE4NTBjNjIzODg4OWQ3M2MwOTFmLi5lZWNjNmI0MjI5YmY1ZWIxMGI5ZjgyMTI3Yzlk
Njc5OTZlZWViYTEyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTE2NSw2ICsxNjUsNyBAQCBF
TkFCTEVfU1BFRUNIX1NZTlRIRVNJUyA9IEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTOwogRU5BQkxF
X1NVQlRMRV9DUllQVE8gPSBFTkFCTEVfU1VCVExFX0NSWVBUTzsKIEVOQUJMRV9TVkdfRk9OVFMg
PSBFTkFCTEVfU1ZHX0ZPTlRTOwogRU5BQkxFX1dFQl9SVEMgPSBFTkFCTEVfV0VCX1JUQzsKK0VO
QUJMRV9MSUJXRUJSVENfRU5EUE9JTlQgPSBFTkFCTEVfTElCV0VCUlRDX0VORFBPSU5UOwogRU5B
QkxFX1dSSVRBQkxFX1NUUkVBTV9BUEkgPSBFTkFCTEVfV1JJVEFCTEVfU1RSRUFNX0FQSTsKIAog
RU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OID0gRU5BQkxFX1RFTEVQSE9ORV9OVU1C
RVJfREVURUNUSU9OOwpAQCAtMjE2LDQgKzIxNyw0IEBAIEVOQUJMRV9WQVJJQVRJT05fRk9OVFNf
SUZfTk9UXyA9ICQoRU5BQkxFX1ZBUklBVElPTl9GT05UU19JRl9OT1RfTk8pOwogRU5BQkxFX1ZB
UklBVElPTl9GT05UU19JRl9OT1RfTk8gPSBFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTOwogRU5BQkxF
X1ZBUklBVElPTl9GT05UU19JRl9OT1RfWUVTID0gOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVO
QUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5B
QkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAk
KEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFC
TEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FO
VkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ09OVEVOVF9G
SUxURVJJTkcpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19C
T1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9D
U1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVf
Q1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChF
TkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVfQ1NT
X1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9D
U1MzX1RFWFQpICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NI
RU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBX1RS
QU5TRkVSX0lURU1TKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9EQVRBTElTVF9F
TEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0VOQ1JZUFRFRF9N
RURJQSkgJChFTkFCTEVfRkVUQ0hfQVBJKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5B
QkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JF
RU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dBTUVQQUQpICQo
RU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFC
TEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5D
T01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfV0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAk
KEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQo
RU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVfS0VZ
Qk9BUkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVT
KSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJ
Q0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVUVEVS
UFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BQ19HRVNUVVJFX0VWRU5U
UykgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJ
QV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01FRElB
X1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVESUFfU1RSRUFN
KSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0Vf
Q1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVf
TkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxF
X1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFJPWElNSVRZ
X0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChF
TkFCTEVfUkVBREFCTEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfUkVBREFCTEVfQllURV9TVFJFQU1f
QVBJKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01Q
TEVURSkgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUkVTT1VSQ0Vf
VVNBR0UpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xT
KSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVO
QUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVO
QUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9V
Q0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFU
SU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFCTEVfVklE
RU9fVFJBQ0spICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAk
KEVOQUJMRV9XRUJfQU5JTUFUSU9OUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJf
UkVQTEFZKSAkKEVOQUJMRV9XRUJfUlRDKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVf
V0VCX1RJTUlORykgJChFTkFCTEVfVVNFUl9USU1JTkcpICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAk
KEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpICQoRU5BQkxFX1dSSVRBQkxFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1hTTFQpOwor
RkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxF
UkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcp
ICQoRU5BQkxFX0FQUExFX1BBWSkgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJM
RV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FO
VkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJ
TkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19M
RVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19D
T01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1Nf
R1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NT
X0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0NS
T0xMX1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJB
SUxJTkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElU
WSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQ
UE9SVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREFUQUNVRV9WQUxV
RSkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9O
KSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZFVENIX0FQSSkgJChFTkFCTEVf
RklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVExf
SklUKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVE
KSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lO
REVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFC
TEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJ
TUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9U
SU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNF
UlZFUikgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJM
RV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tFWV9B
VFRSSUJVVEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9MRUdB
Q1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkg
JChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJF
RklYRVMpICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVO
QUJMRV9NQUNfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFf
Q0FQVFVSRSkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9T
RVNTSU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1Mp
ICQoRU5BQkxFX01FRElBX1NUUkVBTSkgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVf
TUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NP
TlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9O
T1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xP
Q0spICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElT
VCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFQURBQkxFX1NUUkVBTV9BUEkpICQoRU5BQkxF
X1JFQURBQkxFX0JZVEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChF
TkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVF
UlkpICQoRU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChF
TkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFC
TEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVf
TlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VD
SF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVD
VF9BTEwpICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFU
SU9OX01PREUpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVf
VklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dF
Ql9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfTElCV0VCUlRDX0VORFBPSU5U
KSAkKEVOQUJMRV9XRUJfUlRDKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJ
TUlORykgJChFTkFCTEVfVVNFUl9USU1JTkcpICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVOQUJM
RV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpICQoRU5BQkxFX1dSSVRBQkxFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1hTTFQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299464</attachid>
            <date>2017-01-22 00:16:53 -0800</date>
            <delta_ts>2017-01-22 10:01:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167289-20170122001458.patch</filename>
            <type>text/plain</type>
            <size>140634</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzgzM2RiZTZhZTg0ZmExMWRhNDhkMzk1YmZiMzIxZDY5ZDExYTcyLi4xOGYyZjBmODMzMGU4NTk2
ZjE1MjUwYmJlODFmNDJjMzc4MWRiN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNy0wMS0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubmZAZ21haWwuY29t
PgorCisgICAgICAgIFtXZWJSVENdIEltcGxlbWVudCBXZWJSVEMgUGVlckNvbm5lY3Rpb24gYmFj
a2VuZCBiYXNlZCBvbiBsaWJ3ZWJydGMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NzI4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6
CisKIDIwMTctMDEtMjEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAK
ICAgICAgICAgW0pTQ10gZXhwb3J0IEpTQzo6aW1wb3J0TW9kdWxlIEFQSSBmb3IgV2ViQ29yZSBk
eW5hbWljIGltcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCA0YjY1OTJmNWQ4ZTM2OTNjMzYwYmMyZTgzNTUzNGNiNDM5Mjk4
NzhmLi5mZjNiMmY5YTQwOTU0NmE2NmJkYTRkMTcwMjNlN2U5MjIzNTY5MjZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDE3LTAxLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+
CisKKyAgICAgICAgW1dlYlJUQ10gSW1wbGVtZW50IFdlYlJUQyBQZWVyQ29ubmVjdGlvbiBiYWNr
ZW5kIGJhc2VkIG9uIGxpYndlYnJ0YworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY3Mjg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3dGYvRmVhdHVyZURlZmluZXMuaDoKKwogMjAxNy0wMS0yMCAgSm9z
ZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBvdXRk
YXRlZCBFTkFCTEUoQ1NQX05FWFQpIGJ1aWxkIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MTQwOWJmZTll
NDNhZTkyMGQ4YzQxZDgwMTI0M2RmZTZiYWI2N2VlLi42MWQwOWM5OTFlNDhiNjcxZWY0ZDE3M2My
ODYyNDllZjZkZjA2NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE2IEBACisyMDE3LTAxLTIx
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYlJUQ10g
SW1wbGVtZW50IFdlYlJUQyBQZWVyQ29ubmVjdGlvbiBiYWNrZW5kIGJhc2VkIG9uIGxpYndlYnJ0
YworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3Mjg5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9k
dWNpbmcgYW4gaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBXZWJSVEMgcGVlciBjb25uZWN0aW9u
IGJhY2tlbmQgYmFzZWQgb24gTGliV2ViUlRDLgorICAgICAgICBUaGlzIGlzIGRvbmUgYmVoaW5k
IGEgY29tcGlsYXRpb24gZmxhZyB3aGljaCBpcyBvZmYgYnkgZGVmYXVsdCwgdW50aWwgdGhlIGlt
cGxlbWVudGF0aW9uIGlzIHJlYWR5LgorCisgICAgICAgIFRoZSBiYWNrZW5kIGltcGxlbWVudHMg
dGhlIFBlZXJDb25uZWN0aW9uQmFja2VuZCBBUEkuCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlv
biBpcyBzcGxpdCBpbnRvIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCB3aGljaCBjb250
YWlucyBtb3N0bHkgZ2VuZXJpYyBjb2RlIGFuZCBwYXNzZXMgdGhlIHJlYWwgd29yayB0byBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50LgorICAgICAgICBUaGUgbGF0dGVyIGNsYXNzIGlzIGltcGxlbWVu
dGluZyB0aGUgQVBJIHVzaW5nIExpYldlYlJUQy4KKworICAgICAgICBJbnRyb2R1Y2luZyBjbGFz
c2VzIHRvIHN1cHBvcnQgaW5jb21pbmcgYW5kIG91dGdvaW5nIHZpZGVvIHN0cmVhbXMKKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAq
IENvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6TGliV2ViUlRDTWVkaWFFbmRw
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpzZXNzaW9uRGVzY3JpcHRpb25UeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvU2V0TG9jYWxEZXNjcmlwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb1NldFJlbW90
ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmFkZFBlbmRpbmdJY2VDYW5kaWRhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmRvQ3JlYXRlT2ZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6ZG9DcmVhdGVBbnN3ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6Z2V0U3RhdHMpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6U3RhdHNDb2xsZWN0b3I6OlN0YXRzQ29sbGVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OlN0YXRzQ29sbGVjdG9yOjpPblN0YXRz
RGVsaXZlcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OnNpZ25hbGluZ1N0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uU2lnbmFsaW5nQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRyYWNrSWQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWVkaWFT
dHJlYW1UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojph
ZGRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25B
ZGRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25S
ZW1vdmVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
YWRkRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6T25EYXRhQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9u
UmVuZWdvdGlhdGlvbk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjppY2VDb25uZWN0aW9uU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25JY2VDb25u
ZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
Ok9uSWNlR2F0aGVyaW5nQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6Ok9uSWNlQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6Ok9uSWNlQ2FuZGlkYXRlc1JlbW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Np
b25EZXNjcmlwdGlvbkZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVu
ZHBvaW50OjpzZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlv
bkZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzZXRS
ZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGli
V2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVu
ZHBvaW50Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6TGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbmZpZ3VyYXRpb25Gcm9tTWVkaWFF
bmRwb2ludENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpzZXRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Z2V0U3RhdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb1NldExvY2FsRGVzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb1Nl
dFJlbW90ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVPZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvQ3JlYXRlQW5zd2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9TdG9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9BZGRJY2VDYW5kaWRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjptYXJr
QXNOZWVkaW5nTmVnb3RpYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVSZWNlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZURhdGFDaGFubmVsSGFuZGxlcik6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmg6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llczo6cnRjU3RyYXRlZ3kpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNYWNyb3MuaDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0
aWxzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzaG91bGROb3RCZUNhbGxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJydGNBdWRpb01vZHVsZTo6V2VicnRjQXVkaW9Nb2R1bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2VicnRjQXVkaW9Nb2R1bGU6OlJlZ2lzdGVyQXVkaW9DYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJydGNBdWRpb01vZHVsZTo6T25NZXNzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYnJ0Y0F1ZGlvTW9kdWxlOjpTdGFydFBsYXlvdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2VicnRjQXVkaW9Nb2R1bGU6OlN0b3BQbGF5b3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYnJ0Y0F1ZGlvTW9kdWxlOjpTdGFydFBsYXlvdXRPbkF1ZGlvVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYnJ0Y0F1ZGlvTW9kdWxlOjpQb2xsRnJvbVNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcyk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrVGhyZWFkTWVzc2FnZURhdGE6Ok5ldHdvcmtUaHJlYWRNZXNzYWdlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzOjpPbk1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjppbml0aWFsaXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyk6
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplTGliV2ViUlRDSW50ZXJuYWxzV2l0aFNvY2tl
dFNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpwZWVyQ29ubmVjdGlvbkZhY3RvcnkpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvUlRDU3RyYXRlZ3kuaDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6Ok9uRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpwcm9j
ZXNzTmV3U2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmN1cnJlbnRGcmFtZUltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6cGFpbnRDdXJy
ZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpzZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2U6OnN1cHBvcnRlZENvbnN0cmFpbnRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6R2V0U3RhdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpBZGRPclVwZGF0ZVNpbmspOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpSZW1vdmVTaW5rKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c291cmNlSGFz
TW9yZU1lZGlhRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oOiBBZGRlZC4KKwogMjAxNy0wMS0yMSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OnRleHRDaGFuZ2VkKCkgYnlwYXNzZXMgQVhMaXZlUmVnaW9uQ2hhbmdlZCBub3RpZmljYXRp
b24gY29hbGVzY2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDAwOWQ4YjgzMzIzOWRmMWE3ZTNhMzEw
N2JlZDBjNzM1N2EwZjY2MTguLmUxZDA1OTM5YTE5NGQ2NGQzMTllMTUyYmQyYjM4NGRiODYxNzlh
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNy0wMS0yMSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubmZAZ21haWwuY29tPgorCisgICAgICAgIFtXZWJSVENdIEltcGxlbWVu
dCBXZWJSVEMgUGVlckNvbm5lY3Rpb24gYmFja2VuZCBiYXNlZCBvbiBsaWJ3ZWJydGMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzI4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTctMDEtMjEgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIC1bV2ViRnJhbWUgc2Vu
ZE9yaWVudGF0aW9uQ2hhbmdlRXZlbnQ6XSB3aGljaCBpcyB1bnVzZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAz
YmFjN2EwMTMyZDE5ZDIyN2I2NTFlY2FmM2EyOWE1MTlkOWFmMjM0Li5mNmNiMzQ0YThmOWE1NmFk
MDY4NTk1YzdhMTQ1MTQ4NTU1MzViYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTctMDEtMjEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5mQGdtYWlsLmNvbT4KKworICAgICAgICBb
V2ViUlRDXSBJbXBsZW1lbnQgV2ViUlRDIFBlZXJDb25uZWN0aW9uIGJhY2tlbmQgYmFzZWQgb24g
bGlid2VicnRjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjcyODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDE3LTAxLTIx
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjExMDEyLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmlu
ZGV4IDJkMDQzYTA2ZTU0ZDFjZGRlNGNlYTg1MGM2MjM4ODg5ZDczYzA5MWYuLmVlY2M2YjQyMjli
ZjVlYjEwYjlmODIxMjdjOWQ2Nzk5NmVlZWJhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
QEAgLTE2NSw2ICsxNjUsNyBAQCBFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUyA9IEVOQUJMRV9TUEVF
Q0hfU1lOVEhFU0lTOwogRU5BQkxFX1NVQlRMRV9DUllQVE8gPSBFTkFCTEVfU1VCVExFX0NSWVBU
TzsKIEVOQUJMRV9TVkdfRk9OVFMgPSBFTkFCTEVfU1ZHX0ZPTlRTOwogRU5BQkxFX1dFQl9SVEMg
PSBFTkFCTEVfV0VCX1JUQzsKK0VOQUJMRV9MSUJXRUJSVENfRU5EUE9JTlQgPSBFTkFCTEVfTElC
V0VCUlRDX0VORFBPSU5UOwogRU5BQkxFX1dSSVRBQkxFX1NUUkVBTV9BUEkgPSBFTkFCTEVfV1JJ
VEFCTEVfU1RSRUFNX0FQSTsKIAogRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OID0g
RU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OOwpAQCAtMjE2LDQgKzIxNyw0IEBAIEVO
QUJMRV9WQVJJQVRJT05fRk9OVFNfSUZfTk9UXyA9ICQoRU5BQkxFX1ZBUklBVElPTl9GT05UU19J
Rl9OT1RfTk8pOwogRU5BQkxFX1ZBUklBVElPTl9GT05UU19JRl9OT1RfTk8gPSBFTkFCTEVfVkFS
SUFUSU9OX0ZPTlRTOwogRU5BQkxFX1ZBUklBVElPTl9GT05UU19JRl9OT1RfWUVTID0gOwogCi1G
RUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVS
QVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykg
JChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxF
X0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5W
QVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xF
VkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NP
TVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19H
UklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1Nf
SU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TQ1JP
TExfU05BUCkgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19UUkFJ
TElOR19XT1JEKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZ
KSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQ
T1JUKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVF
KSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRkVUQ0hfQVBJKSAkKEVOQUJMRV9G
SUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZUTF9K
SVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQp
ICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFU
QUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5E
RVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lO
UFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJ
TUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VS
VkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxF
X0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FU
VFJJQlVURSkgJChFTkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FD
WV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAk
KEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVG
SVhFUykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5B
QkxFX01BQ19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9D
QVBUVVJFKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NF
U1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykg
JChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9N
SFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09O
VEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJfTE9D
SykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNU
KSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVBREFCTEVfU1RSRUFNX0FQSSkgJChFTkFCTEVf
UkVBREFCTEVfQllURV9TVFJFQU1fQVBJKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVO
QUJMRV9SRVFVRVNUX0FVVE9DT01QTEVURSkgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVS
WSkgJChFTkFCTEVfUkVTT1VSQ0VfVVNBR0UpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVO
QUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJM
RV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9ORV9O
VU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNI
X0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNU
X0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9W
SUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJfQU5JTUFUSU9OUykgJChFTkFCTEVfV0VC
X0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJfUlRDKSAkKEVOQUJMRV9X
RUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfVVNFUl9USU1JTkcpICQo
RU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAkKEVO
QUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICQoRU5BQkxFX1dSSVRBQkxFX1NUUkVBTV9B
UEkpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNG
T1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRF
RF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FQUExFX1BBWSkgJChFTkFCTEVfQVRUQUNI
TUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJ
VElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChF
TkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVO
QUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05f
QlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQ
VEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklF
TlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJ
T05TKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVW
RUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVO
QUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAk
KEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykg
JChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFC
TEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxF
X0ZFVENIX0FQSSkgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURf
RVZFTlRTKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFC
TEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NB
VElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lO
X1dPUktFUlMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5B
QkxFX0lOVEVSU0VDVElPTl9PQlNFUlZFUikgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dF
U1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQo
RU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRU
UklCVVRFKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJM
RV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQUNfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX01B
VEhNTCkgJChFTkFCTEVfTUVESUFfQ0FQVFVSRSkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NS
SVBUKSAkKEVOQUJMRV9NRURJQV9TRVNTSU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5B
QkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FRElBX1NUUkVBTSkgJChFTkFCTEVfTUVU
RVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkg
JChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NP
TkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lO
KSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5B
QkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFQURBQkxF
X1NUUkVBTV9BUEkpICQoRU5BQkxFX1JFQURBQkxFX0JZVEVfU1RSRUFNX0FQSSkgJChFTkFCTEVf
UkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxF
X1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJM
RV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU1BF
RUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRT
KSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9BVVRP
U0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElO
RykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykgJChF
TkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVO
QUJMRV9WSURFTykgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCX0FO
SU1BVElPTlMpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFC
TEVfTElCV0VCUlRDX0VORFBPSU5UKSAkKEVOQUJMRV9XRUJfUlRDKSAkKEVOQUJMRV9XRUJfU09D
S0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfVVNFUl9USU1JTkcpICQoRU5BQkxF
X1dFQkFTU0VNQkxZKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9X
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICQoRU5BQkxFX1dSSVRBQkxFX1NUUkVBTV9BUEkpICQo
RU5BQkxFX1hTTFQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMu
aCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggMGMzZGE3NTc1OTM2ZTRk
ZTUxNjI0N2IyY2UxNjZlMzQ5Yjg3Njk1OC4uZjJjMjFmNTY4MGY0ZTJmYmMwYzE1OGI0Y2QzNGUy
N2YxNGU1ZjVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC01NTAsNiArNTUwLDEwIEBA
IHRoZSBwdWJsaWMgaU9TIFNESy4gV2Ugd2lsbCBhbHNvIG5lZWQgdG8gdXBkYXRlIHRoZSBGZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZyBmaWxlCiAjZGVmaW5lIEVOQUJMRV9MRVRURVJQUkVTUyAwCiAj
ZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9MSUJXRUJSVENfRU5EUE9JTlQpCisjZGVmaW5l
IEVOQUJMRV9MSUJXRUJSVENfRU5EUE9JTlQgMAorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFC
TEVfTElOS19QUkVGRVRDSCkKICNkZWZpbmUgRU5BQkxFX0xJTktfUFJFRkVUQ0ggMAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCmluZGV4IDJkMDQzYTA2ZTU0ZDFjZGRlNGNlYTg1MGM2MjM4ODg5ZDczYzA5MWYu
LmVlY2M2YjQyMjliZjVlYjEwYjlmODIxMjdjOWQ2Nzk5NmVlZWJhMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBA
IC0xNjUsNiArMTY1LDcgQEAgRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMgPSBFTkFCTEVfU1BFRUNI
X1NZTlRIRVNJUzsKIEVOQUJMRV9TVUJUTEVfQ1JZUFRPID0gRU5BQkxFX1NVQlRMRV9DUllQVE87
CiBFTkFCTEVfU1ZHX0ZPTlRTID0gRU5BQkxFX1NWR19GT05UUzsKIEVOQUJMRV9XRUJfUlRDID0g
RU5BQkxFX1dFQl9SVEM7CitFTkFCTEVfTElCV0VCUlRDX0VORFBPSU5UID0gRU5BQkxFX0xJQldF
QlJUQ19FTkRQT0lOVDsKIEVOQUJMRV9XUklUQUJMRV9TVFJFQU1fQVBJID0gRU5BQkxFX1dSSVRB
QkxFX1NUUkVBTV9BUEk7CiAKIEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTiA9IEVO
QUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTjsKQEAgLTIxNiw0ICsyMTcsNCBAQCBFTkFC
TEVfVkFSSUFUSU9OX0ZPTlRTX0lGX05PVF8gPSAkKEVOQUJMRV9WQVJJQVRJT05fRk9OVFNfSUZf
Tk9UX05PKTsKIEVOQUJMRV9WQVJJQVRJT05fRk9OVFNfSUZfTk9UX05PID0gRU5BQkxFX1ZBUklB
VElPTl9GT05UUzsKIEVOQUJMRV9WQVJJQVRJT05fRk9OVFNfSUZfTk9UX1lFUyA9IDsKIAotRkVB
VFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQo
RU5BQkxFX0FQUExFX1BBWSkgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9B
VkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFT
X1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcp
ICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZF
TF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01Q
T1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJ
RF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lN
QUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0NST0xM
X1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJ
TkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkg
JChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9S
VCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkg
JChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZFVENIX0FQSSkgJChFTkFCTEVfRklM
VEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVExfSklU
KSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAk
KEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFC
QVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVf
SU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVM
T0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1F
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNFUlZF
UikgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9J
T1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRS
SUJVVEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9MRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJChF
TkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklY
RVMpICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJM
RV9NQUNfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ0FQ
VFVSRSkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TRVNT
SU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQo
RU5BQkxFX01FRElBX1NUUkVBTSkgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhU
TUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRF
TlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJ
RklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0sp
ICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkg
JChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFQURBQkxFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1JF
QURBQkxFX0JZVEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFC
TEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkp
ICQoRU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFC
TEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVf
U1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9F
VkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9B
TEwpICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9O
X01PREUpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklF
V19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dFQl9B
VURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVfV0VC
X1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1VTRVJfVElNSU5HKSAkKEVO
QUJMRV9XRUJBU1NFTUJMWSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQkdMMikgJChFTkFC
TEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9XUklUQUJMRV9TVFJFQU1fQVBJ
KSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9S
TVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURf
T1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BUFBMRV9QQVkpICQoRU5BQkxFX0FUVEFDSE1F
TlRfRUxFTUVOVCkgJChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJ
T05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFC
TEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JS
RUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRB
VElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9O
UykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVM
NCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFC
TEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChF
TkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQo
RU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxF
X0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9G
RVRDSF9BUEkpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRk9OVF9MT0FEX0VW
RU5UUykgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxF
X0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJ
T04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9X
T1JLRVJTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQo
RU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJM
RV9JTlRFUlNFQ1RJT05fT0JTRVJWRVIpICQoRU5BQkxFX0lOVEwpICQoRU5BQkxFX0lPU19HRVNU
VVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfSklUKSAkKEVO
QUJMRV9LRVlCT0FSRF9LRVlfQVRUUklCVVRFKSAkKEVOQUJMRV9LRVlCT0FSRF9DT0RFX0FUVFJJ
QlVURSkgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FD
WV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVf
TElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9NQVRI
TUwpICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQ
VCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJM
RV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5BQkxFX01FVEVS
X0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQo
RU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05D
VVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUERGS0lUX1BMVUdJTikg
JChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJM
RV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRUFEQUJMRV9T
VFJFQU1fQVBJKSAkKEVOQUJMRV9SRUFEQUJMRV9CWVRFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1JF
TU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRFKSAkKEVOQUJMRV9S
RVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SRVNPVVJDRV9VU0FHRSkgJChFTkFCTEVf
UlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX1NQRUVD
SF9TWU5USEVTSVMpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykg
JChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RFWFRfQVVUT1NJ
WklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcp
ICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WQVJJQVRJT05fRk9OVFMpICQoRU5B
QkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFC
TEVfVklERU8pICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQl9BTklN
QVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxF
X0xJQldFQlJUQ19FTkRQT0lOVCkgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVfV0VCX1NPQ0tF
VFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1VTRVJfVElNSU5HKSAkKEVOQUJMRV9X
RUJBU1NFTUJMWSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQkdMMikgJChFTkFCTEVfV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9XUklUQUJMRV9TVFJFQU1fQVBJKSAkKEVO
QUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dl
YkNvcmUueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhj
Y29uZmlnCmluZGV4IDZiMTlhY2Y2NDVjZDg5OTZkNjAzYjRhMDAxNDRlYWI4NmRjOGI0MzcuLjc3
NGUwYTkwN2NkMTM5MGFjNTQ2OWVlOTAxYmQ0Mzg2ZTVjMWYxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKKysrIGIvU291cmNlL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZwpAQCAtNDYsNyArNDYsNyBAQCBP
VEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoT1RIRVJfQ0ZMQUdTKTsKIAogV0VCS0lUQURESVRJT05T
X0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2lu
Y2x1ZGUvV2ViS2l0QWRkaXRpb25zICQoU0RLUk9PVCkvdXNyL2xvY2FsL2luY2x1ZGUvV2ViS2l0
QWRkaXRpb25zOwogCi1IRUFERVJfU0VBUkNIX1BBVEhTID0gRm9yd2FyZGluZ0hlYWRlcnMgaWN1
IC91c3IvaW5jbHVkZS9saWJ4c2x0IC91c3IvaW5jbHVkZS9saWJ4bWwyICIkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZSIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS91
c3IvbG9jYWwvaW5jbHVkZSIgJChXRUJLSVRBRERJVElPTlNfSEVBREVSX1NFQVJDSF9QQVRIUykg
JChIRUFERVJfU0VBUkNIX1BBVEhTKTsKK0hFQURFUl9TRUFSQ0hfUEFUSFMgPSBGb3J3YXJkaW5n
SGVhZGVycyBpY3UgL3Vzci9pbmNsdWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnhtbDIgIiQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlIiAiJChCVUlMVF9QUk9E
VUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlIiAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VB
UkNIX1BBVEhTKSAkKFNSQ1JPT1QpLy4uL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZSAkKEhF
QURFUl9TRUFSQ0hfUEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwogSU5TVEFM
TF9QQVRIID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzOwogSU5TVEFM
TF9QQVRIW3Nkaz1tYWNvc3gqXSA9ICQoV0VCQ09SRV9GUkFNRVdPUktTX0RJUik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkMTNmNjFj
YzMwMjc5MWYwZDlkNTg0MTVjZjNiYzAzZDQyN2ZlMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVu
ZHBvaW50LmNwcApAQCAtMCwwICsxLDQxNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWly
ZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
ICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmgiCisKKyNpZiBFTkFCTEUoTElCV0VCUlRDX0VORFBPSU5UKQorCisjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCIKKyNpbmNsdWRlICJSVENJY2VDYW5kaWRhdGUuaCIKKyNpbmNsdWRlICJS
VENQZWVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oIgor
I2luY2x1ZGUgIlJUQ1N0cmF0ZWd5LmgiCisjaW5jbHVkZSAiUlRDVHJhY2tFdmVudC5oIgorI2lu
Y2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6TGliV2ViUlRDTWVkaWFFbmRwb2ludChMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQm
IHBlZXJDb25uZWN0aW9uKQorICAgIDogbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQocGVlckNvbm5l
Y3Rpb24pCisgICAgLCBtX2NyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyKCp0aGlzKQor
ICAgICwgbV9zZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyKCp0aGlzKQorICAgICwg
bV9zZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcigqdGhpcykKK3sKKyAgICBtX2Jh
Y2tlbmQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cnRjU3RyYXRlZ3koKS5jcmVhdGVQZWVyQ29u
bmVjdGlvbigqdGhpcyk7CisgICAgQVNTRVJUKG1fYmFja2VuZCk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgY29uc3QgY2hhciogc2Vzc2lvbkRlc2NyaXB0aW9uVHlwZShSVENTZXNzaW9uRGVzY3JpcHRp
b246OlNkcFR5cGUgc2RwVHlwZSkKK3sKKyAgICBzd2l0Y2ggKHNkcFR5cGUpIHsKKyAgICBjYXNl
IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6U2RwVHlwZTo6T2ZmZXI6CisgICAgICAgIHJldHVybiAi
b2ZmZXIiOworICAgIGNhc2UgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpQcmFuc3dl
cjoKKyAgICAgICAgcmV0dXJuICJwcmFuc3dlciI7CisgICAgY2FzZSBSVENTZXNzaW9uRGVzY3Jp
cHRpb246OlNkcFR5cGU6OkFuc3dlcjoKKyAgICAgICAgcmV0dXJuICJhbnN3ZXIiOworICAgIGNh
c2UgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpSb2xsYmFjazoKKyAgICAgICAgcmV0
dXJuICJyb2xsYmFjayI7CisgICAgfQorfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmRvU2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
KQoreworICAgIHdlYnJ0Yzo6U2RwUGFyc2VFcnJvciBlcnJvcjsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8d2VicnRjOjpTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U+IHNlc3Npb25EZXNjcmlwdGlv
bih3ZWJydGM6OkNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb25UeXBl
KGRlc2NyaXB0aW9uLnR5cGUoKSksIGRlc2NyaXB0aW9uLnNkcCgpLnV0ZjgoKS5kYXRhKCksICZl
cnJvcikpOworCisgICAgaWYgKCFzZXNzaW9uRGVzY3JpcHRpb24pIHsKKyAgICAgICAgU3RyaW5n
IGVycm9yTWVzc2FnZShlcnJvci5kZXNjcmlwdGlvbi5kYXRhKCksIGVycm9yLmRlc2NyaXB0aW9u
LnNpemUoKSk7CisgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNldExvY2FsRGVzY3Jp
cHRpb25GYWlsZWQoRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIFdURk1vdmUoZXJyb3JNZXNz
YWdlKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2JhY2tlbmQtPlNldExvY2Fs
RGVzY3JpcHRpb24oJm1fc2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciwgc2Vzc2lv
bkRlc2NyaXB0aW9uLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6ZG9TZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0
aW9uKQoreworICAgIHdlYnJ0Yzo6U2RwUGFyc2VFcnJvciBlcnJvcjsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8d2VicnRjOjpTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U+IHNlc3Npb25EZXNjcmlw
dGlvbih3ZWJydGM6OkNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb25U
eXBlKGRlc2NyaXB0aW9uLnR5cGUoKSksIGRlc2NyaXB0aW9uLnNkcCgpLnV0ZjgoKS5kYXRhKCks
ICZlcnJvcikpOworICAgIGlmICghc2Vzc2lvbkRlc2NyaXB0aW9uKSB7CisgICAgICAgIFN0cmlu
ZyBlcnJvck1lc3NhZ2UoZXJyb3IuZGVzY3JpcHRpb24uZGF0YSgpLCBlcnJvci5kZXNjcmlwdGlv
bi5zaXplKCkpOworICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5zZXRSZW1vdGVEZXNj
cmlwdGlvbkZhaWxlZChFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgV1RGTW92ZShlcnJvck1l
c3NhZ2UpIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fYmFja2VuZC0+U2V0UmVt
b3RlRGVzY3JpcHRpb24oJm1fc2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIsIHNl
c3Npb25EZXNjcmlwdGlvbi5yZWxlYXNlKCkpOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6OmFkZFBlbmRpbmdJY2VDYW5kaWRhdGVzKCkKK3sKKyAgICB3aGlsZSAobV9wZW5kaW5n
Q2FuZGlkYXRlcy5zaXplKCkpCisgICAgICAgIG1fYmFja2VuZC0+QWRkSWNlQ2FuZGlkYXRlKG1f
cGVuZGluZ0NhbmRpZGF0ZXMudGFrZUxhc3QoKS5yZWxlYXNlKCkpOworfQorCit2b2lkIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6OmRvQ3JlYXRlT2ZmZXIoKQoreworICAgIG1faXNJbml0aWF0b3Ig
PSB0cnVlOworICAgIGF1dG8mIHNlbmRlcnMgPSBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25u
ZWN0aW9uKCkuZ2V0U2VuZGVycygpOworICAgIGlmIChzZW5kZXJzLnNpemUoKSkgeworICAgICAg
ICAvLyBGSVhNRTogV2Ugb25seSBzdXBwb3J0IG9uZSBzdHJlYW0gZm9yIHRoZSBtb21lbnQuCisg
ICAgICAgIGF1dG8gc3RyZWFtID0gcGVlckNvbm5lY3Rpb25GYWN0b3J5KCkuQ3JlYXRlTG9jYWxN
ZWRpYVN0cmVhbSgiYXZfbGFiZWwiKTsKKyAgICAgICAgZm9yIChSVENSdHBTZW5kZXImIHNlbmRl
ciA6IHNlbmRlcnMpIHsKKyAgICAgICAgICAgIGF1dG8qIHRyYWNrID0gc2VuZGVyLnRyYWNrKCk7
CisgICAgICAgICAgICBpZiAodHJhY2spIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2VuZGVy
Lm1lZGlhU3RyZWFtSWRzKCkuc2l6ZSgpID09IDEpOworICAgICAgICAgICAgICAgIGF1dG8mIHNv
dXJjZSA9IHRyYWNrLT5zb3VyY2UoKTsKKyAgICAgICAgICAgICAgICBpZiAoc291cmNlLnR5cGUo
KSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykgeworICAgICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG91dGdvaW5nIGF1ZGlvIHRyYWNrcy4KKyAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtX3ZpZGVvU291cmNlcy5hcHBl
bmQoUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpjcmVhdGUoc291cmNlKSk7CisgICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgdXNpbmcgdHJhY2stPmxhYmVsKCks
IGJ1dCBpdCBtYXkgY29udGFpbiBzcGFjZXMgd2hpY2ggbWF5IGNhdXNlIGlzc3Vlcy4KKyAgICAg
ICAgICAgICAgICAgICAgLy8gV2UgdGVtcG9yYXJpbHkgdXNlICJ2aWRlb190cmFjayIgaW5zdGVh
ZC4KKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5BZGRUcmFjayhwZWVyQ29ubmVjdGlvbkZh
Y3RvcnkoKS5DcmVhdGVWaWRlb1RyYWNrKCJ2aWRlb190cmFjayIsIG1fdmlkZW9Tb3VyY2VzLmxh
c3QoKS5wdHIoKSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBtX2JhY2tlbmQtPkFkZFN0cmVhbShzdHJlYW0pOworICAgIH0KKyAgICBtX2Jh
Y2tlbmQtPkNyZWF0ZU9mZmVyKCZtX2NyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyLCBu
dWxscHRyKTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb0NyZWF0ZUFuc3dl
cigpCit7CisgICAgbV9pc0luaXRpYXRvciA9IGZhbHNlOworICAgICAgICBhdXRvJiBzZW5kZXJz
ID0gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLmdldFNlbmRlcnMoKTsKKyAg
ICBpZiAoc2VuZGVycy5zaXplKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIG9ubHkgc3VwcG9y
dCBvbmUgc3RyZWFtIGZvciB0aGUgbW9tZW50LgorICAgICAgICBhdXRvIHN0cmVhbSA9IHBlZXJD
b25uZWN0aW9uRmFjdG9yeSgpLkNyZWF0ZUxvY2FsTWVkaWFTdHJlYW0oImF2X2xhYmVsIik7Cisg
ICAgICAgIGZvciAoUlRDUnRwU2VuZGVyJiBzZW5kZXIgOiBzZW5kZXJzKSB7CisgICAgICAgICAg
ICBhdXRvKiB0cmFjayA9IHNlbmRlci50cmFjaygpOworICAgICAgICAgICAgaWYgKHRyYWNrKSB7
CisgICAgICAgICAgICAgICAgQVNTRVJUKHNlbmRlci5tZWRpYVN0cmVhbUlkcygpLnNpemUoKSA9
PSAxKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzb3VyY2UgPSB0cmFjay0+c291cmNlKCk7Cisg
ICAgICAgICAgICAgICAgaWYgKHNvdXJjZS50eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6
QXVkaW8pIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBv
dXRnb2luZyBhdWRpbyB0cmFja3MuCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgbV92aWRlb1NvdXJjZXMuYXBwZW5kKFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZTo6Y3JlYXRlKHNvdXJjZSkpOworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGJlIHVzaW5nIHRyYWNrLT5sYWJlbCgpLCBidXQgaXQgbWF5IGNvbnRhaW4gc3BhY2Vz
IHdoaWNoIG1heSBjYXVzZSBpc3N1ZXMuCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIHRlbXBv
cmFyaWx5IHVzZSAidmlkZW9fdHJhY2siIGluc3RlYWQuCisgICAgICAgICAgICAgICAgICAgIHN0
cmVhbS0+QWRkVHJhY2socGVlckNvbm5lY3Rpb25GYWN0b3J5KCkuQ3JlYXRlVmlkZW9UcmFjaygi
dmlkZW9fdHJhY2siLCBtX3ZpZGVvU291cmNlcy5sYXN0KCkucHRyKCkpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbV9iYWNrZW5kLT5BZGRT
dHJlYW0oc3RyZWFtKTsKKyAgICB9CisgICAgbV9iYWNrZW5kLT5DcmVhdGVBbnN3ZXIoJm1fY3Jl
YXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIsIG51bGxwdHIpOworfQorCit2b2lkIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6OmdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrLCBQZWVy
Q29ubmVjdGlvbjo6U3RhdHNQcm9taXNlJiYgcHJvbWlzZSkKK3sKKyAgICBhdXRvIGNvbGxlY3Rv
ciA9IFN0YXRzQ29sbGVjdG9yOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIHRyYWNr
KTsKKyAgICBtX2JhY2tlbmQtPkdldFN0YXRzKGNvbGxlY3Rvci5wdHIoKSk7CisgICAgbV9zdGF0
c0NvbGxlY3RvcnMuYXBwZW5kKFdURk1vdmUoY29sbGVjdG9yKSk7Cit9CisKK0xpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OlN0YXRzQ29sbGVjdG9yOjpTdGF0c0NvbGxlY3RvcihMaWJXZWJSVENNZWRp
YUVuZHBvaW50JiBlbmRwb2ludCwgUGVlckNvbm5lY3Rpb246OlN0YXRzUHJvbWlzZSYmIHByb21p
c2UsIE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKQorICAgIDogbV9lbmRwb2ludChlbmRwb2ludCkK
KyAgICAsIG1fcHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKQoreworICAgIGlmICh0cmFjaykKKyAg
ICAgICAgbV9pZCA9IHRyYWNrLT5pZCgpOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9p
bnQ6OlN0YXRzQ29sbGVjdG9yOjpPblN0YXRzRGVsaXZlcmVkKGNvbnN0IHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxjb25zdCB3ZWJydGM6OlJUQ1N0YXRzUmVwb3J0PiYgcmVwb3J0KQoreworICAgIFJlZjxM
aWJXZWJSVENNZWRpYUVuZHBvaW50PiBwcm90ZWN0b3IgPSBtX2VuZHBvaW50OworICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RoaXMsIHJlcG9ydCwgcHJvdGVjdG9yID0gV1RGTW92ZShwcm90ZWN0b3Ip
XSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZnVsZmlsbGluZyBvZiB0aGUgcHJvbWlz
ZSBiYXNlZCBvbiByZXBvcnQgaW5mb3JtYXRpb24uCisgICAgICAgIG1fcHJvbWlzZS5yZWplY3Qo
Tk9UX1NVUFBPUlRFRF9FUlIsICJOb3QgaW1wbGVtZW50ZWQgeWV0Iik7CisgICAgICAgIG1fZW5k
cG9pbnQubV9zdGF0c0NvbGxlY3RvcnMucmVtb3ZlRmlyc3RNYXRjaGluZyhbdGhpc10oY29uc3Qg
UmVmPFN0YXRzQ29sbGVjdG9yPiYgY29sbGVjdG9yKSB7CisgICAgICAgICAgICByZXR1cm4gdGhp
cyA9PSBjb2xsZWN0b3IucHRyKCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitzdGF0aWMg
UGVlckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGluZ1N0YXRlIHNpZ25hbGluZ1N0YXRlKHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlNpZ25hbGluZ1N0YXRlIHN0YXRlKQoreworICAg
IHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U6OmtTdGFibGU6CisgICAgICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblN0YXRlczo6U2lnbmFs
aW5nU3RhdGU6OlN0YWJsZTsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U6OmtIYXZlTG9jYWxPZmZlcjoKKyAgICAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU3RhdGVz
OjpTaWduYWxpbmdTdGF0ZTo6SGF2ZUxvY2FsT2ZmZXI7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjprSGF2ZUxvY2FsUHJBbnN3ZXI6CisgICAgICAgIHJldHVybiBQ
ZWVyQ29ubmVjdGlvblN0YXRlczo6U2lnbmFsaW5nU3RhdGU6OkhhdmVMb2NhbFByQW5zd2VyOwor
ICAgIGNhc2Ugd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0hhdmVSZW1vdGVPZmZl
cjoKKyAgICAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZTo6
SGF2ZVJlbW90ZU9mZmVyOworICAgIGNhc2Ugd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZTo6a0hhdmVSZW1vdGVQckFuc3dlcjoKKyAgICAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU3Rh
dGVzOjpTaWduYWxpbmdTdGF0ZTo6SGF2ZVJlbW90ZVByQW5zd2VyOworICAgIGNhc2Ugd2VicnRj
OjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0Nsb3NlZDoKKyAgICAgICAgcmV0dXJuIFBlZXJD
b25uZWN0aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZTo6Q2xvc2VkOworICAgIH0KK30KKwordm9p
ZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPblNpZ25hbGluZ0NoYW5nZSh3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpTaWduYWxpbmdTdGF0ZSBydGNTdGF0ZSkKK3sKKyAgICBhdXRv
IHN0YXRlID0gc2lnbmFsaW5nU3RhdGUocnRjU3RhdGUpOworICAgIFJlZlB0cjxMaWJXZWJSVENN
ZWRpYUVuZHBvaW50PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBzdGF0ZV0geworICAgICAg
ICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnVwZGF0ZVNpZ25h
bGluZ1N0YXRlKHN0YXRlKTsKKyAgICB9KTsKK30KKworc3RhdGljIGlubGluZSBTdHJpbmcgdHJh
Y2tJZCh3ZWJydGM6Ok1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2UmIHZpZGVvVHJhY2spCit7Cisg
ICAgcmV0dXJuIFN0cmluZyh2aWRlb1RyYWNrLmlkKCkuZGF0YSgpLCB2aWRlb1RyYWNrLmlkKCku
c2l6ZSgpKTsKK30KKworc3RhdGljIGlubGluZSBSZWY8TWVkaWFTdHJlYW1UcmFjaz4gY3JlYXRl
TWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8UmVh
bHRpbWVNZWRpYVNvdXJjZT4mJiByZW1vdGVTb3VyY2UpCit7CisgICAgU3RyaW5nIHRyYWNrSWQg
PSByZW1vdGVTb3VyY2UtPmlkKCk7CisgICAgcmV0dXJuIE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0
ZShjb250ZXh0LCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKFdURk1vdmUocmVtb3Rl
U291cmNlKSwgV1RGTW92ZSh0cmFja0lkKSkpOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6OmFkZFN0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlJiBzdHJlYW0pCit7
CisgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciB0cmFja3M7CisgICAgZm9yIChhdXRvJiB2aWRl
b1RyYWNrIDogc3RyZWFtLkdldFZpZGVvVHJhY2tzKCkpIHsKKyAgICAgICAgQVNTRVJUKHZpZGVv
VHJhY2spOworICAgICAgICBTdHJpbmcgaWQgPSB0cmFja0lkKCp2aWRlb1RyYWNrKTsKKyAgICAg
ICAgYXV0byByZW1vdGVTb3VyY2UgPSBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmNyZWF0
ZShXVEZNb3ZlKHZpZGVvVHJhY2spLCBXVEZNb3ZlKGlkKSk7CisgICAgICAgIHRyYWNrcy5hcHBl
bmQoY3JlYXRlTWVkaWFTdHJlYW1UcmFjaygqbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVj
dGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShyZW1vdGVTb3VyY2UpKSk7
CisgICAgfQorICAgIC8vIEZJWE1FOiBTdXBwb3J0IGF1ZGlvIHRyYWNrcworCisgICAgYXV0byBu
ZXdTdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKCptX3BlZXJDb25uZWN0aW9uQmFja2VuZC5j
b25uZWN0aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKHRyYWNrcykpOwor
ICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5maXJlRXZlbnQoTWVkaWFT
dHJlYW1FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGRzdHJlYW1FdmVudCwgZmFsc2UsIGZh
bHNlLCBuZXdTdHJlYW0uY29weVJlZigpKSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3Ry
ZWFtPj4gc3RyZWFtczsKKyAgICBzdHJlYW1zLmFwcGVuZChuZXdTdHJlYW0uY29weVJlZigpKTsK
KyAgICBmb3IgKGF1dG8mIHRyYWNrIDogbmV3U3RyZWFtLT5nZXRUcmFja3MoKSkKKyAgICAgICAg
bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLmZpcmVFdmVudChSVENUcmFja0V2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgbnVsbHB0
ciwgdHJhY2suZ2V0KCksIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PihzdHJlYW1zKSwgbnVs
bHB0cikpOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uQWRkU3RyZWFtKHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPiBzdHJlYW0pCit7
CisgICAgUmVmUHRyPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IHByb3RlY3RlZFRoaXModGhpcyk7
CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIHN0cmVhbSA9IFdURk1vdmUoc3RyZWFtKV0geworICAgICAgICBpZiAocHJvdGVjdGVk
VGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChz
dHJlYW0pOworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRTdHJlYW0oKnN0cmVhbS5nZXQoKSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25SZW1vdmVTdHJl
YW0ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2U+KQorewor
ICAgIC8vIEZJWE1FOiBUbyBiZSBpbXBsZW1lbnRlZC4KK30KKwordm9pZCBMaWJXZWJSVENNZWRp
YUVuZHBvaW50OjphZGREYXRhQ2hhbm5lbChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRh
Q2hhbm5lbEludGVyZmFjZT4mJikKK3sKKyAgICAvLyBGSVhNRTogVG8gYmUgaW1wbGVtZW50ZWQu
Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25EYXRhQ2hhbm5lbChydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4gZGF0YUNoYW5uZWwpCit7
CisgICAgUmVmUHRyPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IHByb3RlY3RlZFRoaXModGhpcyk7
CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIGRhdGFDaGFubmVsID0gV1RGTW92ZShkYXRhQ2hhbm5lbCldIHsKKyAgICAgICAgaWYg
KHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5hZGREYXRhQ2hhbm5lbChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpEYXRhQ2hhbm5lbEludGVyZmFjZT4oZGF0YUNoYW5uZWwpKTsKKyAgICB9KTsKK30KKwordm9p
ZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzdG9wKCkKK3sKKyAgICBBU1NFUlQobV9iYWNrZW5k
KTsKKyAgICBtX2JhY2tlbmQtPkNsb3NlKCk7CisgICAgbV9iYWNrZW5kID0gbnVsbHB0cjsKK30K
Kwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPblJlbmVnb3RpYXRpb25OZWVkZWQoKQor
eworICAgIC8vIEZJWE1FOiBUbyBiZSBpbXBsZW1lbnRlZC4KK30KKworc3RhdGljIGlubGluZSBQ
ZWVyQ29ubmVjdGlvblN0YXRlczo6SWNlQ29ubmVjdGlvblN0YXRlIGljZUNvbm5lY3Rpb25TdGF0
ZSh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUgc3Rh
dGUpCit7CisgICAgQVNTRVJUKHN0YXRlICE9IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U6OmtJY2VDb25uZWN0aW9uTWF4KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGVlckNvbm5l
Y3Rpb25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZT4oc3RhdGUpOworfQorCit2b2lkIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6Ok9uSWNlQ29ubmVjdGlvbkNoYW5nZSh3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUgc3RhdGUpCit7CisgICAgYXV0byBj
b25uZWN0aW9uU3RhdGUgPSBpY2VDb25uZWN0aW9uU3RhdGUoc3RhdGUpOworICAgIFJlZlB0cjxM
aWJXZWJSVENNZWRpYUVuZHBvaW50PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb25uZWN0
aW9uU3RhdGVdIHsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLmludGVybmFsSWNlQ29ubmVjdGlvblN0YXRlKCkgIT0g
Y29ubmVjdGlvblN0YXRlKQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLnVwZGF0ZUljZUNvbm5lY3Rpb25TdGF0ZShjb25uZWN0
aW9uU3RhdGUpOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9u
SWNlR2F0aGVyaW5nQ2hhbmdlKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUdh
dGhlcmluZ1N0YXRlIHN0YXRlKQoreworICAgIGlmIChzdGF0ZSA9PSB3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlOjprSWNlR2F0aGVyaW5nQ29tcGxldGUpIHsKKyAgICAgICAgUmVmUHRy
PExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7
CisgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlv
bkJhY2tlbmQuZG9uZUdhdGhlcmluZ0NhbmRpZGF0ZXMoKTsKKyAgICAgICAgfSk7CisgICAgfQor
fQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uSWNlQ2FuZGlkYXRlKGNvbnN0IHdl
YnJ0Yzo6SWNlQ2FuZGlkYXRlSW50ZXJmYWNlICpydGNDYW5kaWRhdGUpCit7CisgICAgQVNTRVJU
KHJ0Y0NhbmRpZGF0ZSk7CisKKyAgICBzdGQ6OnN0cmluZyBzZHA7CisgICAgcnRjQ2FuZGlkYXRl
LT5Ub1N0cmluZygmc2RwKTsKKyAgICBTdHJpbmcgY2FuZGlkYXRlU0RQKHNkcC5kYXRhKCksIHNk
cC5zaXplKCkpOworCisgICAgYXV0byBtaWQgPSBydGNDYW5kaWRhdGUtPnNkcF9taWQoKTsKKyAg
ICBTdHJpbmcgY2FuZGlkYXRlTWlkKG1pZC5kYXRhKCksIG1pZC5zaXplKCkpOworCisgICAgUmVm
UHRyPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIG1p
ZCA9IFdURk1vdmUoY2FuZGlkYXRlTWlkKSwgc2RwID0gV1RGTW92ZShjYW5kaWRhdGVTRFApXSB7
CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuZmly
ZUlDRUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFN0cmluZyhzZHApLCBT
dHJpbmcobWlkKSwgMCkpOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9p
bnQ6Ok9uSWNlQ2FuZGlkYXRlc1JlbW92ZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Y3JpY2tldDo6Q2Fu
ZGlkYXRlPiYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgTGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKHdlYnJ0
Yzo6U2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlKiBkZXNjcmlwdGlvbikKK3sKKyAgICBzdGQ6
OnN0cmluZyBzZHA7CisgICAgZGVzY3JpcHRpb24tPlRvU3RyaW5nKCZzZHApOworICAgIFN0cmlu
ZyBzZHBTdHJpbmcoc2RwLmRhdGEoKSwgc2RwLnNpemUoKSk7CisKKyAgICBSZWZQdHI8TGliV2Vi
UlRDTWVkaWFFbmRwb2ludD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgc2RwID0gV1RGTW92
ZShzZHBTdHJpbmcpXSB7CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1faXNJbml0
aWF0b3IpCisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChTdHJpbmcoc2RwKSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dl
clN1Y2NlZWRlZChTdHJpbmcoc2RwKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgU3RyaW5nIGVycm9yKGVycm9yTWVzc2FnZS5kYXRh
KCksIGVycm9yTWVzc2FnZS5zaXplKCkpOworICAgIFJlZlB0cjxMaWJXZWJSVENNZWRpYUVuZHBv
aW50PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7
CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1faXNJbml0aWF0b3IpCisgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jcmVhdGVPZmZlckZh
aWxlZChFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgU3RyaW5nKGVycm9yKSB9KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY3JlYXRlQW5zd2VyRmFpbGVkKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBTdHJpbmco
ZXJyb3IpIH0pOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNl
dExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKCkKK3sKKyAgICBSZWZQdHI8TGliV2Vi
UlRDTWVkaWFFbmRwb2ludD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0geworICAgICAgICBp
ZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNldExvY2FsRGVzY3Jp
cHRpb25TdWNjZWVkZWQoKTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpzZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZChjb25zdCBzdGQ6OnN0cmluZyYg
ZXJyb3JNZXNzYWdlKQoreworICAgIFN0cmluZyBlcnJvcihlcnJvck1lc3NhZ2UuZGF0YSgpLCBl
cnJvck1lc3NhZ2Uuc2l6ZSgpKTsKKyAgICBSZWZQdHI8TGliV2ViUlRDTWVkaWFFbmRwb2ludD4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKV0geworICAg
ICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNldExvY2Fs
RGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIFN0cmluZyhlcnJv
cikgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0UmVt
b3RlU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKCkKK3sKKyAgICBSZWZQdHI8TGliV2ViUlRD
TWVkaWFFbmRwb2ludD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0geworICAgICAgICBpZiAo
cHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNldFJlbW90ZURlc2NyaXB0
aW9uU3VjY2VlZGVkKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6c2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3RyaW5nJiBl
cnJvck1lc3NhZ2UpCit7CisgICAgU3RyaW5nIGVycm9yKGVycm9yTWVzc2FnZS5kYXRhKCksIGVy
cm9yTWVzc2FnZS5zaXplKCkpOworICAgIFJlZlB0cjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7CisgICAg
ICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuc2V0UmVtb3Rl
RGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIFN0cmluZyhlcnJv
cikgfSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShMSUJXRUJSVENfRU5EUE9JTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRp
YUVuZHBvaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODMwNDYyNmUyM2JlYjQwZWZjMzMwNDc2ZjA5NDBkNGE5
ZTc1YTZiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaApAQCAtMCwwICsxLDE3MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAq
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKExJQldFQlJUQ19FTkRQT0lOVCkKKworI2luY2x1ZGUgIkxpYldlYlJU
Q1V0aWxzLmgiCisjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgiCisjaW5jbHVkZSAi
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmgiCisKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL2pz
ZXAuaD4KKyNpbmNsdWRlIDx3ZWJydGMvYXBpL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5oPgorI2lu
Y2x1ZGUgPHdlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDx3
ZWJydGMvYXBpL3J0Y3N0YXRzY29sbGVjdG9yLmg+CisKK25hbWVzcGFjZSB3ZWJydGMgeworY2xh
c3MgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXI7CitjbGFzcyBEYXRhQ2hhbm5lbElu
dGVyZmFjZTsKK2NsYXNzIEljZUNhbmRpZGF0ZUludGVyZmFjZTsKK2NsYXNzIE1lZGlhU3RyZWFt
SW50ZXJmYWNlOworY2xhc3MgUGVlckNvbm5lY3Rpb25PYnNlcnZlcjsKK2NsYXNzIFNlc3Npb25E
ZXNjcmlwdGlvbkludGVyZmFjZTsKK2NsYXNzIFNldFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVy
OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU3RyZWFtVHJhY2s7Citj
bGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CitjbGFzcyBSVENTZXNzaW9uRGVz
Y3JpcHRpb247CisKK2NsYXNzIExpYldlYlJUQ01lZGlhRW5kcG9pbnQgZmluYWwgOiBwdWJsaWMg
UmVmQ291bnRlZDxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiwgcHJpdmF0ZSB3ZWJydGM6OlBlZXJD
b25uZWN0aW9uT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TGliV2ViUlRDTWVk
aWFFbmRwb2ludD4gY3JlYXRlKExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYgcGVlckNv
bm5lY3Rpb24pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGliV2ViUlRDTWVkaWFFbmRwb2ludChw
ZWVyQ29ubmVjdGlvbikpOyB9CisKKyAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
JiBiYWNrZW5kKCkgY29uc3QgeyBBU1NFUlQobV9iYWNrZW5kKTsgcmV0dXJuICptX2JhY2tlbmQu
Z2V0KCk7IH0KKyAgICB2b2lkIGRvU2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3Jp
cHRpb24mKTsKKyAgICB2b2lkIGRvU2V0UmVtb3RlRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uJik7CisgICAgdm9pZCBkb0NyZWF0ZU9mZmVyKCk7CisgICAgdm9pZCBkb0NyZWF0ZUFu
c3dlcigpOworICAgIHZvaWQgZ2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayosIFBlZXJDb25uZWN0
aW9uOjpTdGF0c1Byb21pc2UmJik7CisKKyAgICB2b2lkIHN0b3JlSWNlQ2FuZGlkYXRlKHN0ZDo6
dW5pcXVlX3B0cjx3ZWJydGM6OkljZUNhbmRpZGF0ZUludGVyZmFjZT4mJiBjYW5kaWRhdGUpIHsg
bV9wZW5kaW5nQ2FuZGlkYXRlcy5hcHBlbmQoV1RGTW92ZShjYW5kaWRhdGUpKTsgfQorICAgIHZv
aWQgYWRkUGVuZGluZ0ljZUNhbmRpZGF0ZXMoKTsKKworICAgIHZvaWQgc3RvcCgpOworCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IExpYldlYlJUQ01lZGlhRW5kcG9pbnQoTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kJik7CisKKyAgICBpbnQgQWRkUmVmKCkgY29uc3QgeyByZWYoKTsgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4ocmVmQ291bnQoKSk7IH0KKyAgICBpbnQgUmVsZWFzZSgpIGNv
bnN0IHsgZGVyZWYoKTsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVmQ291bnQoKSk7IH0KKwor
ICAgIC8vIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciBBUEkKKyAgICB2b2lkIE9uU2ln
bmFsaW5nQ2hhbmdlKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlNpZ25hbGluZ1N0
YXRlKSBmaW5hbDsKKyAgICB2b2lkIE9uQWRkU3RyZWFtKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPikgZmluYWw7CisgICAgdm9pZCBPblJlbW92ZVN0cmVh
bShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZT4pIGZpbmFs
OworICAgIHZvaWQgT25EYXRhQ2hhbm5lbChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRh
Q2hhbm5lbEludGVyZmFjZT4pIGZpbmFsOworICAgIHZvaWQgT25SZW5lZ290aWF0aW9uTmVlZGVk
KCkgZmluYWw7CisgICAgdm9pZCBPbkljZUNvbm5lY3Rpb25DaGFuZ2Uod2VicnRjOjpQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlKSBmaW5hbDsKKyAgICB2b2lkIE9u
SWNlR2F0aGVyaW5nQ2hhbmdlKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUdh
dGhlcmluZ1N0YXRlKSBmaW5hbDsKKyAgICB2b2lkIE9uSWNlQ2FuZGlkYXRlKGNvbnN0IHdlYnJ0
Yzo6SWNlQ2FuZGlkYXRlSW50ZXJmYWNlKikgZmluYWw7CisgICAgdm9pZCBPbkljZUNhbmRpZGF0
ZXNSZW1vdmVkKGNvbnN0IHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OkNhbmRpZGF0ZT4mKSBmaW5hbDsK
KworICAgIHZvaWQgY3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKHdlYnJ0Yzo6U2Vz
c2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlKik7CisgICAgdm9pZCBjcmVhdGVTZXNzaW9uRGVzY3Jp
cHRpb25GYWlsZWQoY29uc3Qgc3RkOjpzdHJpbmcmKTsKKyAgICB2b2lkIHNldExvY2FsU2Vzc2lv
bkRlc2NyaXB0aW9uU3VjY2VlZGVkKCk7CisgICAgdm9pZCBzZXRMb2NhbFNlc3Npb25EZXNjcmlw
dGlvbkZhaWxlZChjb25zdCBzdGQ6OnN0cmluZyYpOworICAgIHZvaWQgc2V0UmVtb3RlU2Vzc2lv
bkRlc2NyaXB0aW9uU3VjY2VlZGVkKCk7CisgICAgdm9pZCBzZXRSZW1vdGVTZXNzaW9uRGVzY3Jp
cHRpb25GYWlsZWQoY29uc3Qgc3RkOjpzdHJpbmcmKTsKKyAgICB2b2lkIGFkZFN0cmVhbSh3ZWJy
dGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlJik7CisgICAgdm9pZCBhZGREYXRhQ2hhbm5lbChydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4mJik7CisKKyAgICBi
b29sIGlzU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2JhY2tlbmQ7IH0KKworICAgIGNsYXNz
IENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIDogcHVibGljIHdlYnJ0Yzo6Q3JlYXRl
U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgQ3JlYXRl
U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIoTGliV2ViUlRDTWVkaWFFbmRwb2ludCAmZW5kcG9p
bnQpIDogbV9lbmRwb2ludChlbmRwb2ludCkgeyB9CisgICAgICAgIHZvaWQgT25TdWNjZXNzKHdl
YnJ0Yzo6U2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlKiBzZXNzaW9uRGVzY3JpcHRpb24pIGZp
bmFsIHsgbV9lbmRwb2ludC5jcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQoc2Vzc2lv
bkRlc2NyaXB0aW9uKTsgfQorICAgICAgICB2b2lkIE9uRmFpbHVyZShjb25zdCBzdGQ6OnN0cmlu
ZyYgZXJyb3IpIGZpbmFsIHsgbV9lbmRwb2ludC5jcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25GYWls
ZWQoZXJyb3IpOyB9CisKKyAgICAgICAgaW50IEFkZFJlZigpIGNvbnN0IHsgcmV0dXJuIG1fZW5k
cG9pbnQuQWRkUmVmKCk7IH0KKyAgICAgICAgaW50IFJlbGVhc2UoKSBjb25zdCB7IHJldHVybiBt
X2VuZHBvaW50LlJlbGVhc2UoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgTGliV2ViUlRD
TWVkaWFFbmRwb2ludCYgbV9lbmRwb2ludDsKKyAgICB9OworCisgICAgY2xhc3MgU2V0TG9jYWxT
ZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciA6IHB1YmxpYyB3ZWJydGM6OlNldFNlc3Npb25EZXNj
cmlwdGlvbk9ic2VydmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNldExvY2FsU2Vzc2lvbkRl
c2NyaXB0aW9uT2JzZXJ2ZXIoTGliV2ViUlRDTWVkaWFFbmRwb2ludCAmZW5kcG9pbnQpIDogbV9l
bmRwb2ludChlbmRwb2ludCkgeyB9CisgICAgICAgIHZvaWQgT25TdWNjZXNzKCkgZmluYWwgeyBt
X2VuZHBvaW50LnNldExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKCk7IH0KKyAgICAg
ICAgdm9pZCBPbkZhaWx1cmUoY29uc3Qgc3RkOjpzdHJpbmcmIGVycm9yKSBmaW5hbCB7IG1fZW5k
cG9pbnQuc2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoZXJyb3IpOyB9CisKKyAgICAg
ICAgaW50IEFkZFJlZigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kcG9pbnQuQWRkUmVmKCk7IH0KKyAg
ICAgICAgaW50IFJlbGVhc2UoKSBjb25zdCB7IHJldHVybiBtX2VuZHBvaW50LlJlbGVhc2UoKTsg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgTGliV2ViUlRDTWVkaWFFbmRwb2ludCYgbV9lbmRw
b2ludDsKKyAgICB9OworCisgICAgY2xhc3MgU2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uT2Jz
ZXJ2ZXIgOiBwdWJsaWMgd2VicnRjOjpTZXRTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciB7Cisg
ICAgcHVibGljOgorICAgICAgICBTZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcihM
aWJXZWJSVENNZWRpYUVuZHBvaW50ICZlbmRwb2ludCkgOiBtX2VuZHBvaW50KGVuZHBvaW50KSB7
IH0KKyAgICAgICAgdm9pZCBPblN1Y2Nlc3MoKSBmaW5hbCB7IG1fZW5kcG9pbnQuc2V0UmVtb3Rl
U2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKCk7IH0KKyAgICAgICAgdm9pZCBPbkZhaWx1cmUo
Y29uc3Qgc3RkOjpzdHJpbmcmIGVycm9yKSBmaW5hbCB7IG1fZW5kcG9pbnQuc2V0UmVtb3RlU2Vz
c2lvbkRlc2NyaXB0aW9uRmFpbGVkKGVycm9yKTsgfQorCisgICAgICAgIGludCBBZGRSZWYoKSBj
b25zdCB7IHJldHVybiBtX2VuZHBvaW50LkFkZFJlZigpOyB9CisgICAgICAgIGludCBSZWxlYXNl
KCkgY29uc3QgeyByZXR1cm4gbV9lbmRwb2ludC5SZWxlYXNlKCk7IH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIExpYldlYlJUQ01lZGlhRW5kcG9pbnQmIG1fZW5kcG9pbnQ7CisgICAgfTsKKwor
ICAgIGNsYXNzIFN0YXRzQ29sbGVjdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8U3RhdHNDb2xsZWN0
b3I+LCBwdWJsaWMgd2VicnRjOjpSVENTdGF0c0NvbGxlY3RvckNhbGxiYWNrIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIHN0YXRpYyBSZWY8U3RhdHNDb2xsZWN0b3I+IGNyZWF0ZShMaWJXZWJSVENN
ZWRpYUVuZHBvaW50JiBlbmRwb2ludCwgUGVlckNvbm5lY3Rpb246OlN0YXRzUHJvbWlzZSYmIHBy
b21pc2UsIE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJlZigqIG5ldyBT
dGF0c0NvbGxlY3RvcihlbmRwb2ludCwgV1RGTW92ZShwcm9taXNlKSwgdHJhY2spKTsgfQorICAg
IHByaXZhdGU6CisgICAgICAgIFN0YXRzQ29sbGVjdG9yKExpYldlYlJUQ01lZGlhRW5kcG9pbnQm
LCBQZWVyQ29ubmVjdGlvbjo6U3RhdHNQcm9taXNlJiYsIE1lZGlhU3RyZWFtVHJhY2sqKTsKKwor
ICAgICAgICAvLyB3ZWJydGM6OlJUQ1N0YXRzQ29sbGVjdG9yQ2FsbGJhY2sgQVBJCisgICAgICAg
IGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7IHJlZigpOyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihyZWZDb3VudCgpKTsgfQorICAgICAgICBpbnQgUmVsZWFzZSgpIGNvbnN0IGZpbmFsIHsgZGVy
ZWYoKTsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVmQ291bnQoKSk7IH0KKyAgICAgICAgdm9p
ZCBPblN0YXRzRGVsaXZlcmVkKGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCB3ZWJydGM6
OlJUQ1N0YXRzUmVwb3J0PiYpIGZpbmFsOworCisgICAgICAgIExpYldlYlJUQ01lZGlhRW5kcG9p
bnQmIG1fZW5kcG9pbnQ7CisgICAgICAgIFBlZXJDb25uZWN0aW9uOjpTdGF0c1Byb21pc2UgbV9w
cm9taXNlOworICAgICAgICBTdHJpbmcgbV9pZDsKKyAgICB9OworCisgICAgTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kJiBtX3BlZXJDb25uZWN0aW9uQmFja2VuZDsKKyAgICBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gbV9iYWNrZW5kOwor
CisgICAgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgbV9jcmVhdGVTZXNzaW9uRGVz
Y3JpcHRpb25PYnNlcnZlcjsKKyAgICBTZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVy
IG1fc2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjsKKyAgICBTZXRSZW1vdGVTZXNz
aW9uRGVzY3JpcHRpb25PYnNlcnZlciBtX3NldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2Vy
dmVyOworCisgICAgYm9vbCBtX2lzSW5pdGlhdG9yIHsgZmFsc2UgfTsKKworICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpJY2VDYW5kaWRhdGVJbnRlcmZhY2U+PiBtX3BlbmRpbmdD
YW5kaWRhdGVzOworICAgIFZlY3RvcjxSZWY8UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlPj4g
bV92aWRlb1NvdXJjZXM7CisgICAgVmVjdG9yPFJlZjxTdGF0c0NvbGxlY3Rvcj4+IG1fc3RhdHND
b2xsZWN0b3JzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKExJQldFQlJUQ19FTkRQT0lOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzYmM4YzE0ZGIyZjAyNjBh
ZTllOTQyMjQ4NTk2ZjJkODY5MDI3MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwCkBAIC0wLDAgKzEsMTc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJl
ZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisg
KiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5oIgorCisjaWYgRU5BQkxFKExJQldFQlJUQ19FTkRQT0lOVCkK
KworI2luY2x1ZGUgIkljZUNhbmRpZGF0ZS5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ01lZGlhRW5k
cG9pbnQuaCIKKyNpbmNsdWRlICJNZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbi5oIgorI2luY2x1
ZGUgIlJUQ0ljZUNhbmRpZGF0ZS5oIgorI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiUlRDUnRwUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRp
b24uaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBlZXJDb25uZWN0aW9uQmFj
a2VuZD4gY3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKFJUQ1BlZXJDb25uZWN0
aW9uJiBwZWVyQ29ubmVjdGlvbikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBlZXJD
b25uZWN0aW9uQmFja2VuZD4obmV3IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZChwZWVy
Q29ubmVjdGlvbikpOworfQorCitDcmVhdGVQZWVyQ29ubmVjdGlvbkJhY2tlbmQgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpjcmVhdGUgPSBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ7CisKK0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6TGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kKFJUQ1BlZXJDb25uZWN0aW9uJiBwZWVyQ29ubmVjdGlvbikKKyAgICA6IFBl
ZXJDb25uZWN0aW9uQmFja2VuZChwZWVyQ29ubmVjdGlvbikKKyAgICAsIG1fZW5kcG9pbnQoTGli
V2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlKCp0aGlzKSkKK3sKK30KKworc3RhdGljIHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlv
bkZyb21NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50Q29uZmlndXJhdGlv
biYmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZTo6UlRDQ29uZmlndXJhdGlvbiBydGNDb25maWd1cmF0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb25UeXBlOjprQWdncmVzc2l2ZSk7CisKKyAgICBp
ZiAoY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kgPT0gUGVlckNvbm5lY3Rpb25TdGF0
ZXM6OkljZVRyYW5zcG9ydFBvbGljeTo6UmVsYXkpCisgICAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24u
dHlwZSA9IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtSZWxheTsKKworICAgIGlm
IChjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSA9PSBQZWVyQ29ubmVjdGlvblN0YXRlczo6QnVu
ZGxlUG9saWN5OjpNYXhCdW5kbGUpCisgICAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uYnVuZGxlX3Bv
bGljeSA9IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtCdW5kbGVQb2xpY3lNYXhC
dW5kbGU7CisgICAgZWxzZSBpZiAoY29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kgPT0gUGVlckNv
bm5lY3Rpb25TdGF0ZXM6OkJ1bmRsZVBvbGljeTo6TWF4Q29tcGF0KQorICAgICAgICBydGNDb25m
aWd1cmF0aW9uLmJ1bmRsZV9wb2xpY3kgPSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjprQnVuZGxlUG9saWN5TWF4Q29tcGF0OworCisgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBjb25m
aWd1cmF0aW9uLmljZVNlcnZlcnMpIHsKKyAgICAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6SWNlU2VydmVyIGljZVNlcnZlcjsKKyAgICAgICAgaWNlU2VydmVyLnVzZXJuYW1l
ID0gc2VydmVyLnVzZXJuYW1lLnV0ZjgoKS5kYXRhKCk7CisgICAgICAgIGljZVNlcnZlci5wYXNz
d29yZCA9IHNlcnZlci5jcmVkZW50aWFsLnV0ZjgoKS5kYXRhKCk7CisgICAgICAgIGZvciAoYXV0
byYgdXJsIDogc2VydmVyLnVybHMpCisgICAgICAgICAgICBpY2VTZXJ2ZXIudXJscy5wdXNoX2Jh
Y2soeyB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSB9KTsKKyAgICAgICAgcnRjQ29uZmlndXJh
dGlvbi5zZXJ2ZXJzLnB1c2hfYmFjayhXVEZNb3ZlKGljZVNlcnZlcikpOworICAgIH0KKworICAg
IHJldHVybiBydGNDb25maWd1cmF0aW9uOworfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6c2V0Q29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbiYm
IGNvbmZpZ3VyYXRpb24pCit7CisgICAgbV9lbmRwb2ludC0+YmFja2VuZCgpLlNldENvbmZpZ3Vy
YXRpb24oY29uZmlndXJhdGlvbkZyb21NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbihXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pKSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpnZXRTdGF0cyhNZWRpYVN0cmVhbVRyYWNrKiB0cmFjaywgUGVlckNvbm5lY3Rpb246OlN0
YXRzUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgbV9lbmRwb2ludC0+Z2V0U3RhdHModHJhY2ss
IFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZDo6ZG9TZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3Jp
cHRpb24pCit7CisgICAgbV9lbmRwb2ludC0+ZG9TZXRMb2NhbERlc2NyaXB0aW9uKGRlc2NyaXB0
aW9uKTsKKyAgICBpZiAoIW1faXNMb2NhbERlc2NyaXB0aW9uU2V0KSB7CisgICAgICAgIGlmICht
X2lzUmVtb3RlRGVzY3JpcHRpb25TZXQpCisgICAgICAgICAgICBtX2VuZHBvaW50LT5hZGRQZW5k
aW5nSWNlQ2FuZGlkYXRlcygpOworICAgICAgICBtX2lzTG9jYWxEZXNjcmlwdGlvblNldCA9IHRy
dWU7CisgICAgfQorfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9T
ZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQor
eworICAgIG1fZW5kcG9pbnQtPmRvU2V0UmVtb3RlRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pOwor
ICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7CisgICAgICAgIGlmIChtX2lzTG9j
YWxEZXNjcmlwdGlvblNldCkKKyAgICAgICAgICAgIG1fZW5kcG9pbnQtPmFkZFBlbmRpbmdJY2VD
YW5kaWRhdGVzKCk7CisgICAgICAgIG1faXNSZW1vdGVEZXNjcmlwdGlvblNldCA9IHRydWU7Cisg
ICAgfQorfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVP
ZmZlcihSVENPZmZlck9wdGlvbnMmJikKK3sKKyAgICBtX2VuZHBvaW50LT5kb0NyZWF0ZU9mZmVy
KCk7Cit9CisKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb0NyZWF0ZUFu
c3dlcihSVENBbnN3ZXJPcHRpb25zJiYpCit7CisgICAgbV9lbmRwb2ludC0+ZG9DcmVhdGVBbnN3
ZXIoKTsKK30KKwordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvU3RvcCgp
Cit7CisgICAgbV9lbmRwb2ludC0+c3RvcCgpOworfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZDo6ZG9BZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlJiBjYW5kaWRh
dGUpCit7CisgICAgd2VicnRjOjpTZHBQYXJzZUVycm9yIGVycm9yOworICAgIGludCBzZHBNTGlu
ZUluZGV4ID0gY2FuZGlkYXRlLnNkcE1MaW5lSW5kZXgoKSA/IGNhbmRpZGF0ZS5zZHBNTGluZUlu
ZGV4KCkudmFsdWUoKSA6IDA7CisgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6SWNlQ2FuZGlk
YXRlSW50ZXJmYWNlPiBydGNDYW5kaWRhdGUod2VicnRjOjpDcmVhdGVJY2VDYW5kaWRhdGUoY2Fu
ZGlkYXRlLnNkcE1pZCgpLnV0ZjgoKS5kYXRhKCksIHNkcE1MaW5lSW5kZXgsIGNhbmRpZGF0ZS5j
YW5kaWRhdGUoKS51dGY4KCkuZGF0YSgpLCAmZXJyb3IpKTsKKworICAgIGlmICghcnRjQ2FuZGlk
YXRlKSB7CisgICAgICAgIFN0cmluZyBtZXNzYWdlKGVycm9yLmRlc2NyaXB0aW9uLmRhdGEoKSwg
ZXJyb3IuZGVzY3JpcHRpb24uc2l6ZSgpKTsKKyAgICAgICAgYWRkSWNlQ2FuZGlkYXRlRmFpbGVk
KEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBXVEZNb3ZlKG1lc3NhZ2UpIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gbGlid2VicnRjIGRvZXMgbm90IGxpa2UgdGhhdCBp
Y2UgY2FuZGlkYXRlcyBhcmUgc2V0IGJlZm9yZSB0aGUgZGVzY3JpcHRpb24uCisgICAgaWYgKCFt
X2lzTG9jYWxEZXNjcmlwdGlvblNldCB8fCAhbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KQorICAg
ICAgICBtX2VuZHBvaW50LT5zdG9yZUljZUNhbmRpZGF0ZShXVEZNb3ZlKHJ0Y0NhbmRpZGF0ZSkp
OworICAgIGVsc2UgaWYgKCFtX2VuZHBvaW50LT5iYWNrZW5kKCkuQWRkSWNlQ2FuZGlkYXRlKHJ0
Y0NhbmRpZGF0ZS5nZXQoKSkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIGFkZEljZUNhbmRpZGF0ZUZhaWxlZChFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgQVND
SUlMaXRlcmFsKCJGYWlsZWQgdG8gYXBwbHkgdGhlIHJlY2VpdmVkIGNhbmRpZGF0ZSIpIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGFkZEljZUNhbmRpZGF0ZVN1Y2NlZWRlZCgpOwor
fQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6bWFya0FzTmVlZGluZ05l
Z290aWF0aW9uKCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMKK30KKworUmVmPFJU
Q1J0cFJlY2VpdmVyPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZVJlY2Vp
dmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHJhY2tJZCkK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBj
cmVhdGUgYSBzb3VyY2UgdGhhdCB3aWxsIGdldCBmdWVsZWQgb25jZSB3ZSB3aWxsIHJlY2VpdmUg
T25BZGRTdHJlYW0uCisgICAgLy8gRm9yIHRoZSBtb21lbnQsIHdlIGNyZWF0ZSBhbiBlbXB0eSBv
bmUuCisgICAgYXV0byByZW1vdGVUcmFja1ByaXZhdGUgPSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZTo6Y3JlYXRlKFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFN0
cmluZyh0cmFja0lkKSkpOworICAgIGF1dG8gcmVtb3RlVHJhY2sgPSBNZWRpYVN0cmVhbVRyYWNr
OjpjcmVhdGUoKm1fcGVlckNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZN
b3ZlKHJlbW90ZVRyYWNrUHJpdmF0ZSkpOworCisgICAgcmV0dXJuIFJUQ1J0cFJlY2VpdmVyOjpj
cmVhdGUoV1RGTW92ZShyZW1vdGVUcmFjaykpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0
YUNoYW5uZWxIYW5kbGVyPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZURh
dGFDaGFubmVsSGFuZGxlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQm
KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTElCV0VCUlRDX0VO
RFBPSU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTAyOTM4ZjZjNTZkODg0MTJjMzg4OGZiNjBhYjM2YTk1MTJh
ZjI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKQEAgLTAsMCArMSw5
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKExJQldFQlJUQ19FTkRQT0lOVCkKKworI2luY2x1ZGUgIlBlZXJD
b25uZWN0aW9uQmFja2VuZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ7CitjbGFzcyBSVENSdHBSZWNlaXZlcjsKK2NsYXNzIFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbjsKKworY2xhc3MgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kIGZp
bmFsIDogcHVibGljIFBlZXJDb25uZWN0aW9uQmFja2VuZCB7CitwdWJsaWM6CisgICAgTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKFJUQ1BlZXJDb25uZWN0aW9uJik7CisKK3ByaXZhdGU6
CisgICAgdm9pZCBkb0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmKSBmaW5hbDsKKyAgICB2
b2lkIGRvQ3JlYXRlQW5zd2VyKFJUQ0Fuc3dlck9wdGlvbnMmJikgZmluYWw7CisgICAgdm9pZCBk
b1NldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJikgZmluYWw7CisgICAg
dm9pZCBkb1NldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYpIGZpbmFs
OworICAgIHZvaWQgZG9BZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlJikgZmluYWw7Cisg
ICAgdm9pZCBkb1N0b3AoKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5u
ZWxIYW5kbGVyPiBjcmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
UlRDRGF0YUNoYW5uZWxJbml0JikgZmluYWw7CisKKyAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IGNy
ZWF0ZVJlY2VpdmVyKGNvbnN0IFN0cmluZyYgdHJhbnNjZWl2ZXJNaWQsIGNvbnN0IFN0cmluZyYg
dHJhY2tLaW5kLCBjb25zdCBTdHJpbmcmIHRyYWNrSWQpOworCisgICAgdm9pZCBzZXRDb25maWd1
cmF0aW9uKE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uJiYpIGZpbmFsOworCisgICAgdm9pZCBn
ZXRTdGF0cyhNZWRpYVN0cmVhbVRyYWNrKiwgUGVlckNvbm5lY3Rpb246OlN0YXRzUHJvbWlzZSYm
KTsKKworICAgIGZyaWVuZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OworICAgIFJUQ1BlZXJDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9wZWVyQ29ubmVjdGlvbjsgfQorCisgICAg
Ly8gRklYTUU6IEFQSSB0byBpbXBsZW1lbnQgZm9yIHJlYWwKKyAgICBSZWZQdHI8UlRDU2Vzc2lv
bkRlc2NyaXB0aW9uPiBsb2NhbERlc2NyaXB0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IGN1cnJlbnRMb2NhbERl
c2NyaXB0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIFJlZlB0cjxS
VENTZXNzaW9uRGVzY3JpcHRpb24+IHBlbmRpbmdMb2NhbERlc2NyaXB0aW9uKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bj4gcmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9Cisg
ICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gY3VycmVudFJlbW90ZURlc2NyaXB0aW9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIFJlZlB0cjxSVENTZXNzaW9u
RGVzY3JpcHRpb24+IHBlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG51bGxwdHI7IH0KKworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PiBnZXRSZW1v
dGVTdHJlYW1zKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyB9OyB9CisKKyAgICB2b2lkIHJlcGxh
Y2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJv
bWlzZTx2b2lkPiYmKSBmaW5hbCB7IH0KKworICAgIGJvb2wgaXNOZWdvdGlhdGlvbk5lZWRlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBtYXJrQXNOZWVkaW5nTmVn
b3RpYXRpb24oKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyTmVnb3RpYXRpb25OZWVkZWRTdGF0ZSgp
IGZpbmFsIHsgfQorCisgICAgdm9pZCBlbXVsYXRlUGxhdGZvcm1FdmVudChjb25zdCBTdHJpbmcm
KSBmaW5hbCB7IH0KKworcHJpdmF0ZToKKyAgICBSZWY8TGliV2ViUlRDTWVkaWFFbmRwb2ludD4g
bV9lbmRwb2ludDsKKyAgICBib29sIG1faXNMb2NhbERlc2NyaXB0aW9uU2V0IHsgZmFsc2UgfTsK
KyAgICBib29sIG1faXNSZW1vdGVEZXNjcmlwdGlvblNldCB7IGZhbHNlIH07Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTElCV0VCUlRDX0VORFBPSU5U
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDk4OTk5MjI4MjU3NGNmYWJiNjU0ZjY3YzEzMWQ1NzJmZjI2ZWUxODYuLjI0OTViNzQy
ODY1OTUxOTMyOTgwNjBmZThiMGVmN2RjODQ2YzczZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1MDgsNiArMTUwOCwxOCBA
QAogCQk0MDlFQkRDNTE2QjdGM0NBMDBDQkEzRkMgLyogSlNDU1NGb250RmFjZUxvYWRFdmVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDlFQkRD
NDE2QjdGM0NBMDBDQkEzRkMgLyogSlNDU1NGb250RmFjZUxvYWRFdmVudC5jcHAgKi87IH07CiAJ
CTQwRUNBRTdFMTZCOEI2NzIwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMg
LyogSlNET01FcnJvci5oICovOyB9OwogCQk0MEVDQUU4MTE2QjhCNjhBMDBDMzYxMDMgLyogSlNE
T01FcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MEVDQUU4MDE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJvci5jcHAgKi87IH07CisJCTQx
MDIzMTM4MUUzNDdCMjYwMDNEQ0QzMiAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDIzMTMzMUUzNDdB
RUEwMDNEQ0QzMiAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCAqLzsgfTsKKwkJNDEwMjMx
MzkxRTM0N0IyNjAwM0RDRDMyIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAyMzEzNDFF
MzQ3QUVBMDAzRENEMzIgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCAqLzsg
fTsKKwkJNDEwMjMxM0ExRTM0N0IyOTAwM0RDRDMyIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDIzMTM1
MUUzNDdBRUEwMDNEQ0QzMiAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggKi87IH07CisJCTQx
MDIzMTNCMUUzNDdCMjkwMDNEQ0QzMiAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDIzMTM2
MUUzNDdBRUEwMDNEQ0QzMiAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCAqLzsg
fTsKKwkJNDEwMjMxNDAxRTM0N0IzMTAwM0RDRDMyIC8qIExpYldlYlJUQ01hY3Jvcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMjMxM0MxRTM0N0Iy
QTAwM0RDRDMyIC8qIExpYldlYlJUQ01hY3Jvcy5oICovOyB9OworCQk0MTAyMzE0MTFFMzQ3QjMx
MDAzRENEMzIgLyogTGliV2ViUlRDVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMjMxM0QxRTM0N0IyQTAwM0RDRDMyIC8qIExpYldlYlJU
Q1V0aWxzLmNwcCAqLzsgfTsKKwkJNDEwMjMxNDIxRTM0N0IzMTAwM0RDRDMyIC8qIExpYldlYlJU
Q1V0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTAyMzEzRTFFMzQ3QjJBMDAzRENEMzIgLyogTGliV2ViUlRDVXRpbHMuaCAqLzsgfTsKKwkJNDEw
MjMxNDMxRTM0N0IzMTAwM0RDRDMyIC8qIFJUQ1N0cmF0ZWd5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAyMzEzRjFFMzQ3QjJBMDAzRENEMzIgLyog
UlRDU3RyYXRlZ3kuaCAqLzsgfTsKKwkJNDEwMjMxNDgxRTM0ODRDQzAwM0RDRDMyIC8qIFJlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTAyMzE0NDFFMzQ4NEJGMDAzRENEMzIgLyogUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlLmNwcCAqLzsgfTsKKwkJNDEwMjMxNDkxRTM0ODRDQzAwM0RDRDMyIC8q
IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMjMxNDUxRTM0ODRCRjAwM0RDRDMyIC8qIFJlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZS5oICovOyB9OworCQk0MTAyMzE0QTFFMzQ4NENDMDAzRENEMzIg
LyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDIzMTQ2MUUzNDg0QkYwMDNEQ0QzMiAvKiBSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwICovOyB9OworCQk0MTAyMzE0QjFFMzQ4NENDMDAz
RENEMzIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAyMzE0NzFFMzQ4NEJGMDAzRENEMzIgLyog
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmggKi87IH07CiAJCTQxMEI3RTcyMTA0NUZBQjAw
MEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0Eg
LyogV2ViQ29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0YxOUIxQTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdv
cmsgKi87IH07CiAJCTQxMjMwOTEzMTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGODIxNjI5OTAyOUY0RkI1MDEwMDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICov
OyB9OwpAQCAtODY1Miw2ICs4NjY0LDE4IEBACiAJCTQwOUVCREM0MTZCN0YzQ0EwMENCQTNGQyAv
KiBKU0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQ1NTRm9udEZhY2VMb2FkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUVycm9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQwRUNBRTgwMTZCOEI2OEEwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NRXJyb3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTAyMzEzMzFFMzQ3QUVBMDAzRENEMzIgLyog
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJX
ZWJSVENNZWRpYUVuZHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEw
MjMxMzQxRTM0N0FFQTAwM0RDRDMyIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMDIzMTM1MUUz
NDdBRUEwMDNEQ0QzMiAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaDsgcGF0aCA9IGxpYndl
YnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxMDIzMTM2MUUzNDdBRUEwMDNEQ0QzMiAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMDIzMTNDMUUzNDdC
MkEwMDNEQ0QzMiAvKiBMaWJXZWJSVENNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTGliV2ViUlRDTWFjcm9zLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDTWFj
cm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMDIzMTNEMUUzNDdCMkEwMDNE
Q0QzMiAvKiBMaWJXZWJSVENVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBMaWJXZWJSVENVdGlscy5jcHA7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDVXRp
bHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTAyMzEzRTFFMzQ3QjJBMDAz
RENEMzIgLyogTGliV2ViUlRDVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTGliV2ViUlRDVXRpbHMuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTAyMzEzRjFFMzQ3QjJBMDAzRENEMzIgLyog
UlRDU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUlRDU3RyYXRl
Z3kuaDsgcGF0aCA9IGxpYndlYnJ0Yy9SVENTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MTAyMzE0NDFFMzQ4NEJGMDAzRENEMzIgLyogUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxMDIzMTQ1MUUzNDg0QkYwMDNEQ0QzMiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMDIzMTQ2MUUzNDg0QkYw
MDNEQ0QzMiAvKiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEwMjMxNDcxRTM0ODRCRjAwM0RDRDMyIC8q
IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVzc2FnZUV2
ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4
MjMyODAwQjkwQTBEIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTNGNjQgLyog
UmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTA2NCw2ICsxNTA4OCw3IEBACiAJCTA3MjIxQjQ2MTdDRUMzMjcwMDg0OEU1MSAv
KiBtZWRpYXN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNDEwMjMxMzIxRTM0N0FDRjAwM0RDRDMyIC8qIGxpYndlYnJ0YyAqLywKIAkJCQkwNzM3
OTRFRDE5RUUzNjQyMDBFNUEwNDUgLyogRE9NVVJMTWVkaWFTdHJlYW0uY3BwICovLAogCQkJCTE1
RkNDOUZEMUI0REY4NTYwMEU3MjMyNiAvKiBET01VUkxNZWRpYVN0cmVhbS5oICovLAogCQkJCTA3
Mzc5NEVFMTlFRTM2NDIwMEU1QTA0NSAvKiBET01VUkxNZWRpYVN0cmVhbS5pZGwgKi8sCkBAIC0x
NTE4NSw2ICsxNTIxMCw3IEBACiAJCTA3MjIxQjkyMTdDRjBBRDQwMDg0OEU1MSAvKiBtZWRpYXN0
cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDEw
MjMxMzcxRTM0N0IwRTAwM0RDRDMyIC8qIGxpYndlYnJ0YyAqLywKIAkJCQkwNzI5QjE0RDE3Q0ZD
Q0EwMDA0RjFENjAgLyogbWFjICovLAogCQkJCTA3RDZBNEY2MUJGMjMwN0QwMDE3NDE0NiAvKiBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggKi8sCiAJCQkJMDdCNzExNkExRDg5OUU2MzAw
OUYwRkZCIC8qIENhcHR1cmVEZXZpY2UuaCAqLywKQEAgLTE1MjU0LDYgKzE1MjgwLDEwIEBACiAJ
CQkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
Lm1tICovLAogCQkJCTRBMEZGQUEzMUFBRjVFRjYwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyTWFjLmNwcCAqLywKIAkJCQk0QTBGRkFBNDFBQUY1RUY2MDA2MjgwM0IgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oICovLAorCQkJCTQxMDIzMTQ0MUUzNDg0QkYwMDNE
Q0QzMiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwICovLAorCQkJCTQxMDIzMTQ1
MUUzNDg0QkYwMDNEQ0QzMiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKKwkJ
CQk0MTAyMzE0NjFFMzQ4NEJGMDAzRENEMzIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmNwcCAqLywKKwkJCQk0MTAyMzE0NzFFMzQ4NEJGMDAzRENEMzIgLyogUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCiAJCQkJMDdENjM3M0YxQkIwQjExMzAwMjU2
Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tICovLAogCQkJKTsKQEAgLTE2
NTU1LDYgKzE2NTg1LDI4IEBACiAJCQlwYXRoID0gbWh0bWw7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQk0MTAyMzEzMjFFMzQ3QUNGMDAzRENEMzIgLyogbGlid2VicnRjICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTAyMzEzMzFF
MzQ3QUVBMDAzRENEMzIgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgKi8sCisJCQkJNDEw
MjMxMzUxRTM0N0FFQTAwM0RDRDMyIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCAqLywKKwkJ
CQk0MTAyMzEzNDFFMzQ3QUVBMDAzRENEMzIgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNwcCAqLywKKwkJCQk0MTAyMzEzNjFFMzQ3QUVBMDAzRENEMzIgLyogTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmggKi8sCisJCQkpOworCQkJbmFtZSA9IGxpYndlYnJ0YzsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTQxMDIzMTM3MUUzNDdCMEUwMDNEQ0Qz
MiAvKiBsaWJ3ZWJydGMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTQxMDIzMTNDMUUzNDdCMkEwMDNEQ0QzMiAvKiBMaWJXZWJSVENNYWNyb3MuaCAqLywK
KwkJCQk0MTAyMzEzRDFFMzQ3QjJBMDAzRENEMzIgLyogTGliV2ViUlRDVXRpbHMuY3BwICovLAor
CQkJCTQxMDIzMTNFMUUzNDdCMkEwMDNEQ0QzMiAvKiBMaWJXZWJSVENVdGlscy5oICovLAorCQkJ
CTQxMDIzMTNGMUUzNDdCMkEwMDNEQ0QzMiAvKiBSVENTdHJhdGVneS5oICovLAorCQkJKTsKKwkJ
CW5hbWUgPSBsaWJ3ZWJydGM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk0
MTUwRjlFRDEyQjZFMDk5MDAwOEM4NjAgLyogc2hhZG93ICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI1MTE2LDYgKzI1MTY4LDcgQEAKIAkJCQlDNTU5MkY3
ODFBOTJBQTI4MDAxRjg4NjIgLyogQ2hhcmFjdGVyUHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTdCOEZGRDExNkFFN0Y5NjAwMzgzODhEIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNl
cklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTJBMEQwMDZDMUQwMEVGNkYyNiAv
KiBDaGFyc2V0RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEwMjMxM0IxRTM0N0IyOTAwM0RD
RDMyIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRjU1QjNEQjIxMjUxRjEyRDAwM0VGMjY5IC8qIENoZWNrYm94SW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlENjE5QTMwODE0NEUwMEJFMDA0QkMzMDIgLyogQ2hpbGRMaXN0TXV0YXRp
b25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMjAwOTc3RDNDMDAwNTgyNkQ5IC8q
IENoaWxkTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjU2ODQsNiArMjU3MzcsNyBAQAog
CQkJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUQwNUNFRDJBMEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9j
a0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTZDQkZCMTg3RjM3MDcwMEQ0NkJGNSAv
KiBGb3JtYXRDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMDIzMTNBMUUzNDdCMjkw
MDNEQ0QzMiAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NTA2NjRGODE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxNEM3NjcwMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNBODA2MUUxRTAzQjU4NTAwOEExRjI2IC8qIEpTRG91YmxlUmFuZ2UuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjU3ODgsNiArMjU4NDIsNyBAQAogCQkJCUU0NDYxM0EyMENENjMzMTAw
MEZBREE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREMx
RjBBMTUyMDU3MDBCMTJBNjggLyogSFRNTEJhc2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5QjI0REU4RTE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQxMDIzMTQ5MUUzNDg0Q0MwMDNEQ0QzMiAvKiBSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFERTJDMEExNTJBQzgwMEIxMkE2OCAv
KiBIVE1MQm9keUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGN0FBMEExNTY5Nzgw
MDBBNDIzNCAvKiBIVE1MQlJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEzNjlEMjA5
NzM3NEY2MDBENzQ0NjMgLyogSFRNTEJ1dHRvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
MjU5NjQsNiArMjYwMTksNyBAQAogCQkJCTUxOThGN0FEMUJCREQzRUIwMEUyQ0M1RiAvKiBJREJU
cmFuc2FjdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOEVGNTM4MURDMTQ5RTIwMDhG
MEMzOSAvKiBJREJUcmFuc2FjdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NzA3Q0Iw
MUUyMDVFRTMwMDAwNUJGNyAvKiBBdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDEwMjMxNDIxRTM0N0IzMTAwM0RDRDMyIC8qIExpYldlYlJUQ1V0aWxzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTYxMDNBRjFDQURCQTc3MDAxNkI0QzcgLyogSURCVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxODVGQ0IwMUJCNEM0RTgwMDEyODk4RiAvKiBJREJWZXJzaW9u
Q2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTgxNEUwMUM3MzM4RUIwMEJGODVB
QyAvKiBJZENoYW5nZUludmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjA5Myw2ICsy
NjE0OSw3IEBACiAJCQkJMUFFOTZBOEQxRDFBMERERDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXlt
ZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFOTZBOEYxRDFB
MERERDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUU5NkE5MTFEMUEwREREMDBCODY3NjggLyogSlNBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVj
dGVkRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMDIzMTRCMUUzNDg0Q0MwMDNEQ0QzMiAv
KiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTk2
QTkzMUQxQTBEREQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFEQjA5RDFDMTIzMDAwQkUzMjUgLyogSlNB
dHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREExNUU5RTEyQjAzRUUxMDAzQTU4M0EgLyogSlNB
dWRpb0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjI1MSw2ICsyNjMwOCw3IEBACiAJCQkJ
NTE4RjUwMDIxOTRDQUMzQTAwODFCQUFFIC8qIEpTR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE4RjUwMDQxOTRDQUMzQTAwODFCQUFFIC8qIEpTR2FtZXBhZEJ1dHRvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkU4MERBNjQwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTQxMDIzMTQwMUUzNDdCMzEwMDNEQ0QzMiAvKiBMaWJXZWJSVENN
YWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFODBEQTY2MEU5QzQ3MDMwMDBENkY3NSAvKiBK
U0dlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRBN0MxRjE4ODMyMkZDMDBDOTU0
QjUgLyogSlNHZXN0dXJlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0ODJCNzUyMTE5OENC
NkIwMEJGQjAwNSAvKiBKU0hhc2hDaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjg2
OCw2ICsyNjkyNiw3IEBACiAJCQkJQ0Q1MjA5RTQxQjBCRDgzODAwNzcxODRFIC8qIE1lZGlhUGxh
eWVyRW51bXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NkYwRDBFMTJCODE5MjcwMEMyNkFBNCAv
KiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCURG
OUFGRDcyMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTAyMzE0MzFFMzQ3QjMxMDAzRENEMzIgLyogUlRD
U3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzhCNUEzMTgwNDYzNDcwMDE2RTY4NSAv
KiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE1MDUyNEY0MUI3MTJGRjYwMDY5NkFBOSAvKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxM0U2MENENjgxQTkwMEZBREE3
NSAvKiBNZWRpYVBsYXllclByaXZhdGVRVEtpdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODg2NSw2
ICsyODkyNCw3IEBACiAJCQkJRkQzMTYwMEYxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTGlzdGVu
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwMTIxMkIwMjY3NjAwQzFBMzU5IC8qIEF1
ZGlvTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAxNTEyQjAyNjc2MDBDMUEzNTkg
LyogQXVkaW9Ob2RlSW5wdXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDEwMjMxNEExRTM0ODRD
QzAwM0RDRDMyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGRDMxNjAxNzEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlT3V0cHV0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZEMzE2MDFDMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb1BhcmFt
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERjRCNzE1MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0u
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTU1Niw2ICsyOTYxNiw3IEBACiAJCQkJQTgxMzY5RDMw
OTczNzRGNjAwRDc0NDYzIC8qIEhUTUxCdXR0b25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkzRjE5QUZEMDgyNDVFNTkwMDFFOUFCQyAvKiBIVE1MQ2FudmFzRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBOERGM0ZEMTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDEwMjMxNDExRTM0N0IzMTAwM0RDRDMyIC8qIExp
YldlYlJUQ1V0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0IzODY0MTIyODgzRTkwMEI4
MUZGOCAvKiBIVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzNF
NTEwQjE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTgzMTIwQzcwMUM1NkYzRjYwMDFDQjExMiAvKiBIVE1MRGF0YUVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zMTI4Niw2ICszMTM0Nyw3IEBACiAJCQkJRDAxQTI3QUQxMEM5QkZEODAw
MDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjI2Q0RF
MEUxMTQwNDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUFBMkE1QUQ1MTZBNDg2MTQwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDEwMjMxMzkxRTM0N0IyNjAwM0RDRDMyIC8qIExpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTJBNUFEMzE2QTQ4
NjBEMDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQUEyQTVBRDExNkE0ODYwNzAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTJBNUFDRDE2QTQ4NUZBMDA5NzVBMjUgLyogU3BlZWNo
U3ludGhlc2lzVm9pY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTY5MCw2ICszMTc1Miw3IEBA
CiAJCQkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0g
aW4gU291cmNlcyAqLywKIAkJCQk4M0M0NUI4QzFEQzJCNjY3MDA4ODcxQkEgLyogVmFsaWRhdGlv
bkJ1YmJsZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY1QTE1NDI3MTI3OTUzNEQwMEQwQjBD
MCAvKiBWYWxpZGF0aW9uTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTAyMzE0ODFF
MzQ4NENDMDAzRENEMzIgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZEMzE2MEFFMTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUyRDVBMThGMUM1NDU5MjMwMERFMzRBMyAvKiBWaWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREU4M0RCMTE4M0M0NDA2
MDAzMUVBQTMgLyogVmlkZW9QbGF5YmFja1F1YWxpdHkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MTgzOSw2ICszMTkwMiw3IEBACiAJCQkJRjU1QjNEREYxMjUxRjEyRDAwM0VGMjY5IC8qIFdlZWtJ
bnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCNTAwQTQ0RUZDNzAwRjk5MkUw
IC8qIFdoZWVsRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUxOTUxNkIxQjY1OThEMjAw
REY2RUVGIC8qIFdoZWVsRXZlbnREZWx0YUZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0
MTAyMzEzODFFMzQ3QjI2MDAzRENEMzIgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyRUVFRTU1QzFCNjZBMDQ3MDA4RTJDQkMgLyogV2hlZWxFdmVudERl
bHRhRmlsdGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FFMzM1RjExQUNCMDlFMjAwRTQw
MUVGIC8qIFdoZWVsRXZlbnRUZXN0VHJpZ2dlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5Mzgw
RjQ3MzA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBmZmZiMGRkNGNk
MjlkYjRiZmZjNTgwOWMzM2ZjOGZjYTNkNWNhNzQzLi5hYWVkN2E2ZWY1MWU0YzZlNzFhMzllMmJj
MGE0YzlmZmVkNDNiOGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0
cmF0ZWdpZXMuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgUGxhdGZvcm1TdHJhdGVnaWVzX2gKLSNkZWZpbmUgUGxh
dGZvcm1TdHJhdGVnaWVzX2gKKyNwcmFnbWEgb25jZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTMyLDYgKzMxLDkgQEAgY2xhc3MgQmxvYlJlZ2lzdHJ5OwogY2xhc3MgQ29va2llc1N0cmF0
ZWd5OwogY2xhc3MgTG9hZGVyU3RyYXRlZ3k7CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRlZ3k7Cisj
aWYgRU5BQkxFKExJQldFQlJUQ19FTkRQT0lOVCkKK2NsYXNzIFJUQ1N0cmF0ZWd5OworI2VuZGlm
CiAKIGNsYXNzIFBsYXRmb3JtU3RyYXRlZ2llcyB7CiBwdWJsaWM6CkBAIC00OCw3ICs1MCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fbG9hZGVyU3RyYXRlZ3kgPSBjcmVhdGVMb2FkZXJTdHJh
dGVneSgpOwogICAgICAgICByZXR1cm4gbV9sb2FkZXJTdHJhdGVneTsKICAgICB9Ci0gICAgCisK
ICAgICBQYXN0ZWJvYXJkU3RyYXRlZ3kqIHBhc3RlYm9hcmRTdHJhdGVneSgpCiAgICAgewogICAg
ICAgICBpZiAoIW1fcGFzdGVib2FyZFN0cmF0ZWd5KQpAQCAtNjMsNiArNjUsMTUgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9ibG9iUmVnaXN0cnk7CiAgICAgfQogCisjaWYgRU5BQkxFKExJ
QldFQlJUQ19FTkRQT0lOVCkKKyAgICBSVENTdHJhdGVneSYgcnRjU3RyYXRlZ3koKQorICAgIHsK
KyAgICAgICAgaWYgKCFtX3J0Y1N0cmF0ZWd5KQorICAgICAgICAgICAgbV9ydGNTdHJhdGVneSA9
ICZjcmVhdGVSVENTdHJhdGVneSgpOworICAgICAgICByZXR1cm4gKm1fcnRjU3RyYXRlZ3k7Cisg
ICAgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybVN0cmF0ZWdpZXMoKQogICAg
IHsKQEAgLTc3LDE2ICs4OCwyMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTG9hZGVyU3RyYXRl
Z3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkgPSAwOwogICAgIHZpcnR1YWwgUGFzdGVib2FyZFN0
cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKSA9IDA7CiAgICAgdmlydHVhbCBCbG9i
UmVnaXN0cnkqIGNyZWF0ZUJsb2JSZWdpc3RyeSgpID0gMDsKKyNpZiBFTkFCTEUoTElCV0VCUlRD
X0VORFBPSU5UKQorICAgIHZpcnR1YWwgUlRDU3RyYXRlZ3kmIGNyZWF0ZVJUQ1N0cmF0ZWd5KCkg
PSAwOworI2VuZGlmCiAKICAgICBDb29raWVzU3RyYXRlZ3kqIG1fY29va2llc1N0cmF0ZWd5IHsg
fTsKICAgICBMb2FkZXJTdHJhdGVneSogbV9sb2FkZXJTdHJhdGVneSB7IH07CiAgICAgUGFzdGVi
b2FyZFN0cmF0ZWd5KiBtX3Bhc3RlYm9hcmRTdHJhdGVneSB7IH07CiAgICAgQmxvYlJlZ2lzdHJ5
KiBtX2Jsb2JSZWdpc3RyeSB7IH07CisjaWYgRU5BQkxFKExJQldFQlJUQ19FTkRQT0lOVCkKKyAg
ICBSVENTdHJhdGVneSogbV9ydGNTdHJhdGVneSB7IG51bGxwdHIgfTsKKyNlbmRpZgogfTsKIAog
V0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1TdHJhdGVnaWVzKiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKTsK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGxhdGZvcm1TdHJhdGVnaWVzKFBsYXRmb3JtU3RyYXRl
Z2llcyopOwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUGxhdGZv
cm1TdHJhdGVnaWVzX2gKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNYWNyb3Mu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENNYWNyb3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2VjMmQ1YmUxMTEyZTFiNDA4YzYzMDJjNDdiNzNjNDhk
ZDU5MmViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01hY3Jvcy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
ICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShMSUJXRUJSVENfRU5EUE9JTlQpCisKKyNpZiBQTEFURk9STShJT1MpCisjZGVmaW5l
IFdFQlJUQ19JT1MKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorI2RlZmluZSBXRUJSVENf
TUFDCisjZW5kaWYKKworI2RlZmluZSBXRUJSVENfUE9TSVggMQorI2RlZmluZSBfQ09NTU9OX0lO
Q0xVREVEXworCisjZW5kaWYgLy8gRU5BQkxFKExJQldFQlJUQ19FTkRQT0lOVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDVXRpbHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0NzUyMWUwYjE3N2RmMTBjYjY5Mjlm
ZDIzYzQ5ZDgzMjg0ZTliNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuY3BwCkBAIC0wLDAgKzEs
MTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCisKKyNpZiBFTkFCTEUo
V0VCX1JUQykKKworI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25mYWN0b3J5Lmg+
CisjaW5jbHVkZSA8d2VicnRjL2Jhc2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXIuaD4KKyNpbmNsdWRl
IDx3ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuaD4KKyNpbmNsdWRlIDx3ZWJy
dGMvc2RrL29iamMvRnJhbWV3b3JrL0NsYXNzZXMvdmlkZW90b29sYm94dmlkZW9jb2RlY2ZhY3Rv
cnkuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgUGVlckNvbm5lY3Rpb25G
YWN0b3J5QW5kVGhyZWFkcyA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyIHsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IG5ldHdvcmtUaHJlYWQ7CisgICAgc3RkOjp1bmlxdWVf
cHRyPHJ0Yzo6VGhyZWFkPiBzaWduYWxpbmdUaHJlYWQ7CisgICAgcnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPiBmYWN0b3J5OworICAgIGJv
b2wgbmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIgeyBmYWxzZSB9OworcHJpdmF0ZToKKyAg
ICB2b2lkIE9uTWVzc2FnZShydGM6Ok1lc3NhZ2UqKTsKK307CisKK3N0YXRpYyBpbmxpbmUgUGVl
ckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyYgc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJl
YWRzPiBmYWN0b3J5QW5kVGhyZWFkczsKKyAgICByZXR1cm4gZmFjdG9yeUFuZFRocmVhZHMuZ2V0
KCk7Cit9CisKK3N0cnVjdCBOZXR3b3JrVGhyZWFkTWVzc2FnZURhdGEgOiBwdWJsaWMgcnRjOjpN
ZXNzYWdlRGF0YSB7CisgICAgZXhwbGljaXQgTmV0d29ya1RocmVhZE1lc3NhZ2VEYXRhKEZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikgOiBmdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkgeyB9
CisgICAgRnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbjsKK307CisKK3ZvaWQgUGVlckNvbm5lY3Rp
b25GYWN0b3J5QW5kVGhyZWFkczo6T25NZXNzYWdlKHJ0Yzo6TWVzc2FnZSogbWVzc2FnZSkKK3sK
KyAgICBBU1NFUlQobWVzc2FnZS0+bWVzc2FnZV9pZCA9PSAxKTsKKyAgICBzdGF0aWNfY2FzdDxO
ZXR3b3JrVGhyZWFkTWVzc2FnZURhdGEqPihtZXNzYWdlLT5wZGF0YSktPmZ1bmN0aW9uKCk7Cit9
CisKK3ZvaWQgY2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgY2Fs
bGJhY2spCit7CisgICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyYgdGhyZWFkcyA9
IHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCk7CisgICAgdGhyZWFkcy5uZXR3b3JrVGhyZWFkLT5Q
b3N0KFJUQ19GUk9NX0hFUkUsICZ0aHJlYWRzLCAxLCBuZXcgTmV0d29ya1RocmVhZE1lc3NhZ2VE
YXRhKFdURk1vdmUoY2FsbGJhY2spKSk7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVQZWVy
Q29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzKCkKK3sKKyAgICBhdXRvJiBmYWN0b3J5QW5kVGhy
ZWFkcyA9IHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCk7CisKKyAgICBBU1NFUlQoIWZhY3RvcnlB
bmRUaHJlYWRzLmZhY3RvcnkpOworCisgICAgYXV0byB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3Jl
YXRlKCk7CisgICAgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZCA9IGZhY3RvcnlBbmRU
aHJlYWRzLm5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyID8gcnRjOjpUaHJlYWQ6OkNyZWF0
ZVdpdGhTb2NrZXRTZXJ2ZXIoKSA6IHJ0Yzo6VGhyZWFkOjpDcmVhdGUoKTsKKyAgICBhdXRvIHJl
c3VsdCA9IGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQtPlN0YXJ0KCk7CisgICAgQVNT
RVJUKHJlc3VsdCk7CisKKyAgICBmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQgPSBy
dGM6OlRocmVhZDo6Q3JlYXRlKCk7CisgICAgcmVzdWx0ID0gZmFjdG9yeUFuZFRocmVhZHMuc2ln
bmFsaW5nVGhyZWFkLT5TdGFydCgpOworICAgIEFTU0VSVChyZXN1bHQpOworCisgICAgZmFjdG9y
eUFuZFRocmVhZHMuZmFjdG9yeSA9IHdlYnJ0Yzo6Q3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5
KGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQuZ2V0KCksIGZhY3RvcnlBbmRUaHJlYWRz
Lm5ldHdvcmtUaHJlYWQuZ2V0KCksIGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1RocmVhZC5n
ZXQoKSwgbnVsbHB0ciwgbmV3IHdlYnJ0Yzo6VmlkZW9Ub29sYm94VmlkZW9FbmNvZGVyRmFjdG9y
eSgpICwgbmV3IHdlYnJ0Yzo6VmlkZW9Ub29sYm94VmlkZW9EZWNvZGVyRmFjdG9yeSgpKTsKKwor
ICAgIEFTU0VSVChmYWN0b3J5QW5kVGhyZWFkcy5mYWN0b3J5KTsKK30KKwordm9pZCBpbml0aWFs
aXplTGliV2ViUlRDSW50ZXJuYWxzV2l0aFNvY2tldFNlcnZlcigpCit7CisgICAgc3RhdGljRmFj
dG9yeUFuZFRocmVhZHMoKS5uZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlciA9IHRydWU7Cit9
CisKK3dlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlJiBwZWVyQ29ubmVjdGlv
bkZhY3RvcnkoKQoreworICAgIGlmICghc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKS5mYWN0b3J5
KQorICAgICAgICBpbml0aWFsaXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcygpOwor
ICAgIHJldHVybiAqc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKS5mYWN0b3J5OworfQorCitzdGF0
aWMgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNy
ZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2JzZXJ2
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+JiYgcG9ydEFs
bG9jYXRvcikKK3sKKyAgICBBU1NFUlQoc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKS5mYWN0b3J5
KTsKKworICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRp
b24gY29uZmlnOworICAgIC8vIEZJWE1FOiBXZSBtaWdodCB3YW50IHRvIHB1dCBhIGRlZmF1bHQg
Y29uZmlndXJhdGlvbiBoZXJlLgorCisgICAgcmV0dXJuIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRz
KCkuZmFjdG9yeS0+Q3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlnLCBXVEZNb3ZlKHBvcnRBbGxv
Y2F0b3IpLCBudWxscHRyLCAmb2JzZXJ2ZXIpOworfQorCitydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRj
OjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICBBU1NFUlQoc3RhdGlj
RmFjdG9yeUFuZFRocmVhZHMoKS5uZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CisKKyAg
ICBhdXRvJiBmYWN0b3J5QW5kVGhyZWFkcyA9IHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCk7Cisg
ICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5mYWN0b3J5KQorICAgICAgICBpbml0aWFsaXplUGVl
ckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcygpOworCisgICAgcmV0dXJuIGNyZWF0ZVBlZXJD
b25uZWN0aW9uKG9ic2VydmVyLCBudWxscHRyKTsKK30KKworcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIHJ0Yzo6TmV0d29ya01hbmFnZXIm
IG5ldHdvcmtNYW5hZ2VyLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkmIHBhY2tldFNvY2tldEZh
Y3RvcnkpCit7CisgICAgQVNTRVJUKCFzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpLm5ldHdvcmtU
aHJlYWRXaXRoU29ja2V0U2VydmVyKTsKKworICAgIGF1dG8mIGZhY3RvcnlBbmRUaHJlYWRzID0g
c3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKTsKKyAgICBpZiAoIWZhY3RvcnlBbmRUaHJlYWRzLmZh
Y3RvcnkpCisgICAgICAgIGluaXRpYWxpemVQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRz
KCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6QmFzaWNQb3J0QWxsb2NhdG9yPiBw
b3J0QWxsb2NhdG9yOworICAgIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkuc2lnbmFsaW5nVGhy
ZWFkLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdKCkgeworICAgICAgICBwb3J0QWxs
b2NhdG9yLnJlc2V0KG5ldyBjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3IoJm5ldHdvcmtNYW5h
Z2VyLCAmcGFja2V0U29ja2V0RmFjdG9yeSkpOworICAgIH0pOworCisgICAgcmV0dXJuIGNyZWF0
ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXVEZNb3ZlKHBvcnRBbGxvY2F0b3IpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENVdGlscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiZjYxYzE3YTgyOWVmZmJkYTIwOTVj
N2I1YTExMWVjYjU4NjNiMjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaApAQCAtMCwwICsxLDU4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKwor
I2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDTWFjcm9zLmg+CisjaW5jbHVkZSA8d2VicnRjL2Jh
c2Uvc2NvcGVkX3JlZl9wdHIuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3Bh
Y2UgcnRjIHsKK2NsYXNzIE5ldHdvcmtNYW5hZ2VyOworY2xhc3MgUGFja2V0U29ja2V0RmFjdG9y
eTsKK2NsYXNzIFRocmVhZDsKK30KKworbmFtZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBQZWVyQ29u
bmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U7CitjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTsK
K2NsYXNzIFBlZXJDb25uZWN0aW9uT2JzZXJ2ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplTGliV2ViUlRDSW50ZXJuYWxzV2l0aFNv
Y2tldFNlcnZlcigpOworCit3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSYg
cGVlckNvbm5lY3Rpb25GYWN0b3J5KCk7CitXRUJDT1JFX0VYUE9SVCBydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24o
d2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiwgcnRjOjpOZXR3b3JrTWFuYWdlciYsIHJ0
Yzo6UGFja2V0U29ja2V0RmFjdG9yeSYpOworV0VCQ09SRV9FWFBPUlQgcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJDb25uZWN0aW9u
KHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYpOworCitXRUJDT1JFX0VYUE9SVCB2b2lk
IGNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvUlRDU3RyYXRl
Z3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9SVENT
dHJhdGVneS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4MWFiOTdmNmU4YWU3OWJmZDBjZjIyZTgwYTFhZTQ2NTIx
NDcxMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvUlRDU3RyYXRlZ3kuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJDb3JlL0xpYldlYlJUQ01hY3Jvcy5oIgor
I2luY2x1ZGUgPHdlYnJ0Yy9iYXNlL3Njb3BlZF9yZWZfcHRyLmg+CisKK25hbWVzcGFjZSB3ZWJy
dGMgeworY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U7CitjbGFzcyBQZWVyQ29ubmVjdGlv
bk9ic2VydmVyOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQ
T1JUIFJUQ1N0cmF0ZWd5IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3
ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2
aXJ0dWFsIH5SVENTdHJhdGVneSgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
NDI2NzRhMTc0ZWRhMDQwZjkwNjZiZGY2NDg1Mjk0MzlmMGM0N2JmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZS5jcHAKQEAgLTAsMCArMSwyMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgiCisKKyNpZiBFTkFCTEUoTElCV0VCUlRDX0VORFBP
SU5UKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTWVkaWFTYW1wbGVBVkZPYmpD
LmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKworI2luY2x1ZGUgIkNvcmVNZWRpYVNv
ZnRMaW5rLmgiCisjaW5jbHVkZSAiQ29yZVZpZGVvU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitSZWY8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlPiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1Ry
YWNrSW50ZXJmYWNlPiYmIHZpZGVvVHJhY2ssIFN0cmluZyYmIHRyYWNrSWQpCit7CisgICAgUmV0
YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGNvbmZvcm1lck9wdGlvbnMgPSBhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIGNvbnN0IE9T
VHlwZSBpbWFnZUZvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkE7CisgICAgUmV0YWlu
UHRyPENGTnVtYmVyUmVmPiBpbWFnZUZvcm1hdE51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVh
dGUobnVsbHB0ciwgIGtDRk51bWJlckludFR5cGUsICAmaW1hZ2VGb3JtYXQpKTsKKyAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShjb25mb3JtZXJPcHRpb25zLmdldCgpLCBrQ1ZQaXhlbEJ1ZmZlclBp
eGVsRm9ybWF0VHlwZUtleSwgaW1hZ2VGb3JtYXROdW1iZXIuZ2V0KCkpOworICAgIFBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1YgY29uZm9ybWVyKGNvbmZvcm1lck9wdGlvbnMuZ2V0KCkpOworCisgICAg
YXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZShX
VEZNb3ZlKHZpZGVvVHJhY2spLCBXVEZNb3ZlKHRyYWNrSWQpLCBjb25mb3JtZXJPcHRpb25zLmdl
dCgpKSk7CisgICAgc291cmNlLT5zdGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICByZXR1cm4gc291
cmNlOworfQorCitSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OlJlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNl
PiYmIHZpZGVvVHJhY2ssIFN0cmluZyYmIHZpZGVvVHJhY2tJZCwgQ0ZNdXRhYmxlRGljdGlvbmFy
eVJlZiBjb25mb3JtZXJPcHRpb25zKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3Zl
KHZpZGVvVHJhY2tJZCksIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvLCBTdHJpbmco
KSkKKyAgICAsIG1fdmlkZW9UcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKQorICAgICwgbV9jb25m
b3JtZXIoY29uZm9ybWVyT3B0aW9ucykKK3sKKyAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRXaWR0
aCg2NDApOworICAgIG1fY3VycmVudFNldHRpbmdzLnNldEhlaWdodCg0ODApOworfQorCit2b2lk
IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKK3sKKyAg
ICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNQcm9k
dWNpbmdEYXRhID0gdHJ1ZTsKKyAgICBpZiAobV92aWRlb1RyYWNrKQorICAgICAgICBtX3ZpZGVv
VHJhY2stPkFkZE9yVXBkYXRlU2luayh0aGlzLCBydGM6OlZpZGVvU2lua1dhbnRzKCkpOworfQor
Cit2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQor
eworICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
aXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7CisgICAgaWYgKG1fdmlkZW9UcmFjaykKKyAgICAgICAg
bV92aWRlb1RyYWNrLT5SZW1vdmVTaW5rKHRoaXMpOworfQorCit2b2lkIFJlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZTo6T25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lKQor
eworICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gYnVmZmVyID0gZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7CisgICAgQ1ZQaXhlbEJ1ZmZl
clJlZiBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KGJ1ZmZlci0+
bmF0aXZlX2hhbmRsZSgpKTsKKworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRpbWluZyBpbmZvcm1h
dGlvbiBmcm9tIFZpZGVvRnJhbWUgdG8gQ01TYW1wbGVUaW1pbmdJbmZvLgorICAgIENNU2FtcGxl
VGltaW5nSW5mbyB0aW1pbmdJbmZvOworICAgIHRpbWluZ0luZm8ucHJlc2VudGF0aW9uVGltZVN0
YW1wID0ga0NNVGltZUludmFsaWQ7CisgICAgdGltaW5nSW5mby5kZWNvZGVUaW1lU3RhbXAgPSBr
Q01UaW1lSW52YWxpZDsKKyAgICB0aW1pbmdJbmZvLmR1cmF0aW9uID0ga0NNVGltZUludmFsaWQ7
CisKKyAgICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb247Cisg
ICAgT1NTdGF0dXMgb3N0YXR1cyA9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZUZvcklt
YWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIChDVkltYWdlQnVmZmVyUmVmKXBpeGVsQnVm
ZmVyLCAmZm9ybWF0RGVzY3JpcHRpb24pOworICAgIGlmIChvc3RhdHVzICE9IG5vRXJyKSB7Cisg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGluaXRpYWxpemUgQ01WaWRlb0Zvcm1hdERlc2Ny
aXB0aW9uOiAlZCIsIG9zdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ01T
YW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyOworICAgIG9zdGF0dXMgPSBDTVNhbXBsZUJ1ZmZl
ckNyZWF0ZVJlYWR5V2l0aEltYWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIChDVkltYWdl
QnVmZmVyUmVmKXBpeGVsQnVmZmVyLCBmb3JtYXREZXNjcmlwdGlvbiwgJnRpbWluZ0luZm8sICZz
YW1wbGVCdWZmZXIpOworICAgIGlmIChvc3RhdHVzICE9IG5vRXJyKSB7CisgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIGNyZWF0ZSB0aGUgc2FtcGxlIGJ1ZmZlcjogJWQiLCBvc3RhdHVzKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBDRlJlbGVhc2UoZm9ybWF0RGVzY3JpcHRpb24p
OworCisgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBzYW1wbGUgPSBzYW1wbGVCdWZm
ZXI7CisKKyAgICAvLyBGb3IgdGhlIG1vbWVudCwganVzdCBwcmV0ZW5kIGZyYW1lcyBzaG91bGQg
YmUgcmVuZGVyZWQgYXNhcC4KKyAgICBDRkFycmF5UmVmIGF0dGFjaG1lbnRzQXJyYXkgPSBDTVNh
bXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRzQXJyYXkoc2FtcGxlQnVmZmVyLCB0cnVlKTsK
KyAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBDRkFycmF5R2V0Q291bnQoYXR0YWNobWVudHNB
cnJheSk7ICsraSkgeworICAgICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGF0dGFjaG1lbnRz
ID0gKENGTXV0YWJsZURpY3Rpb25hcnlSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhdHRhY2ht
ZW50c0FycmF5LCBpKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoYXR0YWNobWVudHMs
IGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRGlzcGxheUltbWVkaWF0ZWx5LCBrQ0ZCb29sZWFuVHJ1
ZSk7CisgICAgfQorCisgICAgdW5zaWduZWQgd2lkdGggPSBmcmFtZS53aWR0aCgpOworICAgIHVu
c2lnbmVkIGhlaWdodCA9IGZyYW1lLmhlaWdodCgpOworICAgIFJlZlB0cjxSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgY2FsbE9uTWFpblRocmVh
ZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHNhbXBsZSA9IFdURk1v
dmUoc2FtcGxlKSwgd2lkdGgsIGhlaWdodF0geworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5wcm9j
ZXNzTmV3U2FtcGxlKHNhbXBsZS5nZXQoKSwgd2lkdGgsIGhlaWdodCk7CisgICAgfSk7Cit9CisK
K3ZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpwcm9jZXNzTmV3U2FtcGxlKENNU2Ft
cGxlQnVmZmVyUmVmIHNhbXBsZSwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKK3sK
KyAgICBtX2J1ZmZlciA9IHNhbXBsZTsKKyAgICBpZiAod2lkdGggIT0gbV9jdXJyZW50U2V0dGlu
Z3Mud2lkdGgoKSB8fCBoZWlnaHQgIT0gbV9jdXJyZW50U2V0dGluZ3MuaGVpZ2h0KCkpIHsKKyAg
ICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0V2lkdGgod2lkdGgpOworICAgICAgICBtX2N1cnJl
bnRTZXR0aW5ncy5zZXRIZWlnaHQoaGVpZ2h0KTsKKyAgICAgICAgc2V0dGluZ3NEaWRDaGFuZ2Uo
KTsKKyAgICB9CisKKyAgICBtZWRpYURhdGFVcGRhdGVkKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3Jl
YXRlKHNhbXBsZSkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZHJhd0ltYWdlKEltYWdlQnVm
ZmVyJiBpbWFnZUJ1ZmZlciwgQ0dJbWFnZVJlZiBpbWFnZSwgRmxvYXRSZWN0JiByZWN0KQorewor
ICAgIGF1dG8mIGNvbnRleHQgPSBpbWFnZUJ1ZmZlci5jb250ZXh0KCk7CisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQudHJhbnNs
YXRlKHJlY3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOworICAgIGNvbnRleHQuc2Nh
bGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KEludGVycG9sYXRpb25Mb3cpOworICAgIEludFJlY3QgcGFpbnRSZWN0KEludFBvaW50
KDAsIDApLCBJbnRTaXplKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkpOworICAgIENHQ29u
dGV4dERyYXdJbWFnZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAs
IHBhaW50UmVjdC53aWR0aCgpLCBwYWludFJlY3QuaGVpZ2h0KCkpLCBpbWFnZSk7Cit9CisKK1Jl
ZlB0cjxJbWFnZT4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjdXJyZW50RnJhbWVJbWFn
ZSgpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBGbG9hdFJlY3QgcmVjdCgwLCAwLCBtX2N1cnJlbnRTZXR0aW5ncy53aWR0aCgpLCBtX2N1cnJl
bnRTZXR0aW5ncy5oZWlnaHQoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocmVjdC5zaXplKCksIFVuYWNjZWxlcmF0
ZWQpOworICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBp
eGVsQnVmZmVyUmVmPihDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKG1fYnVmZmVyLmdldCgp
KSk7CisgICAgYXV0byBpbWFnZSA9IG1fY29uZm9ybWVyLmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVm
ZmVyKHBpeGVsQnVmZmVyKTsKKyAgICBkcmF3SW1hZ2UoKmltYWdlQnVmZmVyLCBpbWFnZS5nZXQo
KSwgcmVjdCk7CisKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92
ZShpbWFnZUJ1ZmZlcikpOworfQorCit2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBGSVhNRTogU2hhcmUgbW9yZSBjb2RlIHdpdGggY3VycmVudEZyYW1lSW1hZ2UK
KyAgICBGbG9hdFJlY3QgZnVsbFJlY3QoMCwgMCwgbV9jdXJyZW50U2V0dGluZ3Mud2lkdGgoKSwg
bV9jdXJyZW50U2V0dGluZ3MuaGVpZ2h0KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGZ1bGxSZWN0LnNpemUoKSwg
VW5hY2NlbGVyYXRlZCk7CisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IHN0YXRp
Y19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9i
dWZmZXIuZ2V0KCkpKTsKKyAgICBhdXRvIGltYWdlID0gbV9jb25mb3JtZXIuY3JlYXRlSW1hZ2VG
cm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpOworICAgIGRyYXdJbWFnZSgqaW1hZ2VCdWZmZXIs
IGltYWdlLmdldCgpLCBmdWxsUmVjdCk7CisKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KEludGVycG9sYXRpb25Mb3cpOworICAgIEludFJlY3QgcGFpbnRSZWN0KEludFBvaW50
KDAsIDApLCBJbnRTaXplKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkpOworICAgIGNvbnRl
eHQuZHJhd0ltYWdlKCppbWFnZUJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KSwgcmVjdCk7Cit9CisKK1JlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmNhcGFiaWxpdGllcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fY2FwYWJpbGl0aWVzOworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MmIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKK30KKworUmVhbHRpbWVNZWRpYVNvdXJjZVN1
cHBvcnRlZENvbnN0cmFpbnRzJiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnN1cHBvcnRl
ZENvbnN0cmFpbnRzKCkKK3sKKyAgICByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKExJQldFQlJUQ19F
TkRQT0lOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mYjhiYzc5ZGE2YTQ3NjczMzdkNmUzMTJiNWY1YzkzYTE2MGE5YjkyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZS5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExJ
QldFQlJUQ19FTkRQT0lOVCkKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1
ZGUgIlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291
cmNlLmgiCisjaW5jbHVkZSA8d2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVC
dWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZSBmaW5hbCA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlLCBwcml2YXRlIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9GcmFt
ZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
PiBjcmVhdGUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4m
JiwgU3RyaW5nJiYpOworICAgIH5SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UoKSB7IHN0b3BQ
cm9kdWNpbmdEYXRhKCk7IH0KKworcHJpdmF0ZToKKyAgICBSZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2UocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4mJiwg
U3RyaW5nJiYsIENGTXV0YWJsZURpY3Rpb25hcnlSZWYpOworCisgICAgdm9pZCBzdGFydFByb2R1
Y2luZ0RhdGEoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgIGZpbmFsOwor
CisgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGll
cygpIGNvbnN0IGZpbmFsOworICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYg
c2V0dGluZ3MoKSBjb25zdCBmaW5hbDsKKworICAgIE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFp
bnRzKCkgeyByZXR1cm4gKm1fY29uc3RyYWludHMuZ2V0KCk7IH0KKyAgICBSZWFsdGltZU1lZGlh
U291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CisKKyAg
ICB2b2lkIHByb2Nlc3NOZXdTYW1wbGUoQ01TYW1wbGVCdWZmZXJSZWYsIHVuc2lnbmVkLCB1bnNp
Z25lZCk7CisgICAgUmVmUHRyPEltYWdlPiBjdXJyZW50RnJhbWVJbWFnZSgpIGZpbmFsOworCisg
ICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKSBmaW5hbDsKKworICAgIHZvaWQgT25GcmFtZShjb25zdCB3ZWJydGM6OlZp
ZGVvRnJhbWUmKSBmaW5hbDsKKyAgICBib29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faXNQcm9kdWNpbmdEYXRhICYmIG1fYnVmZmVyOyB9CisgICAgYm9vbCBhcHBs
eVNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFJlZlB0
cjxJbWFnZT4gbV9jdXJyZW50SW1hZ2U7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MgbV9jdXJyZW50U2V0dGluZ3M7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CisgICAgUmVmUHRyPFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOworICAgIFJlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzPiBtX2NvbnN0cmFpbnRzOworICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0RhdGEgeyBm
YWxzZSB9OworICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZh
Y2U+IG1fdmlkZW9UcmFjazsKKyAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IG1fYnVm
ZmVyOworICAgIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YgbV9jb25mb3JtZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTElCV0VCUlRDX0VORFBPSU5U
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMGU5MTBjYmM1Mzg2YzFmN2EyNjkxZTNhZWU3NTcwNTMwZTg2ZTNiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZS5jcHAKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmgiCisKKyNpZiBFTkFCTEUoTElCV0VCUlRDX0VO
RFBPSU5UKQorCisjaW5jbHVkZSA8d2VicnRjL2NvbW1vbl92aWRlby9saWJ5dXYvaW5jbHVkZS93
ZWJydGNfbGlieXV2Lmg+CisKKyNpbmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6UmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHZpZGVvU291cmNl
KQorICAgIDogbV92aWRlb1NvdXJjZShXVEZNb3ZlKHZpZGVvU291cmNlKSkKK3sKKyAgICBtX3Zp
ZGVvU291cmNlLT5hZGRPYnNlcnZlcih0aGlzKTsKK30KKworYm9vbCBSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2U6OkdldFN0YXRzKFN0YXRzKikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpBZGRPclVwZGF0ZVNpbmsocnRjOjpW
aWRlb1NpbmtJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPiogc2luaywgY29uc3QgcnRjOjpW
aWRlb1NpbmtXYW50cyYpCit7CisgICAgLy8gRklYTUU6IHN1cHBvcnQgc2lua1dhbnRzCisgICAg
aWYgKCFtX3NpbmtzLmNvbnRhaW5zKHNpbmspKQorICAgICAgICBtX3NpbmtzLmFwcGVuZChzaW5r
KTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OlJlbW92ZVNpbmsocnRj
OjpWaWRlb1NpbmtJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPiogc2luaykKK3sKKyAgICBt
X3NpbmtzLnJlbW92ZUZpcnN0KHNpbmspOworfQorCisvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBz
aG91bGQgYmUgbWFkZSBtb3JlIGVmZmljaWVudDoKKy8vIC0gSXQgYWxsb2NhdGVzIG9uZSBJNDIw
QnVmZmVyIGJ1ZmZlciBmb3IgZWFjaCBjYWxsLgorLy8gLSBJbiBjYXNlIG9mIGtDVlBpeGVsRm9y
bWF0VHlwZV80MjBZcENiQ3I4UGxhbmFyLCB3ZSBjYW4gcHJvYmFibHkgbWVtY3B5IHRoZSBkYXRh
IGRpcmVjdGx5LgorLy8gLVRoZSBudW1iZXIgb2Ygc3Vwb3J0ZWQgY29udmVyc2lvbnMgKDMgY3Vy
cmVudGx5KSBzaG91bGQgYmUgcmVkdWNlZCB0byAxIG9yIDIuCit2b2lkIFJlYWx0aW1lT3V0Z29p
bmdWaWRlb1NvdXJjZTo6c291cmNlSGFzTW9yZU1lZGlhRGF0YShNZWRpYVNhbXBsZSYgc2FtcGxl
KQoreworICAgIGlmICghbV9zaW5rcy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFT
U0VSVChzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS50eXBlID09IFBsYXRmb3JtU2FtcGxlOjpDTVNh
bXBsZUJ1ZmZlclR5cGUpOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBp
eGVsQnVmZmVyUmVmPihDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKHNhbXBsZS5wbGF0Zm9y
bVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOworICAgIGF1dG8gcGl4ZWxGb3JtYXRU
eXBlID0gQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZlcik7CisKKyAg
ICBDVlBpeGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNzKHBpeGVsQnVmZmVyLCAwKTsKKyAgICB1aW50
OF90KiBzcmMgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihDVlBpeGVsQnVmZmVyR2V0QmFz
ZUFkZHJlc3NPZlBsYW5lKHBpeGVsQnVmZmVyLCAwKSk7CisKKyAgICAvLyBGSVhNRTogU2hvdWxk
bid0IHdlIHVzZSBSZWFsdGltZU1lZGlhU291cmNlOjpzaXplKCk/CisgICAgY29uc3QgYXV0byYg
c2V0dGluZ3MgPSBtX3ZpZGVvU291cmNlLT5zZXR0aW5ncygpOworCisgICAgYXV0byBkZXN0ID0g
d2VicnRjOjpJNDIwQnVmZmVyOjpDcmVhdGUoc2V0dGluZ3Mud2lkdGgoKSwgc2V0dGluZ3MuaGVp
Z2h0KCkpOworCisgICAgaWYgKHBpeGVsRm9ybWF0VHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVf
NDIwWXBDYkNyOFBsYW5hcikKKyAgICAgICAgd2VicnRjOjpDb252ZXJ0VG9JNDIwKHdlYnJ0Yzo6
a0k0MjAsIHNyYywgMCwgMCwgc2V0dGluZ3Mud2lkdGgoKSwgc2V0dGluZ3MuaGVpZ2h0KCksIDAs
IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCwgZGVzdCk7CisgICAgZWxzZSBpZiAocGl4ZWxGb3Jt
YXRUeXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpCisgICAgICAgIHdlYnJ0Yzo6Q29u
dmVydFRvSTQyMCh3ZWJydGM6OmtBUkdCLCBzcmMsIDAsIDAsIHNldHRpbmdzLndpZHRoKCksIHNl
dHRpbmdzLmhlaWdodCgpLCAwLCB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzAsIGRlc3QpOworICAg
IGVsc2UgeworICAgICAgICBBU1NFUlQocGl4ZWxGb3JtYXRUeXBlID09IGtDVlBpeGVsRm9ybWF0
VHlwZV8zMkFSR0IpOworICAgICAgICB3ZWJydGM6OkNvbnZlcnRUb0k0MjAod2VicnRjOjprQkdS
QSwgc3JjLCAwLCAwLCBzZXR0aW5ncy53aWR0aCgpLCBzZXR0aW5ncy5oZWlnaHQoKSwgMCwgd2Vi
cnRjOjprVmlkZW9Sb3RhdGlvbl8wLCBkZXN0KTsKKyAgICB9CisKKyAgICBDVlBpeGVsQnVmZmVy
VW5sb2NrQmFzZUFkZHJlc3MocGl4ZWxCdWZmZXIsIDApOworICAgIHdlYnJ0Yzo6VmlkZW9GcmFt
ZSBmcmFtZShkZXN0LCAwLCAwLCAgd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wKTsKKyAgICBmb3Ig
KGF1dG8qIHNpbmsgOiBtX3NpbmtzKQorICAgICAgICBzaW5rLT5PbkZyYW1lKGZyYW1lKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKExJQldFQlJUQ19F
TkRQT0lOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wZTNiYjAzZGVhOGUzNzU2NTI5YjViZjVmZDJlYzUxMDZkYzg1OWE5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZS5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShMSUJX
RUJSVENfRU5EUE9JTlQpCisKKyNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKKyNpbmNsdWRl
ICJSZWFsdGltZU1lZGlhU291cmNlLmgiCisjaW5jbHVkZSA8d2VicnRjL2FwaS9tZWRpYXN0cmVh
bWludGVyZmFjZS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9iYXNlL29wdGlvbmFsLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlPiwgcHVibGlj
IHdlYnJ0Yzo6VmlkZW9UcmFja1NvdXJjZUludGVyZmFjZSwgcHJpdmF0ZSBSZWFsdGltZU1lZGlh
U291cmNlOjpPYnNlcnZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2U+IGNyZWF0ZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiB2aWRlb1Nv
dXJjZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2Uo
V1RGTW92ZSh2aWRlb1NvdXJjZSkpKTsgfQorCisgICAgaW50IEFkZFJlZigpIGNvbnN0IGZpbmFs
IHsgcmVmKCk7IHJldHVybiByZWZDb3VudCgpOyB9CisgICAgaW50IFJlbGVhc2UoKSBjb25zdCBm
aW5hbCB7IGRlcmVmKCk7IHJldHVybiByZWZDb3VudCgpOyB9CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKFJlZjxSZWFsdGltZU1lZGlhU291cmNl
PiYmKTsKKworICAgIC8vIE5vdGlmaWVyIEFQSQorICAgIHZvaWQgUmVnaXN0ZXJPYnNlcnZlcih3
ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9CisgICAgdm9pZCBVbnJlZ2lzdGVy
T2JzZXJ2ZXIod2VicnRjOjpPYnNlcnZlckludGVyZmFjZSopIGZpbmFsIHsgfQorCisgICAgLy8g
VmlkZW9UcmFja1NvdXJjZUludGVyZmFjZSBBUEkKKyAgICBib29sIGlzX3NjcmVlbmNhc3QoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIHJ0Yzo6T3B0aW9uYWw8Ym9vbD4gbmVl
ZHNfZGVub2lzaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcnRjOjpPcHRpb25hbDxib29sPigp
OyB9CisgICAgYm9vbCBHZXRTdGF0cyhTdGF0cyopIGZpbmFsOworCisgICAgLy8gTWVkaWFTb3Vy
Y2VJbnRlcmZhY2UgQVBJCisgICAgU291cmNlU3RhdGUgc3RhdGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBTb3VyY2VTdGF0ZSgpOyB9CisgICAgYm9vbCByZW1vdGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CisKKyAgICAvLyBydGM6OlZpZGVvU291cmNlSW50ZXJmYWNlPHdlYnJ0Yzo6
VmlkZW9GcmFtZT4gQVBJCisgICAgdm9pZCBBZGRPclVwZGF0ZVNpbmsocnRjOjpWaWRlb1NpbmtJ
bnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPiosIGNvbnN0IHJ0Yzo6VmlkZW9TaW5rV2FudHMm
KSBmaW5hbDsKKyAgICB2b2lkIFJlbW92ZVNpbmsocnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8d2Vi
cnRjOjpWaWRlb0ZyYW1lPiopIGZpbmFsOworCisgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6
T2JzZXJ2ZXIgQVBJCisgICAgYm9vbCBwcmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKCkgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNvdXJjZVN0b3BwZWQoKSBmaW5hbCB7IH0KKyAg
ICB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgpIGZpbmFsIHsgfQorICAgIHZvaWQgc291cmNlU2V0
dGluZ3NDaGFuZ2VkKCkgZmluYWwgeyB9CisgICAgdm9pZCBzb3VyY2VIYXNNb3JlTWVkaWFEYXRh
KE1lZGlhU2FtcGxlJikgZmluYWw7CisKKyAgICBWZWN0b3I8cnRjOjpWaWRlb1NpbmtJbnRlcmZh
Y2U8d2VicnRjOjpWaWRlb0ZyYW1lPio+IG1fc2lua3M7CisgICAgUmVmPFJlYWx0aW1lTWVkaWFT
b3VyY2U+IG1fdmlkZW9Tb3VyY2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoTElCV0VCUlRDX0VORFBPSU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCAy
ZDA0M2EwNmU1NGQxY2RkZTRjZWE4NTBjNjIzODg4OWQ3M2MwOTFmLi5lZWNjNmI0MjI5YmY1ZWIx
MGI5ZjgyMTI3YzlkNjc5OTZlZWViYTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTY1LDYgKzE2
NSw3IEBAIEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTID0gRU5BQkxFX1NQRUVDSF9TWU5USEVTSVM7
CiBFTkFCTEVfU1VCVExFX0NSWVBUTyA9IEVOQUJMRV9TVUJUTEVfQ1JZUFRPOwogRU5BQkxFX1NW
R19GT05UUyA9IEVOQUJMRV9TVkdfRk9OVFM7CiBFTkFCTEVfV0VCX1JUQyA9IEVOQUJMRV9XRUJf
UlRDOworRU5BQkxFX0xJQldFQlJUQ19FTkRQT0lOVCA9IEVOQUJMRV9MSUJXRUJSVENfRU5EUE9J
TlQ7CiBFTkFCTEVfV1JJVEFCTEVfU1RSRUFNX0FQSSA9IEVOQUJMRV9XUklUQUJMRV9TVFJFQU1f
QVBJOwogCiBFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04gPSBFTkFCTEVfVEVMRVBI
T05FX05VTUJFUl9ERVRFQ1RJT047CkBAIC0yMTYsNCArMjE3LDQgQEAgRU5BQkxFX1ZBUklBVElP
Tl9GT05UU19JRl9OT1RfID0gJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTX0lGX05PVF9OTyk7CiBF
TkFCTEVfVkFSSUFUSU9OX0ZPTlRTX0lGX05PVF9OTyA9IEVOQUJMRV9WQVJJQVRJT05fRk9OVFM7
CiBFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTX0lGX05PVF9ZRVMgPSA7CiAKLUZFQVRVUkVfREVGSU5F
UyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZB
UykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BUFBM
RV9QQVkpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChFTkFCTEVfQVZGX0NBUFRJT05T
KSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVO
QUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9D
T05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFC
TEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQo
RU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAk
KEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVU
SU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVO
QUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQo
RU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NV
U1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxF
X0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RB
VEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRU5D
UllQVEVEX01FRElBKSAkKEVOQUJMRV9GRVRDSF9BUEkpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxf
MikgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVf
RlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0FN
RVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFC
TEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
VElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5B
QkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVf
SU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9JTlRFUlNFQ1RJT05fT0JTRVJWRVIpICQoRU5BQkxF
X0lOVEwpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RPVUNIX0VW
RU5UUykgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9LRVlCT0FSRF9LRVlfQVRUUklCVVRFKSAkKEVO
QUJMRV9LRVlCT0FSRF9DT0RFX0FUVFJJQlVURSkgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1Jf
UFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0xFR0FD
WV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJM
RV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RV
UkVfRVZFTlRTKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5B
QkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFC
TEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJ
QV9TVFJFQU0pICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJM
RV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAk
KEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykg
JChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9Q
Uk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FV
T1RBKSAkKEVOQUJMRV9SRUFEQUJMRV9TVFJFQU1fQVBJKSAkKEVOQUJMRV9SRUFEQUJMRV9CWVRF
X1NUUkVBTV9BUEkpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFUVVFU1Rf
QVVUT0NPTVBMRVRFKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9S
RVNPVVJDRV9VU0FHRSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0Vf
Q09OVFJPTFMpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NVQlRMRV9DUllQ
VE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJ
T04pICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVO
QUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJM
RV9WQVJJQVRJT05fRk9OVFMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSAkKEVO
QUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1Nf
TUVESUEpICQoRU5BQkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5B
QkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX1dFQl9SVEMpICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAk
KEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9VU0VSX1RJTUlORykgJChFTkFCTEVfV0VCQVNT
RU1CTFkpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5BQkxFX1dJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfV1JJVEFCTEVfU1RSRUFNX0FQSSkgJChFTkFCTEVf
WFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJM
RV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1ND
Uk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQp
ICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVO
QUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVM
X01FU1NBR0lORykgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTU19BTklN
QVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFC
TEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5B
QkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVO
QUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxF
X0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxF
X0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NVUlNPUl9W
SVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hC
T0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9EQVRB
Q1VFX1ZBTFVFKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJ
RU5UQVRJT04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRkVUQ0hfQVBJKSAk
KEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5B
QkxFX0ZUTF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEX0RF
UFJFQ0FURUQpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChF
TkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVS
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQo
RU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJTRUNU
SU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMp
ICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZQk9B
UkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQoRU5B
QkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVE
X01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZF
TkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVU
Q0gpICQoRU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJM
RV9NRURJQV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxF
X01FRElBX1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RB
VElTVElDUykgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAk
KEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJ
R0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQo
RU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BP
SU5URVJfTE9DSykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NV
RkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVBREFCTEVfU1RSRUFNX0FQSSkg
JChFTkFCTEVfUkVBREFCTEVfQllURV9TVFJFQU1fQVBJKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVD
VE9SKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVURSkgJChFTkFCTEVfUkVTT0xVVElPTl9N
RURJQV9RVUVSWSkgJChFTkFCTEVfUkVTT1VSQ0VfVVNBR0UpICQoRU5BQkxFX1JVQkJFUl9CQU5E
SU5HKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lT
KSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RF
TEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5B
QkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9V
U0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURFT19Q
UkVTRU5UQVRJT05fTU9ERSkgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1ZJREVPKSAk
KEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJfQU5JTUFUSU9OUykgJChF
TkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9MSUJXRUJSVENf
RU5EUE9JTlQpICQoRU5BQkxFX1dFQl9SVEMpICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJM
RV9XRUJfVElNSU5HKSAkKEVOQUJMRV9VU0VSX1RJTUlORykgJChFTkFCTEVfV0VCQVNTRU1CTFkp
ICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkgJChFTkFCTEVfV1JJVEFCTEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfWFNMVCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCmluZGV4IDJkMDQzYTA2ZTU0ZDFjZGRlNGNlYTg1MGM2MjM4ODg5ZDczYzA5MWYu
LmVlY2M2YjQyMjliZjVlYjEwYjlmODIxMjdjOWQ2Nzk5NmVlZWJhMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBA
IC0xNjUsNiArMTY1LDcgQEAgRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMgPSBFTkFCTEVfU1BFRUNI
X1NZTlRIRVNJUzsKIEVOQUJMRV9TVUJUTEVfQ1JZUFRPID0gRU5BQkxFX1NVQlRMRV9DUllQVE87
CiBFTkFCTEVfU1ZHX0ZPTlRTID0gRU5BQkxFX1NWR19GT05UUzsKIEVOQUJMRV9XRUJfUlRDID0g
RU5BQkxFX1dFQl9SVEM7CitFTkFCTEVfTElCV0VCUlRDX0VORFBPSU5UID0gRU5BQkxFX0xJQldF
QlJUQ19FTkRQT0lOVDsKIEVOQUJMRV9XUklUQUJMRV9TVFJFQU1fQVBJID0gRU5BQkxFX1dSSVRB
QkxFX1NUUkVBTV9BUEk7CiAKIEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTiA9IEVO
QUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTjsKQEAgLTIxNiw0ICsyMTcsNCBAQCBFTkFC
TEVfVkFSSUFUSU9OX0ZPTlRTX0lGX05PVF8gPSAkKEVOQUJMRV9WQVJJQVRJT05fRk9OVFNfSUZf
Tk9UX05PKTsKIEVOQUJMRV9WQVJJQVRJT05fRk9OVFNfSUZfTk9UX05PID0gRU5BQkxFX1ZBUklB
VElPTl9GT05UUzsKIEVOQUJMRV9WQVJJQVRJT05fRk9OVFNfSUZfTk9UX1lFUyA9IDsKIAotRkVB
VFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQo
RU5BQkxFX0FQUExFX1BBWSkgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9B
VkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFT
X1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcp
ICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZF
TF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01Q
T1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJ
RF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lN
QUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0NST0xM
X1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJ
TkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkg
JChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9S
VCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkg
JChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZFVENIX0FQSSkgJChFTkFCTEVfRklM
VEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVExfSklU
KSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAk
KEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFC
QVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVf
SU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVM
T0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1F
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNFUlZF
UikgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9J
T1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRS
SUJVVEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9MRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJChF
TkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklY
RVMpICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJM
RV9NQUNfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ0FQ
VFVSRSkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TRVNT
SU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQo
RU5BQkxFX01FRElBX1NUUkVBTSkgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhU
TUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRF
TlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJ
RklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0sp
ICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkg
JChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFQURBQkxFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1JF
QURBQkxFX0JZVEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFC
TEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkp
ICQoRU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFC
TEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVf
U1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9F
VkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9B
TEwpICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9O
X01PREUpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklF
V19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dFQl9B
VURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVfV0VC
X1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1VTRVJfVElNSU5HKSAkKEVO
QUJMRV9XRUJBU1NFTUJMWSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQkdMMikgJChFTkFC
TEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9XUklUQUJMRV9TVFJFQU1fQVBJ
KSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9S
TVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURf
T1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BUFBMRV9QQVkpICQoRU5BQkxFX0FUVEFDSE1F
TlRfRUxFTUVOVCkgJChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJ
T05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFC
TEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JS
RUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRB
VElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9O
UykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVM
NCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFC
TEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChF
TkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQo
RU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxF
X0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9G
RVRDSF9BUEkpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRk9OVF9MT0FEX0VW
RU5UUykgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxF
X0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJ
T04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9X
T1JLRVJTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQo
RU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJM
RV9JTlRFUlNFQ1RJT05fT0JTRVJWRVIpICQoRU5BQkxFX0lOVEwpICQoRU5BQkxFX0lPU19HRVNU
VVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfSklUKSAkKEVO
QUJMRV9LRVlCT0FSRF9LRVlfQVRUUklCVVRFKSAkKEVOQUJMRV9LRVlCT0FSRF9DT0RFX0FUVFJJ
QlVURSkgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FD
WV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVf
TElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9NQVRI
TUwpICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQ
VCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJM
RV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5BQkxFX01FVEVS
X0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQo
RU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05D
VVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUERGS0lUX1BMVUdJTikg
JChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJM
RV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRUFEQUJMRV9T
VFJFQU1fQVBJKSAkKEVOQUJMRV9SRUFEQUJMRV9CWVRFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1JF
TU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRFKSAkKEVOQUJMRV9S
RVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SRVNPVVJDRV9VU0FHRSkgJChFTkFCTEVf
UlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX1NQRUVD
SF9TWU5USEVTSVMpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykg
JChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RFWFRfQVVUT1NJ
WklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcp
ICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WQVJJQVRJT05fRk9OVFMpICQoRU5B
QkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFC
TEVfVklERU8pICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQl9BTklN
QVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxF
X0xJQldFQlJUQ19FTkRQT0lOVCkgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVfV0VCX1NPQ0tF
VFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1VTRVJfVElNSU5HKSAkKEVOQUJMRV9X
RUJBU1NFTUJMWSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQkdMMikgJChFTkFCTEVfV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9XUklUQUJMRV9TVFJFQU1fQVBJKSAkKEVO
QUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBjNGU3OGZlNjUzM2NhYjM3MjNkZDE3ZjEzY2ZlYzQ2MWMzODRkYWVhLi5iNjJlYjFi
ZTA4ZGIwMzE2YWFhM2Q1YmEyNDUyMmRhY2FhNTMzZGY1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDEtMjEg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5mQGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViUlRDXSBJ
bXBsZW1lbnQgV2ViUlRDIFBlZXJDb25uZWN0aW9uIGJhY2tlbmQgYmFzZWQgb24gbGlid2VicnRj
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjcyODkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDE3LTAxLTIxICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLiBCcmluZyBiYWNrIGd0ay1kb2MgZXJyb3IgbWVzc2FnZXMgYWZ0ZXIgcjIwOTk4MS4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCBkMmIzMDM5ZTFjYzY0NTEy
Y2IzZTBlN2RmNzhhNTgwZDkzYWRmZTg5Li41ZjdjZDdhOTQyY2U3ODQxNTQwMmViYTFjYjU5MTUx
ODFhY2M1MWViIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxp
c3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC05
OCw2ICs5OCw3IEBAIG15ICgKICAgICAkbGVnYWN5Tm90aWZpY2F0aW9uc1N1cHBvcnQsCiAgICAg
JGxlZ2FjeVZlbmRvclByZWZpeFN1cHBvcnQsCiAgICAgJGxlZ2FjeVdlYkF1ZGlvU3VwcG9ydCwK
KyAgICAkbGliV2ViUlRDRW5kcG9pbnQsCiAgICAgJGxpbmtQcmVmZXRjaFN1cHBvcnQsCiAgICAg
JGxpbmtQcmVyZW5kZXJTdXBwb3J0LAogICAgICRtYXRobWxTdXBwb3J0LApAQCAtMjk0LDYgKzI5
NSw5IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAibGVnYWN5LXdlYi1hdWRp
byIsIGRlc2MgPT4gIlRvZ2dsZSBMZWdhY3kgV2ViIEF1ZGlvIHN1cHBvcnQiLAogICAgICAgZGVm
aW5lID0+ICJFTkFCTEVfTEVHQUNZX1dFQl9BVURJTyIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4g
XCRsZWdhY3lXZWJBdWRpb1N1cHBvcnQgfSwKIAorICAgIHsgb3B0aW9uID0+ICJsaWJ3ZWJydGMt
ZW5kcG9pbnQiLCBkZXNjID0+ICJUb2dnbGUgTGliV2ViUlRDIGVuZHBvaW50IiwKKyAgICAgIGRl
ZmluZSA9PiAiRU5BQkxFX0xJQldFQlJUQ19FTkRQT0lOVCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUg
PT4gXCRsaWJXZWJSVENFbmRwb2ludCB9LAorCiAgICAgeyBvcHRpb24gPT4gImxpbmstcHJlZmV0
Y2giLCBkZXNjID0+ICJUb2dnbGUgTGluayBQcmVmZXRjaCBzdXBwb3J0IiwKICAgICAgIGRlZmlu
ZSA9PiAiRU5BQkxFX0xJTktfUFJFRkVUQ0giLCBkZWZhdWx0ID0+IChpc0d0aygpIHx8IGlzRWZs
KCkpLCB2YWx1ZSA9PiBcJGxpbmtQcmVmZXRjaFN1cHBvcnQgfSwKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcKaW5kZXggMmQwNDNhMDZlNTRkMWNkZGU0Y2VhODUwYzYyMzg4ODlkNzNjMDkxZi4uZWVjYzZi
NDIyOWJmNWViMTBiOWY4MjEyN2M5ZDY3OTk2ZWVlYmExMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
CkBAIC0xNjUsNiArMTY1LDcgQEAgRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMgPSBFTkFCTEVfU1BF
RUNIX1NZTlRIRVNJUzsKIEVOQUJMRV9TVUJUTEVfQ1JZUFRPID0gRU5BQkxFX1NVQlRMRV9DUllQ
VE87CiBFTkFCTEVfU1ZHX0ZPTlRTID0gRU5BQkxFX1NWR19GT05UUzsKIEVOQUJMRV9XRUJfUlRD
ID0gRU5BQkxFX1dFQl9SVEM7CitFTkFCTEVfTElCV0VCUlRDX0VORFBPSU5UID0gRU5BQkxFX0xJ
QldFQlJUQ19FTkRQT0lOVDsKIEVOQUJMRV9XUklUQUJMRV9TVFJFQU1fQVBJID0gRU5BQkxFX1dS
SVRBQkxFX1NUUkVBTV9BUEk7CiAKIEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTiA9
IEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTjsKQEAgLTIxNiw0ICsyMTcsNCBAQCBF
TkFCTEVfVkFSSUFUSU9OX0ZPTlRTX0lGX05PVF8gPSAkKEVOQUJMRV9WQVJJQVRJT05fRk9OVFNf
SUZfTk9UX05PKTsKIEVOQUJMRV9WQVJJQVRJT05fRk9OVFNfSUZfTk9UX05PID0gRU5BQkxFX1ZB
UklBVElPTl9GT05UUzsKIEVOQUJMRV9WQVJJQVRJT05fRk9OVFNfSUZfTk9UX1lFUyA9IDsKIAot
RkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxF
UkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcp
ICQoRU5BQkxFX0FQUExFX1BBWSkgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJM
RV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FO
VkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJ
TkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19M
RVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19D
T01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1Nf
R1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NT
X0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0NS
T0xMX1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJB
SUxJTkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElU
WSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQ
UE9SVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREFUQUNVRV9WQUxV
RSkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9O
KSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZFVENIX0FQSSkgJChFTkFCTEVf
RklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVExf
SklUKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVE
KSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lO
REVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFC
TEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJ
TUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9U
SU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNF
UlZFUikgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJM
RV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tFWV9B
VFRSSUJVVEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9MRUdB
Q1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkg
JChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJF
RklYRVMpICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVO
QUJMRV9NQUNfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFf
Q0FQVFVSRSkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9T
RVNTSU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1Mp
ICQoRU5BQkxFX01FRElBX1NUUkVBTSkgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVf
TUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NP
TlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9O
T1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xP
Q0spICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElT
VCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFQURBQkxFX1NUUkVBTV9BUEkpICQoRU5BQkxF
X1JFQURBQkxFX0JZVEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChF
TkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVF
UlkpICQoRU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChF
TkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFC
TEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVf
TlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VD
SF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVD
VF9BTEwpICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFU
SU9OX01PREUpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVf
VklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dF
Ql9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVf
V0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1VTRVJfVElNSU5HKSAk
KEVOQUJMRV9XRUJBU1NFTUJMWSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQkdMMikgJChF
TkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9XUklUQUJMRV9TVFJFQU1f
QVBJKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5T
Rk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFU
RURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BUFBMRV9QQVkpICQoRU5BQkxFX0FUVEFD
SE1FTlRfRUxFTUVOVCkgJChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9DQUNIRV9QQVJU
SVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQo
RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChF
TkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9O
X0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURB
UFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJ
RU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVH
SU9OUykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xF
VkVMNCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChF
TkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikg
JChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMp
ICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5B
QkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJM
RV9GRVRDSF9BUEkpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRk9OVF9MT0FE
X0VWRU5UUykgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5B
QkxFX0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9D
QVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9J
Tl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVU
X1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVO
QUJMRV9JTlRFUlNFQ1RJT05fT0JTRVJWRVIpICQoRU5BQkxFX0lOVEwpICQoRU5BQkxFX0lPU19H
RVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfSklUKSAk
KEVOQUJMRV9LRVlCT0FSRF9LRVlfQVRUUklCVVRFKSAkKEVOQUJMRV9LRVlCT0FSRF9DT0RFX0FU
VFJJQlVURSkgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xF
R0FDWV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVO
QUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFC
TEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9N
QVRITUwpICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1ND
UklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVO
QUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5BQkxFX01F
VEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUp
ICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdD
T05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUERGS0lUX1BMVUdJ
TikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVO
QUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRUFEQUJM
RV9TVFJFQU1fQVBJKSAkKEVOQUJMRV9SRUFEQUJMRV9CWVRFX1NUUkVBTV9BUEkpICQoRU5BQkxF
X1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRFKSAkKEVOQUJM
RV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SRVNPVVJDRV9VU0FHRSkgJChFTkFC
TEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX1NQ
RUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RFWFRfQVVU
T1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJ
TkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WQVJJQVRJT05fRk9OVFMpICQo
RU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChF
TkFCTEVfVklERU8pICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQl9B
TklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5B
QkxFX0xJQldFQlJUQ19FTkRQT0lOVCkgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVfV0VCX1NP
Q0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1VTRVJfVElNSU5HKSAkKEVOQUJM
RV9XRUJBU1NFTUJMWSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQkdMMikgJChFTkFCTEVf
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9XUklUQUJMRV9TVFJFQU1fQVBJKSAk
KEVOQUJMRV9YU0xUKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299469</attachid>
            <date>2017-01-22 10:01:15 -0800</date>
            <delta_ts>2017-01-26 14:56:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167289-20170122095919.patch</filename>
            <type>text/plain</type>
            <size>139511</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzgzM2RiZTZhZTg0ZmExMWRhNDhkMzk1YmZiMzIxZDY5ZDExYTcyLi4xOGYyZjBmODMzMGU4NTk2
ZjE1MjUwYmJlODFmNDJjMzc4MWRiN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNy0wMS0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubmZAZ21haWwuY29t
PgorCisgICAgICAgIFtXZWJSVENdIEltcGxlbWVudCBXZWJSVEMgUGVlckNvbm5lY3Rpb24gYmFj
a2VuZCBiYXNlZCBvbiBsaWJ3ZWJydGMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NzI4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6
CisKIDIwMTctMDEtMjEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAK
ICAgICAgICAgW0pTQ10gZXhwb3J0IEpTQzo6aW1wb3J0TW9kdWxlIEFQSSBmb3IgV2ViQ29yZSBk
eW5hbWljIGltcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCA0YjY1OTJmNWQ4ZTM2OTNjMzYwYmMyZTgzNTUzNGNiNDM5Mjk4
NzhmLi5mZjNiMmY5YTQwOTU0NmE2NmJkYTRkMTcwMjNlN2U5MjIzNTY5MjZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDE3LTAxLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+
CisKKyAgICAgICAgW1dlYlJUQ10gSW1wbGVtZW50IFdlYlJUQyBQZWVyQ29ubmVjdGlvbiBiYWNr
ZW5kIGJhc2VkIG9uIGxpYndlYnJ0YworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY3Mjg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3dGYvRmVhdHVyZURlZmluZXMuaDoKKwogMjAxNy0wMS0yMCAgSm9z
ZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBvdXRk
YXRlZCBFTkFCTEUoQ1NQX05FWFQpIGJ1aWxkIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MTQwOWJmZTll
NDNhZTkyMGQ4YzQxZDgwMTI0M2RmZTZiYWI2N2VlLi42MWQwOWM5OTFlNDhiNjcxZWY0ZDE3M2My
ODYyNDllZjZkZjA2NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE2IEBACisyMDE3LTAxLTIx
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYlJUQ10g
SW1wbGVtZW50IFdlYlJUQyBQZWVyQ29ubmVjdGlvbiBiYWNrZW5kIGJhc2VkIG9uIGxpYndlYnJ0
YworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3Mjg5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9k
dWNpbmcgYW4gaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBXZWJSVEMgcGVlciBjb25uZWN0aW9u
IGJhY2tlbmQgYmFzZWQgb24gTGliV2ViUlRDLgorICAgICAgICBUaGlzIGlzIGRvbmUgYmVoaW5k
IGEgY29tcGlsYXRpb24gZmxhZyB3aGljaCBpcyBvZmYgYnkgZGVmYXVsdCwgdW50aWwgdGhlIGlt
cGxlbWVudGF0aW9uIGlzIHJlYWR5LgorCisgICAgICAgIFRoZSBiYWNrZW5kIGltcGxlbWVudHMg
dGhlIFBlZXJDb25uZWN0aW9uQmFja2VuZCBBUEkuCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlv
biBpcyBzcGxpdCBpbnRvIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCB3aGljaCBjb250
YWlucyBtb3N0bHkgZ2VuZXJpYyBjb2RlIGFuZCBwYXNzZXMgdGhlIHJlYWwgd29yayB0byBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50LgorICAgICAgICBUaGUgbGF0dGVyIGNsYXNzIGlzIGltcGxlbWVu
dGluZyB0aGUgQVBJIHVzaW5nIExpYldlYlJUQy4KKworICAgICAgICBJbnRyb2R1Y2luZyBjbGFz
c2VzIHRvIHN1cHBvcnQgaW5jb21pbmcgYW5kIG91dGdvaW5nIHZpZGVvIHN0cmVhbXMKKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAq
IENvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6TGliV2ViUlRDTWVkaWFFbmRw
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpzZXNzaW9uRGVzY3JpcHRpb25UeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvU2V0TG9jYWxEZXNjcmlwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb1NldFJlbW90
ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmFkZFBlbmRpbmdJY2VDYW5kaWRhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmRvQ3JlYXRlT2ZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6ZG9DcmVhdGVBbnN3ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6Z2V0U3RhdHMpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6U3RhdHNDb2xsZWN0b3I6OlN0YXRzQ29sbGVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OlN0YXRzQ29sbGVjdG9yOjpPblN0YXRz
RGVsaXZlcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OnNpZ25hbGluZ1N0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uU2lnbmFsaW5nQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRyYWNrSWQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWVkaWFT
dHJlYW1UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojph
ZGRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25B
ZGRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25S
ZW1vdmVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
YWRkRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6T25EYXRhQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9u
UmVuZWdvdGlhdGlvbk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjppY2VDb25uZWN0aW9uU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25JY2VDb25u
ZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
Ok9uSWNlR2F0aGVyaW5nQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6Ok9uSWNlQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6Ok9uSWNlQ2FuZGlkYXRlc1JlbW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Np
b25EZXNjcmlwdGlvbkZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVu
ZHBvaW50OjpzZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlv
bkZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzZXRS
ZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGli
V2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVu
ZHBvaW50Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6TGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbmZpZ3VyYXRpb25Gcm9tTWVkaWFF
bmRwb2ludENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpzZXRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Z2V0U3RhdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb1NldExvY2FsRGVzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb1Nl
dFJlbW90ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVPZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvQ3JlYXRlQW5zd2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9TdG9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9BZGRJY2VDYW5kaWRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjptYXJr
QXNOZWVkaW5nTmVnb3RpYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVSZWNlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZURhdGFDaGFubmVsSGFuZGxlcik6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmg6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llczo6cnRjU3RyYXRlZ3kpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNYWNyb3MuaDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0
aWxzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzaG91bGROb3RCZUNhbGxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJydGNBdWRpb01vZHVsZTo6V2VicnRjQXVkaW9Nb2R1bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2VicnRjQXVkaW9Nb2R1bGU6OlJlZ2lzdGVyQXVkaW9DYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJydGNBdWRpb01vZHVsZTo6T25NZXNzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYnJ0Y0F1ZGlvTW9kdWxlOjpTdGFydFBsYXlvdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2VicnRjQXVkaW9Nb2R1bGU6OlN0b3BQbGF5b3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYnJ0Y0F1ZGlvTW9kdWxlOjpTdGFydFBsYXlvdXRPbkF1ZGlvVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYnJ0Y0F1ZGlvTW9kdWxlOjpQb2xsRnJvbVNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcyk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrVGhyZWFkTWVzc2FnZURhdGE6Ok5ldHdvcmtUaHJlYWRNZXNzYWdlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzOjpPbk1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjppbml0aWFsaXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyk6
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplTGliV2ViUlRDSW50ZXJuYWxzV2l0aFNvY2tl
dFNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpwZWVyQ29ubmVjdGlvbkZhY3RvcnkpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvUlRDU3RyYXRlZ3kuaDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6Ok9uRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpwcm9j
ZXNzTmV3U2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmN1cnJlbnRGcmFtZUltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6cGFpbnRDdXJy
ZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpzZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2U6OnN1cHBvcnRlZENvbnN0cmFpbnRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6R2V0U3RhdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpBZGRPclVwZGF0ZVNpbmspOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpSZW1vdmVTaW5rKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c291cmNlSGFz
TW9yZU1lZGlhRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oOiBBZGRlZC4KKwogMjAxNy0wMS0yMSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OnRleHRDaGFuZ2VkKCkgYnlwYXNzZXMgQVhMaXZlUmVnaW9uQ2hhbmdlZCBub3RpZmljYXRp
b24gY29hbGVzY2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDAwOWQ4YjgzMzIzOWRmMWE3ZTNhMzEw
N2JlZDBjNzM1N2EwZjY2MTguLmUxZDA1OTM5YTE5NGQ2NGQzMTllMTUyYmQyYjM4NGRiODYxNzlh
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNy0wMS0yMSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubmZAZ21haWwuY29tPgorCisgICAgICAgIFtXZWJSVENdIEltcGxlbWVu
dCBXZWJSVEMgUGVlckNvbm5lY3Rpb24gYmFja2VuZCBiYXNlZCBvbiBsaWJ3ZWJydGMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzI4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTctMDEtMjEgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIC1bV2ViRnJhbWUgc2Vu
ZE9yaWVudGF0aW9uQ2hhbmdlRXZlbnQ6XSB3aGljaCBpcyB1bnVzZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAz
YmFjN2EwMTMyZDE5ZDIyN2I2NTFlY2FmM2EyOWE1MTlkOWFmMjM0Li5mNmNiMzQ0YThmOWE1NmFk
MDY4NTk1YzdhMTQ1MTQ4NTU1MzViYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTctMDEtMjEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5mQGdtYWlsLmNvbT4KKworICAgICAgICBb
V2ViUlRDXSBJbXBsZW1lbnQgV2ViUlRDIFBlZXJDb25uZWN0aW9uIGJhY2tlbmQgYmFzZWQgb24g
bGlid2VicnRjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjcyODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDE3LTAxLTIx
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjExMDEyLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmlu
ZGV4IDJkMDQzYTA2ZTU0ZDFjZGRlNGNlYTg1MGM2MjM4ODg5ZDczYzA5MWYuLjU1ZTVmYTdhMzQ0
ZWFjYzI4NWNmZWQxOTQ0OWQ1M2FkNDJiMGQ3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
QEAgLTE2NSw2ICsxNjUsNyBAQCBFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUyA9IEVOQUJMRV9TUEVF
Q0hfU1lOVEhFU0lTOwogRU5BQkxFX1NVQlRMRV9DUllQVE8gPSBFTkFCTEVfU1VCVExFX0NSWVBU
TzsKIEVOQUJMRV9TVkdfRk9OVFMgPSBFTkFCTEVfU1ZHX0ZPTlRTOwogRU5BQkxFX1dFQl9SVEMg
PSBFTkFCTEVfV0VCX1JUQzsKK0VOQUJMRV9MSUJXRUJSVENfRU5EUE9JTlQgPSA7CiBFTkFCTEVf
V1JJVEFCTEVfU1RSRUFNX0FQSSA9IEVOQUJMRV9XUklUQUJMRV9TVFJFQU1fQVBJOwogCiBFTkFC
TEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04gPSBFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9E
RVRFQ1RJT047CkBAIC0yMTYsNCArMjE3LDQgQEAgRU5BQkxFX1ZBUklBVElPTl9GT05UU19JRl9O
T1RfID0gJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTX0lGX05PVF9OTyk7CiBFTkFCTEVfVkFSSUFU
SU9OX0ZPTlRTX0lGX05PVF9OTyA9IEVOQUJMRV9WQVJJQVRJT05fRk9OVFM7CiBFTkFCTEVfVkFS
SUFUSU9OX0ZPTlRTX0lGX05PVF9ZRVMgPSA7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxF
XzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVf
QUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BUFBMRV9QQVkpICQoRU5B
QkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9D
QUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNf
UFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRF
UklORykgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9E
RUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19E
RVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1Nf
SU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJM
RV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9DU1NfU0VM
RUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX0NTUzNf
VEVYVCkgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVf
SEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFfVFJBTlNG
RVJfSVRFTVMpICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1F
TlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRU5DUllQVEVEX01FRElB
KSAkKEVOQUJMRV9GRVRDSF9BUEkpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVf
Rk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9B
UEkpICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFC
TEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9E
QVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBM
RVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9X
RUVLKSAkKEVOQUJMRV9JTlRFUlNFQ1RJT05fT0JTRVJWRVIpICQoRU5BQkxFX0lOVEwpICQoRU5B
QkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFC
TEVfSklUKSAkKEVOQUJMRV9LRVlCT0FSRF9LRVlfQVRUUklCVVRFKSAkKEVOQUJMRV9LRVlCT0FS
RF9DT0RFX0FUVFJJQlVURSkgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQo
RU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJ
T05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVT
UykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAk
KEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NP
TlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09V
UkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQo
RU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJT
T1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJ
R0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUERG
S0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZF
TlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJM
RV9SRUFEQUJMRV9TVFJFQU1fQVBJKSAkKEVOQUJMRV9SRUFEQUJMRV9CWVRFX1NUUkVBTV9BUEkp
ICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRF
KSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SRVNPVVJDRV9VU0FH
RSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQo
RU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxF
X1NWR19GT05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxF
X1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9J
Q09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WQVJJQVRJT05f
Rk9OVFMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSAkKEVOQUJMRV9WSURFT19U
UkFDSykgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5B
QkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBM
QVkpICQoRU5BQkxFX1dFQl9SVEMpICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJf
VElNSU5HKSAkKEVOQUJMRV9VU0VSX1RJTUlORykgJChFTkFCTEVfV0VCQVNTRU1CTFkpICQoRU5B
QkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgJChFTkFCTEVfV1JJVEFCTEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfWFNMVCk7CitGRUFU
VVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRF
RF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChF
TkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0FW
Rl9DQVBUSU9OUykgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNf
UEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykg
JChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVM
XzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBP
U0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19HUklE
X0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1B
R0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TQ1JPTExf
U05BUCkgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19UUkFJTElO
R19XT1JEKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAk
KEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JU
KSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAk
KEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQo
RU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRkVUQ0hfQVBJKSAkKEVOQUJMRV9GSUxU
RVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZUTF9KSVQp
ICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQo
RU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJB
U0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ERVhF
RF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVU
X1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxP
Q0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVS
KSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lP
U19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJ
QlVURSkgJChFTkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FDWV9D
U1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAkKEVO
QUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhF
UykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxF
X01BQ19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DQVBU
VVJFKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJ
T04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChF
TkFCTEVfTUVESUFfU1RSRUFNKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRN
TCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVO
VF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05PVElG
SUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJfTE9DSykg
JChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAk
KEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVBREFCTEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfUkVB
REFCTEVfQllURV9TVFJFQU1fQVBJKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJM
RV9SRVFVRVNUX0FVVE9DT01QTEVURSkgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkg
JChFTkFCTEVfUkVTT1VSQ0VfVVNBR0UpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJM
RV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9T
VUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1C
RVJfREVURUNUSU9OKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VW
RU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FM
TCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05f
TU9ERSkgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSUVX
X01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJfQU5JTUFUSU9OUykgJChFTkFCTEVfV0VCX0FV
RElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9MSUJXRUJSVENfRU5EUE9JTlQpICQo
RU5BQkxFX1dFQl9SVEMpICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5H
KSAkKEVOQUJMRV9VU0VSX1RJTUlORykgJChFTkFCTEVfV0VCQVNTRU1CTFkpICQoRU5BQkxFX1dF
QkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkg
JChFTkFCTEVfV1JJVEFCTEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfWFNMVCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIGIvU291cmNlL1dURi93dGYvRmVhdHVy
ZURlZmluZXMuaAppbmRleCAwYzNkYTc1NzU5MzZlNGRlNTE2MjQ3YjJjZTE2NmUzNDliODc2OTU4
Li5mMmMyMWY1NjgwZjRlMmZiYzBjMTU4YjRjZDM0ZTI3ZjE0ZTVmNWM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1
cmVEZWZpbmVzLmgKQEAgLTU1MCw2ICs1NTAsMTAgQEAgdGhlIHB1YmxpYyBpT1MgU0RLLiBXZSB3
aWxsIGFsc28gbmVlZCB0byB1cGRhdGUgdGhlIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGZpbGUK
ICNkZWZpbmUgRU5BQkxFX0xFVFRFUlBSRVNTIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5B
QkxFX0xJQldFQlJUQ19FTkRQT0lOVCkKKyNkZWZpbmUgRU5BQkxFX0xJQldFQlJUQ19FTkRQT0lO
VCAwCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9MSU5LX1BSRUZFVENIKQogI2RlZmlu
ZSBFTkFCTEVfTElOS19QUkVGRVRDSCAwCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNv
cmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggMmQwNDNhMDZl
NTRkMWNkZGU0Y2VhODUwYzYyMzg4ODlkNzNjMDkxZi4uNTVlNWZhN2EzNDRlYWNjMjg1Y2ZlZDE5
NDQ5ZDUzYWQ0MmIwZDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTE2NSw2ICsxNjUsNyBAQCBFTkFCTEVf
U1BFRUNIX1NZTlRIRVNJUyA9IEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTOwogRU5BQkxFX1NVQlRM
RV9DUllQVE8gPSBFTkFCTEVfU1VCVExFX0NSWVBUTzsKIEVOQUJMRV9TVkdfRk9OVFMgPSBFTkFC
TEVfU1ZHX0ZPTlRTOwogRU5BQkxFX1dFQl9SVEMgPSBFTkFCTEVfV0VCX1JUQzsKK0VOQUJMRV9M
SUJXRUJSVENfRU5EUE9JTlQgPSA7CiBFTkFCTEVfV1JJVEFCTEVfU1RSRUFNX0FQSSA9IEVOQUJM
RV9XUklUQUJMRV9TVFJFQU1fQVBJOwogCiBFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJ
T04gPSBFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT047CkBAIC0yMTYsNCArMjE3LDQg
QEAgRU5BQkxFX1ZBUklBVElPTl9GT05UU19JRl9OT1RfID0gJChFTkFCTEVfVkFSSUFUSU9OX0ZP
TlRTX0lGX05PVF9OTyk7CiBFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTX0lGX05PVF9OTyA9IEVOQUJM
RV9WQVJJQVRJT05fRk9OVFM7CiBFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTX0lGX05PVF9ZRVMgPSA7
CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FD
Q0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xM
SU5HKSAkKEVOQUJMRV9BUFBMRV9QQVkpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChF
TkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxF
X0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVfQ1NTX0FOSU1BVElP
TlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9D
U1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVf
Q1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxF
X0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NT
X1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NT
X1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1VSU09SX1ZJU0lC
SUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJE
X1NVUFBPUlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RBVEFDVUVf
VkFMVUUpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRB
VElPTikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9GRVRDSF9BUEkpICQoRU5B
QkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVf
RlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQURfREVQUkVD
QVRFRCkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lD
T05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJM
RV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQo
RU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RB
VEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9JTlRFUlNFQ1RJT05f
T0JTRVJWRVIpICQoRU5BQkxFX0lOVEwpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChF
TkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9LRVlCT0FSRF9L
RVlfQVRUUklCVVRFKSAkKEVOQUJMRV9LRVlCT0FSRF9DT0RFX0FUVFJJQlVURSkgJChFTkFCTEVf
TEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVE
SUEpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9S
X1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkg
JChFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01F
RElBX0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVE
SUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNU
SUNTKSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5B
QkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRP
Ul9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFC
TEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRF
Ul9MT0NLKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklY
X0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRUFEQUJMRV9TVFJFQU1fQVBJKSAkKEVO
QUJMRV9SRUFEQUJMRV9CWVRFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1Ip
ICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRFKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElB
X1FVRVJZKSAkKEVOQUJMRV9SRVNPVVJDRV9VU0FHRSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcp
ICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQo
RU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVMRVBI
T05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVf
VE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJT
RUxFQ1RfQUxMKSAkKEVOQUJMRV9WQVJJQVRJT05fRk9OVFMpICQoRU5BQkxFX1ZJREVPX1BSRVNF
TlRBVElPTl9NT0RFKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklERU8pICQoRU5B
QkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJM
RV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxFX1dFQl9SVEMpICQoRU5B
QkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9VU0VSX1RJTUlO
RykgJChFTkFCTEVfV0VCQVNTRU1CTFkpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIp
ICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfV1JJVEFCTEVfU1RS
RUFNX0FQSSkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9U
UkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VM
RVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9B
VFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQ0FDSEVf
UEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZ
KSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcp
ICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JB
VElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNF
X0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdF
X09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NT
X1JFR0lPTlMpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVfQ1NTX1NFTEVDVE9S
U19MRVZFTDQpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9DU1MzX1RFWFQp
ICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRM
RVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lU
RU1TKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAk
KEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChF
TkFCTEVfRkVUQ0hfQVBJKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZPTlRf
TE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAk
KEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dF
T0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJB
U0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkg
JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01P
TlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykg
JChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9J
T1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0pJ
VCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVfS0VZQk9BUkRfQ09E
RV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJM
RV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykg
JChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQo
RU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUykgJChFTkFC
TEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJQV9DT05UUk9M
U19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkg
JChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVOQUJM
RV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1ND
QUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9S
X0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9Q
TFVHSU4pICQoRU5BQkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykg
JChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVB
REFCTEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfUkVBREFCTEVfQllURV9TVFJFQU1fQVBJKSAkKEVO
QUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVURSkgJChF
TkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUkVTT1VSQ0VfVVNBR0UpICQo
RU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJM
RV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdf
Rk9OVFMpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URVhU
X0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9M
T0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRT
KSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFCTEVfVklERU9fVFJBQ0sp
ICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9X
RUJfQU5JTUFUSU9OUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAk
KEVOQUJMRV9MSUJXRUJSVENfRU5EUE9JTlQpICQoRU5BQkxFX1dFQl9SVEMpICQoRU5BQkxFX1dF
Ql9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9VU0VSX1RJTUlORykgJChF
TkFCTEVfV0VCQVNTRU1CTFkpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfV1JJVEFCTEVfU1RSRUFNX0FQ
SSkgJChFTkFCTEVfWFNMVCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0
aW9ucy9XZWJDb3JlLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2Vi
Q29yZS54Y2NvbmZpZwppbmRleCA2YjE5YWNmNjQ1Y2Q4OTk2ZDYwM2I0YTAwMTQ0ZWFiODZkYzhi
NDM3Li43NzRlMGE5MDdjZDEzOTBhYzU0NjllZTkwMWJkNDM4NmU1YzFmMTA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKQEAgLTQ2LDcgKzQ2
LDcgQEAgT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKE9USEVSX0NGTEFHUyk7CiAKIFdFQktJVEFE
RElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9s
b2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9ucyAkKFNES1JPT1QpL3Vzci9sb2NhbC9pbmNsdWRl
L1dlYktpdEFkZGl0aW9uczsKIAotSEVBREVSX1NFQVJDSF9QQVRIUyA9IEZvcndhcmRpbmdIZWFk
ZXJzIGljdSAvdXNyL2luY2x1ZGUvbGlieHNsdCAvdXNyL2luY2x1ZGUvbGlieG1sMiAiJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUiICIkKEJVSUxUX1BST0RVQ1RT
X0RJUikvdXNyL2xvY2FsL2luY2x1ZGUiICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hf
UEFUSFMpICQoSEVBREVSX1NFQVJDSF9QQVRIUyk7CitIRUFERVJfU0VBUkNIX1BBVEhTID0gRm9y
d2FyZGluZ0hlYWRlcnMgaWN1IC91c3IvaW5jbHVkZS9saWJ4c2x0IC91c3IvaW5jbHVkZS9saWJ4
bWwyICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZSIgIiQoQlVJ
TFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZSIgJChXRUJLSVRBRERJVElPTlNfSEVB
REVSX1NFQVJDSF9QQVRIUykgJChTUkNST09UKS8uLi9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UgJChIRUFERVJfU0VBUkNIX1BBVEhTKTsKIElORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsK
IElOU1RBTExfUEFUSCA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJhbWV3b3JrczsK
IElOU1RBTExfUEFUSFtzZGs9bWFjb3N4Kl0gPSAkKFdFQkNPUkVfRlJBTUVXT1JLU19ESVIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ZDEzZjYxY2MzMDI3OTFmMGQ5ZDU4NDE1Y2YzYmMwM2Q0MjdmZTMzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5jcHAKQEAgLTAsMCArMSw0MTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGli
V2ViUlRDTWVkaWFFbmRwb2ludC5oIgorCisjaWYgRU5BQkxFKExJQldFQlJUQ19FTkRQT0lOVCkK
KworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUV2ZW50LmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRlLmgiCisjaW5j
bHVkZSAiUlRDUGVlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRp
b24uaCIKKyNpbmNsdWRlICJSVENTdHJhdGVneS5oIgorI2luY2x1ZGUgIlJUQ1RyYWNrRXZlbnQu
aCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCIKKyNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0xpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQoTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kJiBwZWVyQ29ubmVjdGlvbikKKyAgICA6IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKHBl
ZXJDb25uZWN0aW9uKQorICAgICwgbV9jcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcigq
dGhpcykKKyAgICAsIG1fc2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcigqdGhpcykK
KyAgICAsIG1fc2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIoKnRoaXMpCit7Cisg
ICAgbV9iYWNrZW5kID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnJ0Y1N0cmF0ZWd5KCkuY3JlYXRl
UGVlckNvbm5lY3Rpb24oKnRoaXMpOworICAgIEFTU0VSVChtX2JhY2tlbmQpOworfQorCitzdGF0
aWMgaW5saW5lIGNvbnN0IGNoYXIqIHNlc3Npb25EZXNjcmlwdGlvblR5cGUoUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uOjpTZHBUeXBlIHNkcFR5cGUpCit7CisgICAgc3dpdGNoIChzZHBUeXBlKSB7Cisg
ICAgY2FzZSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6Ok9mZmVyOgorICAgICAgICBy
ZXR1cm4gIm9mZmVyIjsKKyAgICBjYXNlIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6U2RwVHlwZTo6
UHJhbnN3ZXI6CisgICAgICAgIHJldHVybiAicHJhbnN3ZXIiOworICAgIGNhc2UgUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpBbnN3ZXI6CisgICAgICAgIHJldHVybiAiYW5zd2VyIjsK
KyAgICBjYXNlIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6U2RwVHlwZTo6Um9sbGJhY2s6CisgICAg
ICAgIHJldHVybiAicm9sbGJhY2siOworICAgIH0KK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVu
ZHBvaW50Ojpkb1NldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbikKK3sKKyAgICB3ZWJydGM6OlNkcFBhcnNlRXJyb3IgZXJyb3I7CisgICAgc3RkOjp1
bmlxdWVfcHRyPHdlYnJ0Yzo6U2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlPiBzZXNzaW9uRGVz
Y3JpcHRpb24od2VicnRjOjpDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb24oc2Vzc2lvbkRlc2NyaXB0
aW9uVHlwZShkZXNjcmlwdGlvbi50eXBlKCkpLCBkZXNjcmlwdGlvbi5zZHAoKS51dGY4KCkuZGF0
YSgpLCAmZXJyb3IpKTsKKworICAgIGlmICghc2Vzc2lvbkRlc2NyaXB0aW9uKSB7CisgICAgICAg
IFN0cmluZyBlcnJvck1lc3NhZ2UoZXJyb3IuZGVzY3JpcHRpb24uZGF0YSgpLCBlcnJvci5kZXNj
cmlwdGlvbi5zaXplKCkpOworICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5zZXRMb2Nh
bERlc2NyaXB0aW9uRmFpbGVkKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBXVEZNb3ZlKGVy
cm9yTWVzc2FnZSkgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9iYWNrZW5kLT5T
ZXRMb2NhbERlc2NyaXB0aW9uKCZtX3NldExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIs
IHNlc3Npb25EZXNjcmlwdGlvbi5yZWxlYXNlKCkpOworfQorCit2b2lkIExpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6OmRvU2V0UmVtb3RlRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbikKK3sKKyAgICB3ZWJydGM6OlNkcFBhcnNlRXJyb3IgZXJyb3I7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPHdlYnJ0Yzo6U2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlPiBzZXNzaW9u
RGVzY3JpcHRpb24od2VicnRjOjpDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb24oc2Vzc2lvbkRlc2Ny
aXB0aW9uVHlwZShkZXNjcmlwdGlvbi50eXBlKCkpLCBkZXNjcmlwdGlvbi5zZHAoKS51dGY4KCku
ZGF0YSgpLCAmZXJyb3IpKTsKKyAgICBpZiAoIXNlc3Npb25EZXNjcmlwdGlvbikgeworICAgICAg
ICBTdHJpbmcgZXJyb3JNZXNzYWdlKGVycm9yLmRlc2NyaXB0aW9uLmRhdGEoKSwgZXJyb3IuZGVz
Y3JpcHRpb24uc2l6ZSgpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuc2V0UmVt
b3RlRGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIFdURk1vdmUo
ZXJyb3JNZXNzYWdlKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2JhY2tlbmQt
PlNldFJlbW90ZURlc2NyaXB0aW9uKCZtX3NldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2Vy
dmVyLCBzZXNzaW9uRGVzY3JpcHRpb24ucmVsZWFzZSgpKTsKK30KKwordm9pZCBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjphZGRQZW5kaW5nSWNlQ2FuZGlkYXRlcygpCit7CisgICAgd2hpbGUgKG1f
cGVuZGluZ0NhbmRpZGF0ZXMuc2l6ZSgpKQorICAgICAgICBtX2JhY2tlbmQtPkFkZEljZUNhbmRp
ZGF0ZShtX3BlbmRpbmdDYW5kaWRhdGVzLnRha2VMYXN0KCkucmVsZWFzZSgpKTsKK30KKwordm9p
ZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb0NyZWF0ZU9mZmVyKCkKK3sKKyAgICBtX2lzSW5p
dGlhdG9yID0gdHJ1ZTsKKyAgICBhdXRvJiBzZW5kZXJzID0gbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY29ubmVjdGlvbigpLmdldFNlbmRlcnMoKTsKKyAgICBpZiAoc2VuZGVycy5zaXplKCkpIHsK
KyAgICAgICAgLy8gRklYTUU6IFdlIG9ubHkgc3VwcG9ydCBvbmUgc3RyZWFtIGZvciB0aGUgbW9t
ZW50LgorICAgICAgICBhdXRvIHN0cmVhbSA9IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpLkNyZWF0
ZUxvY2FsTWVkaWFTdHJlYW0oImF2X2xhYmVsIik7CisgICAgICAgIGZvciAoUlRDUnRwU2VuZGVy
JiBzZW5kZXIgOiBzZW5kZXJzKSB7CisgICAgICAgICAgICBhdXRvKiB0cmFjayA9IHNlbmRlci50
cmFjaygpOworICAgICAgICAgICAgaWYgKHRyYWNrKSB7CisgICAgICAgICAgICAgICAgQVNTRVJU
KHNlbmRlci5tZWRpYVN0cmVhbUlkcygpLnNpemUoKSA9PSAxKTsKKyAgICAgICAgICAgICAgICBh
dXRvJiBzb3VyY2UgPSB0cmFjay0+c291cmNlKCk7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJj
ZS50eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pIHsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdXRnb2luZyBhdWRpbyB0cmFja3MuCisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbV92aWRlb1NvdXJj
ZXMuYXBwZW5kKFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKHNvdXJjZSkpOwor
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIHVzaW5nIHRyYWNrLT5s
YWJlbCgpLCBidXQgaXQgbWF5IGNvbnRhaW4gc3BhY2VzIHdoaWNoIG1heSBjYXVzZSBpc3N1ZXMu
CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIHRlbXBvcmFyaWx5IHVzZSAidmlkZW9fdHJhY2si
IGluc3RlYWQuCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbS0+QWRkVHJhY2socGVlckNvbm5l
Y3Rpb25GYWN0b3J5KCkuQ3JlYXRlVmlkZW9UcmFjaygidmlkZW9fdHJhY2siLCBtX3ZpZGVvU291
cmNlcy5sYXN0KCkucHRyKCkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgbV9iYWNrZW5kLT5BZGRTdHJlYW0oc3RyZWFtKTsKKyAgICB9Cisg
ICAgbV9iYWNrZW5kLT5DcmVhdGVPZmZlcigmbV9jcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNl
cnZlciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9DcmVh
dGVBbnN3ZXIoKQoreworICAgIG1faXNJbml0aWF0b3IgPSBmYWxzZTsKKyAgICAgICAgYXV0byYg
c2VuZGVycyA9IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5nZXRTZW5kZXJz
KCk7CisgICAgaWYgKHNlbmRlcnMuc2l6ZSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBvbmx5
IHN1cHBvcnQgb25lIHN0cmVhbSBmb3IgdGhlIG1vbWVudC4KKyAgICAgICAgYXV0byBzdHJlYW0g
PSBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKS5DcmVhdGVMb2NhbE1lZGlhU3RyZWFtKCJhdl9sYWJl
bCIpOworICAgICAgICBmb3IgKFJUQ1J0cFNlbmRlciYgc2VuZGVyIDogc2VuZGVycykgeworICAg
ICAgICAgICAgYXV0byogdHJhY2sgPSBzZW5kZXIudHJhY2soKTsKKyAgICAgICAgICAgIGlmICh0
cmFjaykgeworICAgICAgICAgICAgICAgIEFTU0VSVChzZW5kZXIubWVkaWFTdHJlYW1JZHMoKS5z
aXplKCkgPT0gMSk7CisgICAgICAgICAgICAgICAgYXV0byYgc291cmNlID0gdHJhY2stPnNvdXJj
ZSgpOworICAgICAgICAgICAgICAgIGlmIChzb3VyY2UudHlwZSgpID09IFJlYWx0aW1lTWVkaWFT
b3VyY2U6OkF1ZGlvKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3Igb3V0Z29pbmcgYXVkaW8gdHJhY2tzLgorICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1fdmlkZW9Tb3VyY2VzLmFwcGVuZChSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2U6OmNyZWF0ZShzb3VyY2UpKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBiZSB1c2luZyB0cmFjay0+bGFiZWwoKSwgYnV0IGl0IG1heSBjb250YWlu
IHNwYWNlcyB3aGljaCBtYXkgY2F1c2UgaXNzdWVzLgorICAgICAgICAgICAgICAgICAgICAvLyBX
ZSB0ZW1wb3JhcmlseSB1c2UgInZpZGVvX3RyYWNrIiBpbnN0ZWFkLgorICAgICAgICAgICAgICAg
ICAgICBzdHJlYW0tPkFkZFRyYWNrKHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpLkNyZWF0ZVZpZGVv
VHJhY2soInZpZGVvX3RyYWNrIiwgbV92aWRlb1NvdXJjZXMubGFzdCgpLnB0cigpKSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1fYmFja2Vu
ZC0+QWRkU3RyZWFtKHN0cmVhbSk7CisgICAgfQorICAgIG1fYmFja2VuZC0+Q3JlYXRlQW5zd2Vy
KCZtX2NyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyLCBudWxscHRyKTsKK30KKwordm9p
ZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpnZXRTdGF0cyhNZWRpYVN0cmVhbVRyYWNrKiB0cmFj
aywgUGVlckNvbm5lY3Rpb246OlN0YXRzUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgYXV0byBj
b2xsZWN0b3IgPSBTdGF0c0NvbGxlY3Rvcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHByb21pc2Up
LCB0cmFjayk7CisgICAgbV9iYWNrZW5kLT5HZXRTdGF0cyhjb2xsZWN0b3IucHRyKCkpOworICAg
IG1fc3RhdHNDb2xsZWN0b3JzLmFwcGVuZChXVEZNb3ZlKGNvbGxlY3RvcikpOworfQorCitMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpTdGF0c0NvbGxlY3Rvcjo6U3RhdHNDb2xsZWN0b3IoTGliV2Vi
UlRDTWVkaWFFbmRwb2ludCYgZW5kcG9pbnQsIFBlZXJDb25uZWN0aW9uOjpTdGF0c1Byb21pc2Um
JiBwcm9taXNlLCBNZWRpYVN0cmVhbVRyYWNrKiB0cmFjaykKKyAgICA6IG1fZW5kcG9pbnQoZW5k
cG9pbnQpCisgICAgLCBtX3Byb21pc2UoV1RGTW92ZShwcm9taXNlKSkKK3sKKyAgICBpZiAodHJh
Y2spCisgICAgICAgIG1faWQgPSB0cmFjay0+aWQoKTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRp
YUVuZHBvaW50OjpTdGF0c0NvbGxlY3Rvcjo6T25TdGF0c0RlbGl2ZXJlZChjb25zdCBydGM6OnNj
b3BlZF9yZWZwdHI8Y29uc3Qgd2VicnRjOjpSVENTdGF0c1JlcG9ydD4mIHJlcG9ydCkKK3sKKyAg
ICBSZWY8TGliV2ViUlRDTWVkaWFFbmRwb2ludD4gcHJvdGVjdG9yID0gbV9lbmRwb2ludDsKKyAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCByZXBvcnQsIHByb3RlY3RvciA9IFdURk1vdmUocHJv
dGVjdG9yKV0geworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZ1bGZpbGxpbmcgb2YgdGhl
IHByb21pc2UgYmFzZWQgb24gcmVwb3J0IGluZm9ybWF0aW9uLgorICAgICAgICBtX3Byb21pc2Uu
cmVqZWN0KE5PVF9TVVBQT1JURURfRVJSLCAiTm90IGltcGxlbWVudGVkIHlldCIpOworICAgICAg
ICBtX2VuZHBvaW50Lm1fc3RhdHNDb2xsZWN0b3JzLnJlbW92ZUZpcnN0TWF0Y2hpbmcoW3RoaXNd
KGNvbnN0IFJlZjxTdGF0c0NvbGxlY3Rvcj4mIGNvbGxlY3RvcikgeworICAgICAgICAgICAgcmV0
dXJuIHRoaXMgPT0gY29sbGVjdG9yLnB0cigpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwor
c3RhdGljIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZSBzaWduYWxpbmdTdGF0
ZSh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpTaWduYWxpbmdTdGF0ZSBzdGF0ZSkK
K3sKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjprU3RhYmxlOgorICAgICAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TdGF0ZXM6
OlNpZ25hbGluZ1N0YXRlOjpTdGFibGU7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjprSGF2ZUxvY2FsT2ZmZXI6CisgICAgICAgIHJldHVybiBQZWVyQ29ubmVjdGlv
blN0YXRlczo6U2lnbmFsaW5nU3RhdGU6OkhhdmVMb2NhbE9mZmVyOworICAgIGNhc2Ugd2VicnRj
OjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0hhdmVMb2NhbFByQW5zd2VyOgorICAgICAgICBy
ZXR1cm4gUGVlckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGluZ1N0YXRlOjpIYXZlTG9jYWxQckFu
c3dlcjsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtIYXZlUmVt
b3RlT2ZmZXI6CisgICAgICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblN0YXRlczo6U2lnbmFsaW5n
U3RhdGU6OkhhdmVSZW1vdGVPZmZlcjsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OmtIYXZlUmVtb3RlUHJBbnN3ZXI6CisgICAgICAgIHJldHVybiBQZWVyQ29ubmVj
dGlvblN0YXRlczo6U2lnbmFsaW5nU3RhdGU6OkhhdmVSZW1vdGVQckFuc3dlcjsKKyAgICBjYXNl
IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtDbG9zZWQ6CisgICAgICAgIHJldHVy
biBQZWVyQ29ubmVjdGlvblN0YXRlczo6U2lnbmFsaW5nU3RhdGU6OkNsb3NlZDsKKyAgICB9Cit9
CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25TaWduYWxpbmdDaGFuZ2Uod2VicnRj
OjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6U2lnbmFsaW5nU3RhdGUgcnRjU3RhdGUpCit7Cisg
ICAgYXV0byBzdGF0ZSA9IHNpZ25hbGluZ1N0YXRlKHJ0Y1N0YXRlKTsKKyAgICBSZWZQdHI8TGli
V2ViUlRDTWVkaWFFbmRwb2ludD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgc3RhdGVdIHsK
KyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC51cGRh
dGVTaWduYWxpbmdTdGF0ZShzdGF0ZSk7CisgICAgfSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgU3Ry
aW5nIHRyYWNrSWQod2VicnRjOjpNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNlJiB2aWRlb1RyYWNr
KQoreworICAgIHJldHVybiBTdHJpbmcodmlkZW9UcmFjay5pZCgpLmRhdGEoKSwgdmlkZW9UcmFj
ay5pZCgpLnNpemUoKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUmVmPE1lZGlhU3RyZWFtVHJhY2s+
IGNyZWF0ZU1lZGlhU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
UmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgcmVtb3RlU291cmNlKQoreworICAgIFN0cmluZyB0
cmFja0lkID0gcmVtb3RlU291cmNlLT5pZCgpOworICAgIHJldHVybiBNZWRpYVN0cmVhbVRyYWNr
OjpjcmVhdGUoY29udGV4dCwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShXVEZNb3Zl
KHJlbW90ZVNvdXJjZSksIFdURk1vdmUodHJhY2tJZCkpKTsKK30KKwordm9pZCBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjphZGRTdHJlYW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZSYgc3Ry
ZWFtKQoreworICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgdHJhY2tzOworICAgIGZvciAoYXV0
byYgdmlkZW9UcmFjayA6IHN0cmVhbS5HZXRWaWRlb1RyYWNrcygpKSB7CisgICAgICAgIEFTU0VS
VCh2aWRlb1RyYWNrKTsKKyAgICAgICAgU3RyaW5nIGlkID0gdHJhY2tJZCgqdmlkZW9UcmFjayk7
CisgICAgICAgIGF1dG8gcmVtb3RlU291cmNlID0gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
OjpjcmVhdGUoV1RGTW92ZSh2aWRlb1RyYWNrKSwgV1RGTW92ZShpZCkpOworICAgICAgICB0cmFj
a3MuYXBwZW5kKGNyZWF0ZU1lZGlhU3RyZWFtVHJhY2soKm1fcGVlckNvbm5lY3Rpb25CYWNrZW5k
LmNvbm5lY3Rpb24oKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUocmVtb3RlU291
cmNlKSkpOworICAgIH0KKyAgICAvLyBGSVhNRTogU3VwcG9ydCBhdWRpbyB0cmFja3MKKworICAg
IGF1dG8gbmV3U3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqbV9wZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZSh0cmFj
a3MpKTsKKyAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuZmlyZUV2ZW50
KE1lZGlhU3RyZWFtRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkc3RyZWFtRXZlbnQsIGZh
bHNlLCBmYWxzZSwgbmV3U3RyZWFtLmNvcHlSZWYoKSkpOworCisgICAgVmVjdG9yPFJlZlB0cjxN
ZWRpYVN0cmVhbT4+IHN0cmVhbXM7CisgICAgc3RyZWFtcy5hcHBlbmQobmV3U3RyZWFtLmNvcHlS
ZWYoKSk7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IG5ld1N0cmVhbS0+Z2V0VHJhY2tzKCkpCisg
ICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5maXJlRXZlbnQoUlRD
VHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS50cmFja0V2ZW50LCBmYWxzZSwgZmFsc2Us
IG51bGxwdHIsIHRyYWNrLmdldCgpLCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4oc3RyZWFt
cyksIG51bGxwdHIpKTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkFkZFN0
cmVhbShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZT4gc3Ry
ZWFtKQoreworICAgIFJlZlB0cjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBzdHJlYW0gPSBXVEZNb3ZlKHN0cmVhbSldIHsKKyAgICAgICAgaWYgKHBy
b3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBB
U1NFUlQoc3RyZWFtKTsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkU3RyZWFtKCpzdHJlYW0u
Z2V0KCkpOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uUmVt
b3ZlU3RyZWFtKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNl
PikKK3sKKyAgICAvLyBGSVhNRTogVG8gYmUgaW1wbGVtZW50ZWQuCit9CisKK3ZvaWQgTGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6YWRkRGF0YUNoYW5uZWwocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+JiYpCit7CisgICAgLy8gRklYTUU6IFRvIGJlIGltcGxl
bWVudGVkLgorfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uRGF0YUNoYW5uZWwo
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+IGRhdGFDaGFu
bmVsKQoreworICAgIFJlZlB0cjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBkYXRhQ2hhbm5lbCA9IFdURk1vdmUoZGF0YUNoYW5uZWwpXSB7CisgICAg
ICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkRGF0YUNoYW5uZWwocnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+KGRhdGFDaGFubmVsKSk7CisgICAgfSk7Cit9
CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c3RvcCgpCit7CisgICAgQVNTRVJUKG1f
YmFja2VuZCk7CisgICAgbV9iYWNrZW5kLT5DbG9zZSgpOworICAgIG1fYmFja2VuZCA9IG51bGxw
dHI7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25SZW5lZ290aWF0aW9uTmVl
ZGVkKCkKK3sKKyAgICAvLyBGSVhNRTogVG8gYmUgaW1wbGVtZW50ZWQuCit9CisKK3N0YXRpYyBp
bmxpbmUgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZSBpY2VDb25uZWN0
aW9uU3RhdGUod2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0
YXRlIHN0YXRlKQoreworICAgIEFTU0VSVChzdGF0ZSAhPSB3ZWJydGM6OlBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjprSWNlQ29ubmVjdGlvbk1heCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBl
ZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VDb25uZWN0aW9uU3RhdGU+KHN0YXRlKTsKK30KKwordm9p
ZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkljZUNvbm5lY3Rpb25DaGFuZ2Uod2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlIHN0YXRlKQoreworICAg
IGF1dG8gY29ubmVjdGlvblN0YXRlID0gaWNlQ29ubmVjdGlvblN0YXRlKHN0YXRlKTsKKyAgICBS
ZWZQdHI8TGliV2ViUlRDTWVkaWFFbmRwb2ludD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBj
YWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
Y29ubmVjdGlvblN0YXRlXSB7CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5pbnRlcm5hbEljZUNvbm5lY3Rpb25TdGF0
ZSgpICE9IGNvbm5lY3Rpb25TdGF0ZSkKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS51cGRhdGVJY2VDb25uZWN0aW9uU3RhdGUo
Y29ubmVjdGlvblN0YXRlKTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpPbkljZUdhdGhlcmluZ0NoYW5nZSh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjpJY2VHYXRoZXJpbmdTdGF0ZSBzdGF0ZSkKK3sKKyAgICBpZiAoc3RhdGUgPT0gd2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUdhdGhlcmluZ0NvbXBsZXRlKSB7CisgICAgICAg
IFJlZlB0cjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKV0geworICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmRvbmVHYXRoZXJpbmdDYW5kaWRhdGVzKCk7CisgICAgICAgIH0pOwor
ICAgIH0KK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkljZUNhbmRpZGF0ZShj
b25zdCB3ZWJydGM6OkljZUNhbmRpZGF0ZUludGVyZmFjZSAqcnRjQ2FuZGlkYXRlKQoreworICAg
IEFTU0VSVChydGNDYW5kaWRhdGUpOworCisgICAgc3RkOjpzdHJpbmcgc2RwOworICAgIHJ0Y0Nh
bmRpZGF0ZS0+VG9TdHJpbmcoJnNkcCk7CisgICAgU3RyaW5nIGNhbmRpZGF0ZVNEUChzZHAuZGF0
YSgpLCBzZHAuc2l6ZSgpKTsKKworICAgIGF1dG8gbWlkID0gcnRjQ2FuZGlkYXRlLT5zZHBfbWlk
KCk7CisgICAgU3RyaW5nIGNhbmRpZGF0ZU1pZChtaWQuZGF0YSgpLCBtaWQuc2l6ZSgpKTsKKwor
ICAgIFJlZlB0cjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCBtaWQgPSBXVEZNb3ZlKGNhbmRpZGF0ZU1pZCksIHNkcCA9IFdURk1vdmUoY2FuZGlkYXRl
U0RQKV0geworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmZpcmVJQ0VDYW5kaWRhdGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShTdHJpbmco
c2RwKSwgU3RyaW5nKG1pZCksIDApKTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRp
YUVuZHBvaW50OjpPbkljZUNhbmRpZGF0ZXNSZW1vdmVkKGNvbnN0IHN0ZDo6dmVjdG9yPGNyaWNr
ZXQ6OkNhbmRpZGF0ZT4mKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lk
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRl
ZCh3ZWJydGM6OlNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSogZGVzY3JpcHRpb24pCit7Cisg
ICAgc3RkOjpzdHJpbmcgc2RwOworICAgIGRlc2NyaXB0aW9uLT5Ub1N0cmluZygmc2RwKTsKKyAg
ICBTdHJpbmcgc2RwU3RyaW5nKHNkcC5kYXRhKCksIHNkcC5zaXplKCkpOworCisgICAgUmVmUHRy
PExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHNkcCA9
IFdURk1vdmUoc2RwU3RyaW5nKV0geworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9w
cGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5t
X2lzSW5pdGlhdG9yKQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nKHNkcCkpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jcmVh
dGVBbnN3ZXJTdWNjZWVkZWQoU3RyaW5nKHNkcCkpOworICAgIH0pOworfQorCit2b2lkIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZChjb25zdCBz
dGQ6OnN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIFN0cmluZyBlcnJvcihlcnJvck1lc3Nh
Z2UuZGF0YSgpLCBlcnJvck1lc3NhZ2Uuc2l6ZSgpKTsKKyAgICBSZWZQdHI8TGliV2ViUlRDTWVk
aWFFbmRwb2ludD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZXJyb3IgPSBXVEZNb3ZlKGVy
cm9yKV0geworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX2lzSW5pdGlhdG9yKQor
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRl
T2ZmZXJGYWlsZWQoRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIFN0cmluZyhlcnJvcikgfSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNyZWF0ZUFuc3dlckZhaWxlZChFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwg
U3RyaW5nKGVycm9yKSB9KTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpzZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCgpCit7CisgICAgUmVmUHRy
PExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKKyAg
ICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5zZXRMb2Nh
bERlc2NyaXB0aW9uU3VjY2VlZGVkKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVk
aWFFbmRwb2ludDo6c2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qgc3RkOjpz
dHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBTdHJpbmcgZXJyb3IoZXJyb3JNZXNzYWdlLmRh
dGEoKSwgZXJyb3JNZXNzYWdlLnNpemUoKSk7CisgICAgUmVmUHRyPExpYldlYlJUQ01lZGlhRW5k
cG9pbnQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGVycm9yID0gV1RGTW92ZShlcnJvcild
IHsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5z
ZXRMb2NhbERlc2NyaXB0aW9uRmFpbGVkKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBTdHJp
bmcoZXJyb3IpIH0pOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OnNldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCgpCit7CisgICAgUmVmUHRyPExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgY2FsbE9uTWFp
blRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKKyAgICAg
ICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5zZXRSZW1vdGVE
ZXNjcmlwdGlvblN1Y2NlZWRlZCgpOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6OnNldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZChjb25zdCBzdGQ6OnN0
cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIFN0cmluZyBlcnJvcihlcnJvck1lc3NhZ2UuZGF0
YSgpLCBlcnJvck1lc3NhZ2Uuc2l6ZSgpKTsKKyAgICBSZWZQdHI8TGliV2ViUlRDTWVkaWFFbmRw
b2ludD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKV0g
eworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNl
dFJlbW90ZURlc2NyaXB0aW9uRmFpbGVkKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBTdHJp
bmcoZXJyb3IpIH0pOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoTElCV0VCUlRDX0VORFBPSU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2lu
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzMDQ2MjZlMjNiZWI0MGVmYzMzMDQ3NmYw
OTQwZDRhOWU3NWE2YjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgKQEAgLTAsMCAr
MSwxNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShMSUJXRUJSVENfRU5EUE9JTlQpCisKKyNpbmNsdWRlICJM
aWJXZWJSVENVdGlscy5oIgorI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uQmFja2VuZC5oIgorI2lu
Y2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oIgorCisjaW5jbHVkZSA8d2VicnRj
L2FwaS9qc2VwLmg+CisjaW5jbHVkZSA8d2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmZhY3Rvcnku
aD4KKyNpbmNsdWRlIDx3ZWJydGMvYXBpL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlLmg+CisjaW5j
bHVkZSA8d2VicnRjL2FwaS9ydGNzdGF0c2NvbGxlY3Rvci5oPgorCituYW1lc3BhY2Ugd2VicnRj
IHsKK2NsYXNzIENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyOworY2xhc3MgRGF0YUNo
YW5uZWxJbnRlcmZhY2U7CitjbGFzcyBJY2VDYW5kaWRhdGVJbnRlcmZhY2U7CitjbGFzcyBNZWRp
YVN0cmVhbUludGVyZmFjZTsKK2NsYXNzIFBlZXJDb25uZWN0aW9uT2JzZXJ2ZXI7CitjbGFzcyBT
ZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U7CitjbGFzcyBTZXRTZXNzaW9uRGVzY3JpcHRpb25P
YnNlcnZlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVN0cmVhbVRy
YWNrOworY2xhc3MgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOworY2xhc3MgUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uOworCitjbGFzcyBMaWJXZWJSVENNZWRpYUVuZHBvaW50IGZpbmFsIDog
cHVibGljIFJlZkNvdW50ZWQ8TGliV2ViUlRDTWVkaWFFbmRwb2ludD4sIHByaXZhdGUgd2VicnRj
OjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ+IGNyZWF0ZShMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQm
IHBlZXJDb25uZWN0aW9uKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IExpYldlYlJUQ01lZGlhRW5k
cG9pbnQocGVlckNvbm5lY3Rpb24pKTsgfQorCisgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZSYgYmFja2VuZCgpIGNvbnN0IHsgQVNTRVJUKG1fYmFja2VuZCk7IHJldHVybiAqbV9i
YWNrZW5kLmdldCgpOyB9CisgICAgdm9pZCBkb1NldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uJik7CisgICAgdm9pZCBkb1NldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbiYpOworICAgIHZvaWQgZG9DcmVhdGVPZmZlcigpOworICAgIHZvaWQgZG9D
cmVhdGVBbnN3ZXIoKTsKKyAgICB2b2lkIGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBQZWVy
Q29ubmVjdGlvbjo6U3RhdHNQcm9taXNlJiYpOworCisgICAgdm9pZCBzdG9yZUljZUNhbmRpZGF0
ZShzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpJY2VDYW5kaWRhdGVJbnRlcmZhY2U+JiYgY2FuZGlk
YXRlKSB7IG1fcGVuZGluZ0NhbmRpZGF0ZXMuYXBwZW5kKFdURk1vdmUoY2FuZGlkYXRlKSk7IH0K
KyAgICB2b2lkIGFkZFBlbmRpbmdJY2VDYW5kaWRhdGVzKCk7CisKKyAgICB2b2lkIHN0b3AoKTsK
KworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBMaWJXZWJSVENNZWRpYUVuZHBvaW50KExpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZCYpOworCisgICAgaW50IEFkZFJlZigpIGNvbnN0IHsgcmVm
KCk7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlZkNvdW50KCkpOyB9CisgICAgaW50IFJlbGVh
c2UoKSBjb25zdCB7IGRlcmVmKCk7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlZkNvdW50KCkp
OyB9CisKKyAgICAvLyB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgQVBJCisgICAgdm9p
ZCBPblNpZ25hbGluZ0NoYW5nZSh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpTaWdu
YWxpbmdTdGF0ZSkgZmluYWw7CisgICAgdm9pZCBPbkFkZFN0cmVhbShydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZT4pIGZpbmFsOworICAgIHZvaWQgT25SZW1v
dmVTdHJlYW0ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2U+
KSBmaW5hbDsKKyAgICB2b2lkIE9uRGF0YUNoYW5uZWwocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+KSBmaW5hbDsKKyAgICB2b2lkIE9uUmVuZWdvdGlhdGlv
bk5lZWRlZCgpIGZpbmFsOworICAgIHZvaWQgT25JY2VDb25uZWN0aW9uQ2hhbmdlKHdlYnJ0Yzo6
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZSkgZmluYWw7CisgICAg
dm9pZCBPbkljZUdhdGhlcmluZ0NoYW5nZSh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjpJY2VHYXRoZXJpbmdTdGF0ZSkgZmluYWw7CisgICAgdm9pZCBPbkljZUNhbmRpZGF0ZShjb25z
dCB3ZWJydGM6OkljZUNhbmRpZGF0ZUludGVyZmFjZSopIGZpbmFsOworICAgIHZvaWQgT25JY2VD
YW5kaWRhdGVzUmVtb3ZlZChjb25zdCBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpDYW5kaWRhdGU+Jikg
ZmluYWw7CisKKyAgICB2b2lkIGNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCh3ZWJy
dGM6OlNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSopOworICAgIHZvaWQgY3JlYXRlU2Vzc2lv
bkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3RyaW5nJik7CisgICAgdm9pZCBzZXRMb2Nh
bFNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCgpOworICAgIHZvaWQgc2V0TG9jYWxTZXNzaW9u
RGVzY3JpcHRpb25GYWlsZWQoY29uc3Qgc3RkOjpzdHJpbmcmKTsKKyAgICB2b2lkIHNldFJlbW90
ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCgpOworICAgIHZvaWQgc2V0UmVtb3RlU2Vzc2lv
bkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3RyaW5nJik7CisgICAgdm9pZCBhZGRTdHJl
YW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZSYpOworICAgIHZvaWQgYWRkRGF0YUNoYW5u
ZWwocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+JiYpOwor
CisgICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiAhbV9iYWNrZW5kOyB9CisKKyAg
ICBjbGFzcyBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciA6IHB1YmxpYyB3ZWJydGM6
OkNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAg
IENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyKExpYldlYlJUQ01lZGlhRW5kcG9pbnQg
JmVuZHBvaW50KSA6IG1fZW5kcG9pbnQoZW5kcG9pbnQpIHsgfQorICAgICAgICB2b2lkIE9uU3Vj
Y2Vzcyh3ZWJydGM6OlNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSogc2Vzc2lvbkRlc2NyaXB0
aW9uKSBmaW5hbCB7IG1fZW5kcG9pbnQuY3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVk
KHNlc3Npb25EZXNjcmlwdGlvbik7IH0KKyAgICAgICAgdm9pZCBPbkZhaWx1cmUoY29uc3Qgc3Rk
OjpzdHJpbmcmIGVycm9yKSBmaW5hbCB7IG1fZW5kcG9pbnQuY3JlYXRlU2Vzc2lvbkRlc2NyaXB0
aW9uRmFpbGVkKGVycm9yKTsgfQorCisgICAgICAgIGludCBBZGRSZWYoKSBjb25zdCB7IHJldHVy
biBtX2VuZHBvaW50LkFkZFJlZigpOyB9CisgICAgICAgIGludCBSZWxlYXNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmRwb2ludC5SZWxlYXNlKCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQmIG1fZW5kcG9pbnQ7CisgICAgfTsKKworICAgIGNsYXNzIFNl
dExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgOiBwdWJsaWMgd2VicnRjOjpTZXRTZXNz
aW9uRGVzY3JpcHRpb25PYnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICBTZXRMb2NhbFNl
c3Npb25EZXNjcmlwdGlvbk9ic2VydmVyKExpYldlYlJUQ01lZGlhRW5kcG9pbnQgJmVuZHBvaW50
KSA6IG1fZW5kcG9pbnQoZW5kcG9pbnQpIHsgfQorICAgICAgICB2b2lkIE9uU3VjY2VzcygpIGZp
bmFsIHsgbV9lbmRwb2ludC5zZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCgpOyB9
CisgICAgICAgIHZvaWQgT25GYWlsdXJlKGNvbnN0IHN0ZDo6c3RyaW5nJiBlcnJvcikgZmluYWwg
eyBtX2VuZHBvaW50LnNldExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGVycm9yKTsgfQor
CisgICAgICAgIGludCBBZGRSZWYoKSBjb25zdCB7IHJldHVybiBtX2VuZHBvaW50LkFkZFJlZigp
OyB9CisgICAgICAgIGludCBSZWxlYXNlKCkgY29uc3QgeyByZXR1cm4gbV9lbmRwb2ludC5SZWxl
YXNlKCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIExpYldlYlJUQ01lZGlhRW5kcG9pbnQm
IG1fZW5kcG9pbnQ7CisgICAgfTsKKworICAgIGNsYXNzIFNldFJlbW90ZVNlc3Npb25EZXNjcmlw
dGlvbk9ic2VydmVyIDogcHVibGljIHdlYnJ0Yzo6U2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2
ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgU2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uT2Jz
ZXJ2ZXIoTGliV2ViUlRDTWVkaWFFbmRwb2ludCAmZW5kcG9pbnQpIDogbV9lbmRwb2ludChlbmRw
b2ludCkgeyB9CisgICAgICAgIHZvaWQgT25TdWNjZXNzKCkgZmluYWwgeyBtX2VuZHBvaW50LnNl
dFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCgpOyB9CisgICAgICAgIHZvaWQgT25G
YWlsdXJlKGNvbnN0IHN0ZDo6c3RyaW5nJiBlcnJvcikgZmluYWwgeyBtX2VuZHBvaW50LnNldFJl
bW90ZVNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZChlcnJvcik7IH0KKworICAgICAgICBpbnQgQWRk
UmVmKCkgY29uc3QgeyByZXR1cm4gbV9lbmRwb2ludC5BZGRSZWYoKTsgfQorICAgICAgICBpbnQg
UmVsZWFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kcG9pbnQuUmVsZWFzZSgpOyB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBMaWJXZWJSVENNZWRpYUVuZHBvaW50JiBtX2VuZHBvaW50OworICAg
IH07CisKKyAgICBjbGFzcyBTdGF0c0NvbGxlY3RvciA6IHB1YmxpYyBSZWZDb3VudGVkPFN0YXRz
Q29sbGVjdG9yPiwgcHVibGljIHdlYnJ0Yzo6UlRDU3RhdHNDb2xsZWN0b3JDYWxsYmFjayB7Cisg
ICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUmVmPFN0YXRzQ29sbGVjdG9yPiBjcmVhdGUoTGli
V2ViUlRDTWVkaWFFbmRwb2ludCYgZW5kcG9pbnQsIFBlZXJDb25uZWN0aW9uOjpTdGF0c1Byb21p
c2UmJiBwcm9taXNlLCBNZWRpYVN0cmVhbVRyYWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRSZWYo
KiBuZXcgU3RhdHNDb2xsZWN0b3IoZW5kcG9pbnQsIFdURk1vdmUocHJvbWlzZSksIHRyYWNrKSk7
IH0KKyAgICBwcml2YXRlOgorICAgICAgICBTdGF0c0NvbGxlY3RvcihMaWJXZWJSVENNZWRpYUVu
ZHBvaW50JiwgUGVlckNvbm5lY3Rpb246OlN0YXRzUHJvbWlzZSYmLCBNZWRpYVN0cmVhbVRyYWNr
Kik7CisKKyAgICAgICAgLy8gd2VicnRjOjpSVENTdGF0c0NvbGxlY3RvckNhbGxiYWNrIEFQSQor
ICAgICAgICBpbnQgQWRkUmVmKCkgY29uc3QgZmluYWwgeyByZWYoKTsgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4ocmVmQ291bnQoKSk7IH0KKyAgICAgICAgaW50IFJlbGVhc2UoKSBjb25zdCBmaW5h
bCB7IGRlcmVmKCk7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlZkNvdW50KCkpOyB9CisgICAg
ICAgIHZvaWQgT25TdGF0c0RlbGl2ZXJlZChjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8Y29uc3Qg
d2VicnRjOjpSVENTdGF0c1JlcG9ydD4mKSBmaW5hbDsKKworICAgICAgICBMaWJXZWJSVENNZWRp
YUVuZHBvaW50JiBtX2VuZHBvaW50OworICAgICAgICBQZWVyQ29ubmVjdGlvbjo6U3RhdHNQcm9t
aXNlIG1fcHJvbWlzZTsKKyAgICAgICAgU3RyaW5nIG1faWQ7CisgICAgfTsKKworICAgIExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CisgICAg
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IG1fYmFj
a2VuZDsKKworICAgIENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIG1fY3JlYXRlU2Vz
c2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXI7CisgICAgU2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25P
YnNlcnZlciBtX3NldExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXI7CisgICAgU2V0UmVt
b3RlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgbV9zZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRp
b25PYnNlcnZlcjsKKworICAgIGJvb2wgbV9pc0luaXRpYXRvciB7IGZhbHNlIH07CisKKyAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6SWNlQ2FuZGlkYXRlSW50ZXJmYWNlPj4gbV9w
ZW5kaW5nQ2FuZGlkYXRlczsKKyAgICBWZWN0b3I8UmVmPFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZT4+IG1fdmlkZW9Tb3VyY2VzOworICAgIFZlY3RvcjxSZWY8U3RhdHNDb2xsZWN0b3I+PiBt
X3N0YXRzQ29sbGVjdG9yczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShMSUJXRUJSVENfRU5EUE9JTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2JjOGMxNGRi
MmYwMjYwYWU5ZTk0MjI0ODU5NmYyZDg2OTAyNzMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmNwcApAQCAtMCwwICsxLDE3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
cmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKKworI2lmIEVOQUJMRShMSUJXRUJSVENfRU5E
UE9JTlQpCisKKyNpbmNsdWRlICJJY2VDYW5kaWRhdGUuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmgiCisjaW5jbHVkZSAiTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaCIK
KyNpbmNsdWRlICJSVENJY2VDYW5kaWRhdGUuaCIKKyNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIlJUQ1J0cFJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ+IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZChSVENQZWVy
Q29ubmVjdGlvbiYgcGVlckNvbm5lY3Rpb24pCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+KG5ldyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQocGVlckNvbm5lY3Rpb24pKTsKK30KKworQ3JlYXRlUGVlckNvbm5lY3Rpb25CYWNrZW5kIFBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kOworCitMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkxpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZChSVENQZWVyQ29ubmVjdGlvbiYgcGVlckNvbm5lY3Rpb24pCisg
ICAgOiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQocGVlckNvbm5lY3Rpb24pCisgICAgLCBtX2VuZHBv
aW50KExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZSgqdGhpcykpCit7Cit9CisKK3N0YXRp
YyB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb25Gcm9tTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24oTWVkaWFFbmRwb2ludENvbmZp
Z3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gcnRjQ29uZmlndXJhdGlvbih3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uVHlwZTo6a0FnZ3Jlc3NpdmUpOwor
CisgICAgaWYgKGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5ID09IFBlZXJDb25uZWN0
aW9uU3RhdGVzOjpJY2VUcmFuc3BvcnRQb2xpY3k6OlJlbGF5KQorICAgICAgICBydGNDb25maWd1
cmF0aW9uLnR5cGUgPSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprUmVsYXk7CisK
KyAgICBpZiAoY29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kgPT0gUGVlckNvbm5lY3Rpb25TdGF0
ZXM6OkJ1bmRsZVBvbGljeTo6TWF4QnVuZGxlKQorICAgICAgICBydGNDb25maWd1cmF0aW9uLmJ1
bmRsZV9wb2xpY3kgPSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprQnVuZGxlUG9s
aWN5TWF4QnVuZGxlOworICAgIGVsc2UgaWYgKGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5ID09
IFBlZXJDb25uZWN0aW9uU3RhdGVzOjpCdW5kbGVQb2xpY3k6Ok1heENvbXBhdCkKKyAgICAgICAg
cnRjQ29uZmlndXJhdGlvbi5idW5kbGVfcG9saWN5ID0gd2VicnRjOjpQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6a0J1bmRsZVBvbGljeU1heENvbXBhdDsKKworICAgIGZvciAoYXV0byYgc2VydmVy
IDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7CisgICAgICAgIHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OkljZVNlcnZlciBpY2VTZXJ2ZXI7CisgICAgICAgIGljZVNlcnZlci51
c2VybmFtZSA9IHNlcnZlci51c2VybmFtZS51dGY4KCkuZGF0YSgpOworICAgICAgICBpY2VTZXJ2
ZXIucGFzc3dvcmQgPSBzZXJ2ZXIuY3JlZGVudGlhbC51dGY4KCkuZGF0YSgpOworICAgICAgICBm
b3IgKGF1dG8mIHVybCA6IHNlcnZlci51cmxzKQorICAgICAgICAgICAgaWNlU2VydmVyLnVybHMu
cHVzaF9iYWNrKHsgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkgfSk7CisgICAgICAgIHJ0Y0Nv
bmZpZ3VyYXRpb24uc2VydmVycy5wdXNoX2JhY2soV1RGTW92ZShpY2VTZXJ2ZXIpKTsKKyAgICB9
CisKKyAgICByZXR1cm4gcnRjQ29uZmlndXJhdGlvbjsKK30KKwordm9pZCBMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6OnNldENvbmZpZ3VyYXRpb24oTWVkaWFFbmRwb2ludENvbmZpZ3Vy
YXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIG1fZW5kcG9pbnQtPmJhY2tlbmQoKS5TZXRD
b25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25Gcm9tTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24o
V1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6Z2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayogdHJhY2ssIFBlZXJDb25uZWN0
aW9uOjpTdGF0c1Byb21pc2UmJiBwcm9taXNlKQoreworICAgIG1fZW5kcG9pbnQtPmdldFN0YXRz
KHRyYWNrLCBXVEZNb3ZlKHByb21pc2UpKTsKK30KKwordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmRvU2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uKQoreworICAgIG1fZW5kcG9pbnQtPmRvU2V0TG9jYWxEZXNjcmlwdGlvbihk
ZXNjcmlwdGlvbik7CisgICAgaWYgKCFtX2lzTG9jYWxEZXNjcmlwdGlvblNldCkgeworICAgICAg
ICBpZiAobV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KQorICAgICAgICAgICAgbV9lbmRwb2ludC0+
YWRkUGVuZGluZ0ljZUNhbmRpZGF0ZXMoKTsKKyAgICAgICAgbV9pc0xvY2FsRGVzY3JpcHRpb25T
ZXQgPSB0cnVlOworICAgIH0KK30KKwordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmRvU2V0UmVtb3RlRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbikKK3sKKyAgICBtX2VuZHBvaW50LT5kb1NldFJlbW90ZURlc2NyaXB0aW9uKGRlc2NyaXB0
aW9uKTsKKyAgICBpZiAoIW1faXNSZW1vdGVEZXNjcmlwdGlvblNldCkgeworICAgICAgICBpZiAo
bV9pc0xvY2FsRGVzY3JpcHRpb25TZXQpCisgICAgICAgICAgICBtX2VuZHBvaW50LT5hZGRQZW5k
aW5nSWNlQ2FuZGlkYXRlcygpOworICAgICAgICBtX2lzUmVtb3RlRGVzY3JpcHRpb25TZXQgPSB0
cnVlOworICAgIH0KK30KKwordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRv
Q3JlYXRlT2ZmZXIoUlRDT2ZmZXJPcHRpb25zJiYpCit7CisgICAgbV9lbmRwb2ludC0+ZG9DcmVh
dGVPZmZlcigpOworfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9D
cmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQoreworICAgIG1fZW5kcG9pbnQtPmRvQ3Jl
YXRlQW5zd2VyKCk7Cit9CisKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b1N0b3AoKQoreworICAgIG1fZW5kcG9pbnQtPnN0b3AoKTsKK30KKwordm9pZCBMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvQWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSYg
Y2FuZGlkYXRlKQoreworICAgIHdlYnJ0Yzo6U2RwUGFyc2VFcnJvciBlcnJvcjsKKyAgICBpbnQg
c2RwTUxpbmVJbmRleCA9IGNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KCkgPyBjYW5kaWRhdGUuc2Rw
TUxpbmVJbmRleCgpLnZhbHVlKCkgOiAwOworICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6Oklj
ZUNhbmRpZGF0ZUludGVyZmFjZT4gcnRjQ2FuZGlkYXRlKHdlYnJ0Yzo6Q3JlYXRlSWNlQ2FuZGlk
YXRlKGNhbmRpZGF0ZS5zZHBNaWQoKS51dGY4KCkuZGF0YSgpLCBzZHBNTGluZUluZGV4LCBjYW5k
aWRhdGUuY2FuZGlkYXRlKCkudXRmOCgpLmRhdGEoKSwgJmVycm9yKSk7CisKKyAgICBpZiAoIXJ0
Y0NhbmRpZGF0ZSkgeworICAgICAgICBTdHJpbmcgbWVzc2FnZShlcnJvci5kZXNjcmlwdGlvbi5k
YXRhKCksIGVycm9yLmRlc2NyaXB0aW9uLnNpemUoKSk7CisgICAgICAgIGFkZEljZUNhbmRpZGF0
ZUZhaWxlZChFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgV1RGTW92ZShtZXNzYWdlKSB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIGxpYndlYnJ0YyBkb2VzIG5vdCBsaWtl
IHRoYXQgaWNlIGNhbmRpZGF0ZXMgYXJlIHNldCBiZWZvcmUgdGhlIGRlc2NyaXB0aW9uLgorICAg
IGlmICghbV9pc0xvY2FsRGVzY3JpcHRpb25TZXQgfHwgIW1faXNSZW1vdGVEZXNjcmlwdGlvblNl
dCkKKyAgICAgICAgbV9lbmRwb2ludC0+c3RvcmVJY2VDYW5kaWRhdGUoV1RGTW92ZShydGNDYW5k
aWRhdGUpKTsKKyAgICBlbHNlIGlmICghbV9lbmRwb2ludC0+YmFja2VuZCgpLkFkZEljZUNhbmRp
ZGF0ZShydGNDYW5kaWRhdGUuZ2V0KCkpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICBhZGRJY2VDYW5kaWRhdGVGYWlsZWQoRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGFwcGx5IHRoZSByZWNlaXZlZCBjYW5kaWRhdGUi
KSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhZGRJY2VDYW5kaWRhdGVTdWNjZWVk
ZWQoKTsKK30KKwordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om1hcmtBc05l
ZWRpbmdOZWdvdGlhdGlvbigpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzCit9CisK
K1JlZjxSVENSdHBSZWNlaXZlcj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVh
dGVSZWNlaXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRy
YWNrSWQpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgLy8gRklYTUU6IFdlIG5l
ZWQgdG8gY3JlYXRlIGEgc291cmNlIHRoYXQgd2lsbCBnZXQgZnVlbGVkIG9uY2Ugd2Ugd2lsbCBy
ZWNlaXZlIE9uQWRkU3RyZWFtLgorICAgIC8vIEZvciB0aGUgbW9tZW50LCB3ZSBjcmVhdGUgYW4g
ZW1wdHkgb25lLgorICAgIGF1dG8gcmVtb3RlVHJhY2tQcml2YXRlID0gTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU6OmNyZWF0ZShSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZShudWxs
cHRyLCBTdHJpbmcodHJhY2tJZCkpKTsKKyAgICBhdXRvIHJlbW90ZVRyYWNrID0gTWVkaWFTdHJl
YW1UcmFjazo6Y3JlYXRlKCptX3BlZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgV1RGTW92ZShyZW1vdGVUcmFja1ByaXZhdGUpKTsKKworICAgIHJldHVybiBSVENSdHBSZWNl
aXZlcjo6Y3JlYXRlKFdURk1vdmUocmVtb3RlVHJhY2spKTsKK30KKworc3RkOjp1bmlxdWVfcHRy
PFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpj
cmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgUlRDRGF0YUNoYW5u
ZWxJbml0JikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKExJQldF
QlJUQ19FTkRQT0lOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUwMjkzOGY2YzU2ZDg4NDEyYzM4ODhmYjYwYWIz
NmE5NTEyYWYyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCkBAIC0w
LDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShMSUJXRUJSVENfRU5EUE9JTlQpCisKKyNpbmNsdWRl
ICJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBMaWJXZWJSVENNZWRpYUVuZHBvaW50OworY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CitjbGFzcyBS
VENTZXNzaW9uRGVzY3JpcHRpb247CisKK2NsYXNzIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZCBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQgeworcHVibGljOgorICAg
IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZChSVENQZWVyQ29ubmVjdGlvbiYpOworCitw
cml2YXRlOgorICAgIHZvaWQgZG9DcmVhdGVPZmZlcihSVENPZmZlck9wdGlvbnMmJikgZmluYWw7
CisgICAgdm9pZCBkb0NyZWF0ZUFuc3dlcihSVENBbnN3ZXJPcHRpb25zJiYpIGZpbmFsOworICAg
IHZvaWQgZG9TZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYpIGZpbmFs
OworICAgIHZvaWQgZG9TZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24m
KSBmaW5hbDsKKyAgICB2b2lkIGRvQWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSYpIGZp
bmFsOworICAgIHZvaWQgZG9TdG9wKCkgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ0Rh
dGFDaGFubmVsSGFuZGxlcj4gY3JlYXRlRGF0YUNoYW5uZWxIYW5kbGVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYpIGZpbmFsOworCisgICAgUmVmPFJUQ1J0cFJlY2Vp
dmVyPiBjcmVhdGVSZWNlaXZlcihjb25zdCBTdHJpbmcmIHRyYW5zY2VpdmVyTWlkLCBjb25zdCBT
dHJpbmcmIHRyYWNrS2luZCwgY29uc3QgU3RyaW5nJiB0cmFja0lkKTsKKworICAgIHZvaWQgc2V0
Q29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbiYmKSBmaW5hbDsKKworICAg
IHZvaWQgZ2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayosIFBlZXJDb25uZWN0aW9uOjpTdGF0c1By
b21pc2UmJik7CisKKyAgICBmcmllbmQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDsKKyAgICBSVENQ
ZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fcGVlckNvbm5lY3Rpb247IH0K
KworICAgIC8vIEZJWE1FOiBBUEkgdG8gaW1wbGVtZW50IGZvciByZWFsCisgICAgUmVmUHRyPFJU
Q1Nlc3Npb25EZXNjcmlwdGlvbj4gbG9jYWxEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50
TG9jYWxEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBS
ZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nTG9jYWxEZXNjcmlwdGlvbigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIFJlZlB0cjxSVENTZXNzaW9uRGVz
Y3JpcHRpb24+IHJlbW90ZURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0
cjsgfQorICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IGN1cnJlbnRSZW1vdGVEZXNj
cmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBSZWZQdHI8UlRD
U2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5h
bCB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4g
Z2V0UmVtb3RlU3RyZWFtcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorCisgICAgdm9p
ZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYs
IERPTVByb21pc2U8dm9pZD4mJikgZmluYWwgeyB9CisKKyAgICBib29sIGlzTmVnb3RpYXRpb25O
ZWVkZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgbWFya0FzTmVl
ZGluZ05lZ290aWF0aW9uKCkgZmluYWw7CisgICAgdm9pZCBjbGVhck5lZ290aWF0aW9uTmVlZGVk
U3RhdGUoKSBmaW5hbCB7IH0KKworICAgIHZvaWQgZW11bGF0ZVBsYXRmb3JtRXZlbnQoY29uc3Qg
U3RyaW5nJikgZmluYWwgeyB9CisKK3ByaXZhdGU6CisgICAgUmVmPExpYldlYlJUQ01lZGlhRW5k
cG9pbnQ+IG1fZW5kcG9pbnQ7CisgICAgYm9vbCBtX2lzTG9jYWxEZXNjcmlwdGlvblNldCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2lzUmVtb3RlRGVzY3JpcHRpb25TZXQgeyBmYWxzZSB9OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKExJQldFQlJUQ19F
TkRQT0lOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA5ODk5OTIyODI1NzRjZmFiYjY1NGY2N2MxMzFkNTcyZmYyNmVlMTg2Li4y
NDk1Yjc0Mjg2NTk1MTkzMjk4MDYwZmU4YjBlZjdkYzg0NmM3M2VkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTA4LDYgKzE1
MDgsMTggQEAKIAkJNDA5RUJEQzUxNkI3RjNDQTAwQ0JBM0ZDIC8qIEpTQ1NTRm9udEZhY2VMb2Fk
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDA5RUJEQzQxNkI3RjNDQTAwQ0JBM0ZDIC8qIEpTQ1NTRm9udEZhY2VMb2FkRXZlbnQuY3BwICov
OyB9OwogCQk0MEVDQUU3RTE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDBFQ0FFN0QxNkI4QjY3MjAw
QzM2MTAzIC8qIEpTRE9NRXJyb3IuaCAqLzsgfTsKIAkJNDBFQ0FFODExNkI4QjY4QTAwQzM2MTAz
IC8qIEpTRE9NRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDBFQ0FFODAxNkI4QjY4QTAwQzM2MTAzIC8qIEpTRE9NRXJyb3IuY3BwICovOyB9
OworCQk0MTAyMzEzODFFMzQ3QjI2MDAzRENEMzIgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAyMzEz
MzFFMzQ3QUVBMDAzRENEMzIgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgKi87IH07CisJ
CTQxMDIzMTM5MUUzNDdCMjYwMDNEQ0QzMiAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEw
MjMxMzQxRTM0N0FFQTAwM0RDRDMyIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAgKi87IH07CisJCTQxMDIzMTNBMUUzNDdCMjkwMDNEQ0QzMiAvKiBMaWJXZWJSVENNZWRpYUVu
ZHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTAyMzEzNTFFMzQ3QUVBMDAzRENEMzIgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oICovOyB9
OworCQk0MTAyMzEzQjFFMzQ3QjI5MDAzRENEMzIgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTAyMzEzNjFFMzQ3QUVBMDAzRENEMzIgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmggKi87IH07CisJCTQxMDIzMTQwMUUzNDdCMzEwMDNEQ0QzMiAvKiBMaWJXZWJSVENNYWNyb3Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDIzMTND
MUUzNDdCMkEwMDNEQ0QzMiAvKiBMaWJXZWJSVENNYWNyb3MuaCAqLzsgfTsKKwkJNDEwMjMxNDEx
RTM0N0IzMTAwM0RDRDMyIC8qIExpYldlYlJUQ1V0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDIzMTNEMUUzNDdCMkEwMDNEQ0QzMiAvKiBM
aWJXZWJSVENVdGlscy5jcHAgKi87IH07CisJCTQxMDIzMTQyMUUzNDdCMzEwMDNEQ0QzMiAvKiBM
aWJXZWJSVENVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEwMjMxM0UxRTM0N0IyQTAwM0RDRDMyIC8qIExpYldlYlJUQ1V0aWxzLmggKi87IH07
CisJCTQxMDIzMTQzMUUzNDdCMzEwMDNEQ0QzMiAvKiBSVENTdHJhdGVneS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMjMxM0YxRTM0N0IyQTAwM0RD
RDMyIC8qIFJUQ1N0cmF0ZWd5LmggKi87IH07CisJCTQxMDIzMTQ4MUUzNDg0Q0MwMDNEQ0QzMiAv
KiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMjMxNDQxRTM0ODRCRjAwM0RDRDMyIC8qIFJlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgKi87IH07CisJCTQxMDIzMTQ5MUUzNDg0Q0MwMDNE
Q0QzMiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDIzMTQ1MUUzNDg0QkYwMDNEQ0QzMiAvKiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLzsgfTsKKwkJNDEwMjMxNEExRTM0ODRDQzAw
M0RDRDMyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAyMzE0NjFFMzQ4NEJGMDAzRENEMzIg
LyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcCAqLzsgfTsKKwkJNDEwMjMxNEIxRTM0
ODRDQzAwM0RDRDMyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMjMxNDcxRTM0ODRCRjAwM0RD
RDMyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oICovOyB9OwogCQk0MTBCN0U3MjEw
NDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRG
IC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJNDEyMzA4MUIxMzhDNDI5NzAw
QkNDRkNBIC8qIFdlYkNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMTlCMUEwODI0NUU1QTAwMUU5QUJDIC8qIFdlYkNvcmUu
ZnJhbWV3b3JrICovOyB9OwogCQk0MTIzMDkxMzEzOEM0MkZGMDBCQ0NGQ0EgLyogSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMxIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1l
d29yayAqLzsgfTsKQEAgLTg2NTIsNiArODY2NCwxOCBAQAogCQk0MDlFQkRDNDE2QjdGM0NBMDBD
QkEzRkMgLyogSlNDU1NGb250RmFjZUxvYWRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDBFQ0FFN0QxNkI4QjY3MjAwQzM2MTAzIC8qIEpTRE9NRXJyb3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01FcnJvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MEVDQUU4MDE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01F
cnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUVycm9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEwMjMxMzMxRTM0N0FFQTAwM0RD
RDMyIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA7IHBhdGggPSBsaWJ3ZWJy
dGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxMDIzMTM0MUUzNDdBRUEwMDNEQ0QzMiAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTAy
MzEzNTFFMzQ3QUVBMDAzRENEMzIgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENNZWRpYUVuZHBvaW50Lmg7IHBhdGgg
PSBsaWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MTAyMzEzNjFFMzQ3QUVBMDAzRENEMzIgLyogTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTAyMzEz
QzFFMzQ3QjJBMDAzRENEMzIgLyogTGliV2ViUlRDTWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ01hY3Jvcy5oOyBwYXRoID0gbGlid2VicnRjL0xpYldl
YlJUQ01hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTAyMzEzRDFFMzQ3
QjJBMDAzRENEMzIgLyogTGliV2ViUlRDVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTGliV2ViUlRDVXRpbHMuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldl
YlJUQ1V0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEwMjMxM0UxRTM0
N0IyQTAwM0RDRDMyIC8qIExpYldlYlJUQ1V0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExpYldlYlJUQ1V0aWxzLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDVXRp
bHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEwMjMxM0YxRTM0N0IyQTAwM0RD
RDMyIC8qIFJUQ1N0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJU
Q1N0cmF0ZWd5Lmg7IHBhdGggPSBsaWJ3ZWJydGMvUlRDU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDEwMjMxNDQxRTM0ODRCRjAwM0RDRDMyIC8qIFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MTAyMzE0NTFFMzQ4NEJGMDAzRENEMzIgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTAyMzE0NjFF
MzQ4NEJGMDAzRENEMzIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMDIzMTQ3MUUzNDg0QkYwMDNE
Q0QzMiAvKiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VF
dmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01l
c3NhZ2VFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5
RUY3MUFEODIzMjgwMEI5MEEwRCAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVy
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjkz
RjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTUwNjQsNiArMTUwODgsNyBAQAogCQkwNzIyMUI0NjE3Q0VDMzI3MDA4
NDhFNTEgLyogbWVkaWFzdHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTQxMDIzMTMyMUUzNDdBQ0YwMDNEQ0QzMiAvKiBsaWJ3ZWJydGMgKi8sCiAJ
CQkJMDczNzk0RUQxOUVFMzY0MjAwRTVBMDQ1IC8qIERPTVVSTE1lZGlhU3RyZWFtLmNwcCAqLywK
IAkJCQkxNUZDQzlGRDFCNERGODU2MDBFNzIzMjYgLyogRE9NVVJMTWVkaWFTdHJlYW0uaCAqLywK
IAkJCQkwNzM3OTRFRTE5RUUzNjQyMDBFNUEwNDUgLyogRE9NVVJMTWVkaWFTdHJlYW0uaWRsICov
LApAQCAtMTUxODUsNiArMTUyMTAsNyBAQAogCQkwNzIyMUI5MjE3Q0YwQUQ0MDA4NDhFNTEgLyog
bWVkaWFzdHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTQxMDIzMTM3MUUzNDdCMEUwMDNEQ0QzMiAvKiBsaWJ3ZWJydGMgKi8sCiAJCQkJMDcyOUIx
NEQxN0NGQ0NBMDAwNEYxRDYwIC8qIG1hYyAqLywKIAkJCQkwN0Q2QTRGNjFCRjIzMDdEMDAxNzQx
NDYgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oICovLAogCQkJCTA3QjcxMTZBMUQ4
OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggKi8sCkBAIC0xNTI1NCw2ICsxNTI4MCwx
MCBAQAogCQkJCTA3RUU3NkVFMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYy5tbSAqLywKIAkJCQk0QTBGRkFBMzFBQUY1RUY2MDA2MjgwM0IgLyogUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgKi8sCiAJCQkJNEEwRkZBQTQxQUFGNUVGNjAwNjI4MDNC
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCAqLywKKwkJCQk0MTAyMzE0NDFFMzQ4
NEJGMDAzRENEMzIgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcCAqLywKKwkJCQk0
MTAyMzE0NTFFMzQ4NEJGMDAzRENEMzIgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgg
Ki8sCisJCQkJNDEwMjMxNDYxRTM0ODRCRjAwM0RDRDMyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRl
b1NvdXJjZS5jcHAgKi8sCisJCQkJNDEwMjMxNDcxRTM0ODRCRjAwM0RDRDMyIC8qIFJlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZS5oICovLAogCQkJCTA3RDYzNzNFMUJCMEIxMTMwMDI1NkNFOSAv
KiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oICovLAogCQkJCTA3RDYzNzNGMUJCMEIx
MTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSAqLywKIAkJCSk7
CkBAIC0xNjU1NSw2ICsxNjU4NSwyOCBAQAogCQkJcGF0aCA9IG1odG1sOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNDEwMjMxMzIxRTM0N0FDRjAwM0RDRDMyIC8qIGxpYndl
YnJ0YyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDEw
MjMxMzMxRTM0N0FFQTAwM0RDRDMyIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwICovLAor
CQkJCTQxMDIzMTM1MUUzNDdBRUEwMDNEQ0QzMiAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50Lmgg
Ki8sCisJCQkJNDEwMjMxMzQxRTM0N0FFQTAwM0RDRDMyIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5jcHAgKi8sCisJCQkJNDEwMjMxMzYxRTM0N0FFQTAwM0RDRDMyIC8qIExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBsaWJ3ZWJy
dGM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk0MTAyMzEzNzFFMzQ3QjBF
MDAzRENEMzIgLyogbGlid2VicnRjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQk0MTAyMzEzQzFFMzQ3QjJBMDAzRENEMzIgLyogTGliV2ViUlRDTWFjcm9z
LmggKi8sCisJCQkJNDEwMjMxM0QxRTM0N0IyQTAwM0RDRDMyIC8qIExpYldlYlJUQ1V0aWxzLmNw
cCAqLywKKwkJCQk0MTAyMzEzRTFFMzQ3QjJBMDAzRENEMzIgLyogTGliV2ViUlRDVXRpbHMuaCAq
LywKKwkJCQk0MTAyMzEzRjFFMzQ3QjJBMDAzRENEMzIgLyogUlRDU3RyYXRlZ3kuaCAqLywKKwkJ
CSk7CisJCQluYW1lID0gbGlid2VicnRjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIAkJNDE1MEY5RUQxMkI2RTA5OTAwMDhDODYwIC8qIHNoYWRvdyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNTExNiw2ICsyNTE2OCw3IEBACiAJCQkJ
QzU1OTJGNzgxQTkyQUEyODAwMUY4ODYyIC8qIENoYXJhY3RlclByb3BlcnRpZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk3QjhGRkQxMTZBRTdGOTYwMDM4Mzg4RCAvKiBDaGFyYWN0ZXJSZWZlcmVu
Y2VQYXJzZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEyQTBEMDA2QzFEMDBF
RjZGMjYgLyogQ2hhcnNldERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMDIzMTNCMUUzNDdC
MjkwMDNEQ0QzMiAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY1NUIzREIyMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRDYxOUEzMDgxNDRFMDBCRTAwNEJDMzAyIC8qIENoaWxkTGlz
dE11dGF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjIwMDk3N0QzQzAwMDU4
MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI1Njg0LDYgKzI1NzM3
LDcgQEAKIAkJCQk0QTBEQTJGRjEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDVDRUQyQTBBNDBCQjJDMDBDNUFGMzggLyogRm9y
bWF0QmxvY2tDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U2Q0JGQjE4N0YzNzA3MDBE
NDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTAyMzEzQTFF
MzQ3QjI5MDAzRENEMzIgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRjUwNjY0RjgxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTRDNzY3MDBDRTkyM0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzQTgwNjFFMUUwM0I1ODUwMDhBMUYyNiAvKiBKU0RvdWJsZVJhbmdl
LmggaW4gSGVhZGVycyAqLywKQEAgLTI1Nzg4LDYgKzI1ODQyLDcgQEAKIAkJCQlFNDQ2MTNBMjBD
RDYzMzEwMDBGQURBNzUgLyogSFRNTEF1ZGlvRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTg3MURDMUYwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxCYXNlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOUIyNERFOEUxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxCRElFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk0MTAyMzE0OTFFMzQ4NENDMDAzRENEMzIgLyogUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREUyQzBBMTUyQUM4MDBC
MTJBNjggLyogSFRNTEJvZHlFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjdBQTBB
MTU2OTc4MDAwQTQyMzQgLyogSFRNTEJSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgx
MzY5RDIwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxCdXR0b25FbGVtZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTI1OTY0LDYgKzI2MDE5LDcgQEAKIAkJCQk1MTk4RjdBRDFCQkREM0VCMDBFMkNDNUYg
LyogSURCVHJhbnNhY3Rpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzhFRjUzODFEQzE0
OUUyMDA4RjBDMzkgLyogSURCVHJhbnNhY3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
NzcwN0NCMDFFMjA1RUUzMDAwMDVCRjcgLyogQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQxMDIzMTQyMUUzNDdCMzEwMDNEQ0QzMiAvKiBMaWJXZWJSVENVdGls
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2MTAzQUYxQ0FEQkE3NzAwMTZCNEM3IC8qIElEQlZh
bHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTg1RkNCMDFCQjRDNEU4MDAxMjg5OEYgLyogSURC
VmVyc2lvbkNoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEE4MTRFMDFDNzMzOEVC
MDBCRjg1QUMgLyogSWRDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjYw
OTMsNiArMjYxNDksNyBAQAogCQkJCTFBRTk2QThEMUQxQTBEREQwMEI4Njc2OCAvKiBKU0FwcGxl
UGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTk2
QThGMUQxQTBEREQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUFFOTZBOTExRDFBMERERDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlTaGlwcGluZ0NvbnRh
Y3RTZWxlY3RlZEV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTAyMzE0QjFFMzQ4NENDMDAz
RENEMzIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUU5NkE5MzFEMUEwREREMDBCODY3NjggLyogSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2Vs
ZWN0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMxREIwOUQxQzEyMzAwMEJFMzI1
IC8qIEpTQXR0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFOUUxMkIwM0VFMTAwM0E1ODNB
IC8qIEpTQXVkaW9CdWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjYyNTEsNiArMjYzMDgsNyBA
QAogCQkJCTUxOEY1MDAyMTk0Q0FDM0EwMDgxQkFBRSAvKiBKU0dhbWVwYWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxOEY1MDA0MTk0Q0FDM0EwMDgxQkFBRSAvKiBKU0dhbWVwYWRCdXR0b24uaCBp
biBIZWFkZXJzICovLAogCQkJCUZFODBEQTY0MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTAyMzE0MDFFMzQ3QjMxMDAzRENEMzIgLyogTGli
V2ViUlRDTWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTgwREE2NjBFOUM0NzAzMDAwRDZG
NzUgLyogSlNHZW9wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQTdDMUYxODgzMjJG
QzAwQzk1NEI1IC8qIEpTR2VzdHVyZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDgyQjc1
MjExOThDQjZCMDBCRkIwMDUgLyogSlNIYXNoQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtMjY4NjgsNiArMjY5MjYsNyBAQAogCQkJCUNENTIwOUU0MUIwQkQ4MzgwMDc3MTg0RSAvKiBN
ZWRpYVBsYXllckVudW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzZGMEQwRTEyQjgxOTI3MDBD
MjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlERjlBRkQ3MjEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEwMjMxNDMxRTM0N0IzMTAwM0RDRDMy
IC8qIFJUQ1N0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREM4QjVBMzE4MDQ2MzQ3MDAx
NkU2ODUgLyogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNTA1MjRGNDFCNzEyRkY2MDA2OTZBQTkgLyogTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFNjBDRDY4MUE5
MDBGQURBNzUgLyogTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCBpbiBIZWFkZXJzICovLApAQCAt
Mjg4NjUsNiArMjg5MjQsNyBAQAogCQkJCUZEMzE2MDBGMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRp
b0xpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDEyMTJCMDI2NzYwMEMxQTM1
OSAvKiBBdWRpb05vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwMTUxMkIwMjY3NjAw
QzFBMzU5IC8qIEF1ZGlvTm9kZUlucHV0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMDIzMTRB
MUUzNDg0Q0MwMDNEQ0QzMiAvKiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQzMTYwMTcxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTm9kZU91dHB1
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAxQzEyQjAyNjc2MDBDMUEzNTkgLyogQXVk
aW9QYXJhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREY0QjcxNTFFMDBCN0U1MDBFMjM1QTIg
LyogQ0RNLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk1NTYsNiArMjk2MTYsNyBAQAogCQkJCUE4
MTM2OUQzMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MQnV0dG9uRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5M0YxOUFGRDA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTENhbnZhc0VsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThERjNGRDEwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxD
b2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMDIzMTQxMUUzNDdCMzEwMDNEQ0Qz
MiAvKiBMaWJXZWJSVENVdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdCMzg2NDEyMjg4
M0U5MDBCODFGRjggLyogSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0MzRTUxMEIxOERGOEYzNTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQk4MzEyMEM3MDFDNTZGM0Y2MDAxQ0IxMTIgLyogSFRNTERhdGFFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMzEyODYsNiArMzEzNDcsNyBAQAogCQkJCUQwMUEyN0FEMTBD
OUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTYyNkNERTBFMTE0MDQyNEMwMDFFNUE2OCAvKiBTcGF0aWFsTmF2aWdhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBQTJBNUFENTE2QTQ4NjE0MDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMDIzMTM5MUUzNDdCMjYwMDNEQ0QzMiAvKiBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUEyQTVB
RDMxNkE0ODYwRDAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpc0V2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUFBMkE1QUQxMTZBNDg2MDcwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUEyQTVBQ0QxNkE0ODVGQTAwOTc1QTI1IC8q
IFNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE2OTAsNiArMzE3
NTIsNyBAQAogCQkJCTgzN0I3RDIwMURDM0Y1NTAwMEQwNTFGQyAvKiBWYWxpZGF0aW9uQnViYmxl
SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODNDNDVCOEMxREMyQjY2NzAwODg3MUJBIC8qIFZh
bGlkYXRpb25CdWJibGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNUExNTQyNzEyNzk1MzRE
MDBEMEIwQzAgLyogVmFsaWRhdGlvbk1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDEw
MjMxNDgxRTM0ODRDQzAwM0RDRDMyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjBBRTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0
aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkQ1QTE4RjFDNTQ1OTIzMDBERTM0QTMgLyogVmlk
ZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFODNEQjEx
ODNDNDQwNjAwMzFFQUEzIC8qIFZpZGVvUGxheWJhY2tRdWFsaXR5LmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzE4MzksNiArMzE5MDIsNyBAQAogCQkJCUY1NUIzRERGMTI1MUYxMkQwMDNFRjI2OSAv
KiBXZWVrSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMxQjUwMEE0NEVGQzcw
MEY5OTJFMCAvKiBXaGVlbEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFMTk1MTZCMUI2
NTk4RDIwMERGNkVFRiAvKiBXaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNDEwMjMxMzgxRTM0N0IyNjAwM0RDRDMyIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkVFRUU1NUMxQjY2QTA0NzAwOEUyQ0JDIC8qIFdoZWVs
RXZlbnREZWx0YUZpbHRlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBRTMzNUYxMUFDQjA5
RTIwMEU0MDFFRiAvKiBXaGVlbEV2ZW50VGVzdFRyaWdnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM4MEY0NzMwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZmZm
YjBkZDRjZDI5ZGI0YmZmYzU4MDljMzNmYzhmY2EzZDVjYTc0My4uYWFlZDdhNmVmNTFlNGM2ZTcx
YTM5ZTJiYzBhNGM5ZmZlZDQzYjhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1TdHJhdGVnaWVzLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtU3RyYXRlZ2llc19oCi0jZGVm
aW5lIFBsYXRmb3JtU3RyYXRlZ2llc19oCisjcHJhZ21hIG9uY2UKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zMiw2ICszMSw5IEBAIGNsYXNzIEJsb2JSZWdpc3RyeTsKIGNsYXNzIENvb2tp
ZXNTdHJhdGVneTsKIGNsYXNzIExvYWRlclN0cmF0ZWd5OwogY2xhc3MgUGFzdGVib2FyZFN0cmF0
ZWd5OworI2lmIEVOQUJMRShMSUJXRUJSVENfRU5EUE9JTlQpCitjbGFzcyBSVENTdHJhdGVneTsK
KyNlbmRpZgogCiBjbGFzcyBQbGF0Zm9ybVN0cmF0ZWdpZXMgewogcHVibGljOgpAQCAtNDgsNyAr
NTAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2xvYWRlclN0cmF0ZWd5ID0gY3JlYXRlTG9h
ZGVyU3RyYXRlZ3koKTsKICAgICAgICAgcmV0dXJuIG1fbG9hZGVyU3RyYXRlZ3k7CiAgICAgfQot
ICAgIAorCiAgICAgUGFzdGVib2FyZFN0cmF0ZWd5KiBwYXN0ZWJvYXJkU3RyYXRlZ3koKQogICAg
IHsKICAgICAgICAgaWYgKCFtX3Bhc3RlYm9hcmRTdHJhdGVneSkKQEAgLTYzLDYgKzY1LDE1IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYmxvYlJlZ2lzdHJ5OwogICAgIH0KIAorI2lmIEVO
QUJMRShMSUJXRUJSVENfRU5EUE9JTlQpCisgICAgUlRDU3RyYXRlZ3kmIHJ0Y1N0cmF0ZWd5KCkK
KyAgICB7CisgICAgICAgIGlmICghbV9ydGNTdHJhdGVneSkKKyAgICAgICAgICAgIG1fcnRjU3Ry
YXRlZ3kgPSAmY3JlYXRlUlRDU3RyYXRlZ3koKTsKKyAgICAgICAgcmV0dXJuICptX3J0Y1N0cmF0
ZWd5OworICAgIH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1TdHJhdGVnaWVz
KCkKICAgICB7CkBAIC03NywxNiArODgsMjAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIExvYWRl
clN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpID0gMDsKICAgICB2aXJ0dWFsIFBhc3Rl
Ym9hcmRTdHJhdGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkgPSAwOwogICAgIHZpcnR1
YWwgQmxvYlJlZ2lzdHJ5KiBjcmVhdGVCbG9iUmVnaXN0cnkoKSA9IDA7CisjaWYgRU5BQkxFKExJ
QldFQlJUQ19FTkRQT0lOVCkKKyAgICB2aXJ0dWFsIFJUQ1N0cmF0ZWd5JiBjcmVhdGVSVENTdHJh
dGVneSgpID0gMDsKKyNlbmRpZgogCiAgICAgQ29va2llc1N0cmF0ZWd5KiBtX2Nvb2tpZXNTdHJh
dGVneSB7IH07CiAgICAgTG9hZGVyU3RyYXRlZ3kqIG1fbG9hZGVyU3RyYXRlZ3kgeyB9OwogICAg
IFBhc3RlYm9hcmRTdHJhdGVneSogbV9wYXN0ZWJvYXJkU3RyYXRlZ3kgeyB9OwogICAgIEJsb2JS
ZWdpc3RyeSogbV9ibG9iUmVnaXN0cnkgeyB9OworI2lmIEVOQUJMRShMSUJXRUJSVENfRU5EUE9J
TlQpCisgICAgUlRDU3RyYXRlZ3kqIG1fcnRjU3RyYXRlZ3kgeyBudWxscHRyIH07CisjZW5kaWYK
IH07CiAKIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtU3RyYXRlZ2llcyogcGxhdGZvcm1TdHJhdGVn
aWVzKCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBsYXRmb3JtU3RyYXRlZ2llcyhQbGF0Zm9y
bVN0cmF0ZWdpZXMqKTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8v
IFBsYXRmb3JtU3RyYXRlZ2llc19oCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWFjcm9zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWFjcm9zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNlYzJkNWJlMTExMmUxYjQwOGM2MzAyYzQ3
YjczYzQ4ZGQ1OTJlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNYWNyb3MuaApAQCAtMCwwICsxLDQ0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICog
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoTElCV0VCUlRDX0VORFBPSU5UKQorCisjaWYgUExBVEZPUk0oSU9TKQor
I2RlZmluZSBXRUJSVENfSU9TCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyNkZWZpbmUg
V0VCUlRDX01BQworI2VuZGlmCisKKyNkZWZpbmUgV0VCUlRDX1BPU0lYIDEKKyNkZWZpbmUgX0NP
TU1PTl9JTkNMVURFRF8KKworI2VuZGlmIC8vIEVOQUJMRShMSUJXRUJSVENfRU5EUE9JTlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODcyZGNlNGI5Mzg4YjQ3
MTAzM2ZiNTVmMGNjY2UwOWIxNTcxOGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcApAQCAt
MCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgorCisjaWYg
RU5BQkxFKExJQldFQlJUQ19FTkRQT0lOVCkKKworI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcGVlcmNv
bm5lY3Rpb25mYWN0b3J5Lmg+CisjaW5jbHVkZSA8d2VicnRjL2Jhc2UvcGh5c2ljYWxzb2NrZXRz
ZXJ2ZXIuaD4KKyNpbmNsdWRlIDx3ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3Iu
aD4KKyNpbmNsdWRlIDx3ZWJydGMvc2RrL29iamMvRnJhbWV3b3JrL0NsYXNzZXMvdmlkZW90b29s
Ym94dmlkZW9jb2RlY2ZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1
Y3QgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VI
YW5kbGVyIHsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IG5ldHdvcmtUaHJlYWQ7
CisgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiBzaWduYWxpbmdUaHJlYWQ7CisgICAg
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNl
PiBmYWN0b3J5OworICAgIGJvb2wgbmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIgeyBmYWxz
ZSB9OworcHJpdmF0ZToKKyAgICB2b2lkIE9uTWVzc2FnZShydGM6Ok1lc3NhZ2UqKTsKK307CisK
K3N0YXRpYyBpbmxpbmUgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyYgc3RhdGljRmFj
dG9yeUFuZFRocmVhZHMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQZWVyQ29ubmVj
dGlvbkZhY3RvcnlBbmRUaHJlYWRzPiBmYWN0b3J5QW5kVGhyZWFkczsKKyAgICByZXR1cm4gZmFj
dG9yeUFuZFRocmVhZHMuZ2V0KCk7Cit9CisKK3N0cnVjdCBOZXR3b3JrVGhyZWFkTWVzc2FnZURh
dGEgOiBwdWJsaWMgcnRjOjpNZXNzYWdlRGF0YSB7CisgICAgZXhwbGljaXQgTmV0d29ya1RocmVh
ZE1lc3NhZ2VEYXRhKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikgOiBmdW5jdGlvbihXVEZN
b3ZlKGZ1bmN0aW9uKSkgeyB9CisgICAgRnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbjsKK307CisK
K3ZvaWQgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkczo6T25NZXNzYWdlKHJ0Yzo6TWVz
c2FnZSogbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobWVzc2FnZS0+bWVzc2FnZV9pZCA9PSAxKTsK
KyAgICBzdGF0aWNfY2FzdDxOZXR3b3JrVGhyZWFkTWVzc2FnZURhdGEqPihtZXNzYWdlLT5wZGF0
YSktPmZ1bmN0aW9uKCk7Cit9CisKK3ZvaWQgY2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChGdW5j
dGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCit7CisgICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5k
VGhyZWFkcyYgdGhyZWFkcyA9IHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCk7CisgICAgdGhyZWFk
cy5uZXR3b3JrVGhyZWFkLT5Qb3N0KFJUQ19GUk9NX0hFUkUsICZ0aHJlYWRzLCAxLCBuZXcgTmV0
d29ya1RocmVhZE1lc3NhZ2VEYXRhKFdURk1vdmUoY2FsbGJhY2spKSk7Cit9CisKK3N0YXRpYyB2
b2lkIGluaXRpYWxpemVQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzKCkKK3sKKyAgICBh
dXRvJiBmYWN0b3J5QW5kVGhyZWFkcyA9IHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCk7CisKKyAg
ICBBU1NFUlQoIWZhY3RvcnlBbmRUaHJlYWRzLmZhY3RvcnkpOworCisgICAgYXV0byB0aHJlYWQg
PSBydGM6OlRocmVhZDo6Q3JlYXRlKCk7CisgICAgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1Ro
cmVhZCA9IGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyID8g
cnRjOjpUaHJlYWQ6OkNyZWF0ZVdpdGhTb2NrZXRTZXJ2ZXIoKSA6IHJ0Yzo6VGhyZWFkOjpDcmVh
dGUoKTsKKyAgICBhdXRvIHJlc3VsdCA9IGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQt
PlN0YXJ0KCk7CisgICAgQVNTRVJUKHJlc3VsdCk7CisKKyAgICBmYWN0b3J5QW5kVGhyZWFkcy5z
aWduYWxpbmdUaHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlKCk7CisgICAgcmVzdWx0ID0gZmFj
dG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLT5TdGFydCgpOworICAgIEFTU0VSVChyZXN1
bHQpOworCisgICAgZmFjdG9yeUFuZFRocmVhZHMuZmFjdG9yeSA9IHdlYnJ0Yzo6Q3JlYXRlUGVl
ckNvbm5lY3Rpb25GYWN0b3J5KGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQuZ2V0KCks
IGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQuZ2V0KCksIGZhY3RvcnlBbmRUaHJlYWRz
LnNpZ25hbGluZ1RocmVhZC5nZXQoKSwgbnVsbHB0ciwgbmV3IHdlYnJ0Yzo6VmlkZW9Ub29sYm94
VmlkZW9FbmNvZGVyRmFjdG9yeSgpICwgbmV3IHdlYnJ0Yzo6VmlkZW9Ub29sYm94VmlkZW9EZWNv
ZGVyRmFjdG9yeSgpKTsKKworICAgIEFTU0VSVChmYWN0b3J5QW5kVGhyZWFkcy5mYWN0b3J5KTsK
K30KKwordm9pZCBpbml0aWFsaXplTGliV2ViUlRDSW50ZXJuYWxzV2l0aFNvY2tldFNlcnZlcigp
Cit7CisgICAgc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKS5uZXR3b3JrVGhyZWFkV2l0aFNvY2tl
dFNlcnZlciA9IHRydWU7Cit9CisKK3dlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJm
YWNlJiBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKQoreworICAgIGlmICghc3RhdGljRmFjdG9yeUFu
ZFRocmVhZHMoKS5mYWN0b3J5KQorICAgICAgICBpbml0aWFsaXplUGVlckNvbm5lY3Rpb25GYWN0
b3J5QW5kVGhyZWFkcygpOworICAgIHJldHVybiAqc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKS5m
YWN0b3J5OworfQorCitzdGF0aWMgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rp
b25PYnNlcnZlciYgb2JzZXJ2ZXIsIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpCYXNpY1BvcnRB
bGxvY2F0b3I+JiYgcG9ydEFsbG9jYXRvcikKK3sKKyAgICBBU1NFUlQoc3RhdGljRmFjdG9yeUFu
ZFRocmVhZHMoKS5mYWN0b3J5KTsKKworICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U6OlJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOworICAgIC8vIEZJWE1FOiBXZSBtaWdodCB3YW50
IHRvIHB1dCBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiBoZXJlLgorCisgICAgcmV0dXJuIHN0YXRp
Y0ZhY3RvcnlBbmRUaHJlYWRzKCkuZmFjdG9yeS0+Q3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmln
LCBXVEZNb3ZlKHBvcnRBbGxvY2F0b3IpLCBudWxscHRyLCAmb2JzZXJ2ZXIpOworfQorCitydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVl
ckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlcikKK3sK
KyAgICBBU1NFUlQoc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKS5uZXR3b3JrVGhyZWFkV2l0aFNv
Y2tldFNlcnZlcik7CisKKyAgICBhdXRvJiBmYWN0b3J5QW5kVGhyZWFkcyA9IHN0YXRpY0ZhY3Rv
cnlBbmRUaHJlYWRzKCk7CisgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5mYWN0b3J5KQorICAg
ICAgICBpbml0aWFsaXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcygpOworCisgICAg
cmV0dXJuIGNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBudWxscHRyKTsKK30KKworcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBl
ZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIHJ0
Yzo6TmV0d29ya01hbmFnZXImIG5ldHdvcmtNYW5hZ2VyLCBydGM6OlBhY2tldFNvY2tldEZhY3Rv
cnkmIHBhY2tldFNvY2tldEZhY3RvcnkpCit7CisgICAgQVNTRVJUKCFzdGF0aWNGYWN0b3J5QW5k
VGhyZWFkcygpLm5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsKKworICAgIGF1dG8mIGZh
Y3RvcnlBbmRUaHJlYWRzID0gc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKTsKKyAgICBpZiAoIWZh
Y3RvcnlBbmRUaHJlYWRzLmZhY3RvcnkpCisgICAgICAgIGluaXRpYWxpemVQZWVyQ29ubmVjdGlv
bkZhY3RvcnlBbmRUaHJlYWRzKCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6QmFz
aWNQb3J0QWxsb2NhdG9yPiBwb3J0QWxsb2NhdG9yOworICAgIHN0YXRpY0ZhY3RvcnlBbmRUaHJl
YWRzKCkuc2lnbmFsaW5nVGhyZWFkLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdKCkg
eworICAgICAgICBwb3J0QWxsb2NhdG9yLnJlc2V0KG5ldyBjcmlja2V0OjpCYXNpY1BvcnRBbGxv
Y2F0b3IoJm5ldHdvcmtNYW5hZ2VyLCAmcGFja2V0U29ja2V0RmFjdG9yeSkpOworICAgIH0pOwor
CisgICAgcmV0dXJuIGNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXVEZNb3ZlKHBvcnRB
bGxvY2F0b3IpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKExJQldFQlJUQ19FTkRQT0lOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDE2MDc4ZTYzYTBhNTQxZDA1OTliNmJkZDQzZmJjOTkxNTAxMTYzMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENVdGlscy5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShMSUJXRUJSVENfRU5EUE9JTlQpCisKKyNpbmNsdWRlIDxXZWJDb3Jl
L0xpYldlYlJUQ01hY3Jvcy5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9iYXNlL3Njb3BlZF9yZWZfcHRy
Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIHJ0YyB7CitjbGFzcyBO
ZXR3b3JrTWFuYWdlcjsKK2NsYXNzIFBhY2tldFNvY2tldEZhY3Rvcnk7CitjbGFzcyBUaHJlYWQ7
Cit9CisKK25hbWVzcGFjZSB3ZWJydGMgeworY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50
ZXJmYWNlOworY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U7CitjbGFzcyBQZWVyQ29ubmVj
dGlvbk9ic2VydmVyOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgaW5pdGlhbGl6ZUxpYldlYlJUQ0ludGVybmFsc1dpdGhTb2NrZXRTZXJ2ZXIoKTsKKwor
d2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UmIHBlZXJDb25uZWN0aW9uRmFj
dG9yeSgpOworV0VCQ09SRV9FWFBPUlQgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25PYnNlcnZlciYsIHJ0Yzo6TmV0d29ya01hbmFnZXImLCBydGM6OlBhY2tldFNvY2tldEZh
Y3RvcnkmKTsKK1dFQkNPUkVfRVhQT1JUIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uT2JzZXJ2ZXImKTsKKworV0VCQ09SRV9FWFBPUlQgdm9pZCBjYWxsT25XZWJSVENOZXR3
b3JrVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShMSUJXRUJSVENfRU5EUE9JTlQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvUlRDU3RyYXRlZ3kuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9SVENTdHJhdGVn
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIzZGEyMjc1YjljOTI5NjJmN2ZjZDFmZWE2YzVkN2Q1ZDQ4MTE5NmYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvUlRDU3RyYXRlZ3kuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTElCV0VCUlRDX0VORFBPSU5UKQorCisjaW5jbHVkZSAi
V2ViQ29yZS9MaWJXZWJSVENNYWNyb3MuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYmFzZS9zY29wZWRf
cmVmX3B0ci5oPgorCituYW1lc3BhY2Ugd2VicnRjIHsKK2NsYXNzIFBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOworY2xhc3MgUGVlckNvbm5lY3Rpb25PYnNlcnZlcjsKK30KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBSVENTdHJhdGVneSB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVy
JikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+UlRDU3RyYXRlZ3koKSB7IH0KK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShMSUJXRUJSVENf
RU5EUE9JTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM0MjY3NGExNzRlZGEwNDBmOTA2NmJkZjY0ODUyOTQzOWYwYzQ3YmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcApAQCAtMCwwICsxLDIwOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCIKKworI2lmIEVOQUJMRShMSUJX
RUJSVENfRU5EUE9JTlQpCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJNZWRpYVNh
bXBsZUFWRk9iakMuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCisjaW5jbHVkZSAi
Q29yZU1lZGlhU29mdExpbmsuaCIKKyNpbmNsdWRlICJDb3JlVmlkZW9Tb2Z0TGluay5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U+IFJl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OlZpZGVvVHJhY2tJbnRlcmZhY2U+JiYgdmlkZW9UcmFjaywgU3RyaW5nJiYgdHJhY2tJZCkK
K3sKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gY29uZm9ybWVyT3B0aW9u
cyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAxLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Cisg
ICAgY29uc3QgT1NUeXBlIGltYWdlRm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQTsK
KyAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGltYWdlRm9ybWF0TnVtYmVyID0gYWRvcHRDRihD
Rk51bWJlckNyZWF0ZShudWxscHRyLCAga0NGTnVtYmVySW50VHlwZSwgICZpbWFnZUZvcm1hdCkp
OworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNvbmZvcm1lck9wdGlvbnMuZ2V0KCksIGtDVlBp
eGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LCBpbWFnZUZvcm1hdE51bWJlci5nZXQoKSk7Cisg
ICAgUGl4ZWxCdWZmZXJDb25mb3JtZXJDViBjb25mb3JtZXIoY29uZm9ybWVyT3B0aW9ucy5nZXQo
KSk7CisKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlKFdURk1vdmUodmlkZW9UcmFjayksIFdURk1vdmUodHJhY2tJZCksIGNvbmZvcm1l
ck9wdGlvbnMuZ2V0KCkpKTsKKyAgICBzb3VyY2UtPnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAg
IHJldHVybiBzb3VyY2U7Cit9CisKK1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6UmVhbHRp
bWVJbmNvbWluZ1ZpZGVvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJh
Y2tJbnRlcmZhY2U+JiYgdmlkZW9UcmFjaywgU3RyaW5nJiYgdmlkZW9UcmFja0lkLCBDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmIGNvbmZvcm1lck9wdGlvbnMpCisgICAgOiBSZWFsdGltZU1lZGlhU291
cmNlKFdURk1vdmUodmlkZW9UcmFja0lkKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6Vmlk
ZW8sIFN0cmluZygpKQorICAgICwgbV92aWRlb1RyYWNrKFdURk1vdmUodmlkZW9UcmFjaykpCisg
ICAgLCBtX2NvbmZvcm1lcihjb25mb3JtZXJPcHRpb25zKQoreworICAgIG1fY3VycmVudFNldHRp
bmdzLnNldFdpZHRoKDY0MCk7CisgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0SGVpZ2h0KDQ4MCk7
Cit9CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0Rh
dGEoKQoreworICAgIGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSB0cnVlOworICAgIGlmIChtX3ZpZGVvVHJhY2spCisgICAg
ICAgIG1fdmlkZW9UcmFjay0+QWRkT3JVcGRhdGVTaW5rKHRoaXMsIHJ0Yzo6VmlkZW9TaW5rV2Fu
dHMoKSk7Cit9CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzdG9wUHJvZHVj
aW5nRGF0YSgpCit7CisgICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxzZTsKKyAgICBpZiAobV92aWRlb1RyYWNr
KQorICAgICAgICBtX3ZpZGVvVHJhY2stPlJlbW92ZVNpbmsodGhpcyk7Cit9CisKK3ZvaWQgUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFt
ZSYgZnJhbWUpCit7CisgICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBidWZmZXIgPSBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKTsKKyAgICBD
VlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJl
Zj4oYnVmZmVyLT5uYXRpdmVfaGFuZGxlKCkpOworCisgICAgLy8gRklYTUU6IENvbnZlcnQgdGlt
aW5nIGluZm9ybWF0aW9uIGZyb20gVmlkZW9GcmFtZSB0byBDTVNhbXBsZVRpbWluZ0luZm8uCisg
ICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZ0luZm87CisgICAgdGltaW5nSW5mby5wcmVzZW50
YXRpb25UaW1lU3RhbXAgPSBrQ01UaW1lSW52YWxpZDsKKyAgICB0aW1pbmdJbmZvLmRlY29kZVRp
bWVTdGFtcCA9IGtDTVRpbWVJbnZhbGlkOworICAgIHRpbWluZ0luZm8uZHVyYXRpb24gPSBrQ01U
aW1lSW52YWxpZDsKKworICAgIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNj
cmlwdGlvbjsKKyAgICBPU1N0YXR1cyBvc3RhdHVzID0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9u
Q3JlYXRlRm9ySW1hZ2VCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKENWSW1hZ2VCdWZmZXJS
ZWYpcGl4ZWxCdWZmZXIsICZmb3JtYXREZXNjcmlwdGlvbik7CisgICAgaWYgKG9zdGF0dXMgIT0g
bm9FcnIpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBDTVZpZGVv
Rm9ybWF0RGVzY3JpcHRpb246ICVkIiwgb3N0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXI7CisgICAgb3N0YXR1cyA9IENN
U2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHlXaXRoSW1hZ2VCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgKENWSW1hZ2VCdWZmZXJSZWYpcGl4ZWxCdWZmZXIsIGZvcm1hdERlc2NyaXB0aW9uLCAmdGlt
aW5nSW5mbywgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKG9zdGF0dXMgIT0gbm9FcnIpIHsKKyAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHRoZSBzYW1wbGUgYnVmZmVyOiAlZCIs
IG9zdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIENGUmVsZWFzZShmb3JtYXRE
ZXNjcmlwdGlvbik7CisKKyAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHNhbXBsZSA9
IHNhbXBsZUJ1ZmZlcjsKKworICAgIC8vIEZvciB0aGUgbW9tZW50LCBqdXN0IHByZXRlbmQgZnJh
bWVzIHNob3VsZCBiZSByZW5kZXJlZCBhc2FwLgorICAgIENGQXJyYXlSZWYgYXR0YWNobWVudHNB
cnJheSA9IENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheShzYW1wbGVCdWZm
ZXIsIHRydWUpOworICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudChh
dHRhY2htZW50c0FycmF5KTsgKytpKSB7CisgICAgICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYg
YXR0YWNobWVudHMgPSAoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilDRkFycmF5R2V0VmFsdWVBdElu
ZGV4KGF0dGFjaG1lbnRzQXJyYXksIGkpOworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShh
dHRhY2htZW50cywga0NNU2FtcGxlQXR0YWNobWVudEtleV9EaXNwbGF5SW1tZWRpYXRlbHksIGtD
RkJvb2xlYW5UcnVlKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCB3aWR0aCA9IGZyYW1lLndpZHRo
KCk7CisgICAgdW5zaWduZWQgaGVpZ2h0ID0gZnJhbWUuaGVpZ2h0KCk7CisgICAgUmVmUHRyPFJl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjYWxs
T25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgc2Ft
cGxlID0gV1RGTW92ZShzYW1wbGUpLCB3aWR0aCwgaGVpZ2h0XSB7CisgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPnByb2Nlc3NOZXdTYW1wbGUoc2FtcGxlLmdldCgpLCB3aWR0aCwgaGVpZ2h0KTsKKyAg
ICB9KTsKK30KKwordm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnByb2Nlc3NOZXdT
YW1wbGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQg
aGVpZ2h0KQoreworICAgIG1fYnVmZmVyID0gc2FtcGxlOworICAgIGlmICh3aWR0aCAhPSBtX2N1
cnJlbnRTZXR0aW5ncy53aWR0aCgpIHx8IGhlaWdodCAhPSBtX2N1cnJlbnRTZXR0aW5ncy5oZWln
aHQoKSkgeworICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRXaWR0aCh3aWR0aCk7CisgICAg
ICAgIG1fY3VycmVudFNldHRpbmdzLnNldEhlaWdodChoZWlnaHQpOworICAgICAgICBzZXR0aW5n
c0RpZENoYW5nZSgpOworICAgIH0KKworICAgIG1lZGlhRGF0YVVwZGF0ZWQoTWVkaWFTYW1wbGVB
VkZPYmpDOjpjcmVhdGUoc2FtcGxlKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3SW1h
Z2UoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBDR0ltYWdlUmVmIGltYWdlLCBGbG9hdFJlY3Qm
IHJlY3QpCit7CisgICAgYXV0byYgY29udGV4dCA9IGltYWdlQnVmZmVyLmNvbnRleHQoKTsKKyAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29u
dGV4dC50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7CisgICAg
Y29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICBjb250ZXh0LnNldEltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7CisgICAgSW50UmVjdCBwYWludFJl
Y3QoSW50UG9pbnQoMCwgMCksIEludFNpemUocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7
CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIENHUmVj
dE1ha2UoMCwgMCwgcGFpbnRSZWN0LndpZHRoKCksIHBhaW50UmVjdC5oZWlnaHQoKSksIGltYWdl
KTsKK30KKworUmVmUHRyPEltYWdlPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmN1cnJl
bnRGcmFtZUltYWdlKCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIEZsb2F0UmVjdCByZWN0KDAsIDAsIG1fY3VycmVudFNldHRpbmdzLndpZHRo
KCksIG1fY3VycmVudFNldHRpbmdzLmhlaWdodCgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyZWN0LnNpemUoKSwg
VW5hY2NlbGVyYXRlZCk7CisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IHN0YXRp
Y19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9i
dWZmZXIuZ2V0KCkpKTsKKyAgICBhdXRvIGltYWdlID0gbV9jb25mb3JtZXIuY3JlYXRlSW1hZ2VG
cm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpOworICAgIGRyYXdJbWFnZSgqaW1hZ2VCdWZmZXIs
IGltYWdlLmdldCgpLCByZWN0KTsKKworICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9J
bWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSk7Cit9CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoY29udGV4dC5wYWludGlu
Z0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9idWZmZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBTaGFyZSBtb3JlIGNvZGUgd2l0aCBjdXJyZW50
RnJhbWVJbWFnZQorICAgIEZsb2F0UmVjdCBmdWxsUmVjdCgwLCAwLCBtX2N1cnJlbnRTZXR0aW5n
cy53aWR0aCgpLCBtX2N1cnJlbnRTZXR0aW5ncy5oZWlnaHQoKSk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZnVsbFJl
Y3Quc2l6ZSgpLCBVbmFjY2VsZXJhdGVkKTsKKyAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVm
ZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oQ01TYW1wbGVCdWZmZXJHZXRJbWFn
ZUJ1ZmZlcihtX2J1ZmZlci5nZXQoKSkpOworICAgIGF1dG8gaW1hZ2UgPSBtX2NvbmZvcm1lci5j
cmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcik7CisgICAgZHJhd0ltYWdlKCpp
bWFnZUJ1ZmZlciwgaW1hZ2UuZ2V0KCksIGZ1bGxSZWN0KTsKKworICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICBjb250ZXh0LnNldEltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7CisgICAgSW50UmVjdCBwYWludFJl
Y3QoSW50UG9pbnQoMCwgMCksIEludFNpemUocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7
CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpLCByZWN0KTsKK30KKworUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXM+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6Y2FwYWJpbGl0aWVzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9jYXBhYmlsaXRpZXM7Cit9CisKK2NvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzZXR0aW5ncygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOworfQorCitSZWFsdGltZU1l
ZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZTo6c3VwcG9ydGVkQ29uc3RyYWludHMoKQoreworICAgIHJldHVybiBtX3N1cHBvcnRlZENvbnN0
cmFpbnRzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
TElCV0VCUlRDX0VORFBPSU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZiOGJjNzlkYTZhNDc2NzMzN2Q2ZTMxMmI1ZjVjOTNhMTYwYTliOTIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisg
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoTElCV0VCUlRDX0VORFBPSU5UKQorCisjaW5jbHVkZSAiTGliV2ViUlRDTWFjcm9z
LmgiCisjaW5jbHVkZSAiUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgorI2luY2x1ZGUgIlJlYWx0
aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJm
YWNlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBvcGFx
dWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlIGZpbmFsIDogcHVibGljIFJl
YWx0aW1lTWVkaWFTb3VyY2UsIHByaXZhdGUgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8d2VicnRj
OjpWaWRlb0ZyYW1lPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2U+IGNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNr
SW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CisgICAgflJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZSgpIHsgc3RvcFByb2R1Y2luZ0RhdGEoKTsgfQorCitwcml2YXRlOgorICAgIFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50
ZXJmYWNlPiYmLCBTdHJpbmcmJiwgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZik7CisKKyAgICB2b2lk
IHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOworICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEo
KSAgZmluYWw7CisKKyAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4g
Y2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOworCisgICAgTWVkaWFDb25zdHJhaW50
cyYgY29uc3RyYWludHMoKSB7IHJldHVybiAqbV9jb25zdHJhaW50cy5nZXQoKTsgfQorICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWlu
dHMoKTsKKworICAgIHZvaWQgcHJvY2Vzc05ld1NhbXBsZShDTVNhbXBsZUJ1ZmZlclJlZiwgdW5z
aWduZWQsIHVuc2lnbmVkKTsKKyAgICBSZWZQdHI8SW1hZ2U+IGN1cnJlbnRGcmFtZUltYWdlKCkg
ZmluYWw7CisKKyAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworCisgICAgdm9pZCBPbkZyYW1lKGNvbnN0
IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpIGZpbmFsOworICAgIGJvb2wgaXNQcm9kdWNpbmdEYXRhKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1Byb2R1Y2luZ0RhdGEgJiYgbV9idWZmZXI7IH0KKyAg
ICBib29sIGFwcGx5U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQor
CisgICAgUmVmUHRyPEltYWdlPiBtX2N1cnJlbnRJbWFnZTsKKworICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncyBtX2N1cnJlbnRTZXR0aW5nczsKKyAgICBSZWFsdGltZU1lZGlhU291cmNl
U3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKKyAgICBSZWZQdHI8
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CisgICAgUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IG1fY29uc3RyYWludHM7CisgICAgYm9vbCBtX2lzUHJvZHVj
aW5nRGF0YSB7IGZhbHNlIH07CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9U
cmFja0ludGVyZmFjZT4gbV92aWRlb1RyYWNrOworICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZl
clJlZj4gbV9idWZmZXI7CisgICAgUGl4ZWxCdWZmZXJDb25mb3JtZXJDViBtX2NvbmZvcm1lcjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShMSUJXRUJS
VENfRU5EUE9JTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjEwZTkxMGNiYzUzODZjMWY3YTI2OTFlM2FlZTc1NzA1MzBlODZlM2IKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisg
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaCIKKworI2lmIEVOQUJMRShM
SUJXRUJSVENfRU5EUE9JTlQpCisKKyNpbmNsdWRlIDx3ZWJydGMvY29tbW9uX3ZpZGVvL2xpYnl1
di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaD4KKworI2luY2x1ZGUgIkNvcmVNZWRpYVNvZnRMaW5r
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
OjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYg
dmlkZW9Tb3VyY2UpCisgICAgOiBtX3ZpZGVvU291cmNlKFdURk1vdmUodmlkZW9Tb3VyY2UpKQor
eworICAgIG1fdmlkZW9Tb3VyY2UtPmFkZE9ic2VydmVyKHRoaXMpOworfQorCitib29sIFJlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6R2V0U3RhdHMoU3RhdHMqKQoreworICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OkFkZE9yVXBkYXRl
U2luayhydGM6OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+KiBzaW5rLCBj
b25zdCBydGM6OlZpZGVvU2lua1dhbnRzJikKK3sKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBzaW5r
V2FudHMKKyAgICBpZiAoIW1fc2lua3MuY29udGFpbnMoc2luaykpCisgICAgICAgIG1fc2lua3Mu
YXBwZW5kKHNpbmspOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6UmVt
b3ZlU2luayhydGM6OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+KiBzaW5r
KQoreworICAgIG1fc2lua3MucmVtb3ZlRmlyc3Qoc2luayk7Cit9CisKKy8vIEZJWE1FOiBUaGlz
IGZ1bmN0aW9uIHNob3VsZCBiZSBtYWRlIG1vcmUgZWZmaWNpZW50OgorLy8gLSBJdCBhbGxvY2F0
ZXMgb25lIEk0MjBCdWZmZXIgYnVmZmVyIGZvciBlYWNoIGNhbGwuCisvLyAtIEluIGNhc2Ugb2Yg
a0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhQbGFuYXIsIHdlIGNhbiBwcm9iYWJseSBtZW1j
cHkgdGhlIGRhdGEgZGlyZWN0bHkuCisvLyAtVGhlIG51bWJlciBvZiBzdXBvcnRlZCBjb252ZXJz
aW9ucyAoMyBjdXJyZW50bHkpIHNob3VsZCBiZSByZWR1Y2VkIHRvIDEgb3IgMi4KK3ZvaWQgUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpzb3VyY2VIYXNNb3JlTWVkaWFEYXRhKE1lZGlhU2Ft
cGxlJiBzYW1wbGUpCit7CisgICAgaWYgKCFtX3NpbmtzLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgQVNTRVJUKHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gUGxhdGZvcm1T
YW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRp
Y19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIoc2Ft
cGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyKSk7CisgICAgYXV0byBw
aXhlbEZvcm1hdFR5cGUgPSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVm
ZmVyKTsKKworICAgIENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MocGl4ZWxCdWZmZXIsIDAp
OworICAgIHVpbnQ4X3QqIHNyYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KENWUGl4ZWxC
dWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUocGl4ZWxCdWZmZXIsIDApKTsKKworICAgIC8vIEZJ
WE1FOiBTaG91bGRuJ3Qgd2UgdXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNpemUoKT8KKyAgICBj
b25zdCBhdXRvJiBzZXR0aW5ncyA9IG1fdmlkZW9Tb3VyY2UtPnNldHRpbmdzKCk7CisKKyAgICBh
dXRvIGRlc3QgPSB3ZWJydGM6Okk0MjBCdWZmZXI6OkNyZWF0ZShzZXR0aW5ncy53aWR0aCgpLCBz
ZXR0aW5ncy5oZWlnaHQoKSk7CisKKyAgICBpZiAocGl4ZWxGb3JtYXRUeXBlID09IGtDVlBpeGVs
Rm9ybWF0VHlwZV80MjBZcENiQ3I4UGxhbmFyKQorICAgICAgICB3ZWJydGM6OkNvbnZlcnRUb0k0
MjAod2VicnRjOjprSTQyMCwgc3JjLCAwLCAwLCBzZXR0aW5ncy53aWR0aCgpLCBzZXR0aW5ncy5o
ZWlnaHQoKSwgMCwgd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wLCBkZXN0KTsKKyAgICBlbHNlIGlm
IChwaXhlbEZvcm1hdFR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkKKyAgICAgICAg
d2VicnRjOjpDb252ZXJ0VG9JNDIwKHdlYnJ0Yzo6a0FSR0IsIHNyYywgMCwgMCwgc2V0dGluZ3Mu
d2lkdGgoKSwgc2V0dGluZ3MuaGVpZ2h0KCksIDAsIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCwg
ZGVzdCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChwaXhlbEZvcm1hdFR5cGUgPT0ga0NW
UGl4ZWxGb3JtYXRUeXBlXzMyQVJHQik7CisgICAgICAgIHdlYnJ0Yzo6Q29udmVydFRvSTQyMCh3
ZWJydGM6OmtCR1JBLCBzcmMsIDAsIDAsIHNldHRpbmdzLndpZHRoKCksIHNldHRpbmdzLmhlaWdo
dCgpLCAwLCB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzAsIGRlc3QpOworICAgIH0KKworICAgIENW
UGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhwaXhlbEJ1ZmZlciwgMCk7CisgICAgd2VicnRj
OjpWaWRlb0ZyYW1lIGZyYW1lKGRlc3QsIDAsIDAsICB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzAp
OworICAgIGZvciAoYXV0byogc2luayA6IG1fc2lua3MpCisgICAgICAgIHNpbmstPk9uRnJhbWUo
ZnJhbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
TElCV0VCUlRDX0VORFBPSU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBlM2JiMDNkZWE4ZTM3NTY1MjliNWJmNWZkMmVjNTEwNmRjODU5YTkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisg
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKExJQldFQlJUQ19FTkRQT0lOVCkKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5o
IgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBp
L21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8d2VicnRjL2Jhc2Uvb3B0aW9uYWwu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2U+LCBwdWJsaWMgd2VicnRjOjpWaWRlb1RyYWNrU291cmNlSW50ZXJmYWNlLCBwcml2YXRlIFJl
YWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZT4gY3JlYXRlKFJlZjxSZWFsdGltZU1lZGlhU291cmNl
PiYmIHZpZGVvU291cmNlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZShXVEZNb3ZlKHZpZGVvU291cmNlKSkpOyB9CisKKyAgICBpbnQgQWRkUmVmKCkg
Y29uc3QgZmluYWwgeyByZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KKyAgICBpbnQgUmVsZWFz
ZSgpIGNvbnN0IGZpbmFsIHsgZGVyZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KKworcHJpdmF0
ZToKKyAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UoUmVmPFJlYWx0aW1l
TWVkaWFTb3VyY2U+JiYpOworCisgICAgLy8gTm90aWZpZXIgQVBJCisgICAgdm9pZCBSZWdpc3Rl
ck9ic2VydmVyKHdlYnJ0Yzo6T2JzZXJ2ZXJJbnRlcmZhY2UqKSBmaW5hbCB7IH0KKyAgICB2b2lk
IFVucmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9
CisKKyAgICAvLyBWaWRlb1RyYWNrU291cmNlSW50ZXJmYWNlIEFQSQorICAgIGJvb2wgaXNfc2Ny
ZWVuY2FzdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgcnRjOjpPcHRpb25h
bDxib29sPiBuZWVkc19kZW5vaXNpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBydGM6Ok9wdGlv
bmFsPGJvb2w+KCk7IH0KKyAgICBib29sIEdldFN0YXRzKFN0YXRzKikgZmluYWw7CisKKyAgICAv
LyBNZWRpYVNvdXJjZUludGVyZmFjZSBBUEkKKyAgICBTb3VyY2VTdGF0ZSBzdGF0ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIFNvdXJjZVN0YXRlKCk7IH0KKyAgICBib29sIHJlbW90ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8vIHJ0Yzo6VmlkZW9Tb3VyY2VJbnRlcmZh
Y2U8d2VicnRjOjpWaWRlb0ZyYW1lPiBBUEkKKyAgICB2b2lkIEFkZE9yVXBkYXRlU2luayhydGM6
OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+KiwgY29uc3QgcnRjOjpWaWRl
b1NpbmtXYW50cyYpIGZpbmFsOworICAgIHZvaWQgUmVtb3ZlU2luayhydGM6OlZpZGVvU2lua0lu
dGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+KikgZmluYWw7CisKKyAgICAvLyBSZWFsdGltZU1l
ZGlhU291cmNlOjpPYnNlcnZlciBBUEkKKyAgICBib29sIHByZXZlbnRTb3VyY2VGcm9tU3RvcHBp
bmcoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc291cmNlU3RvcHBlZCgpIGZp
bmFsIHsgfQorICAgIHZvaWQgc291cmNlTXV0ZWRDaGFuZ2VkKCkgZmluYWwgeyB9CisgICAgdm9p
ZCBzb3VyY2VTZXR0aW5nc0NoYW5nZWQoKSBmaW5hbCB7IH0KKyAgICB2b2lkIHNvdXJjZUhhc01v
cmVNZWRpYURhdGEoTWVkaWFTYW1wbGUmKSBmaW5hbDsKKworICAgIFZlY3RvcjxydGM6OlZpZGVv
U2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+Kj4gbV9zaW5rczsKKyAgICBSZWY8UmVh
bHRpbWVNZWRpYVNvdXJjZT4gbV92aWRlb1NvdXJjZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShMSUJXRUJSVENfRU5EUE9JTlQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCmluZGV4IDJkMDQzYTA2ZTU0ZDFjZGRlNGNlYTg1MGM2MjM4ODg5ZDczYzA5MWYuLjU1ZTVm
YTdhMzQ0ZWFjYzI4NWNmZWQxOTQ0OWQ1M2FkNDJiMGQ3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBA
IC0xNjUsNiArMTY1LDcgQEAgRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMgPSBFTkFCTEVfU1BFRUNI
X1NZTlRIRVNJUzsKIEVOQUJMRV9TVUJUTEVfQ1JZUFRPID0gRU5BQkxFX1NVQlRMRV9DUllQVE87
CiBFTkFCTEVfU1ZHX0ZPTlRTID0gRU5BQkxFX1NWR19GT05UUzsKIEVOQUJMRV9XRUJfUlRDID0g
RU5BQkxFX1dFQl9SVEM7CitFTkFCTEVfTElCV0VCUlRDX0VORFBPSU5UID0gOwogRU5BQkxFX1dS
SVRBQkxFX1NUUkVBTV9BUEkgPSBFTkFCTEVfV1JJVEFCTEVfU1RSRUFNX0FQSTsKIAogRU5BQkxF
X1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OID0gRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVU
RUNUSU9OOwpAQCAtMjE2LDQgKzIxNyw0IEBAIEVOQUJMRV9WQVJJQVRJT05fRk9OVFNfSUZfTk9U
XyA9ICQoRU5BQkxFX1ZBUklBVElPTl9GT05UU19JRl9OT1RfTk8pOwogRU5BQkxFX1ZBUklBVElP
Tl9GT05UU19JRl9OT1RfTk8gPSBFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTOwogRU5BQkxFX1ZBUklB
VElPTl9GT05UU19JRl9OT1RfWUVTID0gOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8z
RF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FD
Q0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJM
RV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQ0FD
SEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BS
T1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJ
TkcpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVD
T1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVW
SUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lN
QUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVf
Q1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVfQ1NTX1NFTEVD
VE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9DU1MzX1RF
WFQpICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hB
TkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVS
X0lURU1TKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5U
KSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkg
JChFTkFCTEVfRkVUQ0hfQVBJKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZP
TlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJ
KSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxF
X0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFU
QUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVU
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VF
SykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJM
RV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxF
X0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVfS0VZQk9BUkRf
Q09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVO
QUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9O
UykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVUVEVSUFJFU1Mp
ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUykgJChF
TkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJQV9DT05U
Uk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJD
RSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVO
QUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09S
X1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdB
VE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJ
VF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5U
UykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVf
UkVBREFCTEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfUkVBREFCTEVfQllURV9TVFJFQU1fQVBJKSAk
KEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVURSkg
JChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUkVTT1VSQ0VfVVNBR0Up
ICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVO
QUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9U
RVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNP
Tl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZP
TlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFCTEVfVklERU9fVFJB
Q0spICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJM
RV9XRUJfQU5JTUFUSU9OUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZ
KSAkKEVOQUJMRV9XRUJfUlRDKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJ
TUlORykgJChFTkFCTEVfVVNFUl9USU1JTkcpICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVOQUJM
RV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpICQoRU5BQkxFX1dSSVRBQkxFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1hTTFQpOworRkVBVFVS
RV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURf
MkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5B
QkxFX0FQUExFX1BBWSkgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZf
Q0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BB
VEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQo
RU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8y
KSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJ
VElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJRF9M
QVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdF
X1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NO
QVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdf
V09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChF
TkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkg
JChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChF
TkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVO
QUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZFVENIX0FQSSkgJChFTkFCTEVfRklMVEVS
U19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVExfSklUKSAk
KEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVO
QUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNF
KSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5Q
VVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NB
TCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNFUlZFUikg
JChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1Nf
VE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJV
VEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9MRUdBQ1lfQ1NT
X1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFC
TEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMp
ICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9N
QUNfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ0FQVFVS
RSkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TRVNTSU9O
KSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5B
QkxFX01FRElBX1NUUkVBTSkgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwp
ICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRf
VVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJRklD
QVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQo
RU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChF
TkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFQURBQkxFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1JFQURB
QkxFX0JZVEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVf
UkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQo
RU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVf
U0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1VC
VExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVS
X0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVO
VFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwp
ICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01P
REUpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklFV19N
T0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dFQl9BVURJ
TykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfTElCV0VCUlRDX0VORFBPSU5UKSAkKEVO
QUJMRV9XRUJfUlRDKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykg
JChFTkFCTEVfVVNFUl9USU1JTkcpICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVOQUJMRV9XRUJH
TCkgJChFTkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICQo
RU5BQkxFX1dSSVRBQkxFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1hTTFQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9T
b3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRl
eCAyZDA0M2EwNmU1NGQxY2RkZTRjZWE4NTBjNjIzODg4OWQ3M2MwOTFmLi41NWU1ZmE3YTM0NGVh
Y2MyODVjZmVkMTk0NDlkNTNhZDQyYjBkN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTY1LDYgKzE2NSw3
IEBAIEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTID0gRU5BQkxFX1NQRUVDSF9TWU5USEVTSVM7CiBF
TkFCTEVfU1VCVExFX0NSWVBUTyA9IEVOQUJMRV9TVUJUTEVfQ1JZUFRPOwogRU5BQkxFX1NWR19G
T05UUyA9IEVOQUJMRV9TVkdfRk9OVFM7CiBFTkFCTEVfV0VCX1JUQyA9IEVOQUJMRV9XRUJfUlRD
OworRU5BQkxFX0xJQldFQlJUQ19FTkRQT0lOVCA9IDsKIEVOQUJMRV9XUklUQUJMRV9TVFJFQU1f
QVBJID0gRU5BQkxFX1dSSVRBQkxFX1NUUkVBTV9BUEk7CiAKIEVOQUJMRV9URUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTiA9IEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTjsKQEAgLTIx
Niw0ICsyMTcsNCBAQCBFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTX0lGX05PVF8gPSAkKEVOQUJMRV9W
QVJJQVRJT05fRk9OVFNfSUZfTk9UX05PKTsKIEVOQUJMRV9WQVJJQVRJT05fRk9OVFNfSUZfTk9U
X05PID0gRU5BQkxFX1ZBUklBVElPTl9GT05UUzsKIEVOQUJMRV9WQVJJQVRJT05fRk9OVFNfSUZf
Tk9UX1lFUyA9IDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykg
JChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVS
RkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FQUExFX1BBWSkgJChFTkFCTEVfQVRUQUNITUVOVF9F
TEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklO
RykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9D
U1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUsp
ICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9O
KSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElP
TikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAk
KEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAk
KEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9D
VVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJM
RV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFC
TEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVW
SUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZFVENI
X0FQSSkgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRT
KSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FN
RVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikg
JChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktF
UlMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1Jf
UE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9E
QVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lO
UFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFC
TEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lO
VEVSU0VDVElPTl9PQlNFUlZFUikgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVf
RVZFTlRTKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxF
X0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRF
KSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xF
R0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5L
X1BSRUZFVENIKSAkKEVOQUJMRV9NQUNfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX01BVEhNTCkg
JChFTkFCTEVfTUVESUFfQ0FQVFVSRSkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAk
KEVOQUJMRV9NRURJQV9TRVNTSU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01F
RElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FRElBX1NUUkVBTSkgJChFTkFCTEVfTUVURVJfRUxF
TUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFC
TEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJF
TkNZKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVO
QUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BV
QkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFQURBQkxFX1NUUkVB
TV9BUEkpICQoRU5BQkxFX1JFQURBQkxFX0JZVEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfUkVNT1RF
X0lOU1BFQ1RPUikgJChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JFU09M
VVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJC
RVJfQkFORElORykgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU1BFRUNIX1NZ
TlRIRVNJUykgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVO
QUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5H
KSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChF
TkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykgJChFTkFCTEVf
VklERU9fUFJFU0VOVEFUSU9OX01PREUpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9W
SURFTykgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCX0FOSU1BVElP
TlMpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfV0VC
X1JUQykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxF
X1VTRVJfVElNSU5HKSAkKEVOQUJMRV9XRUJBU1NFTUJMWSkgJChFTkFCTEVfV0VCR0wpICQoRU5B
QkxFX1dFQkdMMikgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9X
UklUQUJMRV9TVFJFQU1fQVBJKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQo
RU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChF
TkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BUFBMRV9QQVkp
ICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVO
QUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9D
QU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NT
X0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxF
X0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJM
RV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAk
KEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9D
U1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxF
X0NTUzNfVEVYVCkgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9T
Q0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFf
VFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RBVEFMSVNU
X0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRU5DUllQVEVE
X01FRElBKSAkKEVOQUJMRV9GRVRDSF9BUEkpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChF
TkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVMTFND
UkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0FNRVBBRCkg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5E
RVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1Ip
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9J
TkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lO
UFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9XRUVLKSAkKEVOQUJMRV9JTlRFUlNFQ1RJT05fT0JTRVJWRVIpICQoRU5BQkxFX0lOVEwp
ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykg
JChFTkFCTEVfSklUKSAkKEVOQUJMRV9LRVlCT0FSRF9LRVlfQVRUUklCVVRFKSAkKEVOQUJMRV9L
RVlCT0FSRF9DT0RFX0FUVFJJQlVURSkgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklY
RVMpICQoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0xFR0FDWV9OT1RJ
RklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRU
RVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZF
TlRTKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01F
RElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVE
SUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJF
QU0pICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VT
RV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJM
RV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFC
TEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QUk9YSU1J
VFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAk
KEVOQUJMRV9SRUFEQUJMRV9TVFJFQU1fQVBJKSAkKEVOQUJMRV9SRUFEQUJMRV9CWVRFX1NUUkVB
TV9BUEkpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFUVVFU1RfQVVUT0NP
TVBMRVRFKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SRVNPVVJD
RV9VU0FHRSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJP
TFMpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQo
RU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQo
RU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9U
T1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WQVJJ
QVRJT05fRk9OVFMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSAkKEVOQUJMRV9W
SURFT19UUkFDSykgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEp
ICQoRU5BQkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dF
Ql9SRVBMQVkpICQoRU5BQkxFX0xJQldFQlJUQ19FTkRQT0lOVCkgJChFTkFCTEVfV0VCX1JUQykg
JChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1VTRVJf
VElNSU5HKSAkKEVOQUJMRV9XRUJBU1NFTUJMWSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dF
QkdMMikgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9XUklUQUJM
RV9TVFJFQU1fQVBJKSAkKEVOQUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjNGU3OGZlNjUzM2NhYjM3MjNkZDE3ZjEzY2ZlYzQ2
MWMzODRkYWVhLi40ZmIzZDUyNjg2YzM3OGM1ODcwNTIzOTI2NmYwYWQyYzI5YjFhZDRlIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTctMDEtMjEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5mQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbV2ViUlRDXSBJbXBsZW1lbnQgV2ViUlRDIFBlZXJDb25uZWN0aW9uIGJhY2tlbmQg
YmFzZWQgb24gbGlid2VicnRjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjcyODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWc6CisKIDIwMTctMDEtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJyaW5nIGJhY2sgZ3RrLWRvYyBlcnJv
ciBtZXNzYWdlcyBhZnRlciByMjA5OTgxLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggMmQwNDNh
MDZlNTRkMWNkZGU0Y2VhODUwYzYyMzg4ODlkNzNjMDkxZi4uNTVlNWZhN2EzNDRlYWNjMjg1Y2Zl
ZDE5NDQ5ZDUzYWQ0MmIwZDdlNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xNjUsNiArMTY1
LDcgQEAgRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMgPSBFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUzsK
IEVOQUJMRV9TVUJUTEVfQ1JZUFRPID0gRU5BQkxFX1NVQlRMRV9DUllQVE87CiBFTkFCTEVfU1ZH
X0ZPTlRTID0gRU5BQkxFX1NWR19GT05UUzsKIEVOQUJMRV9XRUJfUlRDID0gRU5BQkxFX1dFQl9S
VEM7CitFTkFCTEVfTElCV0VCUlRDX0VORFBPSU5UID0gOwogRU5BQkxFX1dSSVRBQkxFX1NUUkVB
TV9BUEkgPSBFTkFCTEVfV1JJVEFCTEVfU1RSRUFNX0FQSTsKIAogRU5BQkxFX1RFTEVQSE9ORV9O
VU1CRVJfREVURUNUSU9OID0gRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OOwpAQCAt
MjE2LDQgKzIxNyw0IEBAIEVOQUJMRV9WQVJJQVRJT05fRk9OVFNfSUZfTk9UXyA9ICQoRU5BQkxF
X1ZBUklBVElPTl9GT05UU19JRl9OT1RfTk8pOwogRU5BQkxFX1ZBUklBVElPTl9GT05UU19JRl9O
T1RfTk8gPSBFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTOwogRU5BQkxFX1ZBUklBVElPTl9GT05UU19J
Rl9OT1RfWUVTID0gOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1T
KSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09W
RVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BVFRBQ0hNRU5U
X0VMRU1FTlQpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9O
SU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJM
RV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxF
X0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVB
SykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJ
T04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFU
SU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMp
ICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQp
ICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxF
X0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5B
QkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVO
QUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9E
RVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRkVU
Q0hfQVBJKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVO
VFMpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9H
QU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9O
KSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09S
S0VSUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xP
Ul9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVf
SU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVf
SU5URVJTRUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVS
RV9FVkVOVFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0pJVCkgJChFTkFC
TEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJV
VEUpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lf
RU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVf
TEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJ
TktfUFJFRkVUQ0gpICQoRU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfTUFUSE1M
KSAkKEVOQUJMRV9NRURJQV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQp
ICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVf
TUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVOQUJMRV9NRVRFUl9F
TEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVO
QUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VS
UkVOQ1kpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQo
RU5BQkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVf
UFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVBREFCTEVfU1RS
RUFNX0FQSSkgJChFTkFCTEVfUkVBREFCTEVfQllURV9TVFJFQU1fQVBJKSAkKEVOQUJMRV9SRU1P
VEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVURSkgJChFTkFCTEVfUkVT
T0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUkVTT1VSQ0VfVVNBR0UpICQoRU5BQkxFX1JV
QkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9TUEVFQ0hf
U1lOVEhFU0lTKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQo
RU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJ
TkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAk
KEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJM
RV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxF
X1ZJREVPKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJfQU5JTUFU
SU9OUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9X
RUJfUlRDKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFC
TEVfVVNFUl9USU1JTkcpICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVOQUJMRV9XRUJHTCkgJChF
TkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICQoRU5BQkxF
X1dSSVRBQkxFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0g
JChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAk
KEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FQUExFX1BB
WSkgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQo
RU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxF
X0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NPTlRF
TlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9D
U1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFC
TEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQoRU5B
QkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04p
ICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxF
X0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFC
TEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9N
X1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFU
QV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfREFUQUxJ
U1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9FTkNSWVBU
RURfTUVESUEpICQoRU5BQkxFX0ZFVENIX0FQSSkgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAk
KEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9GVUxM
U0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJMRV9HQU1FUEFE
KSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9J
TkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQo
RU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xP
UikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1F
X0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVf
SU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNFUlZFUikgJChFTkFCTEVfSU5U
TCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRT
KSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUpICQoRU5BQkxF
X0tFWUJPQVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVG
SVhFUykgJChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfTEVHQUNZX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xF
VFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQUNfR0VTVFVSRV9F
VkVOVFMpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ0FQVFVSRSkgJChFTkFCTEVf
TUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TRVNTSU9OKSAkKEVOQUJMRV9N
RURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FRElBX1NU
UkVBTSkgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01P
VVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5B
QkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVO
QUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BST1hJ
TUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEp
ICQoRU5BQkxFX1JFQURBQkxFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1JFQURBQkxFX0JZVEVfU1RS
RUFNX0FQSSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVRVUVTVF9BVVRP
Q09NUExFVEUpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JFU09V
UkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfU0VSVklDRV9DT05U
Uk9MUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1VCVExFX0NSWVBUTykg
JChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikg
JChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxF
X1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZB
UklBVElPTl9GT05UUykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpICQoRU5BQkxF
X1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJ
QSkgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVf
V0VCX1JFUExBWSkgJChFTkFCTEVfTElCV0VCUlRDX0VORFBPSU5UKSAkKEVOQUJMRV9XRUJfUlRD
KSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfVVNF
Ul9USU1JTkcpICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVf
V0VCR0wyKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICQoRU5BQkxFX1dSSVRB
QkxFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1hTTFQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299859</attachid>
            <date>2017-01-26 14:57:03 -0800</date>
            <delta_ts>2017-01-26 17:58:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167289-20170126145500.patch</filename>
            <type>text/plain</type>
            <size>53861</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWE0OGE0NWRjMTQ0OTAx
N2EzMmU2MThmNThjMjg2NGNkMzE2YzhmNC4uMmQ2Mzg5MDQ5ZWJhZGMwMzZkYzcxYmRmMDU4N2Fj
MDljYzMxMmFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE3LTAxLTI2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gSW1wbGVt
ZW50IFdlYlJUQyBQZWVyQ29ubmVjdGlvbiBiYWNrZW5kIGJhc2VkIG9uIGxpYndlYnJ0YworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3Mjg5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNpbmcg
YW4gaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBXZWJSVEMgcGVlciBjb25uZWN0aW9uIGJhY2tl
bmQgYmFzZWQgb24gTGliV2ViUlRDLgorICAgICAgICBUaGlzIGlzIGRvbmUgYmVoaW5kIGEgY29t
cGlsYXRpb24gZmxhZyB3aGljaCBpcyBvZmYgYnkgZGVmYXVsdCwgdW50aWwgdGhlIGltcGxlbWVu
dGF0aW9uIGlzIHJlYWR5LgorCisgICAgICAgIFRoZSBiYWNrZW5kIGltcGxlbWVudHMgdGhlIFBl
ZXJDb25uZWN0aW9uQmFja2VuZCBBUEkuCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBz
cGxpdCBpbnRvIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCB3aGljaCBjb250YWlucyBt
b3N0bHkgZ2VuZXJpYyBjb2RlIGFuZAorICAgICAgICBwYXNzZXMgdGhlIHJlYWwgd29yayB0byBM
aWJXZWJSVENNZWRpYUVuZHBvaW50LgorICAgICAgICBUaGUgbGF0dGVyIGNsYXNzIGlzIGltcGxl
bWVudGluZyB0aGUgQVBJIHVzaW5nIExpYldlYlJUQy4KKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OkxpYldlYlJUQ01lZGlhRW5k
cG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6c2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb1NldExvY2FsRGVzY3JpcHRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9TZXRSZW1v
dGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50
OjphZGRQZW5kaW5nSWNlQ2FuZGlkYXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpzdHJlYW1JZCk6
CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb0NyZWF0ZU9mZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvQ3JlYXRlQW5z
d2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmdldFN0YXRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OlN0YXRzQ29sbGVj
dG9yOjpTdGF0c0NvbGxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVu
ZHBvaW50OjpTdGF0c0NvbGxlY3Rvcjo6T25TdGF0c0RlbGl2ZXJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpzaWduYWxpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVu
ZHBvaW50OjpPblNpZ25hbGluZ0NoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjp0cmFja0lkKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1lZGlhU3RyZWFtVHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkU3RyZWFtKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uQWRkU3RyZWFtKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uUmVtb3ZlU3RyZWFtKToKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uRGF0YUNoYW5uZWwpOgorICAgICAgICAo
V2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPblJlbmVnb3RpYXRpb25OZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6aWNlQ29ubmVjdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6Ok9uSWNlQ29ubmVjdGlvbkNoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkljZUdhdGhlcmluZ0NoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkljZUNhbmRpZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkljZUNhbmRpZGF0ZXNS
ZW1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0
ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENNZWRpYUVuZHBvaW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0TG9jYWxTZXNzaW9uRGVzY3Jp
cHRpb25TdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6c2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2Vl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldFJlbW90
ZVNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUxpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpsaWJXZWJSVENQcm92aWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkxpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpjb25maWd1cmF0aW9u
RnJvbU1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0Q29uZmlndXJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmdldFN0YXRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9TZXRMb2NhbERl
c2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZDo6ZG9TZXRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvQ3JlYXRlT2ZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb0NyZWF0ZUFuc3dlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvU3RvcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvQWRkSWNl
Q2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZDo6bWFya0FzTmVlZGluZ05lZ290aWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVEYXRhQ2hhbm5lbEhh
bmRsZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTctMDEtMjYgIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBTaW1wbGUgbGluZSBsYXlvdXQ6IEFkZCBzdXBwb3J0IGZv
ciAtd2Via2l0LWh5cGhlbmF0ZS1saW1pdC1hZnRlciBhbmQgLXdlYmtpdC1oeXBoZW5hdGUtbGlt
aXQtYmVmb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU2Yzk4N2MxNzhhNGZmMTI1MzdhMTBhMTQ2MmYzNzNhNjNkYzkwNjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcApAQCAtMCwwICsxLDQ2NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJMaWJXZWJSVENNZWRpYUVuZHBvaW50LmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQor
CisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAi
TGliV2ViUlRDVXRpbHMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUV2ZW50LmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWwuaCIKKyNp
bmNsdWRlICJSVENEYXRhQ2hhbm5lbEV2ZW50LmgiCisjaW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRl
LmgiCisjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSVENTZXNzaW9u
RGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJSVENUcmFja0V2ZW50LmgiCisjaW5jbHVkZSAiUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlLmgiCisjaW5jbHVkZSA8d2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmZhY3Rvcnku
aD4KKyNpbmNsdWRlIDx3ZWJydGMvYmFzZS9waHlzaWNhbHNvY2tldHNlcnZlci5oPgorI2luY2x1
ZGUgPHdlYnJ0Yy9wMnAvYmFzZS9iYXNpY3BhY2tldHNvY2tldGZhY3RvcnkuaD4KKyNpbmNsdWRl
IDx3ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgorCisjaW5jbHVkZSAiQ29yZU1lZGlhU29mdExpbmsuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpMaWJXZWJSVENNZWRpYUVu
ZHBvaW50KExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYgcGVlckNvbm5lY3Rpb24sIExp
YldlYlJUQ1Byb3ZpZGVyJiBjbGllbnQpCisgICAgOiBtX3BlZXJDb25uZWN0aW9uQmFja2VuZChw
ZWVyQ29ubmVjdGlvbikKKyAgICAsIG1fY3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIo
KnRoaXMpCisgICAgLCBtX3NldExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIoKnRoaXMp
CisgICAgLCBtX3NldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyKCp0aGlzKQorewor
ICAgIG1fYmFja2VuZCA9IGNsaWVudC5jcmVhdGVQZWVyQ29ubmVjdGlvbigqdGhpcyk7CisgICAg
QVNTRVJUKG1fYmFja2VuZCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogc2Vzc2lv
bkRlc2NyaXB0aW9uVHlwZShSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGUgc2RwVHlwZSkK
K3sKKyAgICBzd2l0Y2ggKHNkcFR5cGUpIHsKKyAgICBjYXNlIFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bjo6U2RwVHlwZTo6T2ZmZXI6CisgICAgICAgIHJldHVybiAib2ZmZXIiOworICAgIGNhc2UgUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpQcmFuc3dlcjoKKyAgICAgICAgcmV0dXJuICJw
cmFuc3dlciI7CisgICAgY2FzZSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6OkFuc3dl
cjoKKyAgICAgICAgcmV0dXJuICJhbnN3ZXIiOworICAgIGNhc2UgUlRDU2Vzc2lvbkRlc2NyaXB0
aW9uOjpTZHBUeXBlOjpSb2xsYmFjazoKKyAgICAgICAgcmV0dXJuICJyb2xsYmFjayI7CisgICAg
fQorfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvU2V0TG9jYWxEZXNjcmlwdGlv
bihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQoreworICAgIHdlYnJ0Yzo6U2Rw
UGFyc2VFcnJvciBlcnJvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpTZXNzaW9uRGVz
Y3JpcHRpb25JbnRlcmZhY2U+IHNlc3Npb25EZXNjcmlwdGlvbih3ZWJydGM6OkNyZWF0ZVNlc3Np
b25EZXNjcmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb25UeXBlKGRlc2NyaXB0aW9uLnR5cGUoKSks
IGRlc2NyaXB0aW9uLnNkcCgpLnV0ZjgoKS5kYXRhKCksICZlcnJvcikpOworCisgICAgaWYgKCFz
ZXNzaW9uRGVzY3JpcHRpb24pIHsKKyAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZShlcnJvci5k
ZXNjcmlwdGlvbi5kYXRhKCksIGVycm9yLmRlc2NyaXB0aW9uLnNpemUoKSk7CisgICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLnNldExvY2FsRGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9u
IHsgT3BlcmF0aW9uRXJyb3IsIFdURk1vdmUoZXJyb3JNZXNzYWdlKSB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBtX2JhY2tlbmQtPlNldExvY2FsRGVzY3JpcHRpb24oJm1fc2V0TG9j
YWxTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciwgc2Vzc2lvbkRlc2NyaXB0aW9uLnJlbGVhc2Uo
KSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9TZXRSZW1vdGVEZXNjcmlw
dGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQoreworICAgIHdlYnJ0Yzo6
U2RwUGFyc2VFcnJvciBlcnJvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpTZXNzaW9u
RGVzY3JpcHRpb25JbnRlcmZhY2U+IHNlc3Npb25EZXNjcmlwdGlvbih3ZWJydGM6OkNyZWF0ZVNl
c3Npb25EZXNjcmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb25UeXBlKGRlc2NyaXB0aW9uLnR5cGUo
KSksIGRlc2NyaXB0aW9uLnNkcCgpLnV0ZjgoKS5kYXRhKCksICZlcnJvcikpOworICAgIGlmICgh
c2Vzc2lvbkRlc2NyaXB0aW9uKSB7CisgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UoZXJyb3Iu
ZGVzY3JpcHRpb24uZGF0YSgpLCBlcnJvci5kZXNjcmlwdGlvbi5zaXplKCkpOworICAgICAgICBt
X3BlZXJDb25uZWN0aW9uQmFja2VuZC5zZXRSZW1vdGVEZXNjcmlwdGlvbkZhaWxlZChFeGNlcHRp
b24geyBPcGVyYXRpb25FcnJvciwgV1RGTW92ZShlcnJvck1lc3NhZ2UpIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIG1fYmFja2VuZC0+U2V0UmVtb3RlRGVzY3JpcHRpb24oJm1fc2V0
UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIsIHNlc3Npb25EZXNjcmlwdGlvbi5yZWxl
YXNlKCkpOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFBlbmRpbmdJY2VD
YW5kaWRhdGVzKCkKK3sKKyAgICB3aGlsZSAobV9wZW5kaW5nQ2FuZGlkYXRlcy5zaXplKCkpCisg
ICAgICAgIG1fYmFja2VuZC0+QWRkSWNlQ2FuZGlkYXRlKG1fcGVuZGluZ0NhbmRpZGF0ZXMudGFr
ZUxhc3QoKS5yZWxlYXNlKCkpOworfQorCitzdGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5nIHN0cmVh
bUlkKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIGF1dG8mIHNlbmRlcnMg
PSBjb25uZWN0aW9uLmdldFNlbmRlcnMoKTsKKyAgICBpZiAoc2VuZGVycy5zaXplKCkpIHsKKyAg
ICAgICAgZm9yIChSVENSdHBTZW5kZXImIHNlbmRlciA6IHNlbmRlcnMpIHsKKyAgICAgICAgICAg
IGF1dG8qIHRyYWNrID0gc2VuZGVyLnRyYWNrKCk7CisgICAgICAgICAgICBpZiAodHJhY2spIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlQoc2VuZGVyLm1lZGlhU3RyZWFtSWRzKCkuc2l6ZSgpID09
IDEpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZyhzZW5kZXIubWVkaWFTdHJl
YW1JZHMoKS5maXJzdCgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorICAgIHJldHVybiAiYXZfbGFiZWwiOworfQorCit2b2lkIExpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6OmRvQ3JlYXRlT2ZmZXIoKQoreworICAgIG1faXNJbml0aWF0b3IgPSB0cnVlOwor
ICAgIGF1dG8mIHNlbmRlcnMgPSBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCku
Z2V0U2VuZGVycygpOworICAgIGlmIChzZW5kZXJzLnNpemUoKSkgeworICAgICAgICAvLyBGSVhN
RTogV2Ugb25seSBzdXBwb3J0IG9uZSBzdHJlYW0gZm9yIHRoZSBtb21lbnQuCisgICAgICAgIGF1
dG8gc3RyZWFtID0gcGVlckNvbm5lY3Rpb25GYWN0b3J5KCkuQ3JlYXRlTG9jYWxNZWRpYVN0cmVh
bShzdHJlYW1JZChtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkpKTsKKyAgICAg
ICAgZm9yIChSVENSdHBTZW5kZXImIHNlbmRlciA6IHNlbmRlcnMpIHsKKyAgICAgICAgICAgIGF1
dG8qIHRyYWNrID0gc2VuZGVyLnRyYWNrKCk7CisgICAgICAgICAgICBpZiAodHJhY2spIHsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoc2VuZGVyLm1lZGlhU3RyZWFtSWRzKCkuc2l6ZSgpID09IDEp
OworICAgICAgICAgICAgICAgIGF1dG8mIHNvdXJjZSA9IHRyYWNrLT5zb3VyY2UoKTsKKyAgICAg
ICAgICAgICAgICBpZiAoc291cmNlLnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRp
bykgeworICAgICAgICAgICAgICAgICAgICBhdXRvIHRyYWNrU291cmNlID0gUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlOjpjcmVhdGUoc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byBydGNUcmFjayA9IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpLkNyZWF0ZUF1ZGlvVHJhY2sodHJh
Y2stPmlkKCkudXRmOCgpLmRhdGEoKSwgdHJhY2tTb3VyY2UucHRyKCkpOworICAgICAgICAgICAg
ICAgICAgICB0cmFja1NvdXJjZS0+c2V0VHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
QXVkaW9UcmFja0ludGVyZmFjZT4ocnRjVHJhY2spKTsKKyAgICAgICAgICAgICAgICAgICAgbV9h
dWRpb1NvdXJjZXMuYXBwZW5kKFdURk1vdmUodHJhY2tTb3VyY2UpKTsKKyAgICAgICAgICAgICAg
ICAgICAgc3RyZWFtLT5BZGRUcmFjayhXVEZNb3ZlKHJ0Y1RyYWNrKSk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbV92aWRlb1NvdXJjZXMuYXBwZW5kKFJl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKHNvdXJjZSkpOworICAgICAgICAgICAg
ICAgICAgICBzdHJlYW0tPkFkZFRyYWNrKHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpLkNyZWF0ZVZp
ZGVvVHJhY2sodHJhY2stPmlkKCkudXRmOCgpLmRhdGEoKSwgbV92aWRlb1NvdXJjZXMubGFzdCgp
LnB0cigpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIG1fYmFja2VuZC0+QWRkU3RyZWFtKHN0cmVhbSk7CisgICAgfQorICAgIG1fYmFja2Vu
ZC0+Q3JlYXRlT2ZmZXIoJm1fY3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIsIG51bGxw
dHIpOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvQ3JlYXRlQW5zd2VyKCkK
K3sKKyAgICBtX2lzSW5pdGlhdG9yID0gZmFsc2U7CisKKyAgICBhdXRvJiBzZW5kZXJzID0gbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLmdldFNlbmRlcnMoKTsKKyAgICBpZiAo
c2VuZGVycy5zaXplKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIG9ubHkgc3VwcG9ydCBvbmUg
c3RyZWFtIGZvciB0aGUgbW9tZW50LgorICAgICAgICBhdXRvIHN0cmVhbSA9IHBlZXJDb25uZWN0
aW9uRmFjdG9yeSgpLkNyZWF0ZUxvY2FsTWVkaWFTdHJlYW0oc3RyZWFtSWQobV9wZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY29ubmVjdGlvbigpKSk7CisgICAgICAgIGZvciAoUlRDUnRwU2VuZGVyJiBz
ZW5kZXIgOiBzZW5kZXJzKSB7CisgICAgICAgICAgICBhdXRvKiB0cmFjayA9IHNlbmRlci50cmFj
aygpOworICAgICAgICAgICAgaWYgKHRyYWNrKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNl
bmRlci5tZWRpYVN0cmVhbUlkcygpLnNpemUoKSA9PSAxKTsKKyAgICAgICAgICAgICAgICBhdXRv
JiBzb3VyY2UgPSB0cmFjay0+c291cmNlKCk7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS50
eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pIHsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byB0cmFja1NvdXJjZSA9IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRl
KHNvdXJjZSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcnRjVHJhY2sgPSBwZWVyQ29ubmVj
dGlvbkZhY3RvcnkoKS5DcmVhdGVBdWRpb1RyYWNrKHRyYWNrLT5pZCgpLnV0ZjgoKS5kYXRhKCks
IHRyYWNrU291cmNlLnB0cigpKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2tTb3VyY2UtPnNl
dFRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+KHJ0
Y1RyYWNrKSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZN
b3ZlKHRyYWNrU291cmNlKSk7CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbS0+QWRkVHJhY2so
V1RGTW92ZShydGNUcmFjaykpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIG1fdmlkZW9Tb3VyY2VzLmFwcGVuZChSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2U6OmNyZWF0ZShzb3VyY2UpKTsKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5BZGRUcmFj
ayhwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKS5DcmVhdGVWaWRlb1RyYWNrKHRyYWNrLT5pZCgpLnV0
ZjgoKS5kYXRhKCksIG1fdmlkZW9Tb3VyY2VzLmxhc3QoKS5wdHIoKSkpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtX2JhY2tlbmQtPkFkZFN0
cmVhbShzdHJlYW0pOworICAgIH0KKyAgICBtX2JhY2tlbmQtPkNyZWF0ZUFuc3dlcigmbV9jcmVh
dGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6Z2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayogdHJhY2ssIFBlZXJD
b25uZWN0aW9uOjpTdGF0c1Byb21pc2UmJiBwcm9taXNlKQoreworICAgIGF1dG8gY29sbGVjdG9y
ID0gU3RhdHNDb2xsZWN0b3I6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgdHJhY2sp
OworICAgIG1fYmFja2VuZC0+R2V0U3RhdHMoY29sbGVjdG9yLnB0cigpKTsKKyAgICBtX3N0YXRz
Q29sbGVjdG9ycy5hcHBlbmQoV1RGTW92ZShjb2xsZWN0b3IpKTsKK30KKworTGliV2ViUlRDTWVk
aWFFbmRwb2ludDo6U3RhdHNDb2xsZWN0b3I6OlN0YXRzQ29sbGVjdG9yKExpYldlYlJUQ01lZGlh
RW5kcG9pbnQmIGVuZHBvaW50LCBQZWVyQ29ubmVjdGlvbjo6U3RhdHNQcm9taXNlJiYgcHJvbWlz
ZSwgTWVkaWFTdHJlYW1UcmFjayogdHJhY2spCisgICAgOiBtX2VuZHBvaW50KGVuZHBvaW50KQor
ICAgICwgbV9wcm9taXNlKFdURk1vdmUocHJvbWlzZSkpCit7CisgICAgaWYgKHRyYWNrKQorICAg
ICAgICBtX2lkID0gdHJhY2stPmlkKCk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6U3RhdHNDb2xsZWN0b3I6Ok9uU3RhdHNEZWxpdmVyZWQoY29uc3QgcnRjOjpzY29wZWRfcmVm
cHRyPGNvbnN0IHdlYnJ0Yzo6UlRDU3RhdHNSZXBvcnQ+JiByZXBvcnQpCit7CisgICAgUmVmPExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ+IHByb3RlY3RvciA9IG1fZW5kcG9pbnQ7CisgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgcmVwb3J0LCBwcm90ZWN0b3IgPSBXVEZNb3ZlKHByb3RlY3Rvcild
IHsKKyAgICAgICAgLy8gRklYTUU6IEZ1bGZpbGwgcHJvbWlzZSB3aXRoIHRoZSByZXBvcnQKKyAg
ICAgICAgVU5VU0VEX1BBUkFNKHJlcG9ydCk7CisgICAgICAgIG1fcHJvbWlzZS5yZWplY3QoVHlw
ZUVycm9yLCBBU0NJSUxpdGVyYWwoIlN0YXRzIEFQSSBpcyBub3QgeWV0IGltcGxlbWVudGVkIikp
OworCisgICAgICAgIG1fZW5kcG9pbnQubV9zdGF0c0NvbGxlY3RvcnMucmVtb3ZlRmlyc3RNYXRj
aGluZyhbdGhpc10oY29uc3QgUmVmPFN0YXRzQ29sbGVjdG9yPiYgY29sbGVjdG9yKSB7CisgICAg
ICAgICAgICByZXR1cm4gdGhpcyA9PSBjb2xsZWN0b3IucHRyKCk7CisgICAgICAgIH0pOworICAg
IH0pOworfQorCitzdGF0aWMgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGluZ1N0YXRlIHNp
Z25hbGluZ1N0YXRlKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlNpZ25hbGluZ1N0
YXRlIHN0YXRlKQoreworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtTdGFibGU6CisgICAgICAgIHJldHVybiBQZWVyQ29ubmVj
dGlvblN0YXRlczo6U2lnbmFsaW5nU3RhdGU6OlN0YWJsZTsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtIYXZlTG9jYWxPZmZlcjoKKyAgICAgICAgcmV0dXJuIFBl
ZXJDb25uZWN0aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZTo6SGF2ZUxvY2FsT2ZmZXI7CisgICAg
Y2FzZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprSGF2ZUxvY2FsUHJBbnN3ZXI6
CisgICAgICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblN0YXRlczo6U2lnbmFsaW5nU3RhdGU6Okhh
dmVMb2NhbFByQW5zd2VyOworICAgIGNhc2Ugd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZTo6a0hhdmVSZW1vdGVPZmZlcjoKKyAgICAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU3RhdGVz
OjpTaWduYWxpbmdTdGF0ZTo6SGF2ZVJlbW90ZU9mZmVyOworICAgIGNhc2Ugd2VicnRjOjpQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6a0hhdmVSZW1vdGVQckFuc3dlcjoKKyAgICAgICAgcmV0dXJu
IFBlZXJDb25uZWN0aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZTo6SGF2ZVJlbW90ZVByQW5zd2Vy
OworICAgIGNhc2Ugd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0Nsb3NlZDoKKyAg
ICAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZTo6Q2xvc2Vk
OworICAgIH0KK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPblNpZ25hbGluZ0No
YW5nZSh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpTaWduYWxpbmdTdGF0ZSBydGNT
dGF0ZSkKK3sKKyAgICBhdXRvIHN0YXRlID0gc2lnbmFsaW5nU3RhdGUocnRjU3RhdGUpOworICAg
IFJlZlB0cjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAg
IGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCBzdGF0ZV0geworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25C
YWNrZW5kLnVwZGF0ZVNpZ25hbGluZ1N0YXRlKHN0YXRlKTsKKyAgICB9KTsKK30KKworc3RhdGlj
IGlubGluZSBTdHJpbmcgdHJhY2tJZCh3ZWJydGM6Ok1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2Um
IHZpZGVvVHJhY2spCit7CisgICAgcmV0dXJuIFN0cmluZyh2aWRlb1RyYWNrLmlkKCkuZGF0YSgp
LCB2aWRlb1RyYWNrLmlkKCkuc2l6ZSgpKTsKK30KKworc3RhdGljIGlubGluZSBSZWY8TWVkaWFT
dHJlYW1UcmFjaz4gY3JlYXRlTWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiByZW1vdGVTb3VyY2UpCit7Cisg
ICAgU3RyaW5nIHRyYWNrSWQgPSByZW1vdGVTb3VyY2UtPmlkKCk7CisgICAgcmV0dXJuIE1lZGlh
U3RyZWFtVHJhY2s6OmNyZWF0ZShjb250ZXh0LCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3Jl
YXRlKFdURk1vdmUocmVtb3RlU291cmNlKSwgV1RGTW92ZSh0cmFja0lkKSkpOworfQorCit2b2lk
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFN0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50
ZXJmYWNlJiBzdHJlYW0pCit7CisgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciB0cmFja3M7Cisg
ICAgZm9yIChhdXRvJiB2aWRlb1RyYWNrIDogc3RyZWFtLkdldFZpZGVvVHJhY2tzKCkpIHsKKyAg
ICAgICAgQVNTRVJUKHZpZGVvVHJhY2spOworICAgICAgICBTdHJpbmcgaWQgPSB0cmFja0lkKCp2
aWRlb1RyYWNrKTsKKyAgICAgICAgYXV0byByZW1vdGVTb3VyY2UgPSBSZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2U6OmNyZWF0ZShXVEZNb3ZlKHZpZGVvVHJhY2spLCBXVEZNb3ZlKGlkKSk7Cisg
ICAgICAgIHRyYWNrcy5hcHBlbmQoY3JlYXRlTWVkaWFTdHJlYW1UcmFjaygqbV9wZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92
ZShyZW1vdGVTb3VyY2UpKSk7CisgICAgfQorICAgIGZvciAoYXV0byYgYXVkaW9UcmFjayA6IHN0
cmVhbS5HZXRBdWRpb1RyYWNrcygpKSB7CisgICAgICAgIEFTU0VSVChhdWRpb1RyYWNrKTsKKyAg
ICAgICAgU3RyaW5nIGlkID0gdHJhY2tJZCgqYXVkaW9UcmFjayk7CisgICAgICAgIGF1dG8gcmVt
b3RlU291cmNlID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUoV1RGTW92ZShh
dWRpb1RyYWNrKSwgV1RGTW92ZShpZCkpOworICAgICAgICB0cmFja3MuYXBwZW5kKGNyZWF0ZU1l
ZGlhU3RyZWFtVHJhY2soKm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUocmVtb3RlU291cmNlKSkpOworICAgIH0KKwor
ICAgIGF1dG8gbmV3U3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqbV9wZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZSh0
cmFja3MpKTsKKyAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuZmlyZUV2
ZW50KE1lZGlhU3RyZWFtRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkc3RyZWFtRXZlbnQs
IGZhbHNlLCBmYWxzZSwgbmV3U3RyZWFtLmNvcHlSZWYoKSkpOworCisgICAgVmVjdG9yPFJlZlB0
cjxNZWRpYVN0cmVhbT4+IHN0cmVhbXM7CisgICAgc3RyZWFtcy5hcHBlbmQobmV3U3RyZWFtLmNv
cHlSZWYoKSk7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IG5ld1N0cmVhbS0+Z2V0VHJhY2tzKCkp
CisgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5maXJlRXZlbnQo
UlRDVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS50cmFja0V2ZW50LCBmYWxzZSwgZmFs
c2UsIG51bGxwdHIsIHRyYWNrLmdldCgpLCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4oc3Ry
ZWFtcyksIG51bGxwdHIpKTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkFk
ZFN0cmVhbShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZT4g
c3RyZWFtKQoreworICAgIFJlZlB0cjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCBzdHJlYW0gPSBXVEZNb3ZlKHN0cmVhbSldIHsKKyAgICAgICAgaWYg
KHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBBU1NFUlQoc3RyZWFtKTsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkU3RyZWFtKCpzdHJl
YW0uZ2V0KCkpOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9u
UmVtb3ZlU3RyZWFtKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJm
YWNlPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjpPbkRhdGFDaGFubmVsKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkRh
dGFDaGFubmVsSW50ZXJmYWNlPiBkYXRhQ2hhbm5lbCkKK3sKKyAgICBSZWZQdHI8TGliV2ViUlRD
TWVkaWFFbmRwb2ludD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZGF0YUNoYW5uZWwgPSBX
VEZNb3ZlKGRhdGFDaGFubmVsKV0geworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9w
cGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHByb3RlY3RlZFRoaXMtPmFkZERh
dGFDaGFubmVsKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkRhdGFDaGFubmVsSW50ZXJmYWNl
PihkYXRhQ2hhbm5lbCkpOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9p
bnQ6OnN0b3AoKQoreworICAgIEFTU0VSVChtX2JhY2tlbmQpOworICAgIG1fYmFja2VuZC0+Q2xv
c2UoKTsKKyAgICBtX2JhY2tlbmQgPSBudWxscHRyOworfQorCit2b2lkIExpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6Ok9uUmVuZWdvdGlhdGlvbk5lZWRlZCgpCit7CisgICAgLy8gQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUNv
bm5lY3Rpb25TdGF0ZSBpY2VDb25uZWN0aW9uU3RhdGUod2VicnRjOjpQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlIHN0YXRlKQoreworICAgIHN3aXRjaCAoc3RhdGUp
IHsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0
aW9uTmV3OgorICAgICAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUNvbm5lY3Rp
b25TdGF0ZTo6TmV3OworICAgIGNhc2Ugd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
a0ljZUNvbm5lY3Rpb25DaGVja2luZzoKKyAgICAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU3Rh
dGVzOjpJY2VDb25uZWN0aW9uU3RhdGU6OkNoZWNraW5nOworICAgIGNhc2Ugd2VicnRjOjpQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25Db25uZWN0ZWQ6CisgICAgICAgIHJl
dHVybiBQZWVyQ29ubmVjdGlvblN0YXRlczo6SWNlQ29ubmVjdGlvblN0YXRlOjpDb25uZWN0ZWQ7
CisgICAgY2FzZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprSWNlQ29ubmVjdGlv
bkNvbXBsZXRlZDoKKyAgICAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VDb25u
ZWN0aW9uU3RhdGU6OkNvbXBsZXRlZDsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uRmFpbGVkOgorICAgICAgICByZXR1cm4gUGVlckNvbm5l
Y3Rpb25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZTo6RmFpbGVkOworICAgIGNhc2Ugd2VicnRj
OjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25EaXNjb25uZWN0ZWQ6Cisg
ICAgICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblN0YXRlczo6SWNlQ29ubmVjdGlvblN0YXRlOjpE
aXNjb25uZWN0ZWQ7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpr
SWNlQ29ubmVjdGlvbkNsb3NlZDoKKyAgICAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU3RhdGVz
OjpJY2VDb25uZWN0aW9uU3RhdGU6OkNsb3NlZDsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJ
Y2VDb25uZWN0aW9uU3RhdGU6Ok5ldzsKKyAgICB9Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFF
bmRwb2ludDo6T25JY2VDb25uZWN0aW9uQ2hhbmdlKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZSBzdGF0ZSkKK3sKKyAgICBhdXRvIGNvbm5lY3Rpb25T
dGF0ZSA9IGljZUNvbm5lY3Rpb25TdGF0ZShzdGF0ZSk7CisgICAgUmVmUHRyPExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgY2FsbE9uTWFpblRocmVhZChb
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbm5lY3Rpb25TdGF0ZV0g
eworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jb25uZWN0aW9uKCkuaW50ZXJuYWxJY2VDb25uZWN0aW9uU3RhdGUoKSAhPSBjb25uZWN0aW9u
U3RhdGUpCisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jb25uZWN0aW9uKCkudXBkYXRlSWNlQ29ubmVjdGlvblN0YXRlKGNvbm5lY3Rpb25TdGF0ZSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25JY2VHYXRoZXJp
bmdDaGFuZ2Uod2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlR2F0aGVyaW5nU3Rh
dGUgc3RhdGUpCit7CisgICAgaWYgKHN0YXRlID09IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OmtJY2VHYXRoZXJpbmdDb21wbGV0ZSkgeworICAgICAgICBSZWZQdHI8TGliV2ViUlRD
TWVkaWFFbmRwb2ludD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKKyAgICAgICAg
ICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5k
b25lR2F0aGVyaW5nQ2FuZGlkYXRlcygpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKK3ZvaWQg
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25JY2VDYW5kaWRhdGUoY29uc3Qgd2VicnRjOjpJY2VD
YW5kaWRhdGVJbnRlcmZhY2UgKnJ0Y0NhbmRpZGF0ZSkKK3sKKyAgICBBU1NFUlQocnRjQ2FuZGlk
YXRlKTsKKworICAgIHN0ZDo6c3RyaW5nIHNkcDsKKyAgICBydGNDYW5kaWRhdGUtPlRvU3RyaW5n
KCZzZHApOworICAgIFN0cmluZyBjYW5kaWRhdGVTRFAoc2RwLmRhdGEoKSwgc2RwLnNpemUoKSk7
CisKKyAgICBhdXRvIG1pZCA9IHJ0Y0NhbmRpZGF0ZS0+c2RwX21pZCgpOworICAgIFN0cmluZyBj
YW5kaWRhdGVNaWQobWlkLmRhdGEoKSwgbWlkLnNpemUoKSk7CisKKyAgICBSZWZQdHI8TGliV2Vi
UlRDTWVkaWFFbmRwb2ludD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgbWlkID0gV1RGTW92
ZShjYW5kaWRhdGVNaWQpLCBzZHAgPSBXVEZNb3ZlKGNhbmRpZGF0ZVNEUCldIHsKKyAgICAgICAg
aWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5maXJlSUNFQ2FuZGlk
YXRlRXZlbnQoUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoU3RyaW5nKHNkcCksIFN0cmluZyhtaWQp
LCAwKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25JY2VD
YW5kaWRhdGVzUmVtb3ZlZChjb25zdCBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpDYW5kaWRhdGU+JikK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVu
ZHBvaW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQod2VicnRjOjpTZXNzaW9u
RGVzY3JpcHRpb25JbnRlcmZhY2UqIGRlc2NyaXB0aW9uKQoreworICAgIHN0ZDo6c3RyaW5nIHNk
cDsKKyAgICBkZXNjcmlwdGlvbi0+VG9TdHJpbmcoJnNkcCk7CisgICAgU3RyaW5nIHNkcFN0cmlu
ZyhzZHAuZGF0YSgpLCBzZHAuc2l6ZSgpKTsKKworICAgIFJlZlB0cjxMaWJXZWJSVENNZWRpYUVu
ZHBvaW50PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBzZHAgPSBXVEZNb3ZlKHNkcFN0cmlu
ZyldIHsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9pc0luaXRpYXRvcikKKyAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9m
ZmVyU3VjY2VlZGVkKFN0cmluZyhzZHApKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJv
dGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlQW5zd2VyU3VjY2VlZGVk
KFN0cmluZyhzZHApKTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50
OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qgc3RkOjpzdHJpbmcmIGVycm9y
TWVzc2FnZSkKK3sKKyAgICBTdHJpbmcgZXJyb3IoZXJyb3JNZXNzYWdlLmRhdGEoKSwgZXJyb3JN
ZXNzYWdlLnNpemUoKSk7CisgICAgUmVmUHRyPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsKKyAgICAgICAg
aWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9pc0luaXRpYXRvcikKKyAgICAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVkKEV4Y2Vw
dGlvbiB7IE9wZXJhdGlvbkVycm9yLCBTdHJpbmcoZXJyb3IpIH0pOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jcmVhdGVB
bnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIFN0cmluZyhlcnJvcikgfSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0TG9jYWxTZXNz
aW9uRGVzY3JpcHRpb25TdWNjZWVkZWQoKQoreworICAgIFJlZlB0cjxMaWJXZWJSVENNZWRpYUVu
ZHBvaW50PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7CisgICAgICAgIGlmIChwcm90ZWN0
ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuc2V0TG9jYWxEZXNjcmlwdGlvblN1Y2Nl
ZWRlZCgpOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldExv
Y2FsU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCit7CisgICAgU3RyaW5nIGVycm9yKGVycm9yTWVzc2FnZS5kYXRhKCksIGVycm9yTWVzc2Fn
ZS5zaXplKCkpOworICAgIFJlZlB0cjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7CisgICAgICAgIGlmIChw
cm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
cHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuc2V0TG9jYWxEZXNjcmlwdGlv
bkZhaWxlZChFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgU3RyaW5nKGVycm9yKSB9KTsKKyAg
ICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzZXRSZW1vdGVTZXNzaW9u
RGVzY3JpcHRpb25TdWNjZWVkZWQoKQoreworICAgIFJlZlB0cjxMaWJXZWJSVENNZWRpYUVuZHBv
aW50PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7CisgICAgICAgIGlmIChwcm90ZWN0ZWRU
aGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcHJvdGVjdGVk
VGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuc2V0UmVtb3RlRGVzY3JpcHRpb25TdWNjZWVk
ZWQoKTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzZXRSZW1v
dGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qgc3RkOjpzdHJpbmcmIGVycm9yTWVzc2Fn
ZSkKK3sKKyAgICBTdHJpbmcgZXJyb3IoZXJyb3JNZXNzYWdlLmRhdGEoKSwgZXJyb3JNZXNzYWdl
LnNpemUoKSk7CisgICAgUmVmUHRyPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IHByb3RlY3RlZFRo
aXModGhpcyk7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsKKyAgICAgICAgaWYgKHBy
b3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5zZXRSZW1vdGVEZXNjcmlwdGlv
bkZhaWxlZChFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgU3RyaW5nKGVycm9yKSB9KTsKKyAg
ICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMjMwYTNkYjZiYTZhMzgzMmNhOTdjOTU5NzY4NmRkNzI0MTExNGJiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5oCkBAIC0wLDAgKzEsMTgwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSByZXF1aXJlZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRD
KQorCisjaW5jbHVkZSAiTGliV2ViUlRDVXRpbHMuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuaCIKKyNpbmNsdWRlICJSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCIKKyNp
bmNsdWRlICJSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaCIKKworI2luY2x1ZGUgPHdlYnJ0
Yy9hcGkvanNlcC5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25mYWN0b3J5
Lmg+CisjaW5jbHVkZSA8d2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oPgorI2lu
Y2x1ZGUgPHdlYnJ0Yy9hcGkvcnRjc3RhdHNjb2xsZWN0b3IuaD4KKworbmFtZXNwYWNlIHdlYnJ0
YyB7CitjbGFzcyBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjsKK2NsYXNzIERhdGFD
aGFubmVsSW50ZXJmYWNlOworY2xhc3MgSWNlQ2FuZGlkYXRlSW50ZXJmYWNlOworY2xhc3MgTWVk
aWFTdHJlYW1JbnRlcmZhY2U7CitjbGFzcyBQZWVyQ29ubmVjdGlvbk9ic2VydmVyOworY2xhc3Mg
U2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlOworY2xhc3MgU2V0U2Vzc2lvbkRlc2NyaXB0aW9u
T2JzZXJ2ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTGliV2ViUlRDUHJv
dmlkZXI7CitjbGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CitjbGFzcyBNZWRp
YVN0cmVhbVRyYWNrOworY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOworCitjbGFzcyBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TGliV2ViUlRDTWVk
aWFFbmRwb2ludD4sIHByaXZhdGUgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IGNyZWF0ZShMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQmIHBlZXJDb25uZWN0aW9uLCBMaWJXZWJSVENQcm92
aWRlciYgY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IExpYldlYlJUQ01lZGlhRW5kcG9p
bnQocGVlckNvbm5lY3Rpb24sIGNsaWVudCkpOyB9CisgICAgdmlydHVhbCB+TGliV2ViUlRDTWVk
aWFFbmRwb2ludCgpIHsgfQorCisgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZSYg
YmFja2VuZCgpIGNvbnN0IHsgQVNTRVJUKG1fYmFja2VuZCk7IHJldHVybiAqbV9iYWNrZW5kLmdl
dCgpOyB9CisgICAgdm9pZCBkb1NldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0
aW9uJik7CisgICAgdm9pZCBkb1NldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbiYpOworICAgIHZvaWQgZG9DcmVhdGVPZmZlcigpOworICAgIHZvaWQgZG9DcmVhdGVBbnN3
ZXIoKTsKKyAgICB2b2lkIGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBQZWVyQ29ubmVjdGlv
bjo6U3RhdHNQcm9taXNlJiYpOworCisgICAgdm9pZCBzdG9yZUljZUNhbmRpZGF0ZShzdGQ6OnVu
aXF1ZV9wdHI8d2VicnRjOjpJY2VDYW5kaWRhdGVJbnRlcmZhY2U+JiYgY2FuZGlkYXRlKSB7IG1f
cGVuZGluZ0NhbmRpZGF0ZXMuYXBwZW5kKFdURk1vdmUoY2FuZGlkYXRlKSk7IH0KKyAgICB2b2lk
IGFkZFBlbmRpbmdJY2VDYW5kaWRhdGVzKCk7CisKKyAgICB2b2lkIHN0b3AoKTsKKworcHJpdmF0
ZToKKyAgICBMaWJXZWJSVENNZWRpYUVuZHBvaW50KExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZCYsIExpYldlYlJUQ1Byb3ZpZGVyJik7CisKKyAgICAvLyB3ZWJydGM6OlBlZXJDb25uZWN0
aW9uT2JzZXJ2ZXIgQVBJCisgICAgdm9pZCBPblNpZ25hbGluZ0NoYW5nZSh3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpTaWduYWxpbmdTdGF0ZSkgZmluYWw7CisgICAgdm9pZCBPbkFk
ZFN0cmVhbShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZT4p
IGZpbmFsOworICAgIHZvaWQgT25SZW1vdmVTdHJlYW0ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2U+KSBmaW5hbDsKKyAgICB2b2lkIE9uRGF0YUNoYW5uZWwo
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+KSBmaW5hbDsK
KyAgICB2b2lkIE9uUmVuZWdvdGlhdGlvbk5lZWRlZCgpIGZpbmFsOworICAgIHZvaWQgT25JY2VD
b25uZWN0aW9uQ2hhbmdlKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5l
Y3Rpb25TdGF0ZSkgZmluYWw7CisgICAgdm9pZCBPbkljZUdhdGhlcmluZ0NoYW5nZSh3ZWJydGM6
OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VHYXRoZXJpbmdTdGF0ZSkgZmluYWw7CisgICAg
dm9pZCBPbkljZUNhbmRpZGF0ZShjb25zdCB3ZWJydGM6OkljZUNhbmRpZGF0ZUludGVyZmFjZSop
IGZpbmFsOworICAgIHZvaWQgT25JY2VDYW5kaWRhdGVzUmVtb3ZlZChjb25zdCBzdGQ6OnZlY3Rv
cjxjcmlja2V0OjpDYW5kaWRhdGU+JikgZmluYWw7CisKKyAgICB2b2lkIGNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZCh3ZWJydGM6OlNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSop
OworICAgIHZvaWQgY3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3Ry
aW5nJik7CisgICAgdm9pZCBzZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCgpOwor
ICAgIHZvaWQgc2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qgc3RkOjpzdHJp
bmcmKTsKKyAgICB2b2lkIHNldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCgpOwor
ICAgIHZvaWQgc2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3Ry
aW5nJik7CisgICAgdm9pZCBhZGRTdHJlYW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZSYp
OworICAgIHZvaWQgYWRkRGF0YUNoYW5uZWwocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0
YUNoYW5uZWxJbnRlcmZhY2U+JiYpOworCisgICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJl
dHVybiAhbV9iYWNrZW5kOyB9CisKKyAgICBpbnQgQWRkUmVmKCkgY29uc3QgeyByZWYoKTsgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4ocmVmQ291bnQoKSk7IH0KKyAgICBpbnQgUmVsZWFzZSgpIGNv
bnN0IHsgZGVyZWYoKTsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVmQ291bnQoKSk7IH0KKwor
ICAgIGNsYXNzIENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIGZpbmFsIDogcHVibGlj
IHdlYnJ0Yzo6Q3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoK
KyAgICAgICAgZXhwbGljaXQgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIoTGliV2Vi
UlRDTWVkaWFFbmRwb2ludCAmZW5kcG9pbnQpIDogbV9lbmRwb2ludChlbmRwb2ludCkgeyB9CisK
KyAgICAgICAgdm9pZCBPblN1Y2Nlc3Mod2VicnRjOjpTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZh
Y2UqIHNlc3Npb25EZXNjcmlwdGlvbikgZmluYWwgeyBtX2VuZHBvaW50LmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChzZXNzaW9uRGVzY3JpcHRpb24pOyB9CisgICAgICAgIHZvaWQg
T25GYWlsdXJlKGNvbnN0IHN0ZDo6c3RyaW5nJiBlcnJvcikgZmluYWwgeyBtX2VuZHBvaW50LmNy
ZWF0ZVNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZChlcnJvcik7IH0KKworICAgICAgICBpbnQgQWRk
UmVmKCkgY29uc3QgeyByZXR1cm4gbV9lbmRwb2ludC5BZGRSZWYoKTsgfQorICAgICAgICBpbnQg
UmVsZWFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kcG9pbnQuUmVsZWFzZSgpOyB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBMaWJXZWJSVENNZWRpYUVuZHBvaW50JiBtX2VuZHBvaW50OworICAg
IH07CisKKyAgICBjbGFzcyBTZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIGZpbmFs
IDogcHVibGljIHdlYnJ0Yzo6U2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgeworICAgIHB1
YmxpYzoKKyAgICAgICAgZXhwbGljaXQgU2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZl
cihMaWJXZWJSVENNZWRpYUVuZHBvaW50ICZlbmRwb2ludCkgOiBtX2VuZHBvaW50KGVuZHBvaW50
KSB7IH0KKworICAgICAgICB2b2lkIE9uU3VjY2VzcygpIGZpbmFsIHsgbV9lbmRwb2ludC5zZXRM
b2NhbFNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCgpOyB9CisgICAgICAgIHZvaWQgT25GYWls
dXJlKGNvbnN0IHN0ZDo6c3RyaW5nJiBlcnJvcikgZmluYWwgeyBtX2VuZHBvaW50LnNldExvY2Fs
U2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGVycm9yKTsgfQorCisgICAgICAgIGludCBBZGRSZWYo
KSBjb25zdCB7IHJldHVybiBtX2VuZHBvaW50LkFkZFJlZigpOyB9CisgICAgICAgIGludCBSZWxl
YXNlKCkgY29uc3QgeyByZXR1cm4gbV9lbmRwb2ludC5SZWxlYXNlKCk7IH0KKworICAgIHByaXZh
dGU6CisgICAgICAgIExpYldlYlJUQ01lZGlhRW5kcG9pbnQmIG1fZW5kcG9pbnQ7CisgICAgfTsK
KworICAgIGNsYXNzIFNldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIGZpbmFsIDog
cHVibGljIHdlYnJ0Yzo6U2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgZXhwbGljaXQgU2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIo
TGliV2ViUlRDTWVkaWFFbmRwb2ludCAmZW5kcG9pbnQpIDogbV9lbmRwb2ludChlbmRwb2ludCkg
eyB9CisKKyAgICAgICAgdm9pZCBPblN1Y2Nlc3MoKSBmaW5hbCB7IG1fZW5kcG9pbnQuc2V0UmVt
b3RlU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKCk7IH0KKyAgICAgICAgdm9pZCBPbkZhaWx1
cmUoY29uc3Qgc3RkOjpzdHJpbmcmIGVycm9yKSBmaW5hbCB7IG1fZW5kcG9pbnQuc2V0UmVtb3Rl
U2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGVycm9yKTsgfQorCisgICAgICAgIGludCBBZGRSZWYo
KSBjb25zdCB7IHJldHVybiBtX2VuZHBvaW50LkFkZFJlZigpOyB9CisgICAgICAgIGludCBSZWxl
YXNlKCkgY29uc3QgeyByZXR1cm4gbV9lbmRwb2ludC5SZWxlYXNlKCk7IH0KKworICAgIHByaXZh
dGU6CisgICAgICAgIExpYldlYlJUQ01lZGlhRW5kcG9pbnQmIG1fZW5kcG9pbnQ7CisgICAgfTsK
KworICAgIGNsYXNzIFN0YXRzQ29sbGVjdG9yIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8U3Rh
dHNDb2xsZWN0b3I+LCBwdWJsaWMgd2VicnRjOjpSVENTdGF0c0NvbGxlY3RvckNhbGxiYWNrIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBSZWY8U3RhdHNDb2xsZWN0b3I+IGNyZWF0ZShM
aWJXZWJSVENNZWRpYUVuZHBvaW50JiBlbmRwb2ludCwgUGVlckNvbm5lY3Rpb246OlN0YXRzUHJv
bWlzZSYmIHByb21pc2UsIE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJl
ZigqIG5ldyBTdGF0c0NvbGxlY3RvcihlbmRwb2ludCwgV1RGTW92ZShwcm9taXNlKSwgdHJhY2sp
KTsgfQorICAgIHByaXZhdGU6CisgICAgICAgIFN0YXRzQ29sbGVjdG9yKExpYldlYlJUQ01lZGlh
RW5kcG9pbnQmLCBQZWVyQ29ubmVjdGlvbjo6U3RhdHNQcm9taXNlJiYsIE1lZGlhU3RyZWFtVHJh
Y2sqKTsKKworICAgICAgICB2b2lkIE9uU3RhdHNEZWxpdmVyZWQoY29uc3QgcnRjOjpzY29wZWRf
cmVmcHRyPGNvbnN0IHdlYnJ0Yzo6UlRDU3RhdHNSZXBvcnQ+JikgZmluYWw7CisKKyAgICAgICAg
aW50IEFkZFJlZigpIGNvbnN0IGZpbmFsIHsgcmVmKCk7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KHJlZkNvdW50KCkpOyB9CisgICAgICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmluYWwgeyBkZXJl
ZigpOyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZWZDb3VudCgpKTsgfQorCisgICAgICAgIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQmIG1fZW5kcG9pbnQ7CisgICAgICAgIFBlZXJDb25uZWN0aW9u
OjpTdGF0c1Byb21pc2UgbV9wcm9taXNlOworICAgICAgICBTdHJpbmcgbV9pZDsKKyAgICB9Owor
CisgICAgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBtX3BlZXJDb25uZWN0aW9uQmFj
a2VuZDsKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZT4gbV9iYWNrZW5kOworCisgICAgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIg
bV9jcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjsKKyAgICBTZXRMb2NhbFNlc3Npb25E
ZXNjcmlwdGlvbk9ic2VydmVyIG1fc2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjsK
KyAgICBTZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciBtX3NldFJlbW90ZVNlc3Np
b25EZXNjcmlwdGlvbk9ic2VydmVyOworCisgICAgYm9vbCBtX2lzSW5pdGlhdG9yIHsgZmFsc2Ug
fTsKKworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpJY2VDYW5kaWRhdGVJbnRl
cmZhY2U+PiBtX3BlbmRpbmdDYW5kaWRhdGVzOworICAgIFZlY3RvcjxSZWY8UmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlPj4gbV9hdWRpb1NvdXJjZXM7CisgICAgVmVjdG9yPFJlZjxSZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2U+PiBtX3ZpZGVvU291cmNlczsKKyAgICBWZWN0b3I8UmVmPFN0
YXRzQ29sbGVjdG9yPj4gbV9zdGF0c0NvbGxlY3RvcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI4NjBh
MDRhNjU3NmRmODZmMDkwM2JmMmI5MWYxMTIyMDA0OTRhNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTAsMCArMSwxOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQor
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJJY2VDYW5kaWRhdGUuaCIKKyNpbmNs
dWRlICJMaWJXZWJSVENNZWRpYUVuZHBvaW50LmgiCisjaW5jbHVkZSAiTWVkaWFFbmRwb2ludENv
bmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUlRDSWNlQ2FuZGlk
YXRlLmgiCisjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSVENSdHBS
ZWNlaXZlci5oIgorI2luY2x1ZGUgIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUg
IlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIgorI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5kPiBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQoUlRDUGVlckNvbm5lY3Rpb24mIHBlZXJDb25uZWN0aW9uKQoreworICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5kPihuZXcgTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kKHBlZXJDb25uZWN0aW9uKSk7Cit9CisKK0NyZWF0ZVBlZXJD
b25uZWN0aW9uQmFja2VuZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZSA9IGNyZWF0ZUxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKKworc3RhdGljIGlubGluZSBMaWJXZWJSVENQ
cm92aWRlciYgbGliV2ViUlRDUHJvdmlkZXIoUlRDUGVlckNvbm5lY3Rpb24mIHBlZXJDb25uZWN0
aW9uKQoreworICAgIEFTU0VSVChwZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzRG9jdW1lbnQoKSk7CisgICAgYXV0byogcGFnZSA9IHN0YXRpY19jYXN0PERvY3VtZW50
Kj4ocGVlckNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+cGFnZSgpOworICAg
IHJldHVybiBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpOworfQorCitMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZChSVENQZWVyQ29u
bmVjdGlvbiYgcGVlckNvbm5lY3Rpb24pCisgICAgOiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQocGVl
ckNvbm5lY3Rpb24pCisgICAgLCBtX2VuZHBvaW50KExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNy
ZWF0ZSgqdGhpcywgbGliV2ViUlRDUHJvdmlkZXIocGVlckNvbm5lY3Rpb24pKSkKK3sKK30KKwor
c3RhdGljIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbkZyb21NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50
Q29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgd2VicnRjOjpQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiBydGNDb25maWd1cmF0aW9uKHdlYnJ0Yzo6
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb25UeXBlOjprQWdncmVzc2l2
ZSk7CisKKyAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kgPT0gUGVlckNv
bm5lY3Rpb25TdGF0ZXM6OkljZVRyYW5zcG9ydFBvbGljeTo6UmVsYXkpCisgICAgICAgIHJ0Y0Nv
bmZpZ3VyYXRpb24udHlwZSA9IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtSZWxh
eTsKKworICAgIGlmIChjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSA9PSBQZWVyQ29ubmVjdGlv
blN0YXRlczo6QnVuZGxlUG9saWN5OjpNYXhCdW5kbGUpCisgICAgICAgIHJ0Y0NvbmZpZ3VyYXRp
b24uYnVuZGxlX3BvbGljeSA9IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtCdW5k
bGVQb2xpY3lNYXhCdW5kbGU7CisgICAgZWxzZSBpZiAoY29uZmlndXJhdGlvbi5idW5kbGVQb2xp
Y3kgPT0gUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkJ1bmRsZVBvbGljeTo6TWF4Q29tcGF0KQorICAg
ICAgICBydGNDb25maWd1cmF0aW9uLmJ1bmRsZV9wb2xpY3kgPSB3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjprQnVuZGxlUG9saWN5TWF4Q29tcGF0OworCisgICAgZm9yIChhdXRvJiBz
ZXJ2ZXIgOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMpIHsKKyAgICAgICAgd2VicnRjOjpQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6SWNlU2VydmVyIGljZVNlcnZlcjsKKyAgICAgICAgaWNlU2Vy
dmVyLnVzZXJuYW1lID0gc2VydmVyLnVzZXJuYW1lLnV0ZjgoKS5kYXRhKCk7CisgICAgICAgIGlj
ZVNlcnZlci5wYXNzd29yZCA9IHNlcnZlci5jcmVkZW50aWFsLnV0ZjgoKS5kYXRhKCk7CisgICAg
ICAgIGZvciAoYXV0byYgdXJsIDogc2VydmVyLnVybHMpCisgICAgICAgICAgICBpY2VTZXJ2ZXIu
dXJscy5wdXNoX2JhY2soeyB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSB9KTsKKyAgICAgICAg
cnRjQ29uZmlndXJhdGlvbi5zZXJ2ZXJzLnB1c2hfYmFjayhXVEZNb3ZlKGljZVNlcnZlcikpOwor
ICAgIH0KKworICAgIHJldHVybiBydGNDb25maWd1cmF0aW9uOworfQorCit2b2lkIExpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0Q29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50Q29u
ZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgbV9lbmRwb2ludC0+YmFja2VuZCgp
LlNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbkZyb21NZWRpYUVuZHBvaW50Q29uZmlndXJh
dGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpnZXRTdGF0cyhNZWRpYVN0cmVhbVRyYWNrKiB0cmFjaywgUGVlckNv
bm5lY3Rpb246OlN0YXRzUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgbV9lbmRwb2ludC0+Z2V0
U3RhdHModHJhY2ssIFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIExpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZDo6ZG9TZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbiYgZGVzY3JpcHRpb24pCit7CisgICAgbV9lbmRwb2ludC0+ZG9TZXRMb2NhbERlc2NyaXB0
aW9uKGRlc2NyaXB0aW9uKTsKKyAgICBpZiAoIW1faXNMb2NhbERlc2NyaXB0aW9uU2V0KSB7Cisg
ICAgICAgIGlmIChtX2lzUmVtb3RlRGVzY3JpcHRpb25TZXQpCisgICAgICAgICAgICBtX2VuZHBv
aW50LT5hZGRQZW5kaW5nSWNlQ2FuZGlkYXRlcygpOworICAgICAgICBtX2lzTG9jYWxEZXNjcmlw
dGlvblNldCA9IHRydWU7CisgICAgfQorfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZDo6ZG9TZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uKQoreworICAgIG1fZW5kcG9pbnQtPmRvU2V0UmVtb3RlRGVzY3JpcHRpb24oZGVz
Y3JpcHRpb24pOworICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7CisgICAgICAg
IGlmIChtX2lzTG9jYWxEZXNjcmlwdGlvblNldCkKKyAgICAgICAgICAgIG1fZW5kcG9pbnQtPmFk
ZFBlbmRpbmdJY2VDYW5kaWRhdGVzKCk7CisgICAgICAgIG1faXNSZW1vdGVEZXNjcmlwdGlvblNl
dCA9IHRydWU7CisgICAgfQorfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6ZG9DcmVhdGVPZmZlcihSVENPZmZlck9wdGlvbnMmJikKK3sKKyAgICBtX2VuZHBvaW50LT5k
b0NyZWF0ZU9mZmVyKCk7Cit9CisKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
Ojpkb0NyZWF0ZUFuc3dlcihSVENBbnN3ZXJPcHRpb25zJiYpCit7CisgICAgaWYgKCFtX2lzUmVt
b3RlRGVzY3JpcHRpb25TZXQpIHsKKyAgICAgICAgY3JlYXRlQW5zd2VyRmFpbGVkKEV4Y2VwdGlv
biB7IElOVkFMSURfU1RBVEVfRVJSLCAiTm8gcmVtb3RlIGRlc2NyaXB0aW9uIHNldCIgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9lbmRwb2ludC0+ZG9DcmVhdGVBbnN3ZXIoKTsK
K30KKwordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvU3RvcCgpCit7Cisg
ICAgbV9lbmRwb2ludC0+c3RvcCgpOworfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZDo6ZG9BZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUpCit7
CisgICAgaWYgKCFtX2lzUmVtb3RlRGVzY3JpcHRpb25TZXQpIHsKKyAgICAgICAgYWRkSWNlQ2Fu
ZGlkYXRlRmFpbGVkKEV4Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVfRVJSLCAiTm8gcmVtb3RlIGRl
c2NyaXB0aW9uIHNldCIgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3ZWJydGM6
OlNkcFBhcnNlRXJyb3IgZXJyb3I7CisgICAgaW50IHNkcE1MaW5lSW5kZXggPSBjYW5kaWRhdGUu
c2RwTUxpbmVJbmRleCgpID8gY2FuZGlkYXRlLnNkcE1MaW5lSW5kZXgoKS52YWx1ZSgpIDogMDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpJY2VDYW5kaWRhdGVJbnRlcmZhY2U+IHJ0Y0Nh
bmRpZGF0ZSh3ZWJydGM6OkNyZWF0ZUljZUNhbmRpZGF0ZShjYW5kaWRhdGUuc2RwTWlkKCkudXRm
OCgpLmRhdGEoKSwgc2RwTUxpbmVJbmRleCwgY2FuZGlkYXRlLmNhbmRpZGF0ZSgpLnV0ZjgoKS5k
YXRhKCksICZlcnJvcikpOworCisgICAgaWYgKCFydGNDYW5kaWRhdGUpIHsKKyAgICAgICAgU3Ry
aW5nIG1lc3NhZ2UoZXJyb3IuZGVzY3JpcHRpb24uZGF0YSgpLCBlcnJvci5kZXNjcmlwdGlvbi5z
aXplKCkpOworICAgICAgICBhZGRJY2VDYW5kaWRhdGVGYWlsZWQoRXhjZXB0aW9uIHsgT3BlcmF0
aW9uRXJyb3IsIFdURk1vdmUobWVzc2FnZSkgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBsaWJ3ZWJydGMgZG9lcyBub3QgbGlrZSB0aGF0IGljZSBjYW5kaWRhdGVzIGFyZSBz
ZXQgYmVmb3JlIHRoZSBkZXNjcmlwdGlvbi4KKyAgICBpZiAoIW1faXNMb2NhbERlc2NyaXB0aW9u
U2V0IHx8ICFtX2lzUmVtb3RlRGVzY3JpcHRpb25TZXQpCisgICAgICAgIG1fZW5kcG9pbnQtPnN0
b3JlSWNlQ2FuZGlkYXRlKFdURk1vdmUocnRjQ2FuZGlkYXRlKSk7CisgICAgZWxzZSBpZiAoIW1f
ZW5kcG9pbnQtPmJhY2tlbmQoKS5BZGRJY2VDYW5kaWRhdGUocnRjQ2FuZGlkYXRlLmdldCgpKSkg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYWRkSWNlQ2FuZGlkYXRl
RmFpbGVkKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0
byBhcHBseSB0aGUgcmVjZWl2ZWQgY2FuZGlkYXRlIikgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgYWRkSWNlQ2FuZGlkYXRlU3VjY2VlZGVkKCk7Cit9CisKK3ZvaWQgTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjptYXJrQXNOZWVkaW5nTmVnb3RpYXRpb24oKQoreworICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcworfQorCitSZWY8UlRDUnRwUmVjZWl2ZXI+IExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiB0cmFja0tpbmQsIGNvbnN0IFN0cmluZyYgdHJhY2tJZCkKK3sKKyAgICAv
LyBGSVhNRTogV2UgbmVlZCB0byBjcmVhdGUgYSBzb3VyY2UgdGhhdCB3aWxsIGdldCBmdWVsZWQg
b25jZSB3ZSB3aWxsIHJlY2VpdmUgT25BZGRTdHJlYW0uCisgICAgLy8gRm9yIHRoZSBtb21lbnQs
IHdlIGNyZWF0ZSBhbiBlbXB0eSBvbmUuCisgICAgYXV0byByZW1vdGVUcmFja1ByaXZhdGUgPSAo
dHJhY2tLaW5kID09ICJhdWRpbyIpID8gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShS
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBTdHJpbmcodHJhY2tJ
ZCkpKSA6IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgU3RyaW5nKHRyYWNrSWQpKSk7CisgICAgYXV0byBy
ZW1vdGVUcmFjayA9IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZSgqbV9wZWVyQ29ubmVjdGlvbi5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUocmVtb3RlVHJhY2tQcml2YXRlKSk7CisK
KyAgICByZXR1cm4gUlRDUnRwUmVjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKHJlbW90ZVRyYWNrKSk7
Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IExpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlRGF0YUNoYW5uZWxIYW5kbGVyKGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYgb3B0aW9ucykKK3sKKyAgICBVTlVT
RURfUEFSQU0obGFiZWwpOworICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYyMDNmMGEw
MDI3NGUxYTQzMjQwZGE5YzY5ZTY0NTI1ZTJiODU0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJl
cXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisg
KiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMpCisK
KyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBMaWJXZWJSVENNZWRpYUVuZHBvaW50OworY2xhc3MgUlRDUnRwUmVjZWl2ZXI7
CitjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb247CisKK2NsYXNzIExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZChSVENQZWVy
Q29ubmVjdGlvbiYpOworCitwcml2YXRlOgorICAgIHZvaWQgZG9DcmVhdGVPZmZlcihSVENPZmZl
ck9wdGlvbnMmJikgZmluYWw7CisgICAgdm9pZCBkb0NyZWF0ZUFuc3dlcihSVENBbnN3ZXJPcHRp
b25zJiYpIGZpbmFsOworICAgIHZvaWQgZG9TZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbiYpIGZpbmFsOworICAgIHZvaWQgZG9TZXRSZW1vdGVEZXNjcmlwdGlvbihSVENT
ZXNzaW9uRGVzY3JpcHRpb24mKSBmaW5hbDsKKyAgICB2b2lkIGRvQWRkSWNlQ2FuZGlkYXRlKFJU
Q0ljZUNhbmRpZGF0ZSYpIGZpbmFsOworICAgIHZvaWQgZG9TdG9wKCkgZmluYWw7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gY3JlYXRlRGF0YUNoYW5uZWxIYW5k
bGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYpIGZpbmFsOworICAg
IHZvaWQgc2V0Q29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbiYmKSBmaW5h
bDsKKyAgICB2b2lkIGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBQZWVyQ29ubmVjdGlvbjo6
U3RhdHNQcm9taXNlJiYpIGZpbmFsOworICAgIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlUmVj
ZWl2ZXIoY29uc3QgU3RyaW5nJiB0cmFuc2NlaXZlck1pZCwgY29uc3QgU3RyaW5nJiB0cmFja0tp
bmQsIGNvbnN0IFN0cmluZyYgdHJhY2tJZCkgZmluYWw7CisKKyAgICAvLyBGSVhNRTogQVBJIHRv
IGltcGxlbWVudCBmb3IgcmVhbAorICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IGxv
Y2FsRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisgICAgUmVm
UHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gY3VycmVudExvY2FsRGVzY3JpcHRpb24oKSBjb25z
dCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbj4gcGVuZGluZ0xvY2FsRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxs
cHRyOyB9CisKKyAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiByZW1vdGVEZXNjcmlw
dGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBSZWZQdHI8UlRDU2Vz
c2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbCB7
IHJldHVybiBudWxscHRyOyB9CisgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gcGVu
ZGluZ1JlbW90ZURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQor
CisKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gZ2V0UmVtb3RlU3RyZWFtcygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorCisgICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRw
U2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2U8dm9pZD4mJikg
ZmluYWwgeyB9CisKKyAgICBib29sIGlzTmVnb3RpYXRpb25OZWVkZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgbWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCkgZmlu
YWw7CisgICAgdm9pZCBjbGVhck5lZ290aWF0aW9uTmVlZGVkU3RhdGUoKSBmaW5hbCB7IH0KKwor
ICAgIHZvaWQgZW11bGF0ZVBsYXRmb3JtRXZlbnQoY29uc3QgU3RyaW5nJikgZmluYWwgeyB9CisK
KyAgICBmcmllbmQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDsKKyAgICBSVENQZWVyQ29ubmVjdGlv
biYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fcGVlckNvbm5lY3Rpb247IH0KKworcHJpdmF0ZToK
KyAgICBSZWY8TGliV2ViUlRDTWVkaWFFbmRwb2ludD4gbV9lbmRwb2ludDsKKyAgICBib29sIG1f
aXNMb2NhbERlc2NyaXB0aW9uU2V0IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNSZW1vdGVEZXNj
cmlwdGlvblNldCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNjMjc3OWVlMDBjNDgzYWJkM2Q2ZmU3MmI3NmUw
MjQ0ZTA1YTVhNTIuLmM0YTFjZWEyMjQyZjA3NzliY2RkYjQxYjM5NWNiYTE2Zjg1NmEzYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE1NjEsNiArMTU2MSwxMCBAQAogCQk0MTcwQTJFQTFEOEMwQ0NBMDAzMTg0NTIgLyogSlNE
T01XcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNzBBMkU5MUQ4QzBDQzAwMDMxODQ1MiAvKiBKU0RPTVdyYXBwZXIuY3BwICovOyB9Owog
CQk0MTcyNTNBQTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3MjUzQTgxMzU0
QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLzsgfTsKIAkJNDE3MjUz
QUIxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTcyNTNBOTEzNTRCQkJDMDAzNjBG
MkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKKwkJNDE3NjEyQUYxRTNBOTk0MDAw
QzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3NjEyQUIxRTNBOTkzQjAwQzNEODFEIC8qIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwICovOyB9OworCQk0MTc2MTJCMDFFM0E5OTQwMDBDM0Q4
MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3NjEyQUMxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJU
Q01lZGlhRW5kcG9pbnQuaCAqLzsgfTsKKwkJNDE3NjEyQjExRTNBOTk0MDAwQzNEODFEIC8qIExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2MTJBRDFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCAqLzsgfTsKKwkJNDE3NjEyQjIxRTNBOTk0MDAw
QzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3NjEyQUUxRTNBOTkzQjAwQzNEODFE
IC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oICovOyB9OwogCQk0MTdEQTZEOTEz
NzM0RTZFMDA3QzU3RkIgLyogSW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxN0RBNENGMTM3MzQzMjYwMDdDNTdGQiAvKiBJbnRlcm5h
bHMuY3BwICovOyB9OwogCQk0MTdEQTZEQTEzNzM0RTZFMDA3QzU3RkIgLyogSW50ZXJuYWxzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTdEQTRDRTEz
NzM0MzI2MDA3QzU3RkIgLyogSW50ZXJuYWxzLmggKi87IH07CiAJCTQxN0RBNzFEMTM3MzVERkEw
MDdDNTdGQiAvKiBKU0ludGVybmFscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTdEQTcxQjEzNzM1REZBMDA3QzU3RkIgLyogSlNJbnRlcm5hbHMu
Y3BwICovOyB9OwpAQCAtODczNiw2ICs4NzQwLDEwIEBACiAJCTQxNzBBMkU5MUQ4QzBDQzAwMDMx
ODQ1MiAvKiBKU0RPTVdyYXBwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNET01XcmFwcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3
MjUzQTgxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8q
IE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lZGlhQ29udHJvbEVsZW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
NzYxMkFCMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ01lZGlhRW5kcG9pbnQu
Y3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MTc2MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50Lmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRw
b2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTc2MTJBRDFFM0E5OTNCMDBD
M0Q4MUQgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHA7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE3NjEyQUUxRTNBOTkzQjAwQzNEODFEIC8q
IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDsgcGF0aCA9IGxpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE3REE0Q0UxMzczNDMyNjAwN0M1N0ZCIC8qIEludGVybmFscy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcm5hbHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE3REE0Q0YxMzczNDMyNjAwN0M1N0ZCIC8qIEludGVybmFscy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRlcm5hbHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTdEQTZEMDEzNzM0RTAyMDA3QzU3RkIgLyogbGli
V2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4
cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgaW5jbHVkZUluSW5kZXgg
PSAwOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMTUxMTEsNiArMTUxMTksNyBAQAogCQkwNzIyMUI0NjE3
Q0VDMzI3MDA4NDhFNTEgLyogbWVkaWFzdHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTQxNzYxMkFBMUUzQTk5MjMwMEMzRDgxRCAvKiBsaWJ3ZWJy
dGMgKi8sCiAJCQkJMDczNzk0RUQxOUVFMzY0MjAwRTVBMDQ1IC8qIERPTVVSTE1lZGlhU3RyZWFt
LmNwcCAqLywKIAkJCQkxNUZDQzlGRDFCNERGODU2MDBFNzIzMjYgLyogRE9NVVJMTWVkaWFTdHJl
YW0uaCAqLywKIAkJCQkwNzM3OTRFRTE5RUUzNjQyMDBFNUEwNDUgLyogRE9NVVJMTWVkaWFTdHJl
YW0uaWRsICovLApAQCAtMTY2NjAsNiArMTY2NjksMTcgQEAKIAkJCW5hbWUgPSBsaWJ3ZWJydGM7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0MTc2MTJBQTFFM0E5OTIzMDBD
M0Q4MUQgLyogbGlid2VicnRjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQk0MTc2MTJBQjFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRw
b2ludC5jcHAgKi8sCisJCQkJNDE3NjEyQUMxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQuaCAqLywKKwkJCQk0MTc2MTJBRDFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCAqLywKKwkJCQk0MTc2MTJBRTFFM0E5OTNCMDBD
M0Q4MUQgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggKi8sCisJCQkpOworCQkJ
bmFtZSA9IGxpYndlYnJ0YzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQx
N0RBNENEMTM3MzQyMDQwMDdDNTdGQiAvKiB0ZXN0aW5nICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI0OTcwLDYgKzI0OTkwLDcgQEAKIAkJCQkzMTk4NDgw
MTFBMUQ4MTdCMDBBMTMzMTggLyogQW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5RTkxMkFEMEVGQUM5MDYwMDlEMENBRiAvKiBBbmltYXRpb25MaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkzMURDRDI5RDFBQjRGQkRFMDA3MkU4MTcgLyogQW5pbWF0aW9uVHJpZ2dlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDE3NjEyQjAxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwRkFGMTQ5ODAwRDQwMEZCNUJE
OCAvKiBBbmltYXRpb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REQ3MDk5
RTY0OTIwMDU2RTU4MSAvKiBBcHBlbmROb2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0M2NTc5RTMxRTAwODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaCBpbiBIZWFkZXJz
ICovLApAQCAtMjc4MzMsNiArMjc4NTQsNyBAQAogCQkJCUE4RUE4MDBDMEExOTUxNkUwMEE4RUY1
RiAvKiBTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEY5RUVGMzE1NkRBMDA3MDBE
MjNFN0UgLyogU3R5bGVTaGVldENvbnRlbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAw
QTBBMTk1MTZFMDBBOEVGNUYgLyogU3R5bGVTaGVldExpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQxNzYxMkIyMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNUU1MEU4MUJGNkQwMEIyNTk2NSAvKiBTdHls
ZVN1cnJvdW5kRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI4MTAwRTgxRjJDRTAwQjI1
OTY1IC8qIFN0eWxlVHJhbnNmb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRERUFBMTgx
N0E5M0RDMzAwMEUwNDMwIC8qIFN0eWxlVHJlZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTI5MTYxLDYgKzI5MTgzLDcgQEAKIAkJCQlFMUI0Q0QyNTEwQjMyMkUyMDBCRkZEN0UgLyogQ3Jl
ZGVudGlhbFN0b3JhZ2VNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDQ4MUYwMDE0NkI1QzRD
MDBBQTc4MzQgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTFDNDE2MTcwRjY1NjMxODAwOTJEMkZCIC8qIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTc2MTJCMTFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxQUJFNjdD
MUQwNTgwRTAwMDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTFDNDE1REUwRjY1NUQ3QzAwOTJEMkZCIC8qIENyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE2OTgwNDkxMTMzNjQ0
NzAwODk0MTE1IC8qIENSdW50aW1lT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA0NzUs
NiArMzA0OTgsNyBAQAogCQkJCUIyRkEzREJBMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhT
ZWdBcmNSZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEQkMwQUI3NUE2RjAwMEU1QUM0
IC8qIEpTU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0RC
RTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTQxNzYxMkFGMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRp
YUVuZHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzREMwMEFCNzVBNkYwMDBFNUFD
NCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjJGQTNEQzIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290
aEFicy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0RDNDBBQjc1QTZGMDAwRTVBQzQgLyog
SlNTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299890</attachid>
            <date>2017-01-26 17:58:55 -0800</date>
            <delta_ts>2017-01-26 21:34:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167289-20170126175652.patch</filename>
            <type>text/plain</type>
            <size>52207</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWE0OGE0NWRjMTQ0OTAx
N2EzMmU2MThmNThjMjg2NGNkMzE2YzhmNC4uMmQ2Mzg5MDQ5ZWJhZGMwMzZkYzcxYmRmMDU4N2Fj
MDljYzMxMmFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE3LTAxLTI2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gSW1wbGVt
ZW50IFdlYlJUQyBQZWVyQ29ubmVjdGlvbiBiYWNrZW5kIGJhc2VkIG9uIGxpYndlYnJ0YworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3Mjg5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNpbmcg
YW4gaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBXZWJSVEMgcGVlciBjb25uZWN0aW9uIGJhY2tl
bmQgYmFzZWQgb24gTGliV2ViUlRDLgorICAgICAgICBUaGlzIGlzIGRvbmUgYmVoaW5kIGEgY29t
cGlsYXRpb24gZmxhZyB3aGljaCBpcyBvZmYgYnkgZGVmYXVsdCwgdW50aWwgdGhlIGltcGxlbWVu
dGF0aW9uIGlzIHJlYWR5LgorCisgICAgICAgIFRoZSBiYWNrZW5kIGltcGxlbWVudHMgdGhlIFBl
ZXJDb25uZWN0aW9uQmFja2VuZCBBUEkuCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBz
cGxpdCBpbnRvIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCB3aGljaCBjb250YWlucyBt
b3N0bHkgZ2VuZXJpYyBjb2RlIGFuZAorICAgICAgICBwYXNzZXMgdGhlIHJlYWwgd29yayB0byBM
aWJXZWJSVENNZWRpYUVuZHBvaW50LgorICAgICAgICBUaGUgbGF0dGVyIGNsYXNzIGlzIGltcGxl
bWVudGluZyB0aGUgQVBJIHVzaW5nIExpYldlYlJUQy4KKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OkxpYldlYlJUQ01lZGlhRW5k
cG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6c2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb1NldExvY2FsRGVzY3JpcHRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9TZXRSZW1v
dGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50
OjphZGRQZW5kaW5nSWNlQ2FuZGlkYXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpzdHJlYW1JZCk6
CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb0NyZWF0ZU9mZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvQ3JlYXRlQW5z
d2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmdldFN0YXRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OlN0YXRzQ29sbGVj
dG9yOjpTdGF0c0NvbGxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVu
ZHBvaW50OjpTdGF0c0NvbGxlY3Rvcjo6T25TdGF0c0RlbGl2ZXJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpzaWduYWxpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVu
ZHBvaW50OjpPblNpZ25hbGluZ0NoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjp0cmFja0lkKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1lZGlhU3RyZWFtVHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkU3RyZWFtKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uQWRkU3RyZWFtKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uUmVtb3ZlU3RyZWFtKToKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uRGF0YUNoYW5uZWwpOgorICAgICAgICAo
V2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPblJlbmVnb3RpYXRpb25OZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6aWNlQ29ubmVjdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6Ok9uSWNlQ29ubmVjdGlvbkNoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkljZUdhdGhlcmluZ0NoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkljZUNhbmRpZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkljZUNhbmRpZGF0ZXNS
ZW1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0
ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENNZWRpYUVuZHBvaW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0TG9jYWxTZXNzaW9uRGVzY3Jp
cHRpb25TdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6c2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2Vl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldFJlbW90
ZVNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUxpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpsaWJXZWJSVENQcm92aWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkxpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpjb25maWd1cmF0aW9u
RnJvbU1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0Q29uZmlndXJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmdldFN0YXRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9TZXRMb2NhbERl
c2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZDo6ZG9TZXRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvQ3JlYXRlT2ZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb0NyZWF0ZUFuc3dlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvU3RvcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvQWRkSWNl
Q2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZDo6bWFya0FzTmVlZGluZ05lZ290aWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVEYXRhQ2hhbm5lbEhh
bmRsZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTctMDEtMjYgIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBTaW1wbGUgbGluZSBsYXlvdXQ6IEFkZCBzdXBwb3J0IGZv
ciAtd2Via2l0LWh5cGhlbmF0ZS1saW1pdC1hZnRlciBhbmQgLXdlYmtpdC1oeXBoZW5hdGUtbGlt
aXQtYmVmb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM0ZjQwNjMxZDYzNDlkZmYwNGJiNDM3OGQzZDE3OGJjOGQ0ZDU5NTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcApAQCAtMCwwICsxLDQ0OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIgorCisjaWYgVVNFKExJQldF
QlJUQykKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgorI2lu
Y2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1FdmVudC5oIgor
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVz
LmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWwuaCIKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5l
bEV2ZW50LmgiCisjaW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRlLmgiCisjaW5jbHVkZSAiUlRDUGVl
ckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRpb24uaCIKKyNpbmNs
dWRlICJSVENUcmFja0V2ZW50LmgiCisjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgiCisjaW5jbHVk
ZSA8d2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3ZWJydGMv
YmFzZS9waHlzaWNhbHNvY2tldHNlcnZlci5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9wMnAvYmFzZS9i
YXNpY3BhY2tldHNvY2tldGZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3ZWJydGMvcDJwL2NsaWVudC9i
YXNpY3BvcnRhbGxvY2F0b3IuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCisjaW5j
bHVkZSAiQ29yZU1lZGlhU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpMaWJXZWJSVENNZWRpYUVuZHBvaW50KExpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZCYgcGVlckNvbm5lY3Rpb24sIExpYldlYlJUQ1Byb3ZpZGVyJiBjbGll
bnQpCisgICAgOiBtX3BlZXJDb25uZWN0aW9uQmFja2VuZChwZWVyQ29ubmVjdGlvbikKKyAgICAs
IG1fYmFja2VuZChjbGllbnQuY3JlYXRlUGVlckNvbm5lY3Rpb24oKnRoaXMpKQorICAgICwgbV9j
cmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcigqdGhpcykKKyAgICAsIG1fc2V0TG9jYWxT
ZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcigqdGhpcykKKyAgICAsIG1fc2V0UmVtb3RlU2Vzc2lv
bkRlc2NyaXB0aW9uT2JzZXJ2ZXIoKnRoaXMpCit7CisgICAgQVNTRVJUKG1fYmFja2VuZCk7Cit9
CisKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogc2Vzc2lvbkRlc2NyaXB0aW9uVHlwZShSVENT
ZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGUgc2RwVHlwZSkKK3sKKyAgICBzd2l0Y2ggKHNkcFR5
cGUpIHsKKyAgICBjYXNlIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6U2RwVHlwZTo6T2ZmZXI6Cisg
ICAgICAgIHJldHVybiAib2ZmZXIiOworICAgIGNhc2UgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpT
ZHBUeXBlOjpQcmFuc3dlcjoKKyAgICAgICAgcmV0dXJuICJwcmFuc3dlciI7CisgICAgY2FzZSBS
VENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6OkFuc3dlcjoKKyAgICAgICAgcmV0dXJuICJh
bnN3ZXIiOworICAgIGNhc2UgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpSb2xsYmFj
azoKKyAgICAgICAgcmV0dXJuICJyb2xsYmFjayI7CisgICAgfQorfQorCit2b2lkIExpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6OmRvU2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRp
b24mIGRlc2NyaXB0aW9uKQoreworICAgIHdlYnJ0Yzo6U2RwUGFyc2VFcnJvciBlcnJvcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U+IHNl
c3Npb25EZXNjcmlwdGlvbih3ZWJydGM6OkNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbihzZXNzaW9u
RGVzY3JpcHRpb25UeXBlKGRlc2NyaXB0aW9uLnR5cGUoKSksIGRlc2NyaXB0aW9uLnNkcCgpLnV0
ZjgoKS5kYXRhKCksICZlcnJvcikpOworCisgICAgaWYgKCFzZXNzaW9uRGVzY3JpcHRpb24pIHsK
KyAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZShlcnJvci5kZXNjcmlwdGlvbi5kYXRhKCksIGVy
cm9yLmRlc2NyaXB0aW9uLnNpemUoKSk7CisgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5k
LnNldExvY2FsRGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIFdU
Rk1vdmUoZXJyb3JNZXNzYWdlKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2Jh
Y2tlbmQtPlNldExvY2FsRGVzY3JpcHRpb24oJm1fc2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25P
YnNlcnZlciwgc2Vzc2lvbkRlc2NyaXB0aW9uLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgTGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6ZG9TZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uKQoreworICAgIHdlYnJ0Yzo6U2RwUGFyc2VFcnJvciBlcnJvcjsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U+
IHNlc3Npb25EZXNjcmlwdGlvbih3ZWJydGM6OkNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbihzZXNz
aW9uRGVzY3JpcHRpb25UeXBlKGRlc2NyaXB0aW9uLnR5cGUoKSksIGRlc2NyaXB0aW9uLnNkcCgp
LnV0ZjgoKS5kYXRhKCksICZlcnJvcikpOworICAgIGlmICghc2Vzc2lvbkRlc2NyaXB0aW9uKSB7
CisgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UoZXJyb3IuZGVzY3JpcHRpb24uZGF0YSgpLCBl
cnJvci5kZXNjcmlwdGlvbi5zaXplKCkpOworICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5zZXRSZW1vdGVEZXNjcmlwdGlvbkZhaWxlZChFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwg
V1RGTW92ZShlcnJvck1lc3NhZ2UpIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1f
YmFja2VuZC0+U2V0UmVtb3RlRGVzY3JpcHRpb24oJm1fc2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0
aW9uT2JzZXJ2ZXIsIHNlc3Npb25EZXNjcmlwdGlvbi5yZWxlYXNlKCkpOworfQorCit2b2lkIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFBlbmRpbmdJY2VDYW5kaWRhdGVzKCkKK3sKKyAgICB3
aGlsZSAobV9wZW5kaW5nQ2FuZGlkYXRlcy5zaXplKCkpCisgICAgICAgIG1fYmFja2VuZC0+QWRk
SWNlQ2FuZGlkYXRlKG1fcGVuZGluZ0NhbmRpZGF0ZXMudGFrZUxhc3QoKS5yZWxlYXNlKCkpOwor
fQorCitzdGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5nIHN0cmVhbUlkKFJUQ1BlZXJDb25uZWN0aW9u
JiBjb25uZWN0aW9uKQoreworICAgIGF1dG8mIHNlbmRlcnMgPSBjb25uZWN0aW9uLmdldFNlbmRl
cnMoKTsKKyAgICBpZiAoc2VuZGVycy5zaXplKCkpIHsKKyAgICAgICAgZm9yIChSVENSdHBTZW5k
ZXImIHNlbmRlciA6IHNlbmRlcnMpIHsKKyAgICAgICAgICAgIGF1dG8qIHRyYWNrID0gc2VuZGVy
LnRyYWNrKCk7CisgICAgICAgICAgICBpZiAodHJhY2spIHsKKyAgICAgICAgICAgICAgICBBU1NF
UlQoc2VuZGVyLm1lZGlhU3RyZWFtSWRzKCkuc2l6ZSgpID09IDEpOworICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6OnN0cmluZyhzZW5kZXIubWVkaWFTdHJlYW1JZHMoKS5maXJzdCgpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAi
YXZfbGFiZWwiOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvQ3JlYXRlT2Zm
ZXIoKQoreworICAgIG1faXNJbml0aWF0b3IgPSB0cnVlOworICAgIGF1dG8mIHNlbmRlcnMgPSBt
X3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuZ2V0U2VuZGVycygpOworICAgIGlm
IChzZW5kZXJzLnNpemUoKSkgeworICAgICAgICAvLyBGSVhNRTogV2Ugb25seSBzdXBwb3J0IG9u
ZSBzdHJlYW0gZm9yIHRoZSBtb21lbnQuCisgICAgICAgIGF1dG8gc3RyZWFtID0gcGVlckNvbm5l
Y3Rpb25GYWN0b3J5KCkuQ3JlYXRlTG9jYWxNZWRpYVN0cmVhbShzdHJlYW1JZChtX3BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkpKTsKKyAgICAgICAgZm9yIChSVENSdHBTZW5kZXIm
IHNlbmRlciA6IHNlbmRlcnMpIHsKKyAgICAgICAgICAgIGF1dG8qIHRyYWNrID0gc2VuZGVyLnRy
YWNrKCk7CisgICAgICAgICAgICBpZiAodHJhY2spIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
c2VuZGVyLm1lZGlhU3RyZWFtSWRzKCkuc2l6ZSgpID09IDEpOworICAgICAgICAgICAgICAgIGF1
dG8mIHNvdXJjZSA9IHRyYWNrLT5zb3VyY2UoKTsKKyAgICAgICAgICAgICAgICBpZiAoc291cmNl
LnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykgeworICAgICAgICAgICAgICAg
ICAgICBhdXRvIHRyYWNrU291cmNlID0gUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpjcmVh
dGUoc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBydGNUcmFjayA9IHBlZXJDb25u
ZWN0aW9uRmFjdG9yeSgpLkNyZWF0ZUF1ZGlvVHJhY2sodHJhY2stPmlkKCkudXRmOCgpLmRhdGEo
KSwgdHJhY2tTb3VyY2UucHRyKCkpOworICAgICAgICAgICAgICAgICAgICB0cmFja1NvdXJjZS0+
c2V0VHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4o
cnRjVHJhY2spKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hdWRpb1NvdXJjZXMuYXBwZW5kKFdU
Rk1vdmUodHJhY2tTb3VyY2UpKTsKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5BZGRUcmFj
ayhXVEZNb3ZlKHJ0Y1RyYWNrKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgbV92aWRlb1NvdXJjZXMuYXBwZW5kKFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZTo6Y3JlYXRlKHNvdXJjZSkpOworICAgICAgICAgICAgICAgICAgICBzdHJlYW0tPkFkZFRy
YWNrKHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpLkNyZWF0ZVZpZGVvVHJhY2sodHJhY2stPmlkKCku
dXRmOCgpLmRhdGEoKSwgbV92aWRlb1NvdXJjZXMubGFzdCgpLnB0cigpKSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1fYmFja2VuZC0+QWRk
U3RyZWFtKHN0cmVhbSk7CisgICAgfQorICAgIG1fYmFja2VuZC0+Q3JlYXRlT2ZmZXIoJm1fY3Jl
YXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIsIG51bGxwdHIpOworfQorCit2b2lkIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6OmRvQ3JlYXRlQW5zd2VyKCkKK3sKKyAgICBtX2lzSW5pdGlhdG9y
ID0gZmFsc2U7CisKKyAgICBhdXRvJiBzZW5kZXJzID0gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y29ubmVjdGlvbigpLmdldFNlbmRlcnMoKTsKKyAgICBpZiAoc2VuZGVycy5zaXplKCkpIHsKKyAg
ICAgICAgLy8gRklYTUU6IFdlIG9ubHkgc3VwcG9ydCBvbmUgc3RyZWFtIGZvciB0aGUgbW9tZW50
LgorICAgICAgICBhdXRvIHN0cmVhbSA9IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpLkNyZWF0ZUxv
Y2FsTWVkaWFTdHJlYW0oc3RyZWFtSWQobV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlv
bigpKSk7CisgICAgICAgIGZvciAoUlRDUnRwU2VuZGVyJiBzZW5kZXIgOiBzZW5kZXJzKSB7Cisg
ICAgICAgICAgICBhdXRvKiB0cmFjayA9IHNlbmRlci50cmFjaygpOworICAgICAgICAgICAgaWYg
KHRyYWNrKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNlbmRlci5tZWRpYVN0cmVhbUlkcygp
LnNpemUoKSA9PSAxKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzb3VyY2UgPSB0cmFjay0+c291
cmNlKCk7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS50eXBlKCkgPT0gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6QXVkaW8pIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byB0cmFja1NvdXJjZSA9
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKHNvdXJjZSk7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gcnRjVHJhY2sgPSBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKS5DcmVhdGVB
dWRpb1RyYWNrKHRyYWNrLT5pZCgpLnV0ZjgoKS5kYXRhKCksIHRyYWNrU291cmNlLnB0cigpKTsK
KyAgICAgICAgICAgICAgICAgICAgdHJhY2tTb3VyY2UtPnNldFRyYWNrKHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+KHJ0Y1RyYWNrKSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKHRyYWNrU291cmNlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHN0cmVhbS0+QWRkVHJhY2soV1RGTW92ZShydGNUcmFjaykpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1fdmlkZW9Tb3Vy
Y2VzLmFwcGVuZChSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZShzb3VyY2UpKTsK
KyAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5BZGRUcmFjayhwZWVyQ29ubmVjdGlvbkZhY3Rv
cnkoKS5DcmVhdGVWaWRlb1RyYWNrKHRyYWNrLT5pZCgpLnV0ZjgoKS5kYXRhKCksIG1fdmlkZW9T
b3VyY2VzLmxhc3QoKS5wdHIoKSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBtX2JhY2tlbmQtPkFkZFN0cmVhbShzdHJlYW0pOworICAgIH0K
KyAgICBtX2JhY2tlbmQtPkNyZWF0ZUFuc3dlcigmbV9jcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25P
YnNlcnZlciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Z2V0
U3RhdHMoTWVkaWFTdHJlYW1UcmFjayogdHJhY2ssIFBlZXJDb25uZWN0aW9uOjpTdGF0c1Byb21p
c2UmJiBwcm9taXNlKQoreworICAgIGF1dG8gY29sbGVjdG9yID0gU3RhdHNDb2xsZWN0b3I6OmNy
ZWF0ZSgqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgdHJhY2spOworICAgIG1fYmFja2VuZC0+R2V0
U3RhdHMoY29sbGVjdG9yLnB0cigpKTsKKyAgICBtX3N0YXRzQ29sbGVjdG9ycy5hcHBlbmQoV1RG
TW92ZShjb2xsZWN0b3IpKTsKK30KKworTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6U3RhdHNDb2xs
ZWN0b3I6OlN0YXRzQ29sbGVjdG9yKExpYldlYlJUQ01lZGlhRW5kcG9pbnQmIGVuZHBvaW50LCBQ
ZWVyQ29ubmVjdGlvbjo6U3RhdHNQcm9taXNlJiYgcHJvbWlzZSwgTWVkaWFTdHJlYW1UcmFjayog
dHJhY2spCisgICAgOiBtX2VuZHBvaW50KGVuZHBvaW50KQorICAgICwgbV9wcm9taXNlKFdURk1v
dmUocHJvbWlzZSkpCit7CisgICAgaWYgKHRyYWNrKQorICAgICAgICBtX2lkID0gdHJhY2stPmlk
KCk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6U3RhdHNDb2xsZWN0b3I6Ok9u
U3RhdHNEZWxpdmVyZWQoY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPGNvbnN0IHdlYnJ0Yzo6UlRD
U3RhdHNSZXBvcnQ+JiByZXBvcnQpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcmVw
b3J0LCBwcm90ZWN0b3IgPSBtYWtlUmVmKG1fZW5kcG9pbnQpXSB7CisgICAgICAgIC8vIEZJWE1F
OiBGdWxmaWxsIHByb21pc2Ugd2l0aCB0aGUgcmVwb3J0CisgICAgICAgIFVOVVNFRF9QQVJBTShy
ZXBvcnQpOworICAgICAgICBtX3Byb21pc2UucmVqZWN0KFR5cGVFcnJvciwgQVNDSUlMaXRlcmFs
KCJTdGF0cyBBUEkgaXMgbm90IHlldCBpbXBsZW1lbnRlZCIpKTsKKworICAgICAgICBtX2VuZHBv
aW50Lm1fc3RhdHNDb2xsZWN0b3JzLnJlbW92ZUZpcnN0TWF0Y2hpbmcoW3RoaXNdKGNvbnN0IFJl
ZjxTdGF0c0NvbGxlY3Rvcj4mIGNvbGxlY3RvcikgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMg
PT0gY29sbGVjdG9yLnB0cigpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworc3RhdGljIFBl
ZXJDb25uZWN0aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZSBzaWduYWxpbmdTdGF0ZSh3ZWJydGM6
OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpTaWduYWxpbmdTdGF0ZSBzdGF0ZSkKK3sKKyAgICBz
d2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjprU3RhYmxlOgorICAgICAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGlu
Z1N0YXRlOjpTdGFibGU7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjprSGF2ZUxvY2FsT2ZmZXI6CisgICAgICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblN0YXRlczo6
U2lnbmFsaW5nU3RhdGU6OkhhdmVMb2NhbE9mZmVyOworICAgIGNhc2Ugd2VicnRjOjpQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6a0hhdmVMb2NhbFByQW5zd2VyOgorICAgICAgICByZXR1cm4gUGVl
ckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGluZ1N0YXRlOjpIYXZlTG9jYWxQckFuc3dlcjsKKyAg
ICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtIYXZlUmVtb3RlT2ZmZXI6
CisgICAgICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblN0YXRlczo6U2lnbmFsaW5nU3RhdGU6Okhh
dmVSZW1vdGVPZmZlcjsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OmtIYXZlUmVtb3RlUHJBbnN3ZXI6CisgICAgICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblN0YXRl
czo6U2lnbmFsaW5nU3RhdGU6OkhhdmVSZW1vdGVQckFuc3dlcjsKKyAgICBjYXNlIHdlYnJ0Yzo6
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtDbG9zZWQ6CisgICAgICAgIHJldHVybiBQZWVyQ29u
bmVjdGlvblN0YXRlczo6U2lnbmFsaW5nU3RhdGU6OkNsb3NlZDsKKyAgICB9Cit9CisKK3ZvaWQg
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25TaWduYWxpbmdDaGFuZ2Uod2VicnRjOjpQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6U2lnbmFsaW5nU3RhdGUgcnRjU3RhdGUpCit7CisgICAgYXV0byBz
dGF0ZSA9IHNpZ25hbGluZ1N0YXRlKHJ0Y1N0YXRlKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0YXRlXSB7CisgICAgICAgIGlmIChwcm90
ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcHJv
dGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQudXBkYXRlU2lnbmFsaW5nU3RhdGUo
c3RhdGUpOworICAgIH0pOworfQorCitzdGF0aWMgaW5saW5lIFN0cmluZyB0cmFja0lkKHdlYnJ0
Yzo6TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZSYgdmlkZW9UcmFjaykKK3sKKyAgICByZXR1cm4g
U3RyaW5nKHZpZGVvVHJhY2suaWQoKS5kYXRhKCksIHZpZGVvVHJhY2suaWQoKS5zaXplKCkpOwor
fQorCitzdGF0aWMgaW5saW5lIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiBjcmVhdGVNZWRpYVN0cmVh
bVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxSZWFsdGltZU1lZGlh
U291cmNlPiYmIHJlbW90ZVNvdXJjZSkKK3sKKyAgICBTdHJpbmcgdHJhY2tJZCA9IHJlbW90ZVNv
dXJjZS0+aWQoKTsKKyAgICByZXR1cm4gTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRleHQs
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoV1RGTW92ZShyZW1vdGVTb3VyY2UpLCBX
VEZNb3ZlKHRyYWNrSWQpKSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRk
U3RyZWFtKHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2UmIHN0cmVhbSkKK3sKKyAgICBNZWRp
YVN0cmVhbVRyYWNrVmVjdG9yIHRyYWNrczsKKyAgICBmb3IgKGF1dG8mIHZpZGVvVHJhY2sgOiBz
dHJlYW0uR2V0VmlkZW9UcmFja3MoKSkgeworICAgICAgICBBU1NFUlQodmlkZW9UcmFjayk7Cisg
ICAgICAgIFN0cmluZyBpZCA9IHRyYWNrSWQoKnZpZGVvVHJhY2spOworICAgICAgICBhdXRvIHJl
bW90ZVNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKFdURk1vdmUo
dmlkZW9UcmFjayksIFdURk1vdmUoaWQpKTsKKyAgICAgICAgdHJhY2tzLmFwcGVuZChjcmVhdGVN
ZWRpYVN0cmVhbVRyYWNrKCptX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKHJlbW90ZVNvdXJjZSkpKTsKKyAgICB9Cisg
ICAgZm9yIChhdXRvJiBhdWRpb1RyYWNrIDogc3RyZWFtLkdldEF1ZGlvVHJhY2tzKCkpIHsKKyAg
ICAgICAgQVNTRVJUKGF1ZGlvVHJhY2spOworICAgICAgICBTdHJpbmcgaWQgPSB0cmFja0lkKCph
dWRpb1RyYWNrKTsKKyAgICAgICAgYXV0byByZW1vdGVTb3VyY2UgPSBSZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2U6OmNyZWF0ZShXVEZNb3ZlKGF1ZGlvVHJhY2spLCBXVEZNb3ZlKGlkKSk7Cisg
ICAgICAgIHRyYWNrcy5hcHBlbmQoY3JlYXRlTWVkaWFTdHJlYW1UcmFjaygqbV9wZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92
ZShyZW1vdGVTb3VyY2UpKSk7CisgICAgfQorCisgICAgYXV0byBuZXdTdHJlYW0gPSBNZWRpYVN0
cmVhbTo6Y3JlYXRlKCptX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKHRyYWNrcykpOworICAgIG1fcGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNvbm5lY3Rpb24oKS5maXJlRXZlbnQoTWVkaWFTdHJlYW1FdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5hZGRzdHJlYW1FdmVudCwgZmFsc2UsIGZhbHNlLCBuZXdTdHJlYW0uY29w
eVJlZigpKSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gc3RyZWFtczsKKyAg
ICBzdHJlYW1zLmFwcGVuZChuZXdTdHJlYW0uY29weVJlZigpKTsKKyAgICBmb3IgKGF1dG8mIHRy
YWNrIDogbmV3U3RyZWFtLT5nZXRUcmFja3MoKSkKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY29ubmVjdGlvbigpLmZpcmVFdmVudChSVENUcmFja0V2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgbnVsbHB0ciwgdHJhY2suZ2V0KCksIFZl
Y3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PihzdHJlYW1zKSwgbnVsbHB0cikpOworfQorCit2b2lk
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uQWRkU3RyZWFtKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPiBzdHJlYW0pCit7CisgICAgY2FsbE9uTWFpblRo
cmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdHJlYW0gPSBXVEZNb3ZlKHN0
cmVhbSldIHsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQoc3RyZWFtKTsKKyAgICAgICAgcHJvdGVjdGVk
VGhpcy0+YWRkU3RyZWFtKCpzdHJlYW0uZ2V0KCkpOworICAgIH0pOworfQorCit2b2lkIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6Ok9uUmVtb3ZlU3RyZWFtKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkRhdGFDaGFubmVsKHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OkRhdGFDaGFubmVsSW50ZXJmYWNlPiBkYXRhQ2hhbm5lbCkKK3sK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRh
dGFDaGFubmVsID0gV1RGTW92ZShkYXRhQ2hhbm5lbCldIHsKKyAgICAgICAgaWYgKHByb3RlY3Rl
ZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5hZGREYXRhQ2hhbm5lbChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hh
bm5lbEludGVyZmFjZT4oZGF0YUNoYW5uZWwpKTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJS
VENNZWRpYUVuZHBvaW50OjpzdG9wKCkKK3sKKyAgICBBU1NFUlQobV9iYWNrZW5kKTsKKyAgICBt
X2JhY2tlbmQtPkNsb3NlKCk7CisgICAgbV9iYWNrZW5kID0gbnVsbHB0cjsKK30KKwordm9pZCBM
aWJXZWJSVENNZWRpYUVuZHBvaW50OjpPblJlbmVnb3RpYXRpb25OZWVkZWQoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUGVlckNvbm5lY3Rpb25TdGF0ZXM6
OkljZUNvbm5lY3Rpb25TdGF0ZSBpY2VDb25uZWN0aW9uU3RhdGUod2VicnRjOjpQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlIHN0YXRlKQoreworICAgIHN3aXRjaCAo
c3RhdGUpIHsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VD
b25uZWN0aW9uTmV3OgorICAgICAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUNv
bm5lY3Rpb25TdGF0ZTo6TmV3OworICAgIGNhc2Ugd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZTo6a0ljZUNvbm5lY3Rpb25DaGVja2luZzoKKyAgICAgICAgcmV0dXJuIFBlZXJDb25uZWN0
aW9uU3RhdGVzOjpJY2VDb25uZWN0aW9uU3RhdGU6OkNoZWNraW5nOworICAgIGNhc2Ugd2VicnRj
OjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25Db25uZWN0ZWQ6CisgICAg
ICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblN0YXRlczo6SWNlQ29ubmVjdGlvblN0YXRlOjpDb25u
ZWN0ZWQ7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprSWNlQ29u
bmVjdGlvbkNvbXBsZXRlZDoKKyAgICAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJ
Y2VDb25uZWN0aW9uU3RhdGU6OkNvbXBsZXRlZDsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uRmFpbGVkOgorICAgICAgICByZXR1cm4gUGVl
ckNvbm5lY3Rpb25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZTo6RmFpbGVkOworICAgIGNhc2Ug
d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25EaXNjb25uZWN0
ZWQ6CisgICAgICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblN0YXRlczo6SWNlQ29ubmVjdGlvblN0
YXRlOjpEaXNjb25uZWN0ZWQ7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlOjprSWNlQ29ubmVjdGlvbkNsb3NlZDoKKyAgICAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9u
U3RhdGVzOjpJY2VDb25uZWN0aW9uU3RhdGU6OkNsb3NlZDsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uTWF4OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VD
b25uZWN0aW9uU3RhdGU6Ok5ldzsKKyAgICB9Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRw
b2ludDo6T25JY2VDb25uZWN0aW9uQ2hhbmdlKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U6OkljZUNvbm5lY3Rpb25TdGF0ZSBzdGF0ZSkKK3sKKyAgICBhdXRvIGNvbm5lY3Rpb25TdGF0
ZSA9IGljZUNvbm5lY3Rpb25TdGF0ZShzdGF0ZSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb25uZWN0aW9uU3RhdGVdIHsKKyAgICAgICAg
aWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlv
bigpLmludGVybmFsSWNlQ29ubmVjdGlvblN0YXRlKCkgIT0gY29ubmVjdGlvblN0YXRlKQorICAg
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlv
bigpLnVwZGF0ZUljZUNvbm5lY3Rpb25TdGF0ZShjb25uZWN0aW9uU3RhdGUpOworICAgIH0pOwor
fQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uSWNlR2F0aGVyaW5nQ2hhbmdlKHdl
YnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUdhdGhlcmluZ1N0YXRlIHN0YXRlKQor
eworICAgIGlmIChzdGF0ZSA9PSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprSWNl
R2F0aGVyaW5nQ29tcGxldGUpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+
aXNTdG9wcGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuZG9uZUdhdGhlcmluZ0NhbmRpZGF0ZXMo
KTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
Ok9uSWNlQ2FuZGlkYXRlKGNvbnN0IHdlYnJ0Yzo6SWNlQ2FuZGlkYXRlSW50ZXJmYWNlICpydGND
YW5kaWRhdGUpCit7CisgICAgQVNTRVJUKHJ0Y0NhbmRpZGF0ZSk7CisKKyAgICBzdGQ6OnN0cmlu
ZyBzZHA7CisgICAgcnRjQ2FuZGlkYXRlLT5Ub1N0cmluZygmc2RwKTsKKyAgICBTdHJpbmcgY2Fu
ZGlkYXRlU0RQKHNkcC5kYXRhKCksIHNkcC5zaXplKCkpOworCisgICAgYXV0byBtaWQgPSBydGND
YW5kaWRhdGUtPnNkcF9taWQoKTsKKyAgICBTdHJpbmcgY2FuZGlkYXRlTWlkKG1pZC5kYXRhKCks
IG1pZC5zaXplKCkpOworCisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBtaWQgPSBXVEZNb3ZlKGNhbmRpZGF0ZU1pZCksIHNkcCA9IFdURk1vdmUo
Y2FuZGlkYXRlU0RQKV0geworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmZpcmVJQ0VDYW5kaWRhdGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0
ZShTdHJpbmcoc2RwKSwgU3RyaW5nKG1pZCksIDApKTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpPbkljZUNhbmRpZGF0ZXNSZW1vdmVkKGNvbnN0IHN0ZDo6dmVj
dG9yPGNyaWNrZXQ6OkNhbmRpZGF0ZT4mKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25EZXNjcmlwdGlv
blN1Y2NlZWRlZCh3ZWJydGM6OlNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSogZGVzY3JpcHRp
b24pCit7CisgICAgc3RkOjpzdHJpbmcgc2RwOworICAgIGRlc2NyaXB0aW9uLT5Ub1N0cmluZygm
c2RwKTsKKyAgICBTdHJpbmcgc2RwU3RyaW5nKHNkcC5kYXRhKCksIHNkcC5zaXplKCkpOworCisg
ICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZHAg
PSBXVEZNb3ZlKHNkcFN0cmluZyldIHsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3Rv
cHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+
bV9pc0luaXRpYXRvcikKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNyZWF0ZU9mZmVyU3VjY2VlZGVkKFN0cmluZyhzZHApKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Jl
YXRlQW5zd2VyU3VjY2VlZGVkKFN0cmluZyhzZHApKTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qg
c3RkOjpzdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBTdHJpbmcgZXJyb3IoZXJyb3JNZXNz
YWdlLmRhdGEoKSwgZXJyb3JNZXNzYWdlLnNpemUoKSk7CisgICAgY2FsbE9uTWFpblRocmVhZChb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7
CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1faXNJbml0aWF0b3IpCisgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jcmVhdGVPZmZlckZh
aWxlZChFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgU3RyaW5nKGVycm9yKSB9KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY3JlYXRlQW5zd2VyRmFpbGVkKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBTdHJpbmco
ZXJyb3IpIH0pOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNl
dExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKCkKK3sKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgaWYgKHByb3Rl
Y3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5zZXRMb2NhbERlc2NyaXB0aW9uU3Vj
Y2VlZGVkKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0
TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qgc3RkOjpzdHJpbmcmIGVycm9yTWVz
c2FnZSkKK3sKKyAgICBTdHJpbmcgZXJyb3IoZXJyb3JNZXNzYWdlLmRhdGEoKSwgZXJyb3JNZXNz
YWdlLnNpemUoKSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7CisgICAgICAgIGlmIChwcm90ZWN0
ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuc2V0TG9jYWxEZXNjcmlwdGlvbkZhaWxl
ZChFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgU3RyaW5nKGVycm9yKSB9KTsKKyAgICB9KTsK
K30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzZXRSZW1vdGVTZXNzaW9uRGVzY3Jp
cHRpb25TdWNjZWVkZWQoKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVk
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLnNldFJlbW90ZURlc2NyaXB0aW9uU3VjY2VlZGVkKCk7CisgICAgfSk7
Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0UmVtb3RlU2Vzc2lvbkRlc2Ny
aXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgU3Ry
aW5nIGVycm9yKGVycm9yTWVzc2FnZS5kYXRhKCksIGVycm9yTWVzc2FnZS5zaXplKCkpOworICAg
IGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZXJyb3Ig
PSBXVEZNb3ZlKGVycm9yKV0geworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVk
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLnNldFJlbW90ZURlc2NyaXB0aW9uRmFpbGVkKEV4Y2VwdGlvbiB7IE9w
ZXJhdGlvbkVycm9yLCBTdHJpbmcoZXJyb3IpIH0pOworICAgIH0pOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0YTUwY2YwYmM1N2MwZGExMDZi
MmJhYTUyZmU2ZmMyNDFhZTRmODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgKQEAg
LTAsMCArMSwxNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAi
TGliV2ViUlRDVXRpbHMuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKKyNp
bmNsdWRlICJSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCIKKyNpbmNsdWRlICJSZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2UuaCIKKworI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvanNlcC5oPgor
I2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25mYWN0b3J5Lmg+CisjaW5jbHVkZSA8
d2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9h
cGkvcnRjc3RhdHNjb2xsZWN0b3IuaD4KKworbmFtZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBDcmVh
dGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjsKK2NsYXNzIERhdGFDaGFubmVsSW50ZXJmYWNl
OworY2xhc3MgSWNlQ2FuZGlkYXRlSW50ZXJmYWNlOworY2xhc3MgTWVkaWFTdHJlYW1JbnRlcmZh
Y2U7CitjbGFzcyBQZWVyQ29ubmVjdGlvbk9ic2VydmVyOworY2xhc3MgU2Vzc2lvbkRlc2NyaXB0
aW9uSW50ZXJmYWNlOworY2xhc3MgU2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXI7Cit9CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTGliV2ViUlRDUHJvdmlkZXI7CitjbGFzcyBM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CitjbGFzcyBNZWRpYVN0cmVhbVRyYWNrOwor
Y2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOworCitjbGFzcyBMaWJXZWJSVENNZWRpYUVuZHBv
aW50IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TGliV2ViUlRDTWVkaWFFbmRwb2ludD4sIHBy
aXZhdGUgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IGNyZWF0ZShMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQmIHBlZXJDb25uZWN0aW9uLCBMaWJXZWJSVENQcm92aWRlciYgY2xpZW50KSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IExpYldlYlJUQ01lZGlhRW5kcG9pbnQocGVlckNvbm5lY3Rp
b24sIGNsaWVudCkpOyB9CisgICAgdmlydHVhbCB+TGliV2ViUlRDTWVkaWFFbmRwb2ludCgpIHsg
fQorCisgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZSYgYmFja2VuZCgpIGNvbnN0
IHsgQVNTRVJUKG1fYmFja2VuZCk7IHJldHVybiAqbV9iYWNrZW5kLmdldCgpOyB9CisgICAgdm9p
ZCBkb1NldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJik7CisgICAgdm9p
ZCBkb1NldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYpOworICAgIHZv
aWQgZG9DcmVhdGVPZmZlcigpOworICAgIHZvaWQgZG9DcmVhdGVBbnN3ZXIoKTsKKyAgICB2b2lk
IGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBQZWVyQ29ubmVjdGlvbjo6U3RhdHNQcm9taXNl
JiYpOworCisgICAgdm9pZCBzdG9yZUljZUNhbmRpZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8d2VicnRj
OjpJY2VDYW5kaWRhdGVJbnRlcmZhY2U+JiYgY2FuZGlkYXRlKSB7IG1fcGVuZGluZ0NhbmRpZGF0
ZXMuYXBwZW5kKFdURk1vdmUoY2FuZGlkYXRlKSk7IH0KKyAgICB2b2lkIGFkZFBlbmRpbmdJY2VD
YW5kaWRhdGVzKCk7CisKKyAgICB2b2lkIHN0b3AoKTsKKworcHJpdmF0ZToKKyAgICBMaWJXZWJS
VENNZWRpYUVuZHBvaW50KExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYsIExpYldlYlJU
Q1Byb3ZpZGVyJik7CisKKyAgICAvLyB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgQVBJ
CisgICAgdm9pZCBPblNpZ25hbGluZ0NoYW5nZSh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlOjpTaWduYWxpbmdTdGF0ZSkgZmluYWw7CisgICAgdm9pZCBPbkFkZFN0cmVhbShydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZT4pIGZpbmFsOworICAgIHZv
aWQgT25SZW1vdmVTdHJlYW0ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJlYW1J
bnRlcmZhY2U+KSBmaW5hbDsKKyAgICB2b2lkIE9uRGF0YUNoYW5uZWwocnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+KSBmaW5hbDsKKyAgICB2b2lkIE9uUmVu
ZWdvdGlhdGlvbk5lZWRlZCgpIGZpbmFsOworICAgIHZvaWQgT25JY2VDb25uZWN0aW9uQ2hhbmdl
KHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZSkgZmlu
YWw7CisgICAgdm9pZCBPbkljZUdhdGhlcmluZ0NoYW5nZSh3ZWJydGM6OlBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpJY2VHYXRoZXJpbmdTdGF0ZSkgZmluYWw7CisgICAgdm9pZCBPbkljZUNhbmRp
ZGF0ZShjb25zdCB3ZWJydGM6OkljZUNhbmRpZGF0ZUludGVyZmFjZSopIGZpbmFsOworICAgIHZv
aWQgT25JY2VDYW5kaWRhdGVzUmVtb3ZlZChjb25zdCBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpDYW5k
aWRhdGU+JikgZmluYWw7CisKKyAgICB2b2lkIGNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2Nl
ZWRlZCh3ZWJydGM6OlNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSopOworICAgIHZvaWQgY3Jl
YXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3RyaW5nJik7CisgICAgdm9p
ZCBzZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCgpOworICAgIHZvaWQgc2V0TG9j
YWxTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qgc3RkOjpzdHJpbmcmKTsKKyAgICB2b2lk
IHNldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCgpOworICAgIHZvaWQgc2V0UmVt
b3RlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3RyaW5nJik7CisgICAgdm9p
ZCBhZGRTdHJlYW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZSYpOworICAgIHZvaWQgYWRk
RGF0YUNoYW5uZWwocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZh
Y2U+JiYpOworCisgICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiAhbV9iYWNrZW5k
OyB9CisKKyAgICBpbnQgQWRkUmVmKCkgY29uc3QgeyByZWYoKTsgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4ocmVmQ291bnQoKSk7IH0KKyAgICBpbnQgUmVsZWFzZSgpIGNvbnN0IHsgZGVyZWYoKTsg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVmQ291bnQoKSk7IH0KKworICAgIGNsYXNzIENyZWF0
ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIGZpbmFsIDogcHVibGljIHdlYnJ0Yzo6Q3JlYXRl
U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGlj
aXQgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIoTGliV2ViUlRDTWVkaWFFbmRwb2lu
dCAmZW5kcG9pbnQpIDogbV9lbmRwb2ludChlbmRwb2ludCkgeyB9CisKKyAgICAgICAgdm9pZCBP
blN1Y2Nlc3Mod2VicnRjOjpTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2UqIHNlc3Npb25EZXNj
cmlwdGlvbikgZmluYWwgeyBtX2VuZHBvaW50LmNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2Nl
ZWRlZChzZXNzaW9uRGVzY3JpcHRpb24pOyB9CisgICAgICAgIHZvaWQgT25GYWlsdXJlKGNvbnN0
IHN0ZDo6c3RyaW5nJiBlcnJvcikgZmluYWwgeyBtX2VuZHBvaW50LmNyZWF0ZVNlc3Npb25EZXNj
cmlwdGlvbkZhaWxlZChlcnJvcik7IH0KKworICAgICAgICBpbnQgQWRkUmVmKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmRwb2ludC5BZGRSZWYoKTsgfQorICAgICAgICBpbnQgUmVsZWFzZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZW5kcG9pbnQuUmVsZWFzZSgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBMaWJXZWJSVENNZWRpYUVuZHBvaW50JiBtX2VuZHBvaW50OworICAgIH07CisKKyAgICBjbGFz
cyBTZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIGZpbmFsIDogcHVibGljIHdlYnJ0
Yzo6U2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAg
ZXhwbGljaXQgU2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcihMaWJXZWJSVENNZWRp
YUVuZHBvaW50ICZlbmRwb2ludCkgOiBtX2VuZHBvaW50KGVuZHBvaW50KSB7IH0KKworICAgICAg
ICB2b2lkIE9uU3VjY2VzcygpIGZpbmFsIHsgbV9lbmRwb2ludC5zZXRMb2NhbFNlc3Npb25EZXNj
cmlwdGlvblN1Y2NlZWRlZCgpOyB9CisgICAgICAgIHZvaWQgT25GYWlsdXJlKGNvbnN0IHN0ZDo6
c3RyaW5nJiBlcnJvcikgZmluYWwgeyBtX2VuZHBvaW50LnNldExvY2FsU2Vzc2lvbkRlc2NyaXB0
aW9uRmFpbGVkKGVycm9yKTsgfQorCisgICAgICAgIGludCBBZGRSZWYoKSBjb25zdCB7IHJldHVy
biBtX2VuZHBvaW50LkFkZFJlZigpOyB9CisgICAgICAgIGludCBSZWxlYXNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmRwb2ludC5SZWxlYXNlKCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQmIG1fZW5kcG9pbnQ7CisgICAgfTsKKworICAgIGNsYXNzIFNl
dFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIGZpbmFsIDogcHVibGljIHdlYnJ0Yzo6
U2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhw
bGljaXQgU2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIoTGliV2ViUlRDTWVkaWFF
bmRwb2ludCAmZW5kcG9pbnQpIDogbV9lbmRwb2ludChlbmRwb2ludCkgeyB9CisKKyAgICAgICAg
dm9pZCBPblN1Y2Nlc3MoKSBmaW5hbCB7IG1fZW5kcG9pbnQuc2V0UmVtb3RlU2Vzc2lvbkRlc2Ny
aXB0aW9uU3VjY2VlZGVkKCk7IH0KKyAgICAgICAgdm9pZCBPbkZhaWx1cmUoY29uc3Qgc3RkOjpz
dHJpbmcmIGVycm9yKSBmaW5hbCB7IG1fZW5kcG9pbnQuc2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0
aW9uRmFpbGVkKGVycm9yKTsgfQorCisgICAgICAgIGludCBBZGRSZWYoKSBjb25zdCB7IHJldHVy
biBtX2VuZHBvaW50LkFkZFJlZigpOyB9CisgICAgICAgIGludCBSZWxlYXNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmRwb2ludC5SZWxlYXNlKCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQmIG1fZW5kcG9pbnQ7CisgICAgfTsKKworICAgIGNsYXNzIFN0
YXRzQ29sbGVjdG9yIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8U3RhdHNDb2xsZWN0b3I+LCBw
dWJsaWMgd2VicnRjOjpSVENTdGF0c0NvbGxlY3RvckNhbGxiYWNrIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHN0YXRpYyBSZWY8U3RhdHNDb2xsZWN0b3I+IGNyZWF0ZShMaWJXZWJSVENNZWRpYUVu
ZHBvaW50JiBlbmRwb2ludCwgUGVlckNvbm5lY3Rpb246OlN0YXRzUHJvbWlzZSYmIHByb21pc2Us
IE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJlZigqIG5ldyBTdGF0c0Nv
bGxlY3RvcihlbmRwb2ludCwgV1RGTW92ZShwcm9taXNlKSwgdHJhY2spKTsgfQorICAgIHByaXZh
dGU6CisgICAgICAgIFN0YXRzQ29sbGVjdG9yKExpYldlYlJUQ01lZGlhRW5kcG9pbnQmLCBQZWVy
Q29ubmVjdGlvbjo6U3RhdHNQcm9taXNlJiYsIE1lZGlhU3RyZWFtVHJhY2sqKTsKKworICAgICAg
ICB2b2lkIE9uU3RhdHNEZWxpdmVyZWQoY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPGNvbnN0IHdl
YnJ0Yzo6UlRDU3RhdHNSZXBvcnQ+JikgZmluYWw7CisKKyAgICAgICAgaW50IEFkZFJlZigpIGNv
bnN0IGZpbmFsIHsgcmVmKCk7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlZkNvdW50KCkpOyB9
CisgICAgICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmluYWwgeyBkZXJlZigpOyByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihyZWZDb3VudCgpKTsgfQorCisgICAgICAgIExpYldlYlJUQ01lZGlhRW5k
cG9pbnQmIG1fZW5kcG9pbnQ7CisgICAgICAgIFBlZXJDb25uZWN0aW9uOjpTdGF0c1Byb21pc2Ug
bV9wcm9taXNlOworICAgICAgICBTdHJpbmcgbV9pZDsKKyAgICB9OworCisgICAgTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kJiBtX3BlZXJDb25uZWN0aW9uQmFja2VuZDsKKyAgICBydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gbV9iYWNrZW5k
OworCisgICAgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgbV9jcmVhdGVTZXNzaW9u
RGVzY3JpcHRpb25PYnNlcnZlcjsKKyAgICBTZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbk9ic2Vy
dmVyIG1fc2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjsKKyAgICBTZXRSZW1vdGVT
ZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciBtX3NldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvbk9i
c2VydmVyOworCisgICAgYm9vbCBtX2lzSW5pdGlhdG9yIHsgZmFsc2UgfTsKKworICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpJY2VDYW5kaWRhdGVJbnRlcmZhY2U+PiBtX3BlbmRp
bmdDYW5kaWRhdGVzOworICAgIFZlY3RvcjxSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Pj4gbV9hdWRpb1NvdXJjZXM7CisgICAgVmVjdG9yPFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2U+PiBtX3ZpZGVvU291cmNlczsKKyAgICBWZWN0b3I8UmVmPFN0YXRzQ29sbGVjdG9yPj4g
bV9zdGF0c0NvbGxlY3RvcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZkMDIxODNkODk4MWRkMDY2YTBk
MzA3ZjUzNmU0Y2ZjNmI0ZWU1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcHAKQEAgLTAsMCArMSwxOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIgorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSWNlQ2FuZGlkYXRlLmgiCisjaW5jbHVkZSAiTGli
V2ViUlRDTWVkaWFFbmRwb2ludC5oIgorI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRDb25maWd1cmF0
aW9uLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJUQ0ljZUNhbmRpZGF0ZS5oIgor
I2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUlRDUnRwUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFBlZXJDb25uZWN0aW9uQmFja2VuZD4gY3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kKFJUQ1BlZXJDb25uZWN0aW9uJiBwZWVyQ29ubmVjdGlvbikKK3sKKyAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPFBlZXJDb25uZWN0aW9uQmFja2VuZD4obmV3IExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZChwZWVyQ29ubmVjdGlvbikpOworfQorCitDcmVhdGVQZWVyQ29ubmVjdGlv
bkJhY2tlbmQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGUgPSBjcmVhdGVMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CisKK3N0YXRpYyBpbmxpbmUgTGliV2ViUlRDUHJvdmlkZXIm
IGxpYldlYlJUQ1Byb3ZpZGVyKFJUQ1BlZXJDb25uZWN0aW9uJiBwZWVyQ29ubmVjdGlvbikKK3sK
KyAgICBBU1NFUlQocGVlckNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0Rv
Y3VtZW50KCkpOworICAgIGF1dG8qIHBhZ2UgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHBlZXJD
b25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnBhZ2UoKTsKKyAgICByZXR1cm4g
cGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKTsKK30KKworTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQoUlRDUGVlckNvbm5lY3Rpb24m
IHBlZXJDb25uZWN0aW9uKQorICAgIDogUGVlckNvbm5lY3Rpb25CYWNrZW5kKHBlZXJDb25uZWN0
aW9uKQorICAgICwgbV9lbmRwb2ludChMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGUoKnRo
aXMsIGxpYldlYlJUQ1Byb3ZpZGVyKHBlZXJDb25uZWN0aW9uKSkpCit7Cit9CisKK3N0YXRpYyB3
ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb25Gcm9tTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24oTWVkaWFFbmRwb2ludENvbmZpZ3Vy
YXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gcnRjQ29uZmlndXJhdGlvbih3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uVHlwZTo6a0FnZ3Jlc3NpdmUpOworCisg
ICAgaWYgKGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5ID09IFBlZXJDb25uZWN0aW9u
U3RhdGVzOjpJY2VUcmFuc3BvcnRQb2xpY3k6OlJlbGF5KQorICAgICAgICBydGNDb25maWd1cmF0
aW9uLnR5cGUgPSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprUmVsYXk7CisKKyAg
ICBpZiAoY29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kgPT0gUGVlckNvbm5lY3Rpb25TdGF0ZXM6
OkJ1bmRsZVBvbGljeTo6TWF4QnVuZGxlKQorICAgICAgICBydGNDb25maWd1cmF0aW9uLmJ1bmRs
ZV9wb2xpY3kgPSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprQnVuZGxlUG9saWN5
TWF4QnVuZGxlOworICAgIGVsc2UgaWYgKGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5ID09IFBl
ZXJDb25uZWN0aW9uU3RhdGVzOjpCdW5kbGVQb2xpY3k6Ok1heENvbXBhdCkKKyAgICAgICAgcnRj
Q29uZmlndXJhdGlvbi5idW5kbGVfcG9saWN5ID0gd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZTo6a0J1bmRsZVBvbGljeU1heENvbXBhdDsKKworICAgIGZvciAoYXV0byYgc2VydmVyIDog
Y29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7CisgICAgICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OkljZVNlcnZlciBpY2VTZXJ2ZXI7CisgICAgICAgIGljZVNlcnZlci51c2Vy
bmFtZSA9IHNlcnZlci51c2VybmFtZS51dGY4KCkuZGF0YSgpOworICAgICAgICBpY2VTZXJ2ZXIu
cGFzc3dvcmQgPSBzZXJ2ZXIuY3JlZGVudGlhbC51dGY4KCkuZGF0YSgpOworICAgICAgICBmb3Ig
KGF1dG8mIHVybCA6IHNlcnZlci51cmxzKQorICAgICAgICAgICAgaWNlU2VydmVyLnVybHMucHVz
aF9iYWNrKHsgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkgfSk7CisgICAgICAgIHJ0Y0NvbmZp
Z3VyYXRpb24uc2VydmVycy5wdXNoX2JhY2soV1RGTW92ZShpY2VTZXJ2ZXIpKTsKKyAgICB9CisK
KyAgICByZXR1cm4gcnRjQ29uZmlndXJhdGlvbjsKK30KKwordm9pZCBMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OnNldENvbmZpZ3VyYXRpb24oTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRp
b24mJiBjb25maWd1cmF0aW9uKQoreworICAgIG1fZW5kcG9pbnQtPmJhY2tlbmQoKS5TZXRDb25m
aWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25Gcm9tTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24oV1RG
TW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZDo6Z2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayogdHJhY2ssIFBlZXJDb25uZWN0aW9u
OjpTdGF0c1Byb21pc2UmJiBwcm9taXNlKQoreworICAgIG1fZW5kcG9pbnQtPmdldFN0YXRzKHRy
YWNrLCBXVEZNb3ZlKHByb21pc2UpKTsKK30KKwordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6OmRvU2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uKQoreworICAgIG1fZW5kcG9pbnQtPmRvU2V0TG9jYWxEZXNjcmlwdGlvbihkZXNj
cmlwdGlvbik7CisgICAgaWYgKCFtX2lzTG9jYWxEZXNjcmlwdGlvblNldCkgeworICAgICAgICBp
ZiAobV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KQorICAgICAgICAgICAgbV9lbmRwb2ludC0+YWRk
UGVuZGluZ0ljZUNhbmRpZGF0ZXMoKTsKKyAgICAgICAgbV9pc0xvY2FsRGVzY3JpcHRpb25TZXQg
PSB0cnVlOworICAgIH0KK30KKwordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmRvU2V0UmVtb3RlRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiBkZXNjcmlwdGlv
bikKK3sKKyAgICBtX2VuZHBvaW50LT5kb1NldFJlbW90ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9u
KTsKKyAgICBpZiAoIW1faXNSZW1vdGVEZXNjcmlwdGlvblNldCkgeworICAgICAgICBpZiAobV9p
c0xvY2FsRGVzY3JpcHRpb25TZXQpCisgICAgICAgICAgICBtX2VuZHBvaW50LT5hZGRQZW5kaW5n
SWNlQ2FuZGlkYXRlcygpOworICAgICAgICBtX2lzUmVtb3RlRGVzY3JpcHRpb25TZXQgPSB0cnVl
OworICAgIH0KK30KKwordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvQ3Jl
YXRlT2ZmZXIoUlRDT2ZmZXJPcHRpb25zJiYpCit7CisgICAgbV9lbmRwb2ludC0+ZG9DcmVhdGVP
ZmZlcigpOworfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVh
dGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQoreworICAgIGlmICghbV9pc1JlbW90ZURlc2Ny
aXB0aW9uU2V0KSB7CisgICAgICAgIGNyZWF0ZUFuc3dlckZhaWxlZChFeGNlcHRpb24geyBJTlZB
TElEX1NUQVRFX0VSUiwgIk5vIHJlbW90ZSBkZXNjcmlwdGlvbiBzZXQiIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7Cit9CisKK3Zv
aWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb1N0b3AoKQoreworICAgIG1fZW5k
cG9pbnQtPnN0b3AoKTsKK30KKwordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmRvQWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSYgY2FuZGlkYXRlKQoreworICAgIGlm
ICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7CisgICAgICAgIGFkZEljZUNhbmRpZGF0ZUZh
aWxlZChFeGNlcHRpb24geyBJTlZBTElEX1NUQVRFX0VSUiwgIk5vIHJlbW90ZSBkZXNjcmlwdGlv
biBzZXQiIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2VicnRjOjpTZHBQYXJz
ZUVycm9yIGVycm9yOworICAgIGludCBzZHBNTGluZUluZGV4ID0gY2FuZGlkYXRlLnNkcE1MaW5l
SW5kZXgoKSA/IGNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KCkudmFsdWUoKSA6IDA7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPHdlYnJ0Yzo6SWNlQ2FuZGlkYXRlSW50ZXJmYWNlPiBydGNDYW5kaWRhdGUo
d2VicnRjOjpDcmVhdGVJY2VDYW5kaWRhdGUoY2FuZGlkYXRlLnNkcE1pZCgpLnV0ZjgoKS5kYXRh
KCksIHNkcE1MaW5lSW5kZXgsIGNhbmRpZGF0ZS5jYW5kaWRhdGUoKS51dGY4KCkuZGF0YSgpLCAm
ZXJyb3IpKTsKKworICAgIGlmICghcnRjQ2FuZGlkYXRlKSB7CisgICAgICAgIFN0cmluZyBtZXNz
YWdlKGVycm9yLmRlc2NyaXB0aW9uLmRhdGEoKSwgZXJyb3IuZGVzY3JpcHRpb24uc2l6ZSgpKTsK
KyAgICAgICAgYWRkSWNlQ2FuZGlkYXRlRmFpbGVkKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9y
LCBXVEZNb3ZlKG1lc3NhZ2UpIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
bGlid2VicnRjIGRvZXMgbm90IGxpa2UgdGhhdCBpY2UgY2FuZGlkYXRlcyBhcmUgc2V0IGJlZm9y
ZSB0aGUgZGVzY3JpcHRpb24uCisgICAgaWYgKCFtX2lzTG9jYWxEZXNjcmlwdGlvblNldCB8fCAh
bV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KQorICAgICAgICBtX2VuZHBvaW50LT5zdG9yZUljZUNh
bmRpZGF0ZShXVEZNb3ZlKHJ0Y0NhbmRpZGF0ZSkpOworICAgIGVsc2UgaWYgKCFtX2VuZHBvaW50
LT5iYWNrZW5kKCkuQWRkSWNlQ2FuZGlkYXRlKHJ0Y0NhbmRpZGF0ZS5nZXQoKSkpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGFkZEljZUNhbmRpZGF0ZUZhaWxlZChF
eGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gYXBwbHkg
dGhlIHJlY2VpdmVkIGNhbmRpZGF0ZSIpIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGFkZEljZUNhbmRpZGF0ZVN1Y2NlZWRlZCgpOworfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZDo6bWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCkKK3sKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMKK30KKworUmVmPFJUQ1J0cFJlY2VpdmVyPiBMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgdHJhY2tLaW5kLCBjb25zdCBTdHJpbmcmIHRyYWNrSWQpCit7CisgICAgLy8gRklYTUU6
IFdlIG5lZWQgdG8gY3JlYXRlIGEgc291cmNlIHRoYXQgd2lsbCBnZXQgZnVlbGVkIG9uY2Ugd2Ug
d2lsbCByZWNlaXZlIE9uQWRkU3RyZWFtLgorICAgIC8vIEZvciB0aGUgbW9tZW50LCB3ZSBjcmVh
dGUgYW4gZW1wdHkgb25lLgorICAgIGF1dG8gcmVtb3RlVHJhY2tQcml2YXRlID0gKHRyYWNrS2lu
ZCA9PSAiYXVkaW8iKSA/IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgU3RyaW5nKHRyYWNrSWQpKSkgOiBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZTo6Y3JlYXRlKG51bGxwdHIsIFN0cmluZyh0cmFja0lkKSkpOworICAgIGF1dG8gcmVtb3RlVHJh
Y2sgPSBNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoKm1fcGVlckNvbm5lY3Rpb24uc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKHJlbW90ZVRyYWNrUHJpdmF0ZSkpOworCisgICAgcmV0
dXJuIFJUQ1J0cFJlY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShyZW1vdGVUcmFjaykpOworfQorCitz
dGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmNyZWF0ZURhdGFDaGFubmVsSGFuZGxlcihjb25zdCBTdHJpbmcmIGxhYmVs
LCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQmIG9wdGlvbnMpCit7CisgICAgVU5VU0VEX1BBUkFN
KGxhYmVsKTsKKyAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2Nzc4YWI2YTMxODFlNTE4
MjNlY2I5Y2QwOTE5ZDljN2YyNmRjMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKwor
I2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uQmFja2VuZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ7CitjbGFzcyBSVENSdHBSZWNlaXZlcjsK
K2NsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjsKKworY2xhc3MgTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kIGZpbmFsIDogcHVibGljIFBlZXJDb25uZWN0aW9uQmFja2VuZCB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKFJUQ1BlZXJD
b25uZWN0aW9uJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBkb0NyZWF0ZU9mZmVyKFJUQ09mZmVy
T3B0aW9ucyYmKSBmaW5hbDsKKyAgICB2b2lkIGRvQ3JlYXRlQW5zd2VyKFJUQ0Fuc3dlck9wdGlv
bnMmJikgZmluYWw7CisgICAgdm9pZCBkb1NldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uJikgZmluYWw7CisgICAgdm9pZCBkb1NldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nl
c3Npb25EZXNjcmlwdGlvbiYpIGZpbmFsOworICAgIHZvaWQgZG9BZGRJY2VDYW5kaWRhdGUoUlRD
SWNlQ2FuZGlkYXRlJikgZmluYWw7CisgICAgdm9pZCBkb1N0b3AoKSBmaW5hbDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBjcmVhdGVEYXRhQ2hhbm5lbEhhbmRs
ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0JikgZmluYWw7CisgICAg
dm9pZCBzZXRDb25maWd1cmF0aW9uKE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uJiYpIGZpbmFs
OworICAgIHZvaWQgZ2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayosIFBlZXJDb25uZWN0aW9uOjpT
dGF0c1Byb21pc2UmJikgZmluYWw7CisgICAgUmVmPFJUQ1J0cFJlY2VpdmVyPiBjcmVhdGVSZWNl
aXZlcihjb25zdCBTdHJpbmcmIHRyYW5zY2VpdmVyTWlkLCBjb25zdCBTdHJpbmcmIHRyYWNrS2lu
ZCwgY29uc3QgU3RyaW5nJiB0cmFja0lkKSBmaW5hbDsKKworICAgIC8vIEZJWE1FOiBBUEkgdG8g
aW1wbGVtZW50IGZvciByZWFsCisgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gbG9j
YWxEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBSZWZQ
dHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0
aW9uPiBwZW5kaW5nTG9jYWxEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxw
dHI7IH0KKworICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IHJlbW90ZURlc2NyaXB0
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIFJlZlB0cjxSVENTZXNz
aW9uRGVzY3JpcHRpb24+IGN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG51bGxwdHI7IH0KKyAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5k
aW5nUmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisK
KworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PiBnZXRSZW1vdGVTdHJlYW1zKCkgY29u
c3QgZmluYWwgeyByZXR1cm4geyB9OyB9CisKKyAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBT
ZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lkPiYmKSBm
aW5hbCB7IH0KKworICAgIGJvb2wgaXNOZWdvdGlhdGlvbk5lZWRlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBtYXJrQXNOZWVkaW5nTmVnb3RpYXRpb24oKSBmaW5h
bDsKKyAgICB2b2lkIGNsZWFyTmVnb3RpYXRpb25OZWVkZWRTdGF0ZSgpIGZpbmFsIHsgfQorCisg
ICAgdm9pZCBlbXVsYXRlUGxhdGZvcm1FdmVudChjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KKwor
ICAgIGZyaWVuZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OworICAgIFJUQ1BlZXJDb25uZWN0aW9u
JiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9wZWVyQ29ubmVjdGlvbjsgfQorCitwcml2YXRlOgor
ICAgIFJlZjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiBtX2VuZHBvaW50OworICAgIGJvb2wgbV9p
c0xvY2FsRGVzY3JpcHRpb25TZXQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1JlbW90ZURlc2Ny
aXB0aW9uU2V0IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2MyNzc5ZWUwMGM0ODNhYmQzZDZmZTcyYjc2ZTAy
NDRlMDVhNWE1Mi4uYzRhMWNlYTIyNDJmMDc3OWJjZGRiNDFiMzk1Y2JhMTZmODU2YTNiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTU2MSw2ICsxNTYxLDEwIEBACiAJCTQxNzBBMkVBMUQ4QzBDQ0EwMDMxODQ1MiAvKiBKU0RP
TVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE3MEEyRTkxRDhDMENDMDAwMzE4NDUyIC8qIEpTRE9NV3JhcHBlci5jcHAgKi87IH07CiAJ
CTQxNzI1M0FBMTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTcyNTNBODEzNTRC
QkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovOyB9OwogCQk0MTcyNTNB
QjEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzI1M0E5MTM1NEJCQkMwMDM2MEYy
QSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovOyB9OworCQk0MTc2MTJBRjFFM0E5OTQwMDBD
M0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2MTJBQjFFM0E5OTNCMDBDM0Q4MUQgLyogTGli
V2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgKi87IH07CisJCTQxNzYxMkIwMUUzQTk5NDAwMEMzRDgx
RCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5oICovOyB9OworCQk0MTc2MTJCMTFFM0E5OTQwMDBDM0Q4MUQgLyogTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzYxMkFEMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwICovOyB9OworCQk0MTc2MTJCMjFFM0E5OTQwMDBD
M0Q4MUQgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2MTJBRTFFM0E5OTNCMDBDM0Q4MUQg
LyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggKi87IH07CiAJCTQxN0RBNkQ5MTM3
MzRFNkUwMDdDNTdGQiAvKiBJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3REE0Q0YxMzczNDMyNjAwN0M1N0ZCIC8qIEludGVybmFs
cy5jcHAgKi87IH07CiAJCTQxN0RBNkRBMTM3MzRFNkUwMDdDNTdGQiAvKiBJbnRlcm5hbHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxN0RBNENFMTM3
MzQzMjYwMDdDNTdGQiAvKiBJbnRlcm5hbHMuaCAqLzsgfTsKIAkJNDE3REE3MUQxMzczNURGQTAw
N0M1N0ZCIC8qIEpTSW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxN0RBNzFCMTM3MzVERkEwMDdDNTdGQiAvKiBKU0ludGVybmFscy5j
cHAgKi87IH07CkBAIC04NzM2LDYgKzg3NDAsMTAgQEAKIAkJNDE3MEEyRTkxRDhDMENDMDAwMzE4
NDUyIC8qIEpTRE9NV3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0RPTVdyYXBwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcy
NTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEgLyog
TWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE3
NjEyQUIxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDTWVkaWFFbmRwb2ludC5j
cHA7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNzYxMkFDMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJS
VENNZWRpYUVuZHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldl
YlJUQ01lZGlhRW5kcG9pbnQuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBv
aW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNzYxMkFEMUUzQTk5M0IwMEMz
RDgxRCAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTc2MTJBRTFFM0E5OTNCMDBDM0Q4MUQgLyog
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOyBwYXRoID0gbGlid2Vi
cnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTdEQTRDRTEzNzM0MzI2MDA3QzU3RkIgLyogSW50ZXJuYWxzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybmFscy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTdEQTRDRjEzNzM0MzI2MDA3QzU3RkIgLyogSW50ZXJuYWxzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGVybmFscy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxN0RBNkQwMTM3MzRFMDIwMDdDNTdGQiAvKiBsaWJX
ZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9
IDA7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CkBAIC0xNTExMSw2ICsxNTExOSw3IEBACiAJCTA3MjIxQjQ2MTdD
RUMzMjcwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJNDE3NjEyQUExRTNBOTkyMzAwQzNEODFEIC8qIGxpYndlYnJ0
YyAqLywKIAkJCQkwNzM3OTRFRDE5RUUzNjQyMDBFNUEwNDUgLyogRE9NVVJMTWVkaWFTdHJlYW0u
Y3BwICovLAogCQkJCTE1RkNDOUZEMUI0REY4NTYwMEU3MjMyNiAvKiBET01VUkxNZWRpYVN0cmVh
bS5oICovLAogCQkJCTA3Mzc5NEVFMTlFRTM2NDIwMEU1QTA0NSAvKiBET01VUkxNZWRpYVN0cmVh
bS5pZGwgKi8sCkBAIC0xNjY2MCw2ICsxNjY2OSwxNyBAQAogCQkJbmFtZSA9IGxpYndlYnJ0YzsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQxNzYxMkFBMUUzQTk5MjMwMEMz
RDgxRCAvKiBsaWJ3ZWJydGMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCTQxNzYxMkFCMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBv
aW50LmNwcCAqLywKKwkJCQk0MTc2MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5oICovLAorCQkJCTQxNzYxMkFEMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwICovLAorCQkJCTQxNzYxMkFFMUUzQTk5M0IwMEMz
RDgxRCAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCAqLywKKwkJCSk7CisJCQlu
YW1lID0gbGlid2VicnRjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDE3
REE0Q0QxMzczNDIwNDAwN0M1N0ZCIC8qIHRlc3RpbmcgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjQ5NzAsNiArMjQ5OTAsNyBAQAogCQkJCTMxOTg0ODAx
MUExRDgxN0IwMEExMzMxOCAvKiBBbmltYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDlFOTEyQUQwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbkxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTMxRENEMjlEMUFCNEZCREUwMDcyRTgxNyAvKiBBbmltYXRpb25UcmlnZ2VyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0MTc2MTJCMDFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBGQUYxNDk4MDBENDAwRkI1QkQ4
IC8qIEFuaW1hdGlvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERDcwOTlF
NjQ5MjAwNTZFNTgxIC8qIEFwcGVuZE5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QzY1NzlFMzFFMDA4MjcwMDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNzgzMyw2ICsyNzg1NCw3IEBACiAJCQkJQThFQTgwMEMwQTE5NTE2RTAwQThFRjVG
IC8qIFN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RjlFRUYzMTU2REEwMDcwMEQy
M0U3RSAvKiBTdHlsZVNoZWV0Q29udGVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE4MDBB
MEExOTUxNkUwMEE4RUY1RiAvKiBTdHlsZVNoZWV0TGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDE3NjEyQjIxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1RTUwRTgxQkY2RDAwQjI1OTY1IC8qIFN0eWxl
U3Vycm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjgxMDBFODFGMkNFMDBCMjU5
NjUgLyogU3R5bGVUcmFuc2Zvcm1EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNERFQUExODE3
QTkzREMzMDAwRTA0MzAgLyogU3R5bGVUcmVlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MjkxNjEsNiArMjkxODMsNyBAQAogCQkJCUUxQjRDRDI1MTBCMzIyRTIwMEJGRkQ3RSAvKiBDcmVk
ZW50aWFsU3RvcmFnZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJENDgxRjAwMTQ2QjVDNEMw
MEFBNzgzNCAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMUM0MTYxNzBGNjU2MzE4MDA5MkQyRkIgLyogQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTQxNzYxMkIxMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFBQkU2N0Mx
RDA1ODBFMDAwNkQ4NjJEIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMUM0MTVERTBGNjU1RDdDMDA5MkQyRkIgLyogQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTY5ODA0OTExMzM2NDQ3
MDA4OTQxMTUgLyogQ1J1bnRpbWVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDQ3NSw2
ICszMDQ5OCw3IEBACiAJCQkJQjJGQTNEQkEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNl
Z0FyY1JlbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0RCQzBBQjc1QTZGMDAwRTVBQzQg
LyogSlNTVkdQYXRoU2VnQ2xvc2VQYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzREJF
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNDE3NjEyQUYxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlh
RW5kcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEQzAwQUI3NUE2RjAwMEU1QUM0
IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MkZBM0RDMjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3Ro
QWJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzREM0MEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299910</attachid>
            <date>2017-01-26 21:34:38 -0800</date>
            <delta_ts>2017-01-26 22:11:01 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-167289-20170126213236.patch</filename>
            <type>text/plain</type>
            <size>52241</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U2NWVkM2UwMzIxYWI2
NTc5MWE2MTE1NjQ5ZDE0NTdlYzYzOGI4YS4uMjk2NzBhNWExMDkxMmQ0ZDcxZjJkOWMwMmEzNTcw
NDJkOTI5OWQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE3LTAxLTI2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gSW1wbGVt
ZW50IFdlYlJUQyBQZWVyQ29ubmVjdGlvbiBiYWNrZW5kIGJhc2VkIG9uIGxpYndlYnJ0YworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3Mjg5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBJbnRyb2R1Y2lu
ZyBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIFdlYlJUQyBwZWVyIGNvbm5lY3Rpb24gYmFj
a2VuZCBiYXNlZCBvbiBMaWJXZWJSVEMuCisgICAgICAgIFRoaXMgaXMgZG9uZSBiZWhpbmQgYSBj
b21waWxhdGlvbiBmbGFnIHdoaWNoIGlzIG9mZiBieSBkZWZhdWx0LCB1bnRpbCB0aGUgaW1wbGVt
ZW50YXRpb24gaXMgcmVhZHkuCisKKyAgICAgICAgVGhlIGJhY2tlbmQgaW1wbGVtZW50cyB0aGUg
UGVlckNvbm5lY3Rpb25CYWNrZW5kIEFQSS4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlz
IHNwbGl0IGludG8gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kIHdoaWNoIGNvbnRhaW5z
IG1vc3RseSBnZW5lcmljIGNvZGUgYW5kCisgICAgICAgIHBhc3NlcyB0aGUgcmVhbCB3b3JrIHRv
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQuCisgICAgICAgIFRoZSBsYXR0ZXIgY2xhc3MgaXMgaW1w
bGVtZW50aW5nIHRoZSBBUEkgdXNpbmcgTGliV2ViUlRDLgorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6TGliV2ViUlRDTWVkaWFF
bmRwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpzZXNzaW9uRGVzY3JpcHRpb25UeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvU2V0TG9jYWxEZXNjcmlw
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb1NldFJl
bW90ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9p
bnQ6OmFkZFBlbmRpbmdJY2VDYW5kaWRhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmVhbUlk
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvQ3JlYXRlT2Zm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9DcmVhdGVB
bnN3ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Z2V0U3Rh
dHMpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6U3RhdHNDb2xs
ZWN0b3I6OlN0YXRzQ29sbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6OlN0YXRzQ29sbGVjdG9yOjpPblN0YXRzRGVsaXZlcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OnNpZ25hbGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6Ok9uU2lnbmFsaW5nQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OnRyYWNrSWQp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWVkaWFTdHJlYW1UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRTdHJlYW0pOgorICAgICAgICAoV2Vi
Q29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25BZGRTdHJlYW0pOgorICAgICAgICAoV2Vi
Q29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25SZW1vdmVTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25EYXRhQ2hhbm5lbCk6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzdG9wKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uUmVuZWdvdGlhdGlvbk5lZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjppY2VDb25uZWN0aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGli
V2ViUlRDTWVkaWFFbmRwb2ludDo6T25JY2VDb25uZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uSWNlR2F0aGVyaW5nQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uSWNlQ2FuZGlkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uSWNlQ2FuZGlkYXRl
c1JlbW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3Jl
YXRlU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzZXRMb2NhbFNlc3Npb25EZXNj
cmlwdGlvblN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpzZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNj
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0UmVt
b3RlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50Lmg6IEFkZGVkLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmxpYldlYlJUQ1Byb3ZpZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6TGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbmZpZ3VyYXRp
b25Gcm9tTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpzZXRDb25maWd1cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Z2V0U3RhdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb1NldExvY2Fs
RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjpkb1NldFJlbW90ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVPZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvQ3JlYXRlQW5zd2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9TdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9BZGRJ
Y2VDYW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjptYXJrQXNOZWVkaW5nTmVnb3RpYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVSZWNlaXZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZURhdGFDaGFubmVs
SGFuZGxlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNy0wMS0yNiAgQW50b2luZSBRdWludCAgPGdy
YW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJvbHNdIEhpZGlu
ZyBjb250cm9scywgY2hhbmdpbmcgdGhlaXIgd2lkdGggYW5kIHNob3dpbmcgdGhlbSBhZ2FpbiBz
aG93cyBhbiBpbmNvcnJlY3QgbGF5b3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlh
RW5kcG9pbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0ZjQwNjMxZDYzNDlkZmYwNGJiNDM3OGQzZDE3OGJj
OGQ0ZDU5NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcApAQCAtMCwwICsxLDQ0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIgor
CisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRl
ICJMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQ
cm92aWRlci5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1FdmVudC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWwuaCIKKyNpbmNsdWRl
ICJSVENEYXRhQ2hhbm5lbEV2ZW50LmgiCisjaW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRlLmgiCisj
aW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3Jp
cHRpb24uaCIKKyNpbmNsdWRlICJSVENUcmFja0V2ZW50LmgiCisjaW5jbHVkZSAiUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlLmgiCisjaW5jbHVkZSA8d2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmZhY3RvcnkuaD4KKyNp
bmNsdWRlIDx3ZWJydGMvYmFzZS9waHlzaWNhbHNvY2tldHNlcnZlci5oPgorI2luY2x1ZGUgPHdl
YnJ0Yy9wMnAvYmFzZS9iYXNpY3BhY2tldHNvY2tldGZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3ZWJy
dGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgorCisjaW5jbHVkZSAiQ29yZU1lZGlhU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpMaWJXZWJSVENNZWRpYUVuZHBvaW50
KExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYgcGVlckNvbm5lY3Rpb24sIExpYldlYlJU
Q1Byb3ZpZGVyJiBjbGllbnQpCisgICAgOiBtX3BlZXJDb25uZWN0aW9uQmFja2VuZChwZWVyQ29u
bmVjdGlvbikKKyAgICAsIG1fYmFja2VuZChjbGllbnQuY3JlYXRlUGVlckNvbm5lY3Rpb24oKnRo
aXMpKQorICAgICwgbV9jcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcigqdGhpcykKKyAg
ICAsIG1fc2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcigqdGhpcykKKyAgICAsIG1f
c2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIoKnRoaXMpCit7CisgICAgQVNTRVJU
KG1fYmFja2VuZCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogc2Vzc2lvbkRlc2Ny
aXB0aW9uVHlwZShSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGUgc2RwVHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKHNkcFR5cGUpIHsKKyAgICBjYXNlIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6U2Rw
VHlwZTo6T2ZmZXI6CisgICAgICAgIHJldHVybiAib2ZmZXIiOworICAgIGNhc2UgUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpQcmFuc3dlcjoKKyAgICAgICAgcmV0dXJuICJwcmFuc3dl
ciI7CisgICAgY2FzZSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6OkFuc3dlcjoKKyAg
ICAgICAgcmV0dXJuICJhbnN3ZXIiOworICAgIGNhc2UgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpT
ZHBUeXBlOjpSb2xsYmFjazoKKyAgICAgICAgcmV0dXJuICJyb2xsYmFjayI7CisgICAgfQorfQor
Cit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvU2V0TG9jYWxEZXNjcmlwdGlvbihSVENT
ZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQoreworICAgIHdlYnJ0Yzo6U2RwUGFyc2VF
cnJvciBlcnJvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpTZXNzaW9uRGVzY3JpcHRp
b25JbnRlcmZhY2U+IHNlc3Npb25EZXNjcmlwdGlvbih3ZWJydGM6OkNyZWF0ZVNlc3Npb25EZXNj
cmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb25UeXBlKGRlc2NyaXB0aW9uLnR5cGUoKSksIGRlc2Ny
aXB0aW9uLnNkcCgpLnV0ZjgoKS5kYXRhKCksICZlcnJvcikpOworCisgICAgaWYgKCFzZXNzaW9u
RGVzY3JpcHRpb24pIHsKKyAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZShlcnJvci5kZXNjcmlw
dGlvbi5kYXRhKCksIGVycm9yLmRlc2NyaXB0aW9uLnNpemUoKSk7CisgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLnNldExvY2FsRGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9uIHsgT3Bl
cmF0aW9uRXJyb3IsIFdURk1vdmUoZXJyb3JNZXNzYWdlKSB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBtX2JhY2tlbmQtPlNldExvY2FsRGVzY3JpcHRpb24oJm1fc2V0TG9jYWxTZXNz
aW9uRGVzY3JpcHRpb25PYnNlcnZlciwgc2Vzc2lvbkRlc2NyaXB0aW9uLnJlbGVhc2UoKSk7Cit9
CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9TZXRSZW1vdGVEZXNjcmlwdGlvbihS
VENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQoreworICAgIHdlYnJ0Yzo6U2RwUGFy
c2VFcnJvciBlcnJvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpTZXNzaW9uRGVzY3Jp
cHRpb25JbnRlcmZhY2U+IHNlc3Npb25EZXNjcmlwdGlvbih3ZWJydGM6OkNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb25UeXBlKGRlc2NyaXB0aW9uLnR5cGUoKSksIGRl
c2NyaXB0aW9uLnNkcCgpLnV0ZjgoKS5kYXRhKCksICZlcnJvcikpOworICAgIGlmICghc2Vzc2lv
bkRlc2NyaXB0aW9uKSB7CisgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UoZXJyb3IuZGVzY3Jp
cHRpb24uZGF0YSgpLCBlcnJvci5kZXNjcmlwdGlvbi5zaXplKCkpOworICAgICAgICBtX3BlZXJD
b25uZWN0aW9uQmFja2VuZC5zZXRSZW1vdGVEZXNjcmlwdGlvbkZhaWxlZChFeGNlcHRpb24geyBP
cGVyYXRpb25FcnJvciwgV1RGTW92ZShlcnJvck1lc3NhZ2UpIH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIG1fYmFja2VuZC0+U2V0UmVtb3RlRGVzY3JpcHRpb24oJm1fc2V0UmVtb3Rl
U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIsIHNlc3Npb25EZXNjcmlwdGlvbi5yZWxlYXNlKCkp
OworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFBlbmRpbmdJY2VDYW5kaWRh
dGVzKCkKK3sKKyAgICB3aGlsZSAobV9wZW5kaW5nQ2FuZGlkYXRlcy5zaXplKCkpCisgICAgICAg
IG1fYmFja2VuZC0+QWRkSWNlQ2FuZGlkYXRlKG1fcGVuZGluZ0NhbmRpZGF0ZXMudGFrZUxhc3Qo
KS5yZWxlYXNlKCkpOworfQorCitzdGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5nIHN0cmVhbUlkKFJU
Q1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIGF1dG8mIHNlbmRlcnMgPSBjb25u
ZWN0aW9uLmdldFNlbmRlcnMoKTsKKyAgICBpZiAoc2VuZGVycy5zaXplKCkpIHsKKyAgICAgICAg
Zm9yIChSVENSdHBTZW5kZXImIHNlbmRlciA6IHNlbmRlcnMpIHsKKyAgICAgICAgICAgIGF1dG8q
IHRyYWNrID0gc2VuZGVyLnRyYWNrKCk7CisgICAgICAgICAgICBpZiAodHJhY2spIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoc2VuZGVyLm1lZGlhU3RyZWFtSWRzKCkuc2l6ZSgpID09IDEpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZyhzZW5kZXIubWVkaWFTdHJlYW1JZHMo
KS5maXJzdCgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiAiYXZfbGFiZWwiOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9p
bnQ6OmRvQ3JlYXRlT2ZmZXIoKQoreworICAgIG1faXNJbml0aWF0b3IgPSB0cnVlOworICAgIGF1
dG8mIHNlbmRlcnMgPSBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuZ2V0U2Vu
ZGVycygpOworICAgIGlmIChzZW5kZXJzLnNpemUoKSkgeworICAgICAgICAvLyBGSVhNRTogV2Ug
b25seSBzdXBwb3J0IG9uZSBzdHJlYW0gZm9yIHRoZSBtb21lbnQuCisgICAgICAgIGF1dG8gc3Ry
ZWFtID0gcGVlckNvbm5lY3Rpb25GYWN0b3J5KCkuQ3JlYXRlTG9jYWxNZWRpYVN0cmVhbShzdHJl
YW1JZChtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkpKTsKKyAgICAgICAgZm9y
IChSVENSdHBTZW5kZXImIHNlbmRlciA6IHNlbmRlcnMpIHsKKyAgICAgICAgICAgIGF1dG8qIHRy
YWNrID0gc2VuZGVyLnRyYWNrKCk7CisgICAgICAgICAgICBpZiAodHJhY2spIHsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoc2VuZGVyLm1lZGlhU3RyZWFtSWRzKCkuc2l6ZSgpID09IDEpOworICAg
ICAgICAgICAgICAgIGF1dG8mIHNvdXJjZSA9IHRyYWNrLT5zb3VyY2UoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoc291cmNlLnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykgewor
ICAgICAgICAgICAgICAgICAgICBhdXRvIHRyYWNrU291cmNlID0gUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlOjpjcmVhdGUoc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBydGNU
cmFjayA9IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpLkNyZWF0ZUF1ZGlvVHJhY2sodHJhY2stPmlk
KCkudXRmOCgpLmRhdGEoKSwgdHJhY2tTb3VyY2UucHRyKCkpOworICAgICAgICAgICAgICAgICAg
ICB0cmFja1NvdXJjZS0+c2V0VHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9U
cmFja0ludGVyZmFjZT4ocnRjVHJhY2spKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hdWRpb1Nv
dXJjZXMuYXBwZW5kKFdURk1vdmUodHJhY2tTb3VyY2UpKTsKKyAgICAgICAgICAgICAgICAgICAg
c3RyZWFtLT5BZGRUcmFjayhXVEZNb3ZlKHJ0Y1RyYWNrKSk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbV92aWRlb1NvdXJjZXMuYXBwZW5kKFJlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKHNvdXJjZSkpOworICAgICAgICAgICAgICAgICAg
ICBzdHJlYW0tPkFkZFRyYWNrKHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpLkNyZWF0ZVZpZGVvVHJh
Y2sodHJhY2stPmlkKCkudXRmOCgpLmRhdGEoKSwgbV92aWRlb1NvdXJjZXMubGFzdCgpLnB0cigp
KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IG1fYmFja2VuZC0+QWRkU3RyZWFtKHN0cmVhbSk7CisgICAgfQorICAgIG1fYmFja2VuZC0+Q3Jl
YXRlT2ZmZXIoJm1fY3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIsIG51bGxwdHIpOwor
fQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvQ3JlYXRlQW5zd2VyKCkKK3sKKyAg
ICBtX2lzSW5pdGlhdG9yID0gZmFsc2U7CisKKyAgICBhdXRvJiBzZW5kZXJzID0gbV9wZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLmdldFNlbmRlcnMoKTsKKyAgICBpZiAoc2VuZGVy
cy5zaXplKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIG9ubHkgc3VwcG9ydCBvbmUgc3RyZWFt
IGZvciB0aGUgbW9tZW50LgorICAgICAgICBhdXRvIHN0cmVhbSA9IHBlZXJDb25uZWN0aW9uRmFj
dG9yeSgpLkNyZWF0ZUxvY2FsTWVkaWFTdHJlYW0oc3RyZWFtSWQobV9wZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY29ubmVjdGlvbigpKSk7CisgICAgICAgIGZvciAoUlRDUnRwU2VuZGVyJiBzZW5kZXIg
OiBzZW5kZXJzKSB7CisgICAgICAgICAgICBhdXRvKiB0cmFjayA9IHNlbmRlci50cmFjaygpOwor
ICAgICAgICAgICAgaWYgKHRyYWNrKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNlbmRlci5t
ZWRpYVN0cmVhbUlkcygpLnNpemUoKSA9PSAxKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzb3Vy
Y2UgPSB0cmFjay0+c291cmNlKCk7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS50eXBlKCkg
PT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byB0cmFja1NvdXJjZSA9IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKHNvdXJj
ZSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcnRjVHJhY2sgPSBwZWVyQ29ubmVjdGlvbkZh
Y3RvcnkoKS5DcmVhdGVBdWRpb1RyYWNrKHRyYWNrLT5pZCgpLnV0ZjgoKS5kYXRhKCksIHRyYWNr
U291cmNlLnB0cigpKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2tTb3VyY2UtPnNldFRyYWNr
KHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+KHJ0Y1RyYWNr
KSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKHRy
YWNrU291cmNlKSk7CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbS0+QWRkVHJhY2soV1RGTW92
ZShydGNUcmFjaykpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIG1fdmlkZW9Tb3VyY2VzLmFwcGVuZChSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OmNy
ZWF0ZShzb3VyY2UpKTsKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5BZGRUcmFjayhwZWVy
Q29ubmVjdGlvbkZhY3RvcnkoKS5DcmVhdGVWaWRlb1RyYWNrKHRyYWNrLT5pZCgpLnV0ZjgoKS5k
YXRhKCksIG1fdmlkZW9Tb3VyY2VzLmxhc3QoKS5wdHIoKSkpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtX2JhY2tlbmQtPkFkZFN0cmVhbShz
dHJlYW0pOworICAgIH0KKyAgICBtX2JhY2tlbmQtPkNyZWF0ZUFuc3dlcigmbV9jcmVhdGVTZXNz
aW9uRGVzY3JpcHRpb25PYnNlcnZlciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVk
aWFFbmRwb2ludDo6Z2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayogdHJhY2ssIFBlZXJDb25uZWN0
aW9uOjpTdGF0c1Byb21pc2UmJiBwcm9taXNlKQoreworICAgIGF1dG8gY29sbGVjdG9yID0gU3Rh
dHNDb2xsZWN0b3I6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgdHJhY2spOworICAg
IG1fYmFja2VuZC0+R2V0U3RhdHMoY29sbGVjdG9yLnB0cigpKTsKKyAgICBtX3N0YXRzQ29sbGVj
dG9ycy5hcHBlbmQoV1RGTW92ZShjb2xsZWN0b3IpKTsKK30KKworTGliV2ViUlRDTWVkaWFFbmRw
b2ludDo6U3RhdHNDb2xsZWN0b3I6OlN0YXRzQ29sbGVjdG9yKExpYldlYlJUQ01lZGlhRW5kcG9p
bnQmIGVuZHBvaW50LCBQZWVyQ29ubmVjdGlvbjo6U3RhdHNQcm9taXNlJiYgcHJvbWlzZSwgTWVk
aWFTdHJlYW1UcmFjayogdHJhY2spCisgICAgOiBtX2VuZHBvaW50KGVuZHBvaW50KQorICAgICwg
bV9wcm9taXNlKFdURk1vdmUocHJvbWlzZSkpCit7CisgICAgaWYgKHRyYWNrKQorICAgICAgICBt
X2lkID0gdHJhY2stPmlkKCk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6U3Rh
dHNDb2xsZWN0b3I6Ok9uU3RhdHNEZWxpdmVyZWQoY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPGNv
bnN0IHdlYnJ0Yzo6UlRDU3RhdHNSZXBvcnQ+JiByZXBvcnQpCit7CisgICAgY2FsbE9uTWFpblRo
cmVhZChbdGhpcywgcmVwb3J0LCBwcm90ZWN0b3IgPSBtYWtlUmVmKG1fZW5kcG9pbnQpXSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBGdWxmaWxsIHByb21pc2Ugd2l0aCB0aGUgcmVwb3J0CisgICAgICAg
IFVOVVNFRF9QQVJBTShyZXBvcnQpOworICAgICAgICBtX3Byb21pc2UucmVqZWN0KFR5cGVFcnJv
ciwgQVNDSUlMaXRlcmFsKCJTdGF0cyBBUEkgaXMgbm90IHlldCBpbXBsZW1lbnRlZCIpKTsKKwor
ICAgICAgICBtX2VuZHBvaW50Lm1fc3RhdHNDb2xsZWN0b3JzLnJlbW92ZUZpcnN0TWF0Y2hpbmco
W3RoaXNdKGNvbnN0IFJlZjxTdGF0c0NvbGxlY3Rvcj4mIGNvbGxlY3RvcikgeworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMgPT0gY29sbGVjdG9yLnB0cigpOworICAgICAgICB9KTsKKyAgICB9KTsK
K30KKworc3RhdGljIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZSBzaWduYWxp
bmdTdGF0ZSh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpTaWduYWxpbmdTdGF0ZSBz
dGF0ZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlOjprU3RhYmxlOgorICAgICAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25T
dGF0ZXM6OlNpZ25hbGluZ1N0YXRlOjpTdGFibGU7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlOjprSGF2ZUxvY2FsT2ZmZXI6CisgICAgICAgIHJldHVybiBQZWVyQ29u
bmVjdGlvblN0YXRlczo6U2lnbmFsaW5nU3RhdGU6OkhhdmVMb2NhbE9mZmVyOworICAgIGNhc2Ug
d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0hhdmVMb2NhbFByQW5zd2VyOgorICAg
ICAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGluZ1N0YXRlOjpIYXZlTG9j
YWxQckFuc3dlcjsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtI
YXZlUmVtb3RlT2ZmZXI6CisgICAgICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblN0YXRlczo6U2ln
bmFsaW5nU3RhdGU6OkhhdmVSZW1vdGVPZmZlcjsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OmtIYXZlUmVtb3RlUHJBbnN3ZXI6CisgICAgICAgIHJldHVybiBQZWVy
Q29ubmVjdGlvblN0YXRlczo6U2lnbmFsaW5nU3RhdGU6OkhhdmVSZW1vdGVQckFuc3dlcjsKKyAg
ICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtDbG9zZWQ6CisgICAgICAg
IHJldHVybiBQZWVyQ29ubmVjdGlvblN0YXRlczo6U2lnbmFsaW5nU3RhdGU6OkNsb3NlZDsKKyAg
ICB9Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25TaWduYWxpbmdDaGFuZ2Uo
d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6U2lnbmFsaW5nU3RhdGUgcnRjU3RhdGUp
Cit7CisgICAgYXV0byBzdGF0ZSA9IHNpZ25hbGluZ1N0YXRlKHJ0Y1N0YXRlKTsKKyAgICBjYWxs
T25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0YXRlXSB7Cisg
ICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQudXBkYXRl
U2lnbmFsaW5nU3RhdGUoc3RhdGUpOworICAgIH0pOworfQorCitzdGF0aWMgaW5saW5lIFN0cmlu
ZyB0cmFja0lkKHdlYnJ0Yzo6TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZSYgdmlkZW9UcmFjaykK
K3sKKyAgICByZXR1cm4gU3RyaW5nKHZpZGVvVHJhY2suaWQoKS5kYXRhKCksIHZpZGVvVHJhY2su
aWQoKS5zaXplKCkpOworfQorCitzdGF0aWMgaW5saW5lIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiBj
cmVhdGVNZWRpYVN0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJl
ZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHJlbW90ZVNvdXJjZSkKK3sKKyAgICBTdHJpbmcgdHJh
Y2tJZCA9IHJlbW90ZVNvdXJjZS0+aWQoKTsKKyAgICByZXR1cm4gTWVkaWFTdHJlYW1UcmFjazo6
Y3JlYXRlKGNvbnRleHQsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoV1RGTW92ZShy
ZW1vdGVTb3VyY2UpLCBXVEZNb3ZlKHRyYWNrSWQpKSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVk
aWFFbmRwb2ludDo6YWRkU3RyZWFtKHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2UmIHN0cmVh
bSkKK3sKKyAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIHRyYWNrczsKKyAgICBmb3IgKGF1dG8m
IHZpZGVvVHJhY2sgOiBzdHJlYW0uR2V0VmlkZW9UcmFja3MoKSkgeworICAgICAgICBBU1NFUlQo
dmlkZW9UcmFjayk7CisgICAgICAgIFN0cmluZyBpZCA9IHRyYWNrSWQoKnZpZGVvVHJhY2spOwor
ICAgICAgICBhdXRvIHJlbW90ZVNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6
Y3JlYXRlKFdURk1vdmUodmlkZW9UcmFjayksIFdURk1vdmUoaWQpKTsKKyAgICAgICAgdHJhY2tz
LmFwcGVuZChjcmVhdGVNZWRpYVN0cmVhbVRyYWNrKCptX3BlZXJDb25uZWN0aW9uQmFja2VuZC5j
b25uZWN0aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKHJlbW90ZVNvdXJj
ZSkpKTsKKyAgICB9CisgICAgZm9yIChhdXRvJiBhdWRpb1RyYWNrIDogc3RyZWFtLkdldEF1ZGlv
VHJhY2tzKCkpIHsKKyAgICAgICAgQVNTRVJUKGF1ZGlvVHJhY2spOworICAgICAgICBTdHJpbmcg
aWQgPSB0cmFja0lkKCphdWRpb1RyYWNrKTsKKyAgICAgICAgYXV0byByZW1vdGVTb3VyY2UgPSBS
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShXVEZNb3ZlKGF1ZGlvVHJhY2spLCBX
VEZNb3ZlKGlkKSk7CisgICAgICAgIHRyYWNrcy5hcHBlbmQoY3JlYXRlTWVkaWFTdHJlYW1UcmFj
aygqbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgV1RGTW92ZShyZW1vdGVTb3VyY2UpKSk7CisgICAgfQorCisgICAgYXV0byBuZXdT
dHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKCptX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25u
ZWN0aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKHRyYWNrcykpOworICAg
IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5maXJlRXZlbnQoTWVkaWFTdHJl
YW1FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGRzdHJlYW1FdmVudCwgZmFsc2UsIGZhbHNl
LCBuZXdTdHJlYW0uY29weVJlZigpKSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFt
Pj4gc3RyZWFtczsKKyAgICBzdHJlYW1zLmFwcGVuZChuZXdTdHJlYW0uY29weVJlZigpKTsKKyAg
ICBmb3IgKGF1dG8mIHRyYWNrIDogbmV3U3RyZWFtLT5nZXRUcmFja3MoKSkKKyAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLmZpcmVFdmVudChSVENUcmFja0V2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLnRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgbnVsbHB0ciwg
dHJhY2suZ2V0KCksIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PihzdHJlYW1zKSwgbnVsbHB0
cikpOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uQWRkU3RyZWFtKHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPiBzdHJlYW0pCit7Cisg
ICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdHJl
YW0gPSBXVEZNb3ZlKHN0cmVhbSldIHsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3Rv
cHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQoc3RyZWFtKTsKKyAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkU3RyZWFtKCpzdHJlYW0uZ2V0KCkpOworICAgIH0pOwor
fQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uUmVtb3ZlU3RyZWFtKHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPikKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkRhdGFD
aGFubmVsKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkRhdGFDaGFubmVsSW50ZXJmYWNlPiBk
YXRhQ2hhbm5lbCkKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGRhdGFDaGFubmVsID0gV1RGTW92ZShkYXRhQ2hhbm5lbCldIHsKKyAgICAg
ICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGREYXRhQ2hhbm5lbChydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4oZGF0YUNoYW5uZWwpKTsKKyAgICB9KTsKK30K
Kwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzdG9wKCkKK3sKKyAgICBBU1NFUlQobV9i
YWNrZW5kKTsKKyAgICBtX2JhY2tlbmQtPkNsb3NlKCk7CisgICAgbV9iYWNrZW5kID0gbnVsbHB0
cjsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPblJlbmVnb3RpYXRpb25OZWVk
ZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUGVlckNv
bm5lY3Rpb25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZSBpY2VDb25uZWN0aW9uU3RhdGUod2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlIHN0YXRlKQor
eworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uTmV3OgorICAgICAgICByZXR1cm4gUGVlckNvbm5lY3Rp
b25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZTo6TmV3OworICAgIGNhc2Ugd2VicnRjOjpQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25DaGVja2luZzoKKyAgICAgICAgcmV0
dXJuIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VDb25uZWN0aW9uU3RhdGU6OkNoZWNraW5nOwor
ICAgIGNhc2Ugd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25D
b25uZWN0ZWQ6CisgICAgICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblN0YXRlczo6SWNlQ29ubmVj
dGlvblN0YXRlOjpDb25uZWN0ZWQ7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjprSWNlQ29ubmVjdGlvbkNvbXBsZXRlZDoKKyAgICAgICAgcmV0dXJuIFBlZXJDb25u
ZWN0aW9uU3RhdGVzOjpJY2VDb25uZWN0aW9uU3RhdGU6OkNvbXBsZXRlZDsKKyAgICBjYXNlIHdl
YnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uRmFpbGVkOgorICAg
ICAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZTo6RmFp
bGVkOworICAgIGNhc2Ugd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5l
Y3Rpb25EaXNjb25uZWN0ZWQ6CisgICAgICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblN0YXRlczo6
SWNlQ29ubmVjdGlvblN0YXRlOjpEaXNjb25uZWN0ZWQ7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjprSWNlQ29ubmVjdGlvbkNsb3NlZDoKKyAgICAgICAgcmV0dXJu
IFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VDb25uZWN0aW9uU3RhdGU6OkNsb3NlZDsKKyAgICBj
YXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uTWF4Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFBlZXJDb25uZWN0
aW9uU3RhdGVzOjpJY2VDb25uZWN0aW9uU3RhdGU6Ok5ldzsKKyAgICB9Cit9CisKK3ZvaWQgTGli
V2ViUlRDTWVkaWFFbmRwb2ludDo6T25JY2VDb25uZWN0aW9uQ2hhbmdlKHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZSBzdGF0ZSkKK3sKKyAgICBhdXRv
IGNvbm5lY3Rpb25TdGF0ZSA9IGljZUNvbm5lY3Rpb25TdGF0ZShzdGF0ZSk7CisgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb25uZWN0aW9uU3Rh
dGVdIHsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY29ubmVjdGlvbigpLmludGVybmFsSWNlQ29ubmVjdGlvblN0YXRlKCkgIT0gY29ubmVj
dGlvblN0YXRlKQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY29ubmVjdGlvbigpLnVwZGF0ZUljZUNvbm5lY3Rpb25TdGF0ZShjb25uZWN0aW9uU3Rh
dGUpOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uSWNlR2F0
aGVyaW5nQ2hhbmdlKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUdhdGhlcmlu
Z1N0YXRlIHN0YXRlKQoreworICAgIGlmIChzdGF0ZSA9PSB3ZWJydGM6OlBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjprSWNlR2F0aGVyaW5nQ29tcGxldGUpIHsKKyAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgICAgICBpZiAo
cHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuZG9uZUdhdGhl
cmluZ0NhbmRpZGF0ZXMoKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIExpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6Ok9uSWNlQ2FuZGlkYXRlKGNvbnN0IHdlYnJ0Yzo6SWNlQ2FuZGlkYXRl
SW50ZXJmYWNlICpydGNDYW5kaWRhdGUpCit7CisgICAgQVNTRVJUKHJ0Y0NhbmRpZGF0ZSk7CisK
KyAgICBzdGQ6OnN0cmluZyBzZHA7CisgICAgcnRjQ2FuZGlkYXRlLT5Ub1N0cmluZygmc2RwKTsK
KyAgICBTdHJpbmcgY2FuZGlkYXRlU0RQKHNkcC5kYXRhKCksIHNkcC5zaXplKCkpOworCisgICAg
YXV0byBtaWQgPSBydGNDYW5kaWRhdGUtPnNkcF9taWQoKTsKKyAgICBTdHJpbmcgY2FuZGlkYXRl
TWlkKG1pZC5kYXRhKCksIG1pZC5zaXplKCkpOworCisgICAgY2FsbE9uTWFpblRocmVhZChbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtaWQgPSBXVEZNb3ZlKGNhbmRpZGF0ZU1pZCks
IHNkcCA9IFdURk1vdmUoY2FuZGlkYXRlU0RQKV0geworICAgICAgICBpZiAocHJvdGVjdGVkVGhp
cy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHByb3RlY3RlZFRo
aXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmZpcmVJQ0VDYW5kaWRhdGVFdmVudChSVENJY2VD
YW5kaWRhdGU6OmNyZWF0ZShTdHJpbmcoc2RwKSwgU3RyaW5nKG1pZCksIDApKTsKKyAgICB9KTsK
K30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkljZUNhbmRpZGF0ZXNSZW1vdmVk
KGNvbnN0IHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OkNhbmRpZGF0ZT4mKQoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNl
c3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCh3ZWJydGM6OlNlc3Npb25EZXNjcmlwdGlvbkludGVy
ZmFjZSogZGVzY3JpcHRpb24pCit7CisgICAgc3RkOjpzdHJpbmcgc2RwOworICAgIGRlc2NyaXB0
aW9uLT5Ub1N0cmluZygmc2RwKTsKKyAgICBTdHJpbmcgc2RwU3RyaW5nKHNkcC5kYXRhKCksIHNk
cC5zaXplKCkpOworCisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBzZHAgPSBXVEZNb3ZlKHNkcFN0cmluZyldIHsKKyAgICAgICAgaWYgKHByb3Rl
Y3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAo
cHJvdGVjdGVkVGhpcy0+bV9pc0luaXRpYXRvcikKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
Pm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyU3VjY2VlZGVkKFN0cmluZyhzZHAp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3JlYXRlQW5zd2VyU3VjY2VlZGVkKFN0cmluZyhzZHApKTsKKyAgICB9KTsK
K30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRp
b25GYWlsZWQoY29uc3Qgc3RkOjpzdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBTdHJpbmcg
ZXJyb3IoZXJyb3JNZXNzYWdlLmRhdGEoKSwgZXJyb3JNZXNzYWdlLnNpemUoKSk7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBlcnJvciA9IFdU
Rk1vdmUoZXJyb3IpXSB7CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1faXNJbml0
aWF0b3IpCisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVPZmZlckZhaWxlZChFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgU3RyaW5nKGVy
cm9yKSB9KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlQW5zd2VyRmFpbGVkKEV4Y2VwdGlvbiB7IE9wZXJhdGlv
bkVycm9yLCBTdHJpbmcoZXJyb3IpIH0pOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OnNldExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKCkKK3sKKyAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAg
ICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5zZXRMb2Nh
bERlc2NyaXB0aW9uU3VjY2VlZGVkKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVk
aWFFbmRwb2ludDo6c2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qgc3RkOjpz
dHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBTdHJpbmcgZXJyb3IoZXJyb3JNZXNzYWdlLmRh
dGEoKSwgZXJyb3JNZXNzYWdlLnNpemUoKSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7CisgICAg
ICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuc2V0TG9jYWxE
ZXNjcmlwdGlvbkZhaWxlZChFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgU3RyaW5nKGVycm9y
KSB9KTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzZXRSZW1v
dGVTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQoKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBpZiAocHJvdGVjdGVk
VGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNldFJlbW90ZURlc2NyaXB0aW9uU3VjY2Vl
ZGVkKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0UmVt
b3RlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCit7CisgICAgU3RyaW5nIGVycm9yKGVycm9yTWVzc2FnZS5kYXRhKCksIGVycm9yTWVzc2Fn
ZS5zaXplKCkpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKV0geworICAgICAgICBpZiAocHJvdGVjdGVk
VGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNldFJlbW90ZURlc2NyaXB0aW9uRmFpbGVk
KEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBTdHJpbmcoZXJyb3IpIH0pOworICAgIH0pOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExZDcz
MWZlNWIzNDlkODkwZWViZGZmMTRhODdkM2IzODUyMmUyYjYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRp
YUVuZHBvaW50LmgKQEAgLTAsMCArMSwxNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRD
KQorCisjaW5jbHVkZSAiTGliV2ViUlRDVXRpbHMuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuaCIKKyNpbmNsdWRlICJSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCIKKyNp
bmNsdWRlICJSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaCIKKworI2luY2x1ZGUgPHdlYnJ0
Yy9hcGkvanNlcC5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25mYWN0b3J5
Lmg+CisjaW5jbHVkZSA8d2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oPgorI2lu
Y2x1ZGUgPHdlYnJ0Yy9hcGkvcnRjc3RhdHNjb2xsZWN0b3IuaD4KKworI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2Ugd2VicnRjIHsKK2NsYXNzIENyZWF0
ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyOworY2xhc3MgRGF0YUNoYW5uZWxJbnRlcmZhY2U7
CitjbGFzcyBJY2VDYW5kaWRhdGVJbnRlcmZhY2U7CitjbGFzcyBNZWRpYVN0cmVhbUludGVyZmFj
ZTsKK2NsYXNzIFBlZXJDb25uZWN0aW9uT2JzZXJ2ZXI7CitjbGFzcyBTZXNzaW9uRGVzY3JpcHRp
b25JbnRlcmZhY2U7CitjbGFzcyBTZXRTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjsKK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBMaWJXZWJSVENQcm92aWRlcjsKK2NsYXNzIExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKK2NsYXNzIE1lZGlhU3RyZWFtVHJhY2s7Citj
bGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb247CisKK2NsYXNzIExpYldlYlJUQ01lZGlhRW5kcG9p
bnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TGliV2ViUlRDTWVkaWFFbmRwb2ludD4s
IHByaXZhdGUgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IGNyZWF0ZShMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQmIHBlZXJDb25uZWN0aW9uLCBMaWJXZWJSVENQcm92aWRlciYgY2xpZW50
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IExpYldlYlJUQ01lZGlhRW5kcG9pbnQocGVlckNvbm5l
Y3Rpb24sIGNsaWVudCkpOyB9CisgICAgdmlydHVhbCB+TGliV2ViUlRDTWVkaWFFbmRwb2ludCgp
IHsgfQorCisgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZSYgYmFja2VuZCgpIGNv
bnN0IHsgQVNTRVJUKG1fYmFja2VuZCk7IHJldHVybiAqbV9iYWNrZW5kLmdldCgpOyB9CisgICAg
dm9pZCBkb1NldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJik7CisgICAg
dm9pZCBkb1NldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYpOworICAg
IHZvaWQgZG9DcmVhdGVPZmZlcigpOworICAgIHZvaWQgZG9DcmVhdGVBbnN3ZXIoKTsKKyAgICB2
b2lkIGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBQZWVyQ29ubmVjdGlvbjo6U3RhdHNQcm9t
aXNlJiYpOworCisgICAgdm9pZCBzdG9yZUljZUNhbmRpZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8d2Vi
cnRjOjpJY2VDYW5kaWRhdGVJbnRlcmZhY2U+JiYgY2FuZGlkYXRlKSB7IG1fcGVuZGluZ0NhbmRp
ZGF0ZXMuYXBwZW5kKFdURk1vdmUoY2FuZGlkYXRlKSk7IH0KKyAgICB2b2lkIGFkZFBlbmRpbmdJ
Y2VDYW5kaWRhdGVzKCk7CisKKyAgICB2b2lkIHN0b3AoKTsKKworcHJpdmF0ZToKKyAgICBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50KExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYsIExpYldl
YlJUQ1Byb3ZpZGVyJik7CisKKyAgICAvLyB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIg
QVBJCisgICAgdm9pZCBPblNpZ25hbGluZ0NoYW5nZSh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjpTaWduYWxpbmdTdGF0ZSkgZmluYWw7CisgICAgdm9pZCBPbkFkZFN0cmVhbShydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZT4pIGZpbmFsOworICAg
IHZvaWQgT25SZW1vdmVTdHJlYW0ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJl
YW1JbnRlcmZhY2U+KSBmaW5hbDsKKyAgICB2b2lkIE9uRGF0YUNoYW5uZWwocnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+KSBmaW5hbDsKKyAgICB2b2lkIE9u
UmVuZWdvdGlhdGlvbk5lZWRlZCgpIGZpbmFsOworICAgIHZvaWQgT25JY2VDb25uZWN0aW9uQ2hh
bmdlKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZSkg
ZmluYWw7CisgICAgdm9pZCBPbkljZUdhdGhlcmluZ0NoYW5nZSh3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjpJY2VHYXRoZXJpbmdTdGF0ZSkgZmluYWw7CisgICAgdm9pZCBPbkljZUNh
bmRpZGF0ZShjb25zdCB3ZWJydGM6OkljZUNhbmRpZGF0ZUludGVyZmFjZSopIGZpbmFsOworICAg
IHZvaWQgT25JY2VDYW5kaWRhdGVzUmVtb3ZlZChjb25zdCBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpD
YW5kaWRhdGU+JikgZmluYWw7CisKKyAgICB2b2lkIGNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvblN1
Y2NlZWRlZCh3ZWJydGM6OlNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSopOworICAgIHZvaWQg
Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3RyaW5nJik7CisgICAg
dm9pZCBzZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCgpOworICAgIHZvaWQgc2V0
TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qgc3RkOjpzdHJpbmcmKTsKKyAgICB2
b2lkIHNldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCgpOworICAgIHZvaWQgc2V0
UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3RyaW5nJik7CisgICAg
dm9pZCBhZGRTdHJlYW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZSYpOworICAgIHZvaWQg
YWRkRGF0YUNoYW5uZWwocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRl
cmZhY2U+JiYpOworCisgICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiAhbV9iYWNr
ZW5kOyB9CisKKyAgICBpbnQgQWRkUmVmKCkgY29uc3QgeyByZWYoKTsgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4ocmVmQ291bnQoKSk7IH0KKyAgICBpbnQgUmVsZWFzZSgpIGNvbnN0IHsgZGVyZWYo
KTsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVmQ291bnQoKSk7IH0KKworICAgIGNsYXNzIENy
ZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIGZpbmFsIDogcHVibGljIHdlYnJ0Yzo6Q3Jl
YXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhw
bGljaXQgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIoTGliV2ViUlRDTWVkaWFFbmRw
b2ludCAmZW5kcG9pbnQpIDogbV9lbmRwb2ludChlbmRwb2ludCkgeyB9CisKKyAgICAgICAgdm9p
ZCBPblN1Y2Nlc3Mod2VicnRjOjpTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2UqIHNlc3Npb25E
ZXNjcmlwdGlvbikgZmluYWwgeyBtX2VuZHBvaW50LmNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvblN1
Y2NlZWRlZChzZXNzaW9uRGVzY3JpcHRpb24pOyB9CisgICAgICAgIHZvaWQgT25GYWlsdXJlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBlcnJvcikgZmluYWwgeyBtX2VuZHBvaW50LmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvbkZhaWxlZChlcnJvcik7IH0KKworICAgICAgICBpbnQgQWRkUmVmKCkgY29uc3Qg
eyByZXR1cm4gbV9lbmRwb2ludC5BZGRSZWYoKTsgfQorICAgICAgICBpbnQgUmVsZWFzZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZW5kcG9pbnQuUmVsZWFzZSgpOyB9CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBMaWJXZWJSVENNZWRpYUVuZHBvaW50JiBtX2VuZHBvaW50OworICAgIH07CisKKyAgICBj
bGFzcyBTZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIGZpbmFsIDogcHVibGljIHdl
YnJ0Yzo6U2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgZXhwbGljaXQgU2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcihMaWJXZWJSVENN
ZWRpYUVuZHBvaW50ICZlbmRwb2ludCkgOiBtX2VuZHBvaW50KGVuZHBvaW50KSB7IH0KKworICAg
ICAgICB2b2lkIE9uU3VjY2VzcygpIGZpbmFsIHsgbV9lbmRwb2ludC5zZXRMb2NhbFNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZCgpOyB9CisgICAgICAgIHZvaWQgT25GYWlsdXJlKGNvbnN0IHN0
ZDo6c3RyaW5nJiBlcnJvcikgZmluYWwgeyBtX2VuZHBvaW50LnNldExvY2FsU2Vzc2lvbkRlc2Ny
aXB0aW9uRmFpbGVkKGVycm9yKTsgfQorCisgICAgICAgIGludCBBZGRSZWYoKSBjb25zdCB7IHJl
dHVybiBtX2VuZHBvaW50LkFkZFJlZigpOyB9CisgICAgICAgIGludCBSZWxlYXNlKCkgY29uc3Qg
eyByZXR1cm4gbV9lbmRwb2ludC5SZWxlYXNlKCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAg
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQmIG1fZW5kcG9pbnQ7CisgICAgfTsKKworICAgIGNsYXNz
IFNldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIGZpbmFsIDogcHVibGljIHdlYnJ0
Yzo6U2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAg
ZXhwbGljaXQgU2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIoTGliV2ViUlRDTWVk
aWFFbmRwb2ludCAmZW5kcG9pbnQpIDogbV9lbmRwb2ludChlbmRwb2ludCkgeyB9CisKKyAgICAg
ICAgdm9pZCBPblN1Y2Nlc3MoKSBmaW5hbCB7IG1fZW5kcG9pbnQuc2V0UmVtb3RlU2Vzc2lvbkRl
c2NyaXB0aW9uU3VjY2VlZGVkKCk7IH0KKyAgICAgICAgdm9pZCBPbkZhaWx1cmUoY29uc3Qgc3Rk
OjpzdHJpbmcmIGVycm9yKSBmaW5hbCB7IG1fZW5kcG9pbnQuc2V0UmVtb3RlU2Vzc2lvbkRlc2Ny
aXB0aW9uRmFpbGVkKGVycm9yKTsgfQorCisgICAgICAgIGludCBBZGRSZWYoKSBjb25zdCB7IHJl
dHVybiBtX2VuZHBvaW50LkFkZFJlZigpOyB9CisgICAgICAgIGludCBSZWxlYXNlKCkgY29uc3Qg
eyByZXR1cm4gbV9lbmRwb2ludC5SZWxlYXNlKCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAg
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQmIG1fZW5kcG9pbnQ7CisgICAgfTsKKworICAgIGNsYXNz
IFN0YXRzQ29sbGVjdG9yIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8U3RhdHNDb2xsZWN0b3I+
LCBwdWJsaWMgd2VicnRjOjpSVENTdGF0c0NvbGxlY3RvckNhbGxiYWNrIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHN0YXRpYyBSZWY8U3RhdHNDb2xsZWN0b3I+IGNyZWF0ZShMaWJXZWJSVENNZWRp
YUVuZHBvaW50JiBlbmRwb2ludCwgUGVlckNvbm5lY3Rpb246OlN0YXRzUHJvbWlzZSYmIHByb21p
c2UsIE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJlZigqIG5ldyBTdGF0
c0NvbGxlY3RvcihlbmRwb2ludCwgV1RGTW92ZShwcm9taXNlKSwgdHJhY2spKTsgfQorICAgIHBy
aXZhdGU6CisgICAgICAgIFN0YXRzQ29sbGVjdG9yKExpYldlYlJUQ01lZGlhRW5kcG9pbnQmLCBQ
ZWVyQ29ubmVjdGlvbjo6U3RhdHNQcm9taXNlJiYsIE1lZGlhU3RyZWFtVHJhY2sqKTsKKworICAg
ICAgICB2b2lkIE9uU3RhdHNEZWxpdmVyZWQoY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPGNvbnN0
IHdlYnJ0Yzo6UlRDU3RhdHNSZXBvcnQ+JikgZmluYWw7CisKKyAgICAgICAgaW50IEFkZFJlZigp
IGNvbnN0IGZpbmFsIHsgcmVmKCk7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlZkNvdW50KCkp
OyB9CisgICAgICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmluYWwgeyBkZXJlZigpOyByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihyZWZDb3VudCgpKTsgfQorCisgICAgICAgIExpYldlYlJUQ01lZGlh
RW5kcG9pbnQmIG1fZW5kcG9pbnQ7CisgICAgICAgIFBlZXJDb25uZWN0aW9uOjpTdGF0c1Byb21p
c2UgbV9wcm9taXNlOworICAgICAgICBTdHJpbmcgbV9pZDsKKyAgICB9OworCisgICAgTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBtX3BlZXJDb25uZWN0aW9uQmFja2VuZDsKKyAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gbV9iYWNr
ZW5kOworCisgICAgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgbV9jcmVhdGVTZXNz
aW9uRGVzY3JpcHRpb25PYnNlcnZlcjsKKyAgICBTZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbk9i
c2VydmVyIG1fc2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjsKKyAgICBTZXRSZW1v
dGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciBtX3NldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlv
bk9ic2VydmVyOworCisgICAgYm9vbCBtX2lzSW5pdGlhdG9yIHsgZmFsc2UgfTsKKworICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpJY2VDYW5kaWRhdGVJbnRlcmZhY2U+PiBtX3Bl
bmRpbmdDYW5kaWRhdGVzOworICAgIFZlY3RvcjxSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlPj4gbV9hdWRpb1NvdXJjZXM7CisgICAgVmVjdG9yPFJlZjxSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2U+PiBtX3ZpZGVvU291cmNlczsKKyAgICBWZWN0b3I8UmVmPFN0YXRzQ29sbGVjdG9y
Pj4gbV9zdGF0c0NvbGxlY3RvcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRmMjhiMTE1MDhmMWIyYzI1
NWVlYTU0OWEwYjhhZmQ4YjdlMGQ5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5jcHAKQEAgLTAsMCArMSwxOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIgorCisjaWYgVVNFKExJQldFQlJUQykKKworI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSWNlQ2FuZGlkYXRlLmgiCisjaW5jbHVkZSAi
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIgorI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRDb25maWd1
cmF0aW9uLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJUQ0ljZUNhbmRpZGF0ZS5o
IgorI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUlRDUnRwUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJSZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFBlZXJDb25uZWN0aW9uQmFja2VuZD4gY3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kKFJUQ1BlZXJDb25uZWN0aW9uJiBwZWVyQ29ubmVjdGlvbikKK3sKKyAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+KHBlZXJDb25u
ZWN0aW9uKTsKK30KKworQ3JlYXRlUGVlckNvbm5lY3Rpb25CYWNrZW5kIFBlZXJDb25uZWN0aW9u
QmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOwor
CitzdGF0aWMgaW5saW5lIExpYldlYlJUQ1Byb3ZpZGVyJiBsaWJXZWJSVENQcm92aWRlcihSVENQ
ZWVyQ29ubmVjdGlvbiYgcGVlckNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKHBlZXJDb25uZWN0
aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKKyAgICBhdXRvKiBw
YWdlID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihwZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpLT5wYWdlKCk7CisgICAgcmV0dXJuIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVy
KCk7Cit9CisKK0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6TGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kKFJUQ1BlZXJDb25uZWN0aW9uJiBwZWVyQ29ubmVjdGlvbikKKyAgICA6
IFBlZXJDb25uZWN0aW9uQmFja2VuZChwZWVyQ29ubmVjdGlvbikKKyAgICAsIG1fZW5kcG9pbnQo
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlKCp0aGlzLCBsaWJXZWJSVENQcm92aWRlcihw
ZWVyQ29ubmVjdGlvbikpKQoreworfQorCitzdGF0aWMgd2VicnRjOjpQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uRnJvbU1lZGlhRW5kcG9pbnRD
b25maWd1cmF0aW9uKE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikK
K3sKKyAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9u
IHJ0Y0NvbmZpZ3VyYXRpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29u
ZmlndXJhdGlvblR5cGU6OmtBZ2dyZXNzaXZlKTsKKworICAgIGlmIChjb25maWd1cmF0aW9uLmlj
ZVRyYW5zcG9ydFBvbGljeSA9PSBQZWVyQ29ubmVjdGlvblN0YXRlczo6SWNlVHJhbnNwb3J0UG9s
aWN5OjpSZWxheSkKKyAgICAgICAgcnRjQ29uZmlndXJhdGlvbi50eXBlID0gd2VicnRjOjpQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6a1JlbGF5OworCisgICAgaWYgKGNvbmZpZ3VyYXRpb24uYnVu
ZGxlUG9saWN5ID09IFBlZXJDb25uZWN0aW9uU3RhdGVzOjpCdW5kbGVQb2xpY3k6Ok1heEJ1bmRs
ZSkKKyAgICAgICAgcnRjQ29uZmlndXJhdGlvbi5idW5kbGVfcG9saWN5ID0gd2VicnRjOjpQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6a0J1bmRsZVBvbGljeU1heEJ1bmRsZTsKKyAgICBlbHNlIGlm
IChjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSA9PSBQZWVyQ29ubmVjdGlvblN0YXRlczo6QnVu
ZGxlUG9saWN5OjpNYXhDb21wYXQpCisgICAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uYnVuZGxlX3Bv
bGljeSA9IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtCdW5kbGVQb2xpY3lNYXhD
b21wYXQ7CisKKyAgICBmb3IgKGF1dG8mIHNlcnZlciA6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVy
cykgeworICAgICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VTZXJ2ZXIg
aWNlU2VydmVyOworICAgICAgICBpY2VTZXJ2ZXIudXNlcm5hbWUgPSBzZXJ2ZXIudXNlcm5hbWUu
dXRmOCgpLmRhdGEoKTsKKyAgICAgICAgaWNlU2VydmVyLnBhc3N3b3JkID0gc2VydmVyLmNyZWRl
bnRpYWwudXRmOCgpLmRhdGEoKTsKKyAgICAgICAgZm9yIChhdXRvJiB1cmwgOiBzZXJ2ZXIudXJs
cykKKyAgICAgICAgICAgIGljZVNlcnZlci51cmxzLnB1c2hfYmFjayh7IHVybC5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpIH0pOworICAgICAgICBydGNDb25maWd1cmF0aW9uLnNlcnZlcnMucHVzaF9i
YWNrKFdURk1vdmUoaWNlU2VydmVyKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJ0Y0NvbmZpZ3Vy
YXRpb247Cit9CisKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpzZXRDb25m
aWd1cmF0aW9uKE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sK
KyAgICBtX2VuZHBvaW50LT5iYWNrZW5kKCkuU2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
RnJvbU1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsK
K30KKwordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmdldFN0YXRzKE1lZGlh
U3RyZWFtVHJhY2sqIHRyYWNrLCBQZWVyQ29ubmVjdGlvbjo6U3RhdHNQcm9taXNlJiYgcHJvbWlz
ZSkKK3sKKyAgICBtX2VuZHBvaW50LT5nZXRTdGF0cyh0cmFjaywgV1RGTW92ZShwcm9taXNlKSk7
Cit9CisKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb1NldExvY2FsRGVz
Y3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKK3sKKyAgICBtX2Vu
ZHBvaW50LT5kb1NldExvY2FsRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pOworICAgIGlmICghbV9p
c0xvY2FsRGVzY3JpcHRpb25TZXQpIHsKKyAgICAgICAgaWYgKG1faXNSZW1vdGVEZXNjcmlwdGlv
blNldCkKKyAgICAgICAgICAgIG1fZW5kcG9pbnQtPmFkZFBlbmRpbmdJY2VDYW5kaWRhdGVzKCk7
CisgICAgICAgIG1faXNMb2NhbERlc2NyaXB0aW9uU2V0ID0gdHJ1ZTsKKyAgICB9Cit9CisKK3Zv
aWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb1NldFJlbW90ZURlc2NyaXB0aW9u
KFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCit7CisgICAgbV9lbmRwb2ludC0+
ZG9TZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbik7CisgICAgaWYgKCFtX2lzUmVtb3Rl
RGVzY3JpcHRpb25TZXQpIHsKKyAgICAgICAgaWYgKG1faXNMb2NhbERlc2NyaXB0aW9uU2V0KQor
ICAgICAgICAgICAgbV9lbmRwb2ludC0+YWRkUGVuZGluZ0ljZUNhbmRpZGF0ZXMoKTsKKyAgICAg
ICAgbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0ID0gdHJ1ZTsKKyAgICB9Cit9CisKK3ZvaWQgTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9u
cyYmKQoreworICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlT2ZmZXIoKTsKK30KKwordm9pZCBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvQ3JlYXRlQW5zd2VyKFJUQ0Fuc3dlck9wdGlv
bnMmJikKK3sKKyAgICBpZiAoIW1faXNSZW1vdGVEZXNjcmlwdGlvblNldCkgeworICAgICAgICBj
cmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsgSU5WQUxJRF9TVEFURV9FUlIsICJObyByZW1v
dGUgZGVzY3JpcHRpb24gc2V0IiB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2Vu
ZHBvaW50LT5kb0NyZWF0ZUFuc3dlcigpOworfQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6ZG9TdG9wKCkKK3sKKyAgICBtX2VuZHBvaW50LT5zdG9wKCk7Cit9CisKK3Zv
aWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb0FkZEljZUNhbmRpZGF0ZShSVENJ
Y2VDYW5kaWRhdGUmIGNhbmRpZGF0ZSkKK3sKKyAgICBpZiAoIW1faXNSZW1vdGVEZXNjcmlwdGlv
blNldCkgeworICAgICAgICBhZGRJY2VDYW5kaWRhdGVGYWlsZWQoRXhjZXB0aW9uIHsgSU5WQUxJ
RF9TVEFURV9FUlIsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0IiB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHdlYnJ0Yzo6U2RwUGFyc2VFcnJvciBlcnJvcjsKKyAgICBpbnQg
c2RwTUxpbmVJbmRleCA9IGNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KCkgPyBjYW5kaWRhdGUuc2Rw
TUxpbmVJbmRleCgpLnZhbHVlKCkgOiAwOworICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6Oklj
ZUNhbmRpZGF0ZUludGVyZmFjZT4gcnRjQ2FuZGlkYXRlKHdlYnJ0Yzo6Q3JlYXRlSWNlQ2FuZGlk
YXRlKGNhbmRpZGF0ZS5zZHBNaWQoKS51dGY4KCkuZGF0YSgpLCBzZHBNTGluZUluZGV4LCBjYW5k
aWRhdGUuY2FuZGlkYXRlKCkudXRmOCgpLmRhdGEoKSwgJmVycm9yKSk7CisKKyAgICBpZiAoIXJ0
Y0NhbmRpZGF0ZSkgeworICAgICAgICBTdHJpbmcgbWVzc2FnZShlcnJvci5kZXNjcmlwdGlvbi5k
YXRhKCksIGVycm9yLmRlc2NyaXB0aW9uLnNpemUoKSk7CisgICAgICAgIGFkZEljZUNhbmRpZGF0
ZUZhaWxlZChFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgV1RGTW92ZShtZXNzYWdlKSB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIGxpYndlYnJ0YyBkb2VzIG5vdCBsaWtl
IHRoYXQgaWNlIGNhbmRpZGF0ZXMgYXJlIHNldCBiZWZvcmUgdGhlIGRlc2NyaXB0aW9uLgorICAg
IGlmICghbV9pc0xvY2FsRGVzY3JpcHRpb25TZXQgfHwgIW1faXNSZW1vdGVEZXNjcmlwdGlvblNl
dCkKKyAgICAgICAgbV9lbmRwb2ludC0+c3RvcmVJY2VDYW5kaWRhdGUoV1RGTW92ZShydGNDYW5k
aWRhdGUpKTsKKyAgICBlbHNlIGlmICghbV9lbmRwb2ludC0+YmFja2VuZCgpLkFkZEljZUNhbmRp
ZGF0ZShydGNDYW5kaWRhdGUuZ2V0KCkpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICBhZGRJY2VDYW5kaWRhdGVGYWlsZWQoRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGFwcGx5IHRoZSByZWNlaXZlZCBjYW5kaWRhdGUi
KSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhZGRJY2VDYW5kaWRhdGVTdWNjZWVk
ZWQoKTsKK30KKwordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om1hcmtBc05l
ZWRpbmdOZWdvdGlhdGlvbigpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzCit9CisK
K1JlZjxSVENSdHBSZWNlaXZlcj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVh
dGVSZWNlaXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgY29uc3Qg
U3RyaW5nJiB0cmFja0lkKQoreworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGNyZWF0ZSBhIHNv
dXJjZSB0aGF0IHdpbGwgZ2V0IGZ1ZWxlZCBvbmNlIHdlIHdpbGwgcmVjZWl2ZSBPbkFkZFN0cmVh
bS4KKyAgICAvLyBGb3IgdGhlIG1vbWVudCwgd2UgY3JlYXRlIGFuIGVtcHR5IG9uZS4KKyAgICBh
dXRvIHJlbW90ZVRyYWNrUHJpdmF0ZSA9ICh0cmFja0tpbmQgPT0gImF1ZGlvIikgPyBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3Jl
YXRlKG51bGxwdHIsIFN0cmluZyh0cmFja0lkKSkpIDogTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6
OmNyZWF0ZShSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBTdHJp
bmcodHJhY2tJZCkpKTsKKyAgICBhdXRvIHJlbW90ZVRyYWNrID0gTWVkaWFTdHJlYW1UcmFjazo6
Y3JlYXRlKCptX3BlZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92
ZShyZW1vdGVUcmFja1ByaXZhdGUpKTsKKworICAgIHJldHVybiBSVENSdHBSZWNlaXZlcjo6Y3Jl
YXRlKFdURk1vdmUocmVtb3RlVHJhY2spKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFD
aGFubmVsSGFuZGxlcj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVEYXRh
Q2hhbm5lbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgUlRDRGF0YUNoYW5uZWxJ
bml0JiBvcHRpb25zKQoreworICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgVU5VU0VEX1BB
UkFNKG9wdGlvbnMpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VC
UlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNjc3OGFiNmEzMTgxZTUxODIzZWNiOWNkMDkxOWQ5YzdmMjZkYzA1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKQEAgLTAsMCArMSw4NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBMaWJXZWJSVENNZWRp
YUVuZHBvaW50OworY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CitjbGFzcyBSVENTZXNzaW9uRGVzY3Jp
cHRpb247CisKK2NsYXNzIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCBmaW5hbCA6IHB1
YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0IExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZChSVENQZWVyQ29ubmVjdGlvbiYpOworCitwcml2YXRl
OgorICAgIHZvaWQgZG9DcmVhdGVPZmZlcihSVENPZmZlck9wdGlvbnMmJikgZmluYWw7CisgICAg
dm9pZCBkb0NyZWF0ZUFuc3dlcihSVENBbnN3ZXJPcHRpb25zJiYpIGZpbmFsOworICAgIHZvaWQg
ZG9TZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYpIGZpbmFsOworICAg
IHZvaWQgZG9TZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mKSBmaW5h
bDsKKyAgICB2b2lkIGRvQWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSYpIGZpbmFsOwor
ICAgIHZvaWQgZG9TdG9wKCkgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFu
bmVsSGFuZGxlcj4gY3JlYXRlRGF0YUNoYW5uZWxIYW5kbGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFJUQ0RhdGFDaGFubmVsSW5pdCYpIGZpbmFsOworICAgIHZvaWQgc2V0Q29uZmlndXJhdGlvbihN
ZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGdldFN0YXRzKE1l
ZGlhU3RyZWFtVHJhY2sqLCBQZWVyQ29ubmVjdGlvbjo6U3RhdHNQcm9taXNlJiYpIGZpbmFsOwor
ICAgIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlUmVjZWl2ZXIoY29uc3QgU3RyaW5nJiB0cmFu
c2NlaXZlck1pZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQsIGNvbnN0IFN0cmluZyYgdHJhY2tJ
ZCkgZmluYWw7CisKKyAgICAvLyBGSVhNRTogQVBJIHRvIGltcGxlbWVudCBmb3IgcmVhbAorICAg
IFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IGxvY2FsRGVzY3JpcHRpb24oKSBjb25zdCBm
aW5hbCB7IHJldHVybiBudWxscHRyOyB9CisgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bj4gY3VycmVudExvY2FsRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRy
OyB9CisgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gcGVuZGluZ0xvY2FsRGVzY3Jp
cHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICBSZWZQdHI8UlRD
U2Vzc2lvbkRlc2NyaXB0aW9uPiByZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50
UmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisgICAg
UmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gcGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorCisKKyAgICBWZWN0b3I8UmVmUHRyPE1l
ZGlhU3RyZWFtPj4gZ2V0UmVtb3RlU3RyZWFtcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsg
fQorCisgICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYsIERPTVByb21pc2U8dm9pZD4mJikgZmluYWwgeyB9CisKKyAgICBib29sIGlz
TmVnb3RpYXRpb25OZWVkZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZv
aWQgbWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCkgZmluYWw7CisgICAgdm9pZCBjbGVhck5lZ290
aWF0aW9uTmVlZGVkU3RhdGUoKSBmaW5hbCB7IH0KKworICAgIHZvaWQgZW11bGF0ZVBsYXRmb3Jt
RXZlbnQoY29uc3QgU3RyaW5nJikgZmluYWwgeyB9CisKKyAgICBmcmllbmQgTGliV2ViUlRDTWVk
aWFFbmRwb2ludDsKKyAgICBSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJu
IG1fcGVlckNvbm5lY3Rpb247IH0KKworcHJpdmF0ZToKKyAgICBSZWY8TGliV2ViUlRDTWVkaWFF
bmRwb2ludD4gbV9lbmRwb2ludDsKKyAgICBib29sIG1faXNMb2NhbERlc2NyaXB0aW9uU2V0IHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faXNSZW1vdGVEZXNjcmlwdGlvblNldCB7IGZhbHNlIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGNjMjc3OWVlMDBjNDgzYWJkM2Q2ZmU3MmI3NmUwMjQ0ZTA1YTVhNTIuLmM0YTFjZWEyMjQy
ZjA3NzliY2RkYjQxYjM5NWNiYTE2Zjg1NmEzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1NjEsNiArMTU2MSwxMCBAQAog
CQk0MTcwQTJFQTFEOEMwQ0NBMDAzMTg0NTIgLyogSlNET01XcmFwcGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzBBMkU5MUQ4QzBDQzAwMDMx
ODQ1MiAvKiBKU0RPTVdyYXBwZXIuY3BwICovOyB9OwogCQk0MTcyNTNBQTEzNTRCQkJDMDAzNjBG
MkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3MjUzQTgxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcCAqLzsgfTsKIAkJNDE3MjUzQUIxMzU0QkJCQzAwMzYwRjJBIC8qIE1l
ZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVu
dHMuaCAqLzsgfTsKKwkJNDE3NjEyQUYxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlh
RW5kcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE3NjEyQUIxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3Bw
ICovOyB9OworCQk0MTc2MTJCMDFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRw
b2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3
NjEyQUMxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCAqLzsgfTsK
KwkJNDE3NjEyQjExRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTc2MTJBRDFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmNwcCAqLzsgfTsKKwkJNDE3NjEyQjIxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE3NjEyQUUxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5oICovOyB9OwogCQk0MTdEQTZEOTEzNzM0RTZFMDA3QzU3RkIgLyogSW50ZXJu
YWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
N0RBNENGMTM3MzQzMjYwMDdDNTdGQiAvKiBJbnRlcm5hbHMuY3BwICovOyB9OwogCQk0MTdEQTZE
QTEzNzM0RTZFMDA3QzU3RkIgLyogSW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTdEQTRDRTEzNzM0MzI2MDA3QzU3RkIgLyogSW50ZXJu
YWxzLmggKi87IH07CiAJCTQxN0RBNzFEMTM3MzVERkEwMDdDNTdGQiAvKiBKU0ludGVybmFscy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTdEQTcx
QjEzNzM1REZBMDA3QzU3RkIgLyogSlNJbnRlcm5hbHMuY3BwICovOyB9OwpAQCAtODczNiw2ICs4
NzQwLDEwIEBACiAJCTQxNzBBMkU5MUQ4QzBDQzAwMDMxODQ1MiAvKiBKU0RPTVdyYXBwZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01XcmFwcGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MjUzQTgxMzU0QkJCQzAwMzYwRjJBIC8q
IE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNzYxMkFCMUUzQTk5M0IwMEMzRDgxRCAv
KiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IExpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOyBwYXRoID0gbGlid2VicnRjL0xp
YldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTc2MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENNZWRpYUVuZHBvaW50Lmg7IHBh
dGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MTc2MTJBRDFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA7IHBhdGggPSBsaWJ3ZWJydGMvTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDE3NjEyQUUxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3REE0Q0UxMzcz
NDMyNjAwN0M1N0ZCIC8qIEludGVybmFscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRlcm5hbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3REE0Q0Yx
MzczNDMyNjAwN0M1N0ZCIC8qIEludGVybmFscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnRlcm5hbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTdEQTZEMDEzNzM0RTAyMDA3QzU3RkIgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGli
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmR5bGliIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliV2ViQ29yZVRl
c3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAt
MTUxMTEsNiArMTUxMTksNyBAQAogCQkwNzIyMUI0NjE3Q0VDMzI3MDA4NDhFNTEgLyogbWVkaWFz
dHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQx
NzYxMkFBMUUzQTk5MjMwMEMzRDgxRCAvKiBsaWJ3ZWJydGMgKi8sCiAJCQkJMDczNzk0RUQxOUVF
MzY0MjAwRTVBMDQ1IC8qIERPTVVSTE1lZGlhU3RyZWFtLmNwcCAqLywKIAkJCQkxNUZDQzlGRDFC
NERGODU2MDBFNzIzMjYgLyogRE9NVVJMTWVkaWFTdHJlYW0uaCAqLywKIAkJCQkwNzM3OTRFRTE5
RUUzNjQyMDBFNUEwNDUgLyogRE9NVVJMTWVkaWFTdHJlYW0uaWRsICovLApAQCAtMTY2NjAsNiAr
MTY2NjksMTcgQEAKIAkJCW5hbWUgPSBsaWJ3ZWJydGM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OworCQk0MTc2MTJBQTFFM0E5OTIzMDBDM0Q4MUQgLyogbGlid2VicnRjICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTc2MTJBQjFFM0E5
OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgKi8sCisJCQkJNDE3NjEy
QUMxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCAqLywKKwkJCQk0
MTc2MTJBRDFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmNwcCAqLywKKwkJCQk0MTc2MTJBRTFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmggKi8sCisJCQkpOworCQkJbmFtZSA9IGxpYndlYnJ0YzsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQxN0RBNENEMTM3MzQyMDQwMDdDNTdGQiAv
KiB0ZXN0aW5nICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTI0OTcwLDYgKzI0OTkwLDcgQEAKIAkJCQkzMTk4NDgwMTFBMUQ4MTdCMDBBMTMzMTggLyogQW5p
bWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMkFEMEVGQUM5MDYwMDlEMENB
RiAvKiBBbmltYXRpb25MaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMURDRDI5RDFBQjRGQkRF
MDA3MkU4MTcgLyogQW5pbWF0aW9uVHJpZ2dlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3NjEy
QjAxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNTgwRkFGMTQ5ODAwRDQwMEZCNUJEOCAvKiBBbmltYXRpb25VdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REQ3MDk5RTY0OTIwMDU2RTU4MSAvKiBBcHBlbmRO
b2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M2NTc5RTMxRTAwODI3MDAwRTNBMjdB
IC8qIEFwcGxlUGF5TGluZUl0ZW0uaCBpbiBIZWFkZXJzICovLApAQCAtMjc4MzMsNiArMjc4NTQs
NyBAQAogCQkJCUE4RUE4MDBDMEExOTUxNkUwMEE4RUY1RiAvKiBTdHlsZVNoZWV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNEY5RUVGMzE1NkRBMDA3MDBEMjNFN0UgLyogU3R5bGVTaGVldENvbnRl
bnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAwQTBBMTk1MTZFMDBBOEVGNUYgLyogU3R5
bGVTaGVldExpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNzYxMkIyMUUzQTk5NDAwMEMzRDgx
RCAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNUVCNUU1MEU4MUJGNkQwMEIyNTk2NSAvKiBTdHlsZVN1cnJvdW5kRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM1RUI4MTAwRTgxRjJDRTAwQjI1OTY1IC8qIFN0eWxlVHJhbnNmb3JtRGF0
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRERUFBMTgxN0E5M0RDMzAwMEUwNDMwIC8qIFN0eWxl
VHJlZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MTYxLDYgKzI5MTgzLDcgQEAKIAkJ
CQlFMUI0Q0QyNTEwQjMyMkUyMDBCRkZEN0UgLyogQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkyRDQ4MUYwMDE0NkI1QzRDMDBBQTc4MzQgLyogQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDNDE2MTcwRjY1NjMxODAwOTJE
MkZCIC8qIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0
MTc2MTJCMTFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxQUJFNjdDMUQwNTgwRTAwMDZEODYyRCAvKiBDcm9z
c09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDNDE1REUw
RjY1NUQ3QzAwOTJEMkZCIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTE2OTgwNDkxMTMzNjQ0NzAwODk0MTE1IC8qIENSdW50aW1lT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA0NzUsNiArMzA0OTgsNyBAQAogCQkJCUIyRkEz
REJBMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdBcmNSZWwuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjJGQTNEQkMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0Nsb3NlUGF0
aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0RCRTBBQjc1QTZGMDAwRTVBQzQgLyogSlNT
VkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNzYxMkFG
MUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyRkEzREMwMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRv
Q3ViaWNSZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEQzIwQUI3NUE2RjAwMEU1QUM0
IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMkZBM0RDNDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnQ3VydmV0b0N1Ymlj
U21vb3RoUmVsLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>