<?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>182269</bug_id>
          
          <creation_ts>2018-01-29 16:37:10 -0800</creation_ts>
          <short_desc>Use CompletionHandlers for DelayedReplies</short_desc>
          <delta_ts>2018-05-17 16:58:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1394330</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-29 16:37:10 -0800</bug_when>
    <thetext>Use CompletionHandlers for DelayedReplies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394332</commentid>
    <comment_count>1</comment_count>
      <attachid>332600</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-29 16:39:28 -0800</bug_when>
    <thetext>Created attachment 332600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394340</commentid>
    <comment_count>2</comment_count>
      <attachid>332604</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-29 16:58:04 -0800</bug_when>
    <thetext>Created attachment 332604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394343</commentid>
    <comment_count>3</comment_count>
      <attachid>332606</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-29 17:15:13 -0800</bug_when>
    <thetext>Created attachment 332606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411914</commentid>
    <comment_count>4</comment_count>
      <attachid>337233</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-04-04 15:39:21 -0700</bug_when>
    <thetext>Created attachment 337233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411918</commentid>
    <comment_count>5</comment_count>
      <attachid>337233</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-04-04 15:45:28 -0700</bug_when>
    <thetext>Comment on attachment 337233
Patch

Great patch!

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        called once.  This is what CompletionHandlers are for.

called once and always once.
Debug WK2 bots might tell us whether we always call these in any layout/api test.

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:90
&gt; +NetworkResourceLoader::NetworkResourceLoader(const NetworkResourceLoadParameters&amp; parameters, NetworkConnectionToWebProcess&amp; connection, Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply&amp;&amp; synchronousReply)

Since we are modifying NetworkResourceLoader constructor, maybe we could make it take a NetworkResourceLoadParameters&amp;&amp;?

&gt; Source/WebKit/Platform/IPC/Connection.h:57
&gt; +template&lt;typename&gt; struct CodingType;

Why do we need this one?

&gt; Source/WebKit/PluginProcess/PluginControllerProxy.cpp:102
&gt; +    return WTFMove(m_initializationReply);

Maybe we should do ASSERT(m_initializationReply)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411920</commentid>
    <comment_count>6</comment_count>
      <attachid>337235</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-04-04 15:53:34 -0700</bug_when>
    <thetext>Created attachment 337235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411921</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-04-04 15:55:33 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #5)
&gt; &gt; Source/WebKit/Platform/IPC/Connection.h:57
&gt; &gt; +template&lt;typename&gt; struct CodingType;
&gt; 
&gt; Why do we need this one?
This was needed to get it to compile.  Something&apos;s different about the way this symbol is used and the way templates are instantiated.  It&apos;s just a forward declaration, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411922</commentid>
    <comment_count>8</comment_count>
      <attachid>337236</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-04-04 15:59:29 -0700</bug_when>
    <thetext>Created attachment 337236
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411925</commentid>
    <comment_count>9</comment_count>
      <attachid>337237</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-04-04 16:10:05 -0700</bug_when>
    <thetext>Created attachment 337237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411929</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-04-04 16:21:06 -0700</bug_when>
    <thetext>http://trac.webkit.org/r230283</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411930</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-04 16:23:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/39192707&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411952</commentid>
    <comment_count>12</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-04-04 17:12:49 -0700</bug_when>
    <thetext>This change introduced webkitpy test failures:

[6/1711] webkit.messages_unittest.HeaderTest.test_receiver_headers failed:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/sierra-release-tests-wk1/build/Source/WebKit/Scripts/webkit/messages_unittest.py&quot;, line 334, in test_receiver_headers
      _expected_receiver_header_file_name)
    File &quot;/Volumes/Data/slave/sierra-release-tests-wk1/build/Source/WebKit/Scripts/webkit/messages_unittest.py&quot;, line 324, in assertHeaderEqual
      self.assertGeneratedFileContentsEqual(actual_file_contents, expected_file_name)
    File &quot;/Volumes/Data/slave/sierra-release-tests-wk1/build/Source/WebKit/Scripts/webkit/messages_unittest.py&quot;, line 315, in assertGeneratedFileContentsEqual
      self.assertEquals(actual_line, expected_line_list[index])
  AssertionError: &apos;    using DelayedReply = CompletionHandler&lt;void(const IPC::Connection::Handle&amp; connectionHandle)&gt;;    static void send(std::unique_ptr&lt;IPC::Encoder&gt;&amp;&amp;, IPC::Connection&amp;, const IPC::Connection::Handle&amp; connectionHandle);&apos; != &apos;    struct DelayedReply : public ThreadSafeRefCounted&lt;DelayedReply&gt; {&apos;
  
[9/1711] webkit.messages_unittest.ReceiverImplementationTest.test_receiver_implementations failed:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/sierra-release-tests-wk1/build/Source/WebKit/Scripts/webkit/messages_unittest.py&quot;, line 344, in test_receiver_implementations
      _expected_receiver_implementation_file_name)
    File &quot;/Volumes/Data/slave/sierra-release-tests-wk1/build/Source/WebKit/Scripts/webkit/messages_unittest.py&quot;, line 328, in assertImplementationEqual
      self.assertGeneratedFileContentsEqual(actual_file_contents, expected_file_name)
    File &quot;/Volumes/Data/slave/sierra-release-tests-wk1/build/Source/WebKit/Scripts/webkit/messages_unittest.py&quot;, line 315, in assertGeneratedFileContentsEqual
      self.assertEquals(actual_line, expected_line_list[index])
  AssertionError: &apos;void GetPluginProcessConnection::send(std::unique_ptr&lt;IPC::Encoder&gt;&amp;&amp; encoder, IPC::Connection&amp; connection, const IPC::Connection::Handle&amp; connectionHandle)&apos; != &apos;GetPluginProcessConnection::DelayedReply::DelayedReply(Ref&lt;IPC::Connection&gt;&amp;&amp; connection, std::unique_ptr&lt;IPC::Encoder&gt; encoder)&apos;
  
https://build.webkit.org/builders/Apple%20Sierra%20Release%20WK1%20(Tests)/builds/9255</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411996</commentid>
    <comment_count>13</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-04-04 20:16:26 -0700</bug_when>
    <thetext>Reverted r230283 for reason:

Caused webkitpy test failures.

Committed r230293: &lt;https://trac.webkit.org/changeset/230293&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412002</commentid>
    <comment_count>14</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-04-04 20:53:21 -0700</bug_when>
    <thetext>It looks like this change was also responsible for the com.apple.WebKit.Plugin.64.Development assertion failures seen here:
https://build.webkit.org/results/Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/r230284%20(2730)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424896</commentid>
    <comment_count>15</comment_count>
      <attachid>340635</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-05-17 14:03:23 -0700</bug_when>
    <thetext>Created attachment 340635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424909</commentid>
    <comment_count>16</comment_count>
      <attachid>340640</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-05-17 14:13:40 -0700</bug_when>
    <thetext>Created attachment 340640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424930</commentid>
    <comment_count>17</comment_count>
      <attachid>340650</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-05-17 14:47:28 -0700</bug_when>
    <thetext>Created attachment 340650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425000</commentid>
    <comment_count>18</comment_count>
      <attachid>340650</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-17 16:58:06 -0700</bug_when>
    <thetext>Comment on attachment 340650
Patch

Clearing flags on attachment: 340650

Committed r231931: &lt;https://trac.webkit.org/changeset/231931&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425001</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-17 16:58:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332600</attachid>
            <date>2018-01-29 16:39:28 -0800</date>
            <delta_ts>2018-01-29 16:58:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182269-20180129163927.patch</filename>
            <type>text/plain</type>
            <size>70175</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjc3NjMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBACisyMDE4LTAxLTI5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIENvbXBsZXRp
b25IYW5kbGVycyBmb3IgRGVsYXllZFJlcGxpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIERlbGF5ZWRSZXBsaWVzIHNob3VsZCBiZSBhIG5vbmNvcHlh
YmxlLCBub24tcmVmY291bnRhYmxlIHR5cGUuICBUaGV5IHNob3VsZCBiZQorICAgICAgICBjYWxs
ZWQgb25jZS4gIFRoaXMgaXMgd2hhdCBDb21wbGV0aW9uSGFuZGxlcnMgYXJlIGZvci4KKworICAg
ICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuICBKdXN0IGNsZWFuZXIgY29kZS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBlcmZvcm1TeW5j
aHJvbm91c0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5j
aHJvbm91c0xvYWREYXRhOjpTeW5jaHJvbm91c0xvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6
c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgor
ICAgICAgICAoSVBDOjpjYWxsTWVtYmVyRnVuY3Rpb25JbXBsKToKKyAgICAgICAgKElQQzo6Y2Fs
bE1lbWJlckZ1bmN0aW9uKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZURlbGF5ZWQpOgor
ICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpzZXRJbml0aWFsaXphdGlvblJlcGx5
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6
YXRpb25SZXBseSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuaDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRlc3Ryb3lQbHVnaW4pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkFzeW5jaHJv
bm91c2x5KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmg6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChtZXNzYWdl
X3RvX3N0cnVjdF9kZWNsYXJhdGlvbik6CisgICAgICAgIChnZW5lcmF0ZV9tZXNzYWdlX2hhbmRs
ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3
b3JrUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpuZXR3b3JrUHJvY2Vzc0ZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVnaW5Qcm9jZXNz
Q3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNz
UHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Rv
cmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVBy
b2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpFeGNl
ZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpjcmVhdGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Ondl
YkdMUG9saWN5Rm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNvbHZl
V2ViR0xQb2xpY3lGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFRv
b2xiYXJzQXJlVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWVu
dUJhcklzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U3RhdHVz
QmFySXNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRXaW5kb3dG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyZWVuVG9Sb290Vmlldyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb1NjcmVlbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpn
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYpOgorCiAyMDE4LTAxLTI5ICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlz
dGljczogSW50cm9kdWNlIGRlYnVnIG1vZGUgYXMgZXhwZXJpbWVudGFsIGZlYXR1cmUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNjaGUKICAgICBsb2FkZXItPnN0YXJ0KCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBlcmZvcm1TeW5jaHJvbm91c0xvYWQoY29uc3QgTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzLCBSZWY8TWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpE
ZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpwZXJmb3JtU3luY2hyb25vdXNMb2FkKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiBsb2FkUGFyYW1ldGVycywgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAg
ICBhdXRvIGxvYWRlciA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGxvYWRQYXJhbWV0
ZXJzLCAqdGhpcywgV1RGTW92ZShyZXBseSkpOwogICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVy
cy5hZGQobG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciwgbG9hZGVyLnB0cigpKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBj
b3B5KQpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIHZvaWQg
c2NoZWR1bGVSZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
KTsKLSAgICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoY29uc3QgTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMmLCBSZWY8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQg
cGVyZm9ybVN5bmNocm9ub3VzTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cyYsIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNo
cm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgbG9hZFBpbmcoTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmJiwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmIG9yaWdpbmFs
UmVxdWVzdEhlYWRlcnMpOwogICAgIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJik7CiAg
ICAgdm9pZCBwcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIE5l
dHdvcmtMb2FkUGFyYW1ldGVycyYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDIyNzY4
MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTMgKzYzLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OlN5bmNocm9ub3VzTG9hZERhdGEgewotICAgIFN5bmNocm9ub3VzTG9hZERhdGEoUmVmUHRy
PE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9u
b3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQorICAgIFN5bmNocm9ub3VzTG9hZERhdGEo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25v
dXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSkKICAgICAgICAgOiBkZWxheWVkUmVwbHkoV1RG
TW92ZShyZXBseSkpCiAgICAgewogICAgICAgICBBU1NFUlQoZGVsYXllZFJlcGx5KTsKICAgICB9
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IGN1cnJlbnRSZXF1ZXN0OwotICAgIFJlZlB0cjxNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6
OkRlbGF5ZWRSZXBseT4gZGVsYXllZFJlcGx5OworICAgIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5IGRl
bGF5ZWRSZXBseTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIFJlc291cmNl
RXJyb3IgZXJyb3I7CiB9OwpAQCAtODMsMTEgKzgzLDExIEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBs
eVRvU3luY2hyb25vdXNSZXF1ZXMKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQog
ICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKIAotICAgIGRhdGEuZGVsYXllZFJlcGx5LT5zZW5kKGRhdGEuZXJyb3IsIGRhdGEucmVz
cG9uc2UsIHJlc3BvbnNlQnVmZmVyKTsKKyAgICBkYXRhLmRlbGF5ZWRSZXBseShkYXRhLmVycm9y
LCBkYXRhLnJlc3BvbnNlLCByZXNwb25zZUJ1ZmZlcik7CiAgICAgZGF0YS5kZWxheWVkUmVwbHkg
PSBudWxscHRyOwogfQogCi1OZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycywgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlZlB0cjxNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRl
bGF5ZWRSZXBseT4mJiBzeW5jaHJvbm91c1JlcGx5KQorTmV0d29ya1Jlc291cmNlTG9hZGVyOjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91
c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHN5bmNocm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRl
cnMgeyBwYXJhbWV0ZXJzIH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQogICAg
ICwgbV9kZWZlcnNMb2FkaW5nIHsgcGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBj
bGFzcyBFbnRyeTsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyIGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8TmV0d29ya1Jlc291cmNlTG9hZGVyPiwgcHVibGljIE5ldHdvcmtMb2FkQ2xp
ZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbiwgUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5ID0gbnVsbHB0cikK
KyAgICBzdGF0aWMgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKGNvbnN0IE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSA9IG51
bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIocGFyYW1ldGVycywgY29ubmVjdGlvbiwgV1RGTW92ZShyZXBseSkpKTsKICAgICB9
CkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya1Jlc291cmNlTG9hZGVyKGNv
bnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBSZWZQdHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYpOworICAgIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYsIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJik7CiAKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDggQEAKIAogbmFt
ZXNwYWNlIElQQyB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQ29kaW5nVHlwZTsKKwog
ZW51bSBjbGFzcyBTZW5kT3B0aW9uIHsKICAgICAvLyBXaGV0aGVyIHRoaXMgbWVzc2FnZSBzaG91
bGQgYmUgZGlzcGF0Y2hlZCB3aGVuIHdhaXRpbmcgZm9yIGEgc3luYyByZXBseS4KICAgICAvLyBU
aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBzeW5jaHJvbm91cyBtZXNzYWdlcy4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgJKHJldmlzaW9uIDIyNzY4MikK
KysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBcmd1bWVu
dENvZGVycy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFj
ZSBJUEMgewpAQCAtNjIsMTYgKzY0LDE2IEBAIHZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKEFyZ3NU
dXBsZSYmIGFyZ3MKIAogLy8gRGlzcGF0Y2ggZnVuY3Rpb25zIHdpdGggZGVsYXllZCByZXBseSBh
cmd1bWVudHMuCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUg
UiwgdHlwZW5hbWUgQXJnc1R1cGxlLCBzaXplX3QuLi4gQXJnc0luZGV4Pgotdm9pZCBjYWxsTWVt
YmVyRnVuY3Rpb25JbXBsKEMqIG9iamVjdCwgTUYgZnVuY3Rpb24sIFJlZjxSPiYmIGRlbGF5ZWRS
ZXBseSwgQXJnc1R1cGxlJiYgYXJncywgc3RkOjppbmRleF9zZXF1ZW5jZTxBcmdzSW5kZXguLi4+
KQordGVtcGxhdGUgPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBDSCwgdHlwZW5h
bWUgQXJnc1R1cGxlLCBzaXplX3QuLi4gQXJnc0luZGV4Pgordm9pZCBjYWxsTWVtYmVyRnVuY3Rp
b25JbXBsKEMqIG9iamVjdCwgTUYgZnVuY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPENIPiYmIGNv
bXBsZXRpb25IYW5kbGVyLCBBcmdzVHVwbGUmJiBhcmdzLCBzdGQ6OmluZGV4X3NlcXVlbmNlPEFy
Z3NJbmRleC4uLj4pCiB7Ci0gICAgKG9iamVjdC0+KmZ1bmN0aW9uKShzdGQ6OmdldDxBcmdzSW5k
ZXg+KHN0ZDo6Zm9yd2FyZDxBcmdzVHVwbGU+KGFyZ3MpKS4uLiwgV1RGTW92ZShkZWxheWVkUmVw
bHkpKTsKKyAgICAob2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6Z2V0PEFyZ3NJbmRleD4oc3RkOjpm
b3J3YXJkPEFyZ3NUdXBsZT4oYXJncykpLi4uLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBSLCB0eXBl
bmFtZSBBcmdzVHVwbGUsIHR5cGVuYW1lIEFyZ3NJbmRpY2llcyA9IHN0ZDo6bWFrZV9pbmRleF9z
ZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8QXJnc1R1cGxlPjo6dmFsdWU+Pgotdm9pZCBjYWxsTWVt
YmVyRnVuY3Rpb24oQXJnc1R1cGxlJiYgYXJncywgUmVmPFI+JiYgZGVsYXllZFJlcGx5LCBDKiBv
YmplY3QsIE1GIGZ1bmN0aW9uKQordGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5
cGVuYW1lIENILCB0eXBlbmFtZSBBcmdzVHVwbGUsIHR5cGVuYW1lIEFyZ3NJbmRpY2llcyA9IHN0
ZDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8QXJnc1R1cGxlPjo6dmFsdWU+
Pgordm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oQXJnc1R1cGxlJiYgYXJncywgQ29tcGxldGlvbkhh
bmRsZXI8Q0g+JiYgY29tcGxldGlvbkhhbmRsZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7
Ci0gICAgY2FsbE1lbWJlckZ1bmN0aW9uSW1wbChvYmplY3QsIGZ1bmN0aW9uLCBXVEZNb3ZlKGRl
bGF5ZWRSZXBseSksIHN0ZDo6Zm9yd2FyZDxBcmdzVHVwbGU+KGFyZ3MpLCBBcmdzSW5kaWNpZXMo
KSk7CisgICAgY2FsbE1lbWJlckZ1bmN0aW9uSW1wbChvYmplY3QsIGZ1bmN0aW9uLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgc3RkOjpmb3J3YXJkPEFyZ3NUdXBsZT4oYXJncyksIEFyZ3NJ
bmRpY2llcygpKTsKIH0KIAogLy8gRGlzcGF0Y2ggZnVuY3Rpb25zIHdpdGggY29ubmVjdGlvbiBw
YXJhbWV0ZXIgd2l0aCBubyByZXBseSBhcmd1bWVudHMuCkBAIC0xNzQsOCArMTc2LDExIEBAIHZv
aWQgaGFuZGxlTWVzc2FnZURlbGF5ZWQoQ29ubmVjdGlvbiYgY28KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFJlZjx0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHk+IGRlbGF5ZWRSZXBseSA9
IGFkb3B0UmVmKCpuZXcgdHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5KGNvbm5lY3Rpb24sIFdURk1v
dmUocmVwbHlFbmNvZGVyKSkpOwotICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKGFyZ3Vt
ZW50cyksIFdURk1vdmUoZGVsYXllZFJlcGx5KSwgb2JqZWN0LCBmdW5jdGlvbik7CisgICAgdHlw
ZW5hbWUgVDo6RGVsYXllZFJlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0gW3JlcGx5RW5jb2RlciA9
IFdURk1vdmUocmVwbHlFbmNvZGVyKSwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbild
IChhdXRvLi4uIGFyZ3MpIG11dGFibGUgeworICAgICAgICBUOjpzZW5kKFdURk1vdmUocmVwbHlF
bmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CisgICAgfTsKKyAgICAKKyAg
ICBjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpJ
bmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5jcHAJKHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSwx
NSArOTEsMTUgQEAgUGx1Z2luQ29udHJvbGxlclByb3h5Ojp+UGx1Z2luQ29udHJvbGxlcgogICAg
ICAgICByZWxlYXNlTlBPYmplY3QobV9wbHVnaW5FbGVtZW50TlBPYmplY3QpOwogfQogCi12b2lk
IFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0SW5pdGlhbGl6YXRpb25SZXBseShSZWY8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4mJiBy
ZXBseSkKK3ZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzZXRJbml0aWFsaXphdGlvblJlcGx5
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6YXRpb25SZXBseSk7CiAgICAg
bV9pbml0aWFsaXphdGlvblJlcGx5ID0gV1RGTW92ZShyZXBseSk7CiB9CiAKLVJlZlB0cjxNZXNz
YWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiBQ
bHVnaW5Db250cm9sbGVyUHJveHk6OnRha2VJbml0aWFsaXphdGlvblJlcGx5KCkKK01lc3NhZ2Vz
OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHkgUGx1Z2lu
Q29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpCiB7Ci0gICAgcmV0dXJu
IG1faW5pdGlhbGl6YXRpb25SZXBseTsKKyAgICByZXR1cm4gV1RGTW92ZShtX2luaXRpYWxpemF0
aW9uUmVwbHkpOwogfQogCiBib29sIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6aW5pdGlhbGl6ZShj
b25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmgJKHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsOCArNzUsOCBAQCBw
dWJsaWM6CiAKICAgICBib29sIGlzSW5pdGlhbGl6aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0lu
aXRpYWxpemluZzsgfQogICAgIAotICAgIHZvaWQgc2V0SW5pdGlhbGl6YXRpb25SZXBseShSZWY8
TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBs
eT4mJik7Ci0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRl
UGx1Z2luOjpEZWxheWVkUmVwbHk+IHRha2VJbml0aWFsaXphdGlvblJlcGx5KCk7CisgICAgdm9p
ZCBzZXRJbml0aWFsaXphdGlvblJlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6
Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHkmJik7CisgICAgTWVzc2FnZXM6OldlYlByb2Nlc3ND
b25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseSB0YWtlSW5pdGlhbGl6YXRpb25S
ZXBseSgpOwogCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRQYWludFRpbWVyKCk7CkBAIC0xODQs
NyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNWaXNpYmxlOwogICAgIGJvb2wgbV9p
c1dpbmRvd1Zpc2libGU7CiAKLSAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0
aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4gbV9pbml0aWFsaXphdGlvblJlcGx5Owor
ICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVk
UmVwbHkgbV9pbml0aWFsaXphdGlvblJlcGx5OwogCiAgICAgUmVmUHRyPFBsdWdpbj4gbV9wbHVn
aW47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTc2LDExICsxNzYsMTEgQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBD
OgogICAgICAgICBkZXN0cm95UGx1Z2luQ29udHJvbGxlclByb3h5KHBsdWdpbkNvbnRyb2xsZXJz
W2ldKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbih1aW50
NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0
ZSwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6RGVs
YXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBs
dWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9u
SW5jb21wbGV0ZSwgTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpEZXN0cm95UGx1Z2lu
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICAvLyBXZSByZXR1cm4gaW1tZWRpYXRlbHkg
ZnJvbSB0aGlzIHN5bmNocm9ub3VzIElQQy4gV2Ugd2FudCB0byBtYWtlIHN1cmUgdGhlIHBsdWdp
biBkZXN0cnVjdGlvbiBpcyBqdXN0IGFib3V0IHRvIHN0YXJ0IHNvIGF1ZGlvIHBsYXliYWNrCiAg
ICAgLy8gd2lsbCBmaW5pc2ggc29vbiBhZnRlciByZXR1cm5pbmcuIEhvd2V2ZXIgd2UgZG9uJ3Qg
d2FudCB0byB3YWl0IGZvciBkZXN0cnVjdGlvbiB0byBjb21wbGV0ZSBmdWxseSBhcyB0aGF0IG1h
eSB0YWtlIGEgd2hpbGUuCi0gICAgcmVwbHktPnNlbmQoKTsKKyAgICByZXBseSgpOwogCiAgICAg
Ly8gRW5zdXJlIHdlIGRvbid0IGNsYW1wIGFueSB0aW1lcnMgZHVyaW5nIGRlc3RydWN0aW9uCiAg
ICAgQWN0aXZpdHlBc3NlcnRpb24gYWN0aXZpdHlBc3NlcnRpb24oUGx1Z2luUHJvY2Vzczo6c2lu
Z2xldG9uKCkuY29ubmVjdGlvbkFjdGl2aXR5KCkpOwpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQg
V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkkKICNlbmRpZgogfQogCi12b2lkIFdl
YlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJh
bWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVy
cyYgY3JlYXRpb25QYXJhbWV0ZXJzLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNy
ZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgLy8gRW5zdXJlIHdlIGRv
bid0IGNsYW1wIGFueSB0aW1lcnMgZHVyaW5nIGluaXRpYWxpemF0aW9uCiAgICAgQWN0aXZpdHlB
c3NlcnRpb24gYWN0aXZpdHlBc3NlcnRpb24oUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbkFjdGl2aXR5KCkpOwpAQCAtMjQ2LDkgKzI0Niw5IEBAIHZvaWQgV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZVBsdWdpbigKICAgICAgICAgCiAgICAgICAgIC8vIElmIGl0cyBpbml0
aWFsaXphdGlvbiBpcyBjb21wbGV0ZSB0aGVuIHdlIG5lZWQgdG8gcmVzcG9uZCB0byB0aGlzIG1l
c3NhZ2Ugd2l0aCB0aGUgY29ycmVjdCBpbmZvcm1hdGlvbiBhYm91dCBpdHMgY3JlYXRpb24uCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIHJlcGx5LT5zZW5kKHRydWUsIHBsdWdpbkNvbnRy
b2xsZXJQcm94eS0+d2FudHNXaGVlbEV2ZW50cygpLCBwbHVnaW5Db250cm9sbGVyUHJveHktPnJl
bW90ZUxheWVyQ2xpZW50SUQoKSk7CisgICAgICAgIHJlcGx5KHRydWUsIHBsdWdpbkNvbnRyb2xs
ZXJQcm94eS0+d2FudHNXaGVlbEV2ZW50cygpLCBwbHVnaW5Db250cm9sbGVyUHJveHktPnJlbW90
ZUxheWVyQ2xpZW50SUQoKSk7CiAjZWxzZQotICAgICAgICByZXBseS0+c2VuZCh0cnVlLCBwbHVn
aW5Db250cm9sbGVyUHJveHktPndhbnRzV2hlZWxFdmVudHMoKSwgMCk7CisgICAgICAgIHJlcGx5
KHRydWUsIHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+d2FudHNXaGVlbEV2ZW50cygpLCAwKTsKICNl
bmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbigKICAgICB1aW50MzJfdCByZW1vdGVMYXll
ckNsaWVudElEID0gMDsKICAgICBjcmVhdGVQbHVnaW5JbnRlcm5hbChjcmVhdGlvblBhcmFtZXRl
cnMsIHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CiAgICAg
Ci0gICAgcmVwbHktPnNlbmQocmVzdWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNs
aWVudElEKTsKKyAgICByZXBseShyZXN1bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVy
Q2xpZW50SUQpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5B
c3luY2hyb25vdXNseShjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFy
YW1ldGVycykKQEAgLTMwOCw4ICszMDgsOCBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpj
cmVhdGVQbHVnaW5BCiAgICAgLy8gc3luY2hyb25vdXMgcmVwbHkgaW5zdGVhZCBvZiBzZW5kaW5n
IHRoZSBhc3luY2hyb25vdXMgcmVwbHkuCiAgICAgUGx1Z2luQ29udHJvbGxlclByb3h5KiBwbHVn
aW5Db250cm9sbGVyUHJveHkgPSBtX3BsdWdpbkNvbnRyb2xsZXJzLmdldChjcmVhdGlvblBhcmFt
ZXRlcnMucGx1Z2luSW5zdGFuY2VJRCk7CiAgICAgQVNTRVJUKHBsdWdpbkNvbnRyb2xsZXJQcm94
eSk7Ci0gICAgaWYgKFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0
ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiBkZWxheWVkU3luY1JlcGx5ID0gcGx1Z2luQ29udHJvbGxl
clByb3h5LT50YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpKSB7Ci0gICAgICAgIGRlbGF5ZWRTeW5j
UmVwbHktPnNlbmQocmVzdWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElE
KTsKKyAgICBpZiAoYXV0byBkZWxheWVkU3luY1JlcGx5ID0gcGx1Z2luQ29udHJvbGxlclByb3h5
LT50YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpKSB7CisgICAgICAgIGRlbGF5ZWRTeW5jUmVwbHko
cmVzdWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9j
ZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgJKHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw5ICs2OSw5IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAg
ICB2b2lkIGRpZFJlY2VpdmVXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlByb2Nlc3ND
b25uZWN0aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwotICAgIHZvaWQgY3JlYXRlUGx1Z2luKGNvbnN0IFBs
dWdpbkNyZWF0aW9uUGFyYW1ldGVycyYsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGNyZWF0ZVBsdWdp
bihjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgY3JlYXRl
UGx1Z2luQXN5bmNocm9ub3VzbHkoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJik7Ci0g
ICAgdm9pZCBkZXN0cm95UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIGJvb2wgYXN5
bmNocm9ub3VzQ3JlYXRpb25JbmNvbXBsZXRlLCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25u
ZWN0aW9uOjpEZXN0cm95UGx1Z2luOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZGVzdHJv
eVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0
aW9uSW5jb21wbGV0ZSwgTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpEZXN0cm95UGx1
Z2luOjpEZWxheWVkUmVwbHkmJik7CiAgICAgCiAgICAgdm9pZCBjcmVhdGVQbHVnaW5JbnRlcm5h
bChjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmLCBib29sJiByZXN1bHQsIGJvb2wmIHdh
bnRzV2hlZWxFdmVudHMsIHVpbnQzMl90JiByZW1vdGVMYXllckNsaWVudElEKTsKIApJbmRleDog
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyMjc2ODIp
CisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0xMTgsMTYgKzExOCwxNCBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRp
b24obWVzc2FnCiAgICAgaWYgbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzICE9IE5vbmU6CiAgICAg
ICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShERUxBWUVEX0FUVFJJQlVURSk6CiAgICAgICAg
ICAgICBzZW5kX3BhcmFtZXRlcnMgPSBbKGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlKHgudHlwZSwg
eC5raW5kKSwgeC5uYW1lKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdCi0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RydWN0IERlbGF5ZWRSZXBseSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxEZWxheWVkUmVwbHk+IHtcbicpCi0gICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgICAgIERlbGF5ZWRSZXBseShSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPik7XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgICAgICB+RGVsYXllZFJlcGx5KCk7XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnXG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBib29sIHNlbmQo
JXMpO1xuJyAlICcsICcuam9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0ZXJz
XSkpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgcHJpdmF0ZTpcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
ICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjtcbicpCi0gICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IG1f
ZW5jb2RlcjtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgfTtcblxuJykKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCcpCisgICAgICAgICAgICBpZiBsZW4oc2VuZF9wYXJhbWV0ZXJzKToK
KyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCclcycgJSAnLCAnLmpvaW4oWycgJy5qb2lu
KHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnKT47JykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBzZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYnKQorICAg
ICAgICAgICAgaWYgbGVuKHNlbmRfcGFyYW1ldGVycyk6CisgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnLCAlcycgJSAnLCAnLmpvaW4oWycgJy5qb2luKHgpIGZvciB4IGluIHNlbmRfcGFy
YW1ldGVyc10pKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbicpCiAKICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICAgIHR5cGVkZWYgJXMgUmVwbHk7XG4nICUgcmVwbHlfdHlwZShtZXNz
YWdlKSkKIApAQCAtNTIzLDI0ICs1MjEsMTIgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxl
cihmaWxlKToKICAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgogICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCiAKLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyVzOjpEZWxheWVkUmVwbHk6OkRlbGF5ZWRSZXBseShS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+IGVuY29kZXIpXG4nICUgbWVzc2FnZS5uYW1lKQotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpXG4nKQotICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICwgbV9lbmNvZGVyKFdURk1vdmUoZW5jb2RlcikpXG4n
KQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJ31cbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCi0gICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCclczo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KClcbicgJSBt
ZXNzYWdlLm5hbWUpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVCghbV9jb25uZWN0aW9uKTtcbicpCi0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4n
KQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnYm9vbCAlczo6RGVsYXllZFJlcGx5OjpzZW5k
KCVzKVxuJyAlIChtZXNzYWdlLm5hbWUsICcsICcuam9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4g
c2VuZF9wYXJhbWV0ZXJzXSkpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlQobV9lbmNvZGVyKTtcbicpCi0gICAg
ICAgICAgICByZXN1bHQgKz0gWycgICAgKm1fZW5jb2RlciA8PCAlcztcbicgJSB4Lm5hbWUgZm9y
IHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXQotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIGJvb2wgX3Jlc3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShXVEZNb3Zl
KG1fZW5jb2RlcikpO1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBtX2Nvbm5l
Y3Rpb24gPSBudWxscHRyO1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1
cm4gX3Jlc3VsdDtcbicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpzZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uJyAlIChtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAgaWYgbGVuKHNlbmRf
cGFyYW1ldGVycyk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAlcycgJSAnLCAn
LmpvaW4oWycgJy5qb2luKHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnKVxue1xuJykKKyAgICAgICAgICAgIHJlc3VsdCArPSBbJyAgICAq
ZW5jb2RlciA8PCAlcztcbicgJSB4Lm5hbWUgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0
ZXJzXQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNS
ZXBseShXVEZNb3ZlKGVuY29kZXIpKTtcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9
XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
NSw3ICsyMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2Fn
ZTsKICAgICAgICAgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2U7CiAgICAgICAgIHVpbnQ2
NF90IGV4cGVjdGVkVXNhZ2U7Ci0gICAgICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4gcmVwbHk7CisgICAgICAgIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5
IHJlcGx5OwogICAgIH07CiAKICAgICBzdGF0aWMgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jk
cyYgc2luZ2xldG9uKCk7CkBAIC0yMzMsNyArMjMzLDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZWNvcmQ+IGNyZWF0ZVJlY29yZCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3Jp
Z2luSWRlbnRpZmllciwKICAgICAgICAgU3RyaW5nIGRhdGFiYXNlTmFtZSwgU3RyaW5nIGRpc3Bs
YXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsCiAgICAgICAgIHVpbnQ2NF90IGN1cnJlbnRP
cmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVj
dGVkVXNhZ2UsIAotICAgICAgICBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWRE
YXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+JiYpOworICAgICAgICBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseSYmKTsKIAogICAgIHZv
aWQgYWRkKHN0ZDo6dW5pcXVlX3B0cjxSZWNvcmQ+KTsKICAgICBib29sIGFyZUJlaW5nUHJvY2Vz
c2VkKCkgY29uc3QgeyByZXR1cm4gISFtX2N1cnJlbnRSZWNvcmQ7IH0KQEAgLTI1Niw3ICsyNTYs
NyBAQCBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzJiBFeGNlZWRlZERhCiBzdGQ6OnVuaXF1
ZV9wdHI8RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiBFeGNlZWRlZERhdGFi
YXNlUXVvdGFSZWNvcmRzOjpjcmVhdGVSZWNvcmQoCiAgICAgdWludDY0X3QgZnJhbWVJRCwgU3Ry
aW5nIG9yaWdpbklkZW50aWZpZXIsIFN0cmluZyBkYXRhYmFzZU5hbWUsIFN0cmluZyBkaXNwbGF5
TmFtZSwKICAgICB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5V
c2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsCi0gICAgdWludDY0X3QgZXhwZWN0
ZWRVc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90
YTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQorICAgIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5
JiYgcmVwbHkpCiB7CiAgICAgYXV0byByZWNvcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlY29yZD4o
KTsKICAgICByZWNvcmQtPmZyYW1lSUQgPSBmcmFtZUlEOwpAQCAtMzk3MiwyMCArMzk3MiwyMCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkVXBkYXRlSGlzdG9yeVRpdGxlCiAKIC8vIFVJQ2xpZW50
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEm
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzJiYgd2luZG93RmVhdHVyZXMs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFJlZjxNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2
b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBNRVNT
QUdFX0NIRUNLKG1fcHJvY2Vzcy0+d2ViRnJhbWUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZy
YW1lSUQpKTsKICAgICBhdXRvIG9yaWdpbmF0aW5nRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86
OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG1fcHJvY2Vzcy0+d2ViUGFnZShvcmln
aW5hdGluZ1BhZ2VJRCkpOwogCiAgICAgYXV0byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFtZS0+
dXJsKCk7CiAKLSAgICBtX3VpQ2xpZW50LT5jcmVhdGVOZXdQYWdlKCp0aGlzLCBXVEZNb3ZlKG9y
aWdpbmF0aW5nRnJhbWVJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZSh3aW5kb3dGZWF0
dXJlcyksIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZlB0cjxXZWJQYWdlUHJveHk+KHRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJl
cGx5ID0gV1RGTW92ZShyZXBseSldKFJlZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UpIHsKKyAg
ICBtX3VpQ2xpZW50LT5jcmVhdGVOZXdQYWdlKCp0aGlzLCBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJh
bWVJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZSh3aW5kb3dGZWF0dXJlcyksIFdURk1v
dmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSldKFJl
ZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UpIHsKICAgICAgICAgaWYgKCFuZXdQYWdlKSB7Ci0g
ICAgICAgICAgICByZXBseS0+c2VuZCgwLCB7IH0pOworICAgICAgICAgICAgcmVwbHkoMCwgeyB9
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHJlcGx5LT5zZW5k
KG5ld1BhZ2UtPnBhZ2VJRCgpLCBuZXdQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMoKSk7CisgICAg
ICAgIHJlcGx5KG5ld1BhZ2UtPnBhZ2VJRCgpLCBuZXdQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMo
KSk7CiAKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZTo6Y2xvbmVTZXNzaW9uRGF0YSgqdGhpcywg
Km5ld1BhZ2UpOwogICAgICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5l
eHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBob3N0c0FyZUVxdWFsKFVSTChQYXJzZWRVUkxT
dHJpbmcsIG1haW5GcmFtZVVSTCksIHJlcXVlc3QudXJsKCkpOwpAQCAtNDAyMSw3ICs0MDIxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlUGFnZShib29sIHN0b3BSZQogICAgIG1fdWlDbGll
bnQtPmNsb3NlKHRoaXMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFs
ZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlP
cmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5JiYgcmVw
bHkpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZy
YW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwpAQCAtNDAzNCwxMSArNDAzNCwxMSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KHVpCiAgICAgICAgICAgICBh
dXRvbWF0aW9uU2Vzc2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0aGlzKTsKICAgICB9
CiAgICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdEFsZXJ0KHRoaXMsIG1lc3NhZ2UsIGZyYW1l
LCBzZWN1cml0eU9yaWdpbiwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldIHsKLSAgICAgICAgcmVw
bHktPnNlbmQoKTsKKyAgICAgICAgcmVwbHkoKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUmVm
PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25maXJtOjpEZWxheWVkUmVw
bHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0odWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2Ny
aXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQcm94eSog
ZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0so
ZnJhbWUpOwpAQCAtNDA1MiwxMSArNDA1MiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdENvbmZpcm0oCiAgICAgfQogCiAgICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdENv
bmZpcm0odGhpcywgbWVzc2FnZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2luLCBbcmVwbHkgPSBXVEZN
b3ZlKHJlcGx5KV0oYm9vbCByZXN1bHQpIHsKLSAgICAgICAgcmVwbHktPnNlbmQocmVzdWx0KTsK
KyAgICAgICAgcmVwbHkocmVzdWx0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRQcm9tcHQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlZmF1bHRWYWx1ZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3Jp
cHRQcm9tcHQ6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5K
YXZhU2NyaXB0UHJvbXB0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZWZhdWx0VmFsdWUsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKQEAg
LTQwNzAsNyArNDA3MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0
KHUKICAgICB9CiAKICAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0UHJvbXB0KHRoaXMsIG1l
c3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2luLCBbcmVwbHkgPSBXVEZN
b3ZlKHJlcGx5KV0oY29uc3QgU3RyaW5nJiByZXN1bHQpIHsKLSAgICAgICAgcmVwbHktPnNlbmQo
cmVzdWx0KTsKKyAgICAgICAgcmVwbHkocmVzdWx0KTsKICAgICB9KTsKIH0KIApAQCAtNDEzOCwy
NCArNDEzOCwyNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hdmFpbGFibGVQbHVnaW5CdXR0CiAj
ZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpZiBFTkFCTEUoV0VCR0wp
Ci12b2lkIFdlYlBhZ2VQcm94eTo6d2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYgdXJsLCBSZWY8TWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseT4mJiBy
ZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChVUkwmJiB1cmwsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJiBy
ZXBseSkKIHsKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CiAgICAgICAgIG1fbmF2aWdh
dGlvbkNsaWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwsIFtyZXBseSA9IFdURk1vdmUo
cmVwbHkpXShXZWJHTExvYWRQb2xpY3kgcG9saWN5KSB7Ci0gICAgICAgICAgICByZXBseS0+c2Vu
ZChzdGF0aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5KSk7CisgICAgICAgICAgICByZXBseShzdGF0
aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5KSk7CiAgICAgICAgIH0pOwogICAgIH0gZWxzZQotICAg
ICAgICByZXBseS0+c2VuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9sb2FkZXJDbGllbnQtPndl
YkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSkpOworICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1
aW50MzJfdD4obV9sb2FkZXJDbGllbnQtPndlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSkpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVy
bCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6
RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJlc29sdmVXZWJHTFBv
bGljeUZvclVSTChVUkwmJiB1cmwsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJH
TFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgaWYgKG1fbmF2aWdh
dGlvbkNsaWVudCkgewogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnJlc29sdmVXZWJHTExv
YWRQb2xpY3koKnRoaXMsIHVybCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKFdlYkdMTG9hZFBv
bGljeSBwb2xpY3kpIHsKLSAgICAgICAgICAgIHJlcGx5LT5zZW5kKHN0YXRpY19jYXN0PHVpbnQz
Ml90Pihwb2xpY3kpKTsKKyAgICAgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Pihw
b2xpY3kpKTsKICAgICAgICAgfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlcGx5LT5zZW5kKHN0
YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+cmVzb2x2ZVdlYkdMTG9hZFBvbGlj
eSgqdGhpcywgdXJsKSkpOworICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9s
b2FkZXJDbGllbnQtPnJlc29sdmVXZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCkpKTsKIH0KICNl
bmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKQEAgLTQxNjQsMTAgKzQxNjQsMTAgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFRvb2xiYXJzQXJlVmlzaWJsZQogICAgIG1fdWlDbGllbnQtPnNldFRvb2xi
YXJzQXJlVmlzaWJsZSgqdGhpcywgdG9vbGJhcnNBcmVWaXNpYmxlKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmdldFRvb2xiYXJzQXJlVmlzaWJsZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0VG9vbGJhcnNBcmVWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkdldFRvb2xiYXJzQXJlVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgbV91
aUNsaWVudC0+dG9vbGJhcnNBcmVWaXNpYmxlKCp0aGlzLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5
KV0oYm9vbCB2aXNpYmxlKSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKHZpc2libGUpOworICAgICAg
ICByZXBseSh2aXNpYmxlKTsKICAgICB9KTsKIH0KIApAQCAtNDE3NiwxMCArNDE3NiwxMCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWVudUJhcklzVmlzaWJsZShiCiAgICAgbV91aUNsaWVudC0+
c2V0TWVudUJhcklzVmlzaWJsZSgqdGhpcywgbWVudUJhcklzVmlzaWJsZSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpnZXRNZW51QmFySXNWaXNpYmxlKFJlZjxNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpHZXRNZW51QmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0TWVudUJhcklzVmlzaWJsZShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpH
ZXRNZW51QmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBtX3VpQ2xp
ZW50LT5tZW51QmFySXNWaXNpYmxlKCp0aGlzLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKGJv
b2wgdmlzaWJsZSkgewotICAgICAgICByZXBseS0+c2VuZCh2aXNpYmxlKTsKKyAgICAgICAgcmVw
bHkodmlzaWJsZSk7CiAgICAgfSk7CiB9CiAKQEAgLTQxODgsMTAgKzQxODgsMTAgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFN0YXR1c0JhcklzVmlzaWJsZQogICAgIG1fdWlDbGllbnQtPnNldFN0
YXR1c0JhcklzVmlzaWJsZSgqdGhpcywgc3RhdHVzQmFySXNWaXNpYmxlKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFN0YXR1c0JhcklzVmlzaWJsZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6R2V0U3RhdHVzQmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0U3RhdHVzQmFySXNWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkdldFN0YXR1c0JhcklzVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAg
bV91aUNsaWVudC0+c3RhdHVzQmFySXNWaXNpYmxlKCp0aGlzLCBbcmVwbHkgPSBXVEZNb3ZlKHJl
cGx5KV0gKGJvb2wgdmlzaWJsZSkgewotICAgICAgICByZXBseS0+c2VuZCh2aXNpYmxlKTsKKyAg
ICAgICAgcmVwbHkodmlzaWJsZSk7CiAgICAgfSk7CiB9CiAKQEAgLTQyMDUsMTAgKzQyMDUsMTAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFdpbmRvd0ZyYW1lKGNvbnN0IAogICAgIG1fdWlDbGll
bnQtPnNldFdpbmRvd0ZyYW1lKCp0aGlzLCBtX3BhZ2VDbGllbnQuY29udmVydFRvRGV2aWNlU3Bh
Y2UobmV3V2luZG93RnJhbWUpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldFdpbmRvd0Zy
YW1lKFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRXaW5kb3dGcmFtZTo6RGVsYXllZFJl
cGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmdldFdpbmRvd0ZyYW1lKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsK
ICAgICBtX3VpQ2xpZW50LT53aW5kb3dGcmFtZSgqdGhpcywgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKEZsb2F0UmVjdCBmcmFt
ZSkgewotICAgICAgICByZXBseS0+c2VuZChtX3BhZ2VDbGllbnQuY29udmVydFRvVXNlclNwYWNl
KGZyYW1lKSk7CisgICAgICAgIHJlcGx5KG1fcGFnZUNsaWVudC5jb252ZXJ0VG9Vc2VyU3BhY2Uo
ZnJhbWUpKTsKICAgICB9KTsKIH0KIApAQCAtNDIxNywxNCArNDIxNywxNCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0V2luZG93RnJhbWVXaXRoQ2FsCiAgICAgbV91aUNsaWVudC0+d2luZG93RnJh
bWUoKnRoaXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHNjcmVlblBvaW50LCBSZWY8
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyZWVuVG9Sb290Vmlldzo6RGVsYXllZFJlcGx5PiYm
IHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9p
bnQmIHNjcmVlblBvaW50LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JlZW5Ub1Jvb3RWaWV3
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICByZXBseS0+c2VuZChtX3BhZ2VDbGllbnQu
c2NyZWVuVG9Sb290VmlldyhzY3JlZW5Qb2ludCkpOworICAgIHJlcGx5KG1fcGFnZUNsaWVudC5z
Y3JlZW5Ub1Jvb3RWaWV3KHNjcmVlblBvaW50KSk7CiB9CiAgICAgCi12b2lkIFdlYlBhZ2VQcm94
eTo6cm9vdFZpZXdUb1NjcmVlbihjb25zdCBJbnRSZWN0JiB2aWV3UmVjdCwgUmVmPE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJvb3RWaWV3VG9TY3JlZW46OkRlbGF5ZWRSZXBseT4mJiByZXBseSkK
K3ZvaWQgV2ViUGFnZVByb3h5Ojpyb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmIHZpZXdS
ZWN0LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVuOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKLSAgICByZXBseS0+c2VuZChtX3BhZ2VDbGllbnQucm9vdFZpZXdUb1Nj
cmVlbih2aWV3UmVjdCkpOworICAgIHJlcGx5KG1fcGFnZUNsaWVudC5yb290Vmlld1RvU2NyZWVu
KHZpZXdSZWN0KSk7CiB9CiAgICAgCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDIzOSw3ICs0MjM5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9BY2Nlc3NpYmlsaQogfQogI2VuZGlm
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+IHJlcGx5KQordm9pZCBXZWJQYWdl
UHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6
RGVsYXllZFJlcGx5IHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9j
ZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKQEAgLTQy
NTIsNyArNDI1Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXIK
ICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3JpcHREaWFsb2co
KnRoaXMpOwogICAgIH0KIAotICAgIG1fdWlDbGllbnQtPnJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbCh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFtyZXBseV0oYm9vbCBy
ZXN1bHQpIHsgcmVwbHktPnNlbmQocmVzdWx0KTsgfSk7CisgICAgbV91aUNsaWVudC0+cnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsKHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBzZWN1cml0eU9yaWdp
biwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKGJvb2wgcmVzdWx0KSB7IHJlcGx5KHJlc3VsdCk7
IH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVz
KGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cikKQEAgLTU5MjIsNyArNTkyMiw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXQKICAgICAgICAgbV9sb2FkZXJD
bGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoKnRoaXMsICpm
cmFtZSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0
cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVu
dE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhw
ZWN0ZWRVc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VR
dW90YTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmV4Y2VlZGVk
RGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwg
dWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5
JiYgcmVwbHkpCiB7CiAgICAgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcyYgcmVjb3JkcyA9
IEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OnNpbmdsZXRvbigpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQ+IG5ld1JlY29yZCA9
IHJlY29yZHMuY3JlYXRlUmVjb3JkKGZyYW1lSUQsCkBAIC01OTMzLDI2ICs1OTMzLDIzIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEKICAgICBpZiAocmVjb3Jkcy5h
cmVCZWluZ1Byb2Nlc3NlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBFeGNlZWRlZERhdGFi
YXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQqIHJlY29yZCA9IHJlY29yZHMubmV4dCgpOwotICAgIHdo
aWxlIChyZWNvcmQpIHsKKyAgICB3aGlsZSAoYXV0byogcmVjb3JkID0gcmVjb3Jkcy5uZXh0KCkp
IHsKICAgICAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKHJl
Y29yZC0+ZnJhbWVJRCk7CiAgICAgICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgICAg
IFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHJlY29y
ZC0+b3JpZ2luSWRlbnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgICAgICBhdXRvIGN1
cnJlbnRSZXBseSA9IHJlY29yZC0+cmVwbHk7Ci0gICAgICAgIG1fdWlDbGllbnQtPmV4Y2VlZGVk
RGF0YWJhc2VRdW90YSh0aGlzLCBmcmFtZSwgb3JpZ2luLmdldCgpLAotICAgICAgICAgICAgcmVj
b3JkLT5kYXRhYmFzZU5hbWUsIHJlY29yZC0+ZGlzcGxheU5hbWUsIHJlY29yZC0+Y3VycmVudFF1
b3RhLAotICAgICAgICAgICAgcmVjb3JkLT5jdXJyZW50T3JpZ2luVXNhZ2UsIHJlY29yZC0+Y3Vy
cmVudERhdGFiYXNlVXNhZ2UsIHJlY29yZC0+ZXhwZWN0ZWRVc2FnZSwKLSAgICAgICAgICAgIFtj
dXJyZW50UmVwbHldKHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSkgeyBjdXJyZW50UmVwbHkt
PnNlbmQobmV3UXVvdGEpOyB9KTsKLQotICAgICAgICByZWNvcmQgPSByZWNvcmRzLm5leHQoKTsK
KyAgICAgICAgYXV0byBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHJlY29yZC0+b3JpZ2luSWRlbnRp
ZmllciktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICBtX3VpQ2xpZW50LT5leGNlZWRlZERh
dGFiYXNlUXVvdGEodGhpcywgZnJhbWUsIG9yaWdpbi5wdHIoKSwgcmVjb3JkLT5kYXRhYmFzZU5h
bWUsIHJlY29yZC0+ZGlzcGxheU5hbWUsIHJlY29yZC0+Y3VycmVudFF1b3RhLCByZWNvcmQtPmN1
cnJlbnRPcmlnaW5Vc2FnZSwgcmVjb3JkLT5jdXJyZW50RGF0YWJhc2VVc2FnZSwgcmVjb3JkLT5l
eHBlY3RlZFVzYWdlLCBbY3VycmVudFJlcGx5ID0gV1RGTW92ZShyZWNvcmQtPnJlcGx5KV0odW5z
aWduZWQgbG9uZyBsb25nIG5ld1F1b3RhKSB7CisgICAgICAgICAgICBjdXJyZW50UmVwbHkobmV3
UXVvdGEpOworICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRp
ZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBS
ZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJlYWNoZWRB
cHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVy
LCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRl
bGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlP
cmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2lu
SWRlbnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgbV91aUNsaWVudC0+cmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh0aGlzLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgY3Vy
cmVudFF1b3RhLCB0b3RhbEJ5dGVzTmVlZGVkLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0odW5z
aWduZWQgbG9uZyBsb25nIG5ld1F1b3RhKSB7IHJlcGx5LT5zZW5kKG5ld1F1b3RhKTsgfSk7Cisg
ICAgbV91aUNsaWVudC0+cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh0aGlzLCBz
ZWN1cml0eU9yaWdpbi5nZXQoKSwgY3VycmVudFF1b3RhLCB0b3RhbEJ5dGVzTmVlZGVkLCBbcmVw
bHkgPSBXVEZNb3ZlKHJlcGx5KV0odW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhKSB7CisgICAg
ICAgIHJlcGx5KG5ld1F1b3RhKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTIx
MSw3ICsxMjExLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRGb2N1cyhib29sIGZvY3VzZWQp
OwogICAgIHZvaWQgc2V0V2luZG93RnJhbWUoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7Ci0g
ICAgdm9pZCBnZXRXaW5kb3dGcmFtZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0V2lu
ZG93RnJhbWU6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXRXaW5kb3dGcmFtZShNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpHZXRXaW5kb3dGcmFtZTo6RGVsYXllZFJlcGx5JiYpOwogICAg
IHZvaWQgZ2V0V2luZG93RnJhbWVXaXRoQ2FsbGJhY2soRnVuY3Rpb248dm9pZChXZWJDb3JlOjpG
bG9hdFJlY3QpPiYmKTsKIAogICAgIGJvb2wgaXNSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZDsgfQpAQCAtMTM2NiwxMSAr
MTM2NiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKTsKIAog
ICAgIC8vIFVJIGNsaWVudAotICAgIHZvaWQgY3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9E
YXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBS
ZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5PiYm
KTsKKyAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90
IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
V2luZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgc2hvd1Bh
Z2UoKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBSZWY8TWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVkUmVwbHk+JiYpOwot
ICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgUmVmPE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25maXJtOjpEZWxheWVkUmVwbHk+JiYpOwotICAg
IHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6RGVsYXllZFJlcGx5
PiYmKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2
b2lkIHJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJ1bkphdmFTY3JpcHRDb25maXJtOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBydW5K
YXZhU2NyaXB0UHJvbXB0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lk
IHNldFN0YXR1c1RleHQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVy
RWxlbWVudChXZWJIaXRUZXN0UmVzdWx0RGF0YSYmLCB1aW50MzJfdCBtb2RpZmllcnMsIFVzZXJE
YXRhJiYpOwogCkBAIC0xMzc4LDI5ICsxMzc4LDI5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bmF2
YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQodWludDMyX3Qgb3BhcXVlUGx1Z2luVW5hdmFpbGFi
aWxpdHlSZWFzb24sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGx1Z2lu
VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpbnNQYWdlVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpOwogI2VuZGlm
IC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJMRShXRUJHTCkKLSAgICB2
b2lkIHdlYkdMUG9saWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCYmLCBSZWY8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseT4mJik7Ci0gICAgdm9pZCBy
ZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIFJlZjxNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseT4mJik7Cisg
ICAgdm9pZCB3ZWJHTFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwmJiwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIHJl
c29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwmJiwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7CiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdMKQogICAgIHZvaWQgc2V0VG9vbGJhcnNBcmVWaXNpYmxlKGJvb2wgdG9v
bGJhcnNBcmVWaXNpYmxlKTsKLSAgICB2b2lkIGdldFRvb2xiYXJzQXJlVmlzaWJsZShSZWY8TWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpEZWxheWVkUmVwbHk+
JiYpOworICAgIHZvaWQgZ2V0VG9vbGJhcnNBcmVWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkdldFRvb2xiYXJzQXJlVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgc2V0
TWVudUJhcklzVmlzaWJsZShib29sIG1lbnVCYXJJc1Zpc2libGUpOwotICAgIHZvaWQgZ2V0TWVu
dUJhcklzVmlzaWJsZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlz
aWJsZTo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldE1lbnVCYXJJc1Zpc2libGUoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYp
OwogICAgIHZvaWQgc2V0U3RhdHVzQmFySXNWaXNpYmxlKGJvb2wgc3RhdHVzQmFySXNWaXNpYmxl
KTsKLSAgICB2b2lkIGdldFN0YXR1c0JhcklzVmlzaWJsZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6R2V0U3RhdHVzQmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQg
Z2V0U3RhdHVzQmFySXNWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0Jh
cklzVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgc2V0SXNSZXNpemFibGUoYm9v
bCBpc1Jlc2l6YWJsZSk7Ci0gICAgdm9pZCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBzY3JlZW5Qb2ludCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmVl
blRvUm9vdFZpZXc6OkRlbGF5ZWRSZXBseT4mJik7Ci0gICAgdm9pZCByb290Vmlld1RvU2NyZWVu
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Um9vdFZpZXdUb1NjcmVlbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIHNjcmVl
blRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVlblBvaW50LCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTY3JlZW5Ub1Jvb3RWaWV3OjpEZWxheWVkUmVwbHkmJik7CisgICAg
dm9pZCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVuOjpEZWxheWVkUmVwbHkmJik7
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZp
ZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVlblBvaW50LCBXZWJDb3JlOjpJbnRQb2lu
dCYgd2luZG93UG9pbnQpOwogICAgIHZvaWQgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4o
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlld1JlY3QsIFdlYkNvcmU6OkludFJlY3QmIHJlc3Vs
dCk7CiAjZW5kaWYKLSAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWw6OkRlbGF5ZWRSZXBseT4pOworICAgIHZvaWQgcnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHkpOwogICAgIHZvaWQgZGlk
Q2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRl
cyYpOwogICAgIHZvaWQgcGFnZURpZFNjcm9sbCgpOwogICAgIHZvaWQgcnVuT3BlblBhbmVsKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0
IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKICAgICB2b2lkIHByaW50RnJhbWUodWlu
dDY0X3QgZnJhbWVJRCk7Ci0gICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1
b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFz
ZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+JiYpOwotICAgIHZvaWQgcmVh
Y2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50
aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwg
UmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGE6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3Qg
Y3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJl
bnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lk
IHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5J
ZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVk
ZWQsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGE6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1p
c3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgb3JpZ2luSWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24g
MjI3Njg3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MDIsNyArNTAyLDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2Vi
UHJvY2Vzc1Bvb2w6OmVucwogICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2VzczsKIH0KIAotdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJv
eHkmIG5ldHdvcmtQcm9jZXNzUHJveHksIFZlY3RvcjxSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiYmIHBlbmRp
bmdSZXBsaWVzKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5l
dHdvcmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQcm9jZXNzUHJveHksIFZlY3RvcjxNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4mJiBwZW5kaW5nUmVwbGllcykKIHsKICAgICBuZXR3b3JrUHJvY2Vzc0ZhaWxlZFRvTGF1bmNo
KG5ldHdvcmtQcm9jZXNzUHJveHkpOwogICAgIEFTU0VSVCghbV9uZXR3b3JrUHJvY2Vzcyk7CkBA
IC01MjgsNyArNTI4LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NGYWls
ZQogICAgIG1fbmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwogfQogCi12b2lkIFdlYlByb2Nlc3NQ
b29sOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5
KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKICAgICBBU1NF
UlQobV9uZXR3b3JrUHJvY2Vzcyk7CkBAIC01NzMsNyArNTczLDcgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6ZW5zdXJlU3RvcmFnZVByb2NlcwogICAgIG1fc3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpJbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShyZWxldmFu
dERhdGFTdG9yZS0+c3RvcmFnZVByb2Nlc3NQYXJhbWV0ZXJzKCkpLCAwKTsKIH0KIAotdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNl
V29ya2VyUHJvY2VzcywgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCwgUmVmPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3RvcmFnZVByb2Nlc3ND
b25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgUEFMOjpTZXNzaW9uSUQgaW5p
dGlhbFNlc3Npb25JRCwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBlbnN1cmVTdG9yYWdl
UHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdOb25E
ZWZhdWx0RGF0YVN0b3JlRm9yU2Vzc2lvbklEKGluaXRpYWxTZXNzaW9uSUQpKTsKIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyMjc2ODIp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTQsMTQgKzMxNCwxNCBAQCBwdWJsaWM6CiAgICAgLy8gTmV0d29yayBQcm9jZXNz
IE1hbmFnZW1lbnQKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBlbnN1cmVOZXR3b3JrUHJvY2Vz
cyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoV2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHIpOwogICAg
IE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkgeyByZXR1cm4gbV9uZXR3b3Jr
UHJvY2Vzcy5nZXQoKTsgfQotICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQ
cm9jZXNzUHJveHkmLCBWZWN0b3I8UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4mJik7CisgICAgdm9pZCBuZXR3
b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFZlY3RvcjxNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4mJik7CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0ZhaWxlZFRvTGF1bmNoKE5ldHdvcmtQcm9j
ZXNzUHJveHkmKTsKIAotICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFJlZjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHkmJik7CiAKICAgICB2b2lkIGVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURh
dGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlKiByZWxldmFudERhdGFTdG9yZSk7CiAgICAgU3RvcmFn
ZVByb2Nlc3NQcm94eSogc3RvcmFnZVByb2Nlc3MoKSB7IHJldHVybiBtX3N0b3JhZ2VQcm9jZXNz
LmdldCgpOyB9Ci0gICAgdm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oYm9vbCBpc1Nl
cnZpY2VXb3JrZXJQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklELCBSZWY8
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpE
ZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKGJv
b2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25J
RCwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBzdG9yYWdlUHJvY2Vzc0NyYXNoZWQoU3RvcmFn
ZVByb2Nlc3NQcm94eSopOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVz
dGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhTdG9yYWdlUHJv
Y2Vzc1Byb3h5Jiwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4pOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMjc2ODIp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01ODksMTggKzU4OSwxOCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0UGx1
Z2lucyhib29sIHJlCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFJlZjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJl
cGx5KQogewogICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5nZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbihwbHVnaW5Qcm9jZXNzVG9rZW4sIFdURk1vdmUocmVwbHkpKTsKIH0K
ICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBtX3By
b2Nlc3NQb29sLT5nZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGTW92ZShyZXBseSkpOwog
fQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFBB
TDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkK
K3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUEFMOjpT
ZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBt
X3Byb2Nlc3NQb29sLT5nZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oaXNTZXJ2aWNlV29ya2Vy
UHJvY2VzcygpLCBpbml0aWFsU2Vzc2lvbklELCBXVEZNb3ZlKHJlcGx5KSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjI3Njgy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI0MSwxMCArMjQxLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRQbHVnaW5z
KGJvb2wgcmVmcmVzaCwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+JiBwbHVnaW5zLCBWZWN0
b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIGFwcGxpY2F0aW9uUGx1Z2lucyk7CiAjZW5kaWYgLy8g
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCi0gICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Q
cm9jZXNzVG9rZW4sIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsK
ICNlbmRpZgotICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseT4mJik7Ci0gICAgdm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUEFMOjpTZXNz
aW9uSUQgaW5pdGlhbFNlc3Npb25JRCwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIGdldFN0
b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklELCBN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseSYmKTsKIAogICAgIGJvb2wgcGxhdGZvcm1Jc0JlaW5nRGVidWdnZWQoKSBjb25z
dDsKICAgICBib29sIHNob3VsZEFsbG93Tm9uVmFsaWRJbmplY3RlZENvZGUoKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA3LDcgKzEwNyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxTaHUK
ICAgICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sIHRoaXMtPmNvbm5lY3Rpb24oKSA9PSAmY29u
bmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkp
CiB7CiAgICAgbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuYXBwZW5kKFdURk1vdmUocmVwbHkp
KTsKIApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29y
a1Byb2Nlc3MKIHsKICAgICBjbGVhckNhbGxiYWNrU3RhdGVzKCk7CiAKLSAgICBWZWN0b3I8UmVm
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5Pj4gcGVuZGluZ1JlcGxpZXM7CisgICAgVmVjdG9yPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiBw
ZW5kaW5nUmVwbGllczsKICAgICBwZW5kaW5nUmVwbGllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiByZXBs
eSA6IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzKQogICAgICAgICBwZW5kaW5nUmVwbGllcy5h
cHBlbmQoV1RGTW92ZShyZXBseSkpOwpAQCAtMTg2LDEyICsxODYsMTIgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2VzcwogewogICAgIC8vIFRoZSBuZXR3b3JrIHByb2Nl
c3MgbXVzdCBoYXZlIGNyYXNoZWQgb3IgZXhpdGVkLCBzZW5kIGFueSBwZW5kaW5nIHN5bmMgcmVw
bGllcyB3ZSBtaWdodCBoYXZlLgogICAgIHdoaWxlICghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRp
bmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICAgICAgYXV0byByZXBseSA9IG1f
cGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgVVNFKFVOSVhfRE9N
QUlOX1NPQ0tFVFMpCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgpKTsKKyAg
ICAgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KCkpOwogI2VsaWYgT1MoREFSV0lOKQotICAgICAg
ICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQp
KTsKKyAgICAgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9T
RU5EKSk7CiAjZWxzZQogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkBAIC0yNjIs
MTIgKzI2MiwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvCiAg
ICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCiAgICAg
Ly8gR3JhYiB0aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5LgotICAgIFJlZlB0cjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3Qo
KTsKKyAgICBhdXRvIHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0
KCk7CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICByZXBseS0+c2VuZChjb25u
ZWN0aW9uSWRlbnRpZmllcik7CisgICAgcmVwbHkoY29ubmVjdGlvbklkZW50aWZpZXIpOwogI2Vs
aWYgT1MoREFSV0lOKQotICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudChjb25uZWN0aW9u
SWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CisgICAgcmVwbHko
SVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQ
RV9NT1ZFX1NFTkQpKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgJKHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2
Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE5ldHdvcmtQcm9jZXNzUHJveHk+IGNyZWF0
ZShXZWJQcm9jZXNzUG9vbCYpOwogICAgIH5OZXR3b3JrUHJvY2Vzc1Byb3h5KCk7CiAKLSAgICB2
b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAg
IHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogCiAgICAg
RG93bmxvYWRQcm94eSogY3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKTsKIApAQCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAgICAgV2ViUHJvY2Vz
c1Bvb2wmIG1fcHJvY2Vzc1Bvb2w7CiAgICAgCiAgICAgdW5zaWduZWQgbV9udW1QZW5kaW5nQ29u
bmVjdGlvblJlcXVlc3RzOwotICAgIERlcXVlPFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzOworICAgIERlcXVlPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiBtX3BlbmRpbmdDb25uZWN0
aW9uUmVwbGllczsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAo
V2Vic2l0ZURhdGEpPj4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVX
ZWJzaXRlRGF0YUNhbGxiYWNrczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCShyZXZpc2lvbiAyMjc2
ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCB1aW50NjRfdCBQbHVnaW5Q
cm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvCiAgICAgcmV0dXJuIHRva2VuOwogfQogCi12b2lkIFBs
dWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBw
bHVnaW5Qcm9jZXNzVG9rZW4sIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBQbHVnaW5Q
cm9jZXNzTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2lu
UHJvY2Vzc1Rva2VuLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgQVNTRVJUKHBsdWdpblBy
b2Nlc3NUb2tlbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgJKHJldmlzaW9uIDIyNzY4MikKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICB1aW50NjRfdCBwbHVn
aW5Qcm9jZXNzVG9rZW4oY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIFBsdWdpblByb2Nlc3NUeXBl
LCBQbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeSk7CiAKLSAgICB2b2lkIGdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgUmVmPE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+
JiYpOworICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2lu
UHJvY2Vzc1Rva2VuLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgcmVtb3ZlUGx1Z2luUHJvY2Vz
c1Byb3h5KFBsdWdpblByb2Nlc3NQcm94eSopOwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRh
KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlv
bj4sIFdURjo6RnVuY3Rpb248dm9pZCAoVmVjdG9yPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2ls
bFNodXQKIAogLy8gQXNrcyB0aGUgcGx1Zy1pbiBwcm9jZXNzIHRvIGNyZWF0ZSBhIG5ldyBjb25u
ZWN0aW9uIHRvIGEgd2ViIHByb2Nlc3MuIFRoZSBjb25uZWN0aW9uIGlkZW50aWZpZXIgd2lsbCBi
ZSAKIC8vIGVuY29kZWQgaW4gdGhlIGdpdmVuIGFyZ3VtZW50IGVuY29kZXIgYW5kIHNlbnQgYmFj
ayB0byB0aGUgY29ubmVjdGlvbiBvZiB0aGUgZ2l2ZW4gd2ViIHByb2Nlc3MuCi12b2lkIFBsdWdp
blByb2Nlc3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+
JiYgcmVwbHkpCit2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBs
aWVzLmFwcGVuZChXVEZNb3ZlKHJlcGx5KSk7CiAKQEAgLTE1OSwxMiArMTU5LDEyIEBAIHZvaWQg
UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVnaW5Qcm9jZXNzQ3IKIHsKICAgICAvLyBUaGUgcGx1Zy1p
biBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc2VuZCBhbnkgcGVuZGluZyBz
eW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KICAgICB3aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rp
b25SZXBsaWVzLmlzRW1wdHkoKSkgewotICAgICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkg
PSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICAgICAgYXV0byBy
ZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgVVNF
KFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVu
dCgpLCBmYWxzZSk7CisgICAgICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgpLCBmYWxzZSk7CiAj
ZWxpZiBPUyhEQVJXSU4pCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgwLCBN
QUNIX01TR19UWVBFX01PVkVfU0VORCksIGZhbHNlKTsKKyAgICAgICAgcmVwbHkoSVBDOjpBdHRh
Y2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgZmFsc2UpOwogI2Vsc2UKICAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpAQCAtMjc2LDEyICsyNzYsMTIgQEAgdm9pZCBQ
bHVnaW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlBybwogICAgIEFTU0VSVCghbV9wZW5kaW5n
Q29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKTsKIAogICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBl
bmRpbmcgY29ubmVjdGlvbiByZXBseS4KLSAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBt
X3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICBhdXRvIHJlcGx5ID0g
bV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNpZiBVU0UoVU5JWF9E
T01BSU5fU09DS0VUUykKLSAgICByZXBseS0+c2VuZChjb25uZWN0aW9uSWRlbnRpZmllciwgc3Vw
cG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CisgICAgcmVwbHkoY29ubmVj
dGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24p
OwogI2VsaWYgT1MoREFSV0lOKQotICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudChjb25u
ZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgc3VwcG9y
dHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CisgICAgcmVwbHkoSVBDOjpBdHRh
Y2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NF
TkQpLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKICNlbHNlCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyMjc2
ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEFz
a3MgdGhlIHBsdWctaW4gcHJvY2VzcyB0byBjcmVhdGUgYSBuZXcgY29ubmVjdGlvbiB0byBhIHdl
YiBwcm9jZXNzLiBUaGUgY29ubmVjdGlvbiBpZGVudGlmaWVyIHdpbGwgYmUKICAgICAvLyBlbmNv
ZGVkIGluIHRoZSBnaXZlbiBhcmd1bWVudCBlbmNvZGVyIGFuZCBzZW50IGJhY2sgdG8gdGhlIGNv
bm5lY3Rpb24gb2YgdGhlIGdpdmVuIHdlYiBwcm9jZXNzLgotICAgIHZvaWQgZ2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0
YShXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwpAQCAtMTQ5LDcgKzE0
OSw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIGNvbm5lY3Rpb24gdG8gdGhlIHBsdWctaW4gaG9z
dCBwcm9jZXNzLgogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKIAot
ICAgIERlcXVlPFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7
CisgICAgRGVxdWU8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CiAKICAg
ICBWZWN0b3I8dWludDY0X3Q+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFSZXF1ZXN0czsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4+
IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAJ
KHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZVByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCB2
b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVECiAgICAgc2VuZChNZXNzYWdl
czo6U3RvcmFnZVByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhzZXNzaW9uSUQs
IGRhdGFUeXBlcywgb3JpZ2lucywgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFN0b3JhZ2VQ
cm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihib29sIGlzU2VydmljZVdv
cmtlclByb2Nlc3MsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgU3RvcmFnZVByb2Nl
c3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNlV29ya2Vy
UHJvY2VzcywgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25u
ZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBtX3BlbmRpbmdDb25uZWN0aW9u
UmVwbGllcy5hcHBlbmQoV1RGTW92ZShyZXBseSkpOwogCkBAIC0xMzAsOSArMTMwLDkgQEAgdm9p
ZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OgogICAgICAgICBhdXRvIHJlcGx5
ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNpZiBVU0UoVU5J
WF9ET01BSU5fU09DS0VUUykKLSAgICAgICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KCkp
OworICAgICAgICByZXBseShJUEM6OkF0dGFjaG1lbnQoKSk7CiAjZWxpZiBPUyhEQVJXSU4pCi0g
ICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVf
U0VORCkpOworICAgICAgICByZXBseShJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9N
T1ZFX1NFTkQpKTsKICNlbHNlCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKQEAg
LTE2MiwxMiArMTYyLDEyIEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU3Rv
cmEKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSk7
CiAKLSAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJl
cGxpZXMudGFrZUZpcnN0KCk7CisgICAgYXV0byByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25S
ZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAg
cmVwbHktPnNlbmQoY29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIHJlcGx5KGNvbm5lY3Rpb25J
ZGVudGlmaWVyKTsKICNlbGlmIE9TKERBUldJTikKLSAgICByZXBseS0+c2VuZChJUEM6OkF0dGFj
aG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VO
RCkpOworICAgIHJlcGx5KElQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0
KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFn
ZVByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0
b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0
YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2UsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsK
ICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+JiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwog
Ci0gICAgdm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oYm9vbCBpc1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzLCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0U3RvcmFnZVByb2Nl
c3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7
CiAKIHByaXZhdGU6CiAgICAgU3RvcmFnZVByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYpOwpA
QCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIFdlYlByb2Nlc3NQb29sJiBtX3Byb2Nlc3NQ
b29sOwogCiAgICAgdW5zaWduZWQgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOwotICAg
IERlcXVlPFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOworICAg
IERlcXVlPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKIAogICAgIEhh
c2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPj4gbV9wZW5k
aW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrczsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDIyNzY4
MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDEwICsyMDMsMTAgQEAgdm9p
ZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dGVybQogICAgIFNXQ29udGV4dE1hbmFn
ZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBhc3luY1dvcmtlclRl
cm1pbmF0aW9uVGltZW91dCwgbnVsbHB0cik7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgUmVmPE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
U3luY1Rlcm1pbmF0ZVdvcmtlcjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAg
IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVy
LCBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0g
ewotICAgICAgICByZXBseS0+c2VuZCgpOworICAgICAgICByZXBseSgpOwogICAgIH0pOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgJKHJldmlzaW9uIDIyNzY4MikK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIp
OwogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIpOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKTsKLSAgICB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFJlZjxNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBz
eW5jVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6
OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcik7CiAgICAgdm9p
ZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBW
ZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpOwogICAgIHZvaWQgY2xh
aW1Db21wbGV0ZWQodWludDY0X3QgY2xhaW1SZXF1ZXN0SWRlbnRpZmllcik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMjc2ODIp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc5NSw3ICs3OTUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KElPUykKLSAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6
V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBs
eT4mJik7CisgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFja0lELCBNZXNzYWdlczo6V2Vi
UGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseSYm
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDIyNzY4
MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzU4LDEwICszMzU4LDEwIEBAIHZvaWQgV2ViUGFnZTo6ZGlz
cGF0Y2hBc3luY2hyb25vdXNUb3VjaEUKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmNvbXB1
dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFBy
aW50SW5mbyYgcHJpbnRJbmZvLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6
V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBs
eT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3
VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCwgTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50
aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBpZiAocHJpbnRJ
bmZvLnNuYXBzaG90Rmlyc3RQYWdlKSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKDEpOworICAgICAg
ICByZXBseSgxKTsKICAgICAgICAgSW50U2l6ZSBzbmFwc2hvdFNpemUgeyBGbG9hdFNpemUgeyBw
cmludEluZm8uYXZhaWxhYmxlUGFwZXJXaWR0aCwgcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVySGVp
Z2h0IH0gfTsKICAgICAgICAgSW50UmVjdCBzbmFwc2hvdFJlY3QgeyB7MCwgMH0sIHNuYXBzaG90
U2l6ZSB9OwogICAgICAgICBhdXRvIHBkZkRhdGEgPSBwZGZTbmFwc2hvdEF0U2l6ZShzbmFwc2hv
dFJlY3QsIHNuYXBzaG90U2l6ZSwgMCk7CkBAIC0zMzc2LDcgKzMzNzYsNyBAQCB2b2lkIFdlYlBh
Z2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kCiAgICAgQVNTRVJUKHBhZ2VSZWN0cy5zaXpl
KCkgPj0gMSk7CiAgICAgc3RkOjpzaXplX3QgcGFnZUNvdW50ID0gcGFnZVJlY3RzLnNpemUoKTsK
ICAgICBBU1NFUlQocGFnZUNvdW50IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+Ojpt
YXgoKSk7Ci0gICAgcmVwbHktPnNlbmQocGFnZUNvdW50KTsKKyAgICByZXBseShwYWdlQ291bnQp
OwogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwogICAgIGRy
YXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIDAsIHBhZ2VDb3VudCwgcGRmUGFn
ZURhdGEpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332604</attachid>
            <date>2018-01-29 16:58:04 -0800</date>
            <delta_ts>2018-01-29 17:15:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182269-20180129165803.patch</filename>
            <type>text/plain</type>
            <size>70177</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjc3NjMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBACisyMDE4LTAxLTI5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIENvbXBsZXRp
b25IYW5kbGVycyBmb3IgRGVsYXllZFJlcGxpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIERlbGF5ZWRSZXBsaWVzIHNob3VsZCBiZSBhIG5vbmNvcHlh
YmxlLCBub24tcmVmY291bnRhYmxlIHR5cGUuICBUaGV5IHNob3VsZCBiZQorICAgICAgICBjYWxs
ZWQgb25jZS4gIFRoaXMgaXMgd2hhdCBDb21wbGV0aW9uSGFuZGxlcnMgYXJlIGZvci4KKworICAg
ICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuICBKdXN0IGNsZWFuZXIgY29kZS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBlcmZvcm1TeW5j
aHJvbm91c0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5j
aHJvbm91c0xvYWREYXRhOjpTeW5jaHJvbm91c0xvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6
c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgor
ICAgICAgICAoSVBDOjpjYWxsTWVtYmVyRnVuY3Rpb25JbXBsKToKKyAgICAgICAgKElQQzo6Y2Fs
bE1lbWJlckZ1bmN0aW9uKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZURlbGF5ZWQpOgor
ICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpzZXRJbml0aWFsaXphdGlvblJlcGx5
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6
YXRpb25SZXBseSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuaDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRlc3Ryb3lQbHVnaW4pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkFzeW5jaHJv
bm91c2x5KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmg6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChtZXNzYWdl
X3RvX3N0cnVjdF9kZWNsYXJhdGlvbik6CisgICAgICAgIChnZW5lcmF0ZV9tZXNzYWdlX2hhbmRs
ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3
b3JrUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpuZXR3b3JrUHJvY2Vzc0ZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVnaW5Qcm9jZXNz
Q3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNz
UHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Rv
cmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVBy
b2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpFeGNl
ZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpjcmVhdGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Ondl
YkdMUG9saWN5Rm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNvbHZl
V2ViR0xQb2xpY3lGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFRv
b2xiYXJzQXJlVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWVu
dUJhcklzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U3RhdHVz
QmFySXNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRXaW5kb3dG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyZWVuVG9Sb290Vmlldyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb1NjcmVlbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpn
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYpOgorCiAyMDE4LTAxLTI5ICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlz
dGljczogSW50cm9kdWNlIGRlYnVnIG1vZGUgYXMgZXhwZXJpbWVudGFsIGZlYXR1cmUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNjaGUKICAgICBsb2FkZXItPnN0YXJ0KCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBlcmZvcm1TeW5jaHJvbm91c0xvYWQoY29uc3QgTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzLCBSZWY8TWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpE
ZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpwZXJmb3JtU3luY2hyb25vdXNMb2FkKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiBsb2FkUGFyYW1ldGVycywgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAg
ICBhdXRvIGxvYWRlciA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGxvYWRQYXJhbWV0
ZXJzLCAqdGhpcywgV1RGTW92ZShyZXBseSkpOwogICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVy
cy5hZGQobG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciwgbG9hZGVyLnB0cigpKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBj
b3B5KQpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIHZvaWQg
c2NoZWR1bGVSZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
KTsKLSAgICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoY29uc3QgTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMmLCBSZWY8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQg
cGVyZm9ybVN5bmNocm9ub3VzTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cyYsIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNo
cm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgbG9hZFBpbmcoTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmJiwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmIG9yaWdpbmFs
UmVxdWVzdEhlYWRlcnMpOwogICAgIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJik7CiAg
ICAgdm9pZCBwcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIE5l
dHdvcmtMb2FkUGFyYW1ldGVycyYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDIyNzY4
MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTMgKzYzLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OlN5bmNocm9ub3VzTG9hZERhdGEgewotICAgIFN5bmNocm9ub3VzTG9hZERhdGEoUmVmUHRy
PE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9u
b3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQorICAgIFN5bmNocm9ub3VzTG9hZERhdGEo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25v
dXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSkKICAgICAgICAgOiBkZWxheWVkUmVwbHkoV1RG
TW92ZShyZXBseSkpCiAgICAgewogICAgICAgICBBU1NFUlQoZGVsYXllZFJlcGx5KTsKICAgICB9
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IGN1cnJlbnRSZXF1ZXN0OwotICAgIFJlZlB0cjxNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6
OkRlbGF5ZWRSZXBseT4gZGVsYXllZFJlcGx5OworICAgIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5IGRl
bGF5ZWRSZXBseTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIFJlc291cmNl
RXJyb3IgZXJyb3I7CiB9OwpAQCAtODMsMTEgKzgzLDExIEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBs
eVRvU3luY2hyb25vdXNSZXF1ZXMKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQog
ICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKIAotICAgIGRhdGEuZGVsYXllZFJlcGx5LT5zZW5kKGRhdGEuZXJyb3IsIGRhdGEucmVz
cG9uc2UsIHJlc3BvbnNlQnVmZmVyKTsKKyAgICBkYXRhLmRlbGF5ZWRSZXBseShkYXRhLmVycm9y
LCBkYXRhLnJlc3BvbnNlLCByZXNwb25zZUJ1ZmZlcik7CiAgICAgZGF0YS5kZWxheWVkUmVwbHkg
PSBudWxscHRyOwogfQogCi1OZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycywgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlZlB0cjxNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRl
bGF5ZWRSZXBseT4mJiBzeW5jaHJvbm91c1JlcGx5KQorTmV0d29ya1Jlc291cmNlTG9hZGVyOjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91
c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHN5bmNocm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRl
cnMgeyBwYXJhbWV0ZXJzIH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQogICAg
ICwgbV9kZWZlcnNMb2FkaW5nIHsgcGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBj
bGFzcyBFbnRyeTsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyIGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8TmV0d29ya1Jlc291cmNlTG9hZGVyPiwgcHVibGljIE5ldHdvcmtMb2FkQ2xp
ZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbiwgUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5ID0gbnVsbHB0cikK
KyAgICBzdGF0aWMgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKGNvbnN0IE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSA9IG51
bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIocGFyYW1ldGVycywgY29ubmVjdGlvbiwgV1RGTW92ZShyZXBseSkpKTsKICAgICB9
CkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya1Jlc291cmNlTG9hZGVyKGNv
bnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBSZWZQdHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYpOworICAgIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYsIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJik7CiAKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDggQEAKIAogbmFt
ZXNwYWNlIElQQyB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQ29kaW5nVHlwZTsKKwog
ZW51bSBjbGFzcyBTZW5kT3B0aW9uIHsKICAgICAvLyBXaGV0aGVyIHRoaXMgbWVzc2FnZSBzaG91
bGQgYmUgZGlzcGF0Y2hlZCB3aGVuIHdhaXRpbmcgZm9yIGEgc3luYyByZXBseS4KICAgICAvLyBU
aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBzeW5jaHJvbm91cyBtZXNzYWdlcy4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgJKHJldmlzaW9uIDIyNzY4MikK
KysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBcmd1bWVu
dENvZGVycy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFj
ZSBJUEMgewpAQCAtNjIsMTYgKzY0LDE2IEBAIHZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKEFyZ3NU
dXBsZSYmIGFyZ3MKIAogLy8gRGlzcGF0Y2ggZnVuY3Rpb25zIHdpdGggZGVsYXllZCByZXBseSBh
cmd1bWVudHMuCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUg
UiwgdHlwZW5hbWUgQXJnc1R1cGxlLCBzaXplX3QuLi4gQXJnc0luZGV4Pgotdm9pZCBjYWxsTWVt
YmVyRnVuY3Rpb25JbXBsKEMqIG9iamVjdCwgTUYgZnVuY3Rpb24sIFJlZjxSPiYmIGRlbGF5ZWRS
ZXBseSwgQXJnc1R1cGxlJiYgYXJncywgc3RkOjppbmRleF9zZXF1ZW5jZTxBcmdzSW5kZXguLi4+
KQordGVtcGxhdGUgPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBDSCwgdHlwZW5h
bWUgQXJnc1R1cGxlLCBzaXplX3QuLi4gQXJnc0luZGV4Pgordm9pZCBjYWxsTWVtYmVyRnVuY3Rp
b25JbXBsKEMqIG9iamVjdCwgTUYgZnVuY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPENIPiYmIGNv
bXBsZXRpb25IYW5kbGVyLCBBcmdzVHVwbGUmJiBhcmdzLCBzdGQ6OmluZGV4X3NlcXVlbmNlPEFy
Z3NJbmRleC4uLj4pCiB7Ci0gICAgKG9iamVjdC0+KmZ1bmN0aW9uKShzdGQ6OmdldDxBcmdzSW5k
ZXg+KHN0ZDo6Zm9yd2FyZDxBcmdzVHVwbGU+KGFyZ3MpKS4uLiwgV1RGTW92ZShkZWxheWVkUmVw
bHkpKTsKKyAgICAob2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6Z2V0PEFyZ3NJbmRleD4oc3RkOjpm
b3J3YXJkPEFyZ3NUdXBsZT4oYXJncykpLi4uLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBSLCB0eXBl
bmFtZSBBcmdzVHVwbGUsIHR5cGVuYW1lIEFyZ3NJbmRpY2llcyA9IHN0ZDo6bWFrZV9pbmRleF9z
ZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8QXJnc1R1cGxlPjo6dmFsdWU+Pgotdm9pZCBjYWxsTWVt
YmVyRnVuY3Rpb24oQXJnc1R1cGxlJiYgYXJncywgUmVmPFI+JiYgZGVsYXllZFJlcGx5LCBDKiBv
YmplY3QsIE1GIGZ1bmN0aW9uKQordGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5
cGVuYW1lIENILCB0eXBlbmFtZSBBcmdzVHVwbGUsIHR5cGVuYW1lIEFyZ3NJbmRpY2llcyA9IHN0
ZDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8QXJnc1R1cGxlPjo6dmFsdWU+
Pgordm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oQXJnc1R1cGxlJiYgYXJncywgQ29tcGxldGlvbkhh
bmRsZXI8Q0g+JiYgY29tcGxldGlvbkhhbmRsZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7
Ci0gICAgY2FsbE1lbWJlckZ1bmN0aW9uSW1wbChvYmplY3QsIGZ1bmN0aW9uLCBXVEZNb3ZlKGRl
bGF5ZWRSZXBseSksIHN0ZDo6Zm9yd2FyZDxBcmdzVHVwbGU+KGFyZ3MpLCBBcmdzSW5kaWNpZXMo
KSk7CisgICAgY2FsbE1lbWJlckZ1bmN0aW9uSW1wbChvYmplY3QsIGZ1bmN0aW9uLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgc3RkOjpmb3J3YXJkPEFyZ3NUdXBsZT4oYXJncyksIEFyZ3NJ
bmRpY2llcygpKTsKIH0KIAogLy8gRGlzcGF0Y2ggZnVuY3Rpb25zIHdpdGggY29ubmVjdGlvbiBw
YXJhbWV0ZXIgd2l0aCBubyByZXBseSBhcmd1bWVudHMuCkBAIC0xNzQsOCArMTc2LDExIEBAIHZv
aWQgaGFuZGxlTWVzc2FnZURlbGF5ZWQoQ29ubmVjdGlvbiYgY28KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFJlZjx0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHk+IGRlbGF5ZWRSZXBseSA9
IGFkb3B0UmVmKCpuZXcgdHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5KGNvbm5lY3Rpb24sIFdURk1v
dmUocmVwbHlFbmNvZGVyKSkpOwotICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKGFyZ3Vt
ZW50cyksIFdURk1vdmUoZGVsYXllZFJlcGx5KSwgb2JqZWN0LCBmdW5jdGlvbik7CisgICAgdHlw
ZW5hbWUgVDo6RGVsYXllZFJlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0gW3JlcGx5RW5jb2RlciA9
IFdURk1vdmUocmVwbHlFbmNvZGVyKSwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbild
IChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CisgICAgICAgIFQ6OnNlbmQoV1RGTW92ZShyZXBs
eUVuY29kZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBhcmdzLi4uKTsKKyAgICB9OworICAgIAor
ICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSVBD
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmNwcAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkx
LDE1ICs5MSwxNSBAQCBQbHVnaW5Db250cm9sbGVyUHJveHk6On5QbHVnaW5Db250cm9sbGVyCiAg
ICAgICAgIHJlbGVhc2VOUE9iamVjdChtX3BsdWdpbkVsZW1lbnROUE9iamVjdCk7CiB9CiAKLXZv
aWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzZXRJbml0aWFsaXphdGlvblJlcGx5KFJlZjxNZXNz
YWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiYm
IHJlcGx5KQordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnNldEluaXRpYWxpemF0aW9uUmVw
bHkoTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQogewogICAgIEFTU0VSVCghbV9pbml0aWFsaXphdGlvblJlcGx5KTsKICAg
ICBtX2luaXRpYWxpemF0aW9uUmVwbHkgPSBXVEZNb3ZlKHJlcGx5KTsKIH0KIAotUmVmUHRyPE1l
c3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+
IFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKQorTWVzc2Fn
ZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseSBQbHVn
aW5Db250cm9sbGVyUHJveHk6OnRha2VJbml0aWFsaXphdGlvblJlcGx5KCkKIHsKLSAgICByZXR1
cm4gbV9pbml0aWFsaXphdGlvblJlcGx5OworICAgIHJldHVybiBXVEZNb3ZlKG1faW5pdGlhbGl6
YXRpb25SZXBseSk7CiB9CiAKIGJvb2wgUGx1Z2luQ29udHJvbGxlclByb3h5Ojppbml0aWFsaXpl
KGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJhbWV0ZXJzKQpJbmRl
eDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuaAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw4ICs3NSw4IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaXNJbml0aWFsaXppbmcoKSBjb25zdCB7IHJldHVybiBtX2lz
SW5pdGlhbGl6aW5nOyB9CiAgICAgCi0gICAgdm9pZCBzZXRJbml0aWFsaXphdGlvblJlcGx5KFJl
ZjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJl
cGx5PiYmKTsKLSAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVh
dGVQbHVnaW46OkRlbGF5ZWRSZXBseT4gdGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKTsKKyAgICB2
b2lkIHNldEluaXRpYWxpemF0aW9uUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9u
OjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseSYmKTsKKyAgICBNZXNzYWdlczo6V2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5IHRha2VJbml0aWFsaXphdGlv
blJlcGx5KCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFBhaW50VGltZXIoKTsKQEAgLTE4
NCw3ICsxODQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1Zpc2libGU7CiAgICAgYm9vbCBt
X2lzV2luZG93VmlzaWJsZTsKIAotICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiBtX2luaXRpYWxpemF0aW9uUmVwbHk7
CisgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5
ZWRSZXBseSBtX2luaXRpYWxpemF0aW9uUmVwbHk7CiAKICAgICBSZWZQdHI8UGx1Z2luPiBtX3Bs
dWdpbjsKIApJbmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25u
ZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzYsMTEgKzE3NiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZShJ
UEM6CiAgICAgICAgIGRlc3Ryb3lQbHVnaW5Db250cm9sbGVyUHJveHkocGx1Z2luQ29udHJvbGxl
cnNbaV0pOwogfQogCi12b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkZXN0cm95UGx1Z2luKHVp
bnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIGJvb2wgYXN5bmNocm9ub3VzQ3JlYXRpb25JbmNvbXBs
ZXRlLCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpEZXN0cm95UGx1Z2luOjpE
ZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkZXN0cm95
UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIGJvb2wgYXN5bmNocm9ub3VzQ3JlYXRp
b25JbmNvbXBsZXRlLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkRlc3Ryb3lQbHVn
aW46OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIC8vIFdlIHJldHVybiBpbW1lZGlhdGVs
eSBmcm9tIHRoaXMgc3luY2hyb25vdXMgSVBDLiBXZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgcGx1
Z2luIGRlc3RydWN0aW9uIGlzIGp1c3QgYWJvdXQgdG8gc3RhcnQgc28gYXVkaW8gcGxheWJhY2sK
ICAgICAvLyB3aWxsIGZpbmlzaCBzb29uIGFmdGVyIHJldHVybmluZy4gSG93ZXZlciB3ZSBkb24n
dCB3YW50IHRvIHdhaXQgZm9yIGRlc3RydWN0aW9uIHRvIGNvbXBsZXRlIGZ1bGx5IGFzIHRoYXQg
bWF5IHRha2UgYSB3aGlsZS4KLSAgICByZXBseS0+c2VuZCgpOworICAgIHJlcGx5KCk7CiAKICAg
ICAvLyBFbnN1cmUgd2UgZG9uJ3QgY2xhbXAgYW55IHRpbWVycyBkdXJpbmcgZGVzdHJ1Y3Rpb24K
ICAgICBBY3Rpdml0eUFzc2VydGlvbiBhY3Rpdml0eUFzc2VydGlvbihQbHVnaW5Qcm9jZXNzOjpz
aW5nbGV0b24oKS5jb25uZWN0aW9uQWN0aXZpdHkoKSk7CkBAIC0yMjksNyArMjI5LDcgQEAgdm9p
ZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSQogI2VuZGlmCiB9CiAKLXZvaWQg
V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbihjb25zdCBQbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycywgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29u
bmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBy
b2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0
ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6
Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICAvLyBFbnN1cmUgd2Ug
ZG9uJ3QgY2xhbXAgYW55IHRpbWVycyBkdXJpbmcgaW5pdGlhbGl6YXRpb24KICAgICBBY3Rpdml0
eUFzc2VydGlvbiBhY3Rpdml0eUFzc2VydGlvbihQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5j
b25uZWN0aW9uQWN0aXZpdHkoKSk7CkBAIC0yNDYsOSArMjQ2LDkgQEAgdm9pZCBXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKAogICAgICAgICAKICAgICAgICAgLy8gSWYgaXRzIGlu
aXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlIHRoZW4gd2UgbmVlZCB0byByZXNwb25kIHRvIHRoaXMg
bWVzc2FnZSB3aXRoIHRoZSBjb3JyZWN0IGluZm9ybWF0aW9uIGFib3V0IGl0cyBjcmVhdGlvbi4K
ICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgcmVwbHktPnNlbmQodHJ1ZSwgcGx1Z2luQ29u
dHJvbGxlclByb3h5LT53YW50c1doZWVsRXZlbnRzKCksIHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+
cmVtb3RlTGF5ZXJDbGllbnRJRCgpKTsKKyAgICAgICAgcmVwbHkodHJ1ZSwgcGx1Z2luQ29udHJv
bGxlclByb3h5LT53YW50c1doZWVsRXZlbnRzKCksIHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+cmVt
b3RlTGF5ZXJDbGllbnRJRCgpKTsKICNlbHNlCi0gICAgICAgIHJlcGx5LT5zZW5kKHRydWUsIHBs
dWdpbkNvbnRyb2xsZXJQcm94eS0+d2FudHNXaGVlbEV2ZW50cygpLCAwKTsKKyAgICAgICAgcmVw
bHkodHJ1ZSwgcGx1Z2luQ29udHJvbGxlclByb3h5LT53YW50c1doZWVsRXZlbnRzKCksIDApOwog
I2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBX
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKAogICAgIHVpbnQzMl90IHJlbW90ZUxh
eWVyQ2xpZW50SUQgPSAwOwogICAgIGNyZWF0ZVBsdWdpbkludGVybmFsKGNyZWF0aW9uUGFyYW1l
dGVycywgcmVzdWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKICAg
ICAKLSAgICByZXBseS0+c2VuZChyZXN1bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVy
Q2xpZW50SUQpOworICAgIHJlcGx5KHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5
ZXJDbGllbnRJRCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdp
bkFzeW5jaHJvbm91c2x5KGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25Q
YXJhbWV0ZXJzKQpAQCAtMzA4LDggKzMwOCw4IEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OmNyZWF0ZVBsdWdpbkEKICAgICAvLyBzeW5jaHJvbm91cyByZXBseSBpbnN0ZWFkIG9mIHNlbmRp
bmcgdGhlIGFzeW5jaHJvbm91cyByZXBseS4KICAgICBQbHVnaW5Db250cm9sbGVyUHJveHkqIHBs
dWdpbkNvbnRyb2xsZXJQcm94eSA9IG1fcGx1Z2luQ29udHJvbGxlcnMuZ2V0KGNyZWF0aW9uUGFy
YW1ldGVycy5wbHVnaW5JbnN0YW5jZUlEKTsKICAgICBBU1NFUlQocGx1Z2luQ29udHJvbGxlclBy
b3h5KTsKLSAgICBpZiAoUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3Jl
YXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+IGRlbGF5ZWRTeW5jUmVwbHkgPSBwbHVnaW5Db250cm9s
bGVyUHJveHktPnRha2VJbml0aWFsaXphdGlvblJlcGx5KCkpIHsKLSAgICAgICAgZGVsYXllZFN5
bmNSZXBseS0+c2VuZChyZXN1bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50
SUQpOworICAgIGlmIChhdXRvIGRlbGF5ZWRTeW5jUmVwbHkgPSBwbHVnaW5Db250cm9sbGVyUHJv
eHktPnRha2VJbml0aWFsaXphdGlvblJlcGx5KCkpIHsKKyAgICAgICAgZGVsYXllZFN5bmNSZXBs
eShyZXN1bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY5LDkgKzY5LDkgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgog
ICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jV2ViUHJvY2Vz
c0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7Ci0gICAgdm9pZCBjcmVhdGVQbHVnaW4oY29uc3Qg
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVj
dGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgY3JlYXRlUGx1
Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBjcmVh
dGVQbHVnaW5Bc3luY2hyb25vdXNseShjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmKTsK
LSAgICB2b2lkIGRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgYm9vbCBh
c3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlc3Ryb3lQbHVnaW46OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBkZXN0
cm95UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIGJvb2wgYXN5bmNocm9ub3VzQ3Jl
YXRpb25JbmNvbXBsZXRlLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkRlc3Ryb3lQ
bHVnaW46OkRlbGF5ZWRSZXBseSYmKTsKICAgICAKICAgICB2b2lkIGNyZWF0ZVBsdWdpbkludGVy
bmFsKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYsIGJvb2wmIHJlc3VsdCwgYm9vbCYg
d2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QmIHJlbW90ZUxheWVyQ2xpZW50SUQpOwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHJldmlzaW9uIDIyNzY4
MikKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTExOCwxNiArMTE4LDE0IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJh
dGlvbihtZXNzYWcKICAgICBpZiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZToKICAg
ICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKERFTEFZRURfQVRUUklCVVRFKToKICAgICAg
ICAgICAgIHNlbmRfcGFyYW1ldGVycyA9IFsoZnVuY3Rpb25fcGFyYW1ldGVyX3R5cGUoeC50eXBl
LCB4LmtpbmQpLCB4Lm5hbWUpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10KLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdHJ1Y3QgRGVsYXllZFJlcGx5IDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPERlbGF5ZWRSZXBseT4ge1xuJykKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICAgICAgRGVsYXllZFJlcGx5KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+KTtcbicpCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgICAgIH5EZWxheWVkUmVwbHkoKTtcbicpCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCdcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIGJvb2wgc2Vu
ZCglcyk7XG4nICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRl
cnNdKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICBwcml2YXRlOlxuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uO1xuJykKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4g
bV9lbmNvZGVyO1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB9O1xuXG4nKQor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoJykKKyAgICAgICAgICAgIGlmIGxlbihzZW5kX3BhcmFtZXRlcnMp
OgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyVzJyAlICcsICcuam9pbihbJyAnLmpv
aW4oeCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0ZXJzXSkpCisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcpPjsnKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIHNl
bmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJicpCisg
ICAgICAgICAgICBpZiBsZW4oc2VuZF9wYXJhbWV0ZXJzKToKKyAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcsICVzJyAlICcsICcuam9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4gc2VuZF9w
YXJhbWV0ZXJzXSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xuJykKIAogICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgdHlwZWRlZiAlcyBSZXBseTtcbicgJSByZXBseV90eXBlKG1l
c3NhZ2UpKQogCkBAIC01MjMsMjQgKzUyMSwxMiBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5k
bGVyKGZpbGUpOgogICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246CiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnI2lmICVzXG5cbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKIAot
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJXM6OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJlcGx5
KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4gZW5jb2RlcilcbicgJSBtZXNzYWdlLm5hbWUpCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgOiBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSlcbicpCi0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgLCBtX2VuY29kZXIoV1RGTW92ZShlbmNvZGVyKSlc
bicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQotICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnfVxuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyVzOjpEZWxheWVkUmVwbHk6On5EZWxheWVkUmVwbHkoKVxuJyAl
IG1lc3NhZ2UubmFtZSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCi0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pO1xuJykKLSAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdc
bicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdib29sICVzOjpEZWxheWVkUmVwbHk6OnNl
bmQoJXMpXG4nICUgKG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBp
biBzZW5kX3BhcmFtZXRlcnNdKSkpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQot
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVChtX2VuY29kZXIpO1xuJykKLSAg
ICAgICAgICAgIHJlc3VsdCArPSBbJyAgICAqbV9lbmNvZGVyIDw8ICVzO1xuJyAlIHgubmFtZSBm
b3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgYm9vbCBfcmVzdWx0ID0gbV9jb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KFdURk1v
dmUobV9lbmNvZGVyKSk7XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIG1fY29u
bmVjdGlvbiA9IG51bGxwdHI7XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHJl
dHVybiBfcmVzdWx0O1xuJykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OnNl
bmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24nICUgKG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICBpZiBsZW4oc2Vu
ZF9wYXJhbWV0ZXJzKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICVzJyAlICcs
ICcuam9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0ZXJzXSkpCisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcpXG57XG4nKQorICAgICAgICAgICAgcmVzdWx0ICs9IFsnICAg
ICplbmNvZGVyIDw8ICVzO1xuJyAlIHgubmFtZSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFt
ZXRlcnNdCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgY29ubmVjdGlvbi5zZW5kU3lu
Y1JlcGx5KFdURk1vdmUoZW5jb2RlcikpO1xuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
J31cbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjI3NjgyKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjI1LDcgKzIyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgdWludDY0X3QgY3VycmVudE9yaWdpblVz
YWdlOwogICAgICAgICB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZTsKICAgICAgICAgdWlu
dDY0X3QgZXhwZWN0ZWRVc2FnZTsKLSAgICAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiByZXBseTsKKyAgICAgICAg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVw
bHkgcmVwbHk7CiAgICAgfTsKIAogICAgIHN0YXRpYyBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNv
cmRzJiBzaW5nbGV0b24oKTsKQEAgLTIzMyw3ICsyMzMsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlY29yZD4gY3JlYXRlUmVjb3JkKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBv
cmlnaW5JZGVudGlmaWVyLAogICAgICAgICBTdHJpbmcgZGF0YWJhc2VOYW1lLCBTdHJpbmcgZGlz
cGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwKICAgICAgICAgdWludDY0X3QgY3VycmVu
dE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhw
ZWN0ZWRVc2FnZSwgCi0gICAgICAgIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRl
ZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgICAgIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5JiYpOwogCiAgICAg
dm9pZCBhZGQoc3RkOjp1bmlxdWVfcHRyPFJlY29yZD4pOwogICAgIGJvb2wgYXJlQmVpbmdQcm9j
ZXNzZWQoKSBjb25zdCB7IHJldHVybiAhIW1fY3VycmVudFJlY29yZDsgfQpAQCAtMjU2LDcgKzI1
Niw3IEBAIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHMmIEV4Y2VlZGVkRGEKIHN0ZDo6dW5p
cXVlX3B0cjxFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQ+IEV4Y2VlZGVkRGF0
YWJhc2VRdW90YVJlY29yZHM6OmNyZWF0ZVJlY29yZCgKICAgICB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgb3JpZ2luSWRlbnRpZmllciwgU3RyaW5nIGRhdGFiYXNlTmFtZSwgU3RyaW5nIGRpc3Bs
YXlOYW1lLAogICAgIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdp
blVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwKLSAgICB1aW50NjRfdCBleHBl
Y3RlZFVzYWdlLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1
b3RhOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCisgICAgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICBhdXRvIHJlY29yZCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVjb3Jk
PigpOwogICAgIHJlY29yZC0+ZnJhbWVJRCA9IGZyYW1lSUQ7CkBAIC0zOTcyLDIwICszOTcyLDIw
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUKIAogLy8gVUlDbGll
bnQKIAotdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0
YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJl
cywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgUmVmPE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzJiYgd2luZG93RmVhdHVyZXMsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIE1F
U1NBR0VfQ0hFQ0sobV9wcm9jZXNzLT53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEu
ZnJhbWVJRCkpOwogICAgIGF1dG8gb3JpZ2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5m
bzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgbV9wcm9jZXNzLT53ZWJQYWdlKG9y
aWdpbmF0aW5nUGFnZUlEKSk7CiAKICAgICBhdXRvIG1haW5GcmFtZVVSTCA9IG1fbWFpbkZyYW1l
LT51cmwoKTsKIAotICAgIG1fdWlDbGllbnQtPmNyZWF0ZU5ld1BhZ2UoKnRoaXMsIFdURk1vdmUo
b3JpZ2luYXRpbmdGcmFtZUluZm8pLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHdpbmRvd0Zl
YXR1cmVzKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmUHRyPFdlYlBhZ2VQcm94eT4odGhpcyksIG1haW5GcmFtZVVSTCwgcmVxdWVzdCwg
cmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkgewor
ICAgIG1fdWlDbGllbnQtPmNyZWF0ZU5ld1BhZ2UoKnRoaXMsIFdURk1vdmUob3JpZ2luYXRpbmdG
cmFtZUluZm8pLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHdpbmRvd0ZlYXR1cmVzKSwgV1RG
TW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIG1haW5GcmFtZVVSTCwgcmVxdWVzdCwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0o
UmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkgewogICAgICAgICBpZiAoIW5ld1BhZ2UpIHsK
LSAgICAgICAgICAgIHJlcGx5LT5zZW5kKDAsIHsgfSk7CisgICAgICAgICAgICByZXBseSgwLCB7
IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcmVwbHktPnNl
bmQobmV3UGFnZS0+cGFnZUlEKCksIG5ld1BhZ2UtPmNyZWF0aW9uUGFyYW1ldGVycygpKTsKKyAg
ICAgICAgcmVwbHkobmV3UGFnZS0+cGFnZUlEKCksIG5ld1BhZ2UtPmNyZWF0aW9uUGFyYW1ldGVy
cygpKTsKIAogICAgICAgICBXZWJzaXRlRGF0YVN0b3JlOjpjbG9uZVNlc3Npb25EYXRhKCp0aGlz
LCAqbmV3UGFnZSk7CiAgICAgICAgIG5ld1BhZ2UtPm1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0lu
TmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGhvc3RzQXJlRXF1YWwoVVJMKFBhcnNlZFVS
TFN0cmluZywgbWFpbkZyYW1lVVJMKSwgcmVxdWVzdC51cmwoKSk7CkBAIC00MDIxLDcgKzQwMjEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2VQYWdlKGJvb2wgc3RvcFJlCiAgICAgbV91aUNs
aWVudC0+Y2xvc2UodGhpcyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0
eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVkUmVwbHkmJiBy
ZXBseSkKIHsKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUo
ZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CkBAIC00MDM0LDExICs0MDM0LDEx
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQodWkKICAgICAgICAgICAg
IGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAg
IH0KICAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0QWxlcnQodGhpcywgbWVzc2FnZSwgZnJh
bWUsIHNlY3VyaXR5T3JpZ2luLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gewotICAgICAgICBy
ZXBseS0+c2VuZCgpOworICAgICAgICByZXBseSgpOwogICAgIH0pOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBS
ZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRS
ZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0Q29uZmlybSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFT
Y3JpcHRDb25maXJtOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBXZWJGcmFtZVByb3h5
KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVD
SyhmcmFtZSk7CkBAIC00MDUyLDExICs0MDUyLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5K
YXZhU2NyaXB0Q29uZmlybSgKICAgICB9CiAKICAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0
Q29uZmlybSh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFtyZXBseSA9IFdU
Rk1vdmUocmVwbHkpXShib29sIHJlc3VsdCkgewotICAgICAgICByZXBseS0+c2VuZChyZXN1bHQp
OworICAgICAgICByZXBseShyZXN1bHQpOwogICAgIH0pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdFByb21wdCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZGVmYXVsdFZhbHVlLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNj
cmlwdFByb21wdDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1
bkphdmFTY3JpcHRQcm9tcHQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IGRlZmF1bHRWYWx1ZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21w
dDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBt
X3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwpA
QCAtNDA3MCw3ICs0MDcwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9t
cHQodQogICAgIH0KIAogICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRQcm9tcHQodGhpcywg
bWVzc2FnZSwgZGVmYXVsdFZhbHVlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFtyZXBseSA9IFdU
Rk1vdmUocmVwbHkpXShjb25zdCBTdHJpbmcmIHJlc3VsdCkgewotICAgICAgICByZXBseS0+c2Vu
ZChyZXN1bHQpOworICAgICAgICByZXBseShyZXN1bHQpOwogICAgIH0pOwogfQogCkBAIC00MTM4
LDI0ICs0MTM4LDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1bmF2YWlsYWJsZVBsdWdpbkJ1dHQK
ICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2lmIEVOQUJMRShXRUJH
TCkKLXZvaWQgV2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChVUkwmJiB1cmwsIFJlZjxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5PiYm
IHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVybCwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYm
IHJlcGx5KQogewogICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKICAgICAgICAgbV9uYXZp
Z2F0aW9uQ2xpZW50LT53ZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCwgW3JlcGx5ID0gV1RGTW92
ZShyZXBseSldKFdlYkdMTG9hZFBvbGljeSBwb2xpY3kpIHsKLSAgICAgICAgICAgIHJlcGx5LT5z
ZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKKyAgICAgICAgICAgIHJlcGx5KHN0
YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKICAgICAgICAgfSk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIHJlcGx5LT5zZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+
d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwpKSk7CisgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0
PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwpKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYg
dXJsLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJM
OjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVzb2x2ZVdlYkdM
UG9saWN5Rm9yVVJMKFVSTCYmIHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdl
YkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBpZiAobV9uYXZp
Z2F0aW9uQ2xpZW50KSB7CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cmVzb2x2ZVdlYkdM
TG9hZFBvbGljeSgqdGhpcywgdXJsLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oV2ViR0xMb2Fk
UG9saWN5IHBvbGljeSkgewotICAgICAgICAgICAgcmVwbHktPnNlbmQoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHBvbGljeSkpOworICAgICAgICAgICAgcmVwbHkoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHBvbGljeSkpOwogICAgICAgICB9KTsKICAgICB9IGVsc2UKLSAgICAgICAgcmVwbHktPnNlbmQo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fbG9hZGVyQ2xpZW50LT5yZXNvbHZlV2ViR0xMb2FkUG9s
aWN5KCp0aGlzLCB1cmwpKSk7CisgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Piht
X2xvYWRlckNsaWVudC0+cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSkpOwogfQog
I2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApAQCAtNDE2NCwxMCArNDE2NCwxMCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0VG9vbGJhcnNBcmVWaXNpYmxlCiAgICAgbV91aUNsaWVudC0+c2V0VG9v
bGJhcnNBcmVWaXNpYmxlKCp0aGlzLCB0b29sYmFyc0FyZVZpc2libGUpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0VG9vbGJhcnNBcmVWaXNpYmxlKFJlZjxNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGU6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpnZXRUb29sYmFyc0FyZVZpc2libGUoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBt
X3VpQ2xpZW50LT50b29sYmFyc0FyZVZpc2libGUoKnRoaXMsIFtyZXBseSA9IFdURk1vdmUocmVw
bHkpXShib29sIHZpc2libGUpIHsKLSAgICAgICAgcmVwbHktPnNlbmQodmlzaWJsZSk7CisgICAg
ICAgIHJlcGx5KHZpc2libGUpOwogICAgIH0pOwogfQogCkBAIC00MTc2LDEwICs0MTc2LDEwIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNZW51QmFySXNWaXNpYmxlKGIKICAgICBtX3VpQ2xpZW50
LT5zZXRNZW51QmFySXNWaXNpYmxlKCp0aGlzLCBtZW51QmFySXNWaXNpYmxlKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmdldE1lbnVCYXJJc1Zpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpnZXRNZW51QmFySXNWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkdldE1lbnVCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIG1fdWlD
bGllbnQtPm1lbnVCYXJJc1Zpc2libGUoKnRoaXMsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAo
Ym9vbCB2aXNpYmxlKSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKHZpc2libGUpOworICAgICAgICBy
ZXBseSh2aXNpYmxlKTsKICAgICB9KTsKIH0KIApAQCAtNDE4OCwxMCArNDE4OCwxMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0U3RhdHVzQmFySXNWaXNpYmxlCiAgICAgbV91aUNsaWVudC0+c2V0
U3RhdHVzQmFySXNWaXNpYmxlKCp0aGlzLCBzdGF0dXNCYXJJc1Zpc2libGUpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0U3RhdHVzQmFySXNWaXNpYmxlKFJlZjxNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3Zv
aWQgV2ViUGFnZVByb3h5OjpnZXRTdGF0dXNCYXJJc1Zpc2libGUoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6R2V0U3RhdHVzQmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAg
ICBtX3VpQ2xpZW50LT5zdGF0dXNCYXJJc1Zpc2libGUoKnRoaXMsIFtyZXBseSA9IFdURk1vdmUo
cmVwbHkpXSAoYm9vbCB2aXNpYmxlKSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKHZpc2libGUpOwor
ICAgICAgICByZXBseSh2aXNpYmxlKTsKICAgICB9KTsKIH0KIApAQCAtNDIwNSwxMCArNDIwNSwx
MCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0V2luZG93RnJhbWUoY29uc3QgCiAgICAgbV91aUNs
aWVudC0+c2V0V2luZG93RnJhbWUoKnRoaXMsIG1fcGFnZUNsaWVudC5jb252ZXJ0VG9EZXZpY2VT
cGFjZShuZXdXaW5kb3dGcmFtZSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2luZG93
RnJhbWUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lOjpEZWxheWVk
UmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2luZG93RnJhbWUoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6R2V0V2luZG93RnJhbWU6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQog
ewogICAgIG1fdWlDbGllbnQtPndpbmRvd0ZyYW1lKCp0aGlzLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpXSAoRmxvYXRSZWN0IGZy
YW1lKSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKG1fcGFnZUNsaWVudC5jb252ZXJ0VG9Vc2VyU3Bh
Y2UoZnJhbWUpKTsKKyAgICAgICAgcmVwbHkobV9wYWdlQ2xpZW50LmNvbnZlcnRUb1VzZXJTcGFj
ZShmcmFtZSkpOwogICAgIH0pOwogfQogCkBAIC00MjE3LDE0ICs0MjE3LDE0IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRXaW5kb3dGcmFtZVdpdGhDYWwKICAgICBtX3VpQ2xpZW50LT53aW5kb3dG
cmFtZSgqdGhpcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6c2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgc2NyZWVuUG9pbnQsIFJl
ZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JlZW5Ub1Jvb3RWaWV3OjpEZWxheWVkUmVwbHk+
JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQ
b2ludCYgc2NyZWVuUG9pbnQsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmVlblRvUm9vdFZp
ZXc6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIHJlcGx5LT5zZW5kKG1fcGFnZUNsaWVu
dC5zY3JlZW5Ub1Jvb3RWaWV3KHNjcmVlblBvaW50KSk7CisgICAgcmVwbHkobV9wYWdlQ2xpZW50
LnNjcmVlblRvUm9vdFZpZXcoc2NyZWVuUG9pbnQpKTsKIH0KICAgICAKLXZvaWQgV2ViUGFnZVBy
b3h5Ojpyb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmIHZpZXdSZWN0LCBSZWY8TWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZpZXdUb1NjcmVlbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5
KQordm9pZCBXZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9TY3JlZW4oY29uc3QgSW50UmVjdCYgdmll
d1JlY3QsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJvb3RWaWV3VG9TY3JlZW46OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQogewotICAgIHJlcGx5LT5zZW5kKG1fcGFnZUNsaWVudC5yb290Vmlld1Rv
U2NyZWVuKHZpZXdSZWN0KSk7CisgICAgcmVwbHkobV9wYWdlQ2xpZW50LnJvb3RWaWV3VG9TY3Jl
ZW4odmlld1JlY3QpKTsKIH0KICAgICAKICNpZiBQTEFURk9STShJT1MpCkBAIC00MjM5LDcgKzQy
MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpCiB9CiAjZW5k
aWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OkRlbGF5ZWRSZXBseT4gcmVwbHkpCit2b2lkIFdlYlBh
Z2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
OjpEZWxheWVkUmVwbHkgcmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3By
b2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwpAQCAt
NDI1Miw3ICs0MjUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZp
cgogICAgICAgICAgICAgYXV0b21hdGlvblNlc3Npb24tPndpbGxTaG93SmF2YVNjcmlwdERpYWxv
ZygqdGhpcyk7CiAgICAgfQogCi0gICAgbV91aUNsaWVudC0+cnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgW3JlcGx5XShib29s
IHJlc3VsdCkgeyByZXBseS0+c2VuZChyZXN1bHQpOyB9KTsKKyAgICBtX3VpQ2xpZW50LT5ydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodGhpcywgbWVzc2FnZSwgZnJhbWUsIHNlY3VyaXR5T3Jp
Z2luLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oYm9vbCByZXN1bHQpIHsgcmVwbHkocmVzdWx0
KTsgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRp
ZXMoY29uc3QgVmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKQpAQCAtNTkyMiw3ICs1OTIyLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdAogICAgICAgICBtX2xvYWRl
ckNsaWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSgqdGhpcywg
KmZyYW1lLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBl
eHBlY3RlZFVzYWdlLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFz
ZVF1b3RhOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVk
ZWREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdl
LCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzJiByZWNvcmRz
ID0gRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6c2luZ2xldG9uKCk7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OlJlY29yZD4gbmV3UmVjb3Jk
ID0gcmVjb3Jkcy5jcmVhdGVSZWNvcmQoZnJhbWVJRCwKQEAgLTU5MzMsMjYgKzU5MzMsMjMgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YQogICAgIGlmIChyZWNvcmRz
LmFyZUJlaW5nUHJvY2Vzc2VkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEV4Y2VlZGVkRGF0
YWJhc2VRdW90YVJlY29yZHM6OlJlY29yZCogcmVjb3JkID0gcmVjb3Jkcy5uZXh0KCk7Ci0gICAg
d2hpbGUgKHJlY29yZCkgeworICAgIHdoaWxlIChhdXRvKiByZWNvcmQgPSByZWNvcmRzLm5leHQo
KSkgewogICAgICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUo
cmVjb3JkLT5mcmFtZUlEKTsKICAgICAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKLSAgICAg
ICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIocmVj
b3JkLT5vcmlnaW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgICAgIGF1dG8g
Y3VycmVudFJlcGx5ID0gcmVjb3JkLT5yZXBseTsKLSAgICAgICAgbV91aUNsaWVudC0+ZXhjZWVk
ZWREYXRhYmFzZVF1b3RhKHRoaXMsIGZyYW1lLCBvcmlnaW4uZ2V0KCksCi0gICAgICAgICAgICBy
ZWNvcmQtPmRhdGFiYXNlTmFtZSwgcmVjb3JkLT5kaXNwbGF5TmFtZSwgcmVjb3JkLT5jdXJyZW50
UXVvdGEsCi0gICAgICAgICAgICByZWNvcmQtPmN1cnJlbnRPcmlnaW5Vc2FnZSwgcmVjb3JkLT5j
dXJyZW50RGF0YWJhc2VVc2FnZSwgcmVjb3JkLT5leHBlY3RlZFVzYWdlLAotICAgICAgICAgICAg
W2N1cnJlbnRSZXBseV0odW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhKSB7IGN1cnJlbnRSZXBs
eS0+c2VuZChuZXdRdW90YSk7IH0pOwotCi0gICAgICAgIHJlY29yZCA9IHJlY29yZHMubmV4dCgp
OworICAgICAgICBhdXRvIG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIocmVjb3JkLT5vcmlnaW5JZGVu
dGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgICAgIG1fdWlDbGllbnQtPmV4Y2VlZGVk
RGF0YWJhc2VRdW90YSh0aGlzLCBmcmFtZSwgb3JpZ2luLnB0cigpLCByZWNvcmQtPmRhdGFiYXNl
TmFtZSwgcmVjb3JkLT5kaXNwbGF5TmFtZSwgcmVjb3JkLT5jdXJyZW50UXVvdGEsIHJlY29yZC0+
Y3VycmVudE9yaWdpblVzYWdlLCByZWNvcmQtPmN1cnJlbnREYXRhYmFzZVVzYWdlLCByZWNvcmQt
PmV4cGVjdGVkVXNhZ2UsIFtjdXJyZW50UmVwbHkgPSBXVEZNb3ZlKHJlY29yZC0+cmVwbHkpXSh1
bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEpIHsKKyAgICAgICAgICAgIGN1cnJlbnRSZXBseShu
ZXdRdW90YSk7CisgICAgICAgIH0pOwogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVu
dGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQs
IFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVhY2hl
ZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZp
ZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YTo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0
eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmln
aW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBtX3VpQ2xpZW50LT5yZWFjaGVk
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHRoaXMsIHNlY3VyaXR5T3JpZ2luLmdldCgpLCBj
dXJyZW50UXVvdGEsIHRvdGFsQnl0ZXNOZWVkZWQsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSh1
bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEpIHsgcmVwbHktPnNlbmQobmV3UXVvdGEpOyB9KTsK
KyAgICBtX3VpQ2xpZW50LT5yZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHRoaXMs
IHNlY3VyaXR5T3JpZ2luLmdldCgpLCBjdXJyZW50UXVvdGEsIHRvdGFsQnl0ZXNOZWVkZWQsIFty
ZXBseSA9IFdURk1vdmUocmVwbHkpXSh1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEpIHsKKyAg
ICAgICAgcmVwbHkobmV3UXVvdGEpOworICAgIH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IGdlb2xvY2F0aW9u
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIyNzY4MikKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjExLDcgKzEyMTEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEZvY3VzKGJvb2wgZm9jdXNl
ZCk7CiAgICAgdm9pZCBzZXRXaW5kb3dGcmFtZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsK
LSAgICB2b2lkIGdldFdpbmRvd0ZyYW1lKFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRX
aW5kb3dGcmFtZTo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFdpbmRvd0ZyYW1lKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lOjpEZWxheWVkUmVwbHkmJik7CiAg
ICAgdm9pZCBnZXRXaW5kb3dGcmFtZVdpdGhDYWxsYmFjayhGdW5jdGlvbjx2b2lkKFdlYkNvcmU6
OkZsb2F0UmVjdCk+JiYpOwogCiAgICAgYm9vbCBpc1Jlc291cmNlQ2FjaGluZ0Rpc2FibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1Jlc291cmNlQ2FjaGluZ0Rpc2FibGVkOyB9CkBAIC0xMzY2LDEx
ICsxMzY2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpOwog
CiAgICAgLy8gVUkgY2xpZW50Ci0gICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5m
b0RhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYs
IFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHk+
JiYpOworICAgIHZvaWQgY3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBzaG93
UGFnZSgpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIFJlZjxNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBseT4mJik7
Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBSZWY8TWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBseT4mJik7Ci0g
ICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0OjpEZWxheWVkUmVw
bHk+JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5JiYpOworICAg
IHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIHJ1
bkphdmFTY3JpcHRQcm9tcHQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZv
aWQgc2V0U3RhdHVzVGV4dChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIG1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50KFdlYkhpdFRlc3RSZXN1bHREYXRhJiYsIHVpbnQzMl90IG1vZGlmaWVycywgVXNl
ckRhdGEmJik7CiAKQEAgLTEzNzgsMjkgKzEzNzgsMjkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVu
YXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBvcGFxdWVQbHVnaW5VbmF2YWls
YWJpbGl0eVJlYXNvbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwbHVn
aW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc1BhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZyk7CiAjZW5k
aWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKFdFQkdMKQotICAg
IHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIFJlZjxNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5PiYmKTsKLSAgICB2b2lk
IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwmJiwgUmVmPE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5PiYmKTsK
KyAgICB2b2lkIHdlYkdMUG9saWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCYmLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQg
cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCYmLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmKTsKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCR0wpCiAgICAgdm9pZCBzZXRUb29sYmFyc0FyZVZpc2libGUoYm9vbCB0
b29sYmFyc0FyZVZpc2libGUpOwotICAgIHZvaWQgZ2V0VG9vbGJhcnNBcmVWaXNpYmxlKFJlZjxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGU6OkRlbGF5ZWRSZXBs
eT4mJik7CisgICAgdm9pZCBnZXRUb29sYmFyc0FyZVZpc2libGUoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBz
ZXRNZW51QmFySXNWaXNpYmxlKGJvb2wgbWVudUJhcklzVmlzaWJsZSk7Ci0gICAgdm9pZCBnZXRN
ZW51QmFySXNWaXNpYmxlKFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNW
aXNpYmxlOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0TWVudUJhcklzVmlzaWJsZShN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHkm
Jik7CiAgICAgdm9pZCBzZXRTdGF0dXNCYXJJc1Zpc2libGUoYm9vbCBzdGF0dXNCYXJJc1Zpc2li
bGUpOwotICAgIHZvaWQgZ2V0U3RhdHVzQmFySXNWaXNpYmxlKFJlZjxNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9p
ZCBnZXRTdGF0dXNCYXJJc1Zpc2libGUoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3RhdHVz
QmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBzZXRJc1Jlc2l6YWJsZShi
b29sIGlzUmVzaXphYmxlKTsKLSAgICB2b2lkIHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHNjcmVlblBvaW50LCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2Ny
ZWVuVG9Sb290Vmlldzo6RGVsYXllZFJlcGx5PiYmKTsKLSAgICB2b2lkIHJvb3RWaWV3VG9TY3Jl
ZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlld1JlY3QsIFJlZjxNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSb290Vmlld1RvU2NyZWVuOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgc2Ny
ZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2NyZWVuUG9pbnQsIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNjcmVlblRvUm9vdFZpZXc6OkRlbGF5ZWRSZXBseSYmKTsKKyAg
ICB2b2lkIHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlld1JlY3Qs
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJvb3RWaWV3VG9TY3JlZW46OkRlbGF5ZWRSZXBseSYm
KTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgdm9pZCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290
Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2NyZWVuUG9pbnQsIFdlYkNvcmU6OkludFBv
aW50JiB3aW5kb3dQb2ludCk7CiAgICAgdm9pZCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVl
bihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgV2ViQ29yZTo6SW50UmVjdCYgcmVz
dWx0KTsKICNlbmRpZgotICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5Pik7CisgICAgdm9pZCBydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OkRlbGF5ZWRSZXBseSk7CiAgICAgdm9pZCBk
aWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1
dGVzJik7CiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKCk7CiAgICAgdm9pZCBydW5PcGVuUGFuZWwo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29u
c3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwogICAgIHZvaWQgcHJpbnRGcmFtZSh1
aW50NjRfdCBmcmFtZUlEKTsKLSAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50
UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFi
YXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4mJik7Ci0gICAgdm9pZCBy
ZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVk
LCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YTo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90
YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRf
dCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3Vy
cmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5JiYpOworICAgIHZv
aWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdp
bklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05l
ZWRlZCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YTo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVy
bWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IFN0cmluZyBvcmlnaW5JZGVudGlmaWVyKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lv
biAyMjc2ODcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwMiw3ICs1MDIsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBX
ZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgcmV0dXJuICptX25ldHdvcmtQcm9jZXNzOwogfQogCi12
b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQ
cm94eSYgbmV0d29ya1Byb2Nlc3NQcm94eSwgVmVjdG9yPFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+JiYgcGVu
ZGluZ1JlcGxpZXMpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQo
TmV0d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1Byb2Nlc3NQcm94eSwgVmVjdG9yPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5PiYmIHBlbmRpbmdSZXBsaWVzKQogewogICAgIG5ldHdvcmtQcm9jZXNzRmFpbGVkVG9MYXVu
Y2gobmV0d29ya1Byb2Nlc3NQcm94eSk7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtQcm9jZXNzKTsK
QEAgLTUyOCw3ICs1MjgsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0Zh
aWxlCiAgICAgbV9uZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVw
bHkpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwogICAgIEFT
U0VSVChtX25ldHdvcmtQcm9jZXNzKTsKQEAgLTU3Myw3ICs1NzMsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjplbnN1cmVTdG9yYWdlUHJvY2VzCiAgICAgbV9zdG9yYWdlUHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkluaXRpYWxpemVXZWJzaXRlRGF0YVN0b3JlKHJlbGV2
YW50RGF0YVN0b3JlLT5zdG9yYWdlUHJvY2Vzc1BhcmFtZXRlcnMoKSksIDApOwogfQogCi12b2lk
IFdlYlByb2Nlc3NQb29sOjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oYm9vbCBpc1NlcnZp
Y2VXb3JrZXJQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklELCBSZWY8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRTdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb24oYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBp
bml0aWFsU2Vzc2lvbklELCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIGVuc3VyZVN0b3Jh
Z2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ05v
bkRlZmF1bHREYXRhU3RvcmVGb3JTZXNzaW9uSUQoaW5pdGlhbFNlc3Npb25JRCkpOwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDIyNzY4
MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMxNCwxNCArMzE0LDE0IEBAIHB1YmxpYzoKICAgICAvLyBOZXR3b3JrIFByb2Nl
c3MgTWFuYWdlbWVudAogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkmIGVuc3VyZU5ldHdvcmtQcm9j
ZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGhXZWJzaXRlRGF0YVN0b3JlID0gbnVsbHB0cik7CiAg
ICAgTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3MoKSB7IHJldHVybiBtX25ldHdv
cmtQcm9jZXNzLmdldCgpOyB9Ci0gICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29y
a1Byb2Nlc3NQcm94eSYsIFZlY3RvcjxSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiYmKTsKKyAgICB2b2lkIG5l
dHdvcmtQcm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgVmVjdG9yPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5PiYmKTsKICAgICB2b2lkIG5ldHdvcmtQcm9jZXNzRmFpbGVkVG9MYXVuY2goTmV0d29ya1By
b2Nlc3NQcm94eSYpOwogCi0gICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVm
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseSYmKTsKIAogICAgIHZvaWQgZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRXZWJzaXRl
RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUqIHJlbGV2YW50RGF0YVN0b3JlKTsKICAgICBTdG9y
YWdlUHJvY2Vzc1Byb3h5KiBzdG9yYWdlUHJvY2VzcygpIHsgcmV0dXJuIG1fc3RvcmFnZVByb2Nl
c3MuZ2V0KCk7IH0KLSAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihib29sIGlz
U2VydmljZVdvcmtlclByb2Nlc3MsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQsIFJl
ZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24o
Ym9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lv
bklELCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHN0b3JhZ2VQcm9jZXNzQ3Jhc2hlZChTdG9y
YWdlUHJvY2Vzc1Byb3h5Kik7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQg
ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzKFN0b3JhZ2VQ
cm9jZXNzUHJveHkmLCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDIyNzY4
MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU4OSwxOCArNTg5LDE4IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRQ
bHVnaW5zKGJvb2wgcmUKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotdm9pZCBXZWJQcm9jZXNzUHJveHk6Omdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgUmVm
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpE
ZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYg
cmVwbHkpCiB7CiAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLmdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKHBsdWdpblByb2Nlc3NUb2tlbiwgV1RGTW92ZShyZXBseSkpOwog
fQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQcm9jZXNzUHJveHk6Omdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIG1f
cHJvY2Vzc1Bvb2wtPmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXVEZNb3ZlKHJlcGx5KSk7
CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24o
UEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5
KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihQQUw6
OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklELCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAg
IG1fcHJvY2Vzc1Bvb2wtPmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihpc1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzKCksIGluaXRpYWxTZXNzaW9uSUQsIFdURk1vdmUocmVwbHkpKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyMjc2
ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQxLDEwICsyNDEsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFBsdWdp
bnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIHBsdWdpbnMsIFZl
Y3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYgYXBwbGljYXRpb25QbHVnaW5zKTsKICNlbmRpZiAv
LyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKLSAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdp
blByb2Nlc3NUb2tlbiwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYp
OwogI2VuZGlmCi0gICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5PiYmKTsKLSAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihQQUw6OlNl
c3Npb25JRCBpbml0aWFsU2Vzc2lvbklELCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQg
Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgZ2V0
U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQs
IE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5JiYpOwogCiAgICAgYm9vbCBwbGF0Zm9ybUlzQmVpbmdEZWJ1Z2dlZCgpIGNv
bnN0OwogICAgIGJvb2wgc2hvdWxkQWxsb3dOb25WYWxpZEluamVjdGVkQ29kZSgpIGNvbnN0OwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDcsNyArMTA3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNo
dQogICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgdGhpcy0+Y29ubmVjdGlvbigpID09ICZj
b25uZWN0aW9uKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBs
eSkKIHsKICAgICBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5hcHBlbmQoV1RGTW92ZShyZXBs
eSkpOwogCkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3
b3JrUHJvY2VzcwogewogICAgIGNsZWFyQ2FsbGJhY2tTdGF0ZXMoKTsKIAotICAgIFZlY3RvcjxS
ZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+PiBwZW5kaW5nUmVwbGllczsKKyAgICBWZWN0b3I8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+
IHBlbmRpbmdSZXBsaWVzOwogICAgIHBlbmRpbmdSZXBsaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIHJl
cGx5IDogbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMpCiAgICAgICAgIHBlbmRpbmdSZXBsaWVz
LmFwcGVuZChXVEZNb3ZlKHJlcGx5KSk7CkBAIC0xODYsMTIgKzE4NiwxMiBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzCiB7CiAgICAgLy8gVGhlIG5ldHdvcmsgcHJv
Y2VzcyBtdXN0IGhhdmUgY3Jhc2hlZCBvciBleGl0ZWQsIHNlbmQgYW55IHBlbmRpbmcgc3luYyBy
ZXBsaWVzIHdlIG1pZ2h0IGhhdmUuCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVw
bGllcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVu
ZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworICAgICAgICBhdXRvIHJlcGx5ID0g
bV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNpZiBVU0UoVU5JWF9E
T01BSU5fU09DS0VUUykKLSAgICAgICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KCkpOwor
ICAgICAgICByZXBseShJUEM6OkF0dGFjaG1lbnQoKSk7CiAjZWxpZiBPUyhEQVJXSU4pCi0gICAg
ICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VO
RCkpOworICAgICAgICByZXBseShJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZF
X1NFTkQpKTsKICNlbHNlCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKQEAgLTI2
MiwxMiArMjYyLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d28K
ICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSk7CiAKICAg
ICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24gcmVwbHkuCi0gICAgUmVmUHRy
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJz
dCgpOworICAgIGF1dG8gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmly
c3QoKTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIHJlcGx5LT5zZW5kKGNv
bm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICByZXBseShjb25uZWN0aW9uSWRlbnRpZmllcik7CiAj
ZWxpZiBPUyhEQVJXSU4pCi0gICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rp
b25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKKyAgICByZXBs
eShJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19U
WVBFX01PVkVfU0VORCkpOwogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcg
KzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8TmV0d29ya1Byb2Nlc3NQcm94eT4gY3Jl
YXRlKFdlYlByb2Nlc3NQb29sJik7CiAgICAgfk5ldHdvcmtQcm9jZXNzUHJveHkoKTsKIAotICAg
IHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7Cisg
ICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAKICAg
ICBEb3dubG9hZFByb3h5KiBjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpOwogCkBAIC0xNDIsNyArMTQyLDcgQEAgcHJpdmF0ZToKICAgICBXZWJQcm9j
ZXNzUG9vbCYgbV9wcm9jZXNzUG9vbDsKICAgICAKICAgICB1bnNpZ25lZCBtX251bVBlbmRpbmdD
b25uZWN0aW9uUmVxdWVzdHM7Ci0gICAgRGVxdWU8UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4gbV9wZW5kaW5n
Q29ubmVjdGlvblJlcGxpZXM7CisgICAgRGVxdWU8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IG1fcGVuZGluZ0Nvbm5l
Y3Rpb25SZXBsaWVzOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lk
IChXZWJzaXRlRGF0YSk+PiBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tzOwogICAg
IEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IG1fcGVuZGluZ0RlbGV0
ZVdlYnNpdGVEYXRhQ2FsbGJhY2tzOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAJKHJldmlzaW9uIDIy
NzY4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01h
bmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHVpbnQ2NF90IFBsdWdp
blByb2Nlc3NNYW5hZ2VyOjpwbHVnaW5Qcm8KICAgICByZXR1cm4gdG9rZW47CiB9CiAKLXZvaWQg
UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90
IHBsdWdpblByb2Nlc3NUb2tlbiwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFBsdWdp
blByb2Nlc3NNYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVn
aW5Qcm9jZXNzVG9rZW4sIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBBU1NFUlQocGx1Z2lu
UHJvY2Vzc1Rva2VuKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAkocmV2aXNpb24gMjI3NjgyKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHVpbnQ2NF90IHBs
dWdpblByb2Nlc3NUb2tlbihjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgUGx1Z2luUHJvY2Vzc1R5
cGUsIFBsdWdpblByb2Nlc3NTYW5kYm94UG9saWN5KTsKIAotICAgIHZvaWQgZ2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBSZWY8TWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4mJik7CisgICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVn
aW5Qcm9jZXNzVG9rZW4sIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCByZW1vdmVQbHVnaW5Qcm9j
ZXNzUHJveHkoUGx1Z2luUHJvY2Vzc1Byb3h5Kik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURh
dGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0
aW9uPiwgV1RGOjpGdW5jdGlvbjx2b2lkIChWZWN0b3I8U3RyaW5nPik+JiYgY29tcGxldGlvbkhh
bmRsZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnByb2Nlc3NX
aWxsU2h1dAogCiAvLyBBc2tzIHRoZSBwbHVnLWluIHByb2Nlc3MgdG8gY3JlYXRlIGEgbmV3IGNv
bm5lY3Rpb24gdG8gYSB3ZWIgcHJvY2Vzcy4gVGhlIGNvbm5lY3Rpb24gaWRlbnRpZmllciB3aWxs
IGJlIAogLy8gZW5jb2RlZCBpbiB0aGUgZ2l2ZW4gYXJndW1lbnQgZW5jb2RlciBhbmQgc2VudCBi
YWNrIHRvIHRoZSBjb25uZWN0aW9uIG9mIHRoZSBnaXZlbiB3ZWIgcHJvY2Vzcy4KLXZvaWQgUGx1
Z2luUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4mJiByZXBseSkKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgbV9wZW5kaW5nQ29ubmVjdGlvblJl
cGxpZXMuYXBwZW5kKFdURk1vdmUocmVwbHkpKTsKIApAQCAtMTU5LDEyICsxNTksMTIgQEAgdm9p
ZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3NDcgogewogICAgIC8vIFRoZSBwbHVn
LWluIHByb2Nlc3MgbXVzdCBoYXZlIGNyYXNoZWQgb3IgZXhpdGVkLCBzZW5kIGFueSBwZW5kaW5n
IHN5bmMgcmVwbGllcyB3ZSBtaWdodCBoYXZlLgogICAgIHdoaWxlICghbV9wZW5kaW5nQ29ubmVj
dGlvblJlcGxpZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBs
eSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworICAgICAgICBhdXRv
IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNpZiBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAgICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2ht
ZW50KCksIGZhbHNlKTsKKyAgICAgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KCksIGZhbHNlKTsK
ICNlbGlmIE9TKERBUldJTikKLSAgICAgICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KDAs
IE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgZmFsc2UpOworICAgICAgICByZXBseShJUEM6OkF0
dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpLCBmYWxzZSk7CiAjZWxzZQogICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCB2b2lk
IFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvCiAgICAgQVNTRVJUKCFtX3BlbmRp
bmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCiAgICAgLy8gR3JhYiB0aGUgZmlyc3Qg
cGVuZGluZyBjb25uZWN0aW9uIHJlcGx5LgotICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9
IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworICAgIGF1dG8gcmVwbHkg
PSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklY
X0RPTUFJTl9TT0NLRVRTKQotICAgIHJlcGx5LT5zZW5kKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBz
dXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKKyAgICByZXBseShjb25u
ZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
bik7CiAjZWxpZiBPUyhEQVJXSU4pCi0gICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KGNv
bm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpLCBzdXBw
b3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKKyAgICByZXBseShJUEM6OkF0
dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVf
U0VORCksIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwogI2Vsc2UK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDIy
NzY4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogCiAgICAgLy8g
QXNrcyB0aGUgcGx1Zy1pbiBwcm9jZXNzIHRvIGNyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIHRvIGEg
d2ViIHByb2Nlc3MuIFRoZSBjb25uZWN0aW9uIGlkZW50aWZpZXIgd2lsbCBiZQogICAgIC8vIGVu
Y29kZWQgaW4gdGhlIGdpdmVuIGFyZ3VtZW50IGVuY29kZXIgYW5kIHNlbnQgYmFjayB0byB0aGUg
Y29ubmVjdGlvbiBvZiB0aGUgZ2l2ZW4gd2ViIHByb2Nlc3MuCi0gICAgdm9pZCBnZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVE
YXRhKFdURjo6RnVuY3Rpb248dm9pZCAoVmVjdG9yPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFdhbGxUaW1lIG1vZGlmaWVkU2luY2Us
IFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CkBAIC0xNDksNyAr
MTQ5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgY29ubmVjdGlvbiB0byB0aGUgcGx1Zy1pbiBo
b3N0IHByb2Nlc3MuCiAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwog
Ci0gICAgRGVxdWU8UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGll
czsKKyAgICBEZXF1ZTxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKIAog
ICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YVJlcXVlc3RzOwog
ICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoVmVjdG9yPFN0cmluZz4p
Pj4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNw
cAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9T
dG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBA
IHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZUQKICAgICBzZW5kKE1lc3Nh
Z2VzOjpTdG9yYWdlUHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHNlc3Npb25J
RCwgZGF0YVR5cGVzLCBvcmlnaW5zLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZvaWQgU3RvcmFn
ZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNl
V29ya2VyUHJvY2VzcywgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBTdG9yYWdlUHJv
Y2Vzc1Byb3h5OjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oYm9vbCBpc1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIG1fcGVuZGluZ0Nvbm5lY3Rp
b25SZXBsaWVzLmFwcGVuZChXVEZNb3ZlKHJlcGx5KSk7CiAKQEAgLTEzMCw5ICsxMzAsOSBAQCB2
b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6CiAgICAgICAgIGF1dG8gcmVw
bHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShV
TklYX0RPTUFJTl9TT0NLRVRTKQotICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQo
KSk7CisgICAgICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgpKTsKICNlbGlmIE9TKERBUldJTikK
LSAgICAgICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9W
RV9TRU5EKSk7CisgICAgICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBF
X01PVkVfU0VORCkpOwogI2Vsc2UKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpA
QCAtMTYyLDEyICsxNjIsMTIgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVT
dG9yYQogewogICAgIEFTU0VSVCghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgp
KTsKIAotICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9u
UmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICBhdXRvIHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlv
blJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAg
ICByZXBseS0+c2VuZChjb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgcmVwbHkoY29ubmVjdGlv
bklkZW50aWZpZXIpOwogI2VsaWYgT1MoREFSV0lOKQotICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0
YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9T
RU5EKSk7CisgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBv
cnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9y
YWdlUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVE
YXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUg
bW9kaWZpZWRTaW5jZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
OwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YT4mLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7
CiAKLSAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihib29sIGlzU2VydmljZVdv
cmtlclByb2Nlc3MsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXRTdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb24oYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYm
KTsKIAogcHJpdmF0ZToKICAgICBTdG9yYWdlUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7
CkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgV2ViUHJvY2Vzc1Bvb2wmIG1fcHJvY2Vz
c1Bvb2w7CiAKICAgICB1bnNpZ25lZCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7Ci0g
ICAgRGVxdWU8UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7Cisg
ICAgRGVxdWU8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25u
ZWN0aW9uOjpEZWxheWVkUmVwbHk+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOwogCiAgICAg
SGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+PiBtX3Bl
bmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdU
Rjo6RnVuY3Rpb248dm9pZCAoKT4+IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2FsbGJhY2tz
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjI3
NjgyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsMTAgKzIwMywxMCBAQCB2
b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp0ZXJtCiAgICAgU1dDb250ZXh0TWFu
YWdlcjo6c2luZ2xldG9uKCkudGVybWluYXRlV29ya2VyKGlkZW50aWZpZXIsIGFzeW5jV29ya2Vy
VGVybWluYXRpb25UaW1lb3V0LCBudWxscHRyKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBSZWY8TWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpTeW5jVGVybWluYXRlV29ya2VyOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlcjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAg
ICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkudGVybWluYXRlV29ya2VyKGlkZW50aWZp
ZXIsIHN5bmNXb3JrZXJUZXJtaW5hdGlvblRpbWVvdXQsIFtyZXBseSA9IFdURk1vdmUocmVwbHkp
XSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKCk7CisgICAgICAgIHJlcGx5KCk7CiAgICAgfSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAkocmV2aXNpb24gMjI3Njgy
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIpOwotICAgIHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgUmVmPE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlcjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lk
IHN5bmNUZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIE1l
c3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtl
cjo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBs
ZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKTsKICAgICB2
b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIs
IFZlY3RvcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik7CiAgICAgdm9pZCBj
bGFpbUNvbXBsZXRlZCh1aW50NjRfdCBjbGFpbVJlcXVlc3RJZGVudGlmaWVyKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIyNzY4
MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzk1LDcgKzc5NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oSU9TKQotICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJRCwgUmVmPE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVsYXllZFJl
cGx5PiYmKTsKKyAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQsIE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVsYXllZFJlcGx5
JiYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2aXNpb24gMjI3
NjgyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTMzNTgsMTAgKzMzNTgsMTAgQEAgdm9pZCBXZWJQYWdlOjpk
aXNwYXRjaEFzeW5jaHJvbm91c1RvdWNoRQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6Y29t
cHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
UHJpbnRJbmZvJiBwcmludEluZm8sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCwgUmVmPE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVsYXllZFJl
cGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERy
YXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lELCBNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIGlmIChwcmlu
dEluZm8uc25hcHNob3RGaXJzdFBhZ2UpIHsKLSAgICAgICAgcmVwbHktPnNlbmQoMSk7CisgICAg
ICAgIHJlcGx5KDEpOwogICAgICAgICBJbnRTaXplIHNuYXBzaG90U2l6ZSB7IEZsb2F0U2l6ZSB7
IHByaW50SW5mby5hdmFpbGFibGVQYXBlcldpZHRoLCBwcmludEluZm8uYXZhaWxhYmxlUGFwZXJI
ZWlnaHQgfSB9OwogICAgICAgICBJbnRSZWN0IHNuYXBzaG90UmVjdCB7IHswLCAwfSwgc25hcHNo
b3RTaXplIH07CiAgICAgICAgIGF1dG8gcGRmRGF0YSA9IHBkZlNuYXBzaG90QXRTaXplKHNuYXBz
aG90UmVjdCwgc25hcHNob3RTaXplLCAwKTsKQEAgLTMzNzYsNyArMzM3Niw3IEBAIHZvaWQgV2Vi
UGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmQKICAgICBBU1NFUlQocGFnZVJlY3RzLnNp
emUoKSA+PSAxKTsKICAgICBzdGQ6OnNpemVfdCBwYWdlQ291bnQgPSBwYWdlUmVjdHMuc2l6ZSgp
OwogICAgIEFTU0VSVChwYWdlQ291bnQgPD0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46
Om1heCgpKTsKLSAgICByZXBseS0+c2VuZChwYWdlQ291bnQpOworICAgIHJlcGx5KHBhZ2VDb3Vu
dCk7CiAKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGE7CiAgICAg
ZHJhd1BhZ2VzVG9QREZJbXBsKGZyYW1lSUQsIHByaW50SW5mbywgMCwgcGFnZUNvdW50LCBwZGZQ
YWdlRGF0YSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332606</attachid>
            <date>2018-01-29 17:15:13 -0800</date>
            <delta_ts>2018-04-04 15:39:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182269-20180129171512.patch</filename>
            <type>text/plain</type>
            <size>70152</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjc3NjMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBACisyMDE4LTAxLTI5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIENvbXBsZXRp
b25IYW5kbGVycyBmb3IgRGVsYXllZFJlcGxpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIERlbGF5ZWRSZXBsaWVzIHNob3VsZCBiZSBhIG5vbmNvcHlh
YmxlLCBub24tcmVmY291bnRhYmxlIHR5cGUuICBUaGV5IHNob3VsZCBiZQorICAgICAgICBjYWxs
ZWQgb25jZS4gIFRoaXMgaXMgd2hhdCBDb21wbGV0aW9uSGFuZGxlcnMgYXJlIGZvci4KKworICAg
ICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuICBKdXN0IGNsZWFuZXIgY29kZS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBlcmZvcm1TeW5j
aHJvbm91c0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5j
aHJvbm91c0xvYWREYXRhOjpTeW5jaHJvbm91c0xvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6
c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgor
ICAgICAgICAoSVBDOjpjYWxsTWVtYmVyRnVuY3Rpb25JbXBsKToKKyAgICAgICAgKElQQzo6Y2Fs
bE1lbWJlckZ1bmN0aW9uKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZURlbGF5ZWQpOgor
ICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpzZXRJbml0aWFsaXphdGlvblJlcGx5
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6
YXRpb25SZXBseSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuaDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRlc3Ryb3lQbHVnaW4pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkFzeW5jaHJv
bm91c2x5KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmg6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChtZXNzYWdl
X3RvX3N0cnVjdF9kZWNsYXJhdGlvbik6CisgICAgICAgIChnZW5lcmF0ZV9tZXNzYWdlX2hhbmRs
ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3
b3JrUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpuZXR3b3JrUHJvY2Vzc0ZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVnaW5Qcm9jZXNz
Q3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNz
UHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Rv
cmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVBy
b2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpFeGNl
ZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpjcmVhdGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Ondl
YkdMUG9saWN5Rm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNvbHZl
V2ViR0xQb2xpY3lGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFRv
b2xiYXJzQXJlVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWVu
dUJhcklzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U3RhdHVz
QmFySXNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRXaW5kb3dG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyZWVuVG9Sb290Vmlldyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb1NjcmVlbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpn
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYpOgorCiAyMDE4LTAxLTI5ICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlz
dGljczogSW50cm9kdWNlIGRlYnVnIG1vZGUgYXMgZXhwZXJpbWVudGFsIGZlYXR1cmUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNjaGUKICAgICBsb2FkZXItPnN0YXJ0KCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBlcmZvcm1TeW5jaHJvbm91c0xvYWQoY29uc3QgTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzLCBSZWY8TWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpE
ZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpwZXJmb3JtU3luY2hyb25vdXNMb2FkKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiBsb2FkUGFyYW1ldGVycywgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAg
ICBhdXRvIGxvYWRlciA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGxvYWRQYXJhbWV0
ZXJzLCAqdGhpcywgV1RGTW92ZShyZXBseSkpOwogICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVy
cy5hZGQobG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciwgbG9hZGVyLnB0cigpKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBj
b3B5KQpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIHZvaWQg
c2NoZWR1bGVSZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
KTsKLSAgICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoY29uc3QgTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMmLCBSZWY8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQg
cGVyZm9ybVN5bmNocm9ub3VzTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cyYsIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNo
cm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgbG9hZFBpbmcoTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmJiwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmIG9yaWdpbmFs
UmVxdWVzdEhlYWRlcnMpOwogICAgIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJik7CiAg
ICAgdm9pZCBwcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIE5l
dHdvcmtMb2FkUGFyYW1ldGVycyYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDIyNzY4
MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTMgKzYzLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OlN5bmNocm9ub3VzTG9hZERhdGEgewotICAgIFN5bmNocm9ub3VzTG9hZERhdGEoUmVmUHRy
PE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9u
b3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQorICAgIFN5bmNocm9ub3VzTG9hZERhdGEo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25v
dXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSkKICAgICAgICAgOiBkZWxheWVkUmVwbHkoV1RG
TW92ZShyZXBseSkpCiAgICAgewogICAgICAgICBBU1NFUlQoZGVsYXllZFJlcGx5KTsKICAgICB9
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IGN1cnJlbnRSZXF1ZXN0OwotICAgIFJlZlB0cjxNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6
OkRlbGF5ZWRSZXBseT4gZGVsYXllZFJlcGx5OworICAgIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5IGRl
bGF5ZWRSZXBseTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIFJlc291cmNl
RXJyb3IgZXJyb3I7CiB9OwpAQCAtODMsMTEgKzgzLDExIEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBs
eVRvU3luY2hyb25vdXNSZXF1ZXMKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQog
ICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKIAotICAgIGRhdGEuZGVsYXllZFJlcGx5LT5zZW5kKGRhdGEuZXJyb3IsIGRhdGEucmVz
cG9uc2UsIHJlc3BvbnNlQnVmZmVyKTsKKyAgICBkYXRhLmRlbGF5ZWRSZXBseShkYXRhLmVycm9y
LCBkYXRhLnJlc3BvbnNlLCByZXNwb25zZUJ1ZmZlcik7CiAgICAgZGF0YS5kZWxheWVkUmVwbHkg
PSBudWxscHRyOwogfQogCi1OZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycywgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlZlB0cjxNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRl
bGF5ZWRSZXBseT4mJiBzeW5jaHJvbm91c1JlcGx5KQorTmV0d29ya1Jlc291cmNlTG9hZGVyOjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91
c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHN5bmNocm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRl
cnMgeyBwYXJhbWV0ZXJzIH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQogICAg
ICwgbV9kZWZlcnNMb2FkaW5nIHsgcGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBj
bGFzcyBFbnRyeTsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyIGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8TmV0d29ya1Jlc291cmNlTG9hZGVyPiwgcHVibGljIE5ldHdvcmtMb2FkQ2xp
ZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbiwgUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5ID0gbnVsbHB0cikK
KyAgICBzdGF0aWMgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKGNvbnN0IE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSA9IG51
bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIocGFyYW1ldGVycywgY29ubmVjdGlvbiwgV1RGTW92ZShyZXBseSkpKTsKICAgICB9
CkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya1Jlc291cmNlTG9hZGVyKGNv
bnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBSZWZQdHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYpOworICAgIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYsIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJik7CiAKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDggQEAKIAogbmFt
ZXNwYWNlIElQQyB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQ29kaW5nVHlwZTsKKwog
ZW51bSBjbGFzcyBTZW5kT3B0aW9uIHsKICAgICAvLyBXaGV0aGVyIHRoaXMgbWVzc2FnZSBzaG91
bGQgYmUgZGlzcGF0Y2hlZCB3aGVuIHdhaXRpbmcgZm9yIGEgc3luYyByZXBseS4KICAgICAvLyBU
aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBzeW5jaHJvbm91cyBtZXNzYWdlcy4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgJKHJldmlzaW9uIDIyNzY4MikK
KysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBcmd1bWVu
dENvZGVycy5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC02MiwxNiArNjMsMTYg
QEAgdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oQXJnc1R1cGxlJiYgYXJncwogCiAvLyBEaXNwYXRj
aCBmdW5jdGlvbnMgd2l0aCBkZWxheWVkIHJlcGx5IGFyZ3VtZW50cy4KIAotdGVtcGxhdGUgPHR5
cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBSLCB0eXBlbmFtZSBBcmdzVHVwbGUsIHNp
emVfdC4uLiBBcmdzSW5kZXg+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbkltcGwoQyogb2JqZWN0
LCBNRiBmdW5jdGlvbiwgUmVmPFI+JiYgZGVsYXllZFJlcGx5LCBBcmdzVHVwbGUmJiBhcmdzLCBz
dGQ6OmluZGV4X3NlcXVlbmNlPEFyZ3NJbmRleC4uLj4pCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQywg
dHlwZW5hbWUgTUYsIHR5cGVuYW1lIENILCB0eXBlbmFtZSBBcmdzVHVwbGUsIHNpemVfdC4uLiBB
cmdzSW5kZXg+Cit2b2lkIGNhbGxNZW1iZXJGdW5jdGlvbkltcGwoQyogb2JqZWN0LCBNRiBmdW5j
dGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8Q0g+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFyZ3NUdXBs
ZSYmIGFyZ3MsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJnc0luZGV4Li4uPikKIHsKLSAgICAob2Jq
ZWN0LT4qZnVuY3Rpb24pKHN0ZDo6Z2V0PEFyZ3NJbmRleD4oc3RkOjpmb3J3YXJkPEFyZ3NUdXBs
ZT4oYXJncykpLi4uLCBXVEZNb3ZlKGRlbGF5ZWRSZXBseSkpOworICAgIChvYmplY3QtPipmdW5j
dGlvbikoc3RkOjpnZXQ8QXJnc0luZGV4PihzdGQ6OmZvcndhcmQ8QXJnc1R1cGxlPihhcmdzKSku
Li4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
QywgdHlwZW5hbWUgTUYsIHR5cGVuYW1lIFIsIHR5cGVuYW1lIEFyZ3NUdXBsZSwgdHlwZW5hbWUg
QXJnc0luZGljaWVzID0gc3RkOjptYWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxB
cmdzVHVwbGU+Ojp2YWx1ZT4+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihBcmdzVHVwbGUmJiBh
cmdzLCBSZWY8Uj4mJiBkZWxheWVkUmVwbHksIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgQ0gsIHR5cGVuYW1lIEFyZ3NU
dXBsZSwgdHlwZW5hbWUgQXJnc0luZGljaWVzID0gc3RkOjptYWtlX2luZGV4X3NlcXVlbmNlPHN0
ZDo6dHVwbGVfc2l6ZTxBcmdzVHVwbGU+Ojp2YWx1ZT4+Cit2b2lkIGNhbGxNZW1iZXJGdW5jdGlv
bihBcmdzVHVwbGUmJiBhcmdzLCBDb21wbGV0aW9uSGFuZGxlcjxDSD4mJiBjb21wbGV0aW9uSGFu
ZGxlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKLSAgICBjYWxsTWVtYmVyRnVuY3Rpb25J
bXBsKG9iamVjdCwgZnVuY3Rpb24sIFdURk1vdmUoZGVsYXllZFJlcGx5KSwgc3RkOjpmb3J3YXJk
PEFyZ3NUdXBsZT4oYXJncyksIEFyZ3NJbmRpY2llcygpKTsKKyAgICBjYWxsTWVtYmVyRnVuY3Rp
b25JbXBsKG9iamVjdCwgZnVuY3Rpb24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdGQ6
OmZvcndhcmQ8QXJnc1R1cGxlPihhcmdzKSwgQXJnc0luZGljaWVzKCkpOwogfQogCiAvLyBEaXNw
YXRjaCBmdW5jdGlvbnMgd2l0aCBjb25uZWN0aW9uIHBhcmFtZXRlciB3aXRoIG5vIHJlcGx5IGFy
Z3VtZW50cy4KQEAgLTE3NCw4ICsxNzUsMTEgQEAgdm9pZCBoYW5kbGVNZXNzYWdlRGVsYXllZChD
b25uZWN0aW9uJiBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmPHR5cGVuYW1l
IFQ6OkRlbGF5ZWRSZXBseT4gZGVsYXllZFJlcGx5ID0gYWRvcHRSZWYoKm5ldyB0eXBlbmFtZSBU
OjpEZWxheWVkUmVwbHkoY29ubmVjdGlvbiwgV1RGTW92ZShyZXBseUVuY29kZXIpKSk7Ci0gICAg
Y2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShkZWxheWVkUmVw
bHkpLCBvYmplY3QsIGZ1bmN0aW9uKTsKKyAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29t
cGxldGlvbkhhbmRsZXIgPSBbcmVwbHlFbmNvZGVyID0gV1RGTW92ZShyZXBseUVuY29kZXIpLCBj
b25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxl
IHsKKyAgICAgICAgVDo6c2VuZChXVEZNb3ZlKHJlcGx5RW5jb2RlciksIFdURk1vdmUoY29ubmVj
dGlvbiksIGFyZ3MuLi4pOworICAgIH07CisgICAgCisgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdU
Rk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVu
Y3Rpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJUEMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCShyZXZpc2lv
biAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsMTUgKzkxLDE1IEBAIFBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6flBsdWdpbkNvbnRyb2xsZXIKICAgICAgICAgcmVsZWFzZU5QT2JqZWN0KG1f
cGx1Z2luRWxlbWVudE5QT2JqZWN0KTsKIH0KIAotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6
OnNldEluaXRpYWxpemF0aW9uUmVwbHkoUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlv
bjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6c2V0SW5pdGlhbGl6YXRpb25SZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgQVNT
RVJUKCFtX2luaXRpYWxpemF0aW9uUmVwbHkpOwogICAgIG1faW5pdGlhbGl6YXRpb25SZXBseSA9
IFdURk1vdmUocmVwbHkpOwogfQogCi1SZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0
aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4gUGx1Z2luQ29udHJvbGxlclByb3h5Ojp0
YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpCitNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5IFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6dGFrZUlu
aXRpYWxpemF0aW9uUmVwbHkoKQogewotICAgIHJldHVybiBtX2luaXRpYWxpemF0aW9uUmVwbHk7
CisgICAgcmV0dXJuIFdURk1vdmUobV9pbml0aWFsaXphdGlvblJlcGx5KTsKIH0KIAogYm9vbCBQ
bHVnaW5Db250cm9sbGVyUHJveHk6OmluaXRpYWxpemUoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJh
bWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCShyZXZpc2lvbiAyMjc2ODIp
CisrKyBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc1LDggKzc1LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0lu
aXRpYWxpemluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNJbml0aWFsaXppbmc7IH0KICAgICAKLSAg
ICB2b2lkIHNldEluaXRpYWxpemF0aW9uUmVwbHkoUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29u
bmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+JiYpOwotICAgIFJlZlB0cjxNZXNz
YWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiB0
YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpOworICAgIHZvaWQgc2V0SW5pdGlhbGl6YXRpb25SZXBs
eShNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJl
cGx5JiYpOworICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2lu
OjpEZWxheWVkUmVwbHkgdGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKTsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIHN0YXJ0UGFpbnRUaW1lcigpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2lzVmlzaWJsZTsKICAgICBib29sIG1faXNXaW5kb3dWaXNpYmxlOwogCi0gICAg
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxh
eWVkUmVwbHk+IG1faW5pdGlhbGl6YXRpb25SZXBseTsKKyAgICBNZXNzYWdlczo6V2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5IG1faW5pdGlhbGl6YXRpb25S
ZXBseTsKIAogICAgIFJlZlB0cjxQbHVnaW4+IG1fcGx1Z2luOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJl
dmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NiwxMSArMTc2LDExIEBAIHZvaWQg
V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKElQQzoKICAgICAgICAgZGVzdHJveVBsdWdp
bkNvbnRyb2xsZXJQcm94eShwbHVnaW5Db250cm9sbGVyc1tpXSk7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwg
Ym9vbCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUsIFJlZjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlc3Ryb3lQbHVnaW46OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3Zv
aWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5z
dGFuY2VJRCwgYm9vbCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUsIE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkp
CiB7CiAgICAgLy8gV2UgcmV0dXJuIGltbWVkaWF0ZWx5IGZyb20gdGhpcyBzeW5jaHJvbm91cyBJ
UEMuIFdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBwbHVnaW4gZGVzdHJ1Y3Rpb24gaXMganVzdCBh
Ym91dCB0byBzdGFydCBzbyBhdWRpbyBwbGF5YmFjawogICAgIC8vIHdpbGwgZmluaXNoIHNvb24g
YWZ0ZXIgcmV0dXJuaW5nLiBIb3dldmVyIHdlIGRvbid0IHdhbnQgdG8gd2FpdCBmb3IgZGVzdHJ1
Y3Rpb24gdG8gY29tcGxldGUgZnVsbHkgYXMgdGhhdCBtYXkgdGFrZSBhIHdoaWxlLgotICAgIHJl
cGx5LT5zZW5kKCk7CisgICAgcmVwbHkoKTsKIAogICAgIC8vIEVuc3VyZSB3ZSBkb24ndCBjbGFt
cCBhbnkgdGltZXJzIGR1cmluZyBkZXN0cnVjdGlvbgogICAgIEFjdGl2aXR5QXNzZXJ0aW9uIGFj
dGl2aXR5QXNzZXJ0aW9uKFBsdWdpblByb2Nlc3M6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25BY3Rp
dml0eSgpKTsKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpj
cmVhdGVQbHVnaW5JCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3Jl
YXRlUGx1Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJhbWV0
ZXJzLCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRl
bGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBs
dWdpbihjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycywg
TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQogewogICAgIC8vIEVuc3VyZSB3ZSBkb24ndCBjbGFtcCBhbnkgdGltZXJzIGR1
cmluZyBpbml0aWFsaXphdGlvbgogICAgIEFjdGl2aXR5QXNzZXJ0aW9uIGFjdGl2aXR5QXNzZXJ0
aW9uKFBsdWdpblByb2Nlc3M6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25BY3Rpdml0eSgpKTsKQEAg
LTI0Niw5ICsyNDYsOSBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4o
CiAgICAgICAgIAogICAgICAgICAvLyBJZiBpdHMgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGUg
dGhlbiB3ZSBuZWVkIHRvIHJlc3BvbmQgdG8gdGhpcyBtZXNzYWdlIHdpdGggdGhlIGNvcnJlY3Qg
aW5mb3JtYXRpb24gYWJvdXQgaXRzIGNyZWF0aW9uLgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
ICAgICByZXBseS0+c2VuZCh0cnVlLCBwbHVnaW5Db250cm9sbGVyUHJveHktPndhbnRzV2hlZWxF
dmVudHMoKSwgcGx1Z2luQ29udHJvbGxlclByb3h5LT5yZW1vdGVMYXllckNsaWVudElEKCkpOwor
ICAgICAgICByZXBseSh0cnVlLCBwbHVnaW5Db250cm9sbGVyUHJveHktPndhbnRzV2hlZWxFdmVu
dHMoKSwgcGx1Z2luQ29udHJvbGxlclByb3h5LT5yZW1vdGVMYXllckNsaWVudElEKCkpOwogI2Vs
c2UKLSAgICAgICAgcmVwbHktPnNlbmQodHJ1ZSwgcGx1Z2luQ29udHJvbGxlclByb3h5LT53YW50
c1doZWVsRXZlbnRzKCksIDApOworICAgICAgICByZXBseSh0cnVlLCBwbHVnaW5Db250cm9sbGVy
UHJveHktPndhbnRzV2hlZWxFdmVudHMoKSwgMCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVh
dGVQbHVnaW4oCiAgICAgdWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCA9IDA7CiAgICAgY3Jl
YXRlUGx1Z2luSW50ZXJuYWwoY3JlYXRpb25QYXJhbWV0ZXJzLCByZXN1bHQsIHdhbnRzV2hlZWxF
dmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQpOwogICAgIAotICAgIHJlcGx5LT5zZW5kKHJlc3Vs
dCwgd2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CisgICAgcmVwbHkocmVz
dWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luQXN5bmNocm9ub3VzbHkoY29uc3QgUGx1
Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMpCkBAIC0zMDgsOCArMzA4
LDggQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luQQogICAgIC8vIHN5
bmNocm9ub3VzIHJlcGx5IGluc3RlYWQgb2Ygc2VuZGluZyB0aGUgYXN5bmNocm9ub3VzIHJlcGx5
LgogICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxlclByb3h5ID0gbV9w
bHVnaW5Db250cm9sbGVycy5nZXQoY3JlYXRpb25QYXJhbWV0ZXJzLnBsdWdpbkluc3RhbmNlSUQp
OwogICAgIEFTU0VSVChwbHVnaW5Db250cm9sbGVyUHJveHkpOwotICAgIGlmIChSZWZQdHI8TWVz
c2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4g
ZGVsYXllZFN5bmNSZXBseSA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+dGFrZUluaXRpYWxpemF0
aW9uUmVwbHkoKSkgewotICAgICAgICBkZWxheWVkU3luY1JlcGx5LT5zZW5kKHJlc3VsdCwgd2Fu
dHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CisgICAgaWYgKGF1dG8gZGVsYXll
ZFN5bmNSZXBseSA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+dGFrZUluaXRpYWxpemF0aW9uUmVw
bHkoKSkgeworICAgICAgICBkZWxheWVkU3luY1JlcGx5KHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50
cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5oCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjksOSArNjksOSBAQCBwcml2
YXRlOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KTsKLSAgICB2b2lkIGNyZWF0ZVBsdWdpbihjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMm
LCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5
ZWRSZXBseT4mJik7CisgICAgdm9pZCBjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzJiwgTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46
OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KGNv
bnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYpOwotICAgIHZvaWQgZGVzdHJveVBsdWdpbih1
aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21w
bGV0ZSwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6
RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2lu
SW5zdGFuY2VJRCwgYm9vbCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUsIE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6RGVsYXllZFJlcGx5JiYpOwog
ICAgIAogICAgIHZvaWQgY3JlYXRlUGx1Z2luSW50ZXJuYWwoY29uc3QgUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzJiwgYm9vbCYgcmVzdWx0LCBib29sJiB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJf
dCYgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQkod29ya2luZyBjb3B5KQpAQCAtMTE4LDE2ICsxMTgsMTQg
QEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKG1lc3NhZwogICAgIGlmIG1lc3Nh
Z2UucmVwbHlfcGFyYW1ldGVycyAhPSBOb25lOgogICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRy
aWJ1dGUoREVMQVlFRF9BVFRSSUJVVEUpOgogICAgICAgICAgICAgc2VuZF9wYXJhbWV0ZXJzID0g
WyhmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZSh4LnR5cGUsIHgua2luZCksIHgubmFtZSkgZm9yIHgg
aW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIHN0cnVjdCBEZWxheWVkUmVwbHkgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVs
YXllZFJlcGx5PiB7XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBEZWxh
eWVkUmVwbHkoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4pO1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgfkRlbGF5ZWRS
ZXBseSgpO1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICAgICAgYm9vbCBzZW5kKCVzKTtcbicgJSAnLCAnLmpvaW4oWycg
Jy5qb2luKHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pKQotICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnXG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHByaXZhdGU6XG4n
KQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBSZWZQdHI8SVBDOjpDb25uZWN0
aW9uPiBtX2Nvbm5lY3Rpb247XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBtX2VuY29kZXI7XG4nKQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIH07XG5cbicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCcgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgnKQorICAg
ICAgICAgICAgaWYgbGVuKHNlbmRfcGFyYW1ldGVycyk6CisgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnJXMnICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFt
ZXRlcnNdKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyk+OycpCisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mJykKKyAgICAgICAgICAgIGlmIGxlbihzZW5kX3Bh
cmFtZXRlcnMpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJXMnICUgJywgJy5q
b2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNdKSkKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyk7XG4nKQogCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB0eXBl
ZGVmICVzIFJlcGx5O1xuJyAlIHJlcGx5X3R5cGUobWVzc2FnZSkpCiAKQEAgLTUyMywyNCArNTIx
LDEyIEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIoZmlsZSk6CiAgICAgICAgICAgICBp
ZiBtZXNzYWdlLmNvbmRpdGlvbjoKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYg
JXNcblxuJyAlIG1lc3NhZ2UuY29uZGl0aW9uKQogCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCclczo6RGVsYXllZFJlcGx5OjpEZWxheWVkUmVwbHkoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBj
b25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVyKVxuJyAlIG1l
c3NhZ2UubmFtZSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICA6IG1fY29ubmVjdGlv
bihXVEZNb3ZlKGNvbm5lY3Rpb24pKVxuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICAsIG1fZW5jb2RlcihXVEZNb3ZlKGVuY29kZXIpKVxuJykKLSAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJ3tcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnXG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJXM6OkRl
bGF5ZWRSZXBseTo6fkRlbGF5ZWRSZXBseSgpXG4nICUgbWVzc2FnZS5uYW1lKQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgne1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBB
U1NFUlQoIW1fY29ubmVjdGlvbik7XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxu
JykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJ2Jvb2wgJXM6OkRlbGF5ZWRSZXBseTo6c2VuZCglcylcbicgJSAobWVzc2FnZS5uYW1l
LCAnLCAnLmpvaW4oWycgJy5qb2luKHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pKSkKLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCcgICAgQVNTRVJUKG1fZW5jb2Rlcik7XG4nKQotICAgICAgICAgICAgcmVzdWx0ICs9IFsnICAg
ICptX2VuY29kZXIgPDwgJXM7XG4nICUgeC5uYW1lIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFy
YW1ldGVyc10KLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBib29sIF9yZXN1bHQgPSBt
X2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoV1RGTW92ZShtX2VuY29kZXIpKTtcbicpCi0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjtcbicpCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIF9yZXN1bHQ7XG4nKQorICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbicgJSAobWVzc2Fn
ZS5uYW1lKSkKKyAgICAgICAgICAgIGlmIGxlbihzZW5kX3BhcmFtZXRlcnMpOgorICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJXMnICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3Ig
eCBpbiBzZW5kX3BhcmFtZXRlcnNdKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJylcbntc
bicpCisgICAgICAgICAgICByZXN1bHQgKz0gWycgICAgKmVuY29kZXIgPDwgJXM7XG4nICUgeC5u
YW1lIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10KKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7
XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ1xuJykKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsNyArMjI1LDcgQEAgcHVibGljOgog
ICAgICAgICB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2U7CiAgICAgICAgIHVpbnQ2NF90IGN1
cnJlbnREYXRhYmFzZVVzYWdlOwogICAgICAgICB1aW50NjRfdCBleHBlY3RlZFVzYWdlOwotICAg
ICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3Rh
OjpEZWxheWVkUmVwbHk+IHJlcGx5OworICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpF
eGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseSByZXBseTsKICAgICB9OwogCiAgICAg
c3RhdGljIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHMmIHNpbmdsZXRvbigpOwpAQCAtMjMz
LDcgKzIzMyw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVjb3JkPiBjcmVhdGVS
ZWNvcmQodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIsCiAgICAgICAg
IFN0cmluZyBkYXRhYmFzZU5hbWUsIFN0cmluZyBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVu
dFF1b3RhLAogICAgICAgICB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1
cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCAKLSAgICAgICAgUmVm
PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJl
cGx5PiYmKTsKKyAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFz
ZVF1b3RhOjpEZWxheWVkUmVwbHkmJik7CiAKICAgICB2b2lkIGFkZChzdGQ6OnVuaXF1ZV9wdHI8
UmVjb3JkPik7CiAgICAgYm9vbCBhcmVCZWluZ1Byb2Nlc3NlZCgpIGNvbnN0IHsgcmV0dXJuICEh
bV9jdXJyZW50UmVjb3JkOyB9CkBAIC0yNTYsNyArMjU2LDcgQEAgRXhjZWVkZWREYXRhYmFzZVF1
b3RhUmVjb3JkcyYgRXhjZWVkZWREYQogc3RkOjp1bmlxdWVfcHRyPEV4Y2VlZGVkRGF0YWJhc2VR
dW90YVJlY29yZHM6OlJlY29yZD4gRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6Y3JlYXRl
UmVjb3JkKAogICAgIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCBT
dHJpbmcgZGF0YWJhc2VOYW1lLCBTdHJpbmcgZGlzcGxheU5hbWUsCiAgICAgdWludDY0X3QgY3Vy
cmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnRE
YXRhYmFzZVVzYWdlLAotICAgIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIFJlZjxNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4mJiByZXBs
eSkKKyAgICB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpF
eGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIGF1dG8g
cmVjb3JkID0gc3RkOjptYWtlX3VuaXF1ZTxSZWNvcmQ+KCk7CiAgICAgcmVjb3JkLT5mcmFtZUlE
ID0gZnJhbWVJRDsKQEAgLTM5NzIsMjAgKzM5NzIsMjAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFVwZGF0ZUhpc3RvcnlUaXRsZQogCiAvLyBVSUNsaWVudAogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRl
TmV3UGFnZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0
ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2lu
ZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MtPndl
YkZyYW1lKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEKSk7CiAgICAgYXV0byBvcmln
aW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLCBtX3Byb2Nlc3MtPndlYlBhZ2Uob3JpZ2luYXRpbmdQYWdlSUQpKTsKIAogICAg
IGF1dG8gbWFpbkZyYW1lVVJMID0gbV9tYWluRnJhbWUtPnVybCgpOwogCi0gICAgbV91aUNsaWVu
dC0+Y3JlYXRlTmV3UGFnZSgqdGhpcywgV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mbyksIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUod2luZG93RmVhdHVyZXMpLCBXVEZNb3ZlKG5hdmlnYXRp
b25BY3Rpb25EYXRhKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWZQdHI8V2ViUGFnZVByb3h5
Pih0aGlzKSwgbWFpbkZyYW1lVVJMLCByZXF1ZXN0LCByZXBseSA9IFdURk1vdmUocmVwbHkpXShS
ZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlKSB7CisgICAgbV91aUNsaWVudC0+Y3JlYXRlTmV3
UGFnZSgqdGhpcywgV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mbyksIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUod2luZG93RmVhdHVyZXMpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRh
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWFpbkZyYW1lVVJMLCBy
ZXF1ZXN0LCByZXBseSA9IFdURk1vdmUocmVwbHkpXShSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQ
YWdlKSB7CiAgICAgICAgIGlmICghbmV3UGFnZSkgewotICAgICAgICAgICAgcmVwbHktPnNlbmQo
MCwgeyB9KTsKKyAgICAgICAgICAgIHJlcGx5KDAsIHsgfSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICByZXBseS0+c2VuZChuZXdQYWdlLT5wYWdlSUQoKSwgbmV3
UGFnZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKCkpOworICAgICAgICByZXBseShuZXdQYWdlLT5wYWdl
SUQoKSwgbmV3UGFnZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKCkpOwogCiAgICAgICAgIFdlYnNpdGVE
YXRhU3RvcmU6OmNsb25lU2Vzc2lvbkRhdGEoKnRoaXMsICpuZXdQYWdlKTsKICAgICAgICAgbmV3
UGFnZS0+bV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lz
aW9uID0gaG9zdHNBcmVFcXVhbChVUkwoUGFyc2VkVVJMU3RyaW5nLCBtYWluRnJhbWVVUkwpLCBy
ZXF1ZXN0LnVybCgpKTsKQEAgLTQwMjEsNyArNDAyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
bG9zZVBhZ2UoYm9vbCBzdG9wUmUKICAgICBtX3VpQ2xpZW50LT5jbG9zZSh0aGlzKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRl
bGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxl
cnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9y
aWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5K
YXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJv
eHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NI
RUNLKGZyYW1lKTsKQEAgLTQwMzQsMTEgKzQwMzQsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1
bkphdmFTY3JpcHRBbGVydCh1aQogICAgICAgICAgICAgYXV0b21hdGlvblNlc3Npb24tPndpbGxT
aG93SmF2YVNjcmlwdERpYWxvZygqdGhpcyk7CiAgICAgfQogICAgIG1fdWlDbGllbnQtPnJ1bkph
dmFTY3JpcHRBbGVydCh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFtyZXBs
eSA9IFdURk1vdmUocmVwbHkpXSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKCk7CisgICAgICAgIHJl
cGx5KCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0Q29u
ZmlybSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5
T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJG
cmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKQEAgLTQwNTIsMTEgKzQw
NTIsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKAogICAgIH0K
IAogICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRDb25maXJtKHRoaXMsIG1lc3NhZ2UsIGZy
YW1lLCBzZWN1cml0eU9yaWdpbiwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKGJvb2wgcmVzdWx0
KSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKHJlc3VsdCk7CisgICAgICAgIHJlcGx5KHJlc3VsdCk7
CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFJlZjxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0OjpEZWxheWVkUmVwbHk+
JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdFByb21wdCh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0OjpEZWxheWVkUmVwbHkmJiByZXBseSkK
IHsKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJ
RCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CkBAIC00MDcwLDcgKzQwNzAsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdFByb21wdCh1CiAgICAgfQogCiAgICAgbV91aUNs
aWVudC0+cnVuSmF2YVNjcmlwdFByb21wdCh0aGlzLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUsIGZy
YW1lLCBzZWN1cml0eU9yaWdpbiwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKHJlc3VsdCk7CisgICAgICAgIHJlcGx5
KHJlc3VsdCk7CiAgICAgfSk7CiB9CiAKQEAgLTQxMzgsMjQgKzQxMzgsMjQgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnVuYXZhaWxhYmxlUGx1Z2luQnV0dAogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQogCiAjaWYgRU5BQkxFKFdFQkdMKQotdm9pZCBXZWJQYWdlUHJveHk6Ondl
YkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVybCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Oldl
YkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94
eTo6d2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYgdXJsLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpX
ZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgaWYgKG1fbmF2
aWdhdGlvbkNsaWVudCkgewogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPndlYkdMTG9hZFBv
bGljeSgqdGhpcywgdXJsLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oV2ViR0xMb2FkUG9saWN5
IHBvbGljeSkgewotICAgICAgICAgICAgcmVwbHktPnNlbmQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHBvbGljeSkpOworICAgICAgICAgICAgcmVwbHkoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBvbGlj
eSkpOwogICAgICAgICB9KTsKICAgICB9IGVsc2UKLSAgICAgICAgcmVwbHktPnNlbmQoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KG1fbG9hZGVyQ2xpZW50LT53ZWJHTExvYWRQb2xpY3koKnRoaXMsIHVy
bCkpKTsKKyAgICAgICAgcmVwbHkoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fbG9hZGVyQ2xpZW50
LT53ZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCkpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChVUkwmJiB1cmwsIFJlZjxNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYgdXJsLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQogewogICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKICAgICAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5yZXNvbHZlV2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwsIFty
ZXBseSA9IFdURk1vdmUocmVwbHkpXShXZWJHTExvYWRQb2xpY3kgcG9saWN5KSB7Ci0gICAgICAg
ICAgICByZXBseS0+c2VuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5KSk7CisgICAgICAg
ICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5KSk7CiAgICAgICAgIH0pOwog
ICAgIH0gZWxzZQotICAgICAgICByZXBseS0+c2VuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9s
b2FkZXJDbGllbnQtPnJlc29sdmVXZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCkpKTsKKyAgICAg
ICAgcmVwbHkoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fbG9hZGVyQ2xpZW50LT5yZXNvbHZlV2Vi
R0xMb2FkUG9saWN5KCp0aGlzLCB1cmwpKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQog
CkBAIC00MTY0LDEwICs0MTY0LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUb29sYmFyc0Fy
ZVZpc2libGUKICAgICBtX3VpQ2xpZW50LT5zZXRUb29sYmFyc0FyZVZpc2libGUoKnRoaXMsIHRv
b2xiYXJzQXJlVmlzaWJsZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRUb29sYmFyc0Fy
ZVZpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJs
ZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmdldFRvb2xiYXJz
QXJlVmlzaWJsZShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGU6
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIG1fdWlDbGllbnQtPnRvb2xiYXJzQXJlVmlz
aWJsZSgqdGhpcywgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKGJvb2wgdmlzaWJsZSkgewotICAg
ICAgICByZXBseS0+c2VuZCh2aXNpYmxlKTsKKyAgICAgICAgcmVwbHkodmlzaWJsZSk7CiAgICAg
fSk7CiB9CiAKQEAgLTQxNzYsMTAgKzQxNzYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1l
bnVCYXJJc1Zpc2libGUoYgogICAgIG1fdWlDbGllbnQtPnNldE1lbnVCYXJJc1Zpc2libGUoKnRo
aXMsIG1lbnVCYXJJc1Zpc2libGUpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWVudUJh
cklzVmlzaWJsZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJs
ZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmdldE1lbnVCYXJJ
c1Zpc2libGUoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZTo6RGVs
YXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgbV91aUNsaWVudC0+bWVudUJhcklzVmlzaWJsZSgq
dGhpcywgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldIChib29sIHZpc2libGUpIHsKLSAgICAgICAg
cmVwbHktPnNlbmQodmlzaWJsZSk7CisgICAgICAgIHJlcGx5KHZpc2libGUpOwogICAgIH0pOwog
fQogCkBAIC00MTg4LDEwICs0MTg4LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTdGF0dXNC
YXJJc1Zpc2libGUKICAgICBtX3VpQ2xpZW50LT5zZXRTdGF0dXNCYXJJc1Zpc2libGUoKnRoaXMs
IHN0YXR1c0JhcklzVmlzaWJsZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRTdGF0dXNC
YXJJc1Zpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlz
aWJsZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmdldFN0YXR1
c0JhcklzVmlzaWJsZShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2li
bGU6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIG1fdWlDbGllbnQtPnN0YXR1c0Jhcklz
VmlzaWJsZSgqdGhpcywgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldIChib29sIHZpc2libGUpIHsK
LSAgICAgICAgcmVwbHktPnNlbmQodmlzaWJsZSk7CisgICAgICAgIHJlcGx5KHZpc2libGUpOwog
ICAgIH0pOwogfQogCkBAIC00MjA1LDEwICs0MjA1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRXaW5kb3dGcmFtZShjb25zdCAKICAgICBtX3VpQ2xpZW50LT5zZXRXaW5kb3dGcmFtZSgqdGhp
cywgbV9wYWdlQ2xpZW50LmNvbnZlcnRUb0RldmljZVNwYWNlKG5ld1dpbmRvd0ZyYW1lKSk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRXaW5kb3dGcmFtZShSZWY8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6R2V0V2luZG93RnJhbWU6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRXaW5kb3dGcmFtZShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRXaW5k
b3dGcmFtZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgbV91aUNsaWVudC0+d2luZG93
RnJhbWUoKnRoaXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcGx5
ID0gV1RGTW92ZShyZXBseSldIChGbG9hdFJlY3QgZnJhbWUpIHsKLSAgICAgICAgcmVwbHktPnNl
bmQobV9wYWdlQ2xpZW50LmNvbnZlcnRUb1VzZXJTcGFjZShmcmFtZSkpOworICAgICAgICByZXBs
eShtX3BhZ2VDbGllbnQuY29udmVydFRvVXNlclNwYWNlKGZyYW1lKSk7CiAgICAgfSk7CiB9CiAK
QEAgLTQyMTcsMTQgKzQyMTcsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFdpbmRvd0ZyYW1l
V2l0aENhbAogICAgIG1fdWlDbGllbnQtPndpbmRvd0ZyYW1lKCp0aGlzLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzY3JlZW5Ub1Jvb3RWaWV3
KGNvbnN0IEludFBvaW50JiBzY3JlZW5Qb2ludCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlNjcmVlblRvUm9vdFZpZXc6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBzY3JlZW5Qb2ludCwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2NyZWVuVG9Sb290Vmlldzo6RGVsYXllZFJlcGx5JiYgcmVwbHkp
CiB7Ci0gICAgcmVwbHktPnNlbmQobV9wYWdlQ2xpZW50LnNjcmVlblRvUm9vdFZpZXcoc2NyZWVu
UG9pbnQpKTsKKyAgICByZXBseShtX3BhZ2VDbGllbnQuc2NyZWVuVG9Sb290VmlldyhzY3JlZW5Q
b2ludCkpOwogfQogICAgIAotdm9pZCBXZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9TY3JlZW4oY29u
c3QgSW50UmVjdCYgdmlld1JlY3QsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmll
d1RvU2NyZWVuOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cm9v
dFZpZXdUb1NjcmVlbihjb25zdCBJbnRSZWN0JiB2aWV3UmVjdCwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Um9vdFZpZXdUb1NjcmVlbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgcmVw
bHktPnNlbmQobV9wYWdlQ2xpZW50LnJvb3RWaWV3VG9TY3JlZW4odmlld1JlY3QpKTsKKyAgICBy
ZXBseShtX3BhZ2VDbGllbnQucm9vdFZpZXdUb1NjcmVlbih2aWV3UmVjdCkpOwogfQogICAgIAog
I2lmIFBMQVRGT1JNKElPUykKQEAgLTQyMzksNyArNDIzOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojpyb290Vmlld1RvQWNjZXNzaWJpbGkKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUmVm
UHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6
RGVsYXllZFJlcGx5PiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRD
b25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OkRlbGF5ZWRSZXBseSByZXBseSkKIHsK
ICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7
CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CkBAIC00MjUyLDcgKzQyNTIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlyCiAgICAgICAgICAgICBhdXRvbWF0aW9u
U2Vzc2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0aGlzKTsKICAgICB9CiAKLSAgICBt
X3VpQ2xpZW50LT5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodGhpcywgbWVzc2FnZSwgZnJh
bWUsIHNlY3VyaXR5T3JpZ2luLCBbcmVwbHldKGJvb2wgcmVzdWx0KSB7IHJlcGx5LT5zZW5kKHJl
c3VsdCk7IH0pOworICAgIG1fdWlDbGllbnQtPnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh0
aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFtyZXBseSA9IFdURk1vdmUocmVw
bHkpXShib29sIHJlc3VsdCkgeyByZXBseShyZXN1bHQpOyB9KTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBWaWV3cG9ydEF0dHJpYnV0
ZXMmIGF0dHIpCkBAIC01OTIyLDcgKzU5MjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0CiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKCp0aGlzLCAqZnJhbWUsIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmdldCgpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VR
dW90YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50
NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3Qg
Y3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIFJlZjxNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4mJiBy
ZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1
b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFz
ZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpF
eGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIEV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YVJlY29yZHMmIHJlY29yZHMgPSBFeGNlZWRlZERhdGFiYXNlUXVvdGFS
ZWNvcmRzOjpzaW5nbGV0b24oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhjZWVkZWREYXRhYmFz
ZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiBuZXdSZWNvcmQgPSByZWNvcmRzLmNyZWF0ZVJlY29yZChm
cmFtZUlELApAQCAtNTkzMywyNiArNTkzMywyMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVk
ZWREYXRhYmFzZVF1b3RhCiAgICAgaWYgKHJlY29yZHMuYXJlQmVpbmdQcm9jZXNzZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3Jk
KiByZWNvcmQgPSByZWNvcmRzLm5leHQoKTsKLSAgICB3aGlsZSAocmVjb3JkKSB7CisgICAgd2hp
bGUgKGF1dG8qIHJlY29yZCA9IHJlY29yZHMubmV4dCgpKSB7CiAgICAgICAgIFdlYkZyYW1lUHJv
eHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShyZWNvcmQtPmZyYW1lSUQpOwogICAgICAg
ICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAotICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9y
aWdpbj4gb3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihyZWNvcmQtPm9yaWdpbklkZW50aWZpZXIpLT5z
ZWN1cml0eU9yaWdpbigpKTsKLSAgICAgICAgYXV0byBjdXJyZW50UmVwbHkgPSByZWNvcmQtPnJl
cGx5OwotICAgICAgICBtX3VpQ2xpZW50LT5leGNlZWRlZERhdGFiYXNlUXVvdGEodGhpcywgZnJh
bWUsIG9yaWdpbi5nZXQoKSwKLSAgICAgICAgICAgIHJlY29yZC0+ZGF0YWJhc2VOYW1lLCByZWNv
cmQtPmRpc3BsYXlOYW1lLCByZWNvcmQtPmN1cnJlbnRRdW90YSwKLSAgICAgICAgICAgIHJlY29y
ZC0+Y3VycmVudE9yaWdpblVzYWdlLCByZWNvcmQtPmN1cnJlbnREYXRhYmFzZVVzYWdlLCByZWNv
cmQtPmV4cGVjdGVkVXNhZ2UsCi0gICAgICAgICAgICBbY3VycmVudFJlcGx5XSh1bnNpZ25lZCBs
b25nIGxvbmcgbmV3UXVvdGEpIHsgY3VycmVudFJlcGx5LT5zZW5kKG5ld1F1b3RhKTsgfSk7Ci0K
LSAgICAgICAgcmVjb3JkID0gcmVjb3Jkcy5uZXh0KCk7CisgICAgICAgIGF1dG8gb3JpZ2luID0g
QVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFi
YXNlSWRlbnRpZmllcihyZWNvcmQtPm9yaWdpbklkZW50aWZpZXIpLT5zZWN1cml0eU9yaWdpbigp
KTsKKyAgICAgICAgbV91aUNsaWVudC0+ZXhjZWVkZWREYXRhYmFzZVF1b3RhKHRoaXMsIGZyYW1l
LCBvcmlnaW4ucHRyKCksIHJlY29yZC0+ZGF0YWJhc2VOYW1lLCByZWNvcmQtPmRpc3BsYXlOYW1l
LCByZWNvcmQtPmN1cnJlbnRRdW90YSwgcmVjb3JkLT5jdXJyZW50T3JpZ2luVXNhZ2UsIHJlY29y
ZC0+Y3VycmVudERhdGFiYXNlVXNhZ2UsIHJlY29yZC0+ZXhwZWN0ZWRVc2FnZSwgW2N1cnJlbnRS
ZXBseSA9IFdURk1vdmUocmVjb3JkLT5yZXBseSldKHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90
YSkgeworICAgICAgICAgICAgY3VycmVudFJlcGx5KG5ld1F1b3RhKTsKKyAgICAgICAgfSk7CiAg
ICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRR
dW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5ZWRSZXBseT4mJiBy
ZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3Rh
LCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsK
ICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpLT5zZWN1cml0eU9y
aWdpbigpOwotICAgIG1fdWlDbGllbnQtPnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEodGhpcywgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIGN1cnJlbnRRdW90YSwgdG90YWxCeXRlc05l
ZWRlZCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90
YSkgeyByZXBseS0+c2VuZChuZXdRdW90YSk7IH0pOworICAgIG1fdWlDbGllbnQtPnJlYWNoZWRB
cHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodGhpcywgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIGN1
cnJlbnRRdW90YSwgdG90YWxCeXRlc05lZWRlZCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKHVu
c2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSkgeworICAgICAgICByZXBseShuZXdRdW90YSk7Cisg
ICAgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNz
aW9uRm9yRnJhbWUodWludDY0X3QgZ2VvbG9jYXRpb25JRCwgdWludDY0X3QgZnJhbWVJRCwgU3Ry
aW5nIG9yaWdpbklkZW50aWZpZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMTEsNyArMTIxMSw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0Rm9jdXMoYm9vbCBmb2N1c2VkKTsKICAgICB2b2lkIHNldFdpbmRvd0Zy
YW1lKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwotICAgIHZvaWQgZ2V0V2luZG93RnJhbWUo
UmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lOjpEZWxheWVkUmVwbHk+
JiYpOworICAgIHZvaWQgZ2V0V2luZG93RnJhbWUoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0
V2luZG93RnJhbWU6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGdldFdpbmRvd0ZyYW1lV2l0
aENhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6RmxvYXRSZWN0KT4mJik7CiAKICAgICBi
b29sIGlzUmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUmVzb3Vy
Y2VDYWNoaW5nRGlzYWJsZWQ7IH0KQEAgLTEzNjYsMTEgKzEzNjYsMTEgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBT
dHJpbmcmIHVybCwgdWludDY0X3QgZnJhbWVJRCk7CiAKICAgICAvLyBVSSBjbGllbnQKLSAgICB2
b2lkIGNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0
aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6V2luZG93RmVh
dHVyZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBjcmVhdGVOZXdQ
YWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6
OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNob3dQYWdlKCk7Ci0gICAgdm9pZCBydW5KYXZh
U2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkph
dmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5PiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRD
b25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYsIGNvbnN0IFN0cmluZyYsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2Ny
aXB0Q29uZmlybTo6RGVsYXllZFJlcGx5PiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9t
cHQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBydW5KYXZh
U2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNj
cmlwdEFsZXJ0OjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmly
bSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBj
b25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmly
bTo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdCh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0
UHJvbXB0OjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBzZXRTdGF0dXNUZXh0KGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViSGl0VGVzdFJlc3Vs
dERhdGEmJiwgdWludDMyX3QgbW9kaWZpZXJzLCBVc2VyRGF0YSYmKTsKIApAQCAtMTM3OCwyOSAr
MTM3OCwyOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlj
a2VkKHVpbnQzMl90IG9wYXF1ZVBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBsdWdpblVSTFN0cmluZywgY29uc3QgU3RyaW5n
JiBwbHVnaW5zUGFnZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKTsKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCB3ZWJHTFBvbGljeUZvclVSTChX
ZWJDb3JlOjpVUkwmJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9y
VVJMOjpEZWxheWVkUmVwbHk+JiYpOwotICAgIHZvaWQgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJM
KFdlYkNvcmU6OlVSTCYmLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdM
UG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JV
UkwoV2ViQ29yZTo6VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9y
VVJMOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwo
V2ViQ29yZTo6VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGlj
eUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICB2
b2lkIHNldFRvb2xiYXJzQXJlVmlzaWJsZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSk7Ci0gICAg
dm9pZCBnZXRUb29sYmFyc0FyZVZpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okdl
dFRvb2xiYXJzQXJlVmlzaWJsZTo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFRvb2xi
YXJzQXJlVmlzaWJsZShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2li
bGU6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNldE1lbnVCYXJJc1Zpc2libGUoYm9vbCBt
ZW51QmFySXNWaXNpYmxlKTsKLSAgICB2b2lkIGdldE1lbnVCYXJJc1Zpc2libGUoUmVmPE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseT4mJik7
CisgICAgdm9pZCBnZXRNZW51QmFySXNWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okdl
dE1lbnVCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNldFN0YXR1c0Jh
cklzVmlzaWJsZShib29sIHN0YXR1c0JhcklzVmlzaWJsZSk7Ci0gICAgdm9pZCBnZXRTdGF0dXNC
YXJJc1Zpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlz
aWJsZTo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFN0YXR1c0JhcklzVmlzaWJsZShN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBs
eSYmKTsKICAgICB2b2lkIHNldElzUmVzaXphYmxlKGJvb2wgaXNSZXNpemFibGUpOwotICAgIHZv
aWQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2NyZWVuUG9pbnQs
IFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JlZW5Ub1Jvb3RWaWV3OjpEZWxheWVkUmVw
bHk+JiYpOwotICAgIHZvaWQgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiB2aWV3UmVjdCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJvb3RWaWV3VG9TY3JlZW46
OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBzY3JlZW5Qb2ludCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyZWVu
VG9Sb290Vmlldzo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgcm9vdFZpZXdUb1NjcmVlbihj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
Um9vdFZpZXdUb1NjcmVlbjo6RGVsYXllZFJlcGx5JiYpOwogI2lmIFBMQVRGT1JNKElPUykKICAg
ICB2b2lkIGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBzY3JlZW5Qb2ludCwgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KTsKICAgICB2
b2lkIHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHZpZXdSZWN0LCBXZWJDb3JlOjpJbnRSZWN0JiByZXN1bHQpOwogI2VuZGlmCi0gICAgdm9pZCBy
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBSZWZQdHI8TWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVk
UmVwbHk+KTsKKyAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbDo6RGVsYXllZFJlcGx5KTsKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGll
cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKTsKICAgICB2b2lkIHBhZ2VEaWRT
Y3JvbGwoKTsKICAgICB2b2lkIHJ1bk9wZW5QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNl
dHRpbmdzJik7CiAgICAgdm9pZCBwcmludEZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpOwotICAgIHZv
aWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
b3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9y
aWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0
ZWRVc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90
YTo6RGVsYXllZFJlcGx5PiYmKTsKLSAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50
UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhOjpEZWxheWVkUmVwbHk+JiYp
OworICAgIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3Qg
Y3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0
X3QgZXhwZWN0ZWRVc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFz
ZVF1b3RhOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgdWludDY0X3QgY3Vy
cmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhOjpEZWxheWVkUmVwbHkmJik7
CiAgICAgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3Qg
Z2VvbG9jYXRpb25JRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIp
OwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDIyNzY4NykKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAyLDcg
KzUwMiw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICBy
ZXR1cm4gKm1fbmV0d29ya1Byb2Nlc3M7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6Om5ldHdv
cmtQcm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXR3b3JrUHJvY2Vzc1Byb3h5
LCBWZWN0b3I8UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4mJiBwZW5kaW5nUmVwbGllcykKK3ZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXR3
b3JrUHJvY2Vzc1Byb3h5LCBWZWN0b3I8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcGVuZGluZ1JlcGxpZXMpCiB7
CiAgICAgbmV0d29ya1Byb2Nlc3NGYWlsZWRUb0xhdW5jaChuZXR3b3JrUHJvY2Vzc1Byb3h5KTsK
ICAgICBBU1NFUlQoIW1fbmV0d29ya1Byb2Nlc3MpOwpAQCAtNTI4LDcgKzUyOCw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzRmFpbGUKICAgICBtX25ldHdvcmtQcm9jZXNz
ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAg
IGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CiAgICAgQVNTRVJUKG1fbmV0d29ya1Byb2Nlc3MpOwpA
QCAtNTczLDcgKzU3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZVN0b3JhZ2VQcm9j
ZXMKICAgICBtX3N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6
SW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3RvcmUocmVsZXZhbnREYXRhU3RvcmUtPnN0b3JhZ2VQcm9j
ZXNzUGFyYW1ldGVycygpKSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFN0b3Jh
Z2VQcm9jZXNzQ29ubmVjdGlvbihib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIFBBTDo6U2Vz
c2lvbklEIGluaXRpYWxTZXNzaW9uSUQsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihib29sIGlzU2Vydmlj
ZVdvcmtlclByb2Nlc3MsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQsIE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5JiYgcmVwbHkpCiB7CiAgICAgZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0
b3JlKFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nTm9uRGVmYXVsdERhdGFTdG9yZUZvclNlc3Np
b25JRChpbml0aWFsU2Vzc2lvbklEKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDE0ICszMTQsMTQg
QEAgcHVibGljOgogICAgIC8vIE5ldHdvcmsgUHJvY2VzcyBNYW5hZ2VtZW50CiAgICAgTmV0d29y
a1Byb2Nlc3NQcm94eSYgZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0
aFdlYnNpdGVEYXRhU3RvcmUgPSBudWxscHRyKTsKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KiBu
ZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KLSAgICB2
b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgVmVjdG9yPFJl
ZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4+JiYpOworICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdv
cmtQcm9jZXNzUHJveHkmLCBWZWN0b3I8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwogICAgIHZvaWQgbmV0d29y
a1Byb2Nlc3NGYWlsZWRUb0xhdW5jaChOZXR3b3JrUHJvY2Vzc1Byb3h5Jik7CiAKLSAgICB2b2lk
IGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZv
aWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogCiAgICAgdm9p
ZCBlbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9y
ZSogcmVsZXZhbnREYXRhU3RvcmUpOwogICAgIFN0b3JhZ2VQcm9jZXNzUHJveHkqIHN0b3JhZ2VQ
cm9jZXNzKCkgeyByZXR1cm4gbV9zdG9yYWdlUHJvY2Vzcy5nZXQoKTsgfQotICAgIHZvaWQgZ2V0
U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgUEFM
OjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2
b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihib29sIGlzU2VydmljZVdvcmtlclByb2Nl
c3MsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQsIE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogICAg
IHZvaWQgc3RvcmFnZVByb2Nlc3NDcmFzaGVkKFN0b3JhZ2VQcm9jZXNzUHJveHkqKTsKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoU3RvcmFnZVByb2Nlc3NQcm94eSYsIHN0ZDo6b3B0aW9u
YWw8UEFMOjpTZXNzaW9uSUQ+KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg5LDE4ICs1ODks
MTggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpbnMoYm9vbCByZQogI2VuZGlmIC8v
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24o
dWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3Zv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBw
bHVnaW5Qcm9jZXNzVG9rZW4sIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBQbHVnaW5Qcm9j
ZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ocGx1Z2lu
UHJvY2Vzc1Rva2VuLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYg
cmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgbV9wcm9jZXNzUG9vbC0+Z2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKFdURk1vdmUocmVwbHkpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vz
c2lvbklELCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6
Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9u
SUQsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgbV9wcm9jZXNzUG9vbC0+Z2V0U3RvcmFn
ZVByb2Nlc3NDb25uZWN0aW9uKGlzU2VydmljZVdvcmtlclByb2Nlc3MoKSwgaW5pdGlhbFNlc3Np
b25JRCwgV1RGTW92ZShyZXBseSkpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsMTAgKzI0MSwx
MCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0UGx1Z2lucyhib29sIHJlZnJlc2gsIFZlY3RvcjxX
ZWJDb3JlOjpQbHVnaW5JbmZvPiYgcGx1Z2lucywgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+
JiBhcHBsaWNhdGlvblBsdWdpbnMpOwogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHZvaWQgZ2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBSZWY8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseT4mJik7CisgICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBw
bHVnaW5Qcm9jZXNzVG9rZW4sIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAjZW5kaWYKLSAgICB2b2lkIGdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwotICAgIHZvaWQgZ2V0
U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQs
IFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24o
UEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAKICAgICBi
b29sIHBsYXRmb3JtSXNCZWluZ0RlYnVnZ2VkKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRBbGxv
d05vblZhbGlkSW5qZWN0ZWRDb2RlKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlz
aW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnByb2Nlc3NXaWxsU2h1CiAgICAgQVNTRVJUX1VOVVNFRChjb25u
ZWN0aW9uLCB0aGlzLT5jb25uZWN0aW9uKCkgPT0gJmNvbm5lY3Rpb24pOwogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVk
UmVwbHk+JiYgcmVwbHkpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIG1fcGVuZGluZ0Nvbm5l
Y3Rpb25SZXBsaWVzLmFwcGVuZChXVEZNb3ZlKHJlcGx5KSk7CiAKQEAgLTE3Myw3ICsxNzMsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzCiB7CiAgICAgY2xlYXJD
YWxsYmFja1N0YXRlcygpOwogCi0gICAgVmVjdG9yPFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IHBlbmRpbmdS
ZXBsaWVzOworICAgIFZlY3RvcjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcGVuZGluZ1JlcGxpZXM7CiAgICAgcGVu
ZGluZ1JlcGxpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3BlbmRpbmdDb25uZWN0aW9uUmVw
bGllcy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgcmVwbHkgOiBtX3BlbmRpbmdDb25uZWN0aW9u
UmVwbGllcykKICAgICAgICAgcGVuZGluZ1JlcGxpZXMuYXBwZW5kKFdURk1vdmUocmVwbHkpKTsK
QEAgLTE4NiwxMiArMTg2LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1By
b2Nlc3MKIHsKICAgICAvLyBUaGUgbmV0d29yayBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9y
IGV4aXRlZCwgc2VuZCBhbnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KICAg
ICB3aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgewotICAgICAg
ICBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFr
ZUZpcnN0KCk7CisgICAgICAgIGF1dG8gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGll
cy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgICAgICBy
ZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoKSk7CisgICAgICAgIHJlcGx5KElQQzo6QXR0YWNo
bWVudCgpKTsKICNlbGlmIE9TKERBUldJTikKLSAgICAgICAgcmVwbHktPnNlbmQoSVBDOjpBdHRh
Y2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CisgICAgICAgIHJlcGx5KElQQzo6
QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOwogI2Vsc2UKICAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpAQCAtMjYyLDEyICsyNjIsMTIgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3bwogICAgIEFTU0VSVCghbV9wZW5kaW5nQ29u
bmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKTsKIAogICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBlbmRp
bmcgY29ubmVjdGlvbiByZXBseS4KLSAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9w
ZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CisgICAgYXV0byByZXBseSA9IG1f
cGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgVVNFKFVOSVhfRE9N
QUlOX1NPQ0tFVFMpCi0gICAgcmVwbHktPnNlbmQoY29ubmVjdGlvbklkZW50aWZpZXIpOworICAg
IHJlcGx5KGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKICNlbGlmIE9TKERBUldJTikKLSAgICByZXBs
eS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNI
X01TR19UWVBFX01PVkVfU0VORCkpOworICAgIHJlcGx5KElQQzo6QXR0YWNobWVudChjb25uZWN0
aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CiAjZWxzZQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAy
Mjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmKTsKICAg
ICB+TmV0d29ya1Byb2Nlc3NQcm94eSgpOwogCi0gICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsKIAogICAgIERvd25sb2FkUHJveHkqIGNyZWF0ZURv
d25sb2FkUHJveHkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKQEAgLTE0Miw3
ICsxNDIsNyBAQCBwcml2YXRlOgogICAgIFdlYlByb2Nlc3NQb29sJiBtX3Byb2Nlc3NQb29sOwog
ICAgIAogICAgIHVuc2lnbmVkIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsKLSAgICBE
ZXF1ZTxSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKKyAgICBE
ZXF1ZTxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CiAKICAgICBIYXNo
TWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4+IG1fcGVuZGlu
Z0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpG
dW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3M7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgxLDcgKzgxLDcgQEAgdWludDY0X3QgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnBsdWdpblBy
bwogICAgIHJldHVybiB0b2tlbjsKIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBSZWY8
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQogewogICAgIEFTU0VSVChwbHVnaW5Qcm9jZXNzVG9rZW4pOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
TWFuYWdlci5oCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3
LDcgQEAgcHVibGljOgogCiAgICAgdWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuKGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mLCBQbHVnaW5Qcm9jZXNzVHlwZSwgUGx1Z2luUHJvY2Vzc1NhbmRib3hQ
b2xpY3kpOwogCi0gICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBw
bHVnaW5Qcm9jZXNzVG9rZW4sIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eSYmKTsKICAgICB2b2lkIHJlbW92ZVBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzUHJv
eHkqKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShjb25zdCBQbHVnaW5Nb2R1bGVJbmZv
JiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KFZlY3RvcjxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3Bw
CShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCB2
b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxTaHV0CiAKIC8vIEFza3MgdGhlIHBs
dWctaW4gcHJvY2VzcyB0byBjcmVhdGUgYSBuZXcgY29ubmVjdGlvbiB0byBhIHdlYiBwcm9jZXNz
LiBUaGUgY29ubmVjdGlvbiBpZGVudGlmaWVyIHdpbGwgYmUgCiAvLyBlbmNvZGVkIGluIHRoZSBn
aXZlbiBhcmd1bWVudCBlbmNvZGVyIGFuZCBzZW50IGJhY2sgdG8gdGhlIGNvbm5lY3Rpb24gb2Yg
dGhlIGdpdmVuIHdlYiBwcm9jZXNzLgotdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBQbHVnaW5Q
cm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBs
eSkKIHsKICAgICBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5hcHBlbmQoV1RGTW92ZShyZXBs
eSkpOwogCkBAIC0xNTksMTIgKzE1OSwxMiBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGx1
Z2luUHJvY2Vzc0NyCiB7CiAgICAgLy8gVGhlIHBsdWctaW4gcHJvY2VzcyBtdXN0IGhhdmUgY3Jh
c2hlZCBvciBleGl0ZWQsIHNlbmQgYW55IHBlbmRpbmcgc3luYyByZXBsaWVzIHdlIG1pZ2h0IGhh
dmUuCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJl
cGxpZXMudGFrZUZpcnN0KCk7CisgICAgICAgIGF1dG8gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0
aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQot
ICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoKSwgZmFsc2UpOworICAgICAgICBy
ZXBseShJUEM6OkF0dGFjaG1lbnQoKSwgZmFsc2UpOwogI2VsaWYgT1MoREFSV0lOKQotICAgICAg
ICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQp
LCBmYWxzZSk7CisgICAgICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBF
X01PVkVfU0VORCksIGZhbHNlKTsKICNlbHNlCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAj
ZW5kaWYKQEAgLTI3NiwxMiArMjc2LDEyIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRD
cmVhdGVXZWJQcm8KICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1w
dHkoKSk7CiAKICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24gcmVwbHku
Ci0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXMudGFrZUZpcnN0KCk7CisgICAgYXV0byByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBs
aWVzLnRha2VGaXJzdCgpOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgcmVw
bHktPnNlbmQoY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2lu
SW5pdGlhbGl6YXRpb24pOworICAgIHJlcGx5KGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0
c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKICNlbGlmIE9TKERBUldJTikKLSAg
ICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgp
LCBNQUNIX01TR19UWVBFX01PVkVfU0VORCksIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5p
dGlhbGl6YXRpb24pOworICAgIHJlcGx5KElQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRp
Zmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgc3VwcG9ydHNBc3luY2hyb25v
dXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
NzYsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBBc2tzIHRoZSBwbHVnLWluIHByb2Nlc3Mg
dG8gY3JlYXRlIGEgbmV3IGNvbm5lY3Rpb24gdG8gYSB3ZWIgcHJvY2Vzcy4gVGhlIGNvbm5lY3Rp
b24gaWRlbnRpZmllciB3aWxsIGJlCiAgICAgLy8gZW5jb2RlZCBpbiB0aGUgZ2l2ZW4gYXJndW1l
bnQgZW5jb2RlciBhbmQgc2VudCBiYWNrIHRvIHRoZSBjb25uZWN0aW9uIG9mIHRoZSBnaXZlbiB3
ZWIgcHJvY2Vzcy4KLSAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHkmJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoV1RGOjpGdW5jdGlvbjx2b2lkIChW
ZWN0b3I8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgZGVsZXRlV2Vi
c2l0ZURhdGEoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIC8v
IFRoZSBjb25uZWN0aW9uIHRvIHRoZSBwbHVnLWluIGhvc3QgcHJvY2Vzcy4KICAgICBSZWZQdHI8
SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAKLSAgICBEZXF1ZTxSZWZQdHI8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseT4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOworICAgIERlcXVlPE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+
IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBtX3Bl
bmRpbmdGZXRjaFdlYnNpdGVEYXRhUmVxdWVzdHM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RG
OjpGdW5jdGlvbjx2b2lkIChWZWN0b3I8U3RyaW5nPik+PiBtX3BlbmRpbmdGZXRjaFdlYnNpdGVE
YXRhQ2FsbGJhY2tzOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9y
YWdlUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5
OjpkZWxldGVXZWJzaXRlRAogICAgIHNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEZWxl
dGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoc2Vzc2lvbklELCBkYXRhVHlwZXMsIG9yaWdpbnMsIGNh
bGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpnZXRTdG9yYWdl
UHJvY2Vzc0Nvbm5lY3Rpb24oYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBSZWY8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVk
UmVwbHk+JiYgcmVwbHkpCit2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQcm9j
ZXNzQ29ubmVjdGlvbihib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYg
cmVwbHkpCiB7CiAgICAgbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuYXBwZW5kKFdURk1vdmUo
cmVwbHkpKTsKIApAQCAtMTMwLDkgKzEzMCw5IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6
ZGlkQ2xvc2UoSVBDOjoKICAgICAgICAgYXV0byByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25S
ZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAg
ICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgpKTsKKyAgICAgICAgcmVwbHkoSVBDOjpB
dHRhY2htZW50KCkpOwogI2VsaWYgT1MoREFSV0lOKQotICAgICAgICByZXBseS0+c2VuZChJUEM6
OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKKyAgICAgICAgcmVwbHko
SVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CiAjZWxzZQogICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkBAIC0xNjIsMTIgKzE2MiwxMiBAQCB2b2lk
IFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVN0b3JhCiB7CiAgICAgQVNTRVJUKCFtX3Bl
bmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCi0gICAgUmVmUHRyPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworICAg
IGF1dG8gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAog
I2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIHJlcGx5LT5zZW5kKGNvbm5lY3Rpb25J
ZGVudGlmaWVyKTsKKyAgICByZXBseShjb25uZWN0aW9uSWRlbnRpZmllcik7CiAjZWxpZiBPUyhE
QVJXSU4pCi0gICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlm
aWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKKyAgICByZXBseShJUEM6OkF0
dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVf
U0VORCkpOwogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJv
eHkuaAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRl
RGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAotICAgIHZvaWQgZ2V0U3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgUmVmPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5PiYmKTsKKyAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihib29sIGlzU2Vy
dmljZVdvcmtlclByb2Nlc3MsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogCiBwcml2YXRlOgogICAgIFN0b3Jh
Z2VQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmKTsKQEAgLTkwLDcgKzkwLDcgQEAgcHJpdmF0
ZToKICAgICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9jZXNzUG9vbDsKIAogICAgIHVuc2lnbmVkIG1f
bnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsKLSAgICBEZXF1ZTxSZWY8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+
PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKKyAgICBEZXF1ZTxNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gbV9w
ZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxs
YmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9w
ZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3M7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIwMywxMCArMjAzLDEwIEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OnRlcm0KICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS50ZXJtaW5h
dGVXb3JrZXIoaWRlbnRpZmllciwgYXN5bmNXb3JrZXJUZXJtaW5hdGlvblRpbWVvdXQsIG51bGxw
dHIpOwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzeW5jVGVybWlu
YXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRl
bGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OnN5bmNUZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
TWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29y
a2VyOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS50ZXJtaW5hdGVXb3JrZXIoaWRlbnRpZmllciwgc3luY1dvcmtlclRlcm1pbmF0aW9u
VGltZW91dCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldIHsKLSAgICAgICAgcmVwbHktPnNlbmQo
KTsKKyAgICAgICAgcmVwbHkoKTsKICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIGZpcmVBY3RpdmF0
ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIHRlcm1p
bmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBz
eW5jVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8
TWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29y
a2VyOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlcihXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2VyOjpEZWxheWVkUmVwbHkmJik7CiAgICAg
dm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYm
LCBib29sIGhhc1NlY3VyaXR5RXJyb3IpOwogICAgIHZvaWQgbWF0Y2hBbGxDb21wbGV0ZWQodWlu
dDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnREYXRhPiYmKTsKICAgICB2b2lkIGNsYWltQ29tcGxldGVkKHVpbnQ2NF90IGNs
YWltUmVxdWVzdElkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OTUsNyArNzk1LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgdm9pZCBjb21wdXRl
UGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmlu
dEluZm8mLCBDYWxsYmFja0lELCBSZWY8TWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0Zv
clByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgY29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJp
bnRJbmZvJiwgQ2FsbGJhY2tJRCwgTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclBy
aW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHkmJik7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKEdUSykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM1
OCwxMCArMzM1OCwxMCBAQCB2b2lkIFdlYlBhZ2U6OmRpc3BhdGNoQXN5bmNocm9ub3VzVG91Y2hF
CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERy
YXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lELCBSZWY8TWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0Zv
clByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBh
Z2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQsIE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVsYXll
ZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgaWYgKHByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSkg
ewotICAgICAgICByZXBseS0+c2VuZCgxKTsKKyAgICAgICAgcmVwbHkoMSk7CiAgICAgICAgIElu
dFNpemUgc25hcHNob3RTaXplIHsgRmxvYXRTaXplIHsgcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVy
V2lkdGgsIHByaW50SW5mby5hdmFpbGFibGVQYXBlckhlaWdodCB9IH07CiAgICAgICAgIEludFJl
Y3Qgc25hcHNob3RSZWN0IHsgezAsIDB9LCBzbmFwc2hvdFNpemUgfTsKICAgICAgICAgYXV0byBw
ZGZEYXRhID0gcGRmU25hcHNob3RBdFNpemUoc25hcHNob3RSZWN0LCBzbmFwc2hvdFNpemUsIDAp
OwpAQCAtMzM3Niw3ICszMzc2LDcgQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmlu
dGluZ0FuZAogICAgIEFTU0VSVChwYWdlUmVjdHMuc2l6ZSgpID49IDEpOwogICAgIHN0ZDo6c2l6
ZV90IHBhZ2VDb3VudCA9IHBhZ2VSZWN0cy5zaXplKCk7CiAgICAgQVNTRVJUKHBhZ2VDb3VudCA8
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpOwotICAgIHJlcGx5LT5zZW5k
KHBhZ2VDb3VudCk7CisgICAgcmVwbHkocGFnZUNvdW50KTsKIAogICAgIFJldGFpblB0cjxDRk11
dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YTsKICAgICBkcmF3UGFnZXNUb1BERkltcGwoZnJhbWVJ
RCwgcHJpbnRJbmZvLCAwLCBwYWdlQ291bnQsIHBkZlBhZ2VEYXRhKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337233</attachid>
            <date>2018-04-04 15:39:21 -0700</date>
            <delta_ts>2018-04-04 15:53:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182269-20180404153920.patch</filename>
            <type>text/plain</type>
            <size>70167</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzAyODApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBACisyMDE4LTA0LTA0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIENvbXBsZXRp
b25IYW5kbGVycyBmb3IgRGVsYXllZFJlcGxpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVu
biBGYWJsZXQuCisKKyAgICAgICAgRGVsYXllZFJlcGxpZXMgc2hvdWxkIGJlIGEgbm9uY29weWFi
bGUsIG5vbi1yZWZjb3VudGFibGUgdHlwZS4gIFRoZXkgc2hvdWxkIGJlCisgICAgICAgIGNhbGxl
ZCBvbmNlLiAgVGhpcyBpcyB3aGF0IENvbXBsZXRpb25IYW5kbGVycyBhcmUgZm9yLgorCisgICAg
ICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4gIEp1c3QgY2xlYW5lciBjb2RlLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGVyZm9ybVN5bmNo
cm9ub3VzTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNo
cm9ub3VzTG9hZERhdGE6OlN5bmNocm9ub3VzTG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0Ojpz
ZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6Cisg
ICAgICAgIChJUEM6OmNhbGxNZW1iZXJGdW5jdGlvbkltcGwpOgorICAgICAgICAoSVBDOjpjYWxs
TWVtYmVyRnVuY3Rpb24pOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlRGVsYXllZCk6Cisg
ICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnNldEluaXRpYWxpemF0aW9uUmVwbHkp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnRha2VJbml0aWFsaXph
dGlvblJlcGx5KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luQXN5bmNocm9u
b3VzbHkpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKG1lc3NhZ2Vf
dG9fc3RydWN0X2RlY2xhcmF0aW9uKToKKyAgICAgICAgKGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxl
cik6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdv
cmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
Om5ldHdvcmtQcm9jZXNzRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3ND
cmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQ
cm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9y
YWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJv
Y2Vzc1Byb3h5OjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmNyZWF0ZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2Vi
R0xQb2xpY3lGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc29sdmVX
ZWJHTFBvbGljeUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0VG9v
bGJhcnNBcmVWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRNZW51
QmFySXNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRTdGF0dXNC
YXJJc1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFdpbmRvd0Zy
YW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzY3JlZW5Ub1Jvb3RWaWV3KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpyb290Vmlld1RvU2NyZWVuKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Omdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wdXRl
UGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERik6CisKIDIwMTgtMDQtMDQgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgbGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyIGZyb20gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMzAyNzkpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGUKICAgICBsb2FkZXItPnN0YXJ0KCk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBlcmZvcm1TeW5jaHJvbm91c0xvYWQo
Y29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzLCBSZWY8
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25v
dXNMb2FkOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpwZXJmb3JtU3luY2hyb25vdXNMb2FkKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycywgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBs
eSkKIHsKICAgICBhdXRvIGxvYWRlciA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGxv
YWRQYXJhbWV0ZXJzLCAqdGhpcywgV1RGTW92ZShyZXBseSkpOwogICAgIG1fbmV0d29ya1Jlc291
cmNlTG9hZGVycy5hZGQobG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciwgbG9hZGVyLnB0cigpKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDIzMDI3OCkKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAko
d29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAog
ICAgIHZvaWQgc2NoZWR1bGVSZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmKTsKLSAgICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoY29uc3QgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmLCBSZWY8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYpOwor
ICAgIHZvaWQgcGVyZm9ybVN5bmNocm9ub3VzTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycyYsIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVy
Zm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgbG9hZFBpbmco
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYm
IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMpOwogICAgIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3Ry
aW5nJik7CiAgICAgdm9pZCBwcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50
aWZpZXIsIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlz
aW9uIDIzMDI3OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTMgKzYyLDEzIEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZERhdGEgewotICAgIFN5bmNocm9ub3VzTG9hZERh
dGEoUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9y
bVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQorICAgIFN5bmNocm9ub3Vz
TG9hZERhdGEoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3Jt
U3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSkKICAgICAgICAgOiBkZWxheWVk
UmVwbHkoV1RGTW92ZShyZXBseSkpCiAgICAgewogICAgICAgICBBU1NFUlQoZGVsYXllZFJlcGx5
KTsKICAgICB9CiAgICAgUmVzb3VyY2VSZXF1ZXN0IGN1cnJlbnRSZXF1ZXN0OwotICAgIFJlZlB0
cjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJv
bm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4gZGVsYXllZFJlcGx5OworICAgIE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXll
ZFJlcGx5IGRlbGF5ZWRSZXBseTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAg
IFJlc291cmNlRXJyb3IgZXJyb3I7CiB9OwpAQCAtODIsMTEgKzgyLDExIEBAIHN0YXRpYyB2b2lk
IHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXMKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+
c2l6ZSgpKQogICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKIAotICAgIGRhdGEuZGVsYXllZFJlcGx5LT5zZW5kKGRhdGEuZXJyb3Is
IGRhdGEucmVzcG9uc2UsIHJlc3BvbnNlQnVmZmVyKTsKKyAgICBkYXRhLmRlbGF5ZWRSZXBseShk
YXRhLmVycm9yLCBkYXRhLnJlc3BvbnNlLCByZXNwb25zZUJ1ZmZlcik7CiAgICAgZGF0YS5kZWxh
eWVkUmVwbHkgPSBudWxscHRyOwogfQogCi1OZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlZlB0cjxN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91
c0xvYWQ6OkRlbGF5ZWRSZXBseT4mJiBzeW5jaHJvbm91c1JlcGx5KQorTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1T
eW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHN5bmNocm9ub3VzUmVwbHkpCiAgICAgOiBt
X3BhcmFtZXRlcnMgeyBwYXJhbWV0ZXJzIH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rp
b24gfQogICAgICwgbV9kZWZlcnNMb2FkaW5nIHsgcGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjMwMjc4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyAr
NTIsNyBAQCBjbGFzcyBFbnRyeTsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1Jlc291cmNlTG9hZGVyPiwgcHVibGljIE5ldHdv
cmtMb2FkQ2xpZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKGNvbnN0IE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgY29ubmVjdGlvbiwgUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5ID0g
bnVsbHB0cikKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKGNv
bnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBy
ZXBseSA9IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3
b3JrUmVzb3VyY2VMb2FkZXIocGFyYW1ldGVycywgY29ubmVjdGlvbiwgV1RGTW92ZShyZXBseSkp
KTsKICAgICB9CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6
Ci0gICAgTmV0d29ya1Jlc291cmNlTG9hZGVyKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZWZQdHI8TWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpE
ZWxheWVkUmVwbHk+JiYpOworICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcihjb25zdCBOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25v
dXNMb2FkOjpEZWxheWVkUmVwbHkmJik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAg
ICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyMzAy
NzgpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDYgKzU0LDggQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKK3RlbXBsYXRlPHR5
cGVuYW1lPiBzdHJ1Y3QgQ29kaW5nVHlwZTsKKwogZW51bSBjbGFzcyBTZW5kT3B0aW9uIHsKICAg
ICAvLyBXaGV0aGVyIHRoaXMgbWVzc2FnZSBzaG91bGQgYmUgZGlzcGF0Y2hlZCB3aGVuIHdhaXRp
bmcgZm9yIGEgc3luYyByZXBseS4KICAgICAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGZvciBzeW5j
aHJvbm91cyBtZXNzYWdlcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRs
ZU1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmgJKHJldmlzaW9uIDIzMDI3OCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0hhbmRsZU1lc3NhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFt
ZXNwYWNlIElQQyB7CkBAIC02MiwxNiArNjMsMTYgQEAgdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24o
QXJnc1R1cGxlJiYgYXJncwogCiAvLyBEaXNwYXRjaCBmdW5jdGlvbnMgd2l0aCBkZWxheWVkIHJl
cGx5IGFyZ3VtZW50cy4KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBl
bmFtZSBSLCB0eXBlbmFtZSBBcmdzVHVwbGUsIHNpemVfdC4uLiBBcmdzSW5kZXg+Ci12b2lkIGNh
bGxNZW1iZXJGdW5jdGlvbkltcGwoQyogb2JqZWN0LCBNRiBmdW5jdGlvbiwgUmVmPFI+JiYgZGVs
YXllZFJlcGx5LCBBcmdzVHVwbGUmJiBhcmdzLCBzdGQ6OmluZGV4X3NlcXVlbmNlPEFyZ3NJbmRl
eC4uLj4pCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1lIENILCB0
eXBlbmFtZSBBcmdzVHVwbGUsIHNpemVfdC4uLiBBcmdzSW5kZXg+Cit2b2lkIGNhbGxNZW1iZXJG
dW5jdGlvbkltcGwoQyogb2JqZWN0LCBNRiBmdW5jdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8Q0g+
JiYgY29tcGxldGlvbkhhbmRsZXIsIEFyZ3NUdXBsZSYmIGFyZ3MsIHN0ZDo6aW5kZXhfc2VxdWVu
Y2U8QXJnc0luZGV4Li4uPikKIHsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6Z2V0PEFy
Z3NJbmRleD4oc3RkOjpmb3J3YXJkPEFyZ3NUdXBsZT4oYXJncykpLi4uLCBXVEZNb3ZlKGRlbGF5
ZWRSZXBseSkpOworICAgIChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8QXJnc0luZGV4Pihz
dGQ6OmZvcndhcmQ8QXJnc1R1cGxlPihhcmdzKSkuLi4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1lIFIs
IHR5cGVuYW1lIEFyZ3NUdXBsZSwgdHlwZW5hbWUgQXJnc0luZGljaWVzID0gc3RkOjptYWtlX2lu
ZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxBcmdzVHVwbGU+Ojp2YWx1ZT4+Ci12b2lkIGNh
bGxNZW1iZXJGdW5jdGlvbihBcmdzVHVwbGUmJiBhcmdzLCBSZWY8Uj4mJiBkZWxheWVkUmVwbHks
IEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCit0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBN
RiwgdHlwZW5hbWUgQ0gsIHR5cGVuYW1lIEFyZ3NUdXBsZSwgdHlwZW5hbWUgQXJnc0luZGljaWVz
ID0gc3RkOjptYWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxBcmdzVHVwbGU+Ojp2
YWx1ZT4+Cit2b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihBcmdzVHVwbGUmJiBhcmdzLCBDb21wbGV0
aW9uSGFuZGxlcjxDSD4mJiBjb21wbGV0aW9uSGFuZGxlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlv
bikKIHsKLSAgICBjYWxsTWVtYmVyRnVuY3Rpb25JbXBsKG9iamVjdCwgZnVuY3Rpb24sIFdURk1v
dmUoZGVsYXllZFJlcGx5KSwgc3RkOjpmb3J3YXJkPEFyZ3NUdXBsZT4oYXJncyksIEFyZ3NJbmRp
Y2llcygpKTsKKyAgICBjYWxsTWVtYmVyRnVuY3Rpb25JbXBsKG9iamVjdCwgZnVuY3Rpb24sIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdGQ6OmZvcndhcmQ8QXJnc1R1cGxlPihhcmdzKSwg
QXJnc0luZGljaWVzKCkpOwogfQogCiAvLyBEaXNwYXRjaCBmdW5jdGlvbnMgd2l0aCBjb25uZWN0
aW9uIHBhcmFtZXRlciB3aXRoIG5vIHJlcGx5IGFyZ3VtZW50cy4KQEAgLTE3NCw4ICsxNzUsMTEg
QEAgdm9pZCBoYW5kbGVNZXNzYWdlRGVsYXllZChDb25uZWN0aW9uJiBjbwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgUmVmPHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseT4gZGVsYXllZFJl
cGx5ID0gYWRvcHRSZWYoKm5ldyB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkoY29ubmVjdGlvbiwg
V1RGTW92ZShyZXBseUVuY29kZXIpKSk7Ci0gICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUo
YXJndW1lbnRzKSwgV1RGTW92ZShkZWxheWVkUmVwbHkpLCBvYmplY3QsIGZ1bmN0aW9uKTsKKyAg
ICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbcmVwbHlFbmNv
ZGVyID0gV1RGTW92ZShyZXBseUVuY29kZXIpLCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0
aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKKyAgICAgICAgVDo6c2VuZChXVEZNb3Zl
KHJlcGx5RW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOworICAgIH07Cisg
ICAgCisgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVuY3Rpb24pOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBJUEMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuY3BwCShyZXZpc2lvbiAyMzAyNzgpCisrKyBTb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTEsMTUgKzkxLDE1IEBAIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6flBsdWdpbkNvbnRyb2xs
ZXIKICAgICAgICAgcmVsZWFzZU5QT2JqZWN0KG1fcGx1Z2luRWxlbWVudE5QT2JqZWN0KTsKIH0K
IAotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnNldEluaXRpYWxpemF0aW9uUmVwbHkoUmVm
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVw
bHk+JiYgcmVwbHkpCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0SW5pdGlhbGl6YXRp
b25SZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVs
YXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgQVNTRVJUKCFtX2luaXRpYWxpemF0aW9uUmVwbHkp
OwogICAgIG1faW5pdGlhbGl6YXRpb25SZXBseSA9IFdURk1vdmUocmVwbHkpOwogfQogCi1SZWZQ
dHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRS
ZXBseT4gUGx1Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpCitN
ZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5
IFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKQogewotICAg
IHJldHVybiBtX2luaXRpYWxpemF0aW9uUmVwbHk7CisgICAgcmV0dXJuIFdURk1vdmUobV9pbml0
aWFsaXphdGlvblJlcGx5KTsKIH0KIAogYm9vbCBQbHVnaW5Db250cm9sbGVyUHJveHk6OmluaXRp
YWxpemUoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oCShyZXZpc2lvbiAyMzAyNzgpCisrKyBTb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDggKzc0
LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0luaXRpYWxpemluZygpIGNvbnN0IHsgcmV0dXJu
IG1faXNJbml0aWFsaXppbmc7IH0KICAgICAKLSAgICB2b2lkIHNldEluaXRpYWxpemF0aW9uUmVw
bHkoUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxh
eWVkUmVwbHk+JiYpOwotICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiB0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpOwor
ICAgIHZvaWQgc2V0SW5pdGlhbGl6YXRpb25SZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5JiYpOworICAgIE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHkgdGFrZUluaXRpYWxp
emF0aW9uUmVwbHkoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0UGFpbnRUaW1lcigpOwpA
QCAtMTgzLDcgKzE4Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzVmlzaWJsZTsKICAgICBi
b29sIG1faXNXaW5kb3dWaXNpYmxlOwogCi0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+IG1faW5pdGlhbGl6YXRpb25S
ZXBseTsKKyAgICBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6
RGVsYXllZFJlcGx5IG1faW5pdGlhbGl6YXRpb25SZXBseTsKIAogICAgIFJlZlB0cjxQbHVnaW4+
IG1fcGx1Z2luOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDIzMDI3OCkKKysrIFNvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3OSwxMSArMTc5LDExIEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENs
b3NlKElQQzoKICAgICAgICAgZGVzdHJveVBsdWdpbkNvbnRyb2xsZXJQcm94eShwbHVnaW5Db250
cm9sbGVyc1tpXSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRlc3Ryb3lQbHVn
aW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgYm9vbCBhc3luY2hyb25vdXNDcmVhdGlvbklu
Y29tcGxldGUsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkRlc3Ryb3lQbHVn
aW46OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRl
c3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgYm9vbCBhc3luY2hyb25vdXND
cmVhdGlvbkluY29tcGxldGUsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVzdHJv
eVBsdWdpbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgLy8gV2UgcmV0dXJuIGltbWVk
aWF0ZWx5IGZyb20gdGhpcyBzeW5jaHJvbm91cyBJUEMuIFdlIHdhbnQgdG8gbWFrZSBzdXJlIHRo
ZSBwbHVnaW4gZGVzdHJ1Y3Rpb24gaXMganVzdCBhYm91dCB0byBzdGFydCBzbyBhdWRpbyBwbGF5
YmFjawogICAgIC8vIHdpbGwgZmluaXNoIHNvb24gYWZ0ZXIgcmV0dXJuaW5nLiBIb3dldmVyIHdl
IGRvbid0IHdhbnQgdG8gd2FpdCBmb3IgZGVzdHJ1Y3Rpb24gdG8gY29tcGxldGUgZnVsbHkgYXMg
dGhhdCBtYXkgdGFrZSBhIHdoaWxlLgotICAgIHJlcGx5LT5zZW5kKCk7CisgICAgcmVwbHkoKTsK
IAogICAgIC8vIEVuc3VyZSB3ZSBkb24ndCBjbGFtcCBhbnkgdGltZXJzIGR1cmluZyBkZXN0cnVj
dGlvbgogICAgIEFjdGl2aXR5QXNzZXJ0aW9uIGFjdGl2aXR5QXNzZXJ0aW9uKFBsdWdpblByb2Nl
c3M6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25BY3Rpdml0eSgpKTsKQEAgLTIzMiw3ICsyMzIsNyBA
QCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5JCiAjZW5kaWYKIH0KIAot
dm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKGNvbnN0IFBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJhbWV0ZXJzLCBSZWY8TWVzc2FnZXM6OldlYlByb2Nl
c3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQg
V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbihjb25zdCBQbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycywgTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0
aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIC8vIEVuc3Vy
ZSB3ZSBkb24ndCBjbGFtcCBhbnkgdGltZXJzIGR1cmluZyBpbml0aWFsaXphdGlvbgogICAgIEFj
dGl2aXR5QXNzZXJ0aW9uIGFjdGl2aXR5QXNzZXJ0aW9uKFBsdWdpblByb2Nlc3M6OnNpbmdsZXRv
bigpLmNvbm5lY3Rpb25BY3Rpdml0eSgpKTsKQEAgLTI0OSw5ICsyNDksOSBAQCB2b2lkIFdlYlBy
b2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4oCiAgICAgICAgIAogICAgICAgICAvLyBJZiBp
dHMgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGUgdGhlbiB3ZSBuZWVkIHRvIHJlc3BvbmQgdG8g
dGhpcyBtZXNzYWdlIHdpdGggdGhlIGNvcnJlY3QgaW5mb3JtYXRpb24gYWJvdXQgaXRzIGNyZWF0
aW9uLgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICByZXBseS0+c2VuZCh0cnVlLCBwbHVn
aW5Db250cm9sbGVyUHJveHktPndhbnRzV2hlZWxFdmVudHMoKSwgcGx1Z2luQ29udHJvbGxlclBy
b3h5LT5yZW1vdGVMYXllckNsaWVudElEKCkpOworICAgICAgICByZXBseSh0cnVlLCBwbHVnaW5D
b250cm9sbGVyUHJveHktPndhbnRzV2hlZWxFdmVudHMoKSwgcGx1Z2luQ29udHJvbGxlclByb3h5
LT5yZW1vdGVMYXllckNsaWVudElEKCkpOwogI2Vsc2UKLSAgICAgICAgcmVwbHktPnNlbmQodHJ1
ZSwgcGx1Z2luQ29udHJvbGxlclByb3h5LT53YW50c1doZWVsRXZlbnRzKCksIDApOworICAgICAg
ICByZXBseSh0cnVlLCBwbHVnaW5Db250cm9sbGVyUHJveHktPndhbnRzV2hlZWxFdmVudHMoKSwg
MCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI2Niw3ICsyNjYsNyBAQCB2
b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4oCiAgICAgdWludDMyX3QgcmVt
b3RlTGF5ZXJDbGllbnRJRCA9IDA7CiAgICAgY3JlYXRlUGx1Z2luSW50ZXJuYWwoY3JlYXRpb25Q
YXJhbWV0ZXJzLCByZXN1bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQp
OwogICAgIAotICAgIHJlcGx5LT5zZW5kKHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50cywgcmVtb3Rl
TGF5ZXJDbGllbnRJRCk7CisgICAgcmVwbHkocmVzdWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1v
dGVMYXllckNsaWVudElEKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRl
UGx1Z2luQXN5bmNocm9ub3VzbHkoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVh
dGlvblBhcmFtZXRlcnMpCkBAIC0zMTEsOCArMzExLDggQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVj
dGlvbjo6Y3JlYXRlUGx1Z2luQQogICAgIC8vIHN5bmNocm9ub3VzIHJlcGx5IGluc3RlYWQgb2Yg
c2VuZGluZyB0aGUgYXN5bmNocm9ub3VzIHJlcGx5LgogICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94
eSogcGx1Z2luQ29udHJvbGxlclByb3h5ID0gbV9wbHVnaW5Db250cm9sbGVycy5nZXQoY3JlYXRp
b25QYXJhbWV0ZXJzLnBsdWdpbkluc3RhbmNlSUQpOwogICAgIEFTU0VSVChwbHVnaW5Db250cm9s
bGVyUHJveHkpOwotICAgIGlmIChSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9u
OjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4gZGVsYXllZFN5bmNSZXBseSA9IHBsdWdpbkNv
bnRyb2xsZXJQcm94eS0+dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKSkgewotICAgICAgICBkZWxh
eWVkU3luY1JlcGx5LT5zZW5kKHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJD
bGllbnRJRCk7CisgICAgaWYgKGF1dG8gZGVsYXllZFN5bmNSZXBseSA9IHBsdWdpbkNvbnRyb2xs
ZXJQcm94eS0+dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKSkgeworICAgICAgICBkZWxheWVkU3lu
Y1JlcGx5KHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyMzAyNzgpCisrKyBT
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksOSArNjksOSBAQCBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxl
cnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNXZWJQ
cm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKLSAgICB2b2lkIGNyZWF0ZVBsdWdpbihj
b25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmLCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3ND
b25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBjcmVh
dGVQbHVnaW4oY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiwgTWVzc2FnZXM6OldlYlBy
b2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lk
IGNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVy
cyYpOwotICAgIHZvaWQgZGVzdHJveVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBi
b29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lk
IGRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgYm9vbCBhc3luY2hyb25v
dXNDcmVhdGlvbkluY29tcGxldGUsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVz
dHJveVBsdWdpbjo6RGVsYXllZFJlcGx5JiYpOwogICAgIAogICAgIHZvaWQgY3JlYXRlUGx1Z2lu
SW50ZXJuYWwoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiwgYm9vbCYgcmVzdWx0LCBi
b29sJiB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCYgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkocmV2aXNpb24g
MjMwMjc4KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkod29y
a2luZyBjb3B5KQpAQCAtMTE4LDE2ICsxMTgsMTQgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2Rl
Y2xhcmF0aW9uKG1lc3NhZwogICAgIGlmIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyAhPSBOb25l
OgogICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoREVMQVlFRF9BVFRSSUJVVEUpOgog
ICAgICAgICAgICAgc2VuZF9wYXJhbWV0ZXJzID0gWyhmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZSh4
LnR5cGUsIHgua2luZCksIHgubmFtZSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJz
XQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0cnVjdCBEZWxheWVkUmVwbHkgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVsYXllZFJlcGx5PiB7XG4nKQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBEZWxheWVkUmVwbHkoUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4pO1xuJykKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICAgICAgfkRlbGF5ZWRSZXBseSgpO1xuJykKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJ1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgYm9v
bCBzZW5kKCVzKTtcbicgJSAnLCAnLmpvaW4oWycgJy5qb2luKHgpIGZvciB4IGluIHNlbmRfcGFy
YW1ldGVyc10pKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQotICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICAgIHByaXZhdGU6XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247XG4nKQotICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiBtX2VuY29kZXI7XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIH07XG5c
bicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0g
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgnKQorICAgICAgICAgICAgaWYgbGVuKHNlbmRfcGFyYW1l
dGVycyk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJXMnICUgJywgJy5qb2luKFsn
ICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNdKSkKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyk+OycpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZv
aWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24m
JykKKyAgICAgICAgICAgIGlmIGxlbihzZW5kX3BhcmFtZXRlcnMpOgorICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJywgJXMnICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBz
ZW5kX3BhcmFtZXRlcnNdKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyk7XG4nKQogCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB0eXBlZGVmICVzIFJlcGx5O1xuJyAlIHJlcGx5X3R5
cGUobWVzc2FnZSkpCiAKQEAgLTUzMCwyNCArNTI4LDEyIEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdl
X2hhbmRsZXIoZmlsZSk6CiAgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcblxuJyAlIG1lc3NhZ2UuY29uZGl0aW9u
KQogCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCclczo6RGVsYXllZFJlcGx5OjpEZWxheWVk
UmVwbHkoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiBlbmNvZGVyKVxuJyAlIG1lc3NhZ2UubmFtZSkKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKVxuJykK
LSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAsIG1fZW5jb2RlcihXVEZNb3ZlKGVuY29k
ZXIpKVxuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCi0gICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCd9XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQotICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJXM6OkRlbGF5ZWRSZXBseTo6fkRlbGF5ZWRSZXBseSgp
XG4nICUgbWVzc2FnZS5uYW1lKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7XG4nKQot
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJ1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ2Jvb2wgJXM6OkRlbGF5ZWRSZXBs
eTo6c2VuZCglcylcbicgJSAobWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oWycgJy5qb2luKHgpIGZv
ciB4IGluIHNlbmRfcGFyYW1ldGVyc10pKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tc
bicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgQVNTRVJUKG1fZW5jb2Rlcik7XG4n
KQotICAgICAgICAgICAgcmVzdWx0ICs9IFsnICAgICptX2VuY29kZXIgPDwgJXM7XG4nICUgeC5u
YW1lIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10KLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICBib29sIF9yZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHko
V1RGTW92ZShtX2VuY29kZXIpKTtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
bV9jb25uZWN0aW9uID0gbnVsbHB0cjtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgcmV0dXJuIF9yZXN1bHQ7XG4nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAl
czo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbicgJSAobWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgIGlmIGxl
bihzZW5kX3BhcmFtZXRlcnMpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJXMn
ICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNdKSkKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJylcbntcbicpCisgICAgICAgICAgICByZXN1bHQgKz0g
WycgICAgKmVuY29kZXIgPDwgJXM7XG4nICUgeC5uYW1lIGZvciB4IGluIG1lc3NhZ2UucmVwbHlf
cGFyYW1ldGVyc10KKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjb25uZWN0aW9uLnNl
bmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnfVxuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKIApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzAyNzgpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzEsNyArMjMxLDcgQEAgcHVibGljOgogICAgICAgICB1aW50NjRfdCBjdXJyZW50T3Jp
Z2luVXNhZ2U7CiAgICAgICAgIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlOwogICAgICAg
ICB1aW50NjRfdCBleHBlY3RlZFVzYWdlOwotICAgICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+IHJlcGx5OworICAg
ICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5
ZWRSZXBseSByZXBseTsKICAgICB9OwogCiAgICAgc3RhdGljIEV4Y2VlZGVkRGF0YWJhc2VRdW90
YVJlY29yZHMmIHNpbmdsZXRvbigpOwpAQCAtMjM5LDcgKzIzOSw3IEBAIHB1YmxpYzoKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVjb3JkPiBjcmVhdGVSZWNvcmQodWludDY0X3QgZnJhbWVJRCwgU3Ry
aW5nIG9yaWdpbklkZW50aWZpZXIsCiAgICAgICAgIFN0cmluZyBkYXRhYmFzZU5hbWUsIFN0cmlu
ZyBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLAogICAgICAgICB1aW50NjRfdCBj
dXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRf
dCBleHBlY3RlZFVzYWdlLCAKLSAgICAgICAgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4
Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICAgICAgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHkmJik7CiAK
ICAgICB2b2lkIGFkZChzdGQ6OnVuaXF1ZV9wdHI8UmVjb3JkPik7CiAgICAgYm9vbCBhcmVCZWlu
Z1Byb2Nlc3NlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXJyZW50UmVjb3JkOyB9CkBAIC0yNjIs
NyArMjYyLDcgQEAgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcyYgRXhjZWVkZWREYQogc3Rk
Ojp1bmlxdWVfcHRyPEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OlJlY29yZD4gRXhjZWVk
ZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6Y3JlYXRlUmVjb3JkKAogICAgIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCBTdHJpbmcgZGF0YWJhc2VOYW1lLCBTdHJpbmcg
ZGlzcGxheU5hbWUsCiAgICAgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50
T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLAotICAgIHVpbnQ2NF90
IGV4cGVjdGVkVXNhZ2UsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFi
YXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKKyAgICB1aW50NjRfdCBleHBlY3RlZFVz
YWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5
ZWRSZXBseSYmIHJlcGx5KQogewogICAgIGF1dG8gcmVjb3JkID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZWNvcmQ+KCk7CiAgICAgcmVjb3JkLT5mcmFtZUlEID0gZnJhbWVJRDsKQEAgLTQwNDIsMjAgKzQw
NDIsMjAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZQogCiAvLyBV
SUNsaWVudAogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUlu
Zm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFn
ZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0Zl
YXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBSZWY8
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5PiYmIHJl
cGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0
YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJl
cywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAg
ICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MtPndlYkZyYW1lKG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YS5mcmFtZUlEKSk7CiAgICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBtX3Byb2Nlc3MtPndlYlBh
Z2Uob3JpZ2luYXRpbmdQYWdlSUQpKTsKIAogICAgIGF1dG8gbWFpbkZyYW1lVVJMID0gbV9tYWlu
RnJhbWUtPnVybCgpOwogCi0gICAgbV91aUNsaWVudC0+Y3JlYXRlTmV3UGFnZSgqdGhpcywgV1RG
TW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mbyksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUod2lu
ZG93RmVhdHVyZXMpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWZQdHI8V2ViUGFnZVByb3h5Pih0aGlzKSwgbWFpbkZyYW1lVVJMLCByZXF1
ZXN0LCByZXBseSA9IFdURk1vdmUocmVwbHkpXShSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdl
KSB7CisgICAgbV91aUNsaWVudC0+Y3JlYXRlTmV3UGFnZSgqdGhpcywgV1RGTW92ZShvcmlnaW5h
dGluZ0ZyYW1lSW5mbyksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUod2luZG93RmVhdHVyZXMp
LCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgbWFpbkZyYW1lVVJMLCByZXF1ZXN0LCByZXBseSA9IFdURk1vdmUocmVw
bHkpXShSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlKSB7CiAgICAgICAgIGlmICghbmV3UGFn
ZSkgewotICAgICAgICAgICAgcmVwbHktPnNlbmQoMCwgeyB9KTsKKyAgICAgICAgICAgIHJlcGx5
KDAsIHsgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICByZXBs
eS0+c2VuZChuZXdQYWdlLT5wYWdlSUQoKSwgbmV3UGFnZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKCkp
OworICAgICAgICByZXBseShuZXdQYWdlLT5wYWdlSUQoKSwgbmV3UGFnZS0+Y3JlYXRpb25QYXJh
bWV0ZXJzKCkpOwogCiAgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OmNsb25lU2Vzc2lvbkRhdGEo
KnRoaXMsICpuZXdQYWdlKTsKICAgICAgICAgbmV3UGFnZS0+bV9zaG91bGRTdXBwcmVzc0FwcExp
bmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uID0gaG9zdHNBcmVFcXVhbChVUkwoUGFy
c2VkVVJMU3RyaW5nLCBtYWluRnJhbWVVUkwpLCByZXF1ZXN0LnVybCgpKTsKQEAgLTQwOTEsNyAr
NDA5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZVBhZ2UoYm9vbCBzdG9wUmUKICAgICBt
X3VpQ2xpZW50LT5jbG9zZSh0aGlzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNl
Y3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFJlZjxNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJG
cmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKQEAgLTQxMDQsMTEgKzQx
MDQsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydCh1aQogICAgICAg
ICAgICAgYXV0b21hdGlvblNlc3Npb24tPndpbGxTaG93SmF2YVNjcmlwdERpYWxvZygqdGhpcyk7
CiAgICAgfQogICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRBbGVydCh0aGlzLCBtZXNzYWdl
LCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSB7Ci0gICAg
ICAgIHJlcGx5LT5zZW5kKCk7CisgICAgICAgIHJlcGx5KCk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0Q29uZmlybSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVs
YXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25m
aXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlP
cmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVu
SmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1l
UHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdF
X0NIRUNLKGZyYW1lKTsKQEAgLTQxMjIsMTEgKzQxMjIsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRDb25maXJtKAogICAgIH0KIAogICAgIG1fdWlDbGllbnQtPnJ1bkphdmFT
Y3JpcHRDb25maXJtKHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgW3JlcGx5
ID0gV1RGTW92ZShyZXBseSldKGJvb2wgcmVzdWx0KSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKHJl
c3VsdCk7CisgICAgICAgIHJlcGx5KHJlc3VsdCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5K
YXZhU2NyaXB0UHJvbXB0OjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdFByb21wdCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZGVmYXVsdFZhbHVlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0
UHJvbXB0OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBXZWJGcmFtZVByb3h5KiBmcmFt
ZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFt
ZSk7CkBAIC00MTQwLDcgKzQxNDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dFByb21wdCh1CiAgICAgfQogCiAgICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdFByb21wdCh0
aGlzLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgW3JlcGx5
ID0gV1RGTW92ZShyZXBseSldKGNvbnN0IFN0cmluZyYgcmVzdWx0KSB7Ci0gICAgICAgIHJlcGx5
LT5zZW5kKHJlc3VsdCk7CisgICAgICAgIHJlcGx5KHJlc3VsdCk7CiAgICAgfSk7CiB9CiAKQEAg
LTQyMDksMjQgKzQyMDksMjQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVuYXZhaWxhYmxlUGx1Z2lu
QnV0dAogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaWYgRU5BQkxF
KFdFQkdMKQotdm9pZCBXZWJQYWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVybCwg
UmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVw
bHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6d2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYg
dXJsLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJl
cGx5JiYgcmVwbHkpCiB7CiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewogICAgICAgICBt
X25hdmlnYXRpb25DbGllbnQtPndlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsLCBbcmVwbHkgPSBX
VEZNb3ZlKHJlcGx5KV0oV2ViR0xMb2FkUG9saWN5IHBvbGljeSkgewotICAgICAgICAgICAgcmVw
bHktPnNlbmQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBvbGljeSkpOworICAgICAgICAgICAgcmVw
bHkoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBvbGljeSkpOwogICAgICAgICB9KTsKICAgICB9IGVs
c2UKLSAgICAgICAgcmVwbHktPnNlbmQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fbG9hZGVyQ2xp
ZW50LT53ZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCkpKTsKKyAgICAgICAgcmVwbHkoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KG1fbG9hZGVyQ2xpZW50LT53ZWJHTExvYWRQb2xpY3koKnRoaXMsIHVy
bCkpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChV
UkwmJiB1cmwsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xpY3lG
b3JVUkw6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXNvbHZl
V2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYgdXJsLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXNv
bHZlV2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIGlmICht
X25hdmlnYXRpb25DbGllbnQpIHsKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5yZXNvbHZl
V2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShXZWJH
TExvYWRQb2xpY3kgcG9saWN5KSB7Ci0gICAgICAgICAgICByZXBseS0+c2VuZChzdGF0aWNfY2Fz
dDx1aW50MzJfdD4ocG9saWN5KSk7CisgICAgICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50
MzJfdD4ocG9saWN5KSk7CiAgICAgICAgIH0pOwogICAgIH0gZWxzZQotICAgICAgICByZXBseS0+
c2VuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9sb2FkZXJDbGllbnQtPnJlc29sdmVXZWJHTExv
YWRQb2xpY3koKnRoaXMsIHVybCkpKTsKKyAgICAgICAgcmVwbHkoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KG1fbG9hZGVyQ2xpZW50LT5yZXNvbHZlV2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwpKSk7
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCkBAIC00MjM1LDEwICs0MjM1LDEwIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRUb29sYmFyc0FyZVZpc2libGUKICAgICBtX3VpQ2xpZW50LT5z
ZXRUb29sYmFyc0FyZVZpc2libGUoKnRoaXMsIHRvb2xiYXJzQXJlVmlzaWJsZSk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpnZXRUb29sYmFyc0FyZVZpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJsZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQor
dm9pZCBXZWJQYWdlUHJveHk6OmdldFRvb2xiYXJzQXJlVmlzaWJsZShNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGU6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewog
ICAgIG1fdWlDbGllbnQtPnRvb2xiYXJzQXJlVmlzaWJsZSgqdGhpcywgW3JlcGx5ID0gV1RGTW92
ZShyZXBseSldKGJvb2wgdmlzaWJsZSkgewotICAgICAgICByZXBseS0+c2VuZCh2aXNpYmxlKTsK
KyAgICAgICAgcmVwbHkodmlzaWJsZSk7CiAgICAgfSk7CiB9CiAKQEAgLTQyNDcsMTAgKzQyNDcs
MTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lbnVCYXJJc1Zpc2libGUoYgogICAgIG1fdWlD
bGllbnQtPnNldE1lbnVCYXJJc1Zpc2libGUoKnRoaXMsIG1lbnVCYXJJc1Zpc2libGUpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWVudUJhcklzVmlzaWJsZShSZWY8TWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQor
dm9pZCBXZWJQYWdlUHJveHk6OmdldE1lbnVCYXJJc1Zpc2libGUoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6R2V0TWVudUJhcklzVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAg
bV91aUNsaWVudC0+bWVudUJhcklzVmlzaWJsZSgqdGhpcywgW3JlcGx5ID0gV1RGTW92ZShyZXBs
eSldIChib29sIHZpc2libGUpIHsKLSAgICAgICAgcmVwbHktPnNlbmQodmlzaWJsZSk7CisgICAg
ICAgIHJlcGx5KHZpc2libGUpOwogICAgIH0pOwogfQogCkBAIC00MjU5LDEwICs0MjU5LDEwIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTdGF0dXNCYXJJc1Zpc2libGUKICAgICBtX3VpQ2xpZW50
LT5zZXRTdGF0dXNCYXJJc1Zpc2libGUoKnRoaXMsIHN0YXR1c0JhcklzVmlzaWJsZSk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpnZXRTdGF0dXNCYXJJc1Zpc2libGUoUmVmPE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlzaWJsZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5
KQordm9pZCBXZWJQYWdlUHJveHk6OmdldFN0YXR1c0JhcklzVmlzaWJsZShNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQog
ewogICAgIG1fdWlDbGllbnQtPnN0YXR1c0JhcklzVmlzaWJsZSgqdGhpcywgW3JlcGx5ID0gV1RG
TW92ZShyZXBseSldIChib29sIHZpc2libGUpIHsKLSAgICAgICAgcmVwbHktPnNlbmQodmlzaWJs
ZSk7CisgICAgICAgIHJlcGx5KHZpc2libGUpOwogICAgIH0pOwogfQogCkBAIC00Mjc2LDEwICs0
Mjc2LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRXaW5kb3dGcmFtZShjb25zdCAKICAgICBt
X3VpQ2xpZW50LT5zZXRXaW5kb3dGcmFtZSgqdGhpcywgbV9wYWdlQ2xpZW50LmNvbnZlcnRUb0Rl
dmljZVNwYWNlKG5ld1dpbmRvd0ZyYW1lKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRX
aW5kb3dGcmFtZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0V2luZG93RnJhbWU6OkRl
bGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRXaW5kb3dGcmFtZShN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRXaW5kb3dGcmFtZTo6RGVsYXllZFJlcGx5JiYgcmVw
bHkpCiB7CiAgICAgbV91aUNsaWVudC0+d2luZG93RnJhbWUoKnRoaXMsIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcGx5ID0gV1RGTW92ZShyZXBseSldIChGbG9hdFJl
Y3QgZnJhbWUpIHsKLSAgICAgICAgcmVwbHktPnNlbmQobV9wYWdlQ2xpZW50LmNvbnZlcnRUb1Vz
ZXJTcGFjZShmcmFtZSkpOworICAgICAgICByZXBseShtX3BhZ2VDbGllbnQuY29udmVydFRvVXNl
clNwYWNlKGZyYW1lKSk7CiAgICAgfSk7CiB9CiAKQEAgLTQyODgsMTQgKzQyODgsMTQgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmdldFdpbmRvd0ZyYW1lV2l0aENhbAogICAgIG1fdWlDbGllbnQtPndp
bmRvd0ZyYW1lKCp0aGlzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBzY3JlZW5Qb2lu
dCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmVlblRvUm9vdFZpZXc6OkRlbGF5ZWRS
ZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JiBzY3JlZW5Qb2ludCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyZWVuVG9S
b290Vmlldzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgcmVwbHktPnNlbmQobV9wYWdl
Q2xpZW50LnNjcmVlblRvUm9vdFZpZXcoc2NyZWVuUG9pbnQpKTsKKyAgICByZXBseShtX3BhZ2VD
bGllbnQuc2NyZWVuVG9Sb290VmlldyhzY3JlZW5Qb2ludCkpOwogfQogICAgIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnJvb3RWaWV3VG9TY3JlZW4oY29uc3QgSW50UmVjdCYgdmlld1JlY3QsIFJlZjxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVuOjpEZWxheWVkUmVwbHk+JiYg
cmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb1NjcmVlbihjb25zdCBJbnRSZWN0
JiB2aWV3UmVjdCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZpZXdUb1NjcmVlbjo6RGVs
YXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgcmVwbHktPnNlbmQobV9wYWdlQ2xpZW50LnJvb3RW
aWV3VG9TY3JlZW4odmlld1JlY3QpKTsKKyAgICByZXBseShtX3BhZ2VDbGllbnQucm9vdFZpZXdU
b1NjcmVlbih2aWV3UmVjdCkpOwogfQogICAgIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTQzMTAs
NyArNDMxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpyb290Vmlld1RvQWNjZXNzaWJpbGkKIH0K
ICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5PiByZXBseSkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWw6OkRlbGF5ZWRSZXBseSByZXBseSkKIHsKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9
IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7
CkBAIC00MzIzLDcgKzQzMjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2Fk
Q29uZmlyCiAgICAgICAgICAgICBhdXRvbWF0aW9uU2Vzc2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0
RGlhbG9nKCp0aGlzKTsKICAgICB9CiAKLSAgICBtX3VpQ2xpZW50LT5ydW5CZWZvcmVVbmxvYWRD
b25maXJtUGFuZWwodGhpcywgbWVzc2FnZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2luLCBbcmVwbHld
KGJvb2wgcmVzdWx0KSB7IHJlcGx5LT5zZW5kKHJlc3VsdCk7IH0pOworICAgIG1fdWlDbGllbnQt
PnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJp
dHlPcmlnaW4sIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShib29sIHJlc3VsdCkgeyByZXBseShy
ZXN1bHQpOyB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVZpZXdwb3J0UHJv
cGVydGllcyhjb25zdCBWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIpCkBAIC02MDE4LDcgKzYwMTgs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0CiAgICAgICAgIG1f
bG9hZGVyQ2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKCp0
aGlzLCAqZnJhbWUsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmdldCgpKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90
IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2
NF90IGV4cGVjdGVkVXNhZ2UsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERh
dGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpl
eGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2lu
VXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVz
YWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5
ZWRSZXBseSYmIHJlcGx5KQogewogICAgIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHMmIHJl
Y29yZHMgPSBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpzaW5nbGV0b24oKTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiBuZXdS
ZWNvcmQgPSByZWNvcmRzLmNyZWF0ZVJlY29yZChmcmFtZUlELApAQCAtNjAyOSwyNiArNjAyOSwy
MyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhCiAgICAgaWYgKHJl
Y29yZHMuYXJlQmVpbmdQcm9jZXNzZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXhjZWVk
ZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkKiByZWNvcmQgPSByZWNvcmRzLm5leHQoKTsK
LSAgICB3aGlsZSAocmVjb3JkKSB7CisgICAgd2hpbGUgKGF1dG8qIHJlY29yZCA9IHJlY29yZHMu
bmV4dCgpKSB7CiAgICAgICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJG
cmFtZShyZWNvcmQtPmZyYW1lSUQpOwogICAgICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAot
ICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gQVBJOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmll
cihyZWNvcmQtPm9yaWdpbklkZW50aWZpZXIpLT5zZWN1cml0eU9yaWdpbigpKTsKLSAgICAgICAg
YXV0byBjdXJyZW50UmVwbHkgPSByZWNvcmQtPnJlcGx5OwotICAgICAgICBtX3VpQ2xpZW50LT5l
eGNlZWRlZERhdGFiYXNlUXVvdGEodGhpcywgZnJhbWUsIG9yaWdpbi5nZXQoKSwKLSAgICAgICAg
ICAgIHJlY29yZC0+ZGF0YWJhc2VOYW1lLCByZWNvcmQtPmRpc3BsYXlOYW1lLCByZWNvcmQtPmN1
cnJlbnRRdW90YSwKLSAgICAgICAgICAgIHJlY29yZC0+Y3VycmVudE9yaWdpblVzYWdlLCByZWNv
cmQtPmN1cnJlbnREYXRhYmFzZVVzYWdlLCByZWNvcmQtPmV4cGVjdGVkVXNhZ2UsCi0gICAgICAg
ICAgICBbY3VycmVudFJlcGx5XSh1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEpIHsgY3VycmVu
dFJlcGx5LT5zZW5kKG5ld1F1b3RhKTsgfSk7Ci0KLSAgICAgICAgcmVjb3JkID0gcmVjb3Jkcy5u
ZXh0KCk7CisgICAgICAgIGF1dG8gb3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihyZWNvcmQtPm9yaWdp
bklkZW50aWZpZXIpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICAgICAgbV91aUNsaWVudC0+ZXhj
ZWVkZWREYXRhYmFzZVF1b3RhKHRoaXMsIGZyYW1lLCBvcmlnaW4ucHRyKCksIHJlY29yZC0+ZGF0
YWJhc2VOYW1lLCByZWNvcmQtPmRpc3BsYXlOYW1lLCByZWNvcmQtPmN1cnJlbnRRdW90YSwgcmVj
b3JkLT5jdXJyZW50T3JpZ2luVXNhZ2UsIHJlY29yZC0+Y3VycmVudERhdGFiYXNlVXNhZ2UsIHJl
Y29yZC0+ZXhwZWN0ZWRVc2FnZSwgW2N1cnJlbnRSZXBseSA9IFdURk1vdmUocmVjb3JkLT5yZXBs
eSldKHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSkgeworICAgICAgICAgICAgY3VycmVudFJl
cGx5KG5ld1F1b3RhKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdp
bklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05l
ZWRlZCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGE6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
ZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVk
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHNl
Y3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVy
KG9yaWdpbklkZW50aWZpZXIpLT5zZWN1cml0eU9yaWdpbigpOwotICAgIG1fdWlDbGllbnQtPnJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodGhpcywgc2VjdXJpdHlPcmlnaW4uZ2V0
KCksIGN1cnJlbnRRdW90YSwgdG90YWxCeXRlc05lZWRlZCwgW3JlcGx5ID0gV1RGTW92ZShyZXBs
eSldKHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSkgeyByZXBseS0+c2VuZChuZXdRdW90YSk7
IH0pOworICAgIG1fdWlDbGllbnQtPnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEo
dGhpcywgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIGN1cnJlbnRRdW90YSwgdG90YWxCeXRlc05lZWRl
ZCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSkg
eworICAgICAgICByZXBseShuZXdRdW90YSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgZ2VvbG9j
YXRpb25JRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjMwMjc4KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyMjcsNyArMTIyNyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Rm9jdXMoYm9vbCBm
b2N1c2VkKTsKICAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYpOwotICAgIHZvaWQgZ2V0V2luZG93RnJhbWUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkdldFdpbmRvd0ZyYW1lOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0V2luZG93RnJh
bWUoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0V2luZG93RnJhbWU6OkRlbGF5ZWRSZXBseSYm
KTsKICAgICB2b2lkIGdldFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoV2Vi
Q29yZTo6RmxvYXRSZWN0KT4mJik7CiAKICAgICBib29sIGlzUmVzb3VyY2VDYWNoaW5nRGlzYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQ7IH0KQEAgLTEz
ODQsMTEgKzEzODQsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRs
ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgdWludDY0X3QgZnJhbWVJ
RCk7CiAKICAgICAvLyBVSSBjbGllbnQKLSAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJh
bWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRS
ZXBseT4mJik7CisgICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lk
IHNob3dQYWdlKCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgUmVm
PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5
PiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIFJlZjxNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5PiYm
KTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OkRlbGF5
ZWRSZXBseT4mJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVkUmVwbHkmJik7
CisgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYpOworICAgIHZv
aWQgcnVuSmF2YVNjcmlwdFByb21wdCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0OjpEZWxheWVkUmVwbHkmJik7CiAg
ICAgdm9pZCBzZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnQoV2ViSGl0VGVzdFJlc3VsdERhdGEmJiwgdWludDMyX3QgbW9kaWZpZXJz
LCBVc2VyRGF0YSYmKTsKIApAQCAtMTM5NiwyOSArMTM5NiwyOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKHVpbnQzMl90IG9wYXF1ZVBsdWdpblVu
YXZhaWxhYmlsaXR5UmVhc29uLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IHBsdWdpblVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwbHVnaW5zUGFnZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKTsK
ICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUoV0VCR0wp
Ci0gICAgdm9pZCB3ZWJHTFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwmJiwgUmVmPE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHk+JiYpOwotICAg
IHZvaWQgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCYmLCBSZWY8TWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHk+
JiYpOworICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7CisgICAg
dm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOwog
I2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIHNldFRvb2xiYXJzQXJlVmlzaWJsZShi
b29sIHRvb2xiYXJzQXJlVmlzaWJsZSk7Ci0gICAgdm9pZCBnZXRUb29sYmFyc0FyZVZpc2libGUo
UmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJsZTo6RGVsYXll
ZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFRvb2xiYXJzQXJlVmlzaWJsZShNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGU6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2
b2lkIHNldE1lbnVCYXJJc1Zpc2libGUoYm9vbCBtZW51QmFySXNWaXNpYmxlKTsKLSAgICB2b2lk
IGdldE1lbnVCYXJJc1Zpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVC
YXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXRNZW51QmFySXNWaXNp
YmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGU6OkRlbGF5ZWRS
ZXBseSYmKTsKICAgICB2b2lkIHNldFN0YXR1c0JhcklzVmlzaWJsZShib29sIHN0YXR1c0Jhcklz
VmlzaWJsZSk7Ci0gICAgdm9pZCBnZXRTdGF0dXNCYXJJc1Zpc2libGUoUmVmPE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlzaWJsZTo6RGVsYXllZFJlcGx5PiYmKTsKKyAg
ICB2b2lkIGdldFN0YXR1c0JhcklzVmlzaWJsZShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRT
dGF0dXNCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNldElzUmVzaXph
YmxlKGJvb2wgaXNSZXNpemFibGUpOwotICAgIHZvaWQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgc2NyZWVuUG9pbnQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTY3JlZW5Ub1Jvb3RWaWV3OjpEZWxheWVkUmVwbHk+JiYpOwotICAgIHZvaWQgcm9vdFZpZXdU
b1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgUmVmPE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJvb3RWaWV3VG9TY3JlZW46OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9p
ZCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Qb2ludCwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyZWVuVG9Sb290Vmlldzo6RGVsYXllZFJlcGx5JiYp
OworICAgIHZvaWQgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3
UmVjdCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZpZXdUb1NjcmVlbjo6RGVsYXllZFJl
cGx5JiYpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIGFjY2Vzc2liaWxpdHlTY3JlZW5U
b1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Qb2ludCwgV2ViQ29yZTo6
SW50UG9pbnQmIHdpbmRvd1BvaW50KTsKICAgICB2b2lkIHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5
U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBXZWJDb3JlOjpJbnRSZWN0
JiByZXN1bHQpOwogI2VuZGlmCi0gICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+KTsKKyAgICB2b2lkIHJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5KTsKICAgICB2
b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0
dHJpYnV0ZXMmKTsKICAgICB2b2lkIHBhZ2VEaWRTY3JvbGwoKTsKICAgICB2b2lkIHJ1bk9wZW5Q
YW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJik7CiAgICAgdm9pZCBwcmludEZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQpOwotICAgIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1
cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50
RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiYmKTsKLSAgICB2
b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNO
ZWVkZWQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZXhjZWVkZWREYXRhYmFz
ZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVp
bnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRf
dCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHkmJik7Cisg
ICAgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYg
b3JpZ2luSWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5
dGVzTmVlZGVkLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCByZXF1ZXN0R2VvbG9jYXRp
b25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgZ2VvbG9jYXRpb25JRCwgdWludDY0X3QgZnJh
bWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJl
dmlzaW9uIDIzMDI3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE0LDcgKzUxNCw3IEBAIE5ldHdvcmtQcm9jZXNzUHJv
eHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICByZXR1cm4gKm1fbmV0d29ya1Byb2Nlc3M7CiB9
CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJv
Y2Vzc1Byb3h5JiBuZXR3b3JrUHJvY2Vzc1Byb3h5LCBWZWN0b3I8UmVmPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4m
JiBwZW5kaW5nUmVwbGllcykKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzQ3Jh
c2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXR3b3JrUHJvY2Vzc1Byb3h5LCBWZWN0b3I8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+JiYgcGVuZGluZ1JlcGxpZXMpCiB7CiAgICAgbmV0d29ya1Byb2Nlc3NGYWlsZWRU
b0xhdW5jaChuZXR3b3JrUHJvY2Vzc1Byb3h5KTsKICAgICBBU1NFUlQoIW1fbmV0d29ya1Byb2Nl
c3MpOwpAQCAtNTQwLDcgKzU0MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9j
ZXNzRmFpbGUKICAgICBtX25ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4m
JiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CiAg
ICAgQVNTRVJUKG1fbmV0d29ya1Byb2Nlc3MpOwpAQCAtNTg3LDcgKzU4Nyw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmVuc3VyZVN0b3JhZ2VQcm9jZXMKICAgICBtX3N0b3JhZ2VQcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6SW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3RvcmUo
cmVsZXZhbnREYXRhU3RvcmUtPnN0b3JhZ2VQcm9jZXNzUGFyYW1ldGVycygpKSwgMCk7CiB9CiAK
LXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9j
ZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25J
RCwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3Rv
cmFnZVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBQ
QUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklELCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewog
ICAgIGVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0
b3JlOjpleGlzdGluZ05vbkRlZmF1bHREYXRhU3RvcmVGb3JTZXNzaW9uSUQoaW5pdGlhbFNlc3Np
b25JRCkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJ
KHJldmlzaW9uIDIzMDI3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyNCwxNCArMzI0LDE0IEBAIHB1YmxpYzoKICAgICAv
LyBOZXR3b3JrIFByb2Nlc3MgTWFuYWdlbWVudAogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkmIGVu
c3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGhXZWJzaXRlRGF0YVN0b3Jl
ID0gbnVsbHB0cik7CiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3MoKSB7
IHJldHVybiBtX25ldHdvcmtQcm9jZXNzLmdldCgpOyB9Ci0gICAgdm9pZCBuZXR3b3JrUHJvY2Vz
c0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFZlY3RvcjxSZWY8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiYm
KTsKKyAgICB2b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5Jiwg
VmVjdG9yPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKICAgICB2b2lkIG5ldHdvcmtQcm9jZXNzRmFpbGVkVG9M
YXVuY2goTmV0d29ya1Byb2Nlc3NQcm94eSYpOwogCi0gICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsKIAogICAgIHZvaWQgZW5zdXJlU3RvcmFnZVBy
b2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUqIHJlbGV2YW50RGF0YVN0
b3JlKTsKICAgICBTdG9yYWdlUHJvY2Vzc1Byb3h5KiBzdG9yYWdlUHJvY2VzcygpIHsgcmV0dXJu
IG1fc3RvcmFnZVByb2Nlc3MuZ2V0KCk7IH0KLSAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29u
bmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklE
LCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0
aW9uKFdlYlByb2Nlc3NQcm94eSYsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQsIE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5JiYpOwogICAgIHZvaWQgc3RvcmFnZVByb2Nlc3NDcmFzaGVkKFN0b3JhZ2VQcm9j
ZXNzUHJveHkqKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxp
c2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoU3RvcmFnZVByb2Nlc3NQ
cm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBzdGQ6Om9wdGlvbmFsPFBBTDo6
U2Vzc2lvbklEPik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAJKHJldmlzaW9uIDIzMDI3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5NCwxOCArNTk0LDE4IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5zKGJvb2wgcmUKICNlbmRpZiAvLyBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQot
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90
IHBsdWdpblByb2Nlc3NUb2tlbiwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJv
Y2Vzc1Rva2VuLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgUGx1Z2luUHJvY2Vzc01hbmFn
ZXI6OnNpbmdsZXRvbigpLmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHBsdWdpblByb2Nlc3NU
b2tlbiwgV1RGTW92ZShyZXBseSkpOwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQor
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQogewogICAgIG1fcHJvY2Vzc1Bvb2wtPmdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbihXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRT
dG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCwg
UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFN0b3Jh
Z2VQcm9jZXNzQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklELCBNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseSYmIHJlcGx5KQogewogICAgIG1fcHJvY2Vzc1Bvb2wtPmdldFN0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbigqdGhpcywgaW5pdGlhbFNlc3Npb25JRCwgV1RGTW92ZShyZXBseSkpOwogfQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9u
IDIzMDI3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDQsMTAgKzI0NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0
UGx1Z2lucyhib29sIHJlZnJlc2gsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYgcGx1Z2lu
cywgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+JiBhcHBsaWNhdGlvblBsdWdpbnMsIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbk5hbWU+PiYpOwogI2VuZGlm
IC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQotICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1
Z2luUHJvY2Vzc1Rva2VuLCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkm
Jik7CiAjZW5kaWYKLSAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+JiYpOwotICAgIHZvaWQgZ2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFBBTDo6
U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9p
ZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBn
ZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25J
RCwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHkmJik7CiAKICAgICBib29sIHBsYXRmb3JtSXNCZWluZ0RlYnVnZ2VkKCkg
Y29uc3Q7CiAgICAgYm9vbCBzaG91bGRBbGxvd05vblZhbGlkSW5qZWN0ZWRDb2RlKCkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDIzMDI3OCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByb2Nlc3NXaWxs
U2h1CiAgICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCB0aGlzLT5jb25uZWN0aW9uKCkgPT0g
JmNvbm5lY3Rpb24pOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJl
cGx5KQogewogICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmFwcGVuZChXVEZNb3ZlKHJl
cGx5KSk7CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5l
dHdvcmtQcm9jZXNzCiB7CiAgICAgY2xlYXJDYWxsYmFja1N0YXRlcygpOwogCi0gICAgVmVjdG9y
PFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4+IHBlbmRpbmdSZXBsaWVzOworICAgIFZlY3RvcjxNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4gcGVuZGluZ1JlcGxpZXM7CiAgICAgcGVuZGluZ1JlcGxpZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5zaXplKCkpOwogICAgIGZvciAoYXV0byYg
cmVwbHkgOiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcykKICAgICAgICAgcGVuZGluZ1JlcGxp
ZXMuYXBwZW5kKFdURk1vdmUocmVwbHkpKTsKQEAgLTIwNiwxMiArMjA2LDEyIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3MKIHsKICAgICAvLyBUaGUgbmV0d29yayBw
cm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc2VuZCBhbnkgcGVuZGluZyBzeW5j
IHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KICAgICB3aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rpb25S
ZXBsaWVzLmlzRW1wdHkoKSkgewotICAgICAgICBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9w
ZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CisgICAgICAgIGF1dG8gcmVwbHkg
PSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklY
X0RPTUFJTl9TT0NLRVRTKQotICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoKSk7
CisgICAgICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgpKTsKICNlbGlmIE9TKERBUldJTikKLSAg
ICAgICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9T
RU5EKSk7CisgICAgICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01P
VkVfU0VORCkpOwogI2Vsc2UKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpAQCAt
MjgyLDEyICsyODIsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3
bwogICAgIEFTU0VSVCghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKTsKIAog
ICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBlbmRpbmcgY29ubmVjdGlvbiByZXBseS4KLSAgICBSZWZQ
dHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZp
cnN0KCk7CisgICAgYXV0byByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VG
aXJzdCgpOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgcmVwbHktPnNlbmQo
Y29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIHJlcGx5KGNvbm5lY3Rpb25JZGVudGlmaWVyKTsK
ICNlbGlmIE9TKERBUldJTikKLSAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoY29ubmVj
dGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOworICAgIHJl
cGx5KElQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNH
X1RZUEVfTU9WRV9TRU5EKSk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyMzAyNzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjgs
NyArNjgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBj
cmVhdGUoV2ViUHJvY2Vzc1Bvb2wmKTsKICAgICB+TmV0d29ya1Byb2Nlc3NQcm94eSgpOwogCi0g
ICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsK
KyAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsKIAog
ICAgIERvd25sb2FkUHJveHkqIGNyZWF0ZURvd25sb2FkUHJveHkoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7CiAKQEAgLTE1NSw3ICsxNTUsNyBAQCBwcml2YXRlOgogICAgIFdlYlBy
b2Nlc3NQb29sJiBtX3Byb2Nlc3NQb29sOwogICAgIAogICAgIHVuc2lnbmVkIG1fbnVtUGVuZGlu
Z0Nvbm5lY3Rpb25SZXF1ZXN0czsKLSAgICBEZXF1ZTxSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBtX3BlbmRp
bmdDb25uZWN0aW9uUmVwbGllczsKKyAgICBEZXF1ZTxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gbV9wZW5kaW5nQ29u
bmVjdGlvblJlcGxpZXM7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKFdlYnNpdGVEYXRhKT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7CiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVs
ZXRlV2Vic2l0ZURhdGFDYWxsYmFja3M7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAkocmV2aXNpb24g
MjMwMjc4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgdWludDY0X3QgUGx1
Z2luUHJvY2Vzc01hbmFnZXI6OnBsdWdpblBybwogICAgIHJldHVybiB0b2tlbjsKIH0KIAotdm9p
ZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0
X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgUGx1
Z2luUHJvY2Vzc01hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBs
dWdpblByb2Nlc3NUb2tlbiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIEFTU0VSVChwbHVn
aW5Qcm9jZXNzVG9rZW4pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCShyZXZpc2lvbiAyMzAyNzgpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdWludDY0X3Qg
cGx1Z2luUHJvY2Vzc1Rva2VuKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBQbHVnaW5Qcm9jZXNz
VHlwZSwgUGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3kpOwogCi0gICAgdm9pZCBnZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFJlZjxNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5PiYmKTsKKyAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBs
dWdpblByb2Nlc3NUb2tlbiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHJlbW92ZVBsdWdpblBy
b2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzUHJveHkqKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRl
RGF0YShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hP
cHRpb24+LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMzAyNzgpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cHJvY2Vz
c1dpbGxTaHV0CiAKIC8vIEFza3MgdGhlIHBsdWctaW4gcHJvY2VzcyB0byBjcmVhdGUgYSBuZXcg
Y29ubmVjdGlvbiB0byBhIHdlYiBwcm9jZXNzLiBUaGUgY29ubmVjdGlvbiBpZGVudGlmaWVyIHdp
bGwgYmUgCiAvLyBlbmNvZGVkIGluIHRoZSBnaXZlbiBhcmd1bWVudCBlbmNvZGVyIGFuZCBzZW50
IGJhY2sgdG8gdGhlIGNvbm5lY3Rpb24gb2YgdGhlIGdpdmVuIHdlYiBwcm9jZXNzLgotdm9pZCBQ
bHVnaW5Qcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5PiYmIHJlcGx5KQordm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBtX3BlbmRpbmdDb25uZWN0aW9u
UmVwbGllcy5hcHBlbmQoV1RGTW92ZShyZXBseSkpOwogCkBAIC0xNTksMTIgKzE1OSwxMiBAQCB2
b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyCiB7CiAgICAgLy8gVGhlIHBs
dWctaW4gcHJvY2VzcyBtdXN0IGhhdmUgY3Jhc2hlZCBvciBleGl0ZWQsIHNlbmQgYW55IHBlbmRp
bmcgc3luYyByZXBsaWVzIHdlIG1pZ2h0IGhhdmUuCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdDb25u
ZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJl
cGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CisgICAgICAgIGF1
dG8gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAogI2lm
IFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFj
aG1lbnQoKSwgZmFsc2UpOworICAgICAgICByZXBseShJUEM6OkF0dGFjaG1lbnQoKSwgZmFsc2Up
OwogI2VsaWYgT1MoREFSV0lOKQotICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQo
MCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpLCBmYWxzZSk7CisgICAgICAgIHJlcGx5KElQQzo6
QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCksIGZhbHNlKTsKICNlbHNlCiAg
ICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKQEAgLTI3NiwxMiArMjc2LDEyIEBAIHZv
aWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm8KICAgICBBU1NFUlQoIW1fcGVu
ZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSk7CiAKICAgICAvLyBHcmFiIHRoZSBmaXJz
dCBwZW5kaW5nIGNvbm5lY3Rpb24gcmVwbHkuCi0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5
ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CisgICAgYXV0byByZXBs
eSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgVVNFKFVO
SVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgcmVwbHktPnNlbmQoY29ubmVjdGlvbklkZW50aWZpZXIs
IHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOworICAgIHJlcGx5KGNv
bm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uKTsKICNlbGlmIE9TKERBUldJTikKLSAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQo
Y29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCksIHN1
cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOworICAgIHJlcGx5KElQQzo6
QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9W
RV9TRU5EKSwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CiAjZWxz
ZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAkocmV2aXNpb24g
MjMwMjc4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBBc2tzIHRoZSBwbHVnLWluIHByb2Nlc3MgdG8gY3JlYXRlIGEgbmV3IGNvbm5lY3Rpb24gdG8g
YSB3ZWIgcHJvY2Vzcy4gVGhlIGNvbm5lY3Rpb24gaWRlbnRpZmllciB3aWxsIGJlCiAgICAgLy8g
ZW5jb2RlZCBpbiB0aGUgZ2l2ZW4gYXJndW1lbnQgZW5jb2RlciBhbmQgc2VudCBiYWNrIHRvIHRo
ZSBjb25uZWN0aW9uIG9mIHRoZSBnaXZlbiB3ZWIgcHJvY2Vzcy4KLSAgICB2b2lkIGdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0
ZURhdGEoV1RGOjpGdW5jdGlvbjx2b2lkIChWZWN0b3I8U3RyaW5nPik+JiYgY29tcGxldGlvbkhh
bmRsZXIpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKQEAgLTE0OSw3
ICsxNDksNyBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBjb25uZWN0aW9uIHRvIHRoZSBwbHVnLWlu
IGhvc3QgcHJvY2Vzcy4KICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247
CiAKLSAgICBEZXF1ZTxSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBs
aWVzOworICAgIERlcXVlPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOwog
CiAgICAgVmVjdG9yPHVpbnQ2NF90PiBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhUmVxdWVzdHM7
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChWZWN0b3I8U3RyaW5n
Pik+PiBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tzOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHku
Y3BwCShyZXZpc2lvbiAyMzAyNzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcg
QEAgdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRAogICAgIHNlbmQoTWVz
c2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoc2Vzc2lv
bklELCBkYXRhVHlwZXMsIG9yaWdpbnMsIGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBTdG9y
YWdlUHJvY2Vzc1Byb3h5OjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1By
b3h5JiB3ZWJQcm9jZXNzUHJveHksIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRT
dG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgU3Rv
cmFnZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQ
cm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9y
YWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIG1fcGVu
ZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmFwcGVuZChXVEZNb3ZlKHJlcGx5KSk7CiAKQEAgLTE0MCw5
ICsxNDAsOSBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6CiAgICAg
ICAgIGF1dG8gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsK
IAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgICAgICByZXBseS0+c2VuZChJUEM6
OkF0dGFjaG1lbnQoKSk7CisgICAgICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgpKTsKICNlbGlm
IE9TKERBUldJTikKLSAgICAgICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hf
TVNHX1RZUEVfTU9WRV9TRU5EKSk7CisgICAgICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgwLCBN
QUNIX01TR19UWVBFX01PVkVfU0VORCkpOwogI2Vsc2UKICAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKICNlbmRpZgpAQCAtMTcyLDEyICsxNzIsMTIgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5
OjpkaWRDcmVhdGVTdG9yYQogewogICAgIEFTU0VSVCghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXMuaXNFbXB0eSgpKTsKIAotICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRp
bmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICBhdXRvIHJlcGx5ID0gbV9wZW5k
aW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNpZiBVU0UoVU5JWF9ET01BSU5f
U09DS0VUUykKLSAgICByZXBseS0+c2VuZChjb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgcmVw
bHkoY29ubmVjdGlvbklkZW50aWZpZXIpOwogI2VsaWYgT1MoREFSV0lOKQotICAgIHJlcGx5LT5z
ZW5kKElQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNH
X1RZUEVfTU9WRV9TRU5EKSk7CisgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25J
ZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKICNlbHNlCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDIzMDI3
OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRl
bGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6
U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcik7CiAKLSAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihXZWJQ
cm9jZXNzUHJveHkmLCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0U3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogCiBwcml2
YXRlOgogICAgIFN0b3JhZ2VQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmKTsKQEAgLTkxLDcg
KzkxLDcgQEAgcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9jZXNzUG9vbDsKIAog
ICAgIHVuc2lnbmVkIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsKLSAgICBEZXF1ZTxS
ZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKKyAgICBEZXF1ZTxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CiAKICAgICBIYXNoTWFwPHVp
bnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4+IG1fcGVuZGluZ0ZldGNo
V2Vic2l0ZURhdGFDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlv
bjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3M7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyMzAyNzgpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiwxMCArMjM2LDEwIEBAIHZvaWQgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnRlcm0KICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS50ZXJtaW5hdGVXb3JrZXIoaWRlbnRpZmllciwgYXN5bmNXb3JrZXJUZXJtaW5hdGlv
blRpbWVvdXQsIG51bGxwdHIpOwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpzeW5jVGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFJlZjxNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJt
aW5hdGVXb3JrZXI6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpT
eW5jVGVybWluYXRlV29ya2VyOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS50ZXJtaW5hdGVXb3JrZXIoaWRlbnRpZmllciwgc3luY1dv
cmtlclRlcm1pbmF0aW9uVGltZW91dCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldIHsKLSAgICAg
ICAgcmVwbHktPnNlbmQoKTsKKyAgICAgICAgcmVwbHkoKTsKICAgICB9KTsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyMzAyNzgpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBm
aXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICB2
b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
ICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7Ci0gICAgdm9pZCBzeW5jVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBSZWY8TWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpT
eW5jVGVybWluYXRlV29ya2VyOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgc3luY1Rlcm1p
bmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2VyOjpEZWxheWVk
UmVwbHkmJik7CiAgICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPiYmLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpOwogICAgIHZvaWQgbWF0Y2hB
bGxDb21wbGV0ZWQodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKTsKICAgICB2b2lkIGNsYWltQ29tcGxl
dGVkKHVpbnQ2NF90IGNsYWltUmVxdWVzdElkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjMwMjc4KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04MDcsNyArODA3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCi0g
ICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFja0lELCBSZWY8TWVzc2FnZXM6OldlYlBhZ2U6
OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHk+JiYpOwor
ICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJRCwgTWVzc2FnZXM6OldlYlBhZ2U6OkNv
bXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHkmJik7CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKEdUSykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCShyZXZpc2lvbiAyMzAyNzgpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzQyNiwxMCArMzQyNiwxMCBAQCB2b2lkIFdlYlBhZ2U6OmRpc3BhdGNoQXN5
bmNocm9ub3VzVG91Y2hFCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNG
b3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8m
IHByaW50SW5mbywgQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBSZWY8TWVzc2FnZXM6OldlYlBhZ2U6
OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHk+JiYgcmVw
bHkpCit2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQsIE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERy
YXdUb1BERjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgaWYgKHByaW50SW5mby5zbmFw
c2hvdEZpcnN0UGFnZSkgewotICAgICAgICByZXBseS0+c2VuZCgxKTsKKyAgICAgICAgcmVwbHko
MSk7CiAgICAgICAgIEludFNpemUgc25hcHNob3RTaXplIHsgRmxvYXRTaXplIHsgcHJpbnRJbmZv
LmF2YWlsYWJsZVBhcGVyV2lkdGgsIHByaW50SW5mby5hdmFpbGFibGVQYXBlckhlaWdodCB9IH07
CiAgICAgICAgIEludFJlY3Qgc25hcHNob3RSZWN0IHsgezAsIDB9LCBzbmFwc2hvdFNpemUgfTsK
ICAgICAgICAgYXV0byBwZGZEYXRhID0gcGRmU25hcHNob3RBdFNpemUoc25hcHNob3RSZWN0LCBz
bmFwc2hvdFNpemUsIDApOwpAQCAtMzQ0NCw3ICszNDQ0LDcgQEAgdm9pZCBXZWJQYWdlOjpjb21w
dXRlUGFnZXNGb3JQcmludGluZ0FuZAogICAgIEFTU0VSVChwYWdlUmVjdHMuc2l6ZSgpID49IDEp
OwogICAgIHN0ZDo6c2l6ZV90IHBhZ2VDb3VudCA9IHBhZ2VSZWN0cy5zaXplKCk7CiAgICAgQVNT
RVJUKHBhZ2VDb3VudCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpOwot
ICAgIHJlcGx5LT5zZW5kKHBhZ2VDb3VudCk7CisgICAgcmVwbHkocGFnZUNvdW50KTsKIAogICAg
IFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YTsKICAgICBkcmF3UGFnZXNU
b1BERkltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCAwLCBwYWdlQ291bnQsIHBkZlBhZ2VEYXRhKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337235</attachid>
            <date>2018-04-04 15:53:34 -0700</date>
            <delta_ts>2018-04-04 15:59:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182269-20180404155333.patch</filename>
            <type>text/plain</type>
            <size>71915</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzAyODApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBACisyMDE4LTA0LTA0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIENvbXBsZXRp
b25IYW5kbGVycyBmb3IgRGVsYXllZFJlcGxpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVu
biBGYWJsZXQuCisKKyAgICAgICAgRGVsYXllZFJlcGxpZXMgc2hvdWxkIGJlIGEgbm9uY29weWFi
bGUsIG5vbi1yZWZjb3VudGFibGUgdHlwZS4gIFRoZXkgc2hvdWxkIGJlCisgICAgICAgIGNhbGxl
ZCBvbmNlIGFuZCBvbmx5IG9uY2UuICBUaGlzIGlzIHdoYXQgQ29tcGxldGlvbkhhbmRsZXJzIGFy
ZSBmb3IuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLiAgSnVzdCBjbGVhbmVyIGNv
ZGUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpwZXJmb3JtU3luY2hyb25vdXNMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YTo6U3luY2hyb25vdXNMb2FkRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRs
ZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uSW1wbCk6CisgICAg
ICAgIChJUEM6OmNhbGxNZW1iZXJGdW5jdGlvbik6CisgICAgICAgIChJUEM6OmhhbmRsZU1lc3Nh
Z2VEZWxheWVkKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0SW5pdGlh
bGl6YXRpb25SZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
dGFrZUluaXRpYWxpemF0aW9uUmVwbHkpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpkZXN0
cm95UGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0
ZVBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQ
bHVnaW5Bc3luY2hyb25vdXNseSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAg
ICAgICAobWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24pOgorICAgICAgICAoZ2VuZXJhdGVf
bWVzc2FnZV9oYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6
cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6Y3JlYXRlUmVjb3JkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpnZXRUb29sYmFyc0FyZVZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmdldE1lbnVCYXJJc1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmdldFN0YXR1c0JhcklzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Z2V0V2luZG93RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjcmVl
blRvUm9vdFZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9T
Y3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRh
YmFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKToKKwogMjAxOC0wNC0w
NCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJlbW92ZSBsZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIgZnJvbSBOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDIzMDI3OSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsMTYgKzIxOCwxNiBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbmRTCiAjZW5kaWYKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQo
Y29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIHsKLSAgICBhdXRv
IGxvYWRlciA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGxvYWRQYXJhbWV0ZXJzLCAq
dGhpcyk7CisgICAgYXV0byBsb2FkZXIgPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShX
VEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgKnRoaXMpOwogICAgIG1fbmV0d29ya1Jlc291cmNlTG9h
ZGVycy5hZGQobG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciwgbG9hZGVyLnB0cigpKTsKICAgICBs
b2FkZXItPnN0YXJ0KCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnBlcmZvcm1TeW5jaHJvbm91c0xvYWQoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMmIGxvYWRQYXJhbWV0ZXJzLCBSZWY8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwZXJmb3JtU3luY2hyb25vdXNMb2Fk
KE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgYXV0byBsb2FkZXIgPSBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZShsb2FkUGFyYW1ldGVycywgKnRoaXMsIFdURk1vdmUocmVwbHkpKTsK
KyAgICBhdXRvIGxvYWRlciA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKFdURk1vdmUo
bG9hZFBhcmFtZXRlcnMpLCAqdGhpcywgV1RGTW92ZShyZXBseSkpOwogICAgIG1fbmV0d29ya1Jl
c291cmNlTG9hZGVycy5hZGQobG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciwgbG9hZGVyLnB0cigp
KTsKICAgICBsb2FkZXItPnN0YXJ0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CShyZXZpc2lvbiAyMzAyNzgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDggKzkwLDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYp
OwogCi0gICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyYpOwotICAgIHZvaWQgcGVyZm9ybVN5bmNocm9ub3VzTG9hZChjb25zdCBO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYsIFJlZjxNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4m
Jik7CisgICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyYmKTsKKyAgICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBs
b2FkUGluZyhOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBXZWJDb3JlOjpIVFRQSGVh
ZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycyk7CiAgICAgdm9pZCBwcmVmZXRjaEROUyhj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHByZWNvbm5lY3RUbyh1aW50NjRfdCBwcmVjb25uZWN0
aW9uSWRlbnRpZmllciwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYpOwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAkocmV2aXNpb24gMjMwMjc4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMyArNjIsMTMgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSB7Ci0gICAgU3luY2hyb25v
dXNMb2FkRGF0YShSZWZQdHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCisgICAgU3lu
Y2hyb25vdXNMb2FkRGF0YShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogICAgICAgICA6
IGRlbGF5ZWRSZXBseShXVEZNb3ZlKHJlcGx5KSkKICAgICB7CiAgICAgICAgIEFTU0VSVChkZWxh
eWVkUmVwbHkpOwogICAgIH0KICAgICBSZXNvdXJjZVJlcXVlc3QgY3VycmVudFJlcXVlc3Q7Ci0g
ICAgUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9y
bVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiBkZWxheWVkUmVwbHk7CisgICAgTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2Fk
OjpEZWxheWVkUmVwbHkgZGVsYXllZFJlcGx5OwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2U7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKIH07CkBAIC04MiwxNSArODIsMTUgQEAgc3Rh
dGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlcwogICAgIGlmIChidWZmZXIgJiYg
YnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCi0gICAgZGF0YS5kZWxheWVkUmVwbHktPnNlbmQoZGF0
YS5lcnJvciwgZGF0YS5yZXNwb25zZSwgcmVzcG9uc2VCdWZmZXIpOworICAgIGRhdGEuZGVsYXll
ZFJlcGx5KGRhdGEuZXJyb3IsIGRhdGEucmVzcG9uc2UsIHJlc3BvbnNlQnVmZmVyKTsKICAgICBk
YXRhLmRlbGF5ZWRSZXBseSA9IG51bGxwdHI7CiB9CiAKLU5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
TmV0d29ya1Jlc291cmNlTG9hZGVyKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwg
UmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5
bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmIHN5bmNocm9ub3VzUmVwbHkpCi0gICAgOiBt
X3BhcmFtZXRlcnMgeyBwYXJhbWV0ZXJzIH0KK05ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29y
a1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVs
YXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBseSkKKyAgICA6IG1fcGFyYW1ldGVycyB7IFdURk1v
dmUocGFyYW1ldGVycykgfQogICAgICwgbV9jb25uZWN0aW9uIHsgY29ubmVjdGlvbiB9Ci0gICAg
LCBtX2RlZmVyc0xvYWRpbmcgeyBwYXJhbWV0ZXJzLmRlZmVyc0xvYWRpbmcgfQotICAgICwgbV9p
c0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IHBhcmFtZXRlcnMuY2xpZW50Q3JlZGVu
dGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVk
ZW50aWFscyB9CisgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBtX3BhcmFtZXRlcnMuZGVmZXJzTG9h
ZGluZyB9CisgICAgLCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzIHsgbV9wYXJh
bWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6
TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgfQogICAgICwgbV9idWZmZXJpbmdUaW1lciB7ICp0
aGlzLCAmTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkIH0KICAgICAs
IG1fY2FjaGUgeyBzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpID8gbnVsbHB0ciA6IE5ldHdvcmtQ
cm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZSgpIH0KIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24g
MjMwMjc4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya1Jlc291cmNlTG9hZGVy
X2gKLSNkZWZpbmUgTmV0d29ya1Jlc291cmNlTG9hZGVyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKQEAgLTUyLDkg
KzUxLDkgQEAgY2xhc3MgRW50cnk7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBOZXR3
b3JrTG9hZENsaWVudCwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShjb25zdCBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIFJlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4mJiByZXBseSA9
IG51bGxwdHIpCisgICAgc3RhdGljIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5
ID0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcihwYXJhbWV0ZXJzLCBjb25uZWN0aW9uLCBXVEZNb3ZlKHJlcGx5KSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoV1RGTW92
ZShwYXJhbWV0ZXJzKSwgY29ubmVjdGlvbiwgV1RGTW92ZShyZXBseSkpKTsKICAgICB9CiAgICAg
dmlydHVhbCB+TmV0d29ya1Jlc291cmNlTG9hZGVyKCk7CiAKQEAgLTExMSw3ICsxMTAsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoY29u
c3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmLCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIFJlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgTmV0d29ya1Jl
c291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJik7CiAKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgb3ZlcnJpZGU7CkBAIC0xODEsNSArMTgwLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gTmV0d29ya1Jlc291cmNlTG9hZGVyX2gK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgJKHJldmlzaW9uIDIz
MDI3OCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQsNiArNTQsOCBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAordGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBDb2RpbmdUeXBlOworCiBlbnVtIGNsYXNzIFNlbmRPcHRpb24gewog
ICAgIC8vIFdoZXRoZXIgdGhpcyBtZXNzYWdlIHNob3VsZCBiZSBkaXNwYXRjaGVkIHdoZW4gd2Fp
dGluZyBmb3IgYSBzeW5jIHJlcGx5LgogICAgIC8vIFRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIHN5
bmNocm9ub3VzIG1lc3NhZ2VzLgpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFu
ZGxlTWVzc2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hh
bmRsZU1lc3NhZ2UuaAkocmV2aXNpb24gMjMwMjc4KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvSGFuZGxlTWVzc2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTYyLDE2ICs2MywxNiBAQCB2b2lkIGNhbGxNZW1iZXJGdW5jdGlv
bihBcmdzVHVwbGUmJiBhcmdzCiAKIC8vIERpc3BhdGNoIGZ1bmN0aW9ucyB3aXRoIGRlbGF5ZWQg
cmVwbHkgYXJndW1lbnRzLgogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5
cGVuYW1lIFIsIHR5cGVuYW1lIEFyZ3NUdXBsZSwgc2l6ZV90Li4uIEFyZ3NJbmRleD4KLXZvaWQg
Y2FsbE1lbWJlckZ1bmN0aW9uSW1wbChDKiBvYmplY3QsIE1GIGZ1bmN0aW9uLCBSZWY8Uj4mJiBk
ZWxheWVkUmVwbHksIEFyZ3NUdXBsZSYmIGFyZ3MsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJnc0lu
ZGV4Li4uPikKK3RlbXBsYXRlIDx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgQ0gs
IHR5cGVuYW1lIEFyZ3NUdXBsZSwgc2l6ZV90Li4uIEFyZ3NJbmRleD4KK3ZvaWQgY2FsbE1lbWJl
ckZ1bmN0aW9uSW1wbChDKiBvYmplY3QsIE1GIGZ1bmN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjxD
SD4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXJnc1R1cGxlJiYgYXJncywgc3RkOjppbmRleF9zZXF1
ZW5jZTxBcmdzSW5kZXguLi4+KQogewotICAgIChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8
QXJnc0luZGV4PihzdGQ6OmZvcndhcmQ8QXJnc1R1cGxlPihhcmdzKSkuLi4sIFdURk1vdmUoZGVs
YXllZFJlcGx5KSk7CisgICAgKG9iamVjdC0+KmZ1bmN0aW9uKShzdGQ6OmdldDxBcmdzSW5kZXg+
KHN0ZDo6Zm9yd2FyZDxBcmdzVHVwbGU+KGFyZ3MpKS4uLiwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUg
UiwgdHlwZW5hbWUgQXJnc1R1cGxlLCB0eXBlbmFtZSBBcmdzSW5kaWNpZXMgPSBzdGQ6Om1ha2Vf
aW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPEFyZ3NUdXBsZT46OnZhbHVlPj4KLXZvaWQg
Y2FsbE1lbWJlckZ1bmN0aW9uKEFyZ3NUdXBsZSYmIGFyZ3MsIFJlZjxSPiYmIGRlbGF5ZWRSZXBs
eSwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3RlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1l
IE1GLCB0eXBlbmFtZSBDSCwgdHlwZW5hbWUgQXJnc1R1cGxlLCB0eXBlbmFtZSBBcmdzSW5kaWNp
ZXMgPSBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPEFyZ3NUdXBsZT46
OnZhbHVlPj4KK3ZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKEFyZ3NUdXBsZSYmIGFyZ3MsIENvbXBs
ZXRpb25IYW5kbGVyPENIPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0
aW9uKQogewotICAgIGNhbGxNZW1iZXJGdW5jdGlvbkltcGwob2JqZWN0LCBmdW5jdGlvbiwgV1RG
TW92ZShkZWxheWVkUmVwbHkpLCBzdGQ6OmZvcndhcmQ8QXJnc1R1cGxlPihhcmdzKSwgQXJnc0lu
ZGljaWVzKCkpOworICAgIGNhbGxNZW1iZXJGdW5jdGlvbkltcGwob2JqZWN0LCBmdW5jdGlvbiwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN0ZDo6Zm9yd2FyZDxBcmdzVHVwbGU+KGFyZ3Mp
LCBBcmdzSW5kaWNpZXMoKSk7CiB9CiAKIC8vIERpc3BhdGNoIGZ1bmN0aW9ucyB3aXRoIGNvbm5l
Y3Rpb24gcGFyYW1ldGVyIHdpdGggbm8gcmVwbHkgYXJndW1lbnRzLgpAQCAtMTc0LDggKzE3NSwx
MSBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VEZWxheWVkKENvbm5lY3Rpb24mIGNvCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZWY8dHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5PiBkZWxheWVk
UmVwbHkgPSBhZG9wdFJlZigqbmV3IHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseShjb25uZWN0aW9u
LCBXVEZNb3ZlKHJlcGx5RW5jb2RlcikpKTsKLSAgICBjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92
ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGRlbGF5ZWRSZXBseSksIG9iamVjdCwgZnVuY3Rpb24pOwor
ICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtyZXBseUVu
Y29kZXIgPSBXVEZNb3ZlKHJlcGx5RW5jb2RlciksIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5l
Y3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAgICAgICBUOjpzZW5kKFdURk1v
dmUocmVwbHlFbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CisgICAgfTsK
KyAgICAKKyAgICBjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIElQQwpJbmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5jcHAJKHJldmlzaW9uIDIzMDI3OCkKKysrIFNvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MSwxNSArOTEsMTYgQEAgUGx1Z2luQ29udHJvbGxlclByb3h5Ojp+UGx1Z2luQ29udHJv
bGxlcgogICAgICAgICByZWxlYXNlTlBPYmplY3QobV9wbHVnaW5FbGVtZW50TlBPYmplY3QpOwog
fQogCi12b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0SW5pdGlhbGl6YXRpb25SZXBseShS
ZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRS
ZXBseT4mJiByZXBseSkKK3ZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzZXRJbml0aWFsaXph
dGlvblJlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpE
ZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6YXRpb25SZXBs
eSk7CiAgICAgbV9pbml0aWFsaXphdGlvblJlcGx5ID0gV1RGTW92ZShyZXBseSk7CiB9CiAKLVJl
ZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXll
ZFJlcGx5PiBQbHVnaW5Db250cm9sbGVyUHJveHk6OnRha2VJbml0aWFsaXphdGlvblJlcGx5KCkK
K01lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVw
bHkgUGx1Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpCiB7Ci0g
ICAgcmV0dXJuIG1faW5pdGlhbGl6YXRpb25SZXBseTsKKyAgICBBU1NFUlQobV9pbml0aWFsaXph
dGlvblJlcGx5KTsKKyAgICByZXR1cm4gV1RGTW92ZShtX2luaXRpYWxpemF0aW9uUmVwbHkpOwog
fQogCiBib29sIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6aW5pdGlhbGl6ZShjb25zdCBQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgJKHJldmlz
aW9uIDIzMDI3OCkKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQsOCBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzSW5pdGlhbGl6aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemluZzsg
fQogICAgIAotICAgIHZvaWQgc2V0SW5pdGlhbGl6YXRpb25SZXBseShSZWY8TWVzc2FnZXM6Oldl
YlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4mJik7Ci0gICAg
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxh
eWVkUmVwbHk+IHRha2VJbml0aWFsaXphdGlvblJlcGx5KCk7CisgICAgdm9pZCBzZXRJbml0aWFs
aXphdGlvblJlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2lu
OjpEZWxheWVkUmVwbHkmJik7CisgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpD
cmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseSB0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpOwogCiBw
cml2YXRlOgogICAgIHZvaWQgc3RhcnRQYWludFRpbWVyKCk7CkBAIC0xODMsNyArMTgzLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1faXNWaXNpYmxlOwogICAgIGJvb2wgbV9pc1dpbmRvd1Zpc2li
bGU7CiAKLSAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQ
bHVnaW46OkRlbGF5ZWRSZXBseT4gbV9pbml0aWFsaXphdGlvblJlcGx5OworICAgIE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHkgbV9pbml0
aWFsaXphdGlvblJlcGx5OwogCiAgICAgUmVmUHRyPFBsdWdpbj4gbV9wbHVnaW47CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0
aW9uLmNwcAkocmV2aXNpb24gMjMwMjc4KQorKysgU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDExICsxNzks
MTEgQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBDOgogICAgICAgICBk
ZXN0cm95UGx1Z2luQ29udHJvbGxlclByb3h5KHBsdWdpbkNvbnRyb2xsZXJzW2ldKTsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbih1aW50NjRfdCBwbHVnaW5J
bnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSwgUmVmPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6RGVsYXllZFJlcGx5PiYm
IHJlcGx5KQordm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbih1aW50NjRf
dCBwbHVnaW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSwg
TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpEZXN0cm95UGx1Z2luOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICAvLyBXZSByZXR1cm4gaW1tZWRpYXRlbHkgZnJvbSB0aGlzIHN5
bmNocm9ub3VzIElQQy4gV2Ugd2FudCB0byBtYWtlIHN1cmUgdGhlIHBsdWdpbiBkZXN0cnVjdGlv
biBpcyBqdXN0IGFib3V0IHRvIHN0YXJ0IHNvIGF1ZGlvIHBsYXliYWNrCiAgICAgLy8gd2lsbCBm
aW5pc2ggc29vbiBhZnRlciByZXR1cm5pbmcuIEhvd2V2ZXIgd2UgZG9uJ3Qgd2FudCB0byB3YWl0
IGZvciBkZXN0cnVjdGlvbiB0byBjb21wbGV0ZSBmdWxseSBhcyB0aGF0IG1heSB0YWtlIGEgd2hp
bGUuCi0gICAgcmVwbHktPnNlbmQoKTsKKyAgICByZXBseSgpOwogCiAgICAgLy8gRW5zdXJlIHdl
IGRvbid0IGNsYW1wIGFueSB0aW1lcnMgZHVyaW5nIGRlc3RydWN0aW9uCiAgICAgQWN0aXZpdHlB
c3NlcnRpb24gYWN0aXZpdHlBc3NlcnRpb24oUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbkFjdGl2aXR5KCkpOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZVBsdWdpbkkKICNlbmRpZgogfQogCi12b2lkIFdlYlByb2Nlc3NDb25u
ZWN0aW9uOjpjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVh
dGlvblBhcmFtZXRlcnMsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0
ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlv
bjo6Y3JlYXRlUGx1Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25Q
YXJhbWV0ZXJzLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgLy8gRW5zdXJlIHdlIGRvbid0IGNsYW1wIGFu
eSB0aW1lcnMgZHVyaW5nIGluaXRpYWxpemF0aW9uCiAgICAgQWN0aXZpdHlBc3NlcnRpb24gYWN0
aXZpdHlBc3NlcnRpb24oUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkuY29ubmVjdGlvbkFjdGl2
aXR5KCkpOwpAQCAtMjQ5LDkgKzI0OSw5IEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNy
ZWF0ZVBsdWdpbigKICAgICAgICAgCiAgICAgICAgIC8vIElmIGl0cyBpbml0aWFsaXphdGlvbiBp
cyBjb21wbGV0ZSB0aGVuIHdlIG5lZWQgdG8gcmVzcG9uZCB0byB0aGlzIG1lc3NhZ2Ugd2l0aCB0
aGUgY29ycmVjdCBpbmZvcm1hdGlvbiBhYm91dCBpdHMgY3JlYXRpb24uCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgIHJlcGx5LT5zZW5kKHRydWUsIHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+
d2FudHNXaGVlbEV2ZW50cygpLCBwbHVnaW5Db250cm9sbGVyUHJveHktPnJlbW90ZUxheWVyQ2xp
ZW50SUQoKSk7CisgICAgICAgIHJlcGx5KHRydWUsIHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+d2Fu
dHNXaGVlbEV2ZW50cygpLCBwbHVnaW5Db250cm9sbGVyUHJveHktPnJlbW90ZUxheWVyQ2xpZW50
SUQoKSk7CiAjZWxzZQotICAgICAgICByZXBseS0+c2VuZCh0cnVlLCBwbHVnaW5Db250cm9sbGVy
UHJveHktPndhbnRzV2hlZWxFdmVudHMoKSwgMCk7CisgICAgICAgIHJlcGx5KHRydWUsIHBsdWdp
bkNvbnRyb2xsZXJQcm94eS0+d2FudHNXaGVlbEV2ZW50cygpLCAwKTsKICNlbmRpZgogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZVBsdWdpbigKICAgICB1aW50MzJfdCByZW1vdGVMYXllckNsaWVudElEID0g
MDsKICAgICBjcmVhdGVQbHVnaW5JbnRlcm5hbChjcmVhdGlvblBhcmFtZXRlcnMsIHJlc3VsdCwg
d2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CiAgICAgCi0gICAgcmVwbHkt
PnNlbmQocmVzdWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKKyAg
ICByZXBseShyZXN1bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQpOwog
fQogCiB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5Bc3luY2hyb25vdXNs
eShjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycykKQEAg
LTMxMSw4ICszMTEsOCBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5B
CiAgICAgLy8gc3luY2hyb25vdXMgcmVwbHkgaW5zdGVhZCBvZiBzZW5kaW5nIHRoZSBhc3luY2hy
b25vdXMgcmVwbHkuCiAgICAgUGx1Z2luQ29udHJvbGxlclByb3h5KiBwbHVnaW5Db250cm9sbGVy
UHJveHkgPSBtX3BsdWdpbkNvbnRyb2xsZXJzLmdldChjcmVhdGlvblBhcmFtZXRlcnMucGx1Z2lu
SW5zdGFuY2VJRCk7CiAgICAgQVNTRVJUKHBsdWdpbkNvbnRyb2xsZXJQcm94eSk7Ci0gICAgaWYg
KFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVs
YXllZFJlcGx5PiBkZWxheWVkU3luY1JlcGx5ID0gcGx1Z2luQ29udHJvbGxlclByb3h5LT50YWtl
SW5pdGlhbGl6YXRpb25SZXBseSgpKSB7Ci0gICAgICAgIGRlbGF5ZWRTeW5jUmVwbHktPnNlbmQo
cmVzdWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKKyAgICBpZiAo
YXV0byBkZWxheWVkU3luY1JlcGx5ID0gcGx1Z2luQ29udHJvbGxlclByb3h5LT50YWtlSW5pdGlh
bGl6YXRpb25SZXBseSgpKSB7CisgICAgICAgIGRlbGF5ZWRTeW5jUmVwbHkocmVzdWx0LCB3YW50
c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nl
c3NDb25uZWN0aW9uLmgJKHJldmlzaW9uIDIzMDI3OCkKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw5ICs2
OSw5IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJl
Y2VpdmVXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlByb2Nlc3NDb25uZWN0aW9uTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpOwotICAgIHZvaWQgY3JlYXRlUGx1Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9u
UGFyYW1ldGVycyYsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBs
dWdpbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGNyZWF0ZVBsdWdpbihjb25zdCBQbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnMmLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNy
ZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgY3JlYXRlUGx1Z2luQXN5bmNo
cm9ub3VzbHkoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJik7Ci0gICAgdm9pZCBkZXN0
cm95UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIGJvb2wgYXN5bmNocm9ub3VzQ3Jl
YXRpb25JbmNvbXBsZXRlLCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpEZXN0
cm95UGx1Z2luOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZGVzdHJveVBsdWdpbih1aW50
NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0
ZSwgTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpEZXN0cm95UGx1Z2luOjpEZWxheWVk
UmVwbHkmJik7CiAgICAgCiAgICAgdm9pZCBjcmVhdGVQbHVnaW5JbnRlcm5hbChjb25zdCBQbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnMmLCBib29sJiByZXN1bHQsIGJvb2wmIHdhbnRzV2hlZWxFdmVu
dHMsIHVpbnQzMl90JiByZW1vdGVMYXllckNsaWVudElEKTsKIApJbmRleDogU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyMzAyNzgpCisrKyBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMTgs
MTYgKzExOCwxNCBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24obWVzc2FnCiAg
ICAgaWYgbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzICE9IE5vbmU6CiAgICAgICAgIGlmIG1lc3Nh
Z2UuaGFzX2F0dHJpYnV0ZShERUxBWUVEX0FUVFJJQlVURSk6CiAgICAgICAgICAgICBzZW5kX3Bh
cmFtZXRlcnMgPSBbKGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlKHgudHlwZSwgeC5raW5kKSwgeC5u
YW1lKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdCi0gICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgc3RydWN0IERlbGF5ZWRSZXBseSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxEZWxheWVkUmVwbHk+IHtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgICAgIERlbGF5ZWRSZXBseShSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPik7XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAg
ICB+RGVsYXllZFJlcGx5KCk7XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQot
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBib29sIHNlbmQoJXMpO1xuJyAlICcs
ICcuam9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0ZXJzXSkpCi0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCdcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
cHJpdmF0ZTpcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIFJlZlB0cjxJ
UEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IG1fZW5jb2Rlcjtcbicp
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgfTtcblxuJykKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCcpCisgICAgICAgICAgICBpZiBsZW4oc2VuZF9wYXJhbWV0ZXJzKToKKyAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCclcycgJSAnLCAnLmpvaW4oWycgJy5qb2luKHgpIGZvciB4IGlu
IHNlbmRfcGFyYW1ldGVyc10pKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKT47JykKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYnKQorICAgICAgICAgICAgaWYg
bGVuKHNlbmRfcGFyYW1ldGVycyk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAl
cycgJSAnLCAnLmpvaW4oWycgJy5qb2luKHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pKQor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbicpCiAKICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIHR5cGVkZWYgJXMgUmVwbHk7XG4nICUgcmVwbHlfdHlwZShtZXNzYWdlKSkKIApAQCAt
NTMwLDI0ICs1MjgsMTIgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihmaWxlKToKICAg
ICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyNpZiAlc1xuXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCiAKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyVzOjpEZWxheWVkUmVwbHk6OkRlbGF5ZWRSZXBseShSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29k
ZXIpXG4nICUgbWVzc2FnZS5uYW1lKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIDog
bV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpXG4nKQotICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgICwgbV9lbmNvZGVyKFdURk1vdmUoZW5jb2RlcikpXG4nKQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgne1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicp
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCclczo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KClcbicgJSBtZXNzYWdlLm5hbWUp
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIEFTU0VSVCghbV9jb25uZWN0aW9uKTtcbicpCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCd9XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnYm9vbCAlczo6RGVsYXllZFJlcGx5OjpzZW5kKCVzKVxuJyAlICht
ZXNzYWdlLm5hbWUsICcsICcuam9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0
ZXJzXSkpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBBU1NFUlQobV9lbmNvZGVyKTtcbicpCi0gICAgICAgICAgICByZXN1
bHQgKz0gWycgICAgKm1fZW5jb2RlciA8PCAlcztcbicgJSB4Lm5hbWUgZm9yIHggaW4gbWVzc2Fn
ZS5yZXBseV9wYXJhbWV0ZXJzXQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGJvb2wg
X3Jlc3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShXVEZNb3ZlKG1fZW5jb2Rlcikp
O1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBtX2Nvbm5lY3Rpb24gPSBudWxs
cHRyO1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gX3Jlc3VsdDtc
bicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
JyAlIChtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAgaWYgbGVuKHNlbmRfcGFyYW1ldGVycyk6
CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAlcycgJSAnLCAnLmpvaW4oWycgJy5q
b2luKHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pKQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnKVxue1xuJykKKyAgICAgICAgICAgIHJlc3VsdCArPSBbJyAgICAqZW5jb2RlciA8PCAl
cztcbicgJSB4Lm5hbWUgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXQorICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3Zl
KGVuY29kZXIpKTtcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQogICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzMDI3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw3ICsyMzEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZTsKICAgICAgICAg
dWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2U7CiAgICAgICAgIHVpbnQ2NF90IGV4cGVjdGVk
VXNhZ2U7Ci0gICAgICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERh
dGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4gcmVwbHk7CisgICAgICAgIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5IHJlcGx5OwogICAg
IH07CiAKICAgICBzdGF0aWMgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcyYgc2luZ2xldG9u
KCk7CkBAIC0yMzksNyArMjM5LDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWNv
cmQ+IGNyZWF0ZVJlY29yZCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmll
ciwKICAgICAgICAgU3RyaW5nIGRhdGFiYXNlTmFtZSwgU3RyaW5nIGRpc3BsYXlOYW1lLCB1aW50
NjRfdCBjdXJyZW50UXVvdGEsCiAgICAgICAgIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwg
dWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIAot
ICAgICAgICBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3Rh
OjpEZWxheWVkUmVwbHk+JiYpOworICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNl
ZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseSYmKTsKIAogICAgIHZvaWQgYWRkKHN0ZDo6
dW5pcXVlX3B0cjxSZWNvcmQ+KTsKICAgICBib29sIGFyZUJlaW5nUHJvY2Vzc2VkKCkgY29uc3Qg
eyByZXR1cm4gISFtX2N1cnJlbnRSZWNvcmQ7IH0KQEAgLTI2Miw3ICsyNjIsNyBAQCBFeGNlZWRl
ZERhdGFiYXNlUXVvdGFSZWNvcmRzJiBFeGNlZWRlZERhCiBzdGQ6OnVuaXF1ZV9wdHI8RXhjZWVk
ZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNv
cmRzOjpjcmVhdGVSZWNvcmQoCiAgICAgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklk
ZW50aWZpZXIsIFN0cmluZyBkYXRhYmFzZU5hbWUsIFN0cmluZyBkaXNwbGF5TmFtZSwKICAgICB1
aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0
X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsCi0gICAgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUmVm
PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJl
cGx5PiYmIHJlcGx5KQorICAgIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7
CiAgICAgYXV0byByZWNvcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlY29yZD4oKTsKICAgICByZWNv
cmQtPmZyYW1lSUQgPSBmcmFtZUlEOwpAQCAtNDA0MiwyMCArNDA0MiwyMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkVXBkYXRlSGlzdG9yeVRpdGxlCiAKIC8vIFVJQ2xpZW50CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzJiYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1l
SW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVh
dGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKG1f
cHJvY2Vzcy0+d2ViRnJhbWUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpKTsKICAg
ICBhdXRvIG9yaWdpbmF0aW5nRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG1fcHJvY2Vzcy0+d2ViUGFnZShvcmlnaW5hdGluZ1BhZ2VJ
RCkpOwogCiAgICAgYXV0byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFtZS0+dXJsKCk7CiAKLSAg
ICBtX3VpQ2xpZW50LT5jcmVhdGVOZXdQYWdlKCp0aGlzLCBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJh
bWVJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZSh3aW5kb3dGZWF0dXJlcyksIFdURk1v
dmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZlB0cjxX
ZWJQYWdlUHJveHk+KHRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92
ZShyZXBseSldKFJlZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UpIHsKKyAgICBtX3VpQ2xpZW50
LT5jcmVhdGVOZXdQYWdlKCp0aGlzLCBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvKSwgV1RG
TW92ZShyZXF1ZXN0KSwgV1RGTW92ZSh3aW5kb3dGZWF0dXJlcyksIFdURk1vdmUobmF2aWdhdGlv
bkFjdGlvbkRhdGEpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWlu
RnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSldKFJlZlB0cjxXZWJQYWdl
UHJveHk+IG5ld1BhZ2UpIHsKICAgICAgICAgaWYgKCFuZXdQYWdlKSB7Ci0gICAgICAgICAgICBy
ZXBseS0+c2VuZCgwLCB7IH0pOworICAgICAgICAgICAgcmVwbHkoMCwgeyB9KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHJlcGx5LT5zZW5kKG5ld1BhZ2UtPnBh
Z2VJRCgpLCBuZXdQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMoKSk7CisgICAgICAgIHJlcGx5KG5l
d1BhZ2UtPnBhZ2VJRCgpLCBuZXdQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMoKSk7CiAKICAgICAg
ICAgV2Vic2l0ZURhdGFTdG9yZTo6Y2xvbmVTZXNzaW9uRGF0YSgqdGhpcywgKm5ld1BhZ2UpOwog
ICAgICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24gPSBob3N0c0FyZUVxdWFsKFVSTChQYXJzZWRVUkxTdHJpbmcsIG1haW5G
cmFtZVVSTCksIHJlcXVlc3QudXJsKCkpOwpAQCAtNDA5MSw3ICs0MDkxLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNsb3NlUGFnZShib29sIHN0b3BSZQogICAgIG1fdWlDbGllbnQtPmNsb3NlKHRo
aXMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3Jp
cHRBbGVydDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkph
dmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAg
V2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAg
IE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwpAQCAtNDEwNCwxMSArNDEwNCwxMSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KHVpCiAgICAgICAgICAgICBhdXRvbWF0aW9uU2Vz
c2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0aGlzKTsKICAgICB9CiAgICAgbV91aUNs
aWVudC0+cnVuSmF2YVNjcmlwdEFsZXJ0KHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBzZWN1cml0eU9y
aWdpbiwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldIHsKLSAgICAgICAgcmVwbHktPnNlbmQoKTsK
KyAgICAgICAgcmVwbHkoKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkph
dmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUmVmPE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25maXJtOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0odWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3By
b2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwpAQCAt
NDEyMiwxMSArNDEyMiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZp
cm0oCiAgICAgfQogCiAgICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdENvbmZpcm0odGhpcywg
bWVzc2FnZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2luLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0o
Ym9vbCByZXN1bHQpIHsKLSAgICAgICAgcmVwbHktPnNlbmQocmVzdWx0KTsKKyAgICAgICAgcmVw
bHkocmVzdWx0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3Jp
cHRQcm9tcHQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1
cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRW
YWx1ZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OkRl
bGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJv
bXB0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlP
cmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUs
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJG
cmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKQEAgLTQxNDAsNyArNDE0
MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KHUKICAgICB9CiAK
ICAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0UHJvbXB0KHRoaXMsIG1lc3NhZ2UsIGRlZmF1
bHRWYWx1ZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2luLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0o
Y29uc3QgU3RyaW5nJiByZXN1bHQpIHsKLSAgICAgICAgcmVwbHktPnNlbmQocmVzdWx0KTsKKyAg
ICAgICAgcmVwbHkocmVzdWx0KTsKICAgICB9KTsKIH0KIApAQCAtNDIwOSwyNCArNDIwOSwyNCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hdmFpbGFibGVQbHVnaW5CdXR0CiAjZW5kaWYgLy8gRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIFdlYlBh
Z2VQcm94eTo6d2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYgdXJsLCBSZWY8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQg
V2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChVUkwmJiB1cmwsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAg
ICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+
d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShXZWJH
TExvYWRQb2xpY3kgcG9saWN5KSB7Ci0gICAgICAgICAgICByZXBseS0+c2VuZChzdGF0aWNfY2Fz
dDx1aW50MzJfdD4ocG9saWN5KSk7CisgICAgICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50
MzJfdD4ocG9saWN5KSk7CiAgICAgICAgIH0pOwogICAgIH0gZWxzZQotICAgICAgICByZXBseS0+
c2VuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9sb2FkZXJDbGllbnQtPndlYkdMTG9hZFBvbGlj
eSgqdGhpcywgdXJsKSkpOworICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9s
b2FkZXJDbGllbnQtPndlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSkpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVybCwgUmVmPE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5
PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChV
UkwmJiB1cmwsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVS
TDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkg
ewogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnJlc29sdmVXZWJHTExvYWRQb2xpY3koKnRo
aXMsIHVybCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKFdlYkdMTG9hZFBvbGljeSBwb2xpY3kp
IHsKLSAgICAgICAgICAgIHJlcGx5LT5zZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kp
KTsKKyAgICAgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKICAg
ICAgICAgfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlcGx5LT5zZW5kKHN0YXRpY19jYXN0PHVp
bnQzMl90PihtX2xvYWRlckNsaWVudC0+cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJs
KSkpOworICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9sb2FkZXJDbGllbnQt
PnJlc29sdmVXZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCkpKTsKIH0KICNlbmRpZiAvLyBFTkFC
TEUoV0VCR0wpCiAKQEAgLTQyMzUsMTAgKzQyMzUsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFRvb2xiYXJzQXJlVmlzaWJsZQogICAgIG1fdWlDbGllbnQtPnNldFRvb2xiYXJzQXJlVmlzaWJs
ZSgqdGhpcywgdG9vbGJhcnNBcmVWaXNpYmxlKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omdl
dFRvb2xiYXJzQXJlVmlzaWJsZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJh
cnNBcmVWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0VG9vbGJhcnNBcmVWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJz
QXJlVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgbV91aUNsaWVudC0+dG9v
bGJhcnNBcmVWaXNpYmxlKCp0aGlzLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oYm9vbCB2aXNp
YmxlKSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKHZpc2libGUpOworICAgICAgICByZXBseSh2aXNp
YmxlKTsKICAgICB9KTsKIH0KIApAQCAtNDI0NywxMCArNDI0NywxMCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0TWVudUJhcklzVmlzaWJsZShiCiAgICAgbV91aUNsaWVudC0+c2V0TWVudUJhcklz
VmlzaWJsZSgqdGhpcywgbWVudUJhcklzVmlzaWJsZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpnZXRNZW51QmFySXNWaXNpYmxlKFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51
QmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0TWVudUJhcklzVmlzaWJsZShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNW
aXNpYmxlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBtX3VpQ2xpZW50LT5tZW51QmFy
SXNWaXNpYmxlKCp0aGlzLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKGJvb2wgdmlzaWJsZSkg
ewotICAgICAgICByZXBseS0+c2VuZCh2aXNpYmxlKTsKKyAgICAgICAgcmVwbHkodmlzaWJsZSk7
CiAgICAgfSk7CiB9CiAKQEAgLTQyNTksMTAgKzQyNTksMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFN0YXR1c0JhcklzVmlzaWJsZQogICAgIG1fdWlDbGllbnQtPnNldFN0YXR1c0JhcklzVmlz
aWJsZSgqdGhpcywgc3RhdHVzQmFySXNWaXNpYmxlKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmdldFN0YXR1c0JhcklzVmlzaWJsZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3Rh
dHVzQmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0U3RhdHVzQmFySXNWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1
c0JhcklzVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgbV91aUNsaWVudC0+
c3RhdHVzQmFySXNWaXNpYmxlKCp0aGlzLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKGJvb2wg
dmlzaWJsZSkgewotICAgICAgICByZXBseS0+c2VuZCh2aXNpYmxlKTsKKyAgICAgICAgcmVwbHko
dmlzaWJsZSk7CiAgICAgfSk7CiB9CiAKQEAgLTQyNzYsMTAgKzQyNzYsMTAgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFdpbmRvd0ZyYW1lKGNvbnN0IAogICAgIG1fdWlDbGllbnQtPnNldFdpbmRv
d0ZyYW1lKCp0aGlzLCBtX3BhZ2VDbGllbnQuY29udmVydFRvRGV2aWNlU3BhY2UobmV3V2luZG93
RnJhbWUpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldFdpbmRvd0ZyYW1lKFJlZjxNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpHZXRXaW5kb3dGcmFtZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5
KQordm9pZCBXZWJQYWdlUHJveHk6OmdldFdpbmRvd0ZyYW1lKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkdldFdpbmRvd0ZyYW1lOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBtX3VpQ2xp
ZW50LT53aW5kb3dGcmFtZSgqdGhpcywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKEZsb2F0UmVjdCBmcmFtZSkgewotICAgICAg
ICByZXBseS0+c2VuZChtX3BhZ2VDbGllbnQuY29udmVydFRvVXNlclNwYWNlKGZyYW1lKSk7Cisg
ICAgICAgIHJlcGx5KG1fcGFnZUNsaWVudC5jb252ZXJ0VG9Vc2VyU3BhY2UoZnJhbWUpKTsKICAg
ICB9KTsKIH0KIApAQCAtNDI4OCwxNCArNDI4OCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
V2luZG93RnJhbWVXaXRoQ2FsCiAgICAgbV91aUNsaWVudC0+d2luZG93RnJhbWUoKnRoaXMsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNjcmVl
blRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHNjcmVlblBvaW50LCBSZWY8TWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U2NyZWVuVG9Sb290Vmlldzo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9p
ZCBXZWJQYWdlUHJveHk6OnNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHNjcmVlblBv
aW50LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JlZW5Ub1Jvb3RWaWV3OjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKLSAgICByZXBseS0+c2VuZChtX3BhZ2VDbGllbnQuc2NyZWVuVG9Sb290
VmlldyhzY3JlZW5Qb2ludCkpOworICAgIHJlcGx5KG1fcGFnZUNsaWVudC5zY3JlZW5Ub1Jvb3RW
aWV3KHNjcmVlblBvaW50KSk7CiB9CiAgICAgCi12b2lkIFdlYlBhZ2VQcm94eTo6cm9vdFZpZXdU
b1NjcmVlbihjb25zdCBJbnRSZWN0JiB2aWV3UmVjdCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJvb3RWaWV3VG9TY3JlZW46OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFn
ZVByb3h5Ojpyb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmIHZpZXdSZWN0LCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVuOjpEZWxheWVkUmVwbHkmJiByZXBseSkK
IHsKLSAgICByZXBseS0+c2VuZChtX3BhZ2VDbGllbnQucm9vdFZpZXdUb1NjcmVlbih2aWV3UmVj
dCkpOworICAgIHJlcGx5KG1fcGFnZUNsaWVudC5yb290Vmlld1RvU2NyZWVuKHZpZXdSZWN0KSk7
CiB9CiAgICAgCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDMxMCw3ICs0MzEwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9BY2Nlc3NpYmlsaQogfQogI2VuZGlmCiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+IHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5
IHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFt
ZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKQEAgLTQzMjMsNyArNDMyMyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXIKICAgICAgICAgICAg
IGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAg
IH0KIAotICAgIG1fdWlDbGllbnQtPnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh0aGlzLCBt
ZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFtyZXBseV0oYm9vbCByZXN1bHQpIHsgcmVw
bHktPnNlbmQocmVzdWx0KTsgfSk7CisgICAgbV91aUNsaWVudC0+cnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgW3JlcGx5ID0g
V1RGTW92ZShyZXBseSldKGJvb2wgcmVzdWx0KSB7IHJlcGx5KHJlc3VsdCk7IH0pOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFZpZXdw
b3J0QXR0cmlidXRlcyYgYXR0cikKQEAgLTYwMTgsNyArNjAxOCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXQKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoKnRoaXMsICpmcmFtZSwgYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuZ2V0KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVk
ZWREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdl
LCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwg
UmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXll
ZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90
YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRf
dCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3Vy
cmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7
CiAgICAgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcyYgcmVjb3JkcyA9IEV4Y2VlZGVkRGF0
YWJhc2VRdW90YVJlY29yZHM6OnNpbmdsZXRvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeGNl
ZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQ+IG5ld1JlY29yZCA9IHJlY29yZHMuY3Jl
YXRlUmVjb3JkKGZyYW1lSUQsCkBAIC02MDI5LDI2ICs2MDI5LDIzIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEKICAgICBpZiAocmVjb3Jkcy5hcmVCZWluZ1Byb2Nl
c3NlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNv
cmRzOjpSZWNvcmQqIHJlY29yZCA9IHJlY29yZHMubmV4dCgpOwotICAgIHdoaWxlIChyZWNvcmQp
IHsKKyAgICB3aGlsZSAoYXV0byogcmVjb3JkID0gcmVjb3Jkcy5uZXh0KCkpIHsKICAgICAgICAg
V2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKHJlY29yZC0+ZnJhbWVJ
RCk7CiAgICAgICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgICAgIFJlZlB0cjxBUEk6
OlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHJlY29yZC0+b3JpZ2luSWRl
bnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgICAgICBhdXRvIGN1cnJlbnRSZXBseSA9
IHJlY29yZC0+cmVwbHk7Ci0gICAgICAgIG1fdWlDbGllbnQtPmV4Y2VlZGVkRGF0YWJhc2VRdW90
YSh0aGlzLCBmcmFtZSwgb3JpZ2luLmdldCgpLAotICAgICAgICAgICAgcmVjb3JkLT5kYXRhYmFz
ZU5hbWUsIHJlY29yZC0+ZGlzcGxheU5hbWUsIHJlY29yZC0+Y3VycmVudFF1b3RhLAotICAgICAg
ICAgICAgcmVjb3JkLT5jdXJyZW50T3JpZ2luVXNhZ2UsIHJlY29yZC0+Y3VycmVudERhdGFiYXNl
VXNhZ2UsIHJlY29yZC0+ZXhwZWN0ZWRVc2FnZSwKLSAgICAgICAgICAgIFtjdXJyZW50UmVwbHld
KHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSkgeyBjdXJyZW50UmVwbHktPnNlbmQobmV3UXVv
dGEpOyB9KTsKLQotICAgICAgICByZWNvcmQgPSByZWNvcmRzLm5leHQoKTsKKyAgICAgICAgYXV0
byBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHJlY29yZC0+b3JpZ2luSWRlbnRpZmllciktPnNlY3Vy
aXR5T3JpZ2luKCkpOworICAgICAgICBtX3VpQ2xpZW50LT5leGNlZWRlZERhdGFiYXNlUXVvdGEo
dGhpcywgZnJhbWUsIG9yaWdpbi5wdHIoKSwgcmVjb3JkLT5kYXRhYmFzZU5hbWUsIHJlY29yZC0+
ZGlzcGxheU5hbWUsIHJlY29yZC0+Y3VycmVudFF1b3RhLCByZWNvcmQtPmN1cnJlbnRPcmlnaW5V
c2FnZSwgcmVjb3JkLT5jdXJyZW50RGF0YWJhc2VVc2FnZSwgcmVjb3JkLT5leHBlY3RlZFVzYWdl
LCBbY3VycmVudFJlcGx5ID0gV1RGTW92ZShyZWNvcmQtPnJlcGx5KV0odW5zaWduZWQgbG9uZyBs
b25nIG5ld1F1b3RhKSB7CisgICAgICAgICAgICBjdXJyZW50UmVwbHkobmV3UXVvdGEpOworICAg
ICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgdWludDY0
X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBSZWY8TWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YTo6RGVsYXll
ZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJlYWNoZWRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1aW50NjRfdCBj
dXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5ZWRSZXBseSYm
IHJlcGx5KQogewogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllcikt
PnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgbV91aUNsaWVudC0+cmVhY2hlZEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YSh0aGlzLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgY3VycmVudFF1b3RhLCB0
b3RhbEJ5dGVzTmVlZGVkLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0odW5zaWduZWQgbG9uZyBs
b25nIG5ld1F1b3RhKSB7IHJlcGx5LT5zZW5kKG5ld1F1b3RhKTsgfSk7CisgICAgbV91aUNsaWVu
dC0+cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh0aGlzLCBzZWN1cml0eU9yaWdp
bi5nZXQoKSwgY3VycmVudFF1b3RhLCB0b3RhbEJ5dGVzTmVlZGVkLCBbcmVwbHkgPSBXVEZNb3Zl
KHJlcGx5KV0odW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhKSB7CisgICAgICAgIHJlcGx5KG5l
d1F1b3RhKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2Nh
dGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCB1aW50NjRfdCBm
cmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMzAyNzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyNyw3ICsxMjI3LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRGb2N1cyhib29sIGZvY3VzZWQpOwogICAgIHZvaWQg
c2V0V2luZG93RnJhbWUoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBnZXRX
aW5kb3dGcmFtZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0V2luZG93RnJhbWU6OkRl
bGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXRXaW5kb3dGcmFtZShNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpHZXRXaW5kb3dGcmFtZTo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgZ2V0V2lu
ZG93RnJhbWVXaXRoQ2FsbGJhY2soRnVuY3Rpb248dm9pZChXZWJDb3JlOjpGbG9hdFJlY3QpPiYm
KTsKIAogICAgIGJvb2wgaXNSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZDsgfQpAQCAtMTM4NCwxMSArMTM4NCwxMSBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIC8vIFVJIGNs
aWVudAotICAgIHZvaWQgY3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBSZWY8TWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lk
IGNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5n
UGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6V2luZG93RmVhdHVy
ZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3Jl
YXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgc2hvd1BhZ2UoKTsKLSAgICB2
b2lkIHJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVkUmVwbHk+JiYpOwotICAgIHZvaWQgcnVu
SmF2YVNjcmlwdENvbmZpcm0odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJ1bkphdmFTY3JpcHRDb25maXJtOjpEZWxheWVkUmVwbHk+JiYpOwotICAgIHZvaWQgcnVuSmF2
YVNjcmlwdFByb21wdCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8TWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2
b2lkIHJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIHJ1bkphdmFT
Y3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFT
Y3JpcHRDb25maXJtOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJv
bXB0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1
bkphdmFTY3JpcHRQcm9tcHQ6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNldFN0YXR1c1Rl
eHQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJI
aXRUZXN0UmVzdWx0RGF0YSYmLCB1aW50MzJfdCBtb2RpZmllcnMsIFVzZXJEYXRhJiYpOwogCkBA
IC0xMzk2LDI5ICsxMzk2LDI5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bmF2YWlsYWJsZVBsdWdp
bkJ1dHRvbkNsaWNrZWQodWludDMyX3Qgb3BhcXVlUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24s
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHBsdWdpbnNQYWdlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJM
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpOwogI2VuZGlmIC8vIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJMRShXRUJHTCkKLSAgICB2b2lkIHdlYkdMUG9s
aWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCYmLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2Vi
R0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseT4mJik7Ci0gICAgdm9pZCByZXNvbHZlV2ViR0xQ
b2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
ZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCB3ZWJH
TFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwmJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2Vi
R0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIHJlc29sdmVXZWJHTFBv
bGljeUZvclVSTChXZWJDb3JlOjpVUkwmJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7CiAjZW5kaWYgLy8gRU5BQkxFKFdF
QkdMKQogICAgIHZvaWQgc2V0VG9vbGJhcnNBcmVWaXNpYmxlKGJvb2wgdG9vbGJhcnNBcmVWaXNp
YmxlKTsKLSAgICB2b2lkIGdldFRvb2xiYXJzQXJlVmlzaWJsZShSZWY8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZv
aWQgZ2V0VG9vbGJhcnNBcmVWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xi
YXJzQXJlVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgc2V0TWVudUJhcklzVmlz
aWJsZShib29sIG1lbnVCYXJJc1Zpc2libGUpOwotICAgIHZvaWQgZ2V0TWVudUJhcklzVmlzaWJs
ZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZTo6RGVsYXll
ZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldE1lbnVCYXJJc1Zpc2libGUoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQg
c2V0U3RhdHVzQmFySXNWaXNpYmxlKGJvb2wgc3RhdHVzQmFySXNWaXNpYmxlKTsKLSAgICB2b2lk
IGdldFN0YXR1c0JhcklzVmlzaWJsZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3Rh
dHVzQmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0U3RhdHVzQmFy
SXNWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlzaWJsZTo6
RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgc2V0SXNSZXNpemFibGUoYm9vbCBpc1Jlc2l6YWJs
ZSk7Ci0gICAgdm9pZCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBz
Y3JlZW5Qb2ludCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmVlblRvUm9vdFZpZXc6
OkRlbGF5ZWRSZXBseT4mJik7Ci0gICAgdm9pZCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHZpZXdSZWN0LCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZp
ZXdUb1NjcmVlbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIHNjcmVlblRvUm9vdFZpZXco
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVlblBvaW50LCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpTY3JlZW5Ub1Jvb3RWaWV3OjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCByb290Vmll
d1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVuOjpEZWxheWVkUmVwbHkmJik7CiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgIHZvaWQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHNjcmVlblBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCYgd2luZG93UG9p
bnQpOwogICAgIHZvaWQgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgdmlld1JlY3QsIFdlYkNvcmU6OkludFJlY3QmIHJlc3VsdCk7CiAjZW5kaWYK
LSAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWw6OkRlbGF5ZWRSZXBseT4pOworICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHkpOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3Bv
cnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOwogICAgIHZv
aWQgcGFnZURpZFNjcm9sbCgpOwogICAgIHZvaWQgcnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkZp
bGVDaG9vc2VyU2V0dGluZ3MmKTsKICAgICB2b2lkIHByaW50RnJhbWUodWludDY0X3QgZnJhbWVJ
RCk7Ci0gICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRf
dCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50
NjRfdCBleHBlY3RlZFVzYWdlLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWRE
YXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+JiYpOwotICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2
NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgUmVmPE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5
ZWRSZXBseT4mJik7CisgICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3Rh
LCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVz
YWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNl
ZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIHJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1
aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5
ZWRSZXBseSYmKTsKICAgICB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFt
ZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2lu
SWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjMwMjc4KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MTQsNyArNTE0LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6
OmVucwogICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2VzczsKIH0KIAotdm9pZCBXZWJQcm9jZXNz
UG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQ
cm9jZXNzUHJveHksIFZlY3RvcjxSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiYmIHBlbmRpbmdSZXBsaWVzKQor
dm9pZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNz
UHJveHkmIG5ldHdvcmtQcm9jZXNzUHJveHksIFZlY3RvcjxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiBwZW5kaW5n
UmVwbGllcykKIHsKICAgICBuZXR3b3JrUHJvY2Vzc0ZhaWxlZFRvTGF1bmNoKG5ldHdvcmtQcm9j
ZXNzUHJveHkpOwogICAgIEFTU0VSVCghbV9uZXR3b3JrUHJvY2Vzcyk7CkBAIC01NDAsNyArNTQw
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NGYWlsZQogICAgIG1fbmV0
d29ya1Byb2Nlc3MgPSBudWxscHRyOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpnZXROZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVw
bHkpCiB7CiAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKICAgICBBU1NFUlQobV9uZXR3b3Jr
UHJvY2Vzcyk7CkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJl
U3RvcmFnZVByb2NlcwogICAgIG1fc3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VQcm9jZXNzOjpJbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShyZWxldmFudERhdGFTdG9yZS0+
c3RvcmFnZVByb2Nlc3NQYXJhbWV0ZXJzKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vz
c1Byb3h5LCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklELCBSZWY8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+
JiYgcmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIFBBTDo6U2Vzc2lvbklEIGluaXRp
YWxTZXNzaW9uSUQsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgZW5zdXJlU3RvcmFnZVBy
b2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nTm9uRGVm
YXVsdERhdGFTdG9yZUZvclNlc3Npb25JRChpbml0aWFsU2Vzc2lvbklEKSk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMjMwMjc4KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5
KQpAQCAtMzI0LDE0ICszMjQsMTQgQEAgcHVibGljOgogICAgIC8vIE5ldHdvcmsgUHJvY2VzcyBN
YW5hZ2VtZW50CiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eSYgZW5zdXJlTmV0d29ya1Byb2Nlc3Mo
V2Vic2l0ZURhdGFTdG9yZSogd2l0aFdlYnNpdGVEYXRhU3RvcmUgPSBudWxscHRyKTsKICAgICBO
ZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0d29ya1By
b2Nlc3MuZ2V0KCk7IH0KLSAgICB2b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJv
Y2Vzc1Byb3h5JiwgVmVjdG9yPFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+JiYpOworICAgIHZvaWQgbmV0d29y
a1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBWZWN0b3I8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+
JiYpOwogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NGYWlsZWRUb0xhdW5jaChOZXR3b3JrUHJvY2Vz
c1Byb3h5Jik7CiAKLSAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5JiYpOwogCiAgICAgdm9pZCBlbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRh
U3RvcmUoV2Vic2l0ZURhdGFTdG9yZSogcmVsZXZhbnREYXRhU3RvcmUpOwogICAgIFN0b3JhZ2VQ
cm9jZXNzUHJveHkqIHN0b3JhZ2VQcm9jZXNzKCkgeyByZXR1cm4gbV9zdG9yYWdlUHJvY2Vzcy5n
ZXQoKTsgfQotICAgIHZvaWQgZ2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQ
cm94eSYsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQsIFJlZjxNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4m
Jik7CisgICAgdm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5
JiwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCwgTWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAgICAg
dm9pZCBzdG9yYWdlUHJvY2Vzc0NyYXNoZWQoU3RvcmFnZVByb2Nlc3NQcm94eSopOwogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhTdG9yYWdlUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYsIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24g
MjMwMjc4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTk0LDE4ICs1OTQsMTggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmdldFBsdWdpbnMoYm9vbCByZQogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi12b2lkIFdlYlByb2Nlc3NQcm94
eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2Vu
LCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ocGx1Z2luUHJvY2Vzc1Rva2VuLCBXVEZNb3ZlKHJlcGx5
KSk7CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQcm94
eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAg
ICAgbV9wcm9jZXNzUG9vbC0+Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdURk1vdmUocmVw
bHkpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbihQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklELCBSZWY8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYg
cmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
KFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7
CiAgICAgbV9wcm9jZXNzUG9vbC0+Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCp0aGlzLCBp
bml0aWFsU2Vzc2lvbklELCBXVEZNb3ZlKHJlcGx5KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjMwMjc4KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0
NCwxMCArMjQ0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRQbHVnaW5zKGJvb2wgcmVmcmVz
aCwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+JiBwbHVnaW5zLCBWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4mIGFwcGxpY2F0aW9uUGx1Z2lucywgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6U3VwcG9ydGVkUGx1Z2luTmFtZT4+Jik7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgdm9pZCBn
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFJl
ZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVp
bnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsKICNlbmRpZgotICAgIHZv
aWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7Ci0gICAg
dm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNl
c3Npb25JRCwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29u
bmVjdGlvbihQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklELCBNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsK
IAogICAgIGJvb2wgcGxhdGZvcm1Jc0JlaW5nRGVidWdnZWQoKSBjb25zdDsKICAgICBib29sIHNo
b3VsZEFsbG93Tm9uVmFsaWRJbmplY3RlZENvZGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAkocmV2aXNpb24gMjMwMjc4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxTaHUKICAgICBBU1NFUlRfVU5V
U0VEKGNvbm5lY3Rpb24sIHRoaXMtPmNvbm5lY3Rpb24oKSA9PSAmY29ubmVjdGlvbik7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFJl
ZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgbV9wZW5k
aW5nQ29ubmVjdGlvblJlcGxpZXMuYXBwZW5kKFdURk1vdmUocmVwbHkpKTsKIApAQCAtMTkzLDcg
KzE5Myw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3MKIHsKICAg
ICBjbGVhckNhbGxiYWNrU3RhdGVzKCk7CiAKLSAgICBWZWN0b3I8UmVmPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4g
cGVuZGluZ1JlcGxpZXM7CisgICAgVmVjdG9yPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiBwZW5kaW5nUmVwbGllczsK
ICAgICBwZW5kaW5nUmVwbGllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcGVuZGluZ0Nvbm5l
Y3Rpb25SZXBsaWVzLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiByZXBseSA6IG1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzKQogICAgICAgICBwZW5kaW5nUmVwbGllcy5hcHBlbmQoV1RGTW92ZShy
ZXBseSkpOwpAQCAtMjA2LDEyICsyMDYsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpu
ZXR3b3JrUHJvY2VzcwogewogICAgIC8vIFRoZSBuZXR3b3JrIHByb2Nlc3MgbXVzdCBoYXZlIGNy
YXNoZWQgb3IgZXhpdGVkLCBzZW5kIGFueSBwZW5kaW5nIHN5bmMgcmVwbGllcyB3ZSBtaWdodCBo
YXZlLgogICAgIHdoaWxlICghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVw
bGllcy50YWtlRmlyc3QoKTsKKyAgICAgICAgYXV0byByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rp
b25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0g
ICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgpKTsKKyAgICAgICAgcmVwbHkoSVBD
OjpBdHRhY2htZW50KCkpOwogI2VsaWYgT1MoREFSV0lOKQotICAgICAgICByZXBseS0+c2VuZChJ
UEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKKyAgICAgICAgcmVw
bHkoSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CiAjZWxzZQog
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkBAIC0yODIsMTIgKzI4MiwxMiBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvCiAgICAgQVNTRVJUKCFtX3Bl
bmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCiAgICAgLy8gR3JhYiB0aGUgZmly
c3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5LgotICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVw
bHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICBhdXRvIHJl
cGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNpZiBVU0Uo
VU5JWF9ET01BSU5fU09DS0VUUykKLSAgICByZXBseS0+c2VuZChjb25uZWN0aW9uSWRlbnRpZmll
cik7CisgICAgcmVwbHkoY29ubmVjdGlvbklkZW50aWZpZXIpOwogI2VsaWYgT1MoREFSV0lOKQot
ICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0
KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CisgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50
KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsK
ICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJl
dmlzaW9uIDIzMDI3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPE5ldHdvcmtQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9v
bCYpOwogICAgIH5OZXR3b3JrUHJvY2Vzc1Byb3h5KCk7CiAKLSAgICB2b2lkIGdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogCiAgICAgRG93bmxvYWRQcm94eSog
Y3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIApA
QCAtMTU1LDcgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgV2ViUHJvY2Vzc1Bvb2wmIG1fcHJvY2Vz
c1Bvb2w7CiAgICAgCiAgICAgdW5zaWduZWQgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3Rz
OwotICAgIERlcXVlPFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
OworICAgIERlcXVlPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKIAog
ICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPj4g
bV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxi
YWNrczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCShyZXZpc2lvbiAyMzAyNzgpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCB1aW50NjRfdCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6
cGx1Z2luUHJvCiAgICAgcmV0dXJuIHRva2VuOwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NNYW5h
Z2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9r
ZW4sIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgQVNTRVJUKHBsdWdpblByb2Nlc3NUb2tlbik7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFn
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NNYW5hZ2VyLmgJKHJldmlzaW9uIDIzMDI3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICB1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4o
Y29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIFBsdWdpblByb2Nlc3NUeXBlLCBQbHVnaW5Qcm9jZXNz
U2FuZGJveFBvbGljeSk7CiAKLSAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVp
bnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQg
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5JiYpOwogICAgIHZvaWQgcmVtb3ZlUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblBy
b2Nlc3NQcm94eSopOwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKGNvbnN0IFBsdWdpbk1v
ZHVsZUluZm8mLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFdURjo6RnVuY3Rp
b248dm9pZCAoVmVjdG9yPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5jcHAJKHJldmlzaW9uIDIzMDI3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEw
Miw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXQKIAogLy8gQXNr
cyB0aGUgcGx1Zy1pbiBwcm9jZXNzIHRvIGNyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIHRvIGEgd2Vi
IHByb2Nlc3MuIFRoZSBjb25uZWN0aW9uIGlkZW50aWZpZXIgd2lsbCBiZSAKIC8vIGVuY29kZWQg
aW4gdGhlIGdpdmVuIGFyZ3VtZW50IGVuY29kZXIgYW5kIHNlbnQgYmFjayB0byB0aGUgY29ubmVj
dGlvbiBvZiB0aGUgZ2l2ZW4gd2ViIHByb2Nlc3MuCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lk
IFBsdWdpblByb2Nlc3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQogewogICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmFwcGVuZChXVEZN
b3ZlKHJlcGx5KSk7CiAKQEAgLTE1OSwxMiArMTU5LDEyIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1By
b3h5OjpwbHVnaW5Qcm9jZXNzQ3IKIHsKICAgICAvLyBUaGUgcGx1Zy1pbiBwcm9jZXNzIG11c3Qg
aGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc2VuZCBhbnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2Ug
bWlnaHQgaGF2ZS4KICAgICB3aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1w
dHkoKSkgewotICAgICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25u
ZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICAgICAgYXV0byByZXBseSA9IG1fcGVuZGlu
Z0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgpLCBmYWxzZSk7Cisg
ICAgICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgpLCBmYWxzZSk7CiAjZWxpZiBPUyhEQVJXSU4p
Ci0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01P
VkVfU0VORCksIGZhbHNlKTsKKyAgICAgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hf
TVNHX1RZUEVfTU9WRV9TRU5EKSwgZmFsc2UpOwogI2Vsc2UKICAgICAgICAgbm90SW1wbGVtZW50
ZWQoKTsKICNlbmRpZgpAQCAtMjc2LDEyICsyNzYsMTIgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJv
eHk6OmRpZENyZWF0ZVdlYlBybwogICAgIEFTU0VSVCghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXMuaXNFbXB0eSgpKTsKIAogICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBlbmRpbmcgY29ubmVjdGlv
biByZXBseS4KLSAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0
aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICBhdXRvIHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVj
dGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykK
LSAgICByZXBseS0+c2VuZChjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25v
dXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CisgICAgcmVwbHkoY29ubmVjdGlvbklkZW50aWZpZXIs
IHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwogI2VsaWYgT1MoREFS
V0lOKQotICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmll
ci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgc3VwcG9ydHNBc3luY2hyb25vdXNQ
bHVnaW5Jbml0aWFsaXphdGlvbik7CisgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rp
b25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpLCBzdXBwb3J0c0Fz
eW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyMzAyNzgpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEFza3MgdGhlIHBsdWctaW4g
cHJvY2VzcyB0byBjcmVhdGUgYSBuZXcgY29ubmVjdGlvbiB0byBhIHdlYiBwcm9jZXNzLiBUaGUg
Y29ubmVjdGlvbiBpZGVudGlmaWVyIHdpbGwgYmUKICAgICAvLyBlbmNvZGVkIGluIHRoZSBnaXZl
biBhcmd1bWVudCBlbmNvZGVyIGFuZCBzZW50IGJhY2sgdG8gdGhlIGNvbm5lY3Rpb24gb2YgdGhl
IGdpdmVuIHdlYiBwcm9jZXNzLgotICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24o
UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24o
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseSYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShXVEY6OkZ1bmN0aW9u
PHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBk
ZWxldGVXZWJzaXRlRGF0YShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHByaXZhdGU6
CiAgICAgLy8gVGhlIGNvbm5lY3Rpb24gdG8gdGhlIHBsdWctaW4gaG9zdCBwcm9jZXNzLgogICAg
IFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKIAotICAgIERlcXVlPFJlZlB0
cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CisgICAgRGVxdWU8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseT4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CiAKICAgICBWZWN0b3I8dWludDY0
X3Q+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFSZXF1ZXN0czsKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4+IG1fcGVuZGluZ0ZldGNo
V2Vic2l0ZURhdGFDYWxsYmFja3M7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9y
YWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDIzMDI3
OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFN0b3JhZ2VQcm9j
ZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVECiAgICAgc2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nl
c3M6OkRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhzZXNzaW9uSUQsIGRhdGFUeXBlcywgb3Jp
Z2lucywgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6Omdl
dFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94
eSwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5Ojpn
ZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJv
eHksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXMuYXBwZW5kKFdURk1vdmUocmVwbHkpKTsKIApAQCAtMTQwLDkgKzE0MCw5IEBAIHZvaWQgU3Rv
cmFnZVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjoKICAgICAgICAgYXV0byByZXBseSA9IG1f
cGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgVVNFKFVOSVhfRE9N
QUlOX1NPQ0tFVFMpCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgpKTsKKyAg
ICAgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KCkpOwogI2VsaWYgT1MoREFSV0lOKQotICAgICAg
ICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQp
KTsKKyAgICAgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9T
RU5EKSk7CiAjZWxzZQogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkBAIC0xNzIs
MTIgKzE3MiwxMiBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVN0b3JhCiB7
CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCi0g
ICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LnRha2VGaXJzdCgpOworICAgIGF1dG8gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGll
cy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIHJlcGx5
LT5zZW5kKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICByZXBseShjb25uZWN0aW9uSWRlbnRp
Zmllcik7CiAjZWxpZiBPUyhEQVJXSU4pCi0gICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50
KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsK
KyAgICByZXBseShJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBN
QUNIX01TR19UWVBFX01PVkVfU0VORCkpOwogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9j
ZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjMwMjc4KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFM
OjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmll
ZFNpbmNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiYsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAotICAg
IHZvaWQgZ2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIFJlZjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV2Vi
UHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAKIHByaXZhdGU6CiAgICAgU3RvcmFnZVBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYpOwpAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgog
ICAgIFdlYlByb2Nlc3NQb29sJiBtX3Byb2Nlc3NQb29sOwogCiAgICAgdW5zaWduZWQgbV9udW1Q
ZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOwotICAgIERlcXVlPFJlZjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1f
cGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOworICAgIERlcXVlPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiBtX3BlbmRp
bmdDb25uZWN0aW9uUmVwbGllczsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rp
b248dm9pZCAoV2Vic2l0ZURhdGEpPj4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNr
czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRp
bmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDIzMDI3OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjM2LDEwICsyMzYsMTAgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6dGVybQogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdv
cmtlcihpZGVudGlmaWVyLCBhc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgbnVsbHB0cik7
CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVX
b3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPE1lc3NhZ2VzOjpX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlcjo6RGVsYXll
ZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3lu
Y1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBzeW5jV29ya2VyVGVybWluYXRpb25UaW1l
b3V0LCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gewotICAgICAgICByZXBseS0+c2VuZCgpOwor
ICAgICAgICByZXBseSgpOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmgJKHJldmlzaW9uIDIzMDI3OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZl
bnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgdGVybWluYXRl
V29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIHN5bmNU
ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6
OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBzeW5jVGVybWluYXRlV29ya2VyKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lk
IGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJv
b2wgaGFzU2VjdXJpdHlFcnJvcik7CiAgICAgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRf
dCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudERhdGE+JiYpOwogICAgIHZvaWQgY2xhaW1Db21wbGV0ZWQodWludDY0X3QgY2xhaW1S
ZXF1ZXN0SWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMzAyNzgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwNyw3ICs4MDcsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2b2lkIGNvbXB1dGVQYWdl
c0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5m
byYsIENhbGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBjb21wdXRlUGFn
ZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mLCBDYWxsYmFja0lELCBNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseSYmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
R1RLKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDIzMDI3OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDI2LDEw
ICszNDI2LDEwIEBAIHZvaWQgV2ViUGFnZTo6ZGlzcGF0Y2hBc3luY2hyb25vdXNUb3VjaEUKIH0K
ICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1Rv
UERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZTo6
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCwgTWVzc2FnZXM6
OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICBpZiAocHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlKSB7Ci0g
ICAgICAgIHJlcGx5LT5zZW5kKDEpOworICAgICAgICByZXBseSgxKTsKICAgICAgICAgSW50U2l6
ZSBzbmFwc2hvdFNpemUgeyBGbG9hdFNpemUgeyBwcmludEluZm8uYXZhaWxhYmxlUGFwZXJXaWR0
aCwgcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVySGVpZ2h0IH0gfTsKICAgICAgICAgSW50UmVjdCBz
bmFwc2hvdFJlY3QgeyB7MCwgMH0sIHNuYXBzaG90U2l6ZSB9OwogICAgICAgICBhdXRvIHBkZkRh
dGEgPSBwZGZTbmFwc2hvdEF0U2l6ZShzbmFwc2hvdFJlY3QsIHNuYXBzaG90U2l6ZSwgMCk7CkBA
IC0zNDQ0LDcgKzM0NDQsNyBAQCB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5n
QW5kCiAgICAgQVNTRVJUKHBhZ2VSZWN0cy5zaXplKCkgPj0gMSk7CiAgICAgc3RkOjpzaXplX3Qg
cGFnZUNvdW50ID0gcGFnZVJlY3RzLnNpemUoKTsKICAgICBBU1NFUlQocGFnZUNvdW50IDw9IHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSk7Ci0gICAgcmVwbHktPnNlbmQocGFn
ZUNvdW50KTsKKyAgICByZXBseShwYWdlQ291bnQpOwogCiAgICAgUmV0YWluUHRyPENGTXV0YWJs
ZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwogICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBw
cmludEluZm8sIDAsIHBhZ2VDb3VudCwgcGRmUGFnZURhdGEpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337236</attachid>
            <date>2018-04-04 15:59:29 -0700</date>
            <delta_ts>2018-04-04 16:10:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182269-20180404155928.patch</filename>
            <type>text/plain</type>
            <size>71996</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzAyODApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBACisyMDE4LTA0LTA0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIENvbXBsZXRp
b25IYW5kbGVycyBmb3IgRGVsYXllZFJlcGxpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVu
biBGYWJsZXQuCisKKyAgICAgICAgRGVsYXllZFJlcGxpZXMgc2hvdWxkIGJlIGEgbm9uY29weWFi
bGUsIG5vbi1yZWZjb3VudGFibGUgdHlwZS4gIFRoZXkgc2hvdWxkIGJlCisgICAgICAgIGNhbGxl
ZCBvbmNlIGFuZCBvbmx5IG9uY2UuICBUaGlzIGlzIHdoYXQgQ29tcGxldGlvbkhhbmRsZXJzIGFy
ZSBmb3IuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLiAgSnVzdCBjbGVhbmVyIGNv
ZGUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpwZXJmb3JtU3luY2hyb25vdXNMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YTo6U3luY2hyb25vdXNMb2FkRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRs
ZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uSW1wbCk6CisgICAg
ICAgIChJUEM6OmNhbGxNZW1iZXJGdW5jdGlvbik6CisgICAgICAgIChJUEM6OmhhbmRsZU1lc3Nh
Z2VEZWxheWVkKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0SW5pdGlh
bGl6YXRpb25SZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
dGFrZUluaXRpYWxpemF0aW9uUmVwbHkpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpkZXN0
cm95UGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0
ZVBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQ
bHVnaW5Bc3luY2hyb25vdXNseSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAg
ICAgICAobWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24pOgorICAgICAgICAoZ2VuZXJhdGVf
bWVzc2FnZV9oYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6
cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6Y3JlYXRlUmVjb3JkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpnZXRUb29sYmFyc0FyZVZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmdldE1lbnVCYXJJc1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmdldFN0YXR1c0JhcklzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Z2V0V2luZG93RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjcmVl
blRvUm9vdFZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9T
Y3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRh
YmFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKToKKwogMjAxOC0wNC0w
NCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJlbW92ZSBsZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIgZnJvbSBOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsMTYgKzIxOCwxNiBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbmRTCiAjZW5kaWYKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQo
Y29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIHsKLSAgICBhdXRv
IGxvYWRlciA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGxvYWRQYXJhbWV0ZXJzLCAq
dGhpcyk7CisgICAgYXV0byBsb2FkZXIgPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShX
VEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgKnRoaXMpOwogICAgIG1fbmV0d29ya1Jlc291cmNlTG9h
ZGVycy5hZGQobG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciwgbG9hZGVyLnB0cigpKTsKICAgICBs
b2FkZXItPnN0YXJ0KCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnBlcmZvcm1TeW5jaHJvbm91c0xvYWQoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMmIGxvYWRQYXJhbWV0ZXJzLCBSZWY8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwZXJmb3JtU3luY2hyb25vdXNMb2Fk
KE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgYXV0byBsb2FkZXIgPSBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZShsb2FkUGFyYW1ldGVycywgKnRoaXMsIFdURk1vdmUocmVwbHkpKTsK
KyAgICBhdXRvIGxvYWRlciA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKFdURk1vdmUo
bG9hZFBhcmFtZXRlcnMpLCAqdGhpcywgV1RGTW92ZShyZXBseSkpOwogICAgIG1fbmV0d29ya1Jl
c291cmNlTG9hZGVycy5hZGQobG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciwgbG9hZGVyLnB0cigp
KTsKICAgICBsb2FkZXItPnN0YXJ0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CShyZXZpc2lvbiAyMzAyODApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDggKzkwLDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYp
OwogCi0gICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyYpOwotICAgIHZvaWQgcGVyZm9ybVN5bmNocm9ub3VzTG9hZChjb25zdCBO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYsIFJlZjxNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4m
Jik7CisgICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyYmKTsKKyAgICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBs
b2FkUGluZyhOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBXZWJDb3JlOjpIVFRQSGVh
ZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycyk7CiAgICAgdm9pZCBwcmVmZXRjaEROUyhj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHByZWNvbm5lY3RUbyh1aW50NjRfdCBwcmVjb25uZWN0
aW9uSWRlbnRpZmllciwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYpOwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAkocmV2aXNpb24gMjMwMjgwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMyArNjIsMTMgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSB7Ci0gICAgU3luY2hyb25v
dXNMb2FkRGF0YShSZWZQdHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCisgICAgU3lu
Y2hyb25vdXNMb2FkRGF0YShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogICAgICAgICA6
IGRlbGF5ZWRSZXBseShXVEZNb3ZlKHJlcGx5KSkKICAgICB7CiAgICAgICAgIEFTU0VSVChkZWxh
eWVkUmVwbHkpOwogICAgIH0KICAgICBSZXNvdXJjZVJlcXVlc3QgY3VycmVudFJlcXVlc3Q7Ci0g
ICAgUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9y
bVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiBkZWxheWVkUmVwbHk7CisgICAgTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2Fk
OjpEZWxheWVkUmVwbHkgZGVsYXllZFJlcGx5OwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2U7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKIH07CkBAIC04MiwxNSArODIsMTUgQEAgc3Rh
dGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlcwogICAgIGlmIChidWZmZXIgJiYg
YnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCi0gICAgZGF0YS5kZWxheWVkUmVwbHktPnNlbmQoZGF0
YS5lcnJvciwgZGF0YS5yZXNwb25zZSwgcmVzcG9uc2VCdWZmZXIpOworICAgIGRhdGEuZGVsYXll
ZFJlcGx5KGRhdGEuZXJyb3IsIGRhdGEucmVzcG9uc2UsIHJlc3BvbnNlQnVmZmVyKTsKICAgICBk
YXRhLmRlbGF5ZWRSZXBseSA9IG51bGxwdHI7CiB9CiAKLU5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
TmV0d29ya1Jlc291cmNlTG9hZGVyKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwg
UmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5
bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmIHN5bmNocm9ub3VzUmVwbHkpCi0gICAgOiBt
X3BhcmFtZXRlcnMgeyBwYXJhbWV0ZXJzIH0KK05ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29y
a1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVs
YXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBseSkKKyAgICA6IG1fcGFyYW1ldGVycyB7IFdURk1v
dmUocGFyYW1ldGVycykgfQogICAgICwgbV9jb25uZWN0aW9uIHsgY29ubmVjdGlvbiB9Ci0gICAg
LCBtX2RlZmVyc0xvYWRpbmcgeyBwYXJhbWV0ZXJzLmRlZmVyc0xvYWRpbmcgfQotICAgICwgbV9p
c0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IHBhcmFtZXRlcnMuY2xpZW50Q3JlZGVu
dGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVk
ZW50aWFscyB9CisgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBtX3BhcmFtZXRlcnMuZGVmZXJzTG9h
ZGluZyB9CisgICAgLCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzIHsgbV9wYXJh
bWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6
TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgfQogICAgICwgbV9idWZmZXJpbmdUaW1lciB7ICp0
aGlzLCAmTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkIH0KICAgICAs
IG1fY2FjaGUgeyBzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpID8gbnVsbHB0ciA6IE5ldHdvcmtQ
cm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZSgpIH0KIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24g
MjMwMjgwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya1Jlc291cmNlTG9hZGVy
X2gKLSNkZWZpbmUgTmV0d29ya1Jlc291cmNlTG9hZGVyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKQEAgLTUyLDkg
KzUxLDkgQEAgY2xhc3MgRW50cnk7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBOZXR3
b3JrTG9hZENsaWVudCwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShjb25zdCBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIFJlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4mJiByZXBseSA9
IG51bGxwdHIpCisgICAgc3RhdGljIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5
ID0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcihwYXJhbWV0ZXJzLCBjb25uZWN0aW9uLCBXVEZNb3ZlKHJlcGx5KSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoV1RGTW92
ZShwYXJhbWV0ZXJzKSwgY29ubmVjdGlvbiwgV1RGTW92ZShyZXBseSkpKTsKICAgICB9CiAgICAg
dmlydHVhbCB+TmV0d29ya1Jlc291cmNlTG9hZGVyKCk7CiAKQEAgLTExMSw3ICsxMTAsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoY29u
c3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmLCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIFJlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgTmV0d29ya1Jl
c291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJik7CiAKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgb3ZlcnJpZGU7CkBAIC0xODEsNSArMTgwLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gTmV0d29ya1Jlc291cmNlTG9hZGVyX2gK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgJKHJldmlzaW9uIDIz
MDI4MCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQsNiArNTQsOCBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAordGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBDb2RpbmdUeXBlOworCiBlbnVtIGNsYXNzIFNlbmRPcHRpb24gewog
ICAgIC8vIFdoZXRoZXIgdGhpcyBtZXNzYWdlIHNob3VsZCBiZSBkaXNwYXRjaGVkIHdoZW4gd2Fp
dGluZyBmb3IgYSBzeW5jIHJlcGx5LgogICAgIC8vIFRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIHN5
bmNocm9ub3VzIG1lc3NhZ2VzLgpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFu
ZGxlTWVzc2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hh
bmRsZU1lc3NhZ2UuaAkocmV2aXNpb24gMjMwMjgwKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvSGFuZGxlTWVzc2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTYyLDE2ICs2MywxNiBAQCB2b2lkIGNhbGxNZW1iZXJGdW5jdGlv
bihBcmdzVHVwbGUmJiBhcmdzCiAKIC8vIERpc3BhdGNoIGZ1bmN0aW9ucyB3aXRoIGRlbGF5ZWQg
cmVwbHkgYXJndW1lbnRzLgogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5
cGVuYW1lIFIsIHR5cGVuYW1lIEFyZ3NUdXBsZSwgc2l6ZV90Li4uIEFyZ3NJbmRleD4KLXZvaWQg
Y2FsbE1lbWJlckZ1bmN0aW9uSW1wbChDKiBvYmplY3QsIE1GIGZ1bmN0aW9uLCBSZWY8Uj4mJiBk
ZWxheWVkUmVwbHksIEFyZ3NUdXBsZSYmIGFyZ3MsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJnc0lu
ZGV4Li4uPikKK3RlbXBsYXRlIDx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgQ0gs
IHR5cGVuYW1lIEFyZ3NUdXBsZSwgc2l6ZV90Li4uIEFyZ3NJbmRleD4KK3ZvaWQgY2FsbE1lbWJl
ckZ1bmN0aW9uSW1wbChDKiBvYmplY3QsIE1GIGZ1bmN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjxD
SD4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXJnc1R1cGxlJiYgYXJncywgc3RkOjppbmRleF9zZXF1
ZW5jZTxBcmdzSW5kZXguLi4+KQogewotICAgIChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8
QXJnc0luZGV4PihzdGQ6OmZvcndhcmQ8QXJnc1R1cGxlPihhcmdzKSkuLi4sIFdURk1vdmUoZGVs
YXllZFJlcGx5KSk7CisgICAgKG9iamVjdC0+KmZ1bmN0aW9uKShzdGQ6OmdldDxBcmdzSW5kZXg+
KHN0ZDo6Zm9yd2FyZDxBcmdzVHVwbGU+KGFyZ3MpKS4uLiwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUg
UiwgdHlwZW5hbWUgQXJnc1R1cGxlLCB0eXBlbmFtZSBBcmdzSW5kaWNpZXMgPSBzdGQ6Om1ha2Vf
aW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPEFyZ3NUdXBsZT46OnZhbHVlPj4KLXZvaWQg
Y2FsbE1lbWJlckZ1bmN0aW9uKEFyZ3NUdXBsZSYmIGFyZ3MsIFJlZjxSPiYmIGRlbGF5ZWRSZXBs
eSwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3RlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1l
IE1GLCB0eXBlbmFtZSBDSCwgdHlwZW5hbWUgQXJnc1R1cGxlLCB0eXBlbmFtZSBBcmdzSW5kaWNp
ZXMgPSBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPEFyZ3NUdXBsZT46
OnZhbHVlPj4KK3ZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKEFyZ3NUdXBsZSYmIGFyZ3MsIENvbXBs
ZXRpb25IYW5kbGVyPENIPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0
aW9uKQogewotICAgIGNhbGxNZW1iZXJGdW5jdGlvbkltcGwob2JqZWN0LCBmdW5jdGlvbiwgV1RG
TW92ZShkZWxheWVkUmVwbHkpLCBzdGQ6OmZvcndhcmQ8QXJnc1R1cGxlPihhcmdzKSwgQXJnc0lu
ZGljaWVzKCkpOworICAgIGNhbGxNZW1iZXJGdW5jdGlvbkltcGwob2JqZWN0LCBmdW5jdGlvbiwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN0ZDo6Zm9yd2FyZDxBcmdzVHVwbGU+KGFyZ3Mp
LCBBcmdzSW5kaWNpZXMoKSk7CiB9CiAKIC8vIERpc3BhdGNoIGZ1bmN0aW9ucyB3aXRoIGNvbm5l
Y3Rpb24gcGFyYW1ldGVyIHdpdGggbm8gcmVwbHkgYXJndW1lbnRzLgpAQCAtMTc0LDggKzE3NSwx
MSBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VEZWxheWVkKENvbm5lY3Rpb24mIGNvCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZWY8dHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5PiBkZWxheWVk
UmVwbHkgPSBhZG9wdFJlZigqbmV3IHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseShjb25uZWN0aW9u
LCBXVEZNb3ZlKHJlcGx5RW5jb2RlcikpKTsKLSAgICBjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92
ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGRlbGF5ZWRSZXBseSksIG9iamVjdCwgZnVuY3Rpb24pOwor
ICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtyZXBseUVu
Y29kZXIgPSBXVEZNb3ZlKHJlcGx5RW5jb2RlciksIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5l
Y3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAgICAgICBUOjpzZW5kKFdURk1v
dmUocmVwbHlFbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CisgICAgfTsK
KyAgICAKKyAgICBjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIElQQwpJbmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5jcHAJKHJldmlzaW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MSwxNSArOTEsMTYgQEAgUGx1Z2luQ29udHJvbGxlclByb3h5Ojp+UGx1Z2luQ29udHJv
bGxlcgogICAgICAgICByZWxlYXNlTlBPYmplY3QobV9wbHVnaW5FbGVtZW50TlBPYmplY3QpOwog
fQogCi12b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0SW5pdGlhbGl6YXRpb25SZXBseShS
ZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRS
ZXBseT4mJiByZXBseSkKK3ZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzZXRJbml0aWFsaXph
dGlvblJlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpE
ZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6YXRpb25SZXBs
eSk7CiAgICAgbV9pbml0aWFsaXphdGlvblJlcGx5ID0gV1RGTW92ZShyZXBseSk7CiB9CiAKLVJl
ZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXll
ZFJlcGx5PiBQbHVnaW5Db250cm9sbGVyUHJveHk6OnRha2VJbml0aWFsaXphdGlvblJlcGx5KCkK
K01lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVw
bHkgUGx1Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpCiB7Ci0g
ICAgcmV0dXJuIG1faW5pdGlhbGl6YXRpb25SZXBseTsKKyAgICBBU1NFUlQobV9pbml0aWFsaXph
dGlvblJlcGx5KTsKKyAgICByZXR1cm4gV1RGTW92ZShtX2luaXRpYWxpemF0aW9uUmVwbHkpOwog
fQogCiBib29sIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6aW5pdGlhbGl6ZShjb25zdCBQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgJKHJldmlz
aW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQsOCBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzSW5pdGlhbGl6aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemluZzsg
fQogICAgIAotICAgIHZvaWQgc2V0SW5pdGlhbGl6YXRpb25SZXBseShSZWY8TWVzc2FnZXM6Oldl
YlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4mJik7Ci0gICAg
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxh
eWVkUmVwbHk+IHRha2VJbml0aWFsaXphdGlvblJlcGx5KCk7CisgICAgdm9pZCBzZXRJbml0aWFs
aXphdGlvblJlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2lu
OjpEZWxheWVkUmVwbHkmJik7CisgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpD
cmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseSB0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpOwogCiBw
cml2YXRlOgogICAgIHZvaWQgc3RhcnRQYWludFRpbWVyKCk7CkBAIC0xODMsNyArMTgzLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1faXNWaXNpYmxlOwogICAgIGJvb2wgbV9pc1dpbmRvd1Zpc2li
bGU7CiAKLSAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQ
bHVnaW46OkRlbGF5ZWRSZXBseT4gbV9pbml0aWFsaXphdGlvblJlcGx5OworICAgIE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHkgbV9pbml0
aWFsaXphdGlvblJlcGx5OwogCiAgICAgUmVmUHRyPFBsdWdpbj4gbV9wbHVnaW47CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0
aW9uLmNwcAkocmV2aXNpb24gMjMwMjgwKQorKysgU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDExICsxNzks
MTEgQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBDOgogICAgICAgICBk
ZXN0cm95UGx1Z2luQ29udHJvbGxlclByb3h5KHBsdWdpbkNvbnRyb2xsZXJzW2ldKTsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbih1aW50NjRfdCBwbHVnaW5J
bnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSwgUmVmPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6RGVsYXllZFJlcGx5PiYm
IHJlcGx5KQordm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbih1aW50NjRf
dCBwbHVnaW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSwg
TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpEZXN0cm95UGx1Z2luOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICAvLyBXZSByZXR1cm4gaW1tZWRpYXRlbHkgZnJvbSB0aGlzIHN5
bmNocm9ub3VzIElQQy4gV2Ugd2FudCB0byBtYWtlIHN1cmUgdGhlIHBsdWdpbiBkZXN0cnVjdGlv
biBpcyBqdXN0IGFib3V0IHRvIHN0YXJ0IHNvIGF1ZGlvIHBsYXliYWNrCiAgICAgLy8gd2lsbCBm
aW5pc2ggc29vbiBhZnRlciByZXR1cm5pbmcuIEhvd2V2ZXIgd2UgZG9uJ3Qgd2FudCB0byB3YWl0
IGZvciBkZXN0cnVjdGlvbiB0byBjb21wbGV0ZSBmdWxseSBhcyB0aGF0IG1heSB0YWtlIGEgd2hp
bGUuCi0gICAgcmVwbHktPnNlbmQoKTsKKyAgICByZXBseSgpOwogCiAgICAgLy8gRW5zdXJlIHdl
IGRvbid0IGNsYW1wIGFueSB0aW1lcnMgZHVyaW5nIGRlc3RydWN0aW9uCiAgICAgQWN0aXZpdHlB
c3NlcnRpb24gYWN0aXZpdHlBc3NlcnRpb24oUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbkFjdGl2aXR5KCkpOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZVBsdWdpbkkKICNlbmRpZgogfQogCi12b2lkIFdlYlByb2Nlc3NDb25u
ZWN0aW9uOjpjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVh
dGlvblBhcmFtZXRlcnMsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0
ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlv
bjo6Y3JlYXRlUGx1Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25Q
YXJhbWV0ZXJzLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgLy8gRW5zdXJlIHdlIGRvbid0IGNsYW1wIGFu
eSB0aW1lcnMgZHVyaW5nIGluaXRpYWxpemF0aW9uCiAgICAgQWN0aXZpdHlBc3NlcnRpb24gYWN0
aXZpdHlBc3NlcnRpb24oUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkuY29ubmVjdGlvbkFjdGl2
aXR5KCkpOwpAQCAtMjQ5LDkgKzI0OSw5IEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNy
ZWF0ZVBsdWdpbigKICAgICAgICAgCiAgICAgICAgIC8vIElmIGl0cyBpbml0aWFsaXphdGlvbiBp
cyBjb21wbGV0ZSB0aGVuIHdlIG5lZWQgdG8gcmVzcG9uZCB0byB0aGlzIG1lc3NhZ2Ugd2l0aCB0
aGUgY29ycmVjdCBpbmZvcm1hdGlvbiBhYm91dCBpdHMgY3JlYXRpb24uCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgIHJlcGx5LT5zZW5kKHRydWUsIHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+
d2FudHNXaGVlbEV2ZW50cygpLCBwbHVnaW5Db250cm9sbGVyUHJveHktPnJlbW90ZUxheWVyQ2xp
ZW50SUQoKSk7CisgICAgICAgIHJlcGx5KHRydWUsIHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+d2Fu
dHNXaGVlbEV2ZW50cygpLCBwbHVnaW5Db250cm9sbGVyUHJveHktPnJlbW90ZUxheWVyQ2xpZW50
SUQoKSk7CiAjZWxzZQotICAgICAgICByZXBseS0+c2VuZCh0cnVlLCBwbHVnaW5Db250cm9sbGVy
UHJveHktPndhbnRzV2hlZWxFdmVudHMoKSwgMCk7CisgICAgICAgIHJlcGx5KHRydWUsIHBsdWdp
bkNvbnRyb2xsZXJQcm94eS0+d2FudHNXaGVlbEV2ZW50cygpLCAwKTsKICNlbmRpZgogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZVBsdWdpbigKICAgICB1aW50MzJfdCByZW1vdGVMYXllckNsaWVudElEID0g
MDsKICAgICBjcmVhdGVQbHVnaW5JbnRlcm5hbChjcmVhdGlvblBhcmFtZXRlcnMsIHJlc3VsdCwg
d2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CiAgICAgCi0gICAgcmVwbHkt
PnNlbmQocmVzdWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKKyAg
ICByZXBseShyZXN1bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQpOwog
fQogCiB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5Bc3luY2hyb25vdXNs
eShjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycykKQEAg
LTMxMSw4ICszMTEsOCBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5B
CiAgICAgLy8gc3luY2hyb25vdXMgcmVwbHkgaW5zdGVhZCBvZiBzZW5kaW5nIHRoZSBhc3luY2hy
b25vdXMgcmVwbHkuCiAgICAgUGx1Z2luQ29udHJvbGxlclByb3h5KiBwbHVnaW5Db250cm9sbGVy
UHJveHkgPSBtX3BsdWdpbkNvbnRyb2xsZXJzLmdldChjcmVhdGlvblBhcmFtZXRlcnMucGx1Z2lu
SW5zdGFuY2VJRCk7CiAgICAgQVNTRVJUKHBsdWdpbkNvbnRyb2xsZXJQcm94eSk7Ci0gICAgaWYg
KFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVs
YXllZFJlcGx5PiBkZWxheWVkU3luY1JlcGx5ID0gcGx1Z2luQ29udHJvbGxlclByb3h5LT50YWtl
SW5pdGlhbGl6YXRpb25SZXBseSgpKSB7Ci0gICAgICAgIGRlbGF5ZWRTeW5jUmVwbHktPnNlbmQo
cmVzdWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKKyAgICBpZiAo
YXV0byBkZWxheWVkU3luY1JlcGx5ID0gcGx1Z2luQ29udHJvbGxlclByb3h5LT50YWtlSW5pdGlh
bGl6YXRpb25SZXBseSgpKSB7CisgICAgICAgIGRlbGF5ZWRTeW5jUmVwbHkocmVzdWx0LCB3YW50
c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nl
c3NDb25uZWN0aW9uLmgJKHJldmlzaW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw5ICs2
OSw5IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJl
Y2VpdmVXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlByb2Nlc3NDb25uZWN0aW9uTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpOwotICAgIHZvaWQgY3JlYXRlUGx1Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9u
UGFyYW1ldGVycyYsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBs
dWdpbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGNyZWF0ZVBsdWdpbihjb25zdCBQbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnMmLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNy
ZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgY3JlYXRlUGx1Z2luQXN5bmNo
cm9ub3VzbHkoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJik7Ci0gICAgdm9pZCBkZXN0
cm95UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIGJvb2wgYXN5bmNocm9ub3VzQ3Jl
YXRpb25JbmNvbXBsZXRlLCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpEZXN0
cm95UGx1Z2luOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZGVzdHJveVBsdWdpbih1aW50
NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0
ZSwgTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpEZXN0cm95UGx1Z2luOjpEZWxheWVk
UmVwbHkmJik7CiAgICAgCiAgICAgdm9pZCBjcmVhdGVQbHVnaW5JbnRlcm5hbChjb25zdCBQbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnMmLCBib29sJiByZXN1bHQsIGJvb2wmIHdhbnRzV2hlZWxFdmVu
dHMsIHVpbnQzMl90JiByZW1vdGVMYXllckNsaWVudElEKTsKIApJbmRleDogU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyMzAyODApCisrKyBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMTgs
MTYgKzExOCwxNCBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24obWVzc2FnCiAg
ICAgaWYgbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzICE9IE5vbmU6CiAgICAgICAgIGlmIG1lc3Nh
Z2UuaGFzX2F0dHJpYnV0ZShERUxBWUVEX0FUVFJJQlVURSk6CiAgICAgICAgICAgICBzZW5kX3Bh
cmFtZXRlcnMgPSBbKGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlKHgudHlwZSwgeC5raW5kKSwgeC5u
YW1lKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdCi0gICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgc3RydWN0IERlbGF5ZWRSZXBseSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxEZWxheWVkUmVwbHk+IHtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgICAgIERlbGF5ZWRSZXBseShSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPik7XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAg
ICB+RGVsYXllZFJlcGx5KCk7XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQot
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBib29sIHNlbmQoJXMpO1xuJyAlICcs
ICcuam9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0ZXJzXSkpCi0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCdcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
cHJpdmF0ZTpcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIFJlZlB0cjxJ
UEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IG1fZW5jb2Rlcjtcbicp
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgfTtcblxuJykKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCcpCisgICAgICAgICAgICBpZiBsZW4oc2VuZF9wYXJhbWV0ZXJzKToKKyAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCclcycgJSAnLCAnLmpvaW4oWycgJy5qb2luKHgpIGZvciB4IGlu
IHNlbmRfcGFyYW1ldGVyc10pKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKT47JykKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYnKQorICAgICAgICAgICAgaWYg
bGVuKHNlbmRfcGFyYW1ldGVycyk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAl
cycgJSAnLCAnLmpvaW4oWycgJy5qb2luKHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pKQor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbicpCiAKICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIHR5cGVkZWYgJXMgUmVwbHk7XG4nICUgcmVwbHlfdHlwZShtZXNzYWdlKSkKIApAQCAt
NTMwLDI0ICs1MjgsMTMgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihmaWxlKToKICAg
ICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyNpZiAlc1xuXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCiAKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyVzOjpEZWxheWVkUmVwbHk6OkRlbGF5ZWRSZXBseShSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29k
ZXIpXG4nICUgbWVzc2FnZS5uYW1lKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIDog
bV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpXG4nKQotICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgICwgbV9lbmNvZGVyKFdURk1vdmUoZW5jb2RlcikpXG4nKQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgne1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicp
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCclczo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KClcbicgJSBtZXNzYWdlLm5hbWUp
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIEFTU0VSVCghbV9jb25uZWN0aW9uKTtcbicpCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCd9XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnYm9vbCAlczo6RGVsYXllZFJlcGx5OjpzZW5kKCVzKVxuJyAlICht
ZXNzYWdlLm5hbWUsICcsICcuam9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0
ZXJzXSkpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBBU1NFUlQobV9lbmNvZGVyKTtcbicpCi0gICAgICAgICAgICByZXN1
bHQgKz0gWycgICAgKm1fZW5jb2RlciA8PCAlcztcbicgJSB4Lm5hbWUgZm9yIHggaW4gbWVzc2Fn
ZS5yZXBseV9wYXJhbWV0ZXJzXQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGJvb2wg
X3Jlc3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShXVEZNb3ZlKG1fZW5jb2Rlcikp
O1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBtX2Nvbm5lY3Rpb24gPSBudWxs
cHRyO1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gX3Jlc3VsdDtc
bicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
JyAlIChtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAgaWYgbGVuKHNlbmRfcGFyYW1ldGVycyk6
CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAlcycgJSAnLCAnLmpvaW4oWycgJy5q
b2luKHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pKQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnKVxue1xuJykKKyAgICAgICAgICAgIHJlc3VsdCArPSBbJyAgICAqZW5jb2RlciA8PCAl
cztcbicgJSB4Lm5hbWUgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXQorICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGJvb2wgcmVzdWx0ID0gY29ubmVjdGlvbi5zZW5kU3lu
Y1JlcGx5KFdURk1vdmUoZW5jb2RlcikpO1xuJykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTtcbicpCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCd9XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzMDI4
MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzMSw3ICsyMzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQ2NF90IGN1cnJl
bnRPcmlnaW5Vc2FnZTsKICAgICAgICAgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2U7CiAg
ICAgICAgIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2U7Ci0gICAgICAgIFJlZlB0cjxNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4gcmVwbHk7
CisgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6
RGVsYXllZFJlcGx5IHJlcGx5OwogICAgIH07CiAKICAgICBzdGF0aWMgRXhjZWVkZWREYXRhYmFz
ZVF1b3RhUmVjb3JkcyYgc2luZ2xldG9uKCk7CkBAIC0yMzksNyArMjM5LDcgQEAgcHVibGljOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWNvcmQ+IGNyZWF0ZVJlY29yZCh1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwKICAgICAgICAgU3RyaW5nIGRhdGFiYXNlTmFtZSwg
U3RyaW5nIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsCiAgICAgICAgIHVpbnQ2
NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVp
bnQ2NF90IGV4cGVjdGVkVXNhZ2UsIAotICAgICAgICBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+JiYpOworICAgICAgICBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseSYm
KTsKIAogICAgIHZvaWQgYWRkKHN0ZDo6dW5pcXVlX3B0cjxSZWNvcmQ+KTsKICAgICBib29sIGFy
ZUJlaW5nUHJvY2Vzc2VkKCkgY29uc3QgeyByZXR1cm4gISFtX2N1cnJlbnRSZWNvcmQ7IH0KQEAg
LTI2Miw3ICsyNjIsNyBAQCBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzJiBFeGNlZWRlZERh
CiBzdGQ6OnVuaXF1ZV9wdHI8RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiBF
eGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpjcmVhdGVSZWNvcmQoCiAgICAgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIsIFN0cmluZyBkYXRhYmFzZU5hbWUsIFN0
cmluZyBkaXNwbGF5TmFtZSwKICAgICB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1
cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsCi0gICAgdWlu
dDY0X3QgZXhwZWN0ZWRVc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVk
RGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQorICAgIHVpbnQ2NF90IGV4cGVj
dGVkVXNhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgYXV0byByZWNvcmQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlY29yZD4oKTsKICAgICByZWNvcmQtPmZyYW1lSUQgPSBmcmFtZUlEOwpAQCAtNDA0Miwy
MCArNDA0MiwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkVXBkYXRlSGlzdG9yeVRpdGxlCiAK
IC8vIFVJQ2xpZW50CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0IEZy
YW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRp
bmdQYWdlSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzJiYgd2lu
ZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHk+
JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUlu
Zm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFn
ZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0Zl
YXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkK
IHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcy0+d2ViRnJhbWUob3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLmZyYW1lSUQpKTsKICAgICBhdXRvIG9yaWdpbmF0aW5nRnJhbWVJbmZvID0gQVBJ
OjpGcmFtZUluZm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG1fcHJvY2Vzcy0+
d2ViUGFnZShvcmlnaW5hdGluZ1BhZ2VJRCkpOwogCiAgICAgYXV0byBtYWluRnJhbWVVUkwgPSBt
X21haW5GcmFtZS0+dXJsKCk7CiAKLSAgICBtX3VpQ2xpZW50LT5jcmVhdGVOZXdQYWdlKCp0aGlz
LCBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92
ZSh3aW5kb3dGZWF0dXJlcyksIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZlB0cjxXZWJQYWdlUHJveHk+KHRoaXMpLCBtYWluRnJhbWVVUkws
IHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSldKFJlZlB0cjxXZWJQYWdlUHJveHk+IG5l
d1BhZ2UpIHsKKyAgICBtX3VpQ2xpZW50LT5jcmVhdGVOZXdQYWdlKCp0aGlzLCBXVEZNb3ZlKG9y
aWdpbmF0aW5nRnJhbWVJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZSh3aW5kb3dGZWF0
dXJlcyksIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92
ZShyZXBseSldKFJlZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UpIHsKICAgICAgICAgaWYgKCFu
ZXdQYWdlKSB7Ci0gICAgICAgICAgICByZXBseS0+c2VuZCgwLCB7IH0pOworICAgICAgICAgICAg
cmVwbHkoMCwgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IHJlcGx5LT5zZW5kKG5ld1BhZ2UtPnBhZ2VJRCgpLCBuZXdQYWdlLT5jcmVhdGlvblBhcmFtZXRl
cnMoKSk7CisgICAgICAgIHJlcGx5KG5ld1BhZ2UtPnBhZ2VJRCgpLCBuZXdQYWdlLT5jcmVhdGlv
blBhcmFtZXRlcnMoKSk7CiAKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZTo6Y2xvbmVTZXNzaW9u
RGF0YSgqdGhpcywgKm5ld1BhZ2UpOwogICAgICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNz
QXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBob3N0c0FyZUVxdWFsKFVS
TChQYXJzZWRVUkxTdHJpbmcsIG1haW5GcmFtZVVSTCksIHJlcXVlc3QudXJsKCkpOwpAQCAtNDA5
MSw3ICs0MDkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlUGFnZShib29sIHN0b3BSZQog
ICAgIG1fdWlDbGllbnQtPmNsb3NlKHRoaXMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVu
SmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUmVmPE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQor
dm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXll
ZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3Mt
PndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwpAQCAtNDEwNCwx
MSArNDEwNCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KHVpCiAg
ICAgICAgICAgICBhdXRvbWF0aW9uU2Vzc2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0
aGlzKTsKICAgICB9CiAgICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdEFsZXJ0KHRoaXMsIG1l
c3NhZ2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldIHsK
LSAgICAgICAgcmVwbHktPnNlbmQoKTsKKyAgICAgICAgcmVwbHkoKTsKICAgICB9KTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25maXJt
OjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dENvbmZpcm0odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1
cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgV2Vi
RnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1F
U1NBR0VfQ0hFQ0soZnJhbWUpOwpAQCAtNDEyMiwxMSArNDEyMiwxMSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oCiAgICAgfQogCiAgICAgbV91aUNsaWVudC0+cnVu
SmF2YVNjcmlwdENvbmZpcm0odGhpcywgbWVzc2FnZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2luLCBb
cmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oYm9vbCByZXN1bHQpIHsKLSAgICAgICAgcmVwbHktPnNl
bmQocmVzdWx0KTsKKyAgICAgICAgcmVwbHkocmVzdWx0KTsKICAgICB9KTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9tcHQodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFT
Y3JpcHRQcm9tcHQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkq
IGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNL
KGZyYW1lKTsKQEAgLTQxNDAsNyArNDE0MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0UHJvbXB0KHUKICAgICB9CiAKICAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0UHJv
bXB0KHRoaXMsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2luLCBb
cmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oY29uc3QgU3RyaW5nJiByZXN1bHQpIHsKLSAgICAgICAg
cmVwbHktPnNlbmQocmVzdWx0KTsKKyAgICAgICAgcmVwbHkocmVzdWx0KTsKICAgICB9KTsKIH0K
IApAQCAtNDIwOSwyNCArNDIwOSwyNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hdmFpbGFibGVQ
bHVnaW5CdXR0CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpZiBF
TkFCTEUoV0VCR0wpCi12b2lkIFdlYlBhZ2VQcm94eTo6d2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYg
dXJsLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5
ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChV
UkwmJiB1cmwsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CiAgICAg
ICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwsIFtyZXBs
eSA9IFdURk1vdmUocmVwbHkpXShXZWJHTExvYWRQb2xpY3kgcG9saWN5KSB7Ci0gICAgICAgICAg
ICByZXBseS0+c2VuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5KSk7CisgICAgICAgICAg
ICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5KSk7CiAgICAgICAgIH0pOwogICAg
IH0gZWxzZQotICAgICAgICByZXBseS0+c2VuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9sb2Fk
ZXJDbGllbnQtPndlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSkpOworICAgICAgICByZXBseShz
dGF0aWNfY2FzdDx1aW50MzJfdD4obV9sb2FkZXJDbGllbnQtPndlYkdMTG9hZFBvbGljeSgqdGhp
cywgdXJsKSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMKFVSTCYmIHVybCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBv
bGljeUZvclVSTDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJl
c29sdmVXZWJHTFBvbGljeUZvclVSTChVUkwmJiB1cmwsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAg
aWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnJl
c29sdmVXZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSld
KFdlYkdMTG9hZFBvbGljeSBwb2xpY3kpIHsKLSAgICAgICAgICAgIHJlcGx5LT5zZW5kKHN0YXRp
Y19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKKyAgICAgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0
PHVpbnQzMl90Pihwb2xpY3kpKTsKICAgICAgICAgfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJl
cGx5LT5zZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+cmVzb2x2ZVdl
YkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSkpOworICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1
aW50MzJfdD4obV9sb2FkZXJDbGllbnQtPnJlc29sdmVXZWJHTExvYWRQb2xpY3koKnRoaXMsIHVy
bCkpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKQEAgLTQyMzUsMTAgKzQyMzUsMTAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFRvb2xiYXJzQXJlVmlzaWJsZQogICAgIG1fdWlDbGll
bnQtPnNldFRvb2xiYXJzQXJlVmlzaWJsZSgqdGhpcywgdG9vbGJhcnNBcmVWaXNpYmxlKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmdldFRvb2xiYXJzQXJlVmlzaWJsZShSZWY8TWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYgcmVw
bHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0VG9vbGJhcnNBcmVWaXNpYmxlKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkp
CiB7CiAgICAgbV91aUNsaWVudC0+dG9vbGJhcnNBcmVWaXNpYmxlKCp0aGlzLCBbcmVwbHkgPSBX
VEZNb3ZlKHJlcGx5KV0oYm9vbCB2aXNpYmxlKSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKHZpc2li
bGUpOworICAgICAgICByZXBseSh2aXNpYmxlKTsKICAgICB9KTsKIH0KIApAQCAtNDI0NywxMCAr
NDI0NywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWVudUJhcklzVmlzaWJsZShiCiAgICAg
bV91aUNsaWVudC0+c2V0TWVudUJhcklzVmlzaWJsZSgqdGhpcywgbWVudUJhcklzVmlzaWJsZSk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRNZW51QmFySXNWaXNpYmxlKFJlZjxNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYgcmVw
bHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWVudUJhcklzVmlzaWJsZShNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpHZXRNZW51QmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsK
ICAgICBtX3VpQ2xpZW50LT5tZW51QmFySXNWaXNpYmxlKCp0aGlzLCBbcmVwbHkgPSBXVEZNb3Zl
KHJlcGx5KV0gKGJvb2wgdmlzaWJsZSkgewotICAgICAgICByZXBseS0+c2VuZCh2aXNpYmxlKTsK
KyAgICAgICAgcmVwbHkodmlzaWJsZSk7CiAgICAgfSk7CiB9CiAKQEAgLTQyNTksMTAgKzQyNTks
MTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFN0YXR1c0JhcklzVmlzaWJsZQogICAgIG1fdWlD
bGllbnQtPnNldFN0YXR1c0JhcklzVmlzaWJsZSgqdGhpcywgc3RhdHVzQmFySXNWaXNpYmxlKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldFN0YXR1c0JhcklzVmlzaWJsZShSZWY8TWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6R2V0U3RhdHVzQmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYg
cmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U3RhdHVzQmFySXNWaXNpYmxlKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYgcmVw
bHkpCiB7CiAgICAgbV91aUNsaWVudC0+c3RhdHVzQmFySXNWaXNpYmxlKCp0aGlzLCBbcmVwbHkg
PSBXVEZNb3ZlKHJlcGx5KV0gKGJvb2wgdmlzaWJsZSkgewotICAgICAgICByZXBseS0+c2VuZCh2
aXNpYmxlKTsKKyAgICAgICAgcmVwbHkodmlzaWJsZSk7CiAgICAgfSk7CiB9CiAKQEAgLTQyNzYs
MTAgKzQyNzYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFdpbmRvd0ZyYW1lKGNvbnN0IAog
ICAgIG1fdWlDbGllbnQtPnNldFdpbmRvd0ZyYW1lKCp0aGlzLCBtX3BhZ2VDbGllbnQuY29udmVy
dFRvRGV2aWNlU3BhY2UobmV3V2luZG93RnJhbWUpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmdldFdpbmRvd0ZyYW1lKFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRXaW5kb3dGcmFt
ZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmdldFdpbmRvd0Zy
YW1lKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lOjpEZWxheWVkUmVwbHkm
JiByZXBseSkKIHsKICAgICBtX3VpQ2xpZW50LT53aW5kb3dGcmFtZSgqdGhpcywgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKEZs
b2F0UmVjdCBmcmFtZSkgewotICAgICAgICByZXBseS0+c2VuZChtX3BhZ2VDbGllbnQuY29udmVy
dFRvVXNlclNwYWNlKGZyYW1lKSk7CisgICAgICAgIHJlcGx5KG1fcGFnZUNsaWVudC5jb252ZXJ0
VG9Vc2VyU3BhY2UoZnJhbWUpKTsKICAgICB9KTsKIH0KIApAQCAtNDI4OCwxNCArNDI4OCwxNCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2luZG93RnJhbWVXaXRoQ2FsCiAgICAgbV91aUNsaWVu
dC0+d2luZG93RnJhbWUoKnRoaXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OnNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHNjcmVl
blBvaW50LCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyZWVuVG9Sb290Vmlldzo6RGVs
YXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnNjcmVlblRvUm9vdFZpZXco
Y29uc3QgSW50UG9pbnQmIHNjcmVlblBvaW50LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3Jl
ZW5Ub1Jvb3RWaWV3OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICByZXBseS0+c2VuZCht
X3BhZ2VDbGllbnQuc2NyZWVuVG9Sb290VmlldyhzY3JlZW5Qb2ludCkpOworICAgIHJlcGx5KG1f
cGFnZUNsaWVudC5zY3JlZW5Ub1Jvb3RWaWV3KHNjcmVlblBvaW50KSk7CiB9CiAgICAgCi12b2lk
IFdlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb1NjcmVlbihjb25zdCBJbnRSZWN0JiB2aWV3UmVjdCwg
UmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJvb3RWaWV3VG9TY3JlZW46OkRlbGF5ZWRSZXBs
eT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpyb290Vmlld1RvU2NyZWVuKGNvbnN0IElu
dFJlY3QmIHZpZXdSZWN0LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVu
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICByZXBseS0+c2VuZChtX3BhZ2VDbGllbnQu
cm9vdFZpZXdUb1NjcmVlbih2aWV3UmVjdCkpOworICAgIHJlcGx5KG1fcGFnZUNsaWVudC5yb290
Vmlld1RvU2NyZWVuKHZpZXdSZWN0KSk7CiB9CiAgICAgCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
NDMxMCw3ICs0MzEwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9BY2Nlc3NpYmls
aQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0
eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+IHJlcGx5KQor
dm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5IHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZy
YW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZy
YW1lKTsKQEAgLTQzMjMsNyArNDMyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVV
bmxvYWRDb25maXIKICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFT
Y3JpcHREaWFsb2coKnRoaXMpOwogICAgIH0KIAotICAgIG1fdWlDbGllbnQtPnJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbCh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFty
ZXBseV0oYm9vbCByZXN1bHQpIHsgcmVwbHktPnNlbmQocmVzdWx0KTsgfSk7CisgICAgbV91aUNs
aWVudC0+cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBz
ZWN1cml0eU9yaWdpbiwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKGJvb2wgcmVzdWx0KSB7IHJl
cGx5KHJlc3VsdCk7IH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlVmlld3Bv
cnRQcm9wZXJ0aWVzKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cikKQEAgLTYwMTgsNyAr
NjAxOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXQKICAgICAg
ICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJh
bWUoKnRoaXMsICpmcmFtZSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0KCkpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5h
bWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWlu
dDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwg
dWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJv
eHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJp
bmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRP
cmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVj
dGVkVXNhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jk
cyYgcmVjb3JkcyA9IEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OnNpbmdsZXRvbigpOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQ+
IG5ld1JlY29yZCA9IHJlY29yZHMuY3JlYXRlUmVjb3JkKGZyYW1lSUQsCkBAIC02MDI5LDI2ICs2
MDI5LDIzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEKICAgICBp
ZiAocmVjb3Jkcy5hcmVCZWluZ1Byb2Nlc3NlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBF
eGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQqIHJlY29yZCA9IHJlY29yZHMubmV4
dCgpOwotICAgIHdoaWxlIChyZWNvcmQpIHsKKyAgICB3aGlsZSAoYXV0byogcmVjb3JkID0gcmVj
b3Jkcy5uZXh0KCkpIHsKICAgICAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3Mt
PndlYkZyYW1lKHJlY29yZC0+ZnJhbWVJRCk7CiAgICAgICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUp
OwogCi0gICAgICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBBUEk6OlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVu
dGlmaWVyKHJlY29yZC0+b3JpZ2luSWRlbnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAg
ICAgICBhdXRvIGN1cnJlbnRSZXBseSA9IHJlY29yZC0+cmVwbHk7Ci0gICAgICAgIG1fdWlDbGll
bnQtPmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh0aGlzLCBmcmFtZSwgb3JpZ2luLmdldCgpLAotICAg
ICAgICAgICAgcmVjb3JkLT5kYXRhYmFzZU5hbWUsIHJlY29yZC0+ZGlzcGxheU5hbWUsIHJlY29y
ZC0+Y3VycmVudFF1b3RhLAotICAgICAgICAgICAgcmVjb3JkLT5jdXJyZW50T3JpZ2luVXNhZ2Us
IHJlY29yZC0+Y3VycmVudERhdGFiYXNlVXNhZ2UsIHJlY29yZC0+ZXhwZWN0ZWRVc2FnZSwKLSAg
ICAgICAgICAgIFtjdXJyZW50UmVwbHldKHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSkgeyBj
dXJyZW50UmVwbHktPnNlbmQobmV3UXVvdGEpOyB9KTsKLQotICAgICAgICByZWNvcmQgPSByZWNv
cmRzLm5leHQoKTsKKyAgICAgICAgYXV0byBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHJlY29yZC0+
b3JpZ2luSWRlbnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICBtX3VpQ2xpZW50
LT5leGNlZWRlZERhdGFiYXNlUXVvdGEodGhpcywgZnJhbWUsIG9yaWdpbi5wdHIoKSwgcmVjb3Jk
LT5kYXRhYmFzZU5hbWUsIHJlY29yZC0+ZGlzcGxheU5hbWUsIHJlY29yZC0+Y3VycmVudFF1b3Rh
LCByZWNvcmQtPmN1cnJlbnRPcmlnaW5Vc2FnZSwgcmVjb3JkLT5jdXJyZW50RGF0YWJhc2VVc2Fn
ZSwgcmVjb3JkLT5leHBlY3RlZFVzYWdlLCBbY3VycmVudFJlcGx5ID0gV1RGTW92ZShyZWNvcmQt
PnJlcGx5KV0odW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhKSB7CisgICAgICAgICAgICBjdXJy
ZW50UmVwbHkobmV3UXVvdGEpOworICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYg
b3JpZ2luSWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5
dGVzTmVlZGVkLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJv
eHk6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNO
ZWVkZWQsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGE6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFJlZjxTZWN1cml0eU9yaWdp
bj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50
aWZpZXIob3JpZ2luSWRlbnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgbV91aUNsaWVu
dC0+cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh0aGlzLCBzZWN1cml0eU9yaWdp
bi5nZXQoKSwgY3VycmVudFF1b3RhLCB0b3RhbEJ5dGVzTmVlZGVkLCBbcmVwbHkgPSBXVEZNb3Zl
KHJlcGx5KV0odW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhKSB7IHJlcGx5LT5zZW5kKG5ld1F1
b3RhKTsgfSk7CisgICAgbV91aUNsaWVudC0+cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YSh0aGlzLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgY3VycmVudFF1b3RhLCB0b3RhbEJ5dGVz
TmVlZGVkLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0odW5zaWduZWQgbG9uZyBsb25nIG5ld1F1
b3RhKSB7CisgICAgICAgIHJlcGx5KG5ld1F1b3RhKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBn
ZW9sb2NhdGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMzAy
ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtMTIyNyw3ICsxMjI3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRGb2N1cyhi
b29sIGZvY3VzZWQpOwogICAgIHZvaWQgc2V0V2luZG93RnJhbWUoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0Jik7Ci0gICAgdm9pZCBnZXRXaW5kb3dGcmFtZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6R2V0V2luZG93RnJhbWU6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXRXaW5k
b3dGcmFtZShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRXaW5kb3dGcmFtZTo6RGVsYXllZFJl
cGx5JiYpOwogICAgIHZvaWQgZ2V0V2luZG93RnJhbWVXaXRoQ2FsbGJhY2soRnVuY3Rpb248dm9p
ZChXZWJDb3JlOjpGbG9hdFJlY3QpPiYmKTsKIAogICAgIGJvb2wgaXNSZXNvdXJjZUNhY2hpbmdE
aXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZDsgfQpA
QCAtMTM4NCwxMSArMTM4NCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkVXBkYXRlSGlzdG9y
eVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBm
cmFtZUlEKTsKIAogICAgIC8vIFVJIGNsaWVudAotICAgIHZvaWQgY3JlYXRlTmV3UGFnZShjb25z
dCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVs
YXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0
YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYpOwogICAg
IHZvaWQgc2hvd1BhZ2UoKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcm
LCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVk
UmVwbHk+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0odWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgUmVm
PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25maXJtOjpEZWxheWVkUmVw
bHk+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdCh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6
RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcm
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBs
eSYmKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25maXJtOjpEZWxheWVkUmVwbHkmJik7Cisg
ICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OkRlbGF5ZWRSZXBseSYm
KTsKICAgICB2b2lkIHNldFN0YXR1c1RleHQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBtb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudChXZWJIaXRUZXN0UmVzdWx0RGF0YSYmLCB1aW50MzJfdCBtb2Rp
ZmllcnMsIFVzZXJEYXRhJiYpOwogCkBAIC0xMzk2LDI5ICsxMzk2LDI5IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQodWludDMyX3Qgb3BhcXVlUGx1
Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgcGx1Z2luVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpbnNQYWdlVVJMU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJp
bmcpOwogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJMRShX
RUJHTCkKLSAgICB2b2lkIHdlYkdMUG9saWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCYmLCBSZWY8TWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseT4mJik7
Ci0gICAgdm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIFJlZjxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRS
ZXBseT4mJik7CisgICAgdm9pZCB3ZWJHTFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwmJiwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmKTsK
KyAgICB2b2lkIHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwmJiwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkm
Jik7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogICAgIHZvaWQgc2V0VG9vbGJhcnNBcmVWaXNp
YmxlKGJvb2wgdG9vbGJhcnNBcmVWaXNpYmxlKTsKLSAgICB2b2lkIGdldFRvb2xiYXJzQXJlVmlz
aWJsZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpE
ZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0VG9vbGJhcnNBcmVWaXNpYmxlKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYpOwog
ICAgIHZvaWQgc2V0TWVudUJhcklzVmlzaWJsZShib29sIG1lbnVCYXJJc1Zpc2libGUpOwotICAg
IHZvaWQgZ2V0TWVudUJhcklzVmlzaWJsZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0
TWVudUJhcklzVmlzaWJsZTo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldE1lbnVCYXJJ
c1Zpc2libGUoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZTo6RGVs
YXllZFJlcGx5JiYpOwogICAgIHZvaWQgc2V0U3RhdHVzQmFySXNWaXNpYmxlKGJvb2wgc3RhdHVz
QmFySXNWaXNpYmxlKTsKLSAgICB2b2lkIGdldFN0YXR1c0JhcklzVmlzaWJsZShSZWY8TWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6R2V0U3RhdHVzQmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYp
OworICAgIHZvaWQgZ2V0U3RhdHVzQmFySXNWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkdldFN0YXR1c0JhcklzVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgc2V0SXNS
ZXNpemFibGUoYm9vbCBpc1Jlc2l6YWJsZSk7Ci0gICAgdm9pZCBzY3JlZW5Ub1Jvb3RWaWV3KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Qb2ludCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlNjcmVlblRvUm9vdFZpZXc6OkRlbGF5ZWRSZXBseT4mJik7Ci0gICAgdm9pZCByb290
Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBSZWY8TWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZpZXdUb1NjcmVlbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAg
ICB2b2lkIHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVlblBv
aW50LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JlZW5Ub1Jvb3RWaWV3OjpEZWxheWVkUmVw
bHkmJik7CisgICAgdm9pZCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHZpZXdSZWN0LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVuOjpEZWxh
eWVkUmVwbHkmJik7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgYWNjZXNzaWJpbGl0eVNj
cmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVlblBvaW50LCBXZWJD
b3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpOwogICAgIHZvaWQgcm9vdFZpZXdUb0FjY2Vzc2li
aWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlld1JlY3QsIFdlYkNvcmU6Oklu
dFJlY3QmIHJlc3VsdCk7CiAjZW5kaWYKLSAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OkRlbGF5ZWRSZXBseT4pOworICAgIHZvaWQgcnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHkpOwog
ICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdw
b3J0QXR0cmlidXRlcyYpOwogICAgIHZvaWQgcGFnZURpZFNjcm9sbCgpOwogICAgIHZvaWQgcnVu
T3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYsIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKICAgICB2b2lkIHBy
aW50RnJhbWUodWludDY0X3QgZnJhbWVJRCk7Ci0gICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVv
dGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0
X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1
cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBSZWY8TWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+JiYpOwot
ICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcm
IG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxC
eXRlc05lZWRlZCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBleGNlZWRlZERh
dGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVp
bnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseSYm
KTsKKyAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3Ry
aW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRv
dGFsQnl0ZXNOZWVkZWQsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHJlcXVlc3RHZW9s
b2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCB1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAkocmV2aXNpb24gMjMwMjgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTQsNyArNTE0LDcgQEAgTmV0d29ya1Byb2Nl
c3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2Vz
czsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdv
cmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQcm9jZXNzUHJveHksIFZlY3RvcjxSZWY8TWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHk+PiYmIHBlbmRpbmdSZXBsaWVzKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nl
c3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQcm9jZXNzUHJveHksIFZlY3Rv
cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4mJiBwZW5kaW5nUmVwbGllcykKIHsKICAgICBuZXR3b3JrUHJvY2Vzc0Zh
aWxlZFRvTGF1bmNoKG5ldHdvcmtQcm9jZXNzUHJveHkpOwogICAgIEFTU0VSVCghbV9uZXR3b3Jr
UHJvY2Vzcyk7CkBAIC01NDAsNyArNTQwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29y
a1Byb2Nlc3NGYWlsZQogICAgIG1fbmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwogfQogCi12b2lk
IFdlYlByb2Nlc3NQb29sOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5PiYmIHJlcGx5KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3Mo
KTsKICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzcyk7CkBAIC01ODcsNyArNTg3LDcgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlU3RvcmFnZVByb2NlcwogICAgIG1fc3RvcmFnZVByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpJbml0aWFsaXplV2Vic2l0ZURhdGFT
dG9yZShyZWxldmFudERhdGFTdG9yZS0+c3RvcmFnZVByb2Nlc3NQYXJhbWV0ZXJzKCkpLCAwKTsK
IH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFdl
YlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vz
c2lvbklELCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpn
ZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJv
eHksIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQsIE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkp
CiB7CiAgICAgZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVE
YXRhU3RvcmU6OmV4aXN0aW5nTm9uRGVmYXVsdERhdGFTdG9yZUZvclNlc3Npb25JRChpbml0aWFs
U2Vzc2lvbklEKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAkocmV2aXNpb24gMjMwMjgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzI0LDE0ICszMjQsMTQgQEAgcHVibGljOgog
ICAgIC8vIE5ldHdvcmsgUHJvY2VzcyBNYW5hZ2VtZW50CiAgICAgTmV0d29ya1Byb2Nlc3NQcm94
eSYgZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aFdlYnNpdGVEYXRh
U3RvcmUgPSBudWxscHRyKTsKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2Vz
cygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KLSAgICB2b2lkIG5ldHdvcmtQ
cm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgVmVjdG9yPFJlZjxNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4+JiYpOworICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJv
eHkmLCBWZWN0b3I8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NGYWls
ZWRUb0xhdW5jaChOZXR3b3JrUHJvY2Vzc1Byb3h5Jik7CiAKLSAgICB2b2lkIGdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogCiAgICAgdm9pZCBlbnN1cmVTdG9y
YWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSogcmVsZXZhbnRE
YXRhU3RvcmUpOwogICAgIFN0b3JhZ2VQcm9jZXNzUHJveHkqIHN0b3JhZ2VQcm9jZXNzKCkgeyBy
ZXR1cm4gbV9zdG9yYWdlUHJvY2Vzcy5nZXQoKTsgfQotICAgIHZvaWQgZ2V0U3RvcmFnZVByb2Nl
c3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNz
aW9uSUQsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25J
RCwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBzdG9yYWdlUHJvY2Vzc0NyYXNoZWQoU3RvcmFn
ZVByb2Nlc3NQcm94eSopOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVz
dGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhTdG9yYWdlUHJv
Y2Vzc1Byb3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIHN0ZDo6b3B0aW9uYWw8
UEFMOjpTZXNzaW9uSUQ+KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjMwMjgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk0LDE4ICs1OTQsMTgg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpbnMoYm9vbCByZQogI2VuZGlmIC8vIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWlu
dDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVn
aW5Qcm9jZXNzVG9rZW4sIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBQbHVnaW5Qcm9jZXNz
TWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ocGx1Z2luUHJv
Y2Vzc1Rva2VuLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVw
bHkpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgbV9wcm9jZXNzUG9vbC0+Z2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKFdURk1vdmUocmVwbHkpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lv
bklELCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25u
ZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0
U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQs
IE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgbV9wcm9jZXNzUG9vbC0+Z2V0U3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uKCp0aGlzLCBpbml0aWFsU2Vzc2lvbklELCBXVEZNb3ZlKHJlcGx5KSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2
aXNpb24gMjMwMjgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NCwxMCArMjQ0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBnZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+JiBw
bHVnaW5zLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIGFwcGxpY2F0aW9uUGx1Z2lucywg
c3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luTmFtZT4+Jik7CiAj
ZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCi0gICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRf
dCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgTWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseSYmKTsKICNlbmRpZgotICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFJl
ZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4mJik7Ci0gICAgdm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24o
UEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAg
ICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2
b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vz
c2lvbklELCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseSYmKTsKIAogICAgIGJvb2wgcGxhdGZvcm1Jc0JlaW5nRGVidWdn
ZWQoKSBjb25zdDsKICAgICBib29sIHNob3VsZEFsbG93Tm9uVmFsaWRJbmplY3RlZENvZGUoKSBj
b25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjMwMjgwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vz
c1dpbGxTaHUKICAgICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sIHRoaXMtPmNvbm5lY3Rpb24o
KSA9PSAmY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
JiYgcmVwbHkpCiB7CiAgICAgbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuYXBwZW5kKFdURk1v
dmUocmVwbHkpKTsKIApAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6bmV0d29ya1Byb2Nlc3MKIHsKICAgICBjbGVhckNhbGxiYWNrU3RhdGVzKCk7CiAKLSAgICBW
ZWN0b3I8UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4gcGVuZGluZ1JlcGxpZXM7CisgICAgVmVjdG9yPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5PiBwZW5kaW5nUmVwbGllczsKICAgICBwZW5kaW5nUmVwbGllcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnNpemUoKSk7CiAgICAgZm9yIChh
dXRvJiByZXBseSA6IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzKQogICAgICAgICBwZW5kaW5n
UmVwbGllcy5hcHBlbmQoV1RGTW92ZShyZXBseSkpOwpAQCAtMjA2LDEyICsyMDYsMTIgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2VzcwogewogICAgIC8vIFRoZSBuZXR3
b3JrIHByb2Nlc3MgbXVzdCBoYXZlIGNyYXNoZWQgb3IgZXhpdGVkLCBzZW5kIGFueSBwZW5kaW5n
IHN5bmMgcmVwbGllcyB3ZSBtaWdodCBoYXZlLgogICAgIHdoaWxlICghbV9wZW5kaW5nQ29ubmVj
dGlvblJlcGxpZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkg
PSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICAgICAgYXV0byBy
ZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgVVNF
KFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVu
dCgpKTsKKyAgICAgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KCkpOwogI2VsaWYgT1MoREFSV0lO
KQotICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9N
T1ZFX1NFTkQpKTsKKyAgICAgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZ
UEVfTU9WRV9TRU5EKSk7CiAjZWxzZQogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlm
CkBAIC0yODIsMTIgKzI4MiwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0
ZU5ldHdvCiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkp
OwogCiAgICAgLy8gR3JhYiB0aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5LgotICAg
IFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50
YWtlRmlyc3QoKTsKKyAgICBhdXRvIHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMu
dGFrZUZpcnN0KCk7CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICByZXBseS0+
c2VuZChjb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgcmVwbHkoY29ubmVjdGlvbklkZW50aWZp
ZXIpOwogI2VsaWYgT1MoREFSV0lOKQotICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudChj
b25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7Cisg
ICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFD
SF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE5ldHdvcmtQcm9jZXNzUHJv
eHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYpOwogICAgIH5OZXR3b3JrUHJvY2Vzc1Byb3h5KCk7
CiAKLSAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+
JiYpOworICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYp
OwogCiAgICAgRG93bmxvYWRQcm94eSogY3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtMTU1LDcgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAg
V2ViUHJvY2Vzc1Bvb2wmIG1fcHJvY2Vzc1Bvb2w7CiAgICAgCiAgICAgdW5zaWduZWQgbV9udW1Q
ZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOwotICAgIERlcXVlPFJlZjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1f
cGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOworICAgIERlcXVlPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiBtX3BlbmRp
bmdDb25uZWN0aW9uUmVwbGllczsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rp
b248dm9pZCAoV2Vic2l0ZURhdGEpPj4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNr
czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRp
bmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCShyZXZp
c2lvbiAyMzAyODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCB1aW50NjRf
dCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvCiAgICAgcmV0dXJuIHRva2VuOwogfQog
Ci12b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1
aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9p
ZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0
X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgQVNTRVJU
KHBsdWdpblByb2Nlc3NUb2tlbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgJKHJldmlzaW9uIDIzMDI4
MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFn
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICB1aW50
NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4oY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIFBsdWdpblBy
b2Nlc3NUeXBlLCBQbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeSk7CiAKLSAgICB2b2lkIGdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgUmVmPE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0
X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgcmVtb3ZlUGx1
Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NQcm94eSopOwogCiAgICAgdm9pZCBmZXRjaFdl
YnNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFG
ZXRjaE9wdGlvbj4sIFdURjo6RnVuY3Rpb248dm9pZCAoVmVjdG9yPFN0cmluZz4pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDIzMDI4MCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5Ojpw
cm9jZXNzV2lsbFNodXQKIAogLy8gQXNrcyB0aGUgcGx1Zy1pbiBwcm9jZXNzIHRvIGNyZWF0ZSBh
IG5ldyBjb25uZWN0aW9uIHRvIGEgd2ViIHByb2Nlc3MuIFRoZSBjb25uZWN0aW9uIGlkZW50aWZp
ZXIgd2lsbCBiZSAKIC8vIGVuY29kZWQgaW4gdGhlIGdpdmVuIGFyZ3VtZW50IGVuY29kZXIgYW5k
IHNlbnQgYmFjayB0byB0aGUgY29ubmVjdGlvbiBvZiB0aGUgZ2l2ZW4gd2ViIHByb2Nlc3MuCi12
b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIG1fcGVuZGluZ0Nvbm5l
Y3Rpb25SZXBsaWVzLmFwcGVuZChXVEZNb3ZlKHJlcGx5KSk7CiAKQEAgLTE1OSwxMiArMTU5LDEy
IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVnaW5Qcm9jZXNzQ3IKIHsKICAgICAvLyBU
aGUgcGx1Zy1pbiBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc2VuZCBhbnkg
cGVuZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KICAgICB3aGlsZSAoIW1fcGVuZGlu
Z0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgewotICAgICAgICBSZWZQdHI8TWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICAg
ICAgYXV0byByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwog
CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6
QXR0YWNobWVudCgpLCBmYWxzZSk7CisgICAgICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgpLCBm
YWxzZSk7CiAjZWxpZiBPUyhEQVJXSU4pCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNo
bWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCksIGZhbHNlKTsKKyAgICAgICAgcmVwbHko
SVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgZmFsc2UpOwogI2Vs
c2UKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpAQCAtMjc2LDEyICsyNzYsMTIg
QEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlBybwogICAgIEFTU0VSVCgh
bV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKTsKIAogICAgIC8vIEdyYWIgdGhl
IGZpcnN0IHBlbmRpbmcgY29ubmVjdGlvbiByZXBseS4KLSAgICBSZWZQdHI8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4g
cmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICBhdXRv
IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNpZiBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICByZXBseS0+c2VuZChjb25uZWN0aW9uSWRlbnRp
Zmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CisgICAgcmVw
bHkoY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlh
bGl6YXRpb24pOwogI2VsaWYgT1MoREFSV0lOKQotICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNo
bWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5E
KSwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CisgICAgcmVwbHko
SVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQ
RV9NT1ZFX1NFTkQpLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsK
ICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCShyZXZp
c2lvbiAyMzAyODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIEFza3MgdGhlIHBsdWctaW4gcHJvY2VzcyB0byBjcmVhdGUgYSBuZXcgY29ubmVjdGlv
biB0byBhIHdlYiBwcm9jZXNzLiBUaGUgY29ubmVjdGlvbiBpZGVudGlmaWVyIHdpbGwgYmUKICAg
ICAvLyBlbmNvZGVkIGluIHRoZSBnaXZlbiBhcmd1bWVudCBlbmNvZGVyIGFuZCBzZW50IGJhY2sg
dG8gdGhlIGNvbm5lY3Rpb24gb2YgdGhlIGdpdmVuIHdlYiBwcm9jZXNzLgotICAgIHZvaWQgZ2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsKIAogICAgIHZvaWQgZmV0Y2hX
ZWJzaXRlRGF0YShXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShXYWxsVGltZSBtb2RpZmll
ZFNpbmNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwpAQCAt
MTQ5LDcgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIGNvbm5lY3Rpb24gdG8gdGhlIHBs
dWctaW4gaG9zdCBwcm9jZXNzLgogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVj
dGlvbjsKIAotICAgIERlcXVlPFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlv
blJlcGxpZXM7CisgICAgRGVxdWU8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXM7CiAKICAgICBWZWN0b3I8dWludDY0X3Q+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFSZXF1
ZXN0czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxT
dHJpbmc+KT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQ
cm94eS5jcHAJKHJldmlzaW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0
b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsx
MTIsNyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVECiAgICAgc2Vu
ZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhz
ZXNzaW9uSUQsIGRhdGFUeXBlcywgb3JpZ2lucywgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lk
IFN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9j
ZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9p
ZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJv
Y2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAg
bV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuYXBwZW5kKFdURk1vdmUocmVwbHkpKTsKIApAQCAt
MTQwLDkgKzE0MCw5IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjoK
ICAgICAgICAgYXV0byByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJz
dCgpOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgICAgIHJlcGx5LT5zZW5k
KElQQzo6QXR0YWNobWVudCgpKTsKKyAgICAgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KCkpOwog
I2VsaWYgT1MoREFSV0lOKQotICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoMCwg
TUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKKyAgICAgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50
KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CiAjZWxzZQogICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOwogI2VuZGlmCkBAIC0xNzIsMTIgKzE3MiwxMiBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNz
UHJveHk6OmRpZENyZWF0ZVN0b3JhCiB7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9u
UmVwbGllcy5pc0VtcHR5KCkpOwogCi0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1f
cGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworICAgIGF1dG8gcmVwbHkgPSBt
X3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklYX0RP
TUFJTl9TT0NLRVRTKQotICAgIHJlcGx5LT5zZW5kKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAg
ICByZXBseShjb25uZWN0aW9uSWRlbnRpZmllcik7CiAjZWxpZiBPUyhEQVJXSU4pCi0gICAgcmVw
bHktPnNlbmQoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFD
SF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKKyAgICByZXBseShJUEM6OkF0dGFjaG1lbnQoY29ubmVj
dGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOwogI2Vsc2UK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuaAkocmV2aXNpb24g
MjMwMjgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vz
c1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
UEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKTsKIAotICAgIHZvaWQgZ2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
KFdlYlByb2Nlc3NQcm94eSYsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9y
YWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXRTdG9y
YWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAK
IHByaXZhdGU6CiAgICAgU3RvcmFnZVByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYpOwpAQCAt
OTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIFdlYlByb2Nlc3NQb29sJiBtX3Byb2Nlc3NQb29s
OwogCiAgICAgdW5zaWduZWQgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOwotICAgIERl
cXVlPFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseT4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOworICAgIERl
cXVlPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKIAogICAgIEhhc2hN
YXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPj4gbV9wZW5kaW5n
RmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrczsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDIzMDI4MCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDEwICsyMzYsMTAgQEAgdm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dGVybQogICAgIFNXQ29udGV4dE1hbmFnZXI6
OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBhc3luY1dvcmtlclRlcm1p
bmF0aW9uVGltZW91dCwgbnVsbHB0cik7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgUmVmPE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3lu
Y1Rlcm1pbmF0ZVdvcmtlcjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBz
eW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gewot
ICAgICAgICByZXBseS0+c2VuZCgpOworICAgICAgICByZXBseSgpOwogICAgIH0pOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgJKHJldmlzaW9uIDIzMDI4MCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwog
ICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKLSAgICB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFJlZjxNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBzeW5j
VGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRl
bGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+JiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcik7CiAgICAgdm9pZCBt
YXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0
b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpOwogICAgIHZvaWQgY2xhaW1D
b21wbGV0ZWQodWludDY0X3QgY2xhaW1SZXF1ZXN0SWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMzAyODApCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgwNyw3ICs4MDcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
UykKLSAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6V2Vi
UGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseT4m
Jik7CisgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFja0lELCBNZXNzYWdlczo6V2ViUGFn
ZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseSYmKTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDIzMDI4MCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDI2LDEwICszNDI2LDEwIEBAIHZvaWQgV2ViUGFnZTo6ZGlzcGF0
Y2hBc3luY2hyb25vdXNUb3VjaEUKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmNvbXB1dGVQ
YWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50
SW5mbyYgcHJpbnRJbmZvLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6V2Vi
UGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseT4m
JiByZXBseSkKK3ZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9Q
REYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCwgTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5n
QW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBpZiAocHJpbnRJbmZv
LnNuYXBzaG90Rmlyc3RQYWdlKSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKDEpOworICAgICAgICBy
ZXBseSgxKTsKICAgICAgICAgSW50U2l6ZSBzbmFwc2hvdFNpemUgeyBGbG9hdFNpemUgeyBwcmlu
dEluZm8uYXZhaWxhYmxlUGFwZXJXaWR0aCwgcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVySGVpZ2h0
IH0gfTsKICAgICAgICAgSW50UmVjdCBzbmFwc2hvdFJlY3QgeyB7MCwgMH0sIHNuYXBzaG90U2l6
ZSB9OwogICAgICAgICBhdXRvIHBkZkRhdGEgPSBwZGZTbmFwc2hvdEF0U2l6ZShzbmFwc2hvdFJl
Y3QsIHNuYXBzaG90U2l6ZSwgMCk7CkBAIC0zNDQ0LDcgKzM0NDQsNyBAQCB2b2lkIFdlYlBhZ2U6
OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kCiAgICAgQVNTRVJUKHBhZ2VSZWN0cy5zaXplKCkg
Pj0gMSk7CiAgICAgc3RkOjpzaXplX3QgcGFnZUNvdW50ID0gcGFnZVJlY3RzLnNpemUoKTsKICAg
ICBBU1NFUlQocGFnZUNvdW50IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgo
KSk7Ci0gICAgcmVwbHktPnNlbmQocGFnZUNvdW50KTsKKyAgICByZXBseShwYWdlQ291bnQpOwog
CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwogICAgIGRyYXdQ
YWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIDAsIHBhZ2VDb3VudCwgcGRmUGFnZURh
dGEpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337237</attachid>
            <date>2018-04-04 16:10:05 -0700</date>
            <delta_ts>2018-05-17 14:03:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182269-20180404161004.patch</filename>
            <type>text/plain</type>
            <size>71915</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzAyODApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBACisyMDE4LTA0LTA0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIENvbXBsZXRp
b25IYW5kbGVycyBmb3IgRGVsYXllZFJlcGxpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVu
biBGYWJsZXQuCisKKyAgICAgICAgRGVsYXllZFJlcGxpZXMgc2hvdWxkIGJlIGEgbm9uY29weWFi
bGUsIG5vbi1yZWZjb3VudGFibGUgdHlwZS4gIFRoZXkgc2hvdWxkIGJlCisgICAgICAgIGNhbGxl
ZCBvbmNlIGFuZCBvbmx5IG9uY2UuICBUaGlzIGlzIHdoYXQgQ29tcGxldGlvbkhhbmRsZXJzIGFy
ZSBmb3IuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLiAgSnVzdCBjbGVhbmVyIGNv
ZGUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpwZXJmb3JtU3luY2hyb25vdXNMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YTo6U3luY2hyb25vdXNMb2FkRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRs
ZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uSW1wbCk6CisgICAg
ICAgIChJUEM6OmNhbGxNZW1iZXJGdW5jdGlvbik6CisgICAgICAgIChJUEM6OmhhbmRsZU1lc3Nh
Z2VEZWxheWVkKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0SW5pdGlh
bGl6YXRpb25SZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
dGFrZUluaXRpYWxpemF0aW9uUmVwbHkpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpkZXN0
cm95UGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0
ZVBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQ
bHVnaW5Bc3luY2hyb25vdXNseSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAg
ICAgICAobWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24pOgorICAgICAgICAoZ2VuZXJhdGVf
bWVzc2FnZV9oYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6
cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6Y3JlYXRlUmVjb3JkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpnZXRUb29sYmFyc0FyZVZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmdldE1lbnVCYXJJc1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmdldFN0YXR1c0JhcklzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Z2V0V2luZG93RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjcmVl
blRvUm9vdFZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9T
Y3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRh
YmFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKToKKwogMjAxOC0wNC0w
NCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJlbW92ZSBsZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIgZnJvbSBOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsMTYgKzIxOCwxNiBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbmRTCiAjZW5kaWYKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQo
Y29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIHsKLSAgICBhdXRv
IGxvYWRlciA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGxvYWRQYXJhbWV0ZXJzLCAq
dGhpcyk7CisgICAgYXV0byBsb2FkZXIgPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShX
VEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgKnRoaXMpOwogICAgIG1fbmV0d29ya1Jlc291cmNlTG9h
ZGVycy5hZGQobG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciwgbG9hZGVyLnB0cigpKTsKICAgICBs
b2FkZXItPnN0YXJ0KCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnBlcmZvcm1TeW5jaHJvbm91c0xvYWQoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMmIGxvYWRQYXJhbWV0ZXJzLCBSZWY8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwZXJmb3JtU3luY2hyb25vdXNMb2Fk
KE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgYXV0byBsb2FkZXIgPSBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZShsb2FkUGFyYW1ldGVycywgKnRoaXMsIFdURk1vdmUocmVwbHkpKTsK
KyAgICBhdXRvIGxvYWRlciA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKFdURk1vdmUo
bG9hZFBhcmFtZXRlcnMpLCAqdGhpcywgV1RGTW92ZShyZXBseSkpOwogICAgIG1fbmV0d29ya1Jl
c291cmNlTG9hZGVycy5hZGQobG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciwgbG9hZGVyLnB0cigp
KTsKICAgICBsb2FkZXItPnN0YXJ0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CShyZXZpc2lvbiAyMzAyODApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDggKzkwLDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYp
OwogCi0gICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyYpOwotICAgIHZvaWQgcGVyZm9ybVN5bmNocm9ub3VzTG9hZChjb25zdCBO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYsIFJlZjxNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4m
Jik7CisgICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyYmKTsKKyAgICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBs
b2FkUGluZyhOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBXZWJDb3JlOjpIVFRQSGVh
ZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycyk7CiAgICAgdm9pZCBwcmVmZXRjaEROUyhj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHByZWNvbm5lY3RUbyh1aW50NjRfdCBwcmVjb25uZWN0
aW9uSWRlbnRpZmllciwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYpOwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAkocmV2aXNpb24gMjMwMjgwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMyArNjIsMTMgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSB7Ci0gICAgU3luY2hyb25v
dXNMb2FkRGF0YShSZWZQdHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCisgICAgU3lu
Y2hyb25vdXNMb2FkRGF0YShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogICAgICAgICA6
IGRlbGF5ZWRSZXBseShXVEZNb3ZlKHJlcGx5KSkKICAgICB7CiAgICAgICAgIEFTU0VSVChkZWxh
eWVkUmVwbHkpOwogICAgIH0KICAgICBSZXNvdXJjZVJlcXVlc3QgY3VycmVudFJlcXVlc3Q7Ci0g
ICAgUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9y
bVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiBkZWxheWVkUmVwbHk7CisgICAgTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2Fk
OjpEZWxheWVkUmVwbHkgZGVsYXllZFJlcGx5OwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2U7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKIH07CkBAIC04MiwxNSArODIsMTUgQEAgc3Rh
dGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlcwogICAgIGlmIChidWZmZXIgJiYg
YnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCi0gICAgZGF0YS5kZWxheWVkUmVwbHktPnNlbmQoZGF0
YS5lcnJvciwgZGF0YS5yZXNwb25zZSwgcmVzcG9uc2VCdWZmZXIpOworICAgIGRhdGEuZGVsYXll
ZFJlcGx5KGRhdGEuZXJyb3IsIGRhdGEucmVzcG9uc2UsIHJlc3BvbnNlQnVmZmVyKTsKICAgICBk
YXRhLmRlbGF5ZWRSZXBseSA9IG51bGxwdHI7CiB9CiAKLU5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
TmV0d29ya1Jlc291cmNlTG9hZGVyKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwg
UmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5
bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmIHN5bmNocm9ub3VzUmVwbHkpCi0gICAgOiBt
X3BhcmFtZXRlcnMgeyBwYXJhbWV0ZXJzIH0KK05ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29y
a1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVs
YXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBseSkKKyAgICA6IG1fcGFyYW1ldGVycyB7IFdURk1v
dmUocGFyYW1ldGVycykgfQogICAgICwgbV9jb25uZWN0aW9uIHsgY29ubmVjdGlvbiB9Ci0gICAg
LCBtX2RlZmVyc0xvYWRpbmcgeyBwYXJhbWV0ZXJzLmRlZmVyc0xvYWRpbmcgfQotICAgICwgbV9p
c0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IHBhcmFtZXRlcnMuY2xpZW50Q3JlZGVu
dGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVk
ZW50aWFscyB9CisgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBtX3BhcmFtZXRlcnMuZGVmZXJzTG9h
ZGluZyB9CisgICAgLCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzIHsgbV9wYXJh
bWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6
TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgfQogICAgICwgbV9idWZmZXJpbmdUaW1lciB7ICp0
aGlzLCAmTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkIH0KICAgICAs
IG1fY2FjaGUgeyBzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpID8gbnVsbHB0ciA6IE5ldHdvcmtQ
cm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZSgpIH0KIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24g
MjMwMjgwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya1Jlc291cmNlTG9hZGVy
X2gKLSNkZWZpbmUgTmV0d29ya1Jlc291cmNlTG9hZGVyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKQEAgLTUyLDkg
KzUxLDkgQEAgY2xhc3MgRW50cnk7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBOZXR3
b3JrTG9hZENsaWVudCwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShjb25zdCBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIFJlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4mJiByZXBseSA9
IG51bGxwdHIpCisgICAgc3RhdGljIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5
ID0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcihwYXJhbWV0ZXJzLCBjb25uZWN0aW9uLCBXVEZNb3ZlKHJlcGx5KSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoV1RGTW92
ZShwYXJhbWV0ZXJzKSwgY29ubmVjdGlvbiwgV1RGTW92ZShyZXBseSkpKTsKICAgICB9CiAgICAg
dmlydHVhbCB+TmV0d29ya1Jlc291cmNlTG9hZGVyKCk7CiAKQEAgLTExMSw3ICsxMTAsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoY29u
c3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmLCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIFJlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgTmV0d29ya1Jl
c291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJik7CiAKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgb3ZlcnJpZGU7CkBAIC0xODEsNSArMTgwLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gTmV0d29ya1Jlc291cmNlTG9hZGVyX2gK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgJKHJldmlzaW9uIDIz
MDI4MCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQsNiArNTQsOCBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAordGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBDb2RpbmdUeXBlOworCiBlbnVtIGNsYXNzIFNlbmRPcHRpb24gewog
ICAgIC8vIFdoZXRoZXIgdGhpcyBtZXNzYWdlIHNob3VsZCBiZSBkaXNwYXRjaGVkIHdoZW4gd2Fp
dGluZyBmb3IgYSBzeW5jIHJlcGx5LgogICAgIC8vIFRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIHN5
bmNocm9ub3VzIG1lc3NhZ2VzLgpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFu
ZGxlTWVzc2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hh
bmRsZU1lc3NhZ2UuaAkocmV2aXNpb24gMjMwMjgwKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvSGFuZGxlTWVzc2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTYyLDE2ICs2MywxNiBAQCB2b2lkIGNhbGxNZW1iZXJGdW5jdGlv
bihBcmdzVHVwbGUmJiBhcmdzCiAKIC8vIERpc3BhdGNoIGZ1bmN0aW9ucyB3aXRoIGRlbGF5ZWQg
cmVwbHkgYXJndW1lbnRzLgogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5
cGVuYW1lIFIsIHR5cGVuYW1lIEFyZ3NUdXBsZSwgc2l6ZV90Li4uIEFyZ3NJbmRleD4KLXZvaWQg
Y2FsbE1lbWJlckZ1bmN0aW9uSW1wbChDKiBvYmplY3QsIE1GIGZ1bmN0aW9uLCBSZWY8Uj4mJiBk
ZWxheWVkUmVwbHksIEFyZ3NUdXBsZSYmIGFyZ3MsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJnc0lu
ZGV4Li4uPikKK3RlbXBsYXRlIDx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgQ0gs
IHR5cGVuYW1lIEFyZ3NUdXBsZSwgc2l6ZV90Li4uIEFyZ3NJbmRleD4KK3ZvaWQgY2FsbE1lbWJl
ckZ1bmN0aW9uSW1wbChDKiBvYmplY3QsIE1GIGZ1bmN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjxD
SD4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXJnc1R1cGxlJiYgYXJncywgc3RkOjppbmRleF9zZXF1
ZW5jZTxBcmdzSW5kZXguLi4+KQogewotICAgIChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8
QXJnc0luZGV4PihzdGQ6OmZvcndhcmQ8QXJnc1R1cGxlPihhcmdzKSkuLi4sIFdURk1vdmUoZGVs
YXllZFJlcGx5KSk7CisgICAgKG9iamVjdC0+KmZ1bmN0aW9uKShzdGQ6OmdldDxBcmdzSW5kZXg+
KHN0ZDo6Zm9yd2FyZDxBcmdzVHVwbGU+KGFyZ3MpKS4uLiwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUg
UiwgdHlwZW5hbWUgQXJnc1R1cGxlLCB0eXBlbmFtZSBBcmdzSW5kaWNpZXMgPSBzdGQ6Om1ha2Vf
aW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPEFyZ3NUdXBsZT46OnZhbHVlPj4KLXZvaWQg
Y2FsbE1lbWJlckZ1bmN0aW9uKEFyZ3NUdXBsZSYmIGFyZ3MsIFJlZjxSPiYmIGRlbGF5ZWRSZXBs
eSwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3RlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1l
IE1GLCB0eXBlbmFtZSBDSCwgdHlwZW5hbWUgQXJnc1R1cGxlLCB0eXBlbmFtZSBBcmdzSW5kaWNp
ZXMgPSBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPEFyZ3NUdXBsZT46
OnZhbHVlPj4KK3ZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKEFyZ3NUdXBsZSYmIGFyZ3MsIENvbXBs
ZXRpb25IYW5kbGVyPENIPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0
aW9uKQogewotICAgIGNhbGxNZW1iZXJGdW5jdGlvbkltcGwob2JqZWN0LCBmdW5jdGlvbiwgV1RG
TW92ZShkZWxheWVkUmVwbHkpLCBzdGQ6OmZvcndhcmQ8QXJnc1R1cGxlPihhcmdzKSwgQXJnc0lu
ZGljaWVzKCkpOworICAgIGNhbGxNZW1iZXJGdW5jdGlvbkltcGwob2JqZWN0LCBmdW5jdGlvbiwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN0ZDo6Zm9yd2FyZDxBcmdzVHVwbGU+KGFyZ3Mp
LCBBcmdzSW5kaWNpZXMoKSk7CiB9CiAKIC8vIERpc3BhdGNoIGZ1bmN0aW9ucyB3aXRoIGNvbm5l
Y3Rpb24gcGFyYW1ldGVyIHdpdGggbm8gcmVwbHkgYXJndW1lbnRzLgpAQCAtMTc0LDggKzE3NSwx
MSBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VEZWxheWVkKENvbm5lY3Rpb24mIGNvCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZWY8dHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5PiBkZWxheWVk
UmVwbHkgPSBhZG9wdFJlZigqbmV3IHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseShjb25uZWN0aW9u
LCBXVEZNb3ZlKHJlcGx5RW5jb2RlcikpKTsKLSAgICBjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92
ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGRlbGF5ZWRSZXBseSksIG9iamVjdCwgZnVuY3Rpb24pOwor
ICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtyZXBseUVu
Y29kZXIgPSBXVEZNb3ZlKHJlcGx5RW5jb2RlciksIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5l
Y3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAgICAgICBUOjpzZW5kKFdURk1v
dmUocmVwbHlFbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CisgICAgfTsK
KyAgICAKKyAgICBjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIElQQwpJbmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5jcHAJKHJldmlzaW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MSwxNSArOTEsMTYgQEAgUGx1Z2luQ29udHJvbGxlclByb3h5Ojp+UGx1Z2luQ29udHJv
bGxlcgogICAgICAgICByZWxlYXNlTlBPYmplY3QobV9wbHVnaW5FbGVtZW50TlBPYmplY3QpOwog
fQogCi12b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0SW5pdGlhbGl6YXRpb25SZXBseShS
ZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRS
ZXBseT4mJiByZXBseSkKK3ZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzZXRJbml0aWFsaXph
dGlvblJlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpE
ZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6YXRpb25SZXBs
eSk7CiAgICAgbV9pbml0aWFsaXphdGlvblJlcGx5ID0gV1RGTW92ZShyZXBseSk7CiB9CiAKLVJl
ZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXll
ZFJlcGx5PiBQbHVnaW5Db250cm9sbGVyUHJveHk6OnRha2VJbml0aWFsaXphdGlvblJlcGx5KCkK
K01lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVw
bHkgUGx1Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpCiB7Ci0g
ICAgcmV0dXJuIG1faW5pdGlhbGl6YXRpb25SZXBseTsKKyAgICBBU1NFUlQobV9pbml0aWFsaXph
dGlvblJlcGx5KTsKKyAgICByZXR1cm4gV1RGTW92ZShtX2luaXRpYWxpemF0aW9uUmVwbHkpOwog
fQogCiBib29sIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6aW5pdGlhbGl6ZShjb25zdCBQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgJKHJldmlz
aW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQsOCBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzSW5pdGlhbGl6aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemluZzsg
fQogICAgIAotICAgIHZvaWQgc2V0SW5pdGlhbGl6YXRpb25SZXBseShSZWY8TWVzc2FnZXM6Oldl
YlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4mJik7Ci0gICAg
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxh
eWVkUmVwbHk+IHRha2VJbml0aWFsaXphdGlvblJlcGx5KCk7CisgICAgdm9pZCBzZXRJbml0aWFs
aXphdGlvblJlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2lu
OjpEZWxheWVkUmVwbHkmJik7CisgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpD
cmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseSB0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpOwogCiBw
cml2YXRlOgogICAgIHZvaWQgc3RhcnRQYWludFRpbWVyKCk7CkBAIC0xODMsNyArMTgzLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1faXNWaXNpYmxlOwogICAgIGJvb2wgbV9pc1dpbmRvd1Zpc2li
bGU7CiAKLSAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQ
bHVnaW46OkRlbGF5ZWRSZXBseT4gbV9pbml0aWFsaXphdGlvblJlcGx5OworICAgIE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHkgbV9pbml0
aWFsaXphdGlvblJlcGx5OwogCiAgICAgUmVmUHRyPFBsdWdpbj4gbV9wbHVnaW47CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0
aW9uLmNwcAkocmV2aXNpb24gMjMwMjgwKQorKysgU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDExICsxNzks
MTEgQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBDOgogICAgICAgICBk
ZXN0cm95UGx1Z2luQ29udHJvbGxlclByb3h5KHBsdWdpbkNvbnRyb2xsZXJzW2ldKTsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbih1aW50NjRfdCBwbHVnaW5J
bnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSwgUmVmPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6RGVsYXllZFJlcGx5PiYm
IHJlcGx5KQordm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbih1aW50NjRf
dCBwbHVnaW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSwg
TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpEZXN0cm95UGx1Z2luOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICAvLyBXZSByZXR1cm4gaW1tZWRpYXRlbHkgZnJvbSB0aGlzIHN5
bmNocm9ub3VzIElQQy4gV2Ugd2FudCB0byBtYWtlIHN1cmUgdGhlIHBsdWdpbiBkZXN0cnVjdGlv
biBpcyBqdXN0IGFib3V0IHRvIHN0YXJ0IHNvIGF1ZGlvIHBsYXliYWNrCiAgICAgLy8gd2lsbCBm
aW5pc2ggc29vbiBhZnRlciByZXR1cm5pbmcuIEhvd2V2ZXIgd2UgZG9uJ3Qgd2FudCB0byB3YWl0
IGZvciBkZXN0cnVjdGlvbiB0byBjb21wbGV0ZSBmdWxseSBhcyB0aGF0IG1heSB0YWtlIGEgd2hp
bGUuCi0gICAgcmVwbHktPnNlbmQoKTsKKyAgICByZXBseSgpOwogCiAgICAgLy8gRW5zdXJlIHdl
IGRvbid0IGNsYW1wIGFueSB0aW1lcnMgZHVyaW5nIGRlc3RydWN0aW9uCiAgICAgQWN0aXZpdHlB
c3NlcnRpb24gYWN0aXZpdHlBc3NlcnRpb24oUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbkFjdGl2aXR5KCkpOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZVBsdWdpbkkKICNlbmRpZgogfQogCi12b2lkIFdlYlByb2Nlc3NDb25u
ZWN0aW9uOjpjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVh
dGlvblBhcmFtZXRlcnMsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0
ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlv
bjo6Y3JlYXRlUGx1Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25Q
YXJhbWV0ZXJzLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgLy8gRW5zdXJlIHdlIGRvbid0IGNsYW1wIGFu
eSB0aW1lcnMgZHVyaW5nIGluaXRpYWxpemF0aW9uCiAgICAgQWN0aXZpdHlBc3NlcnRpb24gYWN0
aXZpdHlBc3NlcnRpb24oUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkuY29ubmVjdGlvbkFjdGl2
aXR5KCkpOwpAQCAtMjQ5LDkgKzI0OSw5IEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNy
ZWF0ZVBsdWdpbigKICAgICAgICAgCiAgICAgICAgIC8vIElmIGl0cyBpbml0aWFsaXphdGlvbiBp
cyBjb21wbGV0ZSB0aGVuIHdlIG5lZWQgdG8gcmVzcG9uZCB0byB0aGlzIG1lc3NhZ2Ugd2l0aCB0
aGUgY29ycmVjdCBpbmZvcm1hdGlvbiBhYm91dCBpdHMgY3JlYXRpb24uCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgIHJlcGx5LT5zZW5kKHRydWUsIHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+
d2FudHNXaGVlbEV2ZW50cygpLCBwbHVnaW5Db250cm9sbGVyUHJveHktPnJlbW90ZUxheWVyQ2xp
ZW50SUQoKSk7CisgICAgICAgIHJlcGx5KHRydWUsIHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+d2Fu
dHNXaGVlbEV2ZW50cygpLCBwbHVnaW5Db250cm9sbGVyUHJveHktPnJlbW90ZUxheWVyQ2xpZW50
SUQoKSk7CiAjZWxzZQotICAgICAgICByZXBseS0+c2VuZCh0cnVlLCBwbHVnaW5Db250cm9sbGVy
UHJveHktPndhbnRzV2hlZWxFdmVudHMoKSwgMCk7CisgICAgICAgIHJlcGx5KHRydWUsIHBsdWdp
bkNvbnRyb2xsZXJQcm94eS0+d2FudHNXaGVlbEV2ZW50cygpLCAwKTsKICNlbmRpZgogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZVBsdWdpbigKICAgICB1aW50MzJfdCByZW1vdGVMYXllckNsaWVudElEID0g
MDsKICAgICBjcmVhdGVQbHVnaW5JbnRlcm5hbChjcmVhdGlvblBhcmFtZXRlcnMsIHJlc3VsdCwg
d2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CiAgICAgCi0gICAgcmVwbHkt
PnNlbmQocmVzdWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKKyAg
ICByZXBseShyZXN1bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQpOwog
fQogCiB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5Bc3luY2hyb25vdXNs
eShjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycykKQEAg
LTMxMSw4ICszMTEsOCBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5B
CiAgICAgLy8gc3luY2hyb25vdXMgcmVwbHkgaW5zdGVhZCBvZiBzZW5kaW5nIHRoZSBhc3luY2hy
b25vdXMgcmVwbHkuCiAgICAgUGx1Z2luQ29udHJvbGxlclByb3h5KiBwbHVnaW5Db250cm9sbGVy
UHJveHkgPSBtX3BsdWdpbkNvbnRyb2xsZXJzLmdldChjcmVhdGlvblBhcmFtZXRlcnMucGx1Z2lu
SW5zdGFuY2VJRCk7CiAgICAgQVNTRVJUKHBsdWdpbkNvbnRyb2xsZXJQcm94eSk7Ci0gICAgaWYg
KFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVs
YXllZFJlcGx5PiBkZWxheWVkU3luY1JlcGx5ID0gcGx1Z2luQ29udHJvbGxlclByb3h5LT50YWtl
SW5pdGlhbGl6YXRpb25SZXBseSgpKSB7Ci0gICAgICAgIGRlbGF5ZWRTeW5jUmVwbHktPnNlbmQo
cmVzdWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKKyAgICBpZiAo
YXV0byBkZWxheWVkU3luY1JlcGx5ID0gcGx1Z2luQ29udHJvbGxlclByb3h5LT50YWtlSW5pdGlh
bGl6YXRpb25SZXBseSgpKSB7CisgICAgICAgIGRlbGF5ZWRTeW5jUmVwbHkocmVzdWx0LCB3YW50
c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nl
c3NDb25uZWN0aW9uLmgJKHJldmlzaW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw5ICs2
OSw5IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJl
Y2VpdmVXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlByb2Nlc3NDb25uZWN0aW9uTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpOwotICAgIHZvaWQgY3JlYXRlUGx1Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9u
UGFyYW1ldGVycyYsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBs
dWdpbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGNyZWF0ZVBsdWdpbihjb25zdCBQbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnMmLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNy
ZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgY3JlYXRlUGx1Z2luQXN5bmNo
cm9ub3VzbHkoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJik7Ci0gICAgdm9pZCBkZXN0
cm95UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIGJvb2wgYXN5bmNocm9ub3VzQ3Jl
YXRpb25JbmNvbXBsZXRlLCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpEZXN0
cm95UGx1Z2luOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZGVzdHJveVBsdWdpbih1aW50
NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0
ZSwgTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpEZXN0cm95UGx1Z2luOjpEZWxheWVk
UmVwbHkmJik7CiAgICAgCiAgICAgdm9pZCBjcmVhdGVQbHVnaW5JbnRlcm5hbChjb25zdCBQbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnMmLCBib29sJiByZXN1bHQsIGJvb2wmIHdhbnRzV2hlZWxFdmVu
dHMsIHVpbnQzMl90JiByZW1vdGVMYXllckNsaWVudElEKTsKIApJbmRleDogU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyMzAyODApCisrKyBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMTgs
MTYgKzExOCwxNCBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24obWVzc2FnCiAg
ICAgaWYgbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzICE9IE5vbmU6CiAgICAgICAgIGlmIG1lc3Nh
Z2UuaGFzX2F0dHJpYnV0ZShERUxBWUVEX0FUVFJJQlVURSk6CiAgICAgICAgICAgICBzZW5kX3Bh
cmFtZXRlcnMgPSBbKGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlKHgudHlwZSwgeC5raW5kKSwgeC5u
YW1lKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdCi0gICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgc3RydWN0IERlbGF5ZWRSZXBseSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxEZWxheWVkUmVwbHk+IHtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgICAgIERlbGF5ZWRSZXBseShSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPik7XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAg
ICB+RGVsYXllZFJlcGx5KCk7XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQot
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBib29sIHNlbmQoJXMpO1xuJyAlICcs
ICcuam9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0ZXJzXSkpCi0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCdcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
cHJpdmF0ZTpcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIFJlZlB0cjxJ
UEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IG1fZW5jb2Rlcjtcbicp
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgfTtcblxuJykKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCcpCisgICAgICAgICAgICBpZiBsZW4oc2VuZF9wYXJhbWV0ZXJzKToKKyAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCclcycgJSAnLCAnLmpvaW4oWycgJy5qb2luKHgpIGZvciB4IGlu
IHNlbmRfcGFyYW1ldGVyc10pKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKT47JykKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYnKQorICAgICAgICAgICAgaWYg
bGVuKHNlbmRfcGFyYW1ldGVycyk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAl
cycgJSAnLCAnLmpvaW4oWycgJy5qb2luKHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pKQor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbicpCiAKICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIHR5cGVkZWYgJXMgUmVwbHk7XG4nICUgcmVwbHlfdHlwZShtZXNzYWdlKSkKIApAQCAt
NTMwLDI0ICs1MjgsMTIgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihmaWxlKToKICAg
ICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyNpZiAlc1xuXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCiAKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyVzOjpEZWxheWVkUmVwbHk6OkRlbGF5ZWRSZXBseShSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29k
ZXIpXG4nICUgbWVzc2FnZS5uYW1lKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIDog
bV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpXG4nKQotICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgICwgbV9lbmNvZGVyKFdURk1vdmUoZW5jb2RlcikpXG4nKQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgne1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicp
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCclczo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KClcbicgJSBtZXNzYWdlLm5hbWUp
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIEFTU0VSVCghbV9jb25uZWN0aW9uKTtcbicpCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCd9XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnYm9vbCAlczo6RGVsYXllZFJlcGx5OjpzZW5kKCVzKVxuJyAlICht
ZXNzYWdlLm5hbWUsICcsICcuam9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0
ZXJzXSkpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBBU1NFUlQobV9lbmNvZGVyKTtcbicpCi0gICAgICAgICAgICByZXN1
bHQgKz0gWycgICAgKm1fZW5jb2RlciA8PCAlcztcbicgJSB4Lm5hbWUgZm9yIHggaW4gbWVzc2Fn
ZS5yZXBseV9wYXJhbWV0ZXJzXQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGJvb2wg
X3Jlc3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShXVEZNb3ZlKG1fZW5jb2Rlcikp
O1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBtX2Nvbm5lY3Rpb24gPSBudWxs
cHRyO1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gX3Jlc3VsdDtc
bicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
JyAlIChtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAgaWYgbGVuKHNlbmRfcGFyYW1ldGVycyk6
CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAlcycgJSAnLCAnLmpvaW4oWycgJy5q
b2luKHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pKQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnKVxue1xuJykKKyAgICAgICAgICAgIHJlc3VsdCArPSBbJyAgICAqZW5jb2RlciA8PCAl
cztcbicgJSB4Lm5hbWUgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXQorICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3Zl
KGVuY29kZXIpKTtcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQogICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw3ICsyMzEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZTsKICAgICAgICAg
dWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2U7CiAgICAgICAgIHVpbnQ2NF90IGV4cGVjdGVk
VXNhZ2U7Ci0gICAgICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERh
dGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4gcmVwbHk7CisgICAgICAgIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5IHJlcGx5OwogICAg
IH07CiAKICAgICBzdGF0aWMgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcyYgc2luZ2xldG9u
KCk7CkBAIC0yMzksNyArMjM5LDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWNv
cmQ+IGNyZWF0ZVJlY29yZCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmll
ciwKICAgICAgICAgU3RyaW5nIGRhdGFiYXNlTmFtZSwgU3RyaW5nIGRpc3BsYXlOYW1lLCB1aW50
NjRfdCBjdXJyZW50UXVvdGEsCiAgICAgICAgIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwg
dWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIAot
ICAgICAgICBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3Rh
OjpEZWxheWVkUmVwbHk+JiYpOworICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNl
ZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseSYmKTsKIAogICAgIHZvaWQgYWRkKHN0ZDo6
dW5pcXVlX3B0cjxSZWNvcmQ+KTsKICAgICBib29sIGFyZUJlaW5nUHJvY2Vzc2VkKCkgY29uc3Qg
eyByZXR1cm4gISFtX2N1cnJlbnRSZWNvcmQ7IH0KQEAgLTI2Miw3ICsyNjIsNyBAQCBFeGNlZWRl
ZERhdGFiYXNlUXVvdGFSZWNvcmRzJiBFeGNlZWRlZERhCiBzdGQ6OnVuaXF1ZV9wdHI8RXhjZWVk
ZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNv
cmRzOjpjcmVhdGVSZWNvcmQoCiAgICAgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklk
ZW50aWZpZXIsIFN0cmluZyBkYXRhYmFzZU5hbWUsIFN0cmluZyBkaXNwbGF5TmFtZSwKICAgICB1
aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0
X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsCi0gICAgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUmVm
PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJl
cGx5PiYmIHJlcGx5KQorICAgIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7
CiAgICAgYXV0byByZWNvcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlY29yZD4oKTsKICAgICByZWNv
cmQtPmZyYW1lSUQgPSBmcmFtZUlEOwpAQCAtNDA0MiwyMCArNDA0MiwyMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkVXBkYXRlSGlzdG9yeVRpdGxlCiAKIC8vIFVJQ2xpZW50CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzJiYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1l
SW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVh
dGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKG1f
cHJvY2Vzcy0+d2ViRnJhbWUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpKTsKICAg
ICBhdXRvIG9yaWdpbmF0aW5nRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG1fcHJvY2Vzcy0+d2ViUGFnZShvcmlnaW5hdGluZ1BhZ2VJ
RCkpOwogCiAgICAgYXV0byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFtZS0+dXJsKCk7CiAKLSAg
ICBtX3VpQ2xpZW50LT5jcmVhdGVOZXdQYWdlKCp0aGlzLCBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJh
bWVJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZSh3aW5kb3dGZWF0dXJlcyksIFdURk1v
dmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZlB0cjxX
ZWJQYWdlUHJveHk+KHRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92
ZShyZXBseSldKFJlZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UpIHsKKyAgICBtX3VpQ2xpZW50
LT5jcmVhdGVOZXdQYWdlKCp0aGlzLCBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvKSwgV1RG
TW92ZShyZXF1ZXN0KSwgV1RGTW92ZSh3aW5kb3dGZWF0dXJlcyksIFdURk1vdmUobmF2aWdhdGlv
bkFjdGlvbkRhdGEpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWlu
RnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSldKFJlZlB0cjxXZWJQYWdl
UHJveHk+IG5ld1BhZ2UpIHsKICAgICAgICAgaWYgKCFuZXdQYWdlKSB7Ci0gICAgICAgICAgICBy
ZXBseS0+c2VuZCgwLCB7IH0pOworICAgICAgICAgICAgcmVwbHkoMCwgeyB9KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHJlcGx5LT5zZW5kKG5ld1BhZ2UtPnBh
Z2VJRCgpLCBuZXdQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMoKSk7CisgICAgICAgIHJlcGx5KG5l
d1BhZ2UtPnBhZ2VJRCgpLCBuZXdQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMoKSk7CiAKICAgICAg
ICAgV2Vic2l0ZURhdGFTdG9yZTo6Y2xvbmVTZXNzaW9uRGF0YSgqdGhpcywgKm5ld1BhZ2UpOwog
ICAgICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24gPSBob3N0c0FyZUVxdWFsKFVSTChQYXJzZWRVUkxTdHJpbmcsIG1haW5G
cmFtZVVSTCksIHJlcXVlc3QudXJsKCkpOwpAQCAtNDA5MSw3ICs0MDkxLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNsb3NlUGFnZShib29sIHN0b3BSZQogICAgIG1fdWlDbGllbnQtPmNsb3NlKHRo
aXMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3Jp
cHRBbGVydDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkph
dmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAg
V2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAg
IE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwpAQCAtNDEwNCwxMSArNDEwNCwxMSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KHVpCiAgICAgICAgICAgICBhdXRvbWF0aW9uU2Vz
c2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0aGlzKTsKICAgICB9CiAgICAgbV91aUNs
aWVudC0+cnVuSmF2YVNjcmlwdEFsZXJ0KHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBzZWN1cml0eU9y
aWdpbiwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldIHsKLSAgICAgICAgcmVwbHktPnNlbmQoKTsK
KyAgICAgICAgcmVwbHkoKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkph
dmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUmVmPE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25maXJtOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0odWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3By
b2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwpAQCAt
NDEyMiwxMSArNDEyMiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZp
cm0oCiAgICAgfQogCiAgICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdENvbmZpcm0odGhpcywg
bWVzc2FnZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2luLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0o
Ym9vbCByZXN1bHQpIHsKLSAgICAgICAgcmVwbHktPnNlbmQocmVzdWx0KTsKKyAgICAgICAgcmVw
bHkocmVzdWx0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3Jp
cHRQcm9tcHQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1
cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRW
YWx1ZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OkRl
bGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJv
bXB0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlP
cmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUs
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJG
cmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKQEAgLTQxNDAsNyArNDE0
MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KHUKICAgICB9CiAK
ICAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0UHJvbXB0KHRoaXMsIG1lc3NhZ2UsIGRlZmF1
bHRWYWx1ZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2luLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0o
Y29uc3QgU3RyaW5nJiByZXN1bHQpIHsKLSAgICAgICAgcmVwbHktPnNlbmQocmVzdWx0KTsKKyAg
ICAgICAgcmVwbHkocmVzdWx0KTsKICAgICB9KTsKIH0KIApAQCAtNDIwOSwyNCArNDIwOSwyNCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hdmFpbGFibGVQbHVnaW5CdXR0CiAjZW5kaWYgLy8gRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIFdlYlBh
Z2VQcm94eTo6d2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYgdXJsLCBSZWY8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQg
V2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChVUkwmJiB1cmwsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAg
ICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+
d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShXZWJH
TExvYWRQb2xpY3kgcG9saWN5KSB7Ci0gICAgICAgICAgICByZXBseS0+c2VuZChzdGF0aWNfY2Fz
dDx1aW50MzJfdD4ocG9saWN5KSk7CisgICAgICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50
MzJfdD4ocG9saWN5KSk7CiAgICAgICAgIH0pOwogICAgIH0gZWxzZQotICAgICAgICByZXBseS0+
c2VuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9sb2FkZXJDbGllbnQtPndlYkdMTG9hZFBvbGlj
eSgqdGhpcywgdXJsKSkpOworICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9s
b2FkZXJDbGllbnQtPndlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSkpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVybCwgUmVmPE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5
PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChV
UkwmJiB1cmwsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVS
TDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkg
ewogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnJlc29sdmVXZWJHTExvYWRQb2xpY3koKnRo
aXMsIHVybCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKFdlYkdMTG9hZFBvbGljeSBwb2xpY3kp
IHsKLSAgICAgICAgICAgIHJlcGx5LT5zZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kp
KTsKKyAgICAgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKICAg
ICAgICAgfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlcGx5LT5zZW5kKHN0YXRpY19jYXN0PHVp
bnQzMl90PihtX2xvYWRlckNsaWVudC0+cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJs
KSkpOworICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9sb2FkZXJDbGllbnQt
PnJlc29sdmVXZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCkpKTsKIH0KICNlbmRpZiAvLyBFTkFC
TEUoV0VCR0wpCiAKQEAgLTQyMzUsMTAgKzQyMzUsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFRvb2xiYXJzQXJlVmlzaWJsZQogICAgIG1fdWlDbGllbnQtPnNldFRvb2xiYXJzQXJlVmlzaWJs
ZSgqdGhpcywgdG9vbGJhcnNBcmVWaXNpYmxlKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omdl
dFRvb2xiYXJzQXJlVmlzaWJsZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJh
cnNBcmVWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0VG9vbGJhcnNBcmVWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJz
QXJlVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgbV91aUNsaWVudC0+dG9v
bGJhcnNBcmVWaXNpYmxlKCp0aGlzLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oYm9vbCB2aXNp
YmxlKSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKHZpc2libGUpOworICAgICAgICByZXBseSh2aXNp
YmxlKTsKICAgICB9KTsKIH0KIApAQCAtNDI0NywxMCArNDI0NywxMCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0TWVudUJhcklzVmlzaWJsZShiCiAgICAgbV91aUNsaWVudC0+c2V0TWVudUJhcklz
VmlzaWJsZSgqdGhpcywgbWVudUJhcklzVmlzaWJsZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpnZXRNZW51QmFySXNWaXNpYmxlKFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51
QmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0TWVudUJhcklzVmlzaWJsZShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNW
aXNpYmxlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBtX3VpQ2xpZW50LT5tZW51QmFy
SXNWaXNpYmxlKCp0aGlzLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKGJvb2wgdmlzaWJsZSkg
ewotICAgICAgICByZXBseS0+c2VuZCh2aXNpYmxlKTsKKyAgICAgICAgcmVwbHkodmlzaWJsZSk7
CiAgICAgfSk7CiB9CiAKQEAgLTQyNTksMTAgKzQyNTksMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFN0YXR1c0JhcklzVmlzaWJsZQogICAgIG1fdWlDbGllbnQtPnNldFN0YXR1c0JhcklzVmlz
aWJsZSgqdGhpcywgc3RhdHVzQmFySXNWaXNpYmxlKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmdldFN0YXR1c0JhcklzVmlzaWJsZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3Rh
dHVzQmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0U3RhdHVzQmFySXNWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1
c0JhcklzVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgbV91aUNsaWVudC0+
c3RhdHVzQmFySXNWaXNpYmxlKCp0aGlzLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKGJvb2wg
dmlzaWJsZSkgewotICAgICAgICByZXBseS0+c2VuZCh2aXNpYmxlKTsKKyAgICAgICAgcmVwbHko
dmlzaWJsZSk7CiAgICAgfSk7CiB9CiAKQEAgLTQyNzYsMTAgKzQyNzYsMTAgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFdpbmRvd0ZyYW1lKGNvbnN0IAogICAgIG1fdWlDbGllbnQtPnNldFdpbmRv
d0ZyYW1lKCp0aGlzLCBtX3BhZ2VDbGllbnQuY29udmVydFRvRGV2aWNlU3BhY2UobmV3V2luZG93
RnJhbWUpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldFdpbmRvd0ZyYW1lKFJlZjxNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpHZXRXaW5kb3dGcmFtZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5
KQordm9pZCBXZWJQYWdlUHJveHk6OmdldFdpbmRvd0ZyYW1lKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkdldFdpbmRvd0ZyYW1lOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBtX3VpQ2xp
ZW50LT53aW5kb3dGcmFtZSgqdGhpcywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKEZsb2F0UmVjdCBmcmFtZSkgewotICAgICAg
ICByZXBseS0+c2VuZChtX3BhZ2VDbGllbnQuY29udmVydFRvVXNlclNwYWNlKGZyYW1lKSk7Cisg
ICAgICAgIHJlcGx5KG1fcGFnZUNsaWVudC5jb252ZXJ0VG9Vc2VyU3BhY2UoZnJhbWUpKTsKICAg
ICB9KTsKIH0KIApAQCAtNDI4OCwxNCArNDI4OCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
V2luZG93RnJhbWVXaXRoQ2FsCiAgICAgbV91aUNsaWVudC0+d2luZG93RnJhbWUoKnRoaXMsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNjcmVl
blRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHNjcmVlblBvaW50LCBSZWY8TWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U2NyZWVuVG9Sb290Vmlldzo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9p
ZCBXZWJQYWdlUHJveHk6OnNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHNjcmVlblBv
aW50LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JlZW5Ub1Jvb3RWaWV3OjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKLSAgICByZXBseS0+c2VuZChtX3BhZ2VDbGllbnQuc2NyZWVuVG9Sb290
VmlldyhzY3JlZW5Qb2ludCkpOworICAgIHJlcGx5KG1fcGFnZUNsaWVudC5zY3JlZW5Ub1Jvb3RW
aWV3KHNjcmVlblBvaW50KSk7CiB9CiAgICAgCi12b2lkIFdlYlBhZ2VQcm94eTo6cm9vdFZpZXdU
b1NjcmVlbihjb25zdCBJbnRSZWN0JiB2aWV3UmVjdCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJvb3RWaWV3VG9TY3JlZW46OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFn
ZVByb3h5Ojpyb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmIHZpZXdSZWN0LCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVuOjpEZWxheWVkUmVwbHkmJiByZXBseSkK
IHsKLSAgICByZXBseS0+c2VuZChtX3BhZ2VDbGllbnQucm9vdFZpZXdUb1NjcmVlbih2aWV3UmVj
dCkpOworICAgIHJlcGx5KG1fcGFnZUNsaWVudC5yb290Vmlld1RvU2NyZWVuKHZpZXdSZWN0KSk7
CiB9CiAgICAgCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDMxMCw3ICs0MzEwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9BY2Nlc3NpYmlsaQogfQogI2VuZGlmCiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+IHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5
IHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFt
ZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKQEAgLTQzMjMsNyArNDMyMyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXIKICAgICAgICAgICAg
IGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAg
IH0KIAotICAgIG1fdWlDbGllbnQtPnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh0aGlzLCBt
ZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFtyZXBseV0oYm9vbCByZXN1bHQpIHsgcmVw
bHktPnNlbmQocmVzdWx0KTsgfSk7CisgICAgbV91aUNsaWVudC0+cnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgW3JlcGx5ID0g
V1RGTW92ZShyZXBseSldKGJvb2wgcmVzdWx0KSB7IHJlcGx5KHJlc3VsdCk7IH0pOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFZpZXdw
b3J0QXR0cmlidXRlcyYgYXR0cikKQEAgLTYwMTgsNyArNjAxOCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXQKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoKnRoaXMsICpmcmFtZSwgYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuZ2V0KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVk
ZWREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdl
LCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwg
UmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXll
ZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90
YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRf
dCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3Vy
cmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7
CiAgICAgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcyYgcmVjb3JkcyA9IEV4Y2VlZGVkRGF0
YWJhc2VRdW90YVJlY29yZHM6OnNpbmdsZXRvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeGNl
ZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQ+IG5ld1JlY29yZCA9IHJlY29yZHMuY3Jl
YXRlUmVjb3JkKGZyYW1lSUQsCkBAIC02MDI5LDI2ICs2MDI5LDIzIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEKICAgICBpZiAocmVjb3Jkcy5hcmVCZWluZ1Byb2Nl
c3NlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNv
cmRzOjpSZWNvcmQqIHJlY29yZCA9IHJlY29yZHMubmV4dCgpOwotICAgIHdoaWxlIChyZWNvcmQp
IHsKKyAgICB3aGlsZSAoYXV0byogcmVjb3JkID0gcmVjb3Jkcy5uZXh0KCkpIHsKICAgICAgICAg
V2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKHJlY29yZC0+ZnJhbWVJ
RCk7CiAgICAgICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgICAgIFJlZlB0cjxBUEk6
OlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHJlY29yZC0+b3JpZ2luSWRl
bnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgICAgICBhdXRvIGN1cnJlbnRSZXBseSA9
IHJlY29yZC0+cmVwbHk7Ci0gICAgICAgIG1fdWlDbGllbnQtPmV4Y2VlZGVkRGF0YWJhc2VRdW90
YSh0aGlzLCBmcmFtZSwgb3JpZ2luLmdldCgpLAotICAgICAgICAgICAgcmVjb3JkLT5kYXRhYmFz
ZU5hbWUsIHJlY29yZC0+ZGlzcGxheU5hbWUsIHJlY29yZC0+Y3VycmVudFF1b3RhLAotICAgICAg
ICAgICAgcmVjb3JkLT5jdXJyZW50T3JpZ2luVXNhZ2UsIHJlY29yZC0+Y3VycmVudERhdGFiYXNl
VXNhZ2UsIHJlY29yZC0+ZXhwZWN0ZWRVc2FnZSwKLSAgICAgICAgICAgIFtjdXJyZW50UmVwbHld
KHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSkgeyBjdXJyZW50UmVwbHktPnNlbmQobmV3UXVv
dGEpOyB9KTsKLQotICAgICAgICByZWNvcmQgPSByZWNvcmRzLm5leHQoKTsKKyAgICAgICAgYXV0
byBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHJlY29yZC0+b3JpZ2luSWRlbnRpZmllciktPnNlY3Vy
aXR5T3JpZ2luKCkpOworICAgICAgICBtX3VpQ2xpZW50LT5leGNlZWRlZERhdGFiYXNlUXVvdGEo
dGhpcywgZnJhbWUsIG9yaWdpbi5wdHIoKSwgcmVjb3JkLT5kYXRhYmFzZU5hbWUsIHJlY29yZC0+
ZGlzcGxheU5hbWUsIHJlY29yZC0+Y3VycmVudFF1b3RhLCByZWNvcmQtPmN1cnJlbnRPcmlnaW5V
c2FnZSwgcmVjb3JkLT5jdXJyZW50RGF0YWJhc2VVc2FnZSwgcmVjb3JkLT5leHBlY3RlZFVzYWdl
LCBbY3VycmVudFJlcGx5ID0gV1RGTW92ZShyZWNvcmQtPnJlcGx5KV0odW5zaWduZWQgbG9uZyBs
b25nIG5ld1F1b3RhKSB7CisgICAgICAgICAgICBjdXJyZW50UmVwbHkobmV3UXVvdGEpOworICAg
ICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgdWludDY0
X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBSZWY8TWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YTo6RGVsYXll
ZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJlYWNoZWRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1aW50NjRfdCBj
dXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5ZWRSZXBseSYm
IHJlcGx5KQogewogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllcikt
PnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgbV91aUNsaWVudC0+cmVhY2hlZEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YSh0aGlzLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgY3VycmVudFF1b3RhLCB0
b3RhbEJ5dGVzTmVlZGVkLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0odW5zaWduZWQgbG9uZyBs
b25nIG5ld1F1b3RhKSB7IHJlcGx5LT5zZW5kKG5ld1F1b3RhKTsgfSk7CisgICAgbV91aUNsaWVu
dC0+cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh0aGlzLCBzZWN1cml0eU9yaWdp
bi5nZXQoKSwgY3VycmVudFF1b3RhLCB0b3RhbEJ5dGVzTmVlZGVkLCBbcmVwbHkgPSBXVEZNb3Zl
KHJlcGx5KV0odW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhKSB7CisgICAgICAgIHJlcGx5KG5l
d1F1b3RhKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2Nh
dGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCB1aW50NjRfdCBm
cmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMzAyODApCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyNyw3ICsxMjI3LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRGb2N1cyhib29sIGZvY3VzZWQpOwogICAgIHZvaWQg
c2V0V2luZG93RnJhbWUoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBnZXRX
aW5kb3dGcmFtZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0V2luZG93RnJhbWU6OkRl
bGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXRXaW5kb3dGcmFtZShNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpHZXRXaW5kb3dGcmFtZTo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgZ2V0V2lu
ZG93RnJhbWVXaXRoQ2FsbGJhY2soRnVuY3Rpb248dm9pZChXZWJDb3JlOjpGbG9hdFJlY3QpPiYm
KTsKIAogICAgIGJvb2wgaXNSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZDsgfQpAQCAtMTM4NCwxMSArMTM4NCwxMSBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIC8vIFVJIGNs
aWVudAotICAgIHZvaWQgY3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBSZWY8TWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lk
IGNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5n
UGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6V2luZG93RmVhdHVy
ZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3Jl
YXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgc2hvd1BhZ2UoKTsKLSAgICB2
b2lkIHJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVkUmVwbHk+JiYpOwotICAgIHZvaWQgcnVu
SmF2YVNjcmlwdENvbmZpcm0odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJ1bkphdmFTY3JpcHRDb25maXJtOjpEZWxheWVkUmVwbHk+JiYpOwotICAgIHZvaWQgcnVuSmF2
YVNjcmlwdFByb21wdCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8TWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2
b2lkIHJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIHJ1bkphdmFT
Y3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFT
Y3JpcHRDb25maXJtOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJv
bXB0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1
bkphdmFTY3JpcHRQcm9tcHQ6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNldFN0YXR1c1Rl
eHQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJI
aXRUZXN0UmVzdWx0RGF0YSYmLCB1aW50MzJfdCBtb2RpZmllcnMsIFVzZXJEYXRhJiYpOwogCkBA
IC0xMzk2LDI5ICsxMzk2LDI5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bmF2YWlsYWJsZVBsdWdp
bkJ1dHRvbkNsaWNrZWQodWludDMyX3Qgb3BhcXVlUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24s
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHBsdWdpbnNQYWdlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJM
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpOwogI2VuZGlmIC8vIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJMRShXRUJHTCkKLSAgICB2b2lkIHdlYkdMUG9s
aWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCYmLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2Vi
R0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseT4mJik7Ci0gICAgdm9pZCByZXNvbHZlV2ViR0xQ
b2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
ZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCB3ZWJH
TFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwmJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2Vi
R0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIHJlc29sdmVXZWJHTFBv
bGljeUZvclVSTChXZWJDb3JlOjpVUkwmJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7CiAjZW5kaWYgLy8gRU5BQkxFKFdF
QkdMKQogICAgIHZvaWQgc2V0VG9vbGJhcnNBcmVWaXNpYmxlKGJvb2wgdG9vbGJhcnNBcmVWaXNp
YmxlKTsKLSAgICB2b2lkIGdldFRvb2xiYXJzQXJlVmlzaWJsZShSZWY8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZv
aWQgZ2V0VG9vbGJhcnNBcmVWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xi
YXJzQXJlVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgc2V0TWVudUJhcklzVmlz
aWJsZShib29sIG1lbnVCYXJJc1Zpc2libGUpOwotICAgIHZvaWQgZ2V0TWVudUJhcklzVmlzaWJs
ZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZTo6RGVsYXll
ZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldE1lbnVCYXJJc1Zpc2libGUoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQg
c2V0U3RhdHVzQmFySXNWaXNpYmxlKGJvb2wgc3RhdHVzQmFySXNWaXNpYmxlKTsKLSAgICB2b2lk
IGdldFN0YXR1c0JhcklzVmlzaWJsZShSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3Rh
dHVzQmFySXNWaXNpYmxlOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0U3RhdHVzQmFy
SXNWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlzaWJsZTo6
RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgc2V0SXNSZXNpemFibGUoYm9vbCBpc1Jlc2l6YWJs
ZSk7Ci0gICAgdm9pZCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBz
Y3JlZW5Qb2ludCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmVlblRvUm9vdFZpZXc6
OkRlbGF5ZWRSZXBseT4mJik7Ci0gICAgdm9pZCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHZpZXdSZWN0LCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZp
ZXdUb1NjcmVlbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIHNjcmVlblRvUm9vdFZpZXco
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVlblBvaW50LCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpTY3JlZW5Ub1Jvb3RWaWV3OjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCByb290Vmll
d1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVuOjpEZWxheWVkUmVwbHkmJik7CiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgIHZvaWQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHNjcmVlblBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCYgd2luZG93UG9p
bnQpOwogICAgIHZvaWQgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgdmlld1JlY3QsIFdlYkNvcmU6OkludFJlY3QmIHJlc3VsdCk7CiAjZW5kaWYK
LSAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWw6OkRlbGF5ZWRSZXBseT4pOworICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHkpOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3Bv
cnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOwogICAgIHZv
aWQgcGFnZURpZFNjcm9sbCgpOwogICAgIHZvaWQgcnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkZp
bGVDaG9vc2VyU2V0dGluZ3MmKTsKICAgICB2b2lkIHByaW50RnJhbWUodWludDY0X3QgZnJhbWVJ
RCk7Ci0gICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRf
dCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50
NjRfdCBleHBlY3RlZFVzYWdlLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWRE
YXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+JiYpOwotICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2
NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgUmVmPE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5
ZWRSZXBseT4mJik7CisgICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3Rh
LCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVz
YWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNl
ZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIHJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1
aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5
ZWRSZXBseSYmKTsKICAgICB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFt
ZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2lu
SWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjMwMjgwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MTQsNyArNTE0LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6
OmVucwogICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2VzczsKIH0KIAotdm9pZCBXZWJQcm9jZXNz
UG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQ
cm9jZXNzUHJveHksIFZlY3RvcjxSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiYmIHBlbmRpbmdSZXBsaWVzKQor
dm9pZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNz
UHJveHkmIG5ldHdvcmtQcm9jZXNzUHJveHksIFZlY3RvcjxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiBwZW5kaW5n
UmVwbGllcykKIHsKICAgICBuZXR3b3JrUHJvY2Vzc0ZhaWxlZFRvTGF1bmNoKG5ldHdvcmtQcm9j
ZXNzUHJveHkpOwogICAgIEFTU0VSVCghbV9uZXR3b3JrUHJvY2Vzcyk7CkBAIC01NDAsNyArNTQw
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NGYWlsZQogICAgIG1fbmV0
d29ya1Byb2Nlc3MgPSBudWxscHRyOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpnZXROZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVw
bHkpCiB7CiAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKICAgICBBU1NFUlQobV9uZXR3b3Jr
UHJvY2Vzcyk7CkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJl
U3RvcmFnZVByb2NlcwogICAgIG1fc3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VQcm9jZXNzOjpJbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShyZWxldmFudERhdGFTdG9yZS0+
c3RvcmFnZVByb2Nlc3NQYXJhbWV0ZXJzKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vz
c1Byb3h5LCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklELCBSZWY8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+
JiYgcmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIFBBTDo6U2Vzc2lvbklEIGluaXRp
YWxTZXNzaW9uSUQsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgZW5zdXJlU3RvcmFnZVBy
b2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nTm9uRGVm
YXVsdERhdGFTdG9yZUZvclNlc3Npb25JRChpbml0aWFsU2Vzc2lvbklEKSk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMjMwMjgwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5
KQpAQCAtMzI0LDE0ICszMjQsMTQgQEAgcHVibGljOgogICAgIC8vIE5ldHdvcmsgUHJvY2VzcyBN
YW5hZ2VtZW50CiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eSYgZW5zdXJlTmV0d29ya1Byb2Nlc3Mo
V2Vic2l0ZURhdGFTdG9yZSogd2l0aFdlYnNpdGVEYXRhU3RvcmUgPSBudWxscHRyKTsKICAgICBO
ZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0d29ya1By
b2Nlc3MuZ2V0KCk7IH0KLSAgICB2b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJv
Y2Vzc1Byb3h5JiwgVmVjdG9yPFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+JiYpOworICAgIHZvaWQgbmV0d29y
a1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBWZWN0b3I8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+
JiYpOwogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NGYWlsZWRUb0xhdW5jaChOZXR3b3JrUHJvY2Vz
c1Byb3h5Jik7CiAKLSAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5JiYpOwogCiAgICAgdm9pZCBlbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRh
U3RvcmUoV2Vic2l0ZURhdGFTdG9yZSogcmVsZXZhbnREYXRhU3RvcmUpOwogICAgIFN0b3JhZ2VQ
cm9jZXNzUHJveHkqIHN0b3JhZ2VQcm9jZXNzKCkgeyByZXR1cm4gbV9zdG9yYWdlUHJvY2Vzcy5n
ZXQoKTsgfQotICAgIHZvaWQgZ2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQ
cm94eSYsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQsIFJlZjxNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4m
Jik7CisgICAgdm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5
JiwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCwgTWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAgICAg
dm9pZCBzdG9yYWdlUHJvY2Vzc0NyYXNoZWQoU3RvcmFnZVByb2Nlc3NQcm94eSopOwogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhTdG9yYWdlUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYsIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24g
MjMwMjgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTk0LDE4ICs1OTQsMTggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmdldFBsdWdpbnMoYm9vbCByZQogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi12b2lkIFdlYlByb2Nlc3NQcm94
eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2Vu
LCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ocGx1Z2luUHJvY2Vzc1Rva2VuLCBXVEZNb3ZlKHJlcGx5
KSk7CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQcm94
eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAg
ICAgbV9wcm9jZXNzUG9vbC0+Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdURk1vdmUocmVw
bHkpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbihQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklELCBSZWY8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYg
cmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
KFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7
CiAgICAgbV9wcm9jZXNzUG9vbC0+Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCp0aGlzLCBp
bml0aWFsU2Vzc2lvbklELCBXVEZNb3ZlKHJlcGx5KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjMwMjgwKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0
NCwxMCArMjQ0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRQbHVnaW5zKGJvb2wgcmVmcmVz
aCwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+JiBwbHVnaW5zLCBWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4mIGFwcGxpY2F0aW9uUGx1Z2lucywgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6U3VwcG9ydGVkUGx1Z2luTmFtZT4+Jik7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgdm9pZCBn
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFJl
ZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVp
bnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsKICNlbmRpZgotICAgIHZv
aWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7Ci0gICAg
dm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNl
c3Npb25JRCwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29u
bmVjdGlvbihQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklELCBNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsK
IAogICAgIGJvb2wgcGxhdGZvcm1Jc0JlaW5nRGVidWdnZWQoKSBjb25zdDsKICAgICBib29sIHNo
b3VsZEFsbG93Tm9uVmFsaWRJbmplY3RlZENvZGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAkocmV2aXNpb24gMjMwMjgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxTaHUKICAgICBBU1NFUlRfVU5V
U0VEKGNvbm5lY3Rpb24sIHRoaXMtPmNvbm5lY3Rpb24oKSA9PSAmY29ubmVjdGlvbik7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFJl
ZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgbV9wZW5k
aW5nQ29ubmVjdGlvblJlcGxpZXMuYXBwZW5kKFdURk1vdmUocmVwbHkpKTsKIApAQCAtMTkzLDcg
KzE5Myw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3MKIHsKICAg
ICBjbGVhckNhbGxiYWNrU3RhdGVzKCk7CiAKLSAgICBWZWN0b3I8UmVmPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4g
cGVuZGluZ1JlcGxpZXM7CisgICAgVmVjdG9yPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiBwZW5kaW5nUmVwbGllczsK
ICAgICBwZW5kaW5nUmVwbGllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcGVuZGluZ0Nvbm5l
Y3Rpb25SZXBsaWVzLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiByZXBseSA6IG1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzKQogICAgICAgICBwZW5kaW5nUmVwbGllcy5hcHBlbmQoV1RGTW92ZShy
ZXBseSkpOwpAQCAtMjA2LDEyICsyMDYsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpu
ZXR3b3JrUHJvY2VzcwogewogICAgIC8vIFRoZSBuZXR3b3JrIHByb2Nlc3MgbXVzdCBoYXZlIGNy
YXNoZWQgb3IgZXhpdGVkLCBzZW5kIGFueSBwZW5kaW5nIHN5bmMgcmVwbGllcyB3ZSBtaWdodCBo
YXZlLgogICAgIHdoaWxlICghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVw
bGllcy50YWtlRmlyc3QoKTsKKyAgICAgICAgYXV0byByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rp
b25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0g
ICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgpKTsKKyAgICAgICAgcmVwbHkoSVBD
OjpBdHRhY2htZW50KCkpOwogI2VsaWYgT1MoREFSV0lOKQotICAgICAgICByZXBseS0+c2VuZChJ
UEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKKyAgICAgICAgcmVw
bHkoSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CiAjZWxzZQog
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkBAIC0yODIsMTIgKzI4MiwxMiBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvCiAgICAgQVNTRVJUKCFtX3Bl
bmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCiAgICAgLy8gR3JhYiB0aGUgZmly
c3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5LgotICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVw
bHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICBhdXRvIHJl
cGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNpZiBVU0Uo
VU5JWF9ET01BSU5fU09DS0VUUykKLSAgICByZXBseS0+c2VuZChjb25uZWN0aW9uSWRlbnRpZmll
cik7CisgICAgcmVwbHkoY29ubmVjdGlvbklkZW50aWZpZXIpOwogI2VsaWYgT1MoREFSV0lOKQot
ICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0
KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CisgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50
KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsK
ICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJl
dmlzaW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPE5ldHdvcmtQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9v
bCYpOwogICAgIH5OZXR3b3JrUHJvY2Vzc1Byb3h5KCk7CiAKLSAgICB2b2lkIGdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogCiAgICAgRG93bmxvYWRQcm94eSog
Y3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIApA
QCAtMTU1LDcgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgV2ViUHJvY2Vzc1Bvb2wmIG1fcHJvY2Vz
c1Bvb2w7CiAgICAgCiAgICAgdW5zaWduZWQgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3Rz
OwotICAgIERlcXVlPFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
OworICAgIERlcXVlPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKIAog
ICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPj4g
bV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxi
YWNrczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCShyZXZpc2lvbiAyMzAyODApCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCB1aW50NjRfdCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6
cGx1Z2luUHJvCiAgICAgcmV0dXJuIHRva2VuOwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NNYW5h
Z2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9r
ZW4sIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgQVNTRVJUKHBsdWdpblByb2Nlc3NUb2tlbik7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFn
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NNYW5hZ2VyLmgJKHJldmlzaW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICB1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4o
Y29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIFBsdWdpblByb2Nlc3NUeXBlLCBQbHVnaW5Qcm9jZXNz
U2FuZGJveFBvbGljeSk7CiAKLSAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVp
bnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQg
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5JiYpOwogICAgIHZvaWQgcmVtb3ZlUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblBy
b2Nlc3NQcm94eSopOwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKGNvbnN0IFBsdWdpbk1v
ZHVsZUluZm8mLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFdURjo6RnVuY3Rp
b248dm9pZCAoVmVjdG9yPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5jcHAJKHJldmlzaW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEw
Miw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXQKIAogLy8gQXNr
cyB0aGUgcGx1Zy1pbiBwcm9jZXNzIHRvIGNyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIHRvIGEgd2Vi
IHByb2Nlc3MuIFRoZSBjb25uZWN0aW9uIGlkZW50aWZpZXIgd2lsbCBiZSAKIC8vIGVuY29kZWQg
aW4gdGhlIGdpdmVuIGFyZ3VtZW50IGVuY29kZXIgYW5kIHNlbnQgYmFjayB0byB0aGUgY29ubmVj
dGlvbiBvZiB0aGUgZ2l2ZW4gd2ViIHByb2Nlc3MuCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lk
IFBsdWdpblByb2Nlc3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQogewogICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmFwcGVuZChXVEZN
b3ZlKHJlcGx5KSk7CiAKQEAgLTE1OSwxMiArMTU5LDEyIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1By
b3h5OjpwbHVnaW5Qcm9jZXNzQ3IKIHsKICAgICAvLyBUaGUgcGx1Zy1pbiBwcm9jZXNzIG11c3Qg
aGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc2VuZCBhbnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2Ug
bWlnaHQgaGF2ZS4KICAgICB3aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1w
dHkoKSkgewotICAgICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25u
ZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICAgICAgYXV0byByZXBseSA9IG1fcGVuZGlu
Z0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgpLCBmYWxzZSk7Cisg
ICAgICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgpLCBmYWxzZSk7CiAjZWxpZiBPUyhEQVJXSU4p
Ci0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01P
VkVfU0VORCksIGZhbHNlKTsKKyAgICAgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hf
TVNHX1RZUEVfTU9WRV9TRU5EKSwgZmFsc2UpOwogI2Vsc2UKICAgICAgICAgbm90SW1wbGVtZW50
ZWQoKTsKICNlbmRpZgpAQCAtMjc2LDEyICsyNzYsMTIgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJv
eHk6OmRpZENyZWF0ZVdlYlBybwogICAgIEFTU0VSVCghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXMuaXNFbXB0eSgpKTsKIAogICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBlbmRpbmcgY29ubmVjdGlv
biByZXBseS4KLSAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0
aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICBhdXRvIHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVj
dGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykK
LSAgICByZXBseS0+c2VuZChjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25v
dXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CisgICAgcmVwbHkoY29ubmVjdGlvbklkZW50aWZpZXIs
IHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwogI2VsaWYgT1MoREFS
V0lOKQotICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmll
ci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgc3VwcG9ydHNBc3luY2hyb25vdXNQ
bHVnaW5Jbml0aWFsaXphdGlvbik7CisgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rp
b25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpLCBzdXBwb3J0c0Fz
eW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyMzAyODApCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEFza3MgdGhlIHBsdWctaW4g
cHJvY2VzcyB0byBjcmVhdGUgYSBuZXcgY29ubmVjdGlvbiB0byBhIHdlYiBwcm9jZXNzLiBUaGUg
Y29ubmVjdGlvbiBpZGVudGlmaWVyIHdpbGwgYmUKICAgICAvLyBlbmNvZGVkIGluIHRoZSBnaXZl
biBhcmd1bWVudCBlbmNvZGVyIGFuZCBzZW50IGJhY2sgdG8gdGhlIGNvbm5lY3Rpb24gb2YgdGhl
IGdpdmVuIHdlYiBwcm9jZXNzLgotICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24o
UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24o
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseSYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShXVEY6OkZ1bmN0aW9u
PHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBk
ZWxldGVXZWJzaXRlRGF0YShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHByaXZhdGU6
CiAgICAgLy8gVGhlIGNvbm5lY3Rpb24gdG8gdGhlIHBsdWctaW4gaG9zdCBwcm9jZXNzLgogICAg
IFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKIAotICAgIERlcXVlPFJlZlB0
cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CisgICAgRGVxdWU8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseT4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CiAKICAgICBWZWN0b3I8dWludDY0
X3Q+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFSZXF1ZXN0czsKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4+IG1fcGVuZGluZ0ZldGNo
V2Vic2l0ZURhdGFDYWxsYmFja3M7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9y
YWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDIzMDI4
MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFN0b3JhZ2VQcm9j
ZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVECiAgICAgc2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nl
c3M6OkRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhzZXNzaW9uSUQsIGRhdGFUeXBlcywgb3Jp
Z2lucywgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6Omdl
dFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94
eSwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5Ojpn
ZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJv
eHksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXMuYXBwZW5kKFdURk1vdmUocmVwbHkpKTsKIApAQCAtMTQwLDkgKzE0MCw5IEBAIHZvaWQgU3Rv
cmFnZVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjoKICAgICAgICAgYXV0byByZXBseSA9IG1f
cGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgVVNFKFVOSVhfRE9N
QUlOX1NPQ0tFVFMpCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgpKTsKKyAg
ICAgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KCkpOwogI2VsaWYgT1MoREFSV0lOKQotICAgICAg
ICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQp
KTsKKyAgICAgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9T
RU5EKSk7CiAjZWxzZQogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkBAIC0xNzIs
MTIgKzE3MiwxMiBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVN0b3JhCiB7
CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCi0g
ICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LnRha2VGaXJzdCgpOworICAgIGF1dG8gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGll
cy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIHJlcGx5
LT5zZW5kKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICByZXBseShjb25uZWN0aW9uSWRlbnRp
Zmllcik7CiAjZWxpZiBPUyhEQVJXSU4pCi0gICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50
KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsK
KyAgICByZXBseShJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBN
QUNIX01TR19UWVBFX01PVkVfU0VORCkpOwogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9j
ZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjMwMjgwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFM
OjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmll
ZFNpbmNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiYsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAotICAg
IHZvaWQgZ2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIFJlZjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV2Vi
UHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAKIHByaXZhdGU6CiAgICAgU3RvcmFnZVBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYpOwpAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgog
ICAgIFdlYlByb2Nlc3NQb29sJiBtX3Byb2Nlc3NQb29sOwogCiAgICAgdW5zaWduZWQgbV9udW1Q
ZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOwotICAgIERlcXVlPFJlZjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1f
cGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOworICAgIERlcXVlPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiBtX3BlbmRp
bmdDb25uZWN0aW9uUmVwbGllczsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rp
b248dm9pZCAoV2Vic2l0ZURhdGEpPj4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNr
czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRp
bmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjM2LDEwICsyMzYsMTAgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6dGVybQogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdv
cmtlcihpZGVudGlmaWVyLCBhc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgbnVsbHB0cik7
CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVX
b3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPE1lc3NhZ2VzOjpX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlcjo6RGVsYXll
ZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3lu
Y1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBzeW5jV29ya2VyVGVybWluYXRpb25UaW1l
b3V0LCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gewotICAgICAgICByZXBseS0+c2VuZCgpOwor
ICAgICAgICByZXBseSgpOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmgJKHJldmlzaW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZl
bnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgdGVybWluYXRl
V29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIHN5bmNU
ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6
OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBzeW5jVGVybWluYXRlV29ya2VyKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lk
IGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJv
b2wgaGFzU2VjdXJpdHlFcnJvcik7CiAgICAgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRf
dCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudERhdGE+JiYpOwogICAgIHZvaWQgY2xhaW1Db21wbGV0ZWQodWludDY0X3QgY2xhaW1S
ZXF1ZXN0SWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMzAyODApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwNyw3ICs4MDcsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2b2lkIGNvbXB1dGVQYWdl
c0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5m
byYsIENhbGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBjb21wdXRlUGFn
ZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mLCBDYWxsYmFja0lELCBNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseSYmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
R1RLKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDIzMDI4MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDI2LDEw
ICszNDI2LDEwIEBAIHZvaWQgV2ViUGFnZTo6ZGlzcGF0Y2hBc3luY2hyb25vdXNUb3VjaEUKIH0K
ICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1Rv
UERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZTo6
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCwgTWVzc2FnZXM6
OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICBpZiAocHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlKSB7Ci0g
ICAgICAgIHJlcGx5LT5zZW5kKDEpOworICAgICAgICByZXBseSgxKTsKICAgICAgICAgSW50U2l6
ZSBzbmFwc2hvdFNpemUgeyBGbG9hdFNpemUgeyBwcmludEluZm8uYXZhaWxhYmxlUGFwZXJXaWR0
aCwgcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVySGVpZ2h0IH0gfTsKICAgICAgICAgSW50UmVjdCBz
bmFwc2hvdFJlY3QgeyB7MCwgMH0sIHNuYXBzaG90U2l6ZSB9OwogICAgICAgICBhdXRvIHBkZkRh
dGEgPSBwZGZTbmFwc2hvdEF0U2l6ZShzbmFwc2hvdFJlY3QsIHNuYXBzaG90U2l6ZSwgMCk7CkBA
IC0zNDQ0LDcgKzM0NDQsNyBAQCB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5n
QW5kCiAgICAgQVNTRVJUKHBhZ2VSZWN0cy5zaXplKCkgPj0gMSk7CiAgICAgc3RkOjpzaXplX3Qg
cGFnZUNvdW50ID0gcGFnZVJlY3RzLnNpemUoKTsKICAgICBBU1NFUlQocGFnZUNvdW50IDw9IHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSk7Ci0gICAgcmVwbHktPnNlbmQocGFn
ZUNvdW50KTsKKyAgICByZXBseShwYWdlQ291bnQpOwogCiAgICAgUmV0YWluUHRyPENGTXV0YWJs
ZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwogICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBw
cmludEluZm8sIDAsIHBhZ2VDb3VudCwgcGRmUGFnZURhdGEpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340635</attachid>
            <date>2018-05-17 14:03:23 -0700</date>
            <delta_ts>2018-05-17 14:13:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182269-20180517140322.patch</filename>
            <type>text/plain</type>
            <size>83892</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzE5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMyBAQAorMjAxOC0wNS0xNyAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBDb21wbGV0
aW9uSGFuZGxlcnMgZm9yIERlbGF5ZWRSZXBsaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vl
bm4gRmFibGV0LgorCisgICAgICAgIERlbGF5ZWRSZXBsaWVzIHNob3VsZCBiZSBhIG5vbmNvcHlh
YmxlLCBub24tcmVmY291bnRhYmxlIHR5cGUuICBUaGV5IHNob3VsZCBiZQorICAgICAgICBjYWxs
ZWQgb25jZSBhbmQgb25seSBvbmNlLiAgVGhpcyBpcyB3aGF0IENvbXBsZXRpb25IYW5kbGVycyBh
cmUgZm9yLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4gIEp1c3QgY2xlYW5lciBj
b2RlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cGVyZm9ybVN5bmNocm9ub3VzTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZERhdGE6OlN5bmNocm9ub3VzTG9hZERhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBDOjpjYWxsTWVtYmVy
RnVuY3Rpb25JbXBsKToKKyAgICAgICAgKElQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uKToKKyAgICAg
ICAgKElQQzo6aGFuZGxlTWVzc2FnZURlbGF5ZWQpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJv
bGxlclByb3h5OjpzZXRJbml0aWFsaXphdGlvblJlcGx5KToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6YXRpb25SZXBseSk6CisgICAgICAgICog
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKiBQbHVnaW5Q
cm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRlc3Ryb3lQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBQbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvTGVnYWN5TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcDoKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlczo6c2VuZCk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseTo6RGVsYXllZFJlcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5
KTogRGVsZXRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5OjpzZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVwbHk6OkRlbGF5
ZWRSZXBseSk6IERlbGV0ZWQuCisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRp
cGxlQXR0cmlidXRlczo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KTogRGVsZXRlZC4KKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpEZWxheWVk
UmVwbHk6OnNlbmQpOiBEZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L0xlZ2FjeU1l
c3NhZ2VzLWV4cGVjdGVkLmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2Vp
dmVyLWV4cGVjdGVkLmNwcDoKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVz
dE11bHRpcGxlQXR0cmlidXRlczo6c2VuZCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJlcGx5KTog
RGVsZXRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KTogRGVsZXRlZC4KKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5OjpzZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVwbHk6OkRlbGF5ZWRSZXBseSk6IERlbGV0ZWQuCisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlczo6RGVsYXll
ZFJlcGx5Ojp+RGVsYXllZFJlcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVwbHk6OnNlbmQpOiBEZWxldGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmg6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzRmFpbGVkVG9MYXVuY2gp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6
OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94
eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpnZXRTdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDbG9z
ZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVN0b3Jh
Z2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9T
dG9yYWdlUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmNyZWF0
ZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNy
ZWF0ZU5ld1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3Jp
cHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdENv
bmZpcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9t
cHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFRvb2xiYXJzQXJlVmlzaWJsZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWVudUJhcklzVmlzaWJsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U3RhdHVzQmFySXNWaXNpYmxlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRXaW5kb3dGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyZWVuVG9Sb290Vmlldyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb1NjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1By
b2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpn
ZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpzeW5jVGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdB
bmREcmF3VG9QREYpOgorCiAyMDE4LTA1LTE3ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAg
PGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEltcGxlbWVudCBhbmQgZW5hYmxl
IEZVTExTQ1JFRU5fQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNp
b24gMjMxOTA5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw3ICsyNDksNyBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlCiAgICAgbG9hZGVyLT5zdGFy
dCgpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwZXJmb3JtU3lu
Y2hyb25vdXNMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRl
cnMsIFJlZjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1T
eW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycywgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBy
ZXBseSkKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVy
OwogICAgIEFTU0VSVCghbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmNvbnRhaW5zKGlkZW50aWZp
ZXIpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDIzMTkwOSkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpOwogCiAgICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmJiwgUmVmPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmKTsKKyAg
ICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMmJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3lu
Y2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBsb2FkUGluZyhOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgcHJlY29ubmVjdFRvKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAJKHJldmlzaW9uIDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTMgKzc0LDEzIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZERhdGEgewotICAgIFN5bmNocm9u
b3VzTG9hZERhdGEoUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQorICAgIFN5
bmNocm9ub3VzTG9hZERhdGEoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSkKICAgICAgICAg
OiBkZWxheWVkUmVwbHkoV1RGTW92ZShyZXBseSkpCiAgICAgewogICAgICAgICBBU1NFUlQoZGVs
YXllZFJlcGx5KTsKICAgICB9CiAgICAgUmVzb3VyY2VSZXF1ZXN0IGN1cnJlbnRSZXF1ZXN0Owot
ICAgIFJlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZv
cm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4gZGVsYXllZFJlcGx5OworICAgIE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9h
ZDo6RGVsYXllZFJlcGx5IGRlbGF5ZWRSZXBseTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiB9OwpAQCAtOTQsMTEgKzk0LDExIEBAIHN0
YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXMKICAgICBpZiAoYnVmZmVyICYm
IGJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAotICAgIGRhdGEuZGVsYXllZFJlcGx5LT5zZW5kKGRh
dGEuZXJyb3IsIGRhdGEucmVzcG9uc2UsIHJlc3BvbnNlQnVmZmVyKTsKKyAgICBkYXRhLmRlbGF5
ZWRSZXBseShkYXRhLmVycm9yLCBkYXRhLnJlc3BvbnNlLCByZXNwb25zZUJ1ZmZlcik7CiAgICAg
ZGF0YS5kZWxheWVkUmVwbHkgPSBudWxscHRyOwogfQogCi1OZXR3b3JrUmVzb3VyY2VMb2FkZXI6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBSZWZQ
dHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hy
b25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYgc3luY2hyb25vdXNSZXBseSkKK05ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5l
Y3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5
bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBseSkKICAgICA6IG1f
cGFyYW1ldGVycyB7IFdURk1vdmUocGFyYW1ldGVycykgfQogICAgICwgbV9jb25uZWN0aW9uIHsg
Y29ubmVjdGlvbiB9CiAgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBwYXJhbWV0ZXJzLmRlZmVyc0xv
YWRpbmcgfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw3ICs2Miw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5hbAogICAgICwg
cHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOZXR3b3JrUmVz
b3VyY2VMb2FkZXI+IGNyZWF0ZShOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBSZWZQdHI8
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25v
dXNMb2FkOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkgPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8
TmV0d29ya1Jlc291cmNlTG9hZGVyPiBjcmVhdGUoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hy
b25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSA9IG51bGxwdHIpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoV1RGTW92ZShwYXJh
bWV0ZXJzKSwgY29ubmVjdGlvbiwgV1RGTW92ZShyZXBseSkpKTsKICAgICB9CkBAIC0xMjMsNyAr
MTIzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya1Jlc291cmNl
TG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmKTsKIAogICAg
IC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0hhbmRsZU1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9IYW5kbGVNZXNzYWdlLmgJKHJldmlzaW9uIDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
IAogbmFtZXNwYWNlIElQQyB7CkBAIC02MiwxNiArNjMsMTYgQEAgdm9pZCBjYWxsTWVtYmVyRnVu
Y3Rpb24oQXJnc1R1cGxlJiYgYXJncwogCiAvLyBEaXNwYXRjaCBmdW5jdGlvbnMgd2l0aCBkZWxh
eWVkIHJlcGx5IGFyZ3VtZW50cy4KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1G
LCB0eXBlbmFtZSBSLCB0eXBlbmFtZSBBcmdzVHVwbGUsIHNpemVfdC4uLiBBcmdzSW5kZXg+Ci12
b2lkIGNhbGxNZW1iZXJGdW5jdGlvbkltcGwoQyogb2JqZWN0LCBNRiBmdW5jdGlvbiwgUmVmPFI+
JiYgZGVsYXllZFJlcGx5LCBBcmdzVHVwbGUmJiBhcmdzLCBzdGQ6OmluZGV4X3NlcXVlbmNlPEFy
Z3NJbmRleC4uLj4pCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1l
IENILCB0eXBlbmFtZSBBcmdzVHVwbGUsIHNpemVfdC4uLiBBcmdzSW5kZXg+Cit2b2lkIGNhbGxN
ZW1iZXJGdW5jdGlvbkltcGwoQyogb2JqZWN0LCBNRiBmdW5jdGlvbiwgQ29tcGxldGlvbkhhbmRs
ZXI8Q0g+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFyZ3NUdXBsZSYmIGFyZ3MsIHN0ZDo6aW5kZXhf
c2VxdWVuY2U8QXJnc0luZGV4Li4uPikKIHsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6
Z2V0PEFyZ3NJbmRleD4oc3RkOjpmb3J3YXJkPEFyZ3NUdXBsZT4oYXJncykpLi4uLCBXVEZNb3Zl
KGRlbGF5ZWRSZXBseSkpOworICAgIChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8QXJnc0lu
ZGV4PihzdGQ6OmZvcndhcmQ8QXJnc1R1cGxlPihhcmdzKSkuLi4sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVu
YW1lIFIsIHR5cGVuYW1lIEFyZ3NUdXBsZSwgdHlwZW5hbWUgQXJnc0luZGljaWVzID0gc3RkOjpt
YWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxBcmdzVHVwbGU+Ojp2YWx1ZT4+Ci12
b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihBcmdzVHVwbGUmJiBhcmdzLCBSZWY8Uj4mJiBkZWxheWVk
UmVwbHksIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCit0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBl
bmFtZSBNRiwgdHlwZW5hbWUgQ0gsIHR5cGVuYW1lIEFyZ3NUdXBsZSwgdHlwZW5hbWUgQXJnc0lu
ZGljaWVzID0gc3RkOjptYWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxBcmdzVHVw
bGU+Ojp2YWx1ZT4+Cit2b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihBcmdzVHVwbGUmJiBhcmdzLCBD
b21wbGV0aW9uSGFuZGxlcjxDSD4mJiBjb21wbGV0aW9uSGFuZGxlciwgQyogb2JqZWN0LCBNRiBm
dW5jdGlvbikKIHsKLSAgICBjYWxsTWVtYmVyRnVuY3Rpb25JbXBsKG9iamVjdCwgZnVuY3Rpb24s
IFdURk1vdmUoZGVsYXllZFJlcGx5KSwgc3RkOjpmb3J3YXJkPEFyZ3NUdXBsZT4oYXJncyksIEFy
Z3NJbmRpY2llcygpKTsKKyAgICBjYWxsTWVtYmVyRnVuY3Rpb25JbXBsKG9iamVjdCwgZnVuY3Rp
b24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdGQ6OmZvcndhcmQ8QXJnc1R1cGxlPihh
cmdzKSwgQXJnc0luZGljaWVzKCkpOwogfQogCiAvLyBEaXNwYXRjaCBmdW5jdGlvbnMgd2l0aCBj
b25uZWN0aW9uIHBhcmFtZXRlciB3aXRoIG5vIHJlcGx5IGFyZ3VtZW50cy4KQEAgLTE3NCw4ICsx
NzUsMTAgQEAgdm9pZCBoYW5kbGVNZXNzYWdlRGVsYXllZChDb25uZWN0aW9uJiBjbwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmPHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseT4gZGVs
YXllZFJlcGx5ID0gYWRvcHRSZWYoKm5ldyB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkoY29ubmVj
dGlvbiwgV1RGTW92ZShyZXBseUVuY29kZXIpKSk7Ci0gICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdU
Rk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShkZWxheWVkUmVwbHkpLCBvYmplY3QsIGZ1bmN0aW9u
KTsKKyAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbcmVw
bHlFbmNvZGVyID0gV1RGTW92ZShyZXBseUVuY29kZXIpLCBjb25uZWN0aW9uID0gbWFrZVJlZihj
b25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKKyAgICAgICAgVDo6c2VuZChX
VEZNb3ZlKHJlcGx5RW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOworICAg
IH07CisgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVuY3Rpb24pOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBJUEMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuY3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTEsMTUgKzkxLDE1IEBAIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6flBsdWdpbkNvbnRyb2xs
ZXIKICAgICAgICAgcmVsZWFzZU5QT2JqZWN0KG1fcGx1Z2luRWxlbWVudE5QT2JqZWN0KTsKIH0K
IAotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnNldEluaXRpYWxpemF0aW9uUmVwbHkoUmVm
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVw
bHk+JiYgcmVwbHkpCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0SW5pdGlhbGl6YXRp
b25SZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVs
YXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgQVNTRVJUKCFtX2luaXRpYWxpemF0aW9uUmVwbHkp
OwogICAgIG1faW5pdGlhbGl6YXRpb25SZXBseSA9IFdURk1vdmUocmVwbHkpOwogfQogCi1SZWZQ
dHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRS
ZXBseT4gUGx1Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpCitN
ZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5
IFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKQogewotICAg
IHJldHVybiBtX2luaXRpYWxpemF0aW9uUmVwbHk7CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2Uo
bV9pbml0aWFsaXphdGlvblJlcGx5LCBudWxscHRyKTsKIH0KIAogYm9vbCBQbHVnaW5Db250cm9s
bGVyUHJveHk6OmluaXRpYWxpemUoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVh
dGlvblBhcmFtZXRlcnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc0LDggKzc0LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0luaXRpYWxpemluZygp
IGNvbnN0IHsgcmV0dXJuIG1faXNJbml0aWFsaXppbmc7IH0KICAgICAKLSAgICB2b2lkIHNldElu
aXRpYWxpemF0aW9uUmVwbHkoUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3Jl
YXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+JiYpOwotICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiB0YWtlSW5pdGlhbGl6
YXRpb25SZXBseSgpOworICAgIHZvaWQgc2V0SW5pdGlhbGl6YXRpb25SZXBseShNZXNzYWdlczo6
V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5JiYpOworICAg
IE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVw
bHkgdGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0
UGFpbnRUaW1lcigpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lz
VmlzaWJsZTsKICAgICBib29sIG1faXNXaW5kb3dWaXNpYmxlOwogCi0gICAgUmVmUHRyPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+IG1f
aW5pdGlhbGl6YXRpb25SZXBseTsKKyAgICBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5IG1faW5pdGlhbGl6YXRpb25SZXBseTsKIAogICAg
IFJlZlB0cjxQbHVnaW4+IG1fcGx1Z2luOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDIzMTkw
OSkKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSwxMSArMTc5LDExIEBAIHZvaWQgV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZENsb3NlKElQQzoKICAgICAgICAgZGVzdHJveVBsdWdpbkNvbnRyb2xsZXJQ
cm94eShwbHVnaW5Db250cm9sbGVyc1tpXSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OmRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgYm9vbCBhc3luY2hy
b25vdXNDcmVhdGlvbkluY29tcGxldGUsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlc3Ryb3lQbHVnaW46OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OmRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgYm9v
bCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29u
bmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgLy8g
V2UgcmV0dXJuIGltbWVkaWF0ZWx5IGZyb20gdGhpcyBzeW5jaHJvbm91cyBJUEMuIFdlIHdhbnQg
dG8gbWFrZSBzdXJlIHRoZSBwbHVnaW4gZGVzdHJ1Y3Rpb24gaXMganVzdCBhYm91dCB0byBzdGFy
dCBzbyBhdWRpbyBwbGF5YmFjawogICAgIC8vIHdpbGwgZmluaXNoIHNvb24gYWZ0ZXIgcmV0dXJu
aW5nLiBIb3dldmVyIHdlIGRvbid0IHdhbnQgdG8gd2FpdCBmb3IgZGVzdHJ1Y3Rpb24gdG8gY29t
cGxldGUgZnVsbHkgYXMgdGhhdCBtYXkgdGFrZSBhIHdoaWxlLgotICAgIHJlcGx5LT5zZW5kKCk7
CisgICAgcmVwbHkoKTsKIAogICAgIC8vIEVuc3VyZSB3ZSBkb24ndCBjbGFtcCBhbnkgdGltZXJz
IGR1cmluZyBkZXN0cnVjdGlvbgogICAgIEFjdGl2aXR5QXNzZXJ0aW9uIGFjdGl2aXR5QXNzZXJ0
aW9uKFBsdWdpblByb2Nlc3M6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25BY3Rpdml0eSgpKTsKQEAg
LTIzMiw3ICsyMzIsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5J
CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKGNv
bnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJhbWV0ZXJzLCBSZWY8TWVz
c2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4m
JiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbihjb25zdCBQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycywgTWVzc2FnZXM6Oldl
YlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQog
ewogICAgIC8vIEVuc3VyZSB3ZSBkb24ndCBjbGFtcCBhbnkgdGltZXJzIGR1cmluZyBpbml0aWFs
aXphdGlvbgogICAgIEFjdGl2aXR5QXNzZXJ0aW9uIGFjdGl2aXR5QXNzZXJ0aW9uKFBsdWdpblBy
b2Nlc3M6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25BY3Rpdml0eSgpKTsKQEAgLTI0OSw5ICsyNDks
OSBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4oCiAgICAgICAgIAog
ICAgICAgICAvLyBJZiBpdHMgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGUgdGhlbiB3ZSBuZWVk
IHRvIHJlc3BvbmQgdG8gdGhpcyBtZXNzYWdlIHdpdGggdGhlIGNvcnJlY3QgaW5mb3JtYXRpb24g
YWJvdXQgaXRzIGNyZWF0aW9uLgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICByZXBseS0+
c2VuZCh0cnVlLCBwbHVnaW5Db250cm9sbGVyUHJveHktPndhbnRzV2hlZWxFdmVudHMoKSwgcGx1
Z2luQ29udHJvbGxlclByb3h5LT5yZW1vdGVMYXllckNsaWVudElEKCkpOworICAgICAgICByZXBs
eSh0cnVlLCBwbHVnaW5Db250cm9sbGVyUHJveHktPndhbnRzV2hlZWxFdmVudHMoKSwgcGx1Z2lu
Q29udHJvbGxlclByb3h5LT5yZW1vdGVMYXllckNsaWVudElEKCkpOwogI2Vsc2UKLSAgICAgICAg
cmVwbHktPnNlbmQodHJ1ZSwgcGx1Z2luQ29udHJvbGxlclByb3h5LT53YW50c1doZWVsRXZlbnRz
KCksIDApOworICAgICAgICByZXBseSh0cnVlLCBwbHVnaW5Db250cm9sbGVyUHJveHktPndhbnRz
V2hlZWxFdmVudHMoKSwgMCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI2
Niw3ICsyNjYsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4oCiAg
ICAgdWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCA9IDA7CiAgICAgY3JlYXRlUGx1Z2luSW50
ZXJuYWwoY3JlYXRpb25QYXJhbWV0ZXJzLCByZXN1bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90
ZUxheWVyQ2xpZW50SUQpOwogICAgIAotICAgIHJlcGx5LT5zZW5kKHJlc3VsdCwgd2FudHNXaGVl
bEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CisgICAgcmVwbHkocmVzdWx0LCB3YW50c1do
ZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzQ29u
bmVjdGlvbjo6Y3JlYXRlUGx1Z2luQXN5bmNocm9ub3VzbHkoY29uc3QgUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMpCkBAIC0zMTEsOCArMzExLDggQEAgdm9pZCBX
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luQQogICAgIC8vIHN5bmNocm9ub3VzIHJl
cGx5IGluc3RlYWQgb2Ygc2VuZGluZyB0aGUgYXN5bmNocm9ub3VzIHJlcGx5LgogICAgIFBsdWdp
bkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxlclByb3h5ID0gbV9wbHVnaW5Db250cm9s
bGVycy5nZXQoY3JlYXRpb25QYXJhbWV0ZXJzLnBsdWdpbkluc3RhbmNlSUQpOwogICAgIEFTU0VS
VChwbHVnaW5Db250cm9sbGVyUHJveHkpOwotICAgIGlmIChSZWZQdHI8TWVzc2FnZXM6OldlYlBy
b2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4gZGVsYXllZFN5bmNS
ZXBseSA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKSkg
ewotICAgICAgICBkZWxheWVkU3luY1JlcGx5LT5zZW5kKHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50
cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CisgICAgaWYgKGF1dG8gZGVsYXllZFN5bmNSZXBseSA9
IHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKSkgeworICAg
ICAgICBkZWxheWVkU3luY1JlcGx5KHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5
ZXJDbGllbnRJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lv
biAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjksOSArNjksOSBAQCBwcml2YXRlOgogICAgIC8v
IE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKLSAgICB2b2lk
IGNyZWF0ZVBsdWdpbihjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmLCBSZWY8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4mJik7
CisgICAgdm9pZCBjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiwg
TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBs
eSYmKTsKICAgICB2b2lkIGNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KGNvbnN0IFBsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycyYpOwotICAgIHZvaWQgZGVzdHJveVBsdWdpbih1aW50NjRfdCBwbHVn
aW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSwgUmVmPE1l
c3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6RGVsYXllZFJlcGx5
PiYmKTsKKyAgICB2b2lkIGRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwg
Ym9vbCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUsIE1lc3NhZ2VzOjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6RGVsYXllZFJlcGx5JiYpOwogICAgIAogICAgIHZv
aWQgY3JlYXRlUGx1Z2luSW50ZXJuYWwoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiwg
Ym9vbCYgcmVzdWx0LCBib29sJiB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCYgcmVtb3RlTGF5
ZXJDbGllbnRJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5
TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAJKHJldmlz
aW9uIDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2Fn
ZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNDMgKzU5LDE1IEBA
IG5hbWVzcGFjZSBNZXNzYWdlcyB7CiAKIG5hbWVzcGFjZSBXZWJQYWdlIHsKIAotR2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJlcGx5KFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5j
b2RlcikKLSAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQotICAgICwgbV9l
bmNvZGVyKFdURk1vdmUoZW5jb2RlcikpCit2b2lkIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
OjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVj
dGlvbkhhbmRsZSkKIHsKKyAgICAqZW5jb2RlciA8PCBjb25uZWN0aW9uSGFuZGxlOworICAgIGNv
bm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKIH0KIAotR2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6fkRlbGF5ZWRSZXBseSgpCit2b2lkIFRl
c3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
JiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7Ci0gICAgQVNTRVJUKCFt
X2Nvbm5lY3Rpb24pOwotfQotCi1ib29sIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk6OnNlbmQoY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25I
YW5kbGUpCi17Ci0gICAgQVNTRVJUKG1fZW5jb2Rlcik7Ci0gICAgKm1fZW5jb2RlciA8PCBjb25u
ZWN0aW9uSGFuZGxlOwotICAgIGJvb2wgX3Jlc3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNS
ZXBseShXVEZNb3ZlKG1fZW5jb2RlcikpOwotICAgIG1fY29ubmVjdGlvbiA9IG51bGxwdHI7Ci0g
ICAgcmV0dXJuIF9yZXN1bHQ7Ci19Ci0KLVRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OkRlbGF5ZWRS
ZXBseTo6RGVsYXllZFJlcGx5KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5jb2RlcikKLSAgICA6IG1fY29ubmVjdGlvbihX
VEZNb3ZlKGNvbm5lY3Rpb24pKQotICAgICwgbV9lbmNvZGVyKFdURk1vdmUoZW5jb2RlcikpCi17
Ci19Ci0KLVRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OkRlbGF5ZWRSZXBseTo6fkRlbGF5ZWRSZXBs
eSgpCi17Ci0gICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOwotfQotCi1ib29sIFRlc3RNdWx0aXBs
ZUF0dHJpYnV0ZXM6OkRlbGF5ZWRSZXBseTo6c2VuZCgpCi17Ci0gICAgQVNTRVJUKG1fZW5jb2Rl
cik7Ci0gICAgYm9vbCBfcmVzdWx0ID0gbV9jb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KFdURk1v
dmUobV9lbmNvZGVyKSk7Ci0gICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKLSAgICByZXR1cm4g
X3Jlc3VsdDsKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzLWV4cGVjdGVkLmgJKHJldmlzaW9u
IDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXMt
ZXhwZWN0ZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzU4LDE3ICszNTgsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSgiR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24iKTsgfQogICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IHRydWU7CiAKLSAgICBzdHJ1Y3QgRGVsYXllZFJlcGx5IDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERlbGF5ZWRSZXBseT4gewotICAgICAgICBEZWxheWVk
UmVwbHkoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4pOwotICAgICAgICB+RGVsYXllZFJlcGx5KCk7Ci0KLSAgICAgICAgYm9vbCBzZW5kKGNvbnN0
IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKTsKLQotICAgIHByaXZh
dGU6Ci0gICAgICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gbV9lbmNvZGVyOwotICAgIH07Ci0KKyAg
ICB1c2luZyBEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKT47CisgICAgc3RhdGljIHZvaWQg
c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk7CiAgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJj4gUmVwbHk7CiAgICAgZXhw
bGljaXQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRo
KQogICAgICAgICA6IG1fYXJndW1lbnRzKHBsdWdpblBhdGgpCkBAIC0zOTIsMTcgKzM4Myw4IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzIik7IH0KICAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwogCi0gICAgc3RydWN0IERlbGF5ZWRSZXBs
eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEZWxheWVkUmVwbHk+IHsKLSAgICAgICAg
RGVsYXllZFJlcGx5KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+KTsKLSAgICAgICAgfkRlbGF5ZWRSZXBseSgpOwotCi0gICAgICAgIGJvb2wgc2Vu
ZCgpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9j
b25uZWN0aW9uOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBtX2VuY29k
ZXI7Ci0gICAgfTsKLQorICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT47CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBSZXBs
eTsKICAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CiAgICAgewpJbmRleDog
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2Vp
dmVyLWV4cGVjdGVkLmNwcAkocmV2aXNpb24gMjMxOTA5KQorKysgU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01OSw0MyArNTksMTUgQEAgbmFtZXNwYWNlIE1lc3NhZ2VzIHsKIAogbmFtZXNwYWNlIFdlYlBh
Z2UgewogCi1HZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5OjpEZWxheWVk
UmVwbHkoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiBlbmNvZGVyKQotICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVj
dGlvbikpCi0gICAgLCBtX2VuY29kZXIoV1RGTW92ZShlbmNvZGVyKSkKK3ZvaWQgR2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBl
bmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IElQQzo6Q29ubmVjdGlv
bjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKQogeworICAgICplbmNvZGVyIDw8IGNvbm5lY3Rp
b25IYW5kbGU7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rlcikp
OwogfQogCi1HZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Ojp+RGVsYXll
ZFJlcGx5KCkKK3ZvaWQgVGVzdE11bHRpcGxlQXR0cmlidXRlczo6c2VuZChzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikK
IHsKLSAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7Ci19Ci0KLWJvb2wgR2V0UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6c2VuZChjb25zdCBJUEM6OkNvbm5lY3Rpb246Okhh
bmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKLXsKLSAgICBBU1NFUlQobV9lbmNvZGVyKTsKLSAgICAq
bV9lbmNvZGVyIDw8IGNvbm5lY3Rpb25IYW5kbGU7Ci0gICAgYm9vbCBfcmVzdWx0ID0gbV9jb25u
ZWN0aW9uLT5zZW5kU3luY1JlcGx5KFdURk1vdmUobV9lbmNvZGVyKSk7Ci0gICAgbV9jb25uZWN0
aW9uID0gbnVsbHB0cjsKLSAgICByZXR1cm4gX3Jlc3VsdDsKLX0KLQotVGVzdE11bHRpcGxlQXR0
cmlidXRlczo6RGVsYXllZFJlcGx5OjpEZWxheWVkUmVwbHkoUmVmPElQQzo6Q29ubmVjdGlvbj4m
JiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVyKQotICAg
IDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCi0gICAgLCBtX2VuY29kZXIoV1RG
TW92ZShlbmNvZGVyKSkKLXsKLX0KLQotVGVzdE11bHRpcGxlQXR0cmlidXRlczo6RGVsYXllZFJl
cGx5Ojp+RGVsYXllZFJlcGx5KCkKLXsKLSAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7Ci19Ci0K
LWJvb2wgVGVzdE11bHRpcGxlQXR0cmlidXRlczo6RGVsYXllZFJlcGx5OjpzZW5kKCkKLXsKLSAg
ICBBU1NFUlQobV9lbmNvZGVyKTsKLSAgICBib29sIF9yZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNl
bmRTeW5jUmVwbHkoV1RGTW92ZShtX2VuY29kZXIpKTsKLSAgICBtX2Nvbm5lY3Rpb24gPSBudWxs
cHRyOwotICAgIHJldHVybiBfcmVzdWx0OworICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShX
VEZNb3ZlKGVuY29kZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQpJbmRleDogU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlcy1leHBlY3RlZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaAkocmV2
aXNpb24gMjMxOTA5KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlcy1l
eHBlY3RlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTgsMTcgKzM1OCw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5n
UmVmZXJlbmNlKCJHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiIpOyB9CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAotICAgIHN0cnVjdCBEZWxheWVkUmVwbHkgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVsYXllZFJlcGx5PiB7Ci0gICAgICAgIERlbGF5ZWRS
ZXBseShSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
Pik7Ci0gICAgICAgIH5EZWxheWVkUmVwbHkoKTsKLQotICAgICAgICBib29sIHNlbmQoY29uc3Qg
SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpOwotCi0gICAgcHJpdmF0
ZToKLSAgICAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBtX2VuY29kZXI7Ci0gICAgfTsKLQorICAg
IHVzaW5nIERlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpD
b25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpPjsKKyAgICBzdGF0aWMgdm9pZCBz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKTsKICAgICB0eXBl
ZGVmIHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmPiBSZXBseTsKICAgICBleHBs
aWNpdCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgp
CiAgICAgICAgIDogbV9hcmd1bWVudHMocGx1Z2luUGF0aCkKQEAgLTM5MiwxNyArMzgzLDggQEAg
cHVibGljOgogICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMiKTsgfQogICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CiAKLSAgICBzdHJ1Y3QgRGVsYXllZFJlcGx5
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERlbGF5ZWRSZXBseT4gewotICAgICAgICBE
ZWxheWVkUmVwbHkoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4pOwotICAgICAgICB+RGVsYXllZFJlcGx5KCk7Ci0KLSAgICAgICAgYm9vbCBzZW5k
KCk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb247Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IG1fZW5jb2Rl
cjsKLSAgICB9OwotCisgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPjsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYpOwogICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IFJlcGx5
OwogICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKICAgICB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHJldmlzaW9uIDIzMTkwOSkK
KysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTExOCwxNiArMTE4LDE0IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlv
bihtZXNzYWcKICAgICBpZiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZToKICAgICAg
ICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKERFTEFZRURfQVRUUklCVVRFKToKICAgICAgICAg
ICAgIHNlbmRfcGFyYW1ldGVycyA9IFsoZnVuY3Rpb25fcGFyYW1ldGVyX3R5cGUoeC50eXBlLCB4
LmtpbmQpLCB4Lm5hbWUpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10KLSAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdHJ1Y3QgRGVsYXllZFJlcGx5IDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPERlbGF5ZWRSZXBseT4ge1xuJykKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICAgICAgRGVsYXllZFJlcGx5KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+KTtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgICAgIH5EZWxheWVkUmVwbHkoKTtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCdcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIGJvb2wgc2VuZCgl
cyk7XG4nICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNd
KSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBwcml2YXRlOlxuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uO1xuJykKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gbV9l
bmNvZGVyO1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB9O1xuXG4nKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoJykKKyAgICAgICAgICAgIGlmIGxlbihzZW5kX3BhcmFtZXRlcnMpOgor
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyVzJyAlICcsICcuam9pbihbJyAnLmpvaW4o
eCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0ZXJzXSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCcpPjtcbicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZvaWQgc2Vu
ZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mJykKKyAg
ICAgICAgICAgIGlmIGxlbihzZW5kX3BhcmFtZXRlcnMpOgorICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJywgJXMnICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3Bh
cmFtZXRlcnNdKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyk7XG4nKQogCiAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICB0eXBlZGVmICVzIFJlcGx5O1xuJyAlIHJlcGx5X3R5cGUobWVz
c2FnZSkpCiAKQEAgLTUzNiwyNCArNTM0LDEyIEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRs
ZXIoZmlsZSk6CiAgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcblxuJyAlIG1lc3NhZ2UuY29uZGl0aW9uKQogCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCclczo6RGVsYXllZFJlcGx5OjpEZWxheWVkUmVwbHko
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiBlbmNvZGVyKVxuJyAlIG1lc3NhZ2UubmFtZSkKLSAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKVxuJykKLSAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAsIG1fZW5jb2RlcihXVEZNb3ZlKGVuY29kZXIpKVxu
JykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCd9XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnJXM6OkRlbGF5ZWRSZXBseTo6fkRlbGF5ZWRSZXBseSgpXG4nICUg
bWVzc2FnZS5uYW1lKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7XG4nKQotICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xu
JykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ2Jvb2wgJXM6OkRlbGF5ZWRSZXBseTo6c2Vu
ZCglcylcbicgJSAobWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oWycgJy5qb2luKHgpIGZvciB4IGlu
IHNlbmRfcGFyYW1ldGVyc10pKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgQVNTRVJUKG1fZW5jb2Rlcik7XG4nKQotICAg
ICAgICAgICAgcmVzdWx0ICs9IFsnICAgICptX2VuY29kZXIgPDwgJXM7XG4nICUgeC5uYW1lIGZv
ciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10KLSAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAgICBib29sIF9yZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoV1RGTW92
ZShtX2VuY29kZXIpKTtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgbV9jb25u
ZWN0aW9uID0gbnVsbHB0cjtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0
dXJuIF9yZXN1bHQ7XG4nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6c2Vu
ZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbicgJSAobWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgIGlmIGxlbihzZW5k
X3BhcmFtZXRlcnMpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJXMnICUgJywg
Jy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNdKSkKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJylcbntcbicpCisgICAgICAgICAgICByZXN1bHQgKz0gWycgICAg
KmVuY29kZXIgPDwgJXM7XG4nICUgeC5uYW1lIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1l
dGVyc10KKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjb25uZWN0aW9uLnNlbmRTeW5j
UmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
fVxuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzgsNyArMjM4LDcgQEAgcHVibGljOgogICAgICAgICB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNh
Z2U7CiAgICAgICAgIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlOwogICAgICAgICB1aW50
NjRfdCBleHBlY3RlZFVzYWdlOwotICAgICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+IHJlcGx5OworICAgICAgICBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBs
eSByZXBseTsKICAgICB9OwogCiAgICAgc3RhdGljIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29y
ZHMmIHNpbmdsZXRvbigpOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVjb3JkPiBjcmVhdGVSZWNvcmQodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9y
aWdpbklkZW50aWZpZXIsCiAgICAgICAgIFN0cmluZyBkYXRhYmFzZU5hbWUsIFN0cmluZyBkaXNw
bGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLAogICAgICAgICB1aW50NjRfdCBjdXJyZW50
T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBl
Y3RlZFVzYWdlLCAKLSAgICAgICAgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVk
RGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICAgICAgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHkmJik7CiAKICAgICB2
b2lkIGFkZChzdGQ6OnVuaXF1ZV9wdHI8UmVjb3JkPik7CiAgICAgYm9vbCBhcmVCZWluZ1Byb2Nl
c3NlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXJyZW50UmVjb3JkOyB9CkBAIC0yNjksNyArMjY5
LDcgQEAgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcyYgRXhjZWVkZWREYQogc3RkOjp1bmlx
dWVfcHRyPEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OlJlY29yZD4gRXhjZWVkZWREYXRh
YmFzZVF1b3RhUmVjb3Jkczo6Y3JlYXRlUmVjb3JkKAogICAgIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBvcmlnaW5JZGVudGlmaWVyLCBTdHJpbmcgZGF0YWJhc2VOYW1lLCBTdHJpbmcgZGlzcGxh
eU5hbWUsCiAgICAgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2lu
VXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLAotICAgIHVpbnQ2NF90IGV4cGVj
dGVkVXNhZ2UsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVv
dGE6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKKyAgICB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQogewogICAgIGF1dG8gcmVjb3JkID0gc3RkOjptYWtlX3VuaXF1ZTxSZWNvcmQ+
KCk7CiAgICAgcmVjb3JkLT5mcmFtZUlEID0gZnJhbWVJRDsKQEAgLTI0NDQsNyArMjQ0NCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KICAgICB9CiAKICAgICBp
ZiAoYXV0byBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5ID0gV1RGTW92ZShtX3N5bmNO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkpKSB7Ci0gICAgICAgIHN5bmNOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5UmVwbHktPnNlbmQobmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25J
RCgpIDogMCwgYWN0aW9uLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwor
ICAgICAgICBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5KG5hdmlnYXRpb24gPyBuYXZp
Z2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGFjdGlvbiwgZG93bmxvYWRJRCwgV1RGTW92ZSh3
ZWJzaXRlUG9saWNpZXMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDAzMyw3ICs0
MDMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgIG1f
c2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGZh
bHNlOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRp
b25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEm
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgQVNTRVJUKCFtX3N5bmNOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5UmVwbHkpOwogICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseSA9
IFdURk1vdmUocmVwbHkpOwpAQCAtNDA0Miw3ICs0MDQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYQogCiAgICAgLy8gSWYgdGhlIGNsaWVudCBkaWQgbm90IHJl
c3BvbmQgc3luY2hyb25vdXNseSwgcHJvY2VlZCB3aXRoIHRoZSBsb2FkLgogICAgIGlmIChhdXRv
IHN5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkgPSBXVEZNb3ZlKG1fc3luY05hdmlnYXRp
b25BY3Rpb25Qb2xpY3lSZXBseSkpCi0gICAgICAgIHN5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
UmVwbHktPnNlbmQobmF2aWdhdGlvbklELCBQb2xpY3lBY3Rpb246OlVzZSwgeyB9LCB7IH0pOwor
ICAgICAgICBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5KG5hdmlnYXRpb25JRCwgUG9s
aWN5QWN0aW9uOjpVc2UsIHsgfSwgeyB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCkBAIC00MjA1LDIwICs0MjA1LDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRh
dGVIaXN0b3J5VGl0bGUKIAogLy8gVUlDbGllbnQKIAotdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0
ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2lu
ZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1Bh
Z2U6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQ
YWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdpbmRvd0Zl
YXR1cmVzJiYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5
ZWRSZXBseSYmIHJlcGx5KQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLT53ZWJGcmFt
ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkpOwogICAgIGF1dG8gb3JpZ2luYXRp
bmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YSwgbV9wcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFnZUlEKSk7CiAKICAgICBhdXRv
IG1haW5GcmFtZVVSTCA9IG1fbWFpbkZyYW1lLT51cmwoKTsKIAotICAgIG1fdWlDbGllbnQtPmNy
ZWF0ZU5ld1BhZ2UoKnRoaXMsIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm8pLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHdpbmRvd0ZlYXR1cmVzKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0
aW9uRGF0YSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmUHRyPFdlYlBhZ2VQcm94eT4odGhp
cyksIG1haW5GcmFtZVVSTCwgcmVxdWVzdCwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oUmVmUHRy
PFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkgeworICAgIG1fdWlDbGllbnQtPmNyZWF0ZU5ld1BhZ2Uo
KnRoaXMsIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm8pLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHdpbmRvd0ZlYXR1cmVzKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1haW5GcmFtZVVSTCwgcmVxdWVz
dCwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkg
ewogICAgICAgICBpZiAoIW5ld1BhZ2UpIHsKLSAgICAgICAgICAgIHJlcGx5LT5zZW5kKDAsIHsg
fSk7CisgICAgICAgICAgICByZXBseSgwLCB7IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgcmVwbHktPnNlbmQobmV3UGFnZS0+cGFnZUlEKCksIG5ld1BhZ2Ut
PmNyZWF0aW9uUGFyYW1ldGVycygpKTsKKyAgICAgICAgcmVwbHkobmV3UGFnZS0+cGFnZUlEKCks
IG5ld1BhZ2UtPmNyZWF0aW9uUGFyYW1ldGVycygpKTsKIAogICAgICAgICBXZWJzaXRlRGF0YVN0
b3JlOjpjbG9uZVNlc3Npb25EYXRhKCp0aGlzLCAqbmV3UGFnZSk7CiAgICAgICAgIG5ld1BhZ2Ut
Pm1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9
IGhvc3RzQXJlRXF1YWwoVVJMKFBhcnNlZFVSTFN0cmluZywgbWFpbkZyYW1lVVJMKSwgcmVxdWVz
dC51cmwoKSk7CkBAIC00MjU0LDcgKzQyNTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2VQ
YWdlKGJvb2wgc3RvcFJlCiAgICAgbV91aUNsaWVudC0+Y2xvc2UodGhpcyk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVk
UmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNj
cmlwdEFsZXJ0OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBXZWJGcmFtZVByb3h5KiBm
cmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhm
cmFtZSk7CkBAIC00MjY2LDEyICs0MjY2LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0QWxlcnQodWkKICAgICAgICAgaWYgKGF1dG8qIGF1dG9tYXRpb25TZXNzaW9uID0gcHJv
Y2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKICAgICAgICAgICAgIGF1
dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAgIH0K
LSAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0QWxlcnQodGhpcywgbWVzc2FnZSwgZnJhbWUs
IHNlY3VyaXR5T3JpZ2luLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gewotICAgICAgICByZXBs
eS0+c2VuZCgpOwotICAgIH0pOworICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRBbGVydCh0
aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUocmVwbHkpKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25m
aXJtOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNj
cmlwdENvbmZpcm0odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAg
V2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAg
IE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwpAQCAtNDI4NCwxMiArNDI4MiwxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oCiAgICAgICAgICAgICBhdXRvbWF0aW9uU2Vz
c2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0aGlzKTsKICAgICB9CiAKLSAgICBtX3Vp
Q2xpZW50LT5ydW5KYXZhU2NyaXB0Q29uZmlybSh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJp
dHlPcmlnaW4sIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShib29sIHJlc3VsdCkgewotICAgICAg
ICByZXBseS0+c2VuZChyZXN1bHQpOwotICAgIH0pOworICAgIG1fdWlDbGllbnQtPnJ1bkphdmFT
Y3JpcHRDb25maXJtKHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgV1RGTW92
ZShyZXBseSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdFByb21wdCh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBSZWY8
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6RGVsYXllZFJlcGx5
PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9tcHQodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6RGVsYXllZFJlcGx5JiYgcmVwbHkp
CiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1l
SUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwpAQCAtNDMwMiw5ICs0Mjk4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9tcHQodQogICAgICAgICAgICAgYXV0b21h
dGlvblNlc3Npb24tPndpbGxTaG93SmF2YVNjcmlwdERpYWxvZygqdGhpcyk7CiAgICAgfQogCi0g
ICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdFByb21wdCh0aGlzLCBtZXNzYWdlLCBkZWZhdWx0
VmFsdWUsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKGNv
bnN0IFN0cmluZyYgcmVzdWx0KSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKHJlc3VsdCk7Ci0gICAg
fSk7CisgICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdFByb21wdCh0aGlzLCBtZXNzYWdlLCBk
ZWZhdWx0VmFsdWUsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgV1RGTW92ZShyZXBseSkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCkBA
IC00MzcyLDI0ICs0MzY2LDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1bmF2YWlsYWJsZVBsdWdp
bkJ1dHQKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2lmIEVOQUJM
RShXRUJHTCkKLXZvaWQgV2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChVUkwmJiB1cmws
IFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJl
cGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKFVSTCYm
IHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQogewogICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKICAgICAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT53ZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCwgW3JlcGx5ID0g
V1RGTW92ZShyZXBseSldKFdlYkdMTG9hZFBvbGljeSBwb2xpY3kpIHsKLSAgICAgICAgICAgIHJl
cGx5LT5zZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKKyAgICAgICAgICAgIHJl
cGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKICAgICAgICAgfSk7CiAgICAgfSBl
bHNlCi0gICAgICAgIHJlcGx5LT5zZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNs
aWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwpKSk7CisgICAgICAgIHJlcGx5KHN0YXRp
Y19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1
cmwpKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwo
VVJMJiYgdXJsLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5
Rm9yVVJMOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVz
b2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBpZiAo
bV9uYXZpZ2F0aW9uQ2xpZW50KSB7CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cmVzb2x2
ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oV2Vi
R0xMb2FkUG9saWN5IHBvbGljeSkgewotICAgICAgICAgICAgcmVwbHktPnNlbmQoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHBvbGljeSkpOworICAgICAgICAgICAgcmVwbHkoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHBvbGljeSkpOwogICAgICAgICB9KTsKICAgICB9IGVsc2UKLSAgICAgICAgcmVwbHkt
PnNlbmQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fbG9hZGVyQ2xpZW50LT5yZXNvbHZlV2ViR0xM
b2FkUG9saWN5KCp0aGlzLCB1cmwpKSk7CisgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQz
Ml90PihtX2xvYWRlckNsaWVudC0+cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSkp
OwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApAQCAtNDM5OCwxMSArNDM5Miw5IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRUb29sYmFyc0FyZVZpc2libGUKICAgICBtX3VpQ2xpZW50LT5z
ZXRUb29sYmFyc0FyZVZpc2libGUoKnRoaXMsIHRvb2xiYXJzQXJlVmlzaWJsZSk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpnZXRUb29sYmFyc0FyZVZpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJsZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQor
dm9pZCBXZWJQYWdlUHJveHk6OmdldFRvb2xiYXJzQXJlVmlzaWJsZShNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGU6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewot
ICAgIG1fdWlDbGllbnQtPnRvb2xiYXJzQXJlVmlzaWJsZSgqdGhpcywgW3JlcGx5ID0gV1RGTW92
ZShyZXBseSldKGJvb2wgdmlzaWJsZSkgewotICAgICAgICByZXBseS0+c2VuZCh2aXNpYmxlKTsK
LSAgICB9KTsKKyAgICBtX3VpQ2xpZW50LT50b29sYmFyc0FyZVZpc2libGUoKnRoaXMsIFdURk1v
dmUocmVwbHkpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lbnVCYXJJc1Zpc2libGUo
Ym9vbCBtZW51QmFySXNWaXNpYmxlKQpAQCAtNDQxMCwxMSArNDQwMiw5IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRNZW51QmFySXNWaXNpYmxlKGIKICAgICBtX3VpQ2xpZW50LT5zZXRNZW51QmFy
SXNWaXNpYmxlKCp0aGlzLCBtZW51QmFySXNWaXNpYmxlKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OmdldE1lbnVCYXJJc1Zpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1l
bnVCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpnZXRNZW51QmFySXNWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJ
c1Zpc2libGU6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIG1fdWlDbGllbnQtPm1lbnVC
YXJJc1Zpc2libGUoKnRoaXMsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAoYm9vbCB2aXNpYmxl
KSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKHZpc2libGUpOwotICAgIH0pOworICAgIG1fdWlDbGll
bnQtPm1lbnVCYXJJc1Zpc2libGUoKnRoaXMsIFdURk1vdmUocmVwbHkpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFN0YXR1c0JhcklzVmlzaWJsZShib29sIHN0YXR1c0JhcklzVmlzaWJs
ZSkKQEAgLTQ0MjIsMTEgKzQ0MTIsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3RhdHVzQmFy
SXNWaXNpYmxlCiAgICAgbV91aUNsaWVudC0+c2V0U3RhdHVzQmFySXNWaXNpYmxlKCp0aGlzLCBz
dGF0dXNCYXJJc1Zpc2libGUpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U3RhdHVzQmFy
SXNWaXNpYmxlKFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2li
bGU6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRTdGF0dXNC
YXJJc1Zpc2libGUoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3RhdHVzQmFySXNWaXNpYmxl
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBtX3VpQ2xpZW50LT5zdGF0dXNCYXJJc1Zp
c2libGUoKnRoaXMsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAoYm9vbCB2aXNpYmxlKSB7Ci0g
ICAgICAgIHJlcGx5LT5zZW5kKHZpc2libGUpOwotICAgIH0pOworICAgIG1fdWlDbGllbnQtPnN0
YXR1c0JhcklzVmlzaWJsZSgqdGhpcywgV1RGTW92ZShyZXBseSkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0SXNSZXNpemFibGUoYm9vbCBpc1Jlc2l6YWJsZSkKQEAgLTQ0MzksMTAgKzQ0
MjcsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFdpbmRvd0ZyYW1lKGNvbnN0IAogICAgIG1f
dWlDbGllbnQtPnNldFdpbmRvd0ZyYW1lKCp0aGlzLCBtX3BhZ2VDbGllbnQuY29udmVydFRvRGV2
aWNlU3BhY2UobmV3V2luZG93RnJhbWUpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldFdp
bmRvd0ZyYW1lKFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRXaW5kb3dGcmFtZTo6RGVs
YXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmdldFdpbmRvd0ZyYW1lKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lOjpEZWxheWVkUmVwbHkmJiByZXBs
eSkKIHsKICAgICBtX3VpQ2xpZW50LT53aW5kb3dGcmFtZSgqdGhpcywgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKEZsb2F0UmVj
dCBmcmFtZSkgewotICAgICAgICByZXBseS0+c2VuZChtX3BhZ2VDbGllbnQuY29udmVydFRvVXNl
clNwYWNlKGZyYW1lKSk7CisgICAgICAgIHJlcGx5KG1fcGFnZUNsaWVudC5jb252ZXJ0VG9Vc2Vy
U3BhY2UoZnJhbWUpKTsKICAgICB9KTsKIH0KIApAQCAtNDQ1MywxNCArNDQ0MSwxNCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0V2luZG93RnJhbWVXaXRoQ2FsCiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBzY3JlZW5Qb2lu
dCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmVlblRvUm9vdFZpZXc6OkRlbGF5ZWRS
ZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JiBzY3JlZW5Qb2ludCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyZWVuVG9S
b290Vmlldzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgcmVwbHktPnNlbmQobV9wYWdl
Q2xpZW50LnNjcmVlblRvUm9vdFZpZXcoc2NyZWVuUG9pbnQpKTsKKyAgICByZXBseShtX3BhZ2VD
bGllbnQuc2NyZWVuVG9Sb290VmlldyhzY3JlZW5Qb2ludCkpOwogfQogICAgIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnJvb3RWaWV3VG9TY3JlZW4oY29uc3QgSW50UmVjdCYgdmlld1JlY3QsIFJlZjxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVuOjpEZWxheWVkUmVwbHk+JiYg
cmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb1NjcmVlbihjb25zdCBJbnRSZWN0
JiB2aWV3UmVjdCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZpZXdUb1NjcmVlbjo6RGVs
YXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgcmVwbHktPnNlbmQobV9wYWdlQ2xpZW50LnJvb3RW
aWV3VG9TY3JlZW4odmlld1JlY3QpKTsKKyAgICByZXBseShtX3BhZ2VDbGllbnQucm9vdFZpZXdU
b1NjcmVlbih2aWV3UmVjdCkpOwogfQogICAgIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTQ0NzUs
NyArNDQ2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpyb290Vmlld1RvQWNjZXNzaWJpbGkKIH0K
ICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5PiByZXBseSkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWw6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1l
ID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1l
KTsKQEAgLTQ0ODgsNyArNDQ3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxv
YWRDb25maXIKICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3Jp
cHREaWFsb2coKnRoaXMpOwogICAgIH0KIAotICAgIG1fdWlDbGllbnQtPnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbCh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFtyZXBs
eV0oYm9vbCByZXN1bHQpIHsgcmVwbHktPnNlbmQocmVzdWx0KTsgfSk7CisgICAgbV91aUNsaWVu
dC0+cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBzZWN1
cml0eU9yaWdpbiwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKGJvb2wgcmVzdWx0KSB7IHJlcGx5
KHJlc3VsdCk7IH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlVmlld3BvcnRQ
cm9wZXJ0aWVzKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cikKQEAgLTYyMDYsNyArNjE5
NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXQKICAgICAgICAg
bV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUo
KnRoaXMsICpmcmFtZSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0KCkpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUs
IGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0
X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWlu
dDY0X3QgZXhwZWN0ZWRVc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVk
RGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6
OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9y
aWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcm
IGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmln
aW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVk
VXNhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVs
YXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcyYg
cmVjb3JkcyA9IEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OnNpbmdsZXRvbigpOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQ+IG5l
d1JlY29yZCA9IHJlY29yZHMuY3JlYXRlUmVjb3JkKGZyYW1lSUQsCkBAIC02MjIyLDIxICs2MjEw
LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEKICAgICAgICAg
V2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKHJlY29yZC0+ZnJhbWVJ
RCk7CiAgICAgICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgICAgIFJlZlB0cjxBUEk6
OlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHJlY29yZC0+b3JpZ2luSWRl
bnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgICAgICBhdXRvIGN1cnJlbnRSZXBseSA9
IHJlY29yZC0+cmVwbHk7Ci0gICAgICAgIG1fdWlDbGllbnQtPmV4Y2VlZGVkRGF0YWJhc2VRdW90
YSh0aGlzLCBmcmFtZSwgb3JpZ2luLmdldCgpLAotICAgICAgICAgICAgcmVjb3JkLT5kYXRhYmFz
ZU5hbWUsIHJlY29yZC0+ZGlzcGxheU5hbWUsIHJlY29yZC0+Y3VycmVudFF1b3RhLAotICAgICAg
ICAgICAgcmVjb3JkLT5jdXJyZW50T3JpZ2luVXNhZ2UsIHJlY29yZC0+Y3VycmVudERhdGFiYXNl
VXNhZ2UsIHJlY29yZC0+ZXhwZWN0ZWRVc2FnZSwKLSAgICAgICAgICAgIFtjdXJyZW50UmVwbHld
KHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSkgeyBjdXJyZW50UmVwbHktPnNlbmQobmV3UXVv
dGEpOyB9KTsKLQorICAgICAgICBhdXRvIG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIocmVjb3JkLT5v
cmlnaW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgICAgIG1fdWlDbGllbnQt
PmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh0aGlzLCBmcmFtZSwgb3JpZ2luLnB0cigpLCByZWNvcmQt
PmRhdGFiYXNlTmFtZSwgcmVjb3JkLT5kaXNwbGF5TmFtZSwgcmVjb3JkLT5jdXJyZW50UXVvdGEs
IHJlY29yZC0+Y3VycmVudE9yaWdpblVzYWdlLCByZWNvcmQtPmN1cnJlbnREYXRhYmFzZVVzYWdl
LCByZWNvcmQtPmV4cGVjdGVkVXNhZ2UsIFdURk1vdmUocmVjb3JkLT5yZXBseSkpOwogICAgICAg
ICByZWNvcmQgPSByZWNvcmRzLm5leHQoKTsKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2lu
SWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVl
ZGVkLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVu
dGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQs
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGE6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gc2Vj
dXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIo
b3JpZ2luSWRlbnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgbV91aUNsaWVudC0+cmVh
Y2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh0aGlzLCBzZWN1cml0eU9yaWdpbi5nZXQo
KSwgY3VycmVudFF1b3RhLCB0b3RhbEJ5dGVzTmVlZGVkLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5
KV0odW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhKSB7IHJlcGx5LT5zZW5kKG5ld1F1b3RhKTsg
fSk7CisgICAgbV91aUNsaWVudC0+cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh0
aGlzLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgY3VycmVudFF1b3RhLCB0b3RhbEJ5dGVzTmVlZGVk
LCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0R2VvbG9j
YXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgZ2VvbG9jYXRpb25JRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjMxOTA5KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNDAsNyArMTI0MCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Rm9jdXMoYm9vbCBmb2N1c2VkKTsKICAgICB2b2lk
IHNldFdpbmRvd0ZyYW1lKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwotICAgIHZvaWQgZ2V0
V2luZG93RnJhbWUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lOjpE
ZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0V2luZG93RnJhbWUoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6R2V0V2luZG93RnJhbWU6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGdldFdp
bmRvd0ZyYW1lV2l0aENhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6RmxvYXRSZWN0KT4m
Jik7CiAKICAgICBib29sIGlzUmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzUmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQ7IH0KQEAgLTEzOTEsNyArMTM5MSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9u
SUQpOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0
eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBj
b25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2
b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBGcmFt
ZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmLCBSZWY8TWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRS
ZXBseT4mJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmM6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNl
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJh
bWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBj
YW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE0MDcsMTEgKzE0
MDcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgdWludDY0X3QgZnJhbWVJRCk7CiAKICAg
ICAvLyBVSSBjbGllbnQKLSAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0
YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgUmVm
PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseT4mJik7
CisgICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBv
cmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6Oldp
bmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNob3dQYWdl
KCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgUmVmPE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5PiYmKTsKLSAg
ICB2b2lkIHJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIFJlZjxNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5PiYmKTsKLSAgICB2
b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OkRlbGF5ZWRSZXBseT4m
Jik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9p
ZCBydW5KYXZhU2NyaXB0Q29uZmlybSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgcnVuSmF2
YVNjcmlwdFByb21wdCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0OjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBz
ZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQoV2ViSGl0VGVzdFJlc3VsdERhdGEmJiwgdWludDMyX3QgbW9kaWZpZXJzLCBVc2VyRGF0
YSYmKTsKIApAQCAtMTQxOSwyOSArMTQxOSwyOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5hdmFp
bGFibGVQbHVnaW5CdXR0b25DbGlja2VkKHVpbnQzMl90IG9wYXF1ZVBsdWdpblVuYXZhaWxhYmls
aXR5UmVhc29uLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBsdWdpblVS
TFN0cmluZywgY29uc3QgU3RyaW5nJiBwbHVnaW5zUGFnZVVSTFN0cmluZywgY29uc3QgU3RyaW5n
JiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKTsKICNlbmRpZiAv
LyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9p
ZCB3ZWJHTFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwmJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHk+JiYpOwotICAgIHZvaWQgcmVz
b2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCYmLCBSZWY8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHk+JiYpOworICAg
IHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCByZXNv
bHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOwogI2VuZGlmIC8v
IEVOQUJMRShXRUJHTCkKICAgICB2b2lkIHNldFRvb2xiYXJzQXJlVmlzaWJsZShib29sIHRvb2xi
YXJzQXJlVmlzaWJsZSk7Ci0gICAgdm9pZCBnZXRUb29sYmFyc0FyZVZpc2libGUoUmVmPE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJsZTo6RGVsYXllZFJlcGx5PiYm
KTsKKyAgICB2b2lkIGdldFRvb2xiYXJzQXJlVmlzaWJsZShNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpHZXRUb29sYmFyc0FyZVZpc2libGU6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNldE1l
bnVCYXJJc1Zpc2libGUoYm9vbCBtZW51QmFySXNWaXNpYmxlKTsKLSAgICB2b2lkIGdldE1lbnVC
YXJJc1Zpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2li
bGU6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXRNZW51QmFySXNWaXNpYmxlKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseSYmKTsK
ICAgICB2b2lkIHNldFN0YXR1c0JhcklzVmlzaWJsZShib29sIHN0YXR1c0JhcklzVmlzaWJsZSk7
Ci0gICAgdm9pZCBnZXRTdGF0dXNCYXJJc1Zpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkdldFN0YXR1c0JhcklzVmlzaWJsZTo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdl
dFN0YXR1c0JhcklzVmlzaWJsZShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJ
c1Zpc2libGU6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNldElzUmVzaXphYmxlKGJvb2wg
aXNSZXNpemFibGUpOwotICAgIHZvaWQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgc2NyZWVuUG9pbnQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JlZW5U
b1Jvb3RWaWV3OjpEZWxheWVkUmVwbHk+JiYpOwotICAgIHZvaWQgcm9vdFZpZXdUb1NjcmVlbihj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJvb3RWaWV3VG9TY3JlZW46OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBzY3JlZW5U
b1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Qb2ludCwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2NyZWVuVG9Sb290Vmlldzo6RGVsYXllZFJlcGx5JiYpOworICAgIHZv
aWQgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZpZXdUb1NjcmVlbjo6RGVsYXllZFJlcGx5JiYpOwog
I2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Qb2ludCwgV2ViQ29yZTo6SW50UG9pbnQm
IHdpbmRvd1BvaW50KTsKICAgICB2b2lkIHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBXZWJDb3JlOjpJbnRSZWN0JiByZXN1bHQp
OwogI2VuZGlmCi0gICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+KTsKKyAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgZGlk
Q2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRl
cyYpOwogICAgIHZvaWQgcGFnZURpZFNjcm9sbCgpOwogICAgIHZvaWQgcnVuT3BlblBhbmVsKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0
IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKICAgICB2b2lkIHByaW50RnJhbWUodWlu
dDY0X3QgZnJhbWVJRCk7Ci0gICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1
b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFz
ZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+JiYpOwotICAgIHZvaWQgcmVh
Y2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50
aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwg
UmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGE6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3Qg
Y3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJl
bnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lk
IHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5J
ZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVk
ZWQsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGE6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1p
c3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgb3JpZ2luSWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpAQCAt
MTk2MSw3ICsxOTYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNQZXJmb3JtaW5nRE9NUHJp
bnRPcGVyYXRpb24geyBmYWxzZSB9OwogCiAgICAgLy8gU3luY2hyb25vdXMgbmF2aWdhdGlvbiBw
b2xpY3kgZGVjaXNpb24uCi0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHk+IG1fc3luY05hdmln
YXRpb25BY3Rpb25Qb2xpY3lSZXBseTsKKyAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5IG1fc3luY05hdmln
YXRpb25BY3Rpb25Qb2xpY3lSZXBseTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBt
X2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdDsKICAgICBib29sIG1fc2hvdWxkU3VwcHJl
c3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiB7IGZhbHNlIH07CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAy
MzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzOCw3ICs1MzgsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQ
cm9jZXNzUG9vbDo6ZW5zCiAgICAgcmV0dXJuICptX25ldHdvcmtQcm9jZXNzOwogfQogCi12b2lk
IFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94
eSYgbmV0d29ya1Byb2Nlc3NQcm94eSwgVmVjdG9yPFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+JiYgcGVuZGlu
Z1JlcGxpZXMpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0
d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1Byb2Nlc3NQcm94eSwgVmVjdG9yPE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
PiYmIHBlbmRpbmdSZXBsaWVzKQogewogICAgIG5ldHdvcmtQcm9jZXNzRmFpbGVkVG9MYXVuY2go
bmV0d29ya1Byb2Nlc3NQcm94eSk7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtQcm9jZXNzKTsKQEAg
LTU2NCw3ICs1NjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0ZhaWxl
CiAgICAgbV9uZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkp
Cit2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVk
UmVwbHkmJiByZXBseSkKIHsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwogICAgIEFTU0VS
VChtX25ldHdvcmtQcm9jZXNzKTsKQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjplbnN1cmVTdG9yYWdlUHJvY2VzCiAgICAgbV9zdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6U3RvcmFnZVByb2Nlc3M6OkluaXRpYWxpemVXZWJzaXRlRGF0YVN0b3JlKHJlbGV2YW50
RGF0YVN0b3JlLT5zdG9yYWdlUHJvY2Vzc1BhcmFtZXRlcnMoKSksIDApOwogfQogCi12b2lkIFdl
YlByb2Nlc3NQb29sOjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5
JiB3ZWJQcm9jZXNzUHJveHksIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQsIFJlZjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFN0b3JhZ2VQcm9j
ZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgUEFMOjpTZXNz
aW9uSUQgaW5pdGlhbFNlc3Npb25JRCwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3Rv
cmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBlbnN1
cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZTo6ZXhp
c3RpbmdOb25EZWZhdWx0RGF0YVN0b3JlRm9yU2Vzc2lvbklEKGluaXRpYWxTZXNzaW9uSUQpKTsK
IApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lv
biAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjYsMTQgKzMyNiwxNCBAQCBwdWJsaWM6CiAgICAgLy8gTmV0d29y
ayBQcm9jZXNzIE1hbmFnZW1lbnQKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBlbnN1cmVOZXR3
b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoV2Vic2l0ZURhdGFTdG9yZSA9IG51bGxw
dHIpOwogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkgeyByZXR1cm4g
bV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQotICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVk
KE5ldHdvcmtQcm9jZXNzUHJveHkmLCBWZWN0b3I8UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4mJik7CisgICAg
dm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFZlY3RvcjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4mJik7CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0ZhaWxlZFRvTGF1bmNoKE5l
dHdvcmtQcm9jZXNzUHJveHkmKTsKIAotICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHkmJik7CiAKICAgICB2b2lkIGVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5k
V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlKiByZWxldmFudERhdGFTdG9yZSk7CiAg
ICAgU3RvcmFnZVByb2Nlc3NQcm94eSogc3RvcmFnZVByb2Nlc3MoKSB7IHJldHVybiBtX3N0b3Jh
Z2VQcm9jZXNzLmdldCgpOyB9Ci0gICAgdm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24o
V2ViUHJvY2Vzc1Byb3h5JiwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCwgUmVmPE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihXZWJQ
cm9jZXNzUHJveHkmLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklELCBNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eSYmKTsKICAgICB2b2lkIHN0b3JhZ2VQcm9jZXNzQ3Jhc2hlZChTdG9yYWdlUHJvY2Vzc1Byb3h5
Kik7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzKFN0b3JhZ2VQcm9jZXNzUHJveHkmLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25J
RD4pOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODQsMTggKzU4NCwxOCBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6Z2V0UGx1Z2lucyhib29sIHJlCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLXZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Q
cm9jZXNzVG9rZW4sIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tl
biwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaW5n
bGV0b24oKS5nZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVnaW5Qcm9jZXNzVG9rZW4sIFdU
Rk1vdmUocmVwbHkpKTsKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiBy
ZXBseSkKIHsKICAgICBtX3Byb2Nlc3NQb29sLT5nZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
V1RGTW92ZShyZXBseSkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQsIFJlZjxNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRTdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCwgTWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkm
JiByZXBseSkKIHsKICAgICBtX3Byb2Nlc3NQb29sLT5nZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b24oKnRoaXMsIGluaXRpYWxTZXNzaW9uSUQsIFdURk1vdmUocmVwbHkpKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyMzE5MDkp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYxLDEwICsyNjEsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFBsdWdpbnMo
Ym9vbCByZWZyZXNoLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIHBsdWdpbnMsIFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYgYXBwbGljYXRpb25QbHVnaW5zLCBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5OYW1lPj4mKTsKICNlbmRpZiAvLyBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
LSAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nl
c3NUb2tlbiwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogI2Vu
ZGlmCi0gICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
PiYmKTsKLSAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihQQUw6OlNlc3Npb25J
RCBpbml0aWFsU2Vzc2lvbklELCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3Rv
cmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgZ2V0U3RvcmFn
ZVByb2Nlc3NDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQsIE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5JiYpOwogCiAgICAgYm9vbCBwbGF0Zm9ybUlzQmVpbmdEZWJ1Z2dlZCgpIGNvbnN0Owog
ICAgIGJvb2wgc2hvdWxkQWxsb3dOb25WYWxpZEluamVjdGVkQ29kZSgpIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUs
NyArMTE1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodQogICAg
IEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgdGhpcy0+Y29ubmVjdGlvbigpID09ICZjb25uZWN0
aW9uKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsK
ICAgICBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5hcHBlbmQoV1RGTW92ZShyZXBseSkpOwog
CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJv
Y2VzcwogewogICAgIGNsZWFyQ2FsbGJhY2tTdGF0ZXMoKTsKIAotICAgIFZlY3RvcjxSZWY8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+PiBwZW5kaW5nUmVwbGllczsKKyAgICBWZWN0b3I8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHBlbmRp
bmdSZXBsaWVzOwogICAgIHBlbmRpbmdSZXBsaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9w
ZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIHJlcGx5IDog
bV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMpCiAgICAgICAgIHBlbmRpbmdSZXBsaWVzLmFwcGVu
ZChXVEZNb3ZlKHJlcGx5KSk7CkBAIC0yMDYsMTIgKzIwNiwxMiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzCiB7CiAgICAgLy8gVGhlIG5ldHdvcmsgcHJvY2VzcyBt
dXN0IGhhdmUgY3Jhc2hlZCBvciBleGl0ZWQsIHNlbmQgYW55IHBlbmRpbmcgc3luYyByZXBsaWVz
IHdlIG1pZ2h0IGhhdmUuCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworICAgICAgICBhdXRvIHJlcGx5ID0gbV9wZW5k
aW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNpZiBVU0UoVU5JWF9ET01BSU5f
U09DS0VUUykgfHwgT1MoV0lORE9XUykKLSAgICAgICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2ht
ZW50KCkpOworICAgICAgICByZXBseShJUEM6OkF0dGFjaG1lbnQoKSk7CiAjZWxpZiBPUyhEQVJX
SU4pCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBF
X01PVkVfU0VORCkpOworICAgICAgICByZXBseShJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0df
VFlQRV9NT1ZFX1NFTkQpKTsKICNlbHNlCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5k
aWYKQEAgLTI4NSwxMiArMjg1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3Jl
YXRlTmV0d28KICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHko
KSk7CiAKICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24gcmVwbHkuCi0g
ICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LnRha2VGaXJzdCgpOworICAgIGF1dG8gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGll
cy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKSB8fCBPUyhXSU5E
T1dTKQotICAgIHJlcGx5LT5zZW5kKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICByZXBseShj
b25uZWN0aW9uSWRlbnRpZmllcik7CiAjZWxpZiBPUyhEQVJXSU4pCi0gICAgcmVwbHktPnNlbmQo
SVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQ
RV9NT1ZFX1NFTkQpKTsKKyAgICByZXBseShJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50
aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOwogI2Vsc2UKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjMxOTA5KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8
TmV0d29ya1Byb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJik7CiAgICAgfk5ldHdv
cmtQcm9jZXNzUHJveHkoKTsKIAotICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHkmJik7CiAKICAgICBEb3dubG9hZFByb3h5KiBjcmVhdGVEb3dubG9hZFBy
b3h5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCkBAIC0xNTQsMTEgKzE1NCwx
MSBAQCBwcml2YXRlOgogICAgIFdlYlByb2Nlc3NQb29sJiBtX3Byb2Nlc3NQb29sOwogICAgIAog
ICAgIHVuc2lnbmVkIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsKLSAgICBEZXF1ZTxS
ZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKKyAgICBEZXF1ZTxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CiAKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4+IG1fcGVuZGluZ0ZldGNo
V2Vic2l0ZURhdGFDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlv
bjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3M7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vi
c2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0
aW9uPHZvaWQoV2Vic2l0ZURhdGEpPj4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNr
czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdEZWxl
dGVXZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2
b2lkKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3M7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWRQcm94eU1hcD4gbV9kb3dubG9hZFByb3h5TWFw
OwogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NN
YW5hZ2VyLmNwcAkocmV2aXNpb24gMjMxOTA5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcg
KzgxLDcgQEAgdWludDY0X3QgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnBsdWdpblBybwogICAgIHJl
dHVybiB0b2tlbjsKIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBSZWY8TWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4mJiByZXBseSkKK3ZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgTWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5
KQogewogICAgIEFTU0VSVChwbHVnaW5Qcm9jZXNzVG9rZW4pOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5o
CShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogCiAgICAgdWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuKGNvbnN0IFBsdWdpbk1vZHVs
ZUluZm8mLCBQbHVnaW5Qcm9jZXNzVHlwZSwgUGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3kpOwog
Ci0gICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9j
ZXNzVG9rZW4sIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgTWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmKTsKICAg
ICB2b2lkIHJlbW92ZVBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzUHJveHkqKTsKIAog
ICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxT
dHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCShyZXZpc2lv
biAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFBsdWdp
blByb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxTaHV0CiAKIC8vIEFza3MgdGhlIHBsdWctaW4gcHJv
Y2VzcyB0byBjcmVhdGUgYSBuZXcgY29ubmVjdGlvbiB0byBhIHdlYiBwcm9jZXNzLiBUaGUgY29u
bmVjdGlvbiBpZGVudGlmaWVyIHdpbGwgYmUgCiAvLyBlbmNvZGVkIGluIHRoZSBnaXZlbiBhcmd1
bWVudCBlbmNvZGVyIGFuZCBzZW50IGJhY2sgdG8gdGhlIGNvbm5lY3Rpb24gb2YgdGhlIGdpdmVu
IHdlYiBwcm9jZXNzLgotdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBQbHVnaW5Qcm9jZXNzUHJv
eHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAg
ICBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5hcHBlbmQoV1RGTW92ZShyZXBseSkpOwogCkBA
IC0xNTksMTIgKzE1OSwxMiBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vz
c0NyCiB7CiAgICAgLy8gVGhlIHBsdWctaW4gcHJvY2VzcyBtdXN0IGhhdmUgY3Jhc2hlZCBvciBl
eGl0ZWQsIHNlbmQgYW55IHBlbmRpbmcgc3luYyByZXBsaWVzIHdlIG1pZ2h0IGhhdmUuCiAgICAg
d2hpbGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFr
ZUZpcnN0KCk7CisgICAgICAgIGF1dG8gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGll
cy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgICAgICBy
ZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoKSwgZmFsc2UpOworICAgICAgICByZXBseShJUEM6
OkF0dGFjaG1lbnQoKSwgZmFsc2UpOwogI2VsaWYgT1MoREFSV0lOKQotICAgICAgICByZXBseS0+
c2VuZChJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpLCBmYWxzZSk7
CisgICAgICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VO
RCksIGZhbHNlKTsKICNlbHNlCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKQEAg
LTI3NiwxMiArMjc2LDEyIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQ
cm8KICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSk7CiAK
ICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24gcmVwbHkuCi0gICAgUmVm
UHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZp
cnN0KCk7CisgICAgYXV0byByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VG
aXJzdCgpOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgcmVwbHktPnNlbmQo
Y29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb24pOworICAgIHJlcGx5KGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJv
bm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKICNlbGlmIE9TKERBUldJTikKLSAgICByZXBseS0+
c2VuZChJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01T
R19UWVBFX01PVkVfU0VORCksIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b24pOworICAgIHJlcGx5KElQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0
KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5J
bml0aWFsaXphdGlvbik7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzUHJveHkuaAkocmV2aXNpb24gMjMxOTA5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBBc2tzIHRoZSBwbHVnLWluIHByb2Nlc3MgdG8gY3JlYXRl
IGEgbmV3IGNvbm5lY3Rpb24gdG8gYSB3ZWIgcHJvY2Vzcy4gVGhlIGNvbm5lY3Rpb24gaWRlbnRp
ZmllciB3aWxsIGJlCiAgICAgLy8gZW5jb2RlZCBpbiB0aGUgZ2l2ZW4gYXJndW1lbnQgZW5jb2Rl
ciBhbmQgc2VudCBiYWNrIHRvIHRoZSBjb25uZWN0aW9uIG9mIHRoZSBnaXZlbiB3ZWIgcHJvY2Vz
cy4KLSAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYm
KTsKKyAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAK
ICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoV1RGOjpGdW5jdGlvbjx2b2lkIChWZWN0b3I8U3Ry
aW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEo
V2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBjb25u
ZWN0aW9uIHRvIHRoZSBwbHVnLWluIGhvc3QgcHJvY2Vzcy4KICAgICBSZWZQdHI8SVBDOjpDb25u
ZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAKLSAgICBEZXF1ZTxSZWZQdHI8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1f
cGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOworICAgIERlcXVlPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IG1fcGVuZGlu
Z0Nvbm5lY3Rpb25SZXBsaWVzOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBtX3BlbmRpbmdGZXRj
aFdlYnNpdGVEYXRhUmVxdWVzdHM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlv
bjx2b2lkIChWZWN0b3I8U3RyaW5nPik+PiBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJh
Y2tzOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkZWxldGVX
ZWJzaXRlRAogICAgIHNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEZWxldGVXZWJzaXRl
RGF0YUZvck9yaWdpbnMoc2Vzc2lvbklELCBkYXRhVHlwZXMsIG9yaWdpbnMsIGNhbGxiYWNrSUQp
LCAwKTsKIH0KIAotdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpnZXRTdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIFJlZjxNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4mJiByZXBseSkKK3ZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3ND
b25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYm
IHJlcGx5KQogewogICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmFwcGVuZChXVEZNb3Zl
KHJlcGx5KSk7CiAKQEAgLTE0MCw5ICsxNDAsOSBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6
OmRpZENsb3NlKElQQzo6CiAgICAgICAgIGF1dG8gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9u
UmVwbGllcy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAg
ICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoKSk7CisgICAgICAgIHJlcGx5KElQQzo6
QXR0YWNobWVudCgpKTsKICNlbGlmIE9TKERBUldJTikKLSAgICAgICAgcmVwbHktPnNlbmQoSVBD
OjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CisgICAgICAgIHJlcGx5
KElQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOwogI2Vsc2UKICAg
ICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpAQCAtMTcyLDEyICsxNzIsMTIgQEAgdm9p
ZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVTdG9yYQogewogICAgIEFTU0VSVCghbV9w
ZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKTsKIAotICAgIFJlZlB0cjxNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAg
ICBhdXRvIHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAK
ICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICByZXBseS0+c2VuZChjb25uZWN0aW9u
SWRlbnRpZmllcik7CisgICAgcmVwbHkoY29ubmVjdGlvbklkZW50aWZpZXIpOwogI2VsaWYgT1Mo
REFSV0lOKQotICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRp
Zmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CisgICAgcmVwbHkoSVBDOjpB
dHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZF
X1NFTkQpKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1By
b3h5LmgJKHJldmlzaW9uIDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3Jh
Z2UvU3RvcmFnZVByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKLSAgICB2b2lkIGdldFN0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBSZWY8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwor
ICAgIHZvaWQgZ2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5JiYpOwogCiBwcml2YXRlOgogICAgIFN0b3JhZ2VQcm9jZXNzUHJveHkoV2ViUHJv
Y2Vzc1Bvb2wmKTsKQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzUG9v
bCYgbV9wcm9jZXNzUG9vbDsKIAogICAgIHVuc2lnbmVkIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25S
ZXF1ZXN0czsKLSAgICBEZXF1ZTxSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3Rv
cmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBtX3BlbmRpbmdDb25uZWN0aW9u
UmVwbGllczsKKyAgICBEZXF1ZTxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdl
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXM7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVE
YXRhKT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURh
dGFDYWxsYmFja3M7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCShy
ZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NCwxMSAr
MjQ0LDkgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dGVybQogICAgIFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBh
c3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgbnVsbHB0cik7CiB9CiAKLXZvaWQgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlcjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQor
dm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRlbGF5ZWRSZXBseSYmIHJl
cGx5KQogewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtl
cihpZGVudGlmaWVyLCBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBbcmVwbHkgPSBXVEZN
b3ZlKHJlcGx5KV0gewotICAgICAgICByZXBseS0+c2VuZCgpOwotICAgIH0pOworICAgIFNXQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBzeW5j
V29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKIHZvaWQgV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50
aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgJKHJldmlzaW9uIDIzMTkwOSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwog
ICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKLSAgICB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFJlZjxNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBzeW5j
VGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRl
bGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+JiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcik7CiAgICAgdm9pZCBt
YXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0
b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpOwogICAgIHZvaWQgY2xhaW1D
b21wbGV0ZWQodWludDY0X3QgY2xhaW1SZXF1ZXN0SWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMzE5MDkpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgxNCw3ICs4MTQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
UykKLSAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6V2Vi
UGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseT4m
Jik7CisgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFja0lELCBNZXNzYWdlczo6V2ViUGFn
ZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseSYmKTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDIzMTkwOSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTkwLDcgKzI5OTAsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpc3BhdGNo
QXN5bmNocm9ub3VzVG91Y2hFCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFn
ZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mIHByaW50SW5mbywgQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBSZWY8TWVzc2FnZXM6OldlYlBh
Z2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHk+JiYg
cmVwbHkpCit2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERG
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQsIE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0Fu
ZERyYXdUb1BERjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgaWYgKHByaW50SW5mby5z
bmFwc2hvdEZpcnN0UGFnZSkgewogICAgICAgICByZXBseS0+c2VuZCgxKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340640</attachid>
            <date>2018-05-17 14:13:40 -0700</date>
            <delta_ts>2018-05-17 14:47:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182269-20180517141339.patch</filename>
            <type>text/plain</type>
            <size>83850</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzE5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMyBAQAorMjAxOC0wNS0xNyAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBDb21wbGV0
aW9uSGFuZGxlcnMgZm9yIERlbGF5ZWRSZXBsaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vl
bm4gRmFibGV0LgorCisgICAgICAgIERlbGF5ZWRSZXBsaWVzIHNob3VsZCBiZSBhIG5vbmNvcHlh
YmxlLCBub24tcmVmY291bnRhYmxlIHR5cGUuICBUaGV5IHNob3VsZCBiZQorICAgICAgICBjYWxs
ZWQgb25jZSBhbmQgb25seSBvbmNlLiAgVGhpcyBpcyB3aGF0IENvbXBsZXRpb25IYW5kbGVycyBh
cmUgZm9yLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4gIEp1c3QgY2xlYW5lciBj
b2RlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cGVyZm9ybVN5bmNocm9ub3VzTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZERhdGE6OlN5bmNocm9ub3VzTG9hZERhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBDOjpjYWxsTWVtYmVy
RnVuY3Rpb25JbXBsKToKKyAgICAgICAgKElQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uKToKKyAgICAg
ICAgKElQQzo6aGFuZGxlTWVzc2FnZURlbGF5ZWQpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJv
bGxlclByb3h5OjpzZXRJbml0aWFsaXphdGlvblJlcGx5KToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6YXRpb25SZXBseSk6CisgICAgICAgICog
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKiBQbHVnaW5Q
cm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRlc3Ryb3lQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBQbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvTGVnYWN5TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcDoKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlczo6c2VuZCk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseTo6RGVsYXllZFJlcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5
KTogRGVsZXRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5OjpzZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVwbHk6OkRlbGF5
ZWRSZXBseSk6IERlbGV0ZWQuCisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRp
cGxlQXR0cmlidXRlczo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KTogRGVsZXRlZC4KKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpEZWxheWVk
UmVwbHk6OnNlbmQpOiBEZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L0xlZ2FjeU1l
c3NhZ2VzLWV4cGVjdGVkLmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2Vp
dmVyLWV4cGVjdGVkLmNwcDoKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVz
dE11bHRpcGxlQXR0cmlidXRlczo6c2VuZCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJlcGx5KTog
RGVsZXRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KTogRGVsZXRlZC4KKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5OjpzZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVwbHk6OkRlbGF5ZWRSZXBseSk6IERlbGV0ZWQuCisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlczo6RGVsYXll
ZFJlcGx5Ojp+RGVsYXllZFJlcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVwbHk6OnNlbmQpOiBEZWxldGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmg6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzRmFpbGVkVG9MYXVuY2gp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6
OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94
eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpnZXRTdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDbG9z
ZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVN0b3Jh
Z2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9T
dG9yYWdlUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmNyZWF0
ZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNy
ZWF0ZU5ld1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3Jp
cHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdENv
bmZpcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9t
cHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFRvb2xiYXJzQXJlVmlzaWJsZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWVudUJhcklzVmlzaWJsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U3RhdHVzQmFySXNWaXNpYmxlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRXaW5kb3dGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyZWVuVG9Sb290Vmlldyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb1NjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1By
b2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpn
ZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpzeW5jVGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdB
bmREcmF3VG9QREYpOgorCiAyMDE4LTA1LTE3ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAg
PGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEltcGxlbWVudCBhbmQgZW5hYmxl
IEZVTExTQ1JFRU5fQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNp
b24gMjMxOTA5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw3ICsyNDksNyBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlCiAgICAgbG9hZGVyLT5zdGFy
dCgpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwZXJmb3JtU3lu
Y2hyb25vdXNMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRl
cnMsIFJlZjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1T
eW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycywgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBy
ZXBseSkKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVy
OwogICAgIEFTU0VSVCghbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmNvbnRhaW5zKGlkZW50aWZp
ZXIpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDIzMTkwOSkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpOwogCiAgICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmJiwgUmVmPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmKTsKKyAg
ICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMmJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3lu
Y2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBsb2FkUGluZyhOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgcHJlY29ubmVjdFRvKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAJKHJldmlzaW9uIDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTMgKzc0LDEzIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZERhdGEgewotICAgIFN5bmNocm9u
b3VzTG9hZERhdGEoUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQorICAgIFN5
bmNocm9ub3VzTG9hZERhdGEoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSkKICAgICAgICAg
OiBkZWxheWVkUmVwbHkoV1RGTW92ZShyZXBseSkpCiAgICAgewogICAgICAgICBBU1NFUlQoZGVs
YXllZFJlcGx5KTsKICAgICB9CiAgICAgUmVzb3VyY2VSZXF1ZXN0IGN1cnJlbnRSZXF1ZXN0Owot
ICAgIFJlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZv
cm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4gZGVsYXllZFJlcGx5OworICAgIE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9h
ZDo6RGVsYXllZFJlcGx5IGRlbGF5ZWRSZXBseTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiB9OwpAQCAtOTQsMTEgKzk0LDExIEBAIHN0
YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXMKICAgICBpZiAoYnVmZmVyICYm
IGJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAotICAgIGRhdGEuZGVsYXllZFJlcGx5LT5zZW5kKGRh
dGEuZXJyb3IsIGRhdGEucmVzcG9uc2UsIHJlc3BvbnNlQnVmZmVyKTsKKyAgICBkYXRhLmRlbGF5
ZWRSZXBseShkYXRhLmVycm9yLCBkYXRhLnJlc3BvbnNlLCByZXNwb25zZUJ1ZmZlcik7CiAgICAg
ZGF0YS5kZWxheWVkUmVwbHkgPSBudWxscHRyOwogfQogCi1OZXR3b3JrUmVzb3VyY2VMb2FkZXI6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBSZWZQ
dHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hy
b25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYgc3luY2hyb25vdXNSZXBseSkKK05ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5l
Y3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5
bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBseSkKICAgICA6IG1f
cGFyYW1ldGVycyB7IFdURk1vdmUocGFyYW1ldGVycykgfQogICAgICwgbV9jb25uZWN0aW9uIHsg
Y29ubmVjdGlvbiB9CiAgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBwYXJhbWV0ZXJzLmRlZmVyc0xv
YWRpbmcgfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw3ICs2Miw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5hbAogICAgICwg
cHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOZXR3b3JrUmVz
b3VyY2VMb2FkZXI+IGNyZWF0ZShOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBSZWZQdHI8
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25v
dXNMb2FkOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkgPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8
TmV0d29ya1Jlc291cmNlTG9hZGVyPiBjcmVhdGUoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hy
b25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSA9IG51bGxwdHIpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoV1RGTW92ZShwYXJh
bWV0ZXJzKSwgY29ubmVjdGlvbiwgV1RGTW92ZShyZXBseSkpKTsKICAgICB9CkBAIC0xMjMsNyAr
MTIzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya1Jlc291cmNl
TG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmKTsKIAogICAg
IC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0hhbmRsZU1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9IYW5kbGVNZXNzYWdlLmgJKHJldmlzaW9uIDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
IAogbmFtZXNwYWNlIElQQyB7CkBAIC02MiwxNiArNjMsMTYgQEAgdm9pZCBjYWxsTWVtYmVyRnVu
Y3Rpb24oQXJnc1R1cGxlJiYgYXJncwogCiAvLyBEaXNwYXRjaCBmdW5jdGlvbnMgd2l0aCBkZWxh
eWVkIHJlcGx5IGFyZ3VtZW50cy4KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1G
LCB0eXBlbmFtZSBSLCB0eXBlbmFtZSBBcmdzVHVwbGUsIHNpemVfdC4uLiBBcmdzSW5kZXg+Ci12
b2lkIGNhbGxNZW1iZXJGdW5jdGlvbkltcGwoQyogb2JqZWN0LCBNRiBmdW5jdGlvbiwgUmVmPFI+
JiYgZGVsYXllZFJlcGx5LCBBcmdzVHVwbGUmJiBhcmdzLCBzdGQ6OmluZGV4X3NlcXVlbmNlPEFy
Z3NJbmRleC4uLj4pCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1l
IENILCB0eXBlbmFtZSBBcmdzVHVwbGUsIHNpemVfdC4uLiBBcmdzSW5kZXg+Cit2b2lkIGNhbGxN
ZW1iZXJGdW5jdGlvbkltcGwoQyogb2JqZWN0LCBNRiBmdW5jdGlvbiwgQ29tcGxldGlvbkhhbmRs
ZXI8Q0g+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFyZ3NUdXBsZSYmIGFyZ3MsIHN0ZDo6aW5kZXhf
c2VxdWVuY2U8QXJnc0luZGV4Li4uPikKIHsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6
Z2V0PEFyZ3NJbmRleD4oc3RkOjpmb3J3YXJkPEFyZ3NUdXBsZT4oYXJncykpLi4uLCBXVEZNb3Zl
KGRlbGF5ZWRSZXBseSkpOworICAgIChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8QXJnc0lu
ZGV4PihzdGQ6OmZvcndhcmQ8QXJnc1R1cGxlPihhcmdzKSkuLi4sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVu
YW1lIFIsIHR5cGVuYW1lIEFyZ3NUdXBsZSwgdHlwZW5hbWUgQXJnc0luZGljaWVzID0gc3RkOjpt
YWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxBcmdzVHVwbGU+Ojp2YWx1ZT4+Ci12
b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihBcmdzVHVwbGUmJiBhcmdzLCBSZWY8Uj4mJiBkZWxheWVk
UmVwbHksIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCit0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBl
bmFtZSBNRiwgdHlwZW5hbWUgQ0gsIHR5cGVuYW1lIEFyZ3NUdXBsZSwgdHlwZW5hbWUgQXJnc0lu
ZGljaWVzID0gc3RkOjptYWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxBcmdzVHVw
bGU+Ojp2YWx1ZT4+Cit2b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihBcmdzVHVwbGUmJiBhcmdzLCBD
b21wbGV0aW9uSGFuZGxlcjxDSD4mJiBjb21wbGV0aW9uSGFuZGxlciwgQyogb2JqZWN0LCBNRiBm
dW5jdGlvbikKIHsKLSAgICBjYWxsTWVtYmVyRnVuY3Rpb25JbXBsKG9iamVjdCwgZnVuY3Rpb24s
IFdURk1vdmUoZGVsYXllZFJlcGx5KSwgc3RkOjpmb3J3YXJkPEFyZ3NUdXBsZT4oYXJncyksIEFy
Z3NJbmRpY2llcygpKTsKKyAgICBjYWxsTWVtYmVyRnVuY3Rpb25JbXBsKG9iamVjdCwgZnVuY3Rp
b24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdGQ6OmZvcndhcmQ8QXJnc1R1cGxlPihh
cmdzKSwgQXJnc0luZGljaWVzKCkpOwogfQogCiAvLyBEaXNwYXRjaCBmdW5jdGlvbnMgd2l0aCBj
b25uZWN0aW9uIHBhcmFtZXRlciB3aXRoIG5vIHJlcGx5IGFyZ3VtZW50cy4KQEAgLTE3NCw4ICsx
NzUsMTAgQEAgdm9pZCBoYW5kbGVNZXNzYWdlRGVsYXllZChDb25uZWN0aW9uJiBjbwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmPHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseT4gZGVs
YXllZFJlcGx5ID0gYWRvcHRSZWYoKm5ldyB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkoY29ubmVj
dGlvbiwgV1RGTW92ZShyZXBseUVuY29kZXIpKSk7Ci0gICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdU
Rk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShkZWxheWVkUmVwbHkpLCBvYmplY3QsIGZ1bmN0aW9u
KTsKKyAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbcmVw
bHlFbmNvZGVyID0gV1RGTW92ZShyZXBseUVuY29kZXIpLCBjb25uZWN0aW9uID0gbWFrZVJlZihj
b25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKKyAgICAgICAgVDo6c2VuZChX
VEZNb3ZlKHJlcGx5RW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOworICAg
IH07CisgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVuY3Rpb24pOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBJUEMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuY3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTEsMTUgKzkxLDE1IEBAIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6flBsdWdpbkNvbnRyb2xs
ZXIKICAgICAgICAgcmVsZWFzZU5QT2JqZWN0KG1fcGx1Z2luRWxlbWVudE5QT2JqZWN0KTsKIH0K
IAotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnNldEluaXRpYWxpemF0aW9uUmVwbHkoUmVm
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVw
bHk+JiYgcmVwbHkpCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0SW5pdGlhbGl6YXRp
b25SZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVs
YXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgQVNTRVJUKCFtX2luaXRpYWxpemF0aW9uUmVwbHkp
OwogICAgIG1faW5pdGlhbGl6YXRpb25SZXBseSA9IFdURk1vdmUocmVwbHkpOwogfQogCi1SZWZQ
dHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRS
ZXBseT4gUGx1Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpCitN
ZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5
IFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKQogewotICAg
IHJldHVybiBtX2luaXRpYWxpemF0aW9uUmVwbHk7CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2Uo
bV9pbml0aWFsaXphdGlvblJlcGx5LCBudWxscHRyKTsKIH0KIAogYm9vbCBQbHVnaW5Db250cm9s
bGVyUHJveHk6OmluaXRpYWxpemUoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVh
dGlvblBhcmFtZXRlcnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc0LDggKzc0LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0luaXRpYWxpemluZygp
IGNvbnN0IHsgcmV0dXJuIG1faXNJbml0aWFsaXppbmc7IH0KICAgICAKLSAgICB2b2lkIHNldElu
aXRpYWxpemF0aW9uUmVwbHkoUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3Jl
YXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+JiYpOwotICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiB0YWtlSW5pdGlhbGl6
YXRpb25SZXBseSgpOworICAgIHZvaWQgc2V0SW5pdGlhbGl6YXRpb25SZXBseShNZXNzYWdlczo6
V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5JiYpOworICAg
IE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVw
bHkgdGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0
UGFpbnRUaW1lcigpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lz
VmlzaWJsZTsKICAgICBib29sIG1faXNXaW5kb3dWaXNpYmxlOwogCi0gICAgUmVmUHRyPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+IG1f
aW5pdGlhbGl6YXRpb25SZXBseTsKKyAgICBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5IG1faW5pdGlhbGl6YXRpb25SZXBseTsKIAogICAg
IFJlZlB0cjxQbHVnaW4+IG1fcGx1Z2luOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDIzMTkw
OSkKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSwxMSArMTc5LDExIEBAIHZvaWQgV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZENsb3NlKElQQzoKICAgICAgICAgZGVzdHJveVBsdWdpbkNvbnRyb2xsZXJQ
cm94eShwbHVnaW5Db250cm9sbGVyc1tpXSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OmRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgYm9vbCBhc3luY2hy
b25vdXNDcmVhdGlvbkluY29tcGxldGUsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlc3Ryb3lQbHVnaW46OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OmRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgYm9v
bCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29u
bmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgLy8g
V2UgcmV0dXJuIGltbWVkaWF0ZWx5IGZyb20gdGhpcyBzeW5jaHJvbm91cyBJUEMuIFdlIHdhbnQg
dG8gbWFrZSBzdXJlIHRoZSBwbHVnaW4gZGVzdHJ1Y3Rpb24gaXMganVzdCBhYm91dCB0byBzdGFy
dCBzbyBhdWRpbyBwbGF5YmFjawogICAgIC8vIHdpbGwgZmluaXNoIHNvb24gYWZ0ZXIgcmV0dXJu
aW5nLiBIb3dldmVyIHdlIGRvbid0IHdhbnQgdG8gd2FpdCBmb3IgZGVzdHJ1Y3Rpb24gdG8gY29t
cGxldGUgZnVsbHkgYXMgdGhhdCBtYXkgdGFrZSBhIHdoaWxlLgotICAgIHJlcGx5LT5zZW5kKCk7
CisgICAgcmVwbHkoKTsKIAogICAgIC8vIEVuc3VyZSB3ZSBkb24ndCBjbGFtcCBhbnkgdGltZXJz
IGR1cmluZyBkZXN0cnVjdGlvbgogICAgIEFjdGl2aXR5QXNzZXJ0aW9uIGFjdGl2aXR5QXNzZXJ0
aW9uKFBsdWdpblByb2Nlc3M6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25BY3Rpdml0eSgpKTsKQEAg
LTIzMiw3ICsyMzIsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5J
CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKGNv
bnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJhbWV0ZXJzLCBSZWY8TWVz
c2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4m
JiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbihjb25zdCBQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycywgTWVzc2FnZXM6Oldl
YlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQog
ewogICAgIC8vIEVuc3VyZSB3ZSBkb24ndCBjbGFtcCBhbnkgdGltZXJzIGR1cmluZyBpbml0aWFs
aXphdGlvbgogICAgIEFjdGl2aXR5QXNzZXJ0aW9uIGFjdGl2aXR5QXNzZXJ0aW9uKFBsdWdpblBy
b2Nlc3M6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25BY3Rpdml0eSgpKTsKQEAgLTI0OSw5ICsyNDks
OSBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4oCiAgICAgICAgIAog
ICAgICAgICAvLyBJZiBpdHMgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGUgdGhlbiB3ZSBuZWVk
IHRvIHJlc3BvbmQgdG8gdGhpcyBtZXNzYWdlIHdpdGggdGhlIGNvcnJlY3QgaW5mb3JtYXRpb24g
YWJvdXQgaXRzIGNyZWF0aW9uLgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICByZXBseS0+
c2VuZCh0cnVlLCBwbHVnaW5Db250cm9sbGVyUHJveHktPndhbnRzV2hlZWxFdmVudHMoKSwgcGx1
Z2luQ29udHJvbGxlclByb3h5LT5yZW1vdGVMYXllckNsaWVudElEKCkpOworICAgICAgICByZXBs
eSh0cnVlLCBwbHVnaW5Db250cm9sbGVyUHJveHktPndhbnRzV2hlZWxFdmVudHMoKSwgcGx1Z2lu
Q29udHJvbGxlclByb3h5LT5yZW1vdGVMYXllckNsaWVudElEKCkpOwogI2Vsc2UKLSAgICAgICAg
cmVwbHktPnNlbmQodHJ1ZSwgcGx1Z2luQ29udHJvbGxlclByb3h5LT53YW50c1doZWVsRXZlbnRz
KCksIDApOworICAgICAgICByZXBseSh0cnVlLCBwbHVnaW5Db250cm9sbGVyUHJveHktPndhbnRz
V2hlZWxFdmVudHMoKSwgMCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI2
Niw3ICsyNjYsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4oCiAg
ICAgdWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCA9IDA7CiAgICAgY3JlYXRlUGx1Z2luSW50
ZXJuYWwoY3JlYXRpb25QYXJhbWV0ZXJzLCByZXN1bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90
ZUxheWVyQ2xpZW50SUQpOwogICAgIAotICAgIHJlcGx5LT5zZW5kKHJlc3VsdCwgd2FudHNXaGVl
bEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CisgICAgcmVwbHkocmVzdWx0LCB3YW50c1do
ZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzQ29u
bmVjdGlvbjo6Y3JlYXRlUGx1Z2luQXN5bmNocm9ub3VzbHkoY29uc3QgUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMpCkBAIC0zMTEsOCArMzExLDggQEAgdm9pZCBX
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luQQogICAgIC8vIHN5bmNocm9ub3VzIHJl
cGx5IGluc3RlYWQgb2Ygc2VuZGluZyB0aGUgYXN5bmNocm9ub3VzIHJlcGx5LgogICAgIFBsdWdp
bkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxlclByb3h5ID0gbV9wbHVnaW5Db250cm9s
bGVycy5nZXQoY3JlYXRpb25QYXJhbWV0ZXJzLnBsdWdpbkluc3RhbmNlSUQpOwogICAgIEFTU0VS
VChwbHVnaW5Db250cm9sbGVyUHJveHkpOwotICAgIGlmIChSZWZQdHI8TWVzc2FnZXM6OldlYlBy
b2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4gZGVsYXllZFN5bmNS
ZXBseSA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKSkg
ewotICAgICAgICBkZWxheWVkU3luY1JlcGx5LT5zZW5kKHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50
cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CisgICAgaWYgKGF1dG8gZGVsYXllZFN5bmNSZXBseSA9
IHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKSkgeworICAg
ICAgICBkZWxheWVkU3luY1JlcGx5KHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5
ZXJDbGllbnRJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lv
biAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjksOSArNjksOSBAQCBwcml2YXRlOgogICAgIC8v
IE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKLSAgICB2b2lk
IGNyZWF0ZVBsdWdpbihjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmLCBSZWY8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4mJik7
CisgICAgdm9pZCBjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiwg
TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBs
eSYmKTsKICAgICB2b2lkIGNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KGNvbnN0IFBsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycyYpOwotICAgIHZvaWQgZGVzdHJveVBsdWdpbih1aW50NjRfdCBwbHVn
aW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSwgUmVmPE1l
c3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6RGVsYXllZFJlcGx5
PiYmKTsKKyAgICB2b2lkIGRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwg
Ym9vbCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUsIE1lc3NhZ2VzOjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6RGVsYXllZFJlcGx5JiYpOwogICAgIAogICAgIHZv
aWQgY3JlYXRlUGx1Z2luSW50ZXJuYWwoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiwg
Ym9vbCYgcmVzdWx0LCBib29sJiB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCYgcmVtb3RlTGF5
ZXJDbGllbnRJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5
TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAJKHJldmlz
aW9uIDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2Fn
ZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNDMgKzU5LDE1IEBA
IG5hbWVzcGFjZSBNZXNzYWdlcyB7CiAKIG5hbWVzcGFjZSBXZWJQYWdlIHsKIAotR2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJlcGx5KFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5j
b2RlcikKLSAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQotICAgICwgbV9l
bmNvZGVyKFdURk1vdmUoZW5jb2RlcikpCit2b2lkIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
OjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVj
dGlvbkhhbmRsZSkKIHsKKyAgICAqZW5jb2RlciA8PCBjb25uZWN0aW9uSGFuZGxlOworICAgIGNv
bm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKIH0KIAotR2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6fkRlbGF5ZWRSZXBseSgpCit2b2lkIFRl
c3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
JiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7Ci0gICAgQVNTRVJUKCFt
X2Nvbm5lY3Rpb24pOwotfQotCi1ib29sIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk6OnNlbmQoY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25I
YW5kbGUpCi17Ci0gICAgQVNTRVJUKG1fZW5jb2Rlcik7Ci0gICAgKm1fZW5jb2RlciA8PCBjb25u
ZWN0aW9uSGFuZGxlOwotICAgIGJvb2wgX3Jlc3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNS
ZXBseShXVEZNb3ZlKG1fZW5jb2RlcikpOwotICAgIG1fY29ubmVjdGlvbiA9IG51bGxwdHI7Ci0g
ICAgcmV0dXJuIF9yZXN1bHQ7Ci19Ci0KLVRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OkRlbGF5ZWRS
ZXBseTo6RGVsYXllZFJlcGx5KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5jb2RlcikKLSAgICA6IG1fY29ubmVjdGlvbihX
VEZNb3ZlKGNvbm5lY3Rpb24pKQotICAgICwgbV9lbmNvZGVyKFdURk1vdmUoZW5jb2RlcikpCi17
Ci19Ci0KLVRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OkRlbGF5ZWRSZXBseTo6fkRlbGF5ZWRSZXBs
eSgpCi17Ci0gICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOwotfQotCi1ib29sIFRlc3RNdWx0aXBs
ZUF0dHJpYnV0ZXM6OkRlbGF5ZWRSZXBseTo6c2VuZCgpCi17Ci0gICAgQVNTRVJUKG1fZW5jb2Rl
cik7Ci0gICAgYm9vbCBfcmVzdWx0ID0gbV9jb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KFdURk1v
dmUobV9lbmNvZGVyKSk7Ci0gICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKLSAgICByZXR1cm4g
X3Jlc3VsdDsKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzLWV4cGVjdGVkLmgJKHJldmlzaW9u
IDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXMt
ZXhwZWN0ZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzU4LDE3ICszNTgsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSgiR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24iKTsgfQogICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IHRydWU7CiAKLSAgICBzdHJ1Y3QgRGVsYXllZFJlcGx5IDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERlbGF5ZWRSZXBseT4gewotICAgICAgICBEZWxheWVk
UmVwbHkoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4pOwotICAgICAgICB+RGVsYXllZFJlcGx5KCk7Ci0KLSAgICAgICAgYm9vbCBzZW5kKGNvbnN0
IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKTsKLQotICAgIHByaXZh
dGU6Ci0gICAgICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gbV9lbmNvZGVyOwotICAgIH07Ci0KKyAg
ICB1c2luZyBEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKT47CisgICAgc3RhdGljIHZvaWQg
c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk7CiAgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJj4gUmVwbHk7CiAgICAgZXhw
bGljaXQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRo
KQogICAgICAgICA6IG1fYXJndW1lbnRzKHBsdWdpblBhdGgpCkBAIC0zOTIsMTcgKzM4Myw4IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzIik7IH0KICAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwogCi0gICAgc3RydWN0IERlbGF5ZWRSZXBs
eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEZWxheWVkUmVwbHk+IHsKLSAgICAgICAg
RGVsYXllZFJlcGx5KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+KTsKLSAgICAgICAgfkRlbGF5ZWRSZXBseSgpOwotCi0gICAgICAgIGJvb2wgc2Vu
ZCgpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9j
b25uZWN0aW9uOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBtX2VuY29k
ZXI7Ci0gICAgfTsKLQorICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT47CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBSZXBs
eTsKICAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CiAgICAgewpJbmRleDog
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2Vp
dmVyLWV4cGVjdGVkLmNwcAkocmV2aXNpb24gMjMxOTA5KQorKysgU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01OSw0MyArNTksMTUgQEAgbmFtZXNwYWNlIE1lc3NhZ2VzIHsKIAogbmFtZXNwYWNlIFdlYlBh
Z2UgewogCi1HZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5OjpEZWxheWVk
UmVwbHkoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiBlbmNvZGVyKQotICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVj
dGlvbikpCi0gICAgLCBtX2VuY29kZXIoV1RGTW92ZShlbmNvZGVyKSkKK3ZvaWQgR2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBl
bmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IElQQzo6Q29ubmVjdGlv
bjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKQogeworICAgICplbmNvZGVyIDw8IGNvbm5lY3Rp
b25IYW5kbGU7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rlcikp
OwogfQogCi1HZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Ojp+RGVsYXll
ZFJlcGx5KCkKK3ZvaWQgVGVzdE11bHRpcGxlQXR0cmlidXRlczo6c2VuZChzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikK
IHsKLSAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7Ci19Ci0KLWJvb2wgR2V0UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6c2VuZChjb25zdCBJUEM6OkNvbm5lY3Rpb246Okhh
bmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKLXsKLSAgICBBU1NFUlQobV9lbmNvZGVyKTsKLSAgICAq
bV9lbmNvZGVyIDw8IGNvbm5lY3Rpb25IYW5kbGU7Ci0gICAgYm9vbCBfcmVzdWx0ID0gbV9jb25u
ZWN0aW9uLT5zZW5kU3luY1JlcGx5KFdURk1vdmUobV9lbmNvZGVyKSk7Ci0gICAgbV9jb25uZWN0
aW9uID0gbnVsbHB0cjsKLSAgICByZXR1cm4gX3Jlc3VsdDsKLX0KLQotVGVzdE11bHRpcGxlQXR0
cmlidXRlczo6RGVsYXllZFJlcGx5OjpEZWxheWVkUmVwbHkoUmVmPElQQzo6Q29ubmVjdGlvbj4m
JiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVyKQotICAg
IDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCi0gICAgLCBtX2VuY29kZXIoV1RG
TW92ZShlbmNvZGVyKSkKLXsKLX0KLQotVGVzdE11bHRpcGxlQXR0cmlidXRlczo6RGVsYXllZFJl
cGx5Ojp+RGVsYXllZFJlcGx5KCkKLXsKLSAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7Ci19Ci0K
LWJvb2wgVGVzdE11bHRpcGxlQXR0cmlidXRlczo6RGVsYXllZFJlcGx5OjpzZW5kKCkKLXsKLSAg
ICBBU1NFUlQobV9lbmNvZGVyKTsKLSAgICBib29sIF9yZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNl
bmRTeW5jUmVwbHkoV1RGTW92ZShtX2VuY29kZXIpKTsKLSAgICBtX2Nvbm5lY3Rpb24gPSBudWxs
cHRyOwotICAgIHJldHVybiBfcmVzdWx0OworICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShX
VEZNb3ZlKGVuY29kZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQpJbmRleDogU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlcy1leHBlY3RlZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaAkocmV2
aXNpb24gMjMxOTA5KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlcy1l
eHBlY3RlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTgsMTcgKzM1OCw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5n
UmVmZXJlbmNlKCJHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiIpOyB9CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAotICAgIHN0cnVjdCBEZWxheWVkUmVwbHkgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVsYXllZFJlcGx5PiB7Ci0gICAgICAgIERlbGF5ZWRS
ZXBseShSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
Pik7Ci0gICAgICAgIH5EZWxheWVkUmVwbHkoKTsKLQotICAgICAgICBib29sIHNlbmQoY29uc3Qg
SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpOwotCi0gICAgcHJpdmF0
ZToKLSAgICAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBtX2VuY29kZXI7Ci0gICAgfTsKLQorICAg
IHVzaW5nIERlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpD
b25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpPjsKKyAgICBzdGF0aWMgdm9pZCBz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKTsKICAgICB0eXBl
ZGVmIHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmPiBSZXBseTsKICAgICBleHBs
aWNpdCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgp
CiAgICAgICAgIDogbV9hcmd1bWVudHMocGx1Z2luUGF0aCkKQEAgLTM5MiwxNyArMzgzLDggQEAg
cHVibGljOgogICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMiKTsgfQogICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CiAKLSAgICBzdHJ1Y3QgRGVsYXllZFJlcGx5
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERlbGF5ZWRSZXBseT4gewotICAgICAgICBE
ZWxheWVkUmVwbHkoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4pOwotICAgICAgICB+RGVsYXllZFJlcGx5KCk7Ci0KLSAgICAgICAgYm9vbCBzZW5k
KCk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb247Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IG1fZW5jb2Rl
cjsKLSAgICB9OwotCisgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPjsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYpOwogICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IFJlcGx5
OwogICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKICAgICB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHJldmlzaW9uIDIzMTkwOSkK
KysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTExOCwxNiArMTE4LDE0IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlv
bihtZXNzYWcKICAgICBpZiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZToKICAgICAg
ICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKERFTEFZRURfQVRUUklCVVRFKToKICAgICAgICAg
ICAgIHNlbmRfcGFyYW1ldGVycyA9IFsoZnVuY3Rpb25fcGFyYW1ldGVyX3R5cGUoeC50eXBlLCB4
LmtpbmQpLCB4Lm5hbWUpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10KLSAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdHJ1Y3QgRGVsYXllZFJlcGx5IDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPERlbGF5ZWRSZXBseT4ge1xuJykKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICAgICAgRGVsYXllZFJlcGx5KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+KTtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgICAgIH5EZWxheWVkUmVwbHkoKTtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCdcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIGJvb2wgc2VuZCgl
cyk7XG4nICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNd
KSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBwcml2YXRlOlxuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uO1xuJykKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gbV9l
bmNvZGVyO1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB9O1xuXG4nKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoJykKKyAgICAgICAgICAgIGlmIGxlbihzZW5kX3BhcmFtZXRlcnMpOgor
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyVzJyAlICcsICcuam9pbihbJyAnLmpvaW4o
eCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0ZXJzXSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCcpPjtcbicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZvaWQgc2Vu
ZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mJykKKyAg
ICAgICAgICAgIGlmIGxlbihzZW5kX3BhcmFtZXRlcnMpOgorICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJywgJXMnICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3Bh
cmFtZXRlcnNdKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyk7XG4nKQogCiAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICB0eXBlZGVmICVzIFJlcGx5O1xuJyAlIHJlcGx5X3R5cGUobWVz
c2FnZSkpCiAKQEAgLTUzNiwyNCArNTM0LDEyIEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRs
ZXIoZmlsZSk6CiAgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcblxuJyAlIG1lc3NhZ2UuY29uZGl0aW9uKQogCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCclczo6RGVsYXllZFJlcGx5OjpEZWxheWVkUmVwbHko
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiBlbmNvZGVyKVxuJyAlIG1lc3NhZ2UubmFtZSkKLSAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKVxuJykKLSAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAsIG1fZW5jb2RlcihXVEZNb3ZlKGVuY29kZXIpKVxu
JykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCd9XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnJXM6OkRlbGF5ZWRSZXBseTo6fkRlbGF5ZWRSZXBseSgpXG4nICUg
bWVzc2FnZS5uYW1lKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7XG4nKQotICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xu
JykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ2Jvb2wgJXM6OkRlbGF5ZWRSZXBseTo6c2Vu
ZCglcylcbicgJSAobWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oWycgJy5qb2luKHgpIGZvciB4IGlu
IHNlbmRfcGFyYW1ldGVyc10pKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgQVNTRVJUKG1fZW5jb2Rlcik7XG4nKQotICAg
ICAgICAgICAgcmVzdWx0ICs9IFsnICAgICptX2VuY29kZXIgPDwgJXM7XG4nICUgeC5uYW1lIGZv
ciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10KLSAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAgICBib29sIF9yZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoV1RGTW92
ZShtX2VuY29kZXIpKTtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgbV9jb25u
ZWN0aW9uID0gbnVsbHB0cjtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0
dXJuIF9yZXN1bHQ7XG4nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6c2Vu
ZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbicgJSAobWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgIGlmIGxlbihzZW5k
X3BhcmFtZXRlcnMpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJXMnICUgJywg
Jy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNdKSkKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJylcbntcbicpCisgICAgICAgICAgICByZXN1bHQgKz0gWycgICAg
KmVuY29kZXIgPDwgJXM7XG4nICUgeC5uYW1lIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1l
dGVyc10KKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjb25uZWN0aW9uLnNlbmRTeW5j
UmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
fVxuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzgsNyArMjM4LDcgQEAgcHVibGljOgogICAgICAgICB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNh
Z2U7CiAgICAgICAgIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlOwogICAgICAgICB1aW50
NjRfdCBleHBlY3RlZFVzYWdlOwotICAgICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+IHJlcGx5OworICAgICAgICBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBs
eSByZXBseTsKICAgICB9OwogCiAgICAgc3RhdGljIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29y
ZHMmIHNpbmdsZXRvbigpOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVjb3JkPiBjcmVhdGVSZWNvcmQodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9y
aWdpbklkZW50aWZpZXIsCiAgICAgICAgIFN0cmluZyBkYXRhYmFzZU5hbWUsIFN0cmluZyBkaXNw
bGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLAogICAgICAgICB1aW50NjRfdCBjdXJyZW50
T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBl
Y3RlZFVzYWdlLCAKLSAgICAgICAgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVk
RGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICAgICAgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHkmJik7CiAKICAgICB2
b2lkIGFkZChzdGQ6OnVuaXF1ZV9wdHI8UmVjb3JkPik7CiAgICAgYm9vbCBhcmVCZWluZ1Byb2Nl
c3NlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXJyZW50UmVjb3JkOyB9CkBAIC0yNjksNyArMjY5
LDcgQEAgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcyYgRXhjZWVkZWREYQogc3RkOjp1bmlx
dWVfcHRyPEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OlJlY29yZD4gRXhjZWVkZWREYXRh
YmFzZVF1b3RhUmVjb3Jkczo6Y3JlYXRlUmVjb3JkKAogICAgIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBvcmlnaW5JZGVudGlmaWVyLCBTdHJpbmcgZGF0YWJhc2VOYW1lLCBTdHJpbmcgZGlzcGxh
eU5hbWUsCiAgICAgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2lu
VXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLAotICAgIHVpbnQ2NF90IGV4cGVj
dGVkVXNhZ2UsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVv
dGE6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKKyAgICB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQogewogICAgIGF1dG8gcmVjb3JkID0gc3RkOjptYWtlX3VuaXF1ZTxSZWNvcmQ+
KCk7CiAgICAgcmVjb3JkLT5mcmFtZUlEID0gZnJhbWVJRDsKQEAgLTI0NDQsNyArMjQ0NCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KICAgICB9CiAKICAgICBp
ZiAoYXV0byBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5ID0gV1RGTW92ZShtX3N5bmNO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkpKSB7Ci0gICAgICAgIHN5bmNOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5UmVwbHktPnNlbmQobmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25J
RCgpIDogMCwgYWN0aW9uLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwor
ICAgICAgICBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5KG5hdmlnYXRpb24gPyBuYXZp
Z2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGFjdGlvbiwgZG93bmxvYWRJRCwgV1RGTW92ZSh3
ZWJzaXRlUG9saWNpZXMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDAzMyw3ICs0
MDMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgIG1f
c2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGZh
bHNlOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRp
b25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEm
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgQVNTRVJUKCFtX3N5bmNOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5UmVwbHkpOwogICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseSA9
IFdURk1vdmUocmVwbHkpOwpAQCAtNDA0Miw3ICs0MDQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYQogCiAgICAgLy8gSWYgdGhlIGNsaWVudCBkaWQgbm90IHJl
c3BvbmQgc3luY2hyb25vdXNseSwgcHJvY2VlZCB3aXRoIHRoZSBsb2FkLgogICAgIGlmIChhdXRv
IHN5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkgPSBXVEZNb3ZlKG1fc3luY05hdmlnYXRp
b25BY3Rpb25Qb2xpY3lSZXBseSkpCi0gICAgICAgIHN5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
UmVwbHktPnNlbmQobmF2aWdhdGlvbklELCBQb2xpY3lBY3Rpb246OlVzZSwgeyB9LCB7IH0pOwor
ICAgICAgICBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5KG5hdmlnYXRpb25JRCwgUG9s
aWN5QWN0aW9uOjpVc2UsIHsgfSwgeyB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCkBAIC00MjA1LDIwICs0MjA1LDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRh
dGVIaXN0b3J5VGl0bGUKIAogLy8gVUlDbGllbnQKIAotdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0
ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2lu
ZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1Bh
Z2U6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQ
YWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdpbmRvd0Zl
YXR1cmVzJiYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5
ZWRSZXBseSYmIHJlcGx5KQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLT53ZWJGcmFt
ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkpOwogICAgIGF1dG8gb3JpZ2luYXRp
bmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YSwgbV9wcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFnZUlEKSk7CiAKICAgICBhdXRv
IG1haW5GcmFtZVVSTCA9IG1fbWFpbkZyYW1lLT51cmwoKTsKIAotICAgIG1fdWlDbGllbnQtPmNy
ZWF0ZU5ld1BhZ2UoKnRoaXMsIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm8pLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHdpbmRvd0ZlYXR1cmVzKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0
aW9uRGF0YSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmUHRyPFdlYlBhZ2VQcm94eT4odGhp
cyksIG1haW5GcmFtZVVSTCwgcmVxdWVzdCwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oUmVmUHRy
PFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkgeworICAgIG1fdWlDbGllbnQtPmNyZWF0ZU5ld1BhZ2Uo
KnRoaXMsIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm8pLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHdpbmRvd0ZlYXR1cmVzKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1haW5GcmFtZVVSTCwgcmVxdWVz
dCwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkg
ewogICAgICAgICBpZiAoIW5ld1BhZ2UpIHsKLSAgICAgICAgICAgIHJlcGx5LT5zZW5kKDAsIHsg
fSk7CisgICAgICAgICAgICByZXBseSgwLCB7IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgcmVwbHktPnNlbmQobmV3UGFnZS0+cGFnZUlEKCksIG5ld1BhZ2Ut
PmNyZWF0aW9uUGFyYW1ldGVycygpKTsKKyAgICAgICAgcmVwbHkobmV3UGFnZS0+cGFnZUlEKCks
IG5ld1BhZ2UtPmNyZWF0aW9uUGFyYW1ldGVycygpKTsKIAogICAgICAgICBXZWJzaXRlRGF0YVN0
b3JlOjpjbG9uZVNlc3Npb25EYXRhKCp0aGlzLCAqbmV3UGFnZSk7CiAgICAgICAgIG5ld1BhZ2Ut
Pm1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9
IGhvc3RzQXJlRXF1YWwoVVJMKFBhcnNlZFVSTFN0cmluZywgbWFpbkZyYW1lVVJMKSwgcmVxdWVz
dC51cmwoKSk7CkBAIC00MjU0LDcgKzQyNTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2VQ
YWdlKGJvb2wgc3RvcFJlCiAgICAgbV91aUNsaWVudC0+Y2xvc2UodGhpcyk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVk
UmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNj
cmlwdEFsZXJ0OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBXZWJGcmFtZVByb3h5KiBm
cmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhm
cmFtZSk7CkBAIC00MjY2LDEyICs0MjY2LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0QWxlcnQodWkKICAgICAgICAgaWYgKGF1dG8qIGF1dG9tYXRpb25TZXNzaW9uID0gcHJv
Y2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKICAgICAgICAgICAgIGF1
dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAgIH0K
LSAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0QWxlcnQodGhpcywgbWVzc2FnZSwgZnJhbWUs
IHNlY3VyaXR5T3JpZ2luLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gewotICAgICAgICByZXBs
eS0+c2VuZCgpOwotICAgIH0pOworICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRBbGVydCh0
aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUocmVwbHkpKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25m
aXJtOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNj
cmlwdENvbmZpcm0odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAg
V2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAg
IE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwpAQCAtNDI4NCwxMiArNDI4MiwxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oCiAgICAgICAgICAgICBhdXRvbWF0aW9uU2Vz
c2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0aGlzKTsKICAgICB9CiAKLSAgICBtX3Vp
Q2xpZW50LT5ydW5KYXZhU2NyaXB0Q29uZmlybSh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJp
dHlPcmlnaW4sIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShib29sIHJlc3VsdCkgewotICAgICAg
ICByZXBseS0+c2VuZChyZXN1bHQpOwotICAgIH0pOworICAgIG1fdWlDbGllbnQtPnJ1bkphdmFT
Y3JpcHRDb25maXJtKHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgV1RGTW92
ZShyZXBseSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdFByb21wdCh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBSZWY8
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6RGVsYXllZFJlcGx5
PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9tcHQodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6RGVsYXllZFJlcGx5JiYgcmVwbHkp
CiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1l
SUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwpAQCAtNDMwMiw5ICs0Mjk4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9tcHQodQogICAgICAgICAgICAgYXV0b21h
dGlvblNlc3Npb24tPndpbGxTaG93SmF2YVNjcmlwdERpYWxvZygqdGhpcyk7CiAgICAgfQogCi0g
ICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdFByb21wdCh0aGlzLCBtZXNzYWdlLCBkZWZhdWx0
VmFsdWUsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKGNv
bnN0IFN0cmluZyYgcmVzdWx0KSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKHJlc3VsdCk7Ci0gICAg
fSk7CisgICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdFByb21wdCh0aGlzLCBtZXNzYWdlLCBk
ZWZhdWx0VmFsdWUsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgV1RGTW92ZShyZXBseSkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCkBA
IC00MzcyLDI0ICs0MzY2LDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1bmF2YWlsYWJsZVBsdWdp
bkJ1dHQKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2lmIEVOQUJM
RShXRUJHTCkKLXZvaWQgV2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChVUkwmJiB1cmws
IFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJl
cGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKFVSTCYm
IHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQogewogICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKICAgICAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT53ZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCwgW3JlcGx5ID0g
V1RGTW92ZShyZXBseSldKFdlYkdMTG9hZFBvbGljeSBwb2xpY3kpIHsKLSAgICAgICAgICAgIHJl
cGx5LT5zZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKKyAgICAgICAgICAgIHJl
cGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKICAgICAgICAgfSk7CiAgICAgfSBl
bHNlCi0gICAgICAgIHJlcGx5LT5zZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNs
aWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwpKSk7CisgICAgICAgIHJlcGx5KHN0YXRp
Y19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1
cmwpKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwo
VVJMJiYgdXJsLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5
Rm9yVVJMOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVz
b2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBpZiAo
bV9uYXZpZ2F0aW9uQ2xpZW50KSB7CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cmVzb2x2
ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oV2Vi
R0xMb2FkUG9saWN5IHBvbGljeSkgewotICAgICAgICAgICAgcmVwbHktPnNlbmQoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHBvbGljeSkpOworICAgICAgICAgICAgcmVwbHkoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHBvbGljeSkpOwogICAgICAgICB9KTsKICAgICB9IGVsc2UKLSAgICAgICAgcmVwbHkt
PnNlbmQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fbG9hZGVyQ2xpZW50LT5yZXNvbHZlV2ViR0xM
b2FkUG9saWN5KCp0aGlzLCB1cmwpKSk7CisgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQz
Ml90PihtX2xvYWRlckNsaWVudC0+cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSkp
OwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApAQCAtNDM5OCwxMSArNDM5Miw5IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRUb29sYmFyc0FyZVZpc2libGUKICAgICBtX3VpQ2xpZW50LT5z
ZXRUb29sYmFyc0FyZVZpc2libGUoKnRoaXMsIHRvb2xiYXJzQXJlVmlzaWJsZSk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpnZXRUb29sYmFyc0FyZVZpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJsZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQor
dm9pZCBXZWJQYWdlUHJveHk6OmdldFRvb2xiYXJzQXJlVmlzaWJsZShNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGU6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewot
ICAgIG1fdWlDbGllbnQtPnRvb2xiYXJzQXJlVmlzaWJsZSgqdGhpcywgW3JlcGx5ID0gV1RGTW92
ZShyZXBseSldKGJvb2wgdmlzaWJsZSkgewotICAgICAgICByZXBseS0+c2VuZCh2aXNpYmxlKTsK
LSAgICB9KTsKKyAgICBtX3VpQ2xpZW50LT50b29sYmFyc0FyZVZpc2libGUoKnRoaXMsIFdURk1v
dmUocmVwbHkpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lbnVCYXJJc1Zpc2libGUo
Ym9vbCBtZW51QmFySXNWaXNpYmxlKQpAQCAtNDQxMCwxMSArNDQwMiw5IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRNZW51QmFySXNWaXNpYmxlKGIKICAgICBtX3VpQ2xpZW50LT5zZXRNZW51QmFy
SXNWaXNpYmxlKCp0aGlzLCBtZW51QmFySXNWaXNpYmxlKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OmdldE1lbnVCYXJJc1Zpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1l
bnVCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpnZXRNZW51QmFySXNWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJ
c1Zpc2libGU6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIG1fdWlDbGllbnQtPm1lbnVC
YXJJc1Zpc2libGUoKnRoaXMsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAoYm9vbCB2aXNpYmxl
KSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKHZpc2libGUpOwotICAgIH0pOworICAgIG1fdWlDbGll
bnQtPm1lbnVCYXJJc1Zpc2libGUoKnRoaXMsIFdURk1vdmUocmVwbHkpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFN0YXR1c0JhcklzVmlzaWJsZShib29sIHN0YXR1c0JhcklzVmlzaWJs
ZSkKQEAgLTQ0MjIsMTEgKzQ0MTIsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3RhdHVzQmFy
SXNWaXNpYmxlCiAgICAgbV91aUNsaWVudC0+c2V0U3RhdHVzQmFySXNWaXNpYmxlKCp0aGlzLCBz
dGF0dXNCYXJJc1Zpc2libGUpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U3RhdHVzQmFy
SXNWaXNpYmxlKFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2li
bGU6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRTdGF0dXNC
YXJJc1Zpc2libGUoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3RhdHVzQmFySXNWaXNpYmxl
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBtX3VpQ2xpZW50LT5zdGF0dXNCYXJJc1Zp
c2libGUoKnRoaXMsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAoYm9vbCB2aXNpYmxlKSB7Ci0g
ICAgICAgIHJlcGx5LT5zZW5kKHZpc2libGUpOwotICAgIH0pOworICAgIG1fdWlDbGllbnQtPnN0
YXR1c0JhcklzVmlzaWJsZSgqdGhpcywgV1RGTW92ZShyZXBseSkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0SXNSZXNpemFibGUoYm9vbCBpc1Jlc2l6YWJsZSkKQEAgLTQ0MzksMTAgKzQ0
MjcsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFdpbmRvd0ZyYW1lKGNvbnN0IAogICAgIG1f
dWlDbGllbnQtPnNldFdpbmRvd0ZyYW1lKCp0aGlzLCBtX3BhZ2VDbGllbnQuY29udmVydFRvRGV2
aWNlU3BhY2UobmV3V2luZG93RnJhbWUpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldFdp
bmRvd0ZyYW1lKFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRXaW5kb3dGcmFtZTo6RGVs
YXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmdldFdpbmRvd0ZyYW1lKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lOjpEZWxheWVkUmVwbHkmJiByZXBs
eSkKIHsKICAgICBtX3VpQ2xpZW50LT53aW5kb3dGcmFtZSgqdGhpcywgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKEZsb2F0UmVj
dCBmcmFtZSkgewotICAgICAgICByZXBseS0+c2VuZChtX3BhZ2VDbGllbnQuY29udmVydFRvVXNl
clNwYWNlKGZyYW1lKSk7CisgICAgICAgIHJlcGx5KG1fcGFnZUNsaWVudC5jb252ZXJ0VG9Vc2Vy
U3BhY2UoZnJhbWUpKTsKICAgICB9KTsKIH0KIApAQCAtNDQ1MywxNCArNDQ0MSwxNCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0V2luZG93RnJhbWVXaXRoQ2FsCiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBzY3JlZW5Qb2lu
dCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmVlblRvUm9vdFZpZXc6OkRlbGF5ZWRS
ZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JiBzY3JlZW5Qb2ludCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyZWVuVG9S
b290Vmlldzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgcmVwbHktPnNlbmQobV9wYWdl
Q2xpZW50LnNjcmVlblRvUm9vdFZpZXcoc2NyZWVuUG9pbnQpKTsKKyAgICByZXBseShtX3BhZ2VD
bGllbnQuc2NyZWVuVG9Sb290VmlldyhzY3JlZW5Qb2ludCkpOwogfQogICAgIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnJvb3RWaWV3VG9TY3JlZW4oY29uc3QgSW50UmVjdCYgdmlld1JlY3QsIFJlZjxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVuOjpEZWxheWVkUmVwbHk+JiYg
cmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb1NjcmVlbihjb25zdCBJbnRSZWN0
JiB2aWV3UmVjdCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZpZXdUb1NjcmVlbjo6RGVs
YXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgcmVwbHktPnNlbmQobV9wYWdlQ2xpZW50LnJvb3RW
aWV3VG9TY3JlZW4odmlld1JlY3QpKTsKKyAgICByZXBseShtX3BhZ2VDbGllbnQucm9vdFZpZXdU
b1NjcmVlbih2aWV3UmVjdCkpOwogfQogICAgIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTQ0NzUs
NyArNDQ2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpyb290Vmlld1RvQWNjZXNzaWJpbGkKIH0K
ICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5PiByZXBseSkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWw6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1l
ID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1l
KTsKQEAgLTQ0ODgsNyArNDQ3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxv
YWRDb25maXIKICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3Jp
cHREaWFsb2coKnRoaXMpOwogICAgIH0KIAotICAgIG1fdWlDbGllbnQtPnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbCh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFtyZXBs
eV0oYm9vbCByZXN1bHQpIHsgcmVwbHktPnNlbmQocmVzdWx0KTsgfSk7CisgICAgbV91aUNsaWVu
dC0+cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBzZWN1
cml0eU9yaWdpbiwgV1RGTW92ZShyZXBseSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cikK
QEAgLTYyMDYsNyArNjE5NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVu
dGljYXQKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUluRnJhbWUoKnRoaXMsICpmcmFtZSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0
KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJl
bnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0
YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9p
ZCBXZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1l
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2
NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVp
bnQ2NF90IGV4cGVjdGVkVXNhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0
YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgRXhjZWVkZWREYXRhYmFz
ZVF1b3RhUmVjb3JkcyYgcmVjb3JkcyA9IEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OnNp
bmdsZXRvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNv
cmRzOjpSZWNvcmQ+IG5ld1JlY29yZCA9IHJlY29yZHMuY3JlYXRlUmVjb3JkKGZyYW1lSUQsCkBA
IC02MjIyLDIxICs2MjEwLDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNl
UXVvdGEKICAgICAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1l
KHJlY29yZC0+ZnJhbWVJRCk7CiAgICAgICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAg
ICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHJl
Y29yZC0+b3JpZ2luSWRlbnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgICAgICBhdXRv
IGN1cnJlbnRSZXBseSA9IHJlY29yZC0+cmVwbHk7Ci0gICAgICAgIG1fdWlDbGllbnQtPmV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YSh0aGlzLCBmcmFtZSwgb3JpZ2luLmdldCgpLAotICAgICAgICAgICAg
cmVjb3JkLT5kYXRhYmFzZU5hbWUsIHJlY29yZC0+ZGlzcGxheU5hbWUsIHJlY29yZC0+Y3VycmVu
dFF1b3RhLAotICAgICAgICAgICAgcmVjb3JkLT5jdXJyZW50T3JpZ2luVXNhZ2UsIHJlY29yZC0+
Y3VycmVudERhdGFiYXNlVXNhZ2UsIHJlY29yZC0+ZXhwZWN0ZWRVc2FnZSwKLSAgICAgICAgICAg
IFtjdXJyZW50UmVwbHldKHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSkgeyBjdXJyZW50UmVw
bHktPnNlbmQobmV3UXVvdGEpOyB9KTsKLQorICAgICAgICBhdXRvIG9yaWdpbiA9IEFQSTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50
aWZpZXIocmVjb3JkLT5vcmlnaW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAg
ICAgIG1fdWlDbGllbnQtPmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh0aGlzLCBmcmFtZSwgb3JpZ2lu
LnB0cigpLCByZWNvcmQtPmRhdGFiYXNlTmFtZSwgcmVjb3JkLT5kaXNwbGF5TmFtZSwgcmVjb3Jk
LT5jdXJyZW50UXVvdGEsIHJlY29yZC0+Y3VycmVudE9yaWdpblVzYWdlLCByZWNvcmQtPmN1cnJl
bnREYXRhYmFzZVVzYWdlLCByZWNvcmQtPmV4cGVjdGVkVXNhZ2UsIFdURk1vdmUocmVjb3JkLT5y
ZXBseSkpOwogICAgICAgICByZWNvcmQgPSByZWNvcmRzLm5leHQoKTsKICAgICB9CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRf
dCB0b3RhbEJ5dGVzTmVlZGVkLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBX
ZWJQYWdlUHJveHk6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3Ry
aW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRv
dGFsQnl0ZXNOZWVkZWQsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFJlZjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRh
YmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAg
bV91aUNsaWVudC0+cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh0aGlzLCBzZWN1
cml0eU9yaWdpbi5nZXQoKSwgY3VycmVudFF1b3RhLCB0b3RhbEJ5dGVzTmVlZGVkLCBbcmVwbHkg
PSBXVEZNb3ZlKHJlcGx5KV0odW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhKSB7IHJlcGx5LT5z
ZW5kKG5ld1F1b3RhKTsgfSk7CisgICAgbV91aUNsaWVudC0+cmVhY2hlZEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YSh0aGlzLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgY3VycmVudFF1b3RhLCB0
b3RhbEJ5dGVzTmVlZGVkLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgZ2VvbG9jYXRp
b25JRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjMxOTA5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyNDAsNyArMTI0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Rm9jdXMoYm9vbCBmb2N1
c2VkKTsKICAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYp
OwotICAgIHZvaWQgZ2V0V2luZG93RnJhbWUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okdl
dFdpbmRvd0ZyYW1lOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0V2luZG93RnJhbWUo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0V2luZG93RnJhbWU6OkRlbGF5ZWRSZXBseSYmKTsK
ICAgICB2b2lkIGdldFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoV2ViQ29y
ZTo6RmxvYXRSZWN0KT4mJik7CiAKICAgICBib29sIGlzUmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzUmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQ7IH0KQEAgLTEzOTEs
NyArMTM5MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50
NjRfdCBuYXZpZ2F0aW9uSUQpOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNl
ckRhdGEmKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmLCBS
ZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmM6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNv
bnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
dWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBv
bGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0
IFVzZXJEYXRhJik7CiAgICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsK
QEAgLTE0MDcsMTEgKzE0MDcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFVwZGF0ZUhpc3Rv
cnlUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgdWludDY0X3Qg
ZnJhbWVJRCk7CiAKICAgICAvLyBVSSBjbGllbnQKLSAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoY29u
c3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRl
bGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0Rh
dGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmKTsKICAg
ICB2b2lkIHNob3dQYWdlKCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5n
JiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXll
ZFJlcGx5PiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJl
cGx5PiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6
OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5n
JiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVkUmVw
bHkmJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYpOwor
ICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0OjpEZWxheWVkUmVwbHkm
Jik7CiAgICAgdm9pZCBzZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViSGl0VGVzdFJlc3VsdERhdGEmJiwgdWludDMyX3QgbW9k
aWZpZXJzLCBVc2VyRGF0YSYmKTsKIApAQCAtMTQxOSwyOSArMTQxOSwyOSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKHVpbnQzMl90IG9wYXF1ZVBs
dWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIHBsdWdpblVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwbHVnaW5zUGFnZVVSTFN0cmlu
ZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3Ry
aW5nKTsKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUo
V0VCR0wpCi0gICAgdm9pZCB3ZWJHTFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwmJiwgUmVmPE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHk+JiYp
OwotICAgIHZvaWQgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCYmLCBSZWY8
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVk
UmVwbHk+JiYpOworICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7
CisgICAgdm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5
JiYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIHNldFRvb2xiYXJzQXJlVmlz
aWJsZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSk7Ci0gICAgdm9pZCBnZXRUb29sYmFyc0FyZVZp
c2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJsZTo6
RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFRvb2xiYXJzQXJlVmlzaWJsZShNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGU6OkRlbGF5ZWRSZXBseSYmKTsK
ICAgICB2b2lkIHNldE1lbnVCYXJJc1Zpc2libGUoYm9vbCBtZW51QmFySXNWaXNpYmxlKTsKLSAg
ICB2b2lkIGdldE1lbnVCYXJJc1Zpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okdl
dE1lbnVCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXRNZW51QmFy
SXNWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGU6OkRl
bGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNldFN0YXR1c0JhcklzVmlzaWJsZShib29sIHN0YXR1
c0JhcklzVmlzaWJsZSk7Ci0gICAgdm9pZCBnZXRTdGF0dXNCYXJJc1Zpc2libGUoUmVmPE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlzaWJsZTo6RGVsYXllZFJlcGx5PiYm
KTsKKyAgICB2b2lkIGdldFN0YXR1c0JhcklzVmlzaWJsZShNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpHZXRTdGF0dXNCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNldElz
UmVzaXphYmxlKGJvb2wgaXNSZXNpemFibGUpOwotICAgIHZvaWQgc2NyZWVuVG9Sb290Vmlldyhj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2NyZWVuUG9pbnQsIFJlZjxNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTY3JlZW5Ub1Jvb3RWaWV3OjpEZWxheWVkUmVwbHk+JiYpOwotICAgIHZvaWQgcm9v
dFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgUmVmPE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJvb3RWaWV3VG9TY3JlZW46OkRlbGF5ZWRSZXBseT4mJik7Cisg
ICAgdm9pZCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Q
b2ludCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyZWVuVG9Sb290Vmlldzo6RGVsYXllZFJl
cGx5JiYpOworICAgIHZvaWQgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiB2aWV3UmVjdCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZpZXdUb1NjcmVlbjo6RGVs
YXllZFJlcGx5JiYpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIGFjY2Vzc2liaWxpdHlT
Y3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Qb2ludCwgV2Vi
Q29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KTsKICAgICB2b2lkIHJvb3RWaWV3VG9BY2Nlc3Np
YmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBXZWJDb3JlOjpJ
bnRSZWN0JiByZXN1bHQpOwogI2VuZGlmCi0gICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+KTsKKyAgICB2b2lkIHJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5JiYp
OwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZp
ZXdwb3J0QXR0cmlidXRlcyYpOwogICAgIHZvaWQgcGFnZURpZFNjcm9sbCgpOwogICAgIHZvaWQg
cnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKICAgICB2b2lk
IHByaW50RnJhbWUodWludDY0X3QgZnJhbWVJRCk7Ci0gICAgdm9pZCBleGNlZWRlZERhdGFiYXNl
UXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWlu
dDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90
IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBSZWY8TWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+JiYp
OwotICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJp
bmcmIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90
YWxCeXRlc05lZWRlZCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBleGNlZWRl
ZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2Us
IHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBs
eSYmKTsKKyAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90
IHRvdGFsQnl0ZXNOZWVkZWQsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHJlcXVlc3RH
ZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCB1aW50
NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpAQCAtMTk2MSw3ICsxOTYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNQ
ZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24geyBmYWxzZSB9OwogCiAgICAgLy8gU3luY2hyb25v
dXMgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24uCi0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVw
bHk+IG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseTsKKyAgICBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJl
cGx5IG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseTsKIAogICAgIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdDsKICAgICBib29s
IG1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiB7
IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzOCw3ICs1MzgsNyBAQCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgcmV0dXJuICptX25ldHdvcmtQcm9j
ZXNzOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0
d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1Byb2Nlc3NQcm94eSwgVmVjdG9yPFJlZjxNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseT4+JiYgcGVuZGluZ1JlcGxpZXMpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJv
Y2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1Byb2Nlc3NQcm94eSwgVmVj
dG9yPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5PiYmIHBlbmRpbmdSZXBsaWVzKQogewogICAgIG5ldHdvcmtQcm9jZXNz
RmFpbGVkVG9MYXVuY2gobmV0d29ya1Byb2Nlc3NQcm94eSk7CiAgICAgQVNTRVJUKCFtX25ldHdv
cmtQcm9jZXNzKTsKQEAgLTU2NCw3ICs1NjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3
b3JrUHJvY2Vzc0ZhaWxlCiAgICAgbV9uZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CiB9CiAKLXZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVk
UmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vz
cygpOwogICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzKTsKQEAgLTYxMSw3ICs2MTEsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjplbnN1cmVTdG9yYWdlUHJvY2VzCiAgICAgbV9zdG9yYWdlUHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkluaXRpYWxpemVXZWJzaXRlRGF0
YVN0b3JlKHJlbGV2YW50RGF0YVN0b3JlLT5zdG9yYWdlUHJvY2Vzc1BhcmFtZXRlcnMoKSksIDAp
OwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24o
V2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxT
ZXNzaW9uSUQsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQ
cm94eSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCwgTWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBs
eSkKIHsKICAgICBlbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0
ZURhdGFTdG9yZTo6ZXhpc3RpbmdOb25EZWZhdWx0RGF0YVN0b3JlRm9yU2Vzc2lvbklEKGluaXRp
YWxTZXNzaW9uSUQpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsMTQgKzMyNiwxNCBAQCBwdWJsaWM6
CiAgICAgLy8gTmV0d29yayBQcm9jZXNzIE1hbmFnZW1lbnQKICAgICBOZXR3b3JrUHJvY2Vzc1By
b3h5JiBlbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoV2Vic2l0ZURh
dGFTdG9yZSA9IG51bGxwdHIpOwogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9j
ZXNzKCkgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQotICAgIHZvaWQgbmV0d29y
a1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBWZWN0b3I8UmVmPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5Pj4mJik7CisgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQ
cm94eSYsIFZlY3RvcjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0Zh
aWxlZFRvTGF1bmNoKE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKIAotICAgIHZvaWQgZ2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXROZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAKICAgICB2b2lkIGVuc3VyZVN0
b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlKiByZWxldmFu
dERhdGFTdG9yZSk7CiAgICAgU3RvcmFnZVByb2Nlc3NQcm94eSogc3RvcmFnZVByb2Nlc3MoKSB7
IHJldHVybiBtX3N0b3JhZ2VQcm9jZXNzLmdldCgpOyB9Ci0gICAgdm9pZCBnZXRTdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNl
c3Npb25JRCwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lv
bklELCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHN0b3JhZ2VQcm9jZXNzQ3Jhc2hlZChTdG9y
YWdlUHJvY2Vzc1Byb3h5Kik7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQg
ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzKFN0b3JhZ2VQ
cm9jZXNzUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgc3RkOjpvcHRpb25h
bDxQQUw6OlNlc3Npb25JRD4pOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODQsMTggKzU4NCwx
OCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0UGx1Z2lucyhib29sIHJlCiAjZW5kaWYgLy8g
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1
aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBs
dWdpblByb2Nlc3NUb2tlbiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFBsdWdpblByb2Nl
c3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5nZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVnaW5Q
cm9jZXNzVG9rZW4sIFdURk1vdmUocmVwbHkpKTsKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nl
c3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiBy
ZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpE
ZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBtX3Byb2Nlc3NQb29sLT5nZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oV1RGTW92ZShyZXBseSkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94
eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNz
aW9uSUQsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpn
ZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25J
RCwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBtX3Byb2Nlc3NQb29sLT5nZXRTdG9yYWdl
UHJvY2Vzc0Nvbm5lY3Rpb24oKnRoaXMsIGluaXRpYWxTZXNzaW9uSUQsIFdURk1vdmUocmVwbHkp
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShy
ZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYxLDEwICsyNjEsMTAgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGdldFBsdWdpbnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4m
IHBsdWdpbnMsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYgYXBwbGljYXRpb25QbHVnaW5z
LCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5OYW1lPj4mKTsK
ICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKLSAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2
NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5JiYpOwogI2VuZGlmCi0gICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5PiYmKTsKLSAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
bihQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklELCBSZWY8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwor
ICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOworICAg
IHZvaWQgZ2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIGluaXRpYWxT
ZXNzaW9uSUQsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogCiAgICAgYm9vbCBwbGF0Zm9ybUlzQmVpbmdEZWJ1
Z2dlZCgpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkQWxsb3dOb25WYWxpZEluamVjdGVkQ29kZSgp
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9j
ZXNzV2lsbFNodQogICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgdGhpcy0+Y29ubmVjdGlv
bigpID09ICZjb25uZWN0aW9uKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5hcHBlbmQoV1RG
TW92ZShyZXBseSkpOwogCkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpuZXR3b3JrUHJvY2VzcwogewogICAgIGNsZWFyQ2FsbGJhY2tTdGF0ZXMoKTsKIAotICAg
IFZlY3RvcjxSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBwZW5kaW5nUmVwbGllczsKKyAgICBWZWN0b3I8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+IHBlbmRpbmdSZXBsaWVzOwogICAgIHBlbmRpbmdSZXBsaWVzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuc2l6ZSgpKTsKICAgICBmb3Ig
KGF1dG8mIHJlcGx5IDogbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMpCiAgICAgICAgIHBlbmRp
bmdSZXBsaWVzLmFwcGVuZChXVEZNb3ZlKHJlcGx5KSk7CkBAIC0yMDYsMTIgKzIwNiwxMiBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzCiB7CiAgICAgLy8gVGhlIG5l
dHdvcmsgcHJvY2VzcyBtdXN0IGhhdmUgY3Jhc2hlZCBvciBleGl0ZWQsIHNlbmQgYW55IHBlbmRp
bmcgc3luYyByZXBsaWVzIHdlIG1pZ2h0IGhhdmUuCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdDb25u
ZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBs
eSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworICAgICAgICBhdXRv
IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNpZiBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykgfHwgT1MoV0lORE9XUykKLSAgICAgICAgcmVwbHktPnNl
bmQoSVBDOjpBdHRhY2htZW50KCkpOworICAgICAgICByZXBseShJUEM6OkF0dGFjaG1lbnQoKSk7
CiAjZWxpZiBPUyhEQVJXSU4pCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgw
LCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOworICAgICAgICByZXBseShJUEM6OkF0dGFjaG1l
bnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKICNlbHNlCiAgICAgICAgIG5vdEltcGxl
bWVudGVkKCk7CiAjZW5kaWYKQEAgLTI4NSwxMiArMjg1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6ZGlkQ3JlYXRlTmV0d28KICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25S
ZXBsaWVzLmlzRW1wdHkoKSk7CiAKICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5l
Y3Rpb24gcmVwbHkuCi0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworICAgIGF1dG8gcmVwbHkgPSBtX3BlbmRpbmdD
b25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NL
RVRTKSB8fCBPUyhXSU5ET1dTKQotICAgIHJlcGx5LT5zZW5kKGNvbm5lY3Rpb25JZGVudGlmaWVy
KTsKKyAgICByZXBseShjb25uZWN0aW9uSWRlbnRpZmllcik7CiAjZWxpZiBPUyhEQVJXSU4pCi0g
ICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQo
KSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKKyAgICByZXBseShJUEM6OkF0dGFjaG1lbnQo
Y29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOwog
I2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2
aXNpb24gMjMxOTA5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8TmV0d29ya1Byb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29s
Jik7CiAgICAgfk5ldHdvcmtQcm9jZXNzUHJveHkoKTsKIAotICAgIHZvaWQgZ2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXROZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAKICAgICBEb3dubG9hZFByb3h5KiBj
cmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCkBA
IC0xNTQsMTEgKzE1NCwxMSBAQCBwcml2YXRlOgogICAgIFdlYlByb2Nlc3NQb29sJiBtX3Byb2Nl
c3NQb29sOwogICAgIAogICAgIHVuc2lnbmVkIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0
czsKLSAgICBEZXF1ZTxSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGll
czsKKyAgICBEZXF1ZTxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CiAK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4+
IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRf
dCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxs
YmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9w
ZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8
dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoV2Vic2l0ZURhdGEpPj4gbV9wZW5kaW5nRmV0Y2hXZWJz
aXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkKCk+
PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2
NF90LCBGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdp
bnNDYWxsYmFja3M7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWRQcm94eU1hcD4gbV9k
b3dubG9hZFByb3h5TWFwOwogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFH
RVIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjMxOTA5KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgxLDcgKzgxLDcgQEAgdWludDY0X3QgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnBs
dWdpblBybwogICAgIHJldHVybiB0b2tlbjsKIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdl
cjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2Vu
LCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6Omdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgTWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseSYmIHJlcGx5KQogewogICAgIEFTU0VSVChwbHVnaW5Qcm9jZXNzVG9rZW4pOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzTWFuYWdlci5oCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuKGNv
bnN0IFBsdWdpbk1vZHVsZUluZm8mLCBQbHVnaW5Qcm9jZXNzVHlwZSwgUGx1Z2luUHJvY2Vzc1Nh
bmRib3hQb2xpY3kpOwogCi0gICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50
NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgTWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseSYmKTsKICAgICB2b2lkIHJlbW92ZVBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9j
ZXNzUHJveHkqKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShjb25zdCBQbHVnaW5Nb2R1
bGVJbmZvJiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJv
eHkuY3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIs
NyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxTaHV0CiAKIC8vIEFza3Mg
dGhlIHBsdWctaW4gcHJvY2VzcyB0byBjcmVhdGUgYSBuZXcgY29ubmVjdGlvbiB0byBhIHdlYiBw
cm9jZXNzLiBUaGUgY29ubmVjdGlvbiBpZGVudGlmaWVyIHdpbGwgYmUgCiAvLyBlbmNvZGVkIGlu
IHRoZSBnaXZlbiBhcmd1bWVudCBlbmNvZGVyIGFuZCBzZW50IGJhY2sgdG8gdGhlIGNvbm5lY3Rp
b24gb2YgdGhlIGdpdmVuIHdlYiBwcm9jZXNzLgotdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6Omdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBQ
bHVnaW5Qcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkm
JiByZXBseSkKIHsKICAgICBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5hcHBlbmQoV1RGTW92
ZShyZXBseSkpOwogCkBAIC0xNTksMTIgKzE1OSwxMiBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94
eTo6cGx1Z2luUHJvY2Vzc0NyCiB7CiAgICAgLy8gVGhlIHBsdWctaW4gcHJvY2VzcyBtdXN0IGhh
dmUgY3Jhc2hlZCBvciBleGl0ZWQsIHNlbmQgYW55IHBlbmRpbmcgc3luYyByZXBsaWVzIHdlIG1p
Z2h0IGhhdmUuCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVj
dGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CisgICAgICAgIGF1dG8gcmVwbHkgPSBtX3BlbmRpbmdD
b25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NL
RVRTKQotICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoKSwgZmFsc2UpOworICAg
ICAgICByZXBseShJUEM6OkF0dGFjaG1lbnQoKSwgZmFsc2UpOwogI2VsaWYgT1MoREFSV0lOKQot
ICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZF
X1NFTkQpLCBmYWxzZSk7CisgICAgICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgwLCBNQUNIX01T
R19UWVBFX01PVkVfU0VORCksIGZhbHNlKTsKICNlbHNlCiAgICAgICAgIG5vdEltcGxlbWVudGVk
KCk7CiAjZW5kaWYKQEAgLTI3NiwxMiArMjc2LDEyIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5
OjpkaWRDcmVhdGVXZWJQcm8KICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LmlzRW1wdHkoKSk7CiAKICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24g
cmVwbHkuCi0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlv
blJlcGxpZXMudGFrZUZpcnN0KCk7CisgICAgYXV0byByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rp
b25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0g
ICAgcmVwbHktPnNlbmQoY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3Vz
UGx1Z2luSW5pdGlhbGl6YXRpb24pOworICAgIHJlcGx5KGNvbm5lY3Rpb25JZGVudGlmaWVyLCBz
dXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKICNlbGlmIE9TKERBUldJ
TikKLSAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIu
cG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCksIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb24pOworICAgIHJlcGx5KElQQzo6QXR0YWNobWVudChjb25uZWN0aW9u
SWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgc3VwcG9ydHNBc3lu
Y2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjMxOTA5KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBBc2tzIHRoZSBwbHVnLWluIHBy
b2Nlc3MgdG8gY3JlYXRlIGEgbmV3IGNvbm5lY3Rpb24gdG8gYSB3ZWIgcHJvY2Vzcy4gVGhlIGNv
bm5lY3Rpb24gaWRlbnRpZmllciB3aWxsIGJlCiAgICAgLy8gZW5jb2RlZCBpbiB0aGUgZ2l2ZW4g
YXJndW1lbnQgZW5jb2RlciBhbmQgc2VudCBiYWNrIHRvIHRoZSBjb25uZWN0aW9uIG9mIHRoZSBn
aXZlbiB3ZWIgcHJvY2Vzcy4KLSAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFJl
ZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHkmJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoV1RGOjpGdW5jdGlvbjx2
b2lkIChWZWN0b3I8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgZGVs
ZXRlV2Vic2l0ZURhdGEoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgV1RGOjpGdW5jdGlvbjx2b2lk
ICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcml2YXRlOgog
ICAgIC8vIFRoZSBjb25uZWN0aW9uIHRvIHRoZSBwbHVnLWluIGhvc3QgcHJvY2Vzcy4KICAgICBS
ZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAKLSAgICBEZXF1ZTxSZWZQdHI8
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOworICAgIERlcXVlPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVk
UmVwbHk+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90
PiBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhUmVxdWVzdHM7CiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChWZWN0b3I8U3RyaW5nPik+PiBtX3BlbmRpbmdGZXRjaFdl
YnNpdGVEYXRhQ2FsbGJhY2tzOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMzE5MDkp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vz
c1Byb3h5OjpkZWxldGVXZWJzaXRlRAogICAgIHNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNz
OjpEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoc2Vzc2lvbklELCBkYXRhVHlwZXMsIG9yaWdp
bnMsIGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpnZXRT
dG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHks
IFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0
U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5
LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LmFwcGVuZChXVEZNb3ZlKHJlcGx5KSk7CiAKQEAgLTE0MCw5ICsxNDAsOSBAQCB2b2lkIFN0b3Jh
Z2VQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6CiAgICAgICAgIGF1dG8gcmVwbHkgPSBtX3Bl
bmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklYX0RPTUFJ
Tl9TT0NLRVRTKQotICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoKSk7CisgICAg
ICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgpKTsKICNlbGlmIE9TKERBUldJTikKLSAgICAgICAg
cmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7
CisgICAgICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VO
RCkpOwogI2Vsc2UKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpAQCAtMTcyLDEy
ICsxNzIsMTIgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVTdG9yYQogewog
ICAgIEFTU0VSVCghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKTsKIAotICAg
IFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50
YWtlRmlyc3QoKTsKKyAgICBhdXRvIHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMu
dGFrZUZpcnN0KCk7CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICByZXBseS0+
c2VuZChjb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgcmVwbHkoY29ubmVjdGlvbklkZW50aWZp
ZXIpOwogI2VsaWYgT1MoREFSV0lOKQotICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudChj
b25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7Cisg
ICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFD
SF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vz
c1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9T
dG9yYWdlUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRT
aW5jZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZv
aWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4mLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKLSAgICB2
b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBSZWY8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFdlYlBy
b2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogCiBwcml2YXRlOgogICAgIFN0b3JhZ2VQcm9j
ZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmKTsKQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9jZXNzUG9vbDsKIAogICAgIHVuc2lnbmVkIG1fbnVtUGVu
ZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsKLSAgICBEZXF1ZTxSZWY8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBtX3Bl
bmRpbmdDb25uZWN0aW9uUmVwbGllczsKKyAgICBEZXF1ZTxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gbV9wZW5kaW5n
Q29ubmVjdGlvblJlcGxpZXM7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKFdlYnNpdGVEYXRhKT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5n
RGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3M7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0NCwxMSArMjQ0LDkgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6dGVybQogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtl
cihpZGVudGlmaWVyLCBhc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgbnVsbHB0cik7CiB9
CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3Jr
ZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPE1lc3NhZ2VzOjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlcjo6RGVsYXllZFJl
cGx5PiYmIHJlcGx5KQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rl
cm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRl
bGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0
LCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gewotICAgICAgICByZXBseS0+c2VuZCgpOwotICAg
IH0pOworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihp
ZGVudGlmaWVyLCBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBXVEZNb3ZlKHJlcGx5KSk7
CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBk
ZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VPcmlnaW4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgJKHJldmlz
aW9uIDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIpOwogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXIoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxNZXNzYWdlczo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRlbGF5ZWRSZXBseT4mJik7
CisgICAgdm9pZCBzeW5jVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJt
aW5hdGVXb3JrZXI6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50
aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJv
cik7CiAgICAgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJ
ZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpOwog
ICAgIHZvaWQgY2xhaW1Db21wbGV0ZWQodWludDY0X3QgY2xhaW1SZXF1ZXN0SWRlbnRpZmllcik7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZp
c2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgxNCw3ICs4MTQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKElPUykKLSAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQsIFJl
ZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6
OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERy
YXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFja0lELCBN
ZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRl
bGF5ZWRSZXBseSYmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJl
dmlzaW9uIDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOTkwLDcgKzI5OTAsNyBAQCB2b2lkIFdl
YlBhZ2U6OmRpc3BhdGNoQXN5bmNocm9ub3VzVG91Y2hFCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQ
YWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBSZWY8
TWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpE
ZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50
aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJ
bmZvLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQsIE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFn
ZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAg
aWYgKHByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSkgewogICAgICAgICByZXBseS0+c2VuZCgx
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340650</attachid>
            <date>2018-05-17 14:47:28 -0700</date>
            <delta_ts>2018-05-17 16:58:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182269-20180517144728.patch</filename>
            <type>text/plain</type>
            <size>84494</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzE5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMyBAQAorMjAxOC0wNS0xNyAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBDb21wbGV0
aW9uSGFuZGxlcnMgZm9yIERlbGF5ZWRSZXBsaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vl
bm4gRmFibGV0LgorCisgICAgICAgIERlbGF5ZWRSZXBsaWVzIHNob3VsZCBiZSBhIG5vbmNvcHlh
YmxlLCBub24tcmVmY291bnRhYmxlIHR5cGUuICBUaGV5IHNob3VsZCBiZQorICAgICAgICBjYWxs
ZWQgb25jZSBhbmQgb25seSBvbmNlLiAgVGhpcyBpcyB3aGF0IENvbXBsZXRpb25IYW5kbGVycyBh
cmUgZm9yLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4gIEp1c3QgY2xlYW5lciBj
b2RlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cGVyZm9ybVN5bmNocm9ub3VzTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZERhdGE6OlN5bmNocm9ub3VzTG9hZERhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBDOjpjYWxsTWVtYmVy
RnVuY3Rpb25JbXBsKToKKyAgICAgICAgKElQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uKToKKyAgICAg
ICAgKElQQzo6aGFuZGxlTWVzc2FnZURlbGF5ZWQpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJv
bGxlclByb3h5OjpzZXRJbml0aWFsaXphdGlvblJlcGx5KToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6YXRpb25SZXBseSk6CisgICAgICAgICog
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKiBQbHVnaW5Q
cm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRlc3Ryb3lQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBQbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvTGVnYWN5TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcDoKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlczo6c2VuZCk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseTo6RGVsYXllZFJlcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5
KTogRGVsZXRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5OjpzZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVwbHk6OkRlbGF5
ZWRSZXBseSk6IERlbGV0ZWQuCisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRp
cGxlQXR0cmlidXRlczo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KTogRGVsZXRlZC4KKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpEZWxheWVk
UmVwbHk6OnNlbmQpOiBEZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L0xlZ2FjeU1l
c3NhZ2VzLWV4cGVjdGVkLmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2Vp
dmVyLWV4cGVjdGVkLmNwcDoKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVz
dE11bHRpcGxlQXR0cmlidXRlczo6c2VuZCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJlcGx5KTog
RGVsZXRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KTogRGVsZXRlZC4KKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5OjpzZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVwbHk6OkRlbGF5ZWRSZXBseSk6IERlbGV0ZWQuCisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlczo6RGVsYXll
ZFJlcGx5Ojp+RGVsYXllZFJlcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVwbHk6OnNlbmQpOiBEZWxldGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmg6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzRmFpbGVkVG9MYXVuY2gp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6
OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94
eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpnZXRTdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDbG9z
ZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVN0b3Jh
Z2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9T
dG9yYWdlUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmNyZWF0
ZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNy
ZWF0ZU5ld1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3Jp
cHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdENv
bmZpcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9t
cHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFRvb2xiYXJzQXJlVmlzaWJsZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWVudUJhcklzVmlzaWJsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U3RhdHVzQmFySXNWaXNpYmxlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRXaW5kb3dGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyZWVuVG9Sb290Vmlldyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb1NjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1By
b2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpn
ZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpzeW5jVGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdB
bmREcmF3VG9QREYpOgorCiAyMDE4LTA1LTE3ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAg
PGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEltcGxlbWVudCBhbmQgZW5hYmxl
IEZVTExTQ1JFRU5fQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNp
b24gMjMxOTA5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw3ICsyNDksNyBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlCiAgICAgbG9hZGVyLT5zdGFy
dCgpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwZXJmb3JtU3lu
Y2hyb25vdXNMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRl
cnMsIFJlZjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1T
eW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycywgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBy
ZXBseSkKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVy
OwogICAgIEFTU0VSVCghbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmNvbnRhaW5zKGlkZW50aWZp
ZXIpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDIzMTkwOSkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpOwogCiAgICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmJiwgUmVmPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmKTsKKyAg
ICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMmJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3lu
Y2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBsb2FkUGluZyhOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgcHJlY29ubmVjdFRvKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAJKHJldmlzaW9uIDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTMgKzc0LDEzIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZERhdGEgewotICAgIFN5bmNocm9u
b3VzTG9hZERhdGEoUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQorICAgIFN5
bmNocm9ub3VzTG9hZERhdGEoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSkKICAgICAgICAg
OiBkZWxheWVkUmVwbHkoV1RGTW92ZShyZXBseSkpCiAgICAgewogICAgICAgICBBU1NFUlQoZGVs
YXllZFJlcGx5KTsKICAgICB9CiAgICAgUmVzb3VyY2VSZXF1ZXN0IGN1cnJlbnRSZXF1ZXN0Owot
ICAgIFJlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZv
cm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4gZGVsYXllZFJlcGx5OworICAgIE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9h
ZDo6RGVsYXllZFJlcGx5IGRlbGF5ZWRSZXBseTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiB9OwpAQCAtOTQsMTEgKzk0LDExIEBAIHN0
YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXMKICAgICBpZiAoYnVmZmVyICYm
IGJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAotICAgIGRhdGEuZGVsYXllZFJlcGx5LT5zZW5kKGRh
dGEuZXJyb3IsIGRhdGEucmVzcG9uc2UsIHJlc3BvbnNlQnVmZmVyKTsKKyAgICBkYXRhLmRlbGF5
ZWRSZXBseShkYXRhLmVycm9yLCBkYXRhLnJlc3BvbnNlLCByZXNwb25zZUJ1ZmZlcik7CiAgICAg
ZGF0YS5kZWxheWVkUmVwbHkgPSBudWxscHRyOwogfQogCi1OZXR3b3JrUmVzb3VyY2VMb2FkZXI6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBSZWZQ
dHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hy
b25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYgc3luY2hyb25vdXNSZXBseSkKK05ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5l
Y3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5
bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBseSkKICAgICA6IG1f
cGFyYW1ldGVycyB7IFdURk1vdmUocGFyYW1ldGVycykgfQogICAgICwgbV9jb25uZWN0aW9uIHsg
Y29ubmVjdGlvbiB9CiAgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBwYXJhbWV0ZXJzLmRlZmVyc0xv
YWRpbmcgfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw3ICs2Miw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5hbAogICAgICwg
cHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOZXR3b3JrUmVz
b3VyY2VMb2FkZXI+IGNyZWF0ZShOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBSZWZQdHI8
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25v
dXNMb2FkOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkgPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8
TmV0d29ya1Jlc291cmNlTG9hZGVyPiBjcmVhdGUoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hy
b25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSA9IG51bGxwdHIpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoV1RGTW92ZShwYXJh
bWV0ZXJzKSwgY29ubmVjdGlvbiwgV1RGTW92ZShyZXBseSkpKTsKICAgICB9CkBAIC0xMjMsNyAr
MTIzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya1Jlc291cmNl
TG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmKTsKIAogICAg
IC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0hhbmRsZU1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9IYW5kbGVNZXNzYWdlLmgJKHJldmlzaW9uIDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
IAogbmFtZXNwYWNlIElQQyB7CkBAIC02MiwxNiArNjMsMTYgQEAgdm9pZCBjYWxsTWVtYmVyRnVu
Y3Rpb24oQXJnc1R1cGxlJiYgYXJncwogCiAvLyBEaXNwYXRjaCBmdW5jdGlvbnMgd2l0aCBkZWxh
eWVkIHJlcGx5IGFyZ3VtZW50cy4KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1G
LCB0eXBlbmFtZSBSLCB0eXBlbmFtZSBBcmdzVHVwbGUsIHNpemVfdC4uLiBBcmdzSW5kZXg+Ci12
b2lkIGNhbGxNZW1iZXJGdW5jdGlvbkltcGwoQyogb2JqZWN0LCBNRiBmdW5jdGlvbiwgUmVmPFI+
JiYgZGVsYXllZFJlcGx5LCBBcmdzVHVwbGUmJiBhcmdzLCBzdGQ6OmluZGV4X3NlcXVlbmNlPEFy
Z3NJbmRleC4uLj4pCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1l
IENILCB0eXBlbmFtZSBBcmdzVHVwbGUsIHNpemVfdC4uLiBBcmdzSW5kZXg+Cit2b2lkIGNhbGxN
ZW1iZXJGdW5jdGlvbkltcGwoQyogb2JqZWN0LCBNRiBmdW5jdGlvbiwgQ29tcGxldGlvbkhhbmRs
ZXI8Q0g+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFyZ3NUdXBsZSYmIGFyZ3MsIHN0ZDo6aW5kZXhf
c2VxdWVuY2U8QXJnc0luZGV4Li4uPikKIHsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6
Z2V0PEFyZ3NJbmRleD4oc3RkOjpmb3J3YXJkPEFyZ3NUdXBsZT4oYXJncykpLi4uLCBXVEZNb3Zl
KGRlbGF5ZWRSZXBseSkpOworICAgIChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8QXJnc0lu
ZGV4PihzdGQ6OmZvcndhcmQ8QXJnc1R1cGxlPihhcmdzKSkuLi4sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVu
YW1lIFIsIHR5cGVuYW1lIEFyZ3NUdXBsZSwgdHlwZW5hbWUgQXJnc0luZGljaWVzID0gc3RkOjpt
YWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxBcmdzVHVwbGU+Ojp2YWx1ZT4+Ci12
b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihBcmdzVHVwbGUmJiBhcmdzLCBSZWY8Uj4mJiBkZWxheWVk
UmVwbHksIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCit0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBl
bmFtZSBNRiwgdHlwZW5hbWUgQ0gsIHR5cGVuYW1lIEFyZ3NUdXBsZSwgdHlwZW5hbWUgQXJnc0lu
ZGljaWVzID0gc3RkOjptYWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxBcmdzVHVw
bGU+Ojp2YWx1ZT4+Cit2b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihBcmdzVHVwbGUmJiBhcmdzLCBD
b21wbGV0aW9uSGFuZGxlcjxDSD4mJiBjb21wbGV0aW9uSGFuZGxlciwgQyogb2JqZWN0LCBNRiBm
dW5jdGlvbikKIHsKLSAgICBjYWxsTWVtYmVyRnVuY3Rpb25JbXBsKG9iamVjdCwgZnVuY3Rpb24s
IFdURk1vdmUoZGVsYXllZFJlcGx5KSwgc3RkOjpmb3J3YXJkPEFyZ3NUdXBsZT4oYXJncyksIEFy
Z3NJbmRpY2llcygpKTsKKyAgICBjYWxsTWVtYmVyRnVuY3Rpb25JbXBsKG9iamVjdCwgZnVuY3Rp
b24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdGQ6OmZvcndhcmQ8QXJnc1R1cGxlPihh
cmdzKSwgQXJnc0luZGljaWVzKCkpOwogfQogCiAvLyBEaXNwYXRjaCBmdW5jdGlvbnMgd2l0aCBj
b25uZWN0aW9uIHBhcmFtZXRlciB3aXRoIG5vIHJlcGx5IGFyZ3VtZW50cy4KQEAgLTE3NCw4ICsx
NzUsMTAgQEAgdm9pZCBoYW5kbGVNZXNzYWdlRGVsYXllZChDb25uZWN0aW9uJiBjbwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmPHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseT4gZGVs
YXllZFJlcGx5ID0gYWRvcHRSZWYoKm5ldyB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkoY29ubmVj
dGlvbiwgV1RGTW92ZShyZXBseUVuY29kZXIpKSk7Ci0gICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdU
Rk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShkZWxheWVkUmVwbHkpLCBvYmplY3QsIGZ1bmN0aW9u
KTsKKyAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbcmVw
bHlFbmNvZGVyID0gV1RGTW92ZShyZXBseUVuY29kZXIpLCBjb25uZWN0aW9uID0gbWFrZVJlZihj
b25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKKyAgICAgICAgVDo6c2VuZChX
VEZNb3ZlKHJlcGx5RW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOworICAg
IH07CisgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVuY3Rpb24pOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBJUEMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuY3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTEsMTUgKzkxLDE1IEBAIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6flBsdWdpbkNvbnRyb2xs
ZXIKICAgICAgICAgcmVsZWFzZU5QT2JqZWN0KG1fcGx1Z2luRWxlbWVudE5QT2JqZWN0KTsKIH0K
IAotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnNldEluaXRpYWxpemF0aW9uUmVwbHkoUmVm
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVw
bHk+JiYgcmVwbHkpCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0SW5pdGlhbGl6YXRp
b25SZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVs
YXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgQVNTRVJUKCFtX2luaXRpYWxpemF0aW9uUmVwbHkp
OwogICAgIG1faW5pdGlhbGl6YXRpb25SZXBseSA9IFdURk1vdmUocmVwbHkpOwogfQogCi1SZWZQ
dHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRS
ZXBseT4gUGx1Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpCitN
ZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5
IFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKQogewotICAg
IHJldHVybiBtX2luaXRpYWxpemF0aW9uUmVwbHk7CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2Uo
bV9pbml0aWFsaXphdGlvblJlcGx5LCBudWxscHRyKTsKIH0KIAogYm9vbCBQbHVnaW5Db250cm9s
bGVyUHJveHk6OmluaXRpYWxpemUoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVh
dGlvblBhcmFtZXRlcnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc0LDggKzc0LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0luaXRpYWxpemluZygp
IGNvbnN0IHsgcmV0dXJuIG1faXNJbml0aWFsaXppbmc7IH0KICAgICAKLSAgICB2b2lkIHNldElu
aXRpYWxpemF0aW9uUmVwbHkoUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3Jl
YXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+JiYpOwotICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiB0YWtlSW5pdGlhbGl6
YXRpb25SZXBseSgpOworICAgIHZvaWQgc2V0SW5pdGlhbGl6YXRpb25SZXBseShNZXNzYWdlczo6
V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5JiYpOworICAg
IE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVw
bHkgdGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0
UGFpbnRUaW1lcigpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lz
VmlzaWJsZTsKICAgICBib29sIG1faXNXaW5kb3dWaXNpYmxlOwogCi0gICAgUmVmUHRyPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+IG1f
aW5pdGlhbGl6YXRpb25SZXBseTsKKyAgICBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5IG1faW5pdGlhbGl6YXRpb25SZXBseTsKIAogICAg
IFJlZlB0cjxQbHVnaW4+IG1fcGx1Z2luOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDIzMTkw
OSkKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSwxMSArMTc5LDExIEBAIHZvaWQgV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZENsb3NlKElQQzoKICAgICAgICAgZGVzdHJveVBsdWdpbkNvbnRyb2xsZXJQ
cm94eShwbHVnaW5Db250cm9sbGVyc1tpXSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OmRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgYm9vbCBhc3luY2hy
b25vdXNDcmVhdGlvbkluY29tcGxldGUsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlc3Ryb3lQbHVnaW46OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OmRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgYm9v
bCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29u
bmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgLy8g
V2UgcmV0dXJuIGltbWVkaWF0ZWx5IGZyb20gdGhpcyBzeW5jaHJvbm91cyBJUEMuIFdlIHdhbnQg
dG8gbWFrZSBzdXJlIHRoZSBwbHVnaW4gZGVzdHJ1Y3Rpb24gaXMganVzdCBhYm91dCB0byBzdGFy
dCBzbyBhdWRpbyBwbGF5YmFjawogICAgIC8vIHdpbGwgZmluaXNoIHNvb24gYWZ0ZXIgcmV0dXJu
aW5nLiBIb3dldmVyIHdlIGRvbid0IHdhbnQgdG8gd2FpdCBmb3IgZGVzdHJ1Y3Rpb24gdG8gY29t
cGxldGUgZnVsbHkgYXMgdGhhdCBtYXkgdGFrZSBhIHdoaWxlLgotICAgIHJlcGx5LT5zZW5kKCk7
CisgICAgcmVwbHkoKTsKIAogICAgIC8vIEVuc3VyZSB3ZSBkb24ndCBjbGFtcCBhbnkgdGltZXJz
IGR1cmluZyBkZXN0cnVjdGlvbgogICAgIEFjdGl2aXR5QXNzZXJ0aW9uIGFjdGl2aXR5QXNzZXJ0
aW9uKFBsdWdpblByb2Nlc3M6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25BY3Rpdml0eSgpKTsKQEAg
LTIzMiw3ICsyMzIsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5J
CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKGNv
bnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJhbWV0ZXJzLCBSZWY8TWVz
c2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4m
JiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbihjb25zdCBQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycywgTWVzc2FnZXM6Oldl
YlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQog
ewogICAgIC8vIEVuc3VyZSB3ZSBkb24ndCBjbGFtcCBhbnkgdGltZXJzIGR1cmluZyBpbml0aWFs
aXphdGlvbgogICAgIEFjdGl2aXR5QXNzZXJ0aW9uIGFjdGl2aXR5QXNzZXJ0aW9uKFBsdWdpblBy
b2Nlc3M6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25BY3Rpdml0eSgpKTsKQEAgLTI0OSw5ICsyNDks
OSBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4oCiAgICAgICAgIAog
ICAgICAgICAvLyBJZiBpdHMgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGUgdGhlbiB3ZSBuZWVk
IHRvIHJlc3BvbmQgdG8gdGhpcyBtZXNzYWdlIHdpdGggdGhlIGNvcnJlY3QgaW5mb3JtYXRpb24g
YWJvdXQgaXRzIGNyZWF0aW9uLgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICByZXBseS0+
c2VuZCh0cnVlLCBwbHVnaW5Db250cm9sbGVyUHJveHktPndhbnRzV2hlZWxFdmVudHMoKSwgcGx1
Z2luQ29udHJvbGxlclByb3h5LT5yZW1vdGVMYXllckNsaWVudElEKCkpOworICAgICAgICByZXBs
eSh0cnVlLCBwbHVnaW5Db250cm9sbGVyUHJveHktPndhbnRzV2hlZWxFdmVudHMoKSwgcGx1Z2lu
Q29udHJvbGxlclByb3h5LT5yZW1vdGVMYXllckNsaWVudElEKCkpOwogI2Vsc2UKLSAgICAgICAg
cmVwbHktPnNlbmQodHJ1ZSwgcGx1Z2luQ29udHJvbGxlclByb3h5LT53YW50c1doZWVsRXZlbnRz
KCksIDApOworICAgICAgICByZXBseSh0cnVlLCBwbHVnaW5Db250cm9sbGVyUHJveHktPndhbnRz
V2hlZWxFdmVudHMoKSwgMCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI2
Niw3ICsyNjYsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4oCiAg
ICAgdWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCA9IDA7CiAgICAgY3JlYXRlUGx1Z2luSW50
ZXJuYWwoY3JlYXRpb25QYXJhbWV0ZXJzLCByZXN1bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90
ZUxheWVyQ2xpZW50SUQpOwogICAgIAotICAgIHJlcGx5LT5zZW5kKHJlc3VsdCwgd2FudHNXaGVl
bEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CisgICAgcmVwbHkocmVzdWx0LCB3YW50c1do
ZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzQ29u
bmVjdGlvbjo6Y3JlYXRlUGx1Z2luQXN5bmNocm9ub3VzbHkoY29uc3QgUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMpCkBAIC0zMTEsOCArMzExLDggQEAgdm9pZCBX
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luQQogICAgIC8vIHN5bmNocm9ub3VzIHJl
cGx5IGluc3RlYWQgb2Ygc2VuZGluZyB0aGUgYXN5bmNocm9ub3VzIHJlcGx5LgogICAgIFBsdWdp
bkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxlclByb3h5ID0gbV9wbHVnaW5Db250cm9s
bGVycy5nZXQoY3JlYXRpb25QYXJhbWV0ZXJzLnBsdWdpbkluc3RhbmNlSUQpOwogICAgIEFTU0VS
VChwbHVnaW5Db250cm9sbGVyUHJveHkpOwotICAgIGlmIChSZWZQdHI8TWVzc2FnZXM6OldlYlBy
b2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4gZGVsYXllZFN5bmNS
ZXBseSA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKSkg
ewotICAgICAgICBkZWxheWVkU3luY1JlcGx5LT5zZW5kKHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50
cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CisgICAgaWYgKGF1dG8gZGVsYXllZFN5bmNSZXBseSA9
IHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKSkgeworICAg
ICAgICBkZWxheWVkU3luY1JlcGx5KHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5
ZXJDbGllbnRJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lv
biAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjksOSArNjksOSBAQCBwcml2YXRlOgogICAgIC8v
IE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKLSAgICB2b2lk
IGNyZWF0ZVBsdWdpbihjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmLCBSZWY8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4mJik7
CisgICAgdm9pZCBjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiwg
TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBs
eSYmKTsKICAgICB2b2lkIGNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KGNvbnN0IFBsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycyYpOwotICAgIHZvaWQgZGVzdHJveVBsdWdpbih1aW50NjRfdCBwbHVn
aW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSwgUmVmPE1l
c3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6RGVsYXllZFJlcGx5
PiYmKTsKKyAgICB2b2lkIGRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwg
Ym9vbCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUsIE1lc3NhZ2VzOjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6RGVsYXllZFJlcGx5JiYpOwogICAgIAogICAgIHZv
aWQgY3JlYXRlUGx1Z2luSW50ZXJuYWwoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiwg
Ym9vbCYgcmVzdWx0LCBib29sJiB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCYgcmVtb3RlTGF5
ZXJDbGllbnRJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5
TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAJKHJldmlz
aW9uIDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2Fn
ZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNDMgKzU5LDE1IEBA
IG5hbWVzcGFjZSBNZXNzYWdlcyB7CiAKIG5hbWVzcGFjZSBXZWJQYWdlIHsKIAotR2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJlcGx5KFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5j
b2RlcikKLSAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQotICAgICwgbV9l
bmNvZGVyKFdURk1vdmUoZW5jb2RlcikpCit2b2lkIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
OjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVj
dGlvbkhhbmRsZSkKIHsKKyAgICAqZW5jb2RlciA8PCBjb25uZWN0aW9uSGFuZGxlOworICAgIGNv
bm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKIH0KIAotR2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6fkRlbGF5ZWRSZXBseSgpCit2b2lkIFRl
c3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
JiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7Ci0gICAgQVNTRVJUKCFt
X2Nvbm5lY3Rpb24pOwotfQotCi1ib29sIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk6OnNlbmQoY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25I
YW5kbGUpCi17Ci0gICAgQVNTRVJUKG1fZW5jb2Rlcik7Ci0gICAgKm1fZW5jb2RlciA8PCBjb25u
ZWN0aW9uSGFuZGxlOwotICAgIGJvb2wgX3Jlc3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNS
ZXBseShXVEZNb3ZlKG1fZW5jb2RlcikpOwotICAgIG1fY29ubmVjdGlvbiA9IG51bGxwdHI7Ci0g
ICAgcmV0dXJuIF9yZXN1bHQ7Ci19Ci0KLVRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OkRlbGF5ZWRS
ZXBseTo6RGVsYXllZFJlcGx5KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5jb2RlcikKLSAgICA6IG1fY29ubmVjdGlvbihX
VEZNb3ZlKGNvbm5lY3Rpb24pKQotICAgICwgbV9lbmNvZGVyKFdURk1vdmUoZW5jb2RlcikpCi17
Ci19Ci0KLVRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OkRlbGF5ZWRSZXBseTo6fkRlbGF5ZWRSZXBs
eSgpCi17Ci0gICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOwotfQotCi1ib29sIFRlc3RNdWx0aXBs
ZUF0dHJpYnV0ZXM6OkRlbGF5ZWRSZXBseTo6c2VuZCgpCi17Ci0gICAgQVNTRVJUKG1fZW5jb2Rl
cik7Ci0gICAgYm9vbCBfcmVzdWx0ID0gbV9jb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KFdURk1v
dmUobV9lbmNvZGVyKSk7Ci0gICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKLSAgICByZXR1cm4g
X3Jlc3VsdDsKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzLWV4cGVjdGVkLmgJKHJldmlzaW9u
IDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXMt
ZXhwZWN0ZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzU4LDE3ICszNTgsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSgiR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24iKTsgfQogICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IHRydWU7CiAKLSAgICBzdHJ1Y3QgRGVsYXllZFJlcGx5IDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERlbGF5ZWRSZXBseT4gewotICAgICAgICBEZWxheWVk
UmVwbHkoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4pOwotICAgICAgICB+RGVsYXllZFJlcGx5KCk7Ci0KLSAgICAgICAgYm9vbCBzZW5kKGNvbnN0
IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKTsKLQotICAgIHByaXZh
dGU6Ci0gICAgICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gbV9lbmNvZGVyOwotICAgIH07Ci0KKyAg
ICB1c2luZyBEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKT47CisgICAgc3RhdGljIHZvaWQg
c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk7CiAgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJj4gUmVwbHk7CiAgICAgZXhw
bGljaXQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRo
KQogICAgICAgICA6IG1fYXJndW1lbnRzKHBsdWdpblBhdGgpCkBAIC0zOTIsMTcgKzM4Myw4IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzIik7IH0KICAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwogCi0gICAgc3RydWN0IERlbGF5ZWRSZXBs
eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEZWxheWVkUmVwbHk+IHsKLSAgICAgICAg
RGVsYXllZFJlcGx5KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+KTsKLSAgICAgICAgfkRlbGF5ZWRSZXBseSgpOwotCi0gICAgICAgIGJvb2wgc2Vu
ZCgpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9j
b25uZWN0aW9uOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBtX2VuY29k
ZXI7Ci0gICAgfTsKLQorICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT47CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBSZXBs
eTsKICAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CiAgICAgewpJbmRleDog
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2Vp
dmVyLWV4cGVjdGVkLmNwcAkocmV2aXNpb24gMjMxOTA5KQorKysgU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01OSw0MyArNTksMTUgQEAgbmFtZXNwYWNlIE1lc3NhZ2VzIHsKIAogbmFtZXNwYWNlIFdlYlBh
Z2UgewogCi1HZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5OjpEZWxheWVk
UmVwbHkoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiBlbmNvZGVyKQotICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVj
dGlvbikpCi0gICAgLCBtX2VuY29kZXIoV1RGTW92ZShlbmNvZGVyKSkKK3ZvaWQgR2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBl
bmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IElQQzo6Q29ubmVjdGlv
bjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKQogeworICAgICplbmNvZGVyIDw8IGNvbm5lY3Rp
b25IYW5kbGU7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rlcikp
OwogfQogCi1HZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Ojp+RGVsYXll
ZFJlcGx5KCkKK3ZvaWQgVGVzdE11bHRpcGxlQXR0cmlidXRlczo6c2VuZChzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikK
IHsKLSAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7Ci19Ci0KLWJvb2wgR2V0UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6c2VuZChjb25zdCBJUEM6OkNvbm5lY3Rpb246Okhh
bmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKLXsKLSAgICBBU1NFUlQobV9lbmNvZGVyKTsKLSAgICAq
bV9lbmNvZGVyIDw8IGNvbm5lY3Rpb25IYW5kbGU7Ci0gICAgYm9vbCBfcmVzdWx0ID0gbV9jb25u
ZWN0aW9uLT5zZW5kU3luY1JlcGx5KFdURk1vdmUobV9lbmNvZGVyKSk7Ci0gICAgbV9jb25uZWN0
aW9uID0gbnVsbHB0cjsKLSAgICByZXR1cm4gX3Jlc3VsdDsKLX0KLQotVGVzdE11bHRpcGxlQXR0
cmlidXRlczo6RGVsYXllZFJlcGx5OjpEZWxheWVkUmVwbHkoUmVmPElQQzo6Q29ubmVjdGlvbj4m
JiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVyKQotICAg
IDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCi0gICAgLCBtX2VuY29kZXIoV1RG
TW92ZShlbmNvZGVyKSkKLXsKLX0KLQotVGVzdE11bHRpcGxlQXR0cmlidXRlczo6RGVsYXllZFJl
cGx5Ojp+RGVsYXllZFJlcGx5KCkKLXsKLSAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7Ci19Ci0K
LWJvb2wgVGVzdE11bHRpcGxlQXR0cmlidXRlczo6RGVsYXllZFJlcGx5OjpzZW5kKCkKLXsKLSAg
ICBBU1NFUlQobV9lbmNvZGVyKTsKLSAgICBib29sIF9yZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNl
bmRTeW5jUmVwbHkoV1RGTW92ZShtX2VuY29kZXIpKTsKLSAgICBtX2Nvbm5lY3Rpb24gPSBudWxs
cHRyOwotICAgIHJldHVybiBfcmVzdWx0OworICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShX
VEZNb3ZlKGVuY29kZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQpJbmRleDogU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlcy1leHBlY3RlZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaAkocmV2
aXNpb24gMjMxOTA5KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlcy1l
eHBlY3RlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTgsMTcgKzM1OCw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5n
UmVmZXJlbmNlKCJHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiIpOyB9CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAotICAgIHN0cnVjdCBEZWxheWVkUmVwbHkgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVsYXllZFJlcGx5PiB7Ci0gICAgICAgIERlbGF5ZWRS
ZXBseShSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
Pik7Ci0gICAgICAgIH5EZWxheWVkUmVwbHkoKTsKLQotICAgICAgICBib29sIHNlbmQoY29uc3Qg
SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpOwotCi0gICAgcHJpdmF0
ZToKLSAgICAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBtX2VuY29kZXI7Ci0gICAgfTsKLQorICAg
IHVzaW5nIERlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpD
b25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpPjsKKyAgICBzdGF0aWMgdm9pZCBz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKTsKICAgICB0eXBl
ZGVmIHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmPiBSZXBseTsKICAgICBleHBs
aWNpdCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgp
CiAgICAgICAgIDogbV9hcmd1bWVudHMocGx1Z2luUGF0aCkKQEAgLTM5MiwxNyArMzgzLDggQEAg
cHVibGljOgogICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMiKTsgfQogICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CiAKLSAgICBzdHJ1Y3QgRGVsYXllZFJlcGx5
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERlbGF5ZWRSZXBseT4gewotICAgICAgICBE
ZWxheWVkUmVwbHkoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4pOwotICAgICAgICB+RGVsYXllZFJlcGx5KCk7Ci0KLSAgICAgICAgYm9vbCBzZW5k
KCk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb247Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IG1fZW5jb2Rl
cjsKLSAgICB9OwotCisgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPjsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYpOwogICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IFJlcGx5
OwogICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKICAgICB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHJldmlzaW9uIDIzMTkwOSkK
KysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTExOCwxNiArMTE4LDE0IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlv
bihtZXNzYWcKICAgICBpZiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZToKICAgICAg
ICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKERFTEFZRURfQVRUUklCVVRFKToKICAgICAgICAg
ICAgIHNlbmRfcGFyYW1ldGVycyA9IFsoZnVuY3Rpb25fcGFyYW1ldGVyX3R5cGUoeC50eXBlLCB4
LmtpbmQpLCB4Lm5hbWUpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10KLSAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdHJ1Y3QgRGVsYXllZFJlcGx5IDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPERlbGF5ZWRSZXBseT4ge1xuJykKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICAgICAgRGVsYXllZFJlcGx5KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+KTtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgICAgIH5EZWxheWVkUmVwbHkoKTtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCdcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIGJvb2wgc2VuZCgl
cyk7XG4nICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNd
KSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBwcml2YXRlOlxuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uO1xuJykKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gbV9l
bmNvZGVyO1xuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB9O1xuXG4nKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoJykKKyAgICAgICAgICAgIGlmIGxlbihzZW5kX3BhcmFtZXRlcnMpOgor
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyVzJyAlICcsICcuam9pbihbJyAnLmpvaW4o
eCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0ZXJzXSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCcpPjtcbicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZvaWQgc2Vu
ZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mJykKKyAg
ICAgICAgICAgIGlmIGxlbihzZW5kX3BhcmFtZXRlcnMpOgorICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJywgJXMnICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3Bh
cmFtZXRlcnNdKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyk7XG4nKQogCiAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICB0eXBlZGVmICVzIFJlcGx5O1xuJyAlIHJlcGx5X3R5cGUobWVz
c2FnZSkpCiAKQEAgLTUzNiwyNCArNTM0LDEyIEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRs
ZXIoZmlsZSk6CiAgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcblxuJyAlIG1lc3NhZ2UuY29uZGl0aW9uKQogCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCclczo6RGVsYXllZFJlcGx5OjpEZWxheWVkUmVwbHko
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiBlbmNvZGVyKVxuJyAlIG1lc3NhZ2UubmFtZSkKLSAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKVxuJykKLSAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAsIG1fZW5jb2RlcihXVEZNb3ZlKGVuY29kZXIpKVxu
JykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCd9XG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnJXM6OkRlbGF5ZWRSZXBseTo6fkRlbGF5ZWRSZXBseSgpXG4nICUg
bWVzc2FnZS5uYW1lKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7XG4nKQotICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xu
JykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ2Jvb2wgJXM6OkRlbGF5ZWRSZXBseTo6c2Vu
ZCglcylcbicgJSAobWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oWycgJy5qb2luKHgpIGZvciB4IGlu
IHNlbmRfcGFyYW1ldGVyc10pKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgQVNTRVJUKG1fZW5jb2Rlcik7XG4nKQotICAg
ICAgICAgICAgcmVzdWx0ICs9IFsnICAgICptX2VuY29kZXIgPDwgJXM7XG4nICUgeC5uYW1lIGZv
ciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10KLSAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAgICBib29sIF9yZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoV1RGTW92
ZShtX2VuY29kZXIpKTtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgbV9jb25u
ZWN0aW9uID0gbnVsbHB0cjtcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0
dXJuIF9yZXN1bHQ7XG4nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6c2Vu
ZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbicgJSAobWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgIGlmIGxlbihzZW5k
X3BhcmFtZXRlcnMpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJXMnICUgJywg
Jy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNdKSkKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJylcbntcbicpCisgICAgICAgICAgICByZXN1bHQgKz0gWycgICAg
KmVuY29kZXIgPDwgJXM7XG4nICUgeC5uYW1lIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1l
dGVyc10KKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjb25uZWN0aW9uLnNlbmRTeW5j
UmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
fVxuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzgsNyArMjM4LDcgQEAgcHVibGljOgogICAgICAgICB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNh
Z2U7CiAgICAgICAgIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlOwogICAgICAgICB1aW50
NjRfdCBleHBlY3RlZFVzYWdlOwotICAgICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+IHJlcGx5OworICAgICAgICBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBs
eSByZXBseTsKICAgICB9OwogCiAgICAgc3RhdGljIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29y
ZHMmIHNpbmdsZXRvbigpOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVjb3JkPiBjcmVhdGVSZWNvcmQodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9y
aWdpbklkZW50aWZpZXIsCiAgICAgICAgIFN0cmluZyBkYXRhYmFzZU5hbWUsIFN0cmluZyBkaXNw
bGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLAogICAgICAgICB1aW50NjRfdCBjdXJyZW50
T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBl
Y3RlZFVzYWdlLCAKLSAgICAgICAgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVk
RGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICAgICAgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHkmJik7CiAKICAgICB2
b2lkIGFkZChzdGQ6OnVuaXF1ZV9wdHI8UmVjb3JkPik7CiAgICAgYm9vbCBhcmVCZWluZ1Byb2Nl
c3NlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXJyZW50UmVjb3JkOyB9CkBAIC0yNjksNyArMjY5
LDcgQEAgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcyYgRXhjZWVkZWREYQogc3RkOjp1bmlx
dWVfcHRyPEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OlJlY29yZD4gRXhjZWVkZWREYXRh
YmFzZVF1b3RhUmVjb3Jkczo6Y3JlYXRlUmVjb3JkKAogICAgIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBvcmlnaW5JZGVudGlmaWVyLCBTdHJpbmcgZGF0YWJhc2VOYW1lLCBTdHJpbmcgZGlzcGxh
eU5hbWUsCiAgICAgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2lu
VXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLAotICAgIHVpbnQ2NF90IGV4cGVj
dGVkVXNhZ2UsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVv
dGE6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKKyAgICB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQogewogICAgIGF1dG8gcmVjb3JkID0gc3RkOjptYWtlX3VuaXF1ZTxSZWNvcmQ+
KCk7CiAgICAgcmVjb3JkLT5mcmFtZUlEID0gZnJhbWVJRDsKQEAgLTI0NDQsNyArMjQ0NCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KICAgICB9CiAKICAgICBp
ZiAoYXV0byBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5ID0gV1RGTW92ZShtX3N5bmNO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkpKSB7Ci0gICAgICAgIHN5bmNOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5UmVwbHktPnNlbmQobmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25J
RCgpIDogMCwgYWN0aW9uLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwor
ICAgICAgICBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5KG5hdmlnYXRpb24gPyBuYXZp
Z2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGFjdGlvbiwgZG93bmxvYWRJRCwgV1RGTW92ZSh3
ZWJzaXRlUG9saWNpZXMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDAzMyw3ICs0
MDMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgIG1f
c2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGZh
bHNlOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRp
b25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEm
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgQVNTRVJUKCFtX3N5bmNOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5UmVwbHkpOwogICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseSA9
IFdURk1vdmUocmVwbHkpOwpAQCAtNDA0Miw3ICs0MDQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYQogCiAgICAgLy8gSWYgdGhlIGNsaWVudCBkaWQgbm90IHJl
c3BvbmQgc3luY2hyb25vdXNseSwgcHJvY2VlZCB3aXRoIHRoZSBsb2FkLgogICAgIGlmIChhdXRv
IHN5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkgPSBXVEZNb3ZlKG1fc3luY05hdmlnYXRp
b25BY3Rpb25Qb2xpY3lSZXBseSkpCi0gICAgICAgIHN5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
UmVwbHktPnNlbmQobmF2aWdhdGlvbklELCBQb2xpY3lBY3Rpb246OlVzZSwgeyB9LCB7IH0pOwor
ICAgICAgICBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5KG5hdmlnYXRpb25JRCwgUG9s
aWN5QWN0aW9uOjpVc2UsIHsgfSwgeyB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCkBAIC00MjA1LDIwICs0MjA1LDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRh
dGVIaXN0b3J5VGl0bGUKIAogLy8gVUlDbGllbnQKIAotdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0
ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2lu
ZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1Bh
Z2U6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQ
YWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdpbmRvd0Zl
YXR1cmVzJiYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5
ZWRSZXBseSYmIHJlcGx5KQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLT53ZWJGcmFt
ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkpOwogICAgIGF1dG8gb3JpZ2luYXRp
bmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YSwgbV9wcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFnZUlEKSk7CiAKICAgICBhdXRv
IG1haW5GcmFtZVVSTCA9IG1fbWFpbkZyYW1lLT51cmwoKTsKIAotICAgIG1fdWlDbGllbnQtPmNy
ZWF0ZU5ld1BhZ2UoKnRoaXMsIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm8pLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHdpbmRvd0ZlYXR1cmVzKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0
aW9uRGF0YSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmUHRyPFdlYlBhZ2VQcm94eT4odGhp
cyksIG1haW5GcmFtZVVSTCwgcmVxdWVzdCwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oUmVmUHRy
PFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkgeworICAgIG1fdWlDbGllbnQtPmNyZWF0ZU5ld1BhZ2Uo
KnRoaXMsIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm8pLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHdpbmRvd0ZlYXR1cmVzKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1haW5GcmFtZVVSTCwgcmVxdWVz
dCwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkg
ewogICAgICAgICBpZiAoIW5ld1BhZ2UpIHsKLSAgICAgICAgICAgIHJlcGx5LT5zZW5kKDAsIHsg
fSk7CisgICAgICAgICAgICByZXBseSgwLCB7IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgcmVwbHktPnNlbmQobmV3UGFnZS0+cGFnZUlEKCksIG5ld1BhZ2Ut
PmNyZWF0aW9uUGFyYW1ldGVycygpKTsKKyAgICAgICAgcmVwbHkobmV3UGFnZS0+cGFnZUlEKCks
IG5ld1BhZ2UtPmNyZWF0aW9uUGFyYW1ldGVycygpKTsKIAogICAgICAgICBXZWJzaXRlRGF0YVN0
b3JlOjpjbG9uZVNlc3Npb25EYXRhKCp0aGlzLCAqbmV3UGFnZSk7CiAgICAgICAgIG5ld1BhZ2Ut
Pm1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9
IGhvc3RzQXJlRXF1YWwoVVJMKFBhcnNlZFVSTFN0cmluZywgbWFpbkZyYW1lVVJMKSwgcmVxdWVz
dC51cmwoKSk7CkBAIC00MjU0LDcgKzQyNTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2VQ
YWdlKGJvb2wgc3RvcFJlCiAgICAgbV91aUNsaWVudC0+Y2xvc2UodGhpcyk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVk
UmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNj
cmlwdEFsZXJ0OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBXZWJGcmFtZVByb3h5KiBm
cmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhm
cmFtZSk7CkBAIC00MjY2LDEyICs0MjY2LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0QWxlcnQodWkKICAgICAgICAgaWYgKGF1dG8qIGF1dG9tYXRpb25TZXNzaW9uID0gcHJv
Y2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKICAgICAgICAgICAgIGF1
dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAgIH0K
LSAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0QWxlcnQodGhpcywgbWVzc2FnZSwgZnJhbWUs
IHNlY3VyaXR5T3JpZ2luLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gewotICAgICAgICByZXBs
eS0+c2VuZCgpOwotICAgIH0pOworICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRBbGVydCh0
aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUocmVwbHkpKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25m
aXJtOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNj
cmlwdENvbmZpcm0odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAg
V2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAg
IE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwpAQCAtNDI4NCwxMiArNDI4MiwxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oCiAgICAgICAgICAgICBhdXRvbWF0aW9uU2Vz
c2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0aGlzKTsKICAgICB9CiAKLSAgICBtX3Vp
Q2xpZW50LT5ydW5KYXZhU2NyaXB0Q29uZmlybSh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJp
dHlPcmlnaW4sIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShib29sIHJlc3VsdCkgewotICAgICAg
ICByZXBseS0+c2VuZChyZXN1bHQpOwotICAgIH0pOworICAgIG1fdWlDbGllbnQtPnJ1bkphdmFT
Y3JpcHRDb25maXJtKHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgV1RGTW92
ZShyZXBseSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdFByb21wdCh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBSZWY8
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6RGVsYXllZFJlcGx5
PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9tcHQodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6RGVsYXllZFJlcGx5JiYgcmVwbHkp
CiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1l
SUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwpAQCAtNDMwMiw5ICs0Mjk4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9tcHQodQogICAgICAgICAgICAgYXV0b21h
dGlvblNlc3Npb24tPndpbGxTaG93SmF2YVNjcmlwdERpYWxvZygqdGhpcyk7CiAgICAgfQogCi0g
ICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdFByb21wdCh0aGlzLCBtZXNzYWdlLCBkZWZhdWx0
VmFsdWUsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKGNv
bnN0IFN0cmluZyYgcmVzdWx0KSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKHJlc3VsdCk7Ci0gICAg
fSk7CisgICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdFByb21wdCh0aGlzLCBtZXNzYWdlLCBk
ZWZhdWx0VmFsdWUsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgV1RGTW92ZShyZXBseSkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCkBA
IC00MzcyLDI0ICs0MzY2LDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1bmF2YWlsYWJsZVBsdWdp
bkJ1dHQKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2lmIEVOQUJM
RShXRUJHTCkKLXZvaWQgV2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChVUkwmJiB1cmws
IFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJl
cGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKFVSTCYm
IHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQogewogICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKICAgICAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT53ZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCwgW3JlcGx5ID0g
V1RGTW92ZShyZXBseSldKFdlYkdMTG9hZFBvbGljeSBwb2xpY3kpIHsKLSAgICAgICAgICAgIHJl
cGx5LT5zZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKKyAgICAgICAgICAgIHJl
cGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKICAgICAgICAgfSk7CiAgICAgfSBl
bHNlCi0gICAgICAgIHJlcGx5LT5zZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNs
aWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwpKSk7CisgICAgICAgIHJlcGx5KHN0YXRp
Y19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1
cmwpKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwo
VVJMJiYgdXJsLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5
Rm9yVVJMOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVz
b2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBpZiAo
bV9uYXZpZ2F0aW9uQ2xpZW50KSB7CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cmVzb2x2
ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oV2Vi
R0xMb2FkUG9saWN5IHBvbGljeSkgewotICAgICAgICAgICAgcmVwbHktPnNlbmQoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHBvbGljeSkpOworICAgICAgICAgICAgcmVwbHkoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHBvbGljeSkpOwogICAgICAgICB9KTsKICAgICB9IGVsc2UKLSAgICAgICAgcmVwbHkt
PnNlbmQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fbG9hZGVyQ2xpZW50LT5yZXNvbHZlV2ViR0xM
b2FkUG9saWN5KCp0aGlzLCB1cmwpKSk7CisgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQz
Ml90PihtX2xvYWRlckNsaWVudC0+cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSkp
OwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApAQCAtNDM5OCwxMSArNDM5Miw5IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRUb29sYmFyc0FyZVZpc2libGUKICAgICBtX3VpQ2xpZW50LT5z
ZXRUb29sYmFyc0FyZVZpc2libGUoKnRoaXMsIHRvb2xiYXJzQXJlVmlzaWJsZSk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpnZXRUb29sYmFyc0FyZVZpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJsZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQor
dm9pZCBXZWJQYWdlUHJveHk6OmdldFRvb2xiYXJzQXJlVmlzaWJsZShNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGU6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewot
ICAgIG1fdWlDbGllbnQtPnRvb2xiYXJzQXJlVmlzaWJsZSgqdGhpcywgW3JlcGx5ID0gV1RGTW92
ZShyZXBseSldKGJvb2wgdmlzaWJsZSkgewotICAgICAgICByZXBseS0+c2VuZCh2aXNpYmxlKTsK
LSAgICB9KTsKKyAgICBtX3VpQ2xpZW50LT50b29sYmFyc0FyZVZpc2libGUoKnRoaXMsIFdURk1v
dmUocmVwbHkpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lbnVCYXJJc1Zpc2libGUo
Ym9vbCBtZW51QmFySXNWaXNpYmxlKQpAQCAtNDQxMCwxMSArNDQwMiw5IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRNZW51QmFySXNWaXNpYmxlKGIKICAgICBtX3VpQ2xpZW50LT5zZXRNZW51QmFy
SXNWaXNpYmxlKCp0aGlzLCBtZW51QmFySXNWaXNpYmxlKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OmdldE1lbnVCYXJJc1Zpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1l
bnVCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpnZXRNZW51QmFySXNWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJ
c1Zpc2libGU6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIG1fdWlDbGllbnQtPm1lbnVC
YXJJc1Zpc2libGUoKnRoaXMsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAoYm9vbCB2aXNpYmxl
KSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKHZpc2libGUpOwotICAgIH0pOworICAgIG1fdWlDbGll
bnQtPm1lbnVCYXJJc1Zpc2libGUoKnRoaXMsIFdURk1vdmUocmVwbHkpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFN0YXR1c0JhcklzVmlzaWJsZShib29sIHN0YXR1c0JhcklzVmlzaWJs
ZSkKQEAgLTQ0MjIsMTEgKzQ0MTIsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3RhdHVzQmFy
SXNWaXNpYmxlCiAgICAgbV91aUNsaWVudC0+c2V0U3RhdHVzQmFySXNWaXNpYmxlKCp0aGlzLCBz
dGF0dXNCYXJJc1Zpc2libGUpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U3RhdHVzQmFy
SXNWaXNpYmxlKFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2li
bGU6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRTdGF0dXNC
YXJJc1Zpc2libGUoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3RhdHVzQmFySXNWaXNpYmxl
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBtX3VpQ2xpZW50LT5zdGF0dXNCYXJJc1Zp
c2libGUoKnRoaXMsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAoYm9vbCB2aXNpYmxlKSB7Ci0g
ICAgICAgIHJlcGx5LT5zZW5kKHZpc2libGUpOwotICAgIH0pOworICAgIG1fdWlDbGllbnQtPnN0
YXR1c0JhcklzVmlzaWJsZSgqdGhpcywgV1RGTW92ZShyZXBseSkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0SXNSZXNpemFibGUoYm9vbCBpc1Jlc2l6YWJsZSkKQEAgLTQ0MzksMTAgKzQ0
MjcsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFdpbmRvd0ZyYW1lKGNvbnN0IAogICAgIG1f
dWlDbGllbnQtPnNldFdpbmRvd0ZyYW1lKCp0aGlzLCBtX3BhZ2VDbGllbnQuY29udmVydFRvRGV2
aWNlU3BhY2UobmV3V2luZG93RnJhbWUpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldFdp
bmRvd0ZyYW1lKFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRXaW5kb3dGcmFtZTo6RGVs
YXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmdldFdpbmRvd0ZyYW1lKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lOjpEZWxheWVkUmVwbHkmJiByZXBs
eSkKIHsKICAgICBtX3VpQ2xpZW50LT53aW5kb3dGcmFtZSgqdGhpcywgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKEZsb2F0UmVj
dCBmcmFtZSkgewotICAgICAgICByZXBseS0+c2VuZChtX3BhZ2VDbGllbnQuY29udmVydFRvVXNl
clNwYWNlKGZyYW1lKSk7CisgICAgICAgIHJlcGx5KG1fcGFnZUNsaWVudC5jb252ZXJ0VG9Vc2Vy
U3BhY2UoZnJhbWUpKTsKICAgICB9KTsKIH0KIApAQCAtNDQ1MywxNCArNDQ0MSwxNCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0V2luZG93RnJhbWVXaXRoQ2FsCiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBzY3JlZW5Qb2lu
dCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmVlblRvUm9vdFZpZXc6OkRlbGF5ZWRS
ZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JiBzY3JlZW5Qb2ludCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyZWVuVG9S
b290Vmlldzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgcmVwbHktPnNlbmQobV9wYWdl
Q2xpZW50LnNjcmVlblRvUm9vdFZpZXcoc2NyZWVuUG9pbnQpKTsKKyAgICByZXBseShtX3BhZ2VD
bGllbnQuc2NyZWVuVG9Sb290VmlldyhzY3JlZW5Qb2ludCkpOwogfQogICAgIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnJvb3RWaWV3VG9TY3JlZW4oY29uc3QgSW50UmVjdCYgdmlld1JlY3QsIFJlZjxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVuOjpEZWxheWVkUmVwbHk+JiYg
cmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb1NjcmVlbihjb25zdCBJbnRSZWN0
JiB2aWV3UmVjdCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZpZXdUb1NjcmVlbjo6RGVs
YXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgcmVwbHktPnNlbmQobV9wYWdlQ2xpZW50LnJvb3RW
aWV3VG9TY3JlZW4odmlld1JlY3QpKTsKKyAgICByZXBseShtX3BhZ2VDbGllbnQucm9vdFZpZXdU
b1NjcmVlbih2aWV3UmVjdCkpOwogfQogICAgIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTQ0NzUs
NyArNDQ2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpyb290Vmlld1RvQWNjZXNzaWJpbGkKIH0K
ICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5PiByZXBseSkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWw6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1l
ID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1l
KTsKQEAgLTQ0ODgsNyArNDQ3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxv
YWRDb25maXIKICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3Jp
cHREaWFsb2coKnRoaXMpOwogICAgIH0KIAotICAgIG1fdWlDbGllbnQtPnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbCh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFtyZXBs
eV0oYm9vbCByZXN1bHQpIHsgcmVwbHktPnNlbmQocmVzdWx0KTsgfSk7CisgICAgbV91aUNsaWVu
dC0+cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBzZWN1
cml0eU9yaWdpbiwgV1RGTW92ZShyZXBseSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cikK
QEAgLTYyMDYsNyArNjE5NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVu
dGljYXQKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUluRnJhbWUoKnRoaXMsICpmcmFtZSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0
KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJl
bnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0
YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9p
ZCBXZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1l
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2
NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVp
bnQ2NF90IGV4cGVjdGVkVXNhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0
YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgRXhjZWVkZWREYXRhYmFz
ZVF1b3RhUmVjb3JkcyYgcmVjb3JkcyA9IEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OnNp
bmdsZXRvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNv
cmRzOjpSZWNvcmQ+IG5ld1JlY29yZCA9IHJlY29yZHMuY3JlYXRlUmVjb3JkKGZyYW1lSUQsCkBA
IC02MjIyLDIxICs2MjEwLDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNl
UXVvdGEKICAgICAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1l
KHJlY29yZC0+ZnJhbWVJRCk7CiAgICAgICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAg
ICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHJl
Y29yZC0+b3JpZ2luSWRlbnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgICAgICBhdXRv
IGN1cnJlbnRSZXBseSA9IHJlY29yZC0+cmVwbHk7Ci0gICAgICAgIG1fdWlDbGllbnQtPmV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YSh0aGlzLCBmcmFtZSwgb3JpZ2luLmdldCgpLAotICAgICAgICAgICAg
cmVjb3JkLT5kYXRhYmFzZU5hbWUsIHJlY29yZC0+ZGlzcGxheU5hbWUsIHJlY29yZC0+Y3VycmVu
dFF1b3RhLAotICAgICAgICAgICAgcmVjb3JkLT5jdXJyZW50T3JpZ2luVXNhZ2UsIHJlY29yZC0+
Y3VycmVudERhdGFiYXNlVXNhZ2UsIHJlY29yZC0+ZXhwZWN0ZWRVc2FnZSwKLSAgICAgICAgICAg
IFtjdXJyZW50UmVwbHldKHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSkgeyBjdXJyZW50UmVw
bHktPnNlbmQobmV3UXVvdGEpOyB9KTsKLQorICAgICAgICBhdXRvIG9yaWdpbiA9IEFQSTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50
aWZpZXIocmVjb3JkLT5vcmlnaW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAg
ICAgIG1fdWlDbGllbnQtPmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh0aGlzLCBmcmFtZSwgb3JpZ2lu
LnB0cigpLCByZWNvcmQtPmRhdGFiYXNlTmFtZSwgcmVjb3JkLT5kaXNwbGF5TmFtZSwgcmVjb3Jk
LT5jdXJyZW50UXVvdGEsIHJlY29yZC0+Y3VycmVudE9yaWdpblVzYWdlLCByZWNvcmQtPmN1cnJl
bnREYXRhYmFzZVVzYWdlLCByZWNvcmQtPmV4cGVjdGVkVXNhZ2UsIFdURk1vdmUocmVjb3JkLT5y
ZXBseSkpOwogICAgICAgICByZWNvcmQgPSByZWNvcmRzLm5leHQoKTsKICAgICB9CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRf
dCB0b3RhbEJ5dGVzTmVlZGVkLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBX
ZWJQYWdlUHJveHk6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3Ry
aW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRv
dGFsQnl0ZXNOZWVkZWQsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFJlZjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRh
YmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAg
bV91aUNsaWVudC0+cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh0aGlzLCBzZWN1
cml0eU9yaWdpbi5nZXQoKSwgY3VycmVudFF1b3RhLCB0b3RhbEJ5dGVzTmVlZGVkLCBbcmVwbHkg
PSBXVEZNb3ZlKHJlcGx5KV0odW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhKSB7IHJlcGx5LT5z
ZW5kKG5ld1F1b3RhKTsgfSk7CisgICAgbV91aUNsaWVudC0+cmVhY2hlZEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YSh0aGlzLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgY3VycmVudFF1b3RhLCB0
b3RhbEJ5dGVzTmVlZGVkLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgZ2VvbG9jYXRp
b25JRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjMxOTA5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyNDAsNyArMTI0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Rm9jdXMoYm9vbCBmb2N1
c2VkKTsKICAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYp
OwotICAgIHZvaWQgZ2V0V2luZG93RnJhbWUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okdl
dFdpbmRvd0ZyYW1lOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0V2luZG93RnJhbWUo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0V2luZG93RnJhbWU6OkRlbGF5ZWRSZXBseSYmKTsK
ICAgICB2b2lkIGdldFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoV2ViQ29y
ZTo6RmxvYXRSZWN0KT4mJik7CiAKICAgICBib29sIGlzUmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzUmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQ7IH0KQEAgLTEzOTEs
NyArMTM5MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50
NjRfdCBuYXZpZ2F0aW9uSUQpOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNl
ckRhdGEmKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmLCBS
ZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmM6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNv
bnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
dWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBv
bGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0
IFVzZXJEYXRhJik7CiAgICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsK
QEAgLTE0MDcsMTEgKzE0MDcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFVwZGF0ZUhpc3Rv
cnlUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgdWludDY0X3Qg
ZnJhbWVJRCk7CiAKICAgICAvLyBVSSBjbGllbnQKLSAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoY29u
c3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRl
bGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0Rh
dGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmKTsKICAg
ICB2b2lkIHNob3dQYWdlKCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5n
JiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXll
ZFJlcGx5PiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJl
cGx5PiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6
OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5n
JiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVkUmVw
bHkmJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYpOwor
ICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0OjpEZWxheWVkUmVwbHkm
Jik7CiAgICAgdm9pZCBzZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViSGl0VGVzdFJlc3VsdERhdGEmJiwgdWludDMyX3QgbW9k
aWZpZXJzLCBVc2VyRGF0YSYmKTsKIApAQCAtMTQxOSwyOSArMTQxOSwyOSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKHVpbnQzMl90IG9wYXF1ZVBs
dWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIHBsdWdpblVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwbHVnaW5zUGFnZVVSTFN0cmlu
ZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3Ry
aW5nKTsKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUo
V0VCR0wpCi0gICAgdm9pZCB3ZWJHTFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwmJiwgUmVmPE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHk+JiYp
OwotICAgIHZvaWQgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCYmLCBSZWY8
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVk
UmVwbHk+JiYpOworICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7
CisgICAgdm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5
JiYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIHNldFRvb2xiYXJzQXJlVmlz
aWJsZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSk7Ci0gICAgdm9pZCBnZXRUb29sYmFyc0FyZVZp
c2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJsZTo6
RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFRvb2xiYXJzQXJlVmlzaWJsZShNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGU6OkRlbGF5ZWRSZXBseSYmKTsK
ICAgICB2b2lkIHNldE1lbnVCYXJJc1Zpc2libGUoYm9vbCBtZW51QmFySXNWaXNpYmxlKTsKLSAg
ICB2b2lkIGdldE1lbnVCYXJJc1Zpc2libGUoUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okdl
dE1lbnVCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXRNZW51QmFy
SXNWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGU6OkRl
bGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNldFN0YXR1c0JhcklzVmlzaWJsZShib29sIHN0YXR1
c0JhcklzVmlzaWJsZSk7Ci0gICAgdm9pZCBnZXRTdGF0dXNCYXJJc1Zpc2libGUoUmVmPE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlzaWJsZTo6RGVsYXllZFJlcGx5PiYm
KTsKKyAgICB2b2lkIGdldFN0YXR1c0JhcklzVmlzaWJsZShNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpHZXRTdGF0dXNCYXJJc1Zpc2libGU6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNldElz
UmVzaXphYmxlKGJvb2wgaXNSZXNpemFibGUpOwotICAgIHZvaWQgc2NyZWVuVG9Sb290Vmlldyhj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2NyZWVuUG9pbnQsIFJlZjxNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTY3JlZW5Ub1Jvb3RWaWV3OjpEZWxheWVkUmVwbHk+JiYpOwotICAgIHZvaWQgcm9v
dFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgUmVmPE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJvb3RWaWV3VG9TY3JlZW46OkRlbGF5ZWRSZXBseT4mJik7Cisg
ICAgdm9pZCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Q
b2ludCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyZWVuVG9Sb290Vmlldzo6RGVsYXllZFJl
cGx5JiYpOworICAgIHZvaWQgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiB2aWV3UmVjdCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZpZXdUb1NjcmVlbjo6RGVs
YXllZFJlcGx5JiYpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIGFjY2Vzc2liaWxpdHlT
Y3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Qb2ludCwgV2Vi
Q29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KTsKICAgICB2b2lkIHJvb3RWaWV3VG9BY2Nlc3Np
YmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBXZWJDb3JlOjpJ
bnRSZWN0JiByZXN1bHQpOwogI2VuZGlmCi0gICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+KTsKKyAgICB2b2lkIHJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5JiYp
OwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZp
ZXdwb3J0QXR0cmlidXRlcyYpOwogICAgIHZvaWQgcGFnZURpZFNjcm9sbCgpOwogICAgIHZvaWQg
cnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKICAgICB2b2lk
IHByaW50RnJhbWUodWludDY0X3QgZnJhbWVJRCk7Ci0gICAgdm9pZCBleGNlZWRlZERhdGFiYXNl
UXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWlu
dDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90
IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBSZWY8TWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+JiYp
OwotICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJp
bmcmIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90
YWxCeXRlc05lZWRlZCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBleGNlZWRl
ZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2Us
IHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBs
eSYmKTsKKyAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90
IHRvdGFsQnl0ZXNOZWVkZWQsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHJlcXVlc3RH
ZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCB1aW50
NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpAQCAtMTk2MSw3ICsxOTYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNQ
ZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24geyBmYWxzZSB9OwogCiAgICAgLy8gU3luY2hyb25v
dXMgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24uCi0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVw
bHk+IG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseTsKKyAgICBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJl
cGx5IG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseTsKIAogICAgIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdDsKICAgICBib29s
IG1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiB7
IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzOCw3ICs1MzgsNyBAQCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgcmV0dXJuICptX25ldHdvcmtQcm9j
ZXNzOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0
d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1Byb2Nlc3NQcm94eSwgVmVjdG9yPFJlZjxNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseT4+JiYgcGVuZGluZ1JlcGxpZXMpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJv
Y2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1Byb2Nlc3NQcm94eSwgVmVj
dG9yPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5PiYmIHBlbmRpbmdSZXBsaWVzKQogewogICAgIG5ldHdvcmtQcm9jZXNz
RmFpbGVkVG9MYXVuY2gobmV0d29ya1Byb2Nlc3NQcm94eSk7CiAgICAgQVNTRVJUKCFtX25ldHdv
cmtQcm9jZXNzKTsKQEAgLTU2NCw3ICs1NjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3
b3JrUHJvY2Vzc0ZhaWxlCiAgICAgbV9uZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CiB9CiAKLXZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVk
UmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vz
cygpOwogICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzKTsKQEAgLTYxMSw3ICs2MTEsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjplbnN1cmVTdG9yYWdlUHJvY2VzCiAgICAgbV9zdG9yYWdlUHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkluaXRpYWxpemVXZWJzaXRlRGF0
YVN0b3JlKHJlbGV2YW50RGF0YVN0b3JlLT5zdG9yYWdlUHJvY2Vzc1BhcmFtZXRlcnMoKSksIDAp
OwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24o
V2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxT
ZXNzaW9uSUQsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQ
cm94eSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCwgTWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBs
eSkKIHsKICAgICBlbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0
ZURhdGFTdG9yZTo6ZXhpc3RpbmdOb25EZWZhdWx0RGF0YVN0b3JlRm9yU2Vzc2lvbklEKGluaXRp
YWxTZXNzaW9uSUQpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsMTQgKzMyNiwxNCBAQCBwdWJsaWM6
CiAgICAgLy8gTmV0d29yayBQcm9jZXNzIE1hbmFnZW1lbnQKICAgICBOZXR3b3JrUHJvY2Vzc1By
b3h5JiBlbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoV2Vic2l0ZURh
dGFTdG9yZSA9IG51bGxwdHIpOwogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9j
ZXNzKCkgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQotICAgIHZvaWQgbmV0d29y
a1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBWZWN0b3I8UmVmPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5Pj4mJik7CisgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQ
cm94eSYsIFZlY3RvcjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0Zh
aWxlZFRvTGF1bmNoKE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKIAotICAgIHZvaWQgZ2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXROZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAKICAgICB2b2lkIGVuc3VyZVN0
b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlKiByZWxldmFu
dERhdGFTdG9yZSk7CiAgICAgU3RvcmFnZVByb2Nlc3NQcm94eSogc3RvcmFnZVByb2Nlc3MoKSB7
IHJldHVybiBtX3N0b3JhZ2VQcm9jZXNzLmdldCgpOyB9Ci0gICAgdm9pZCBnZXRTdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNl
c3Npb25JRCwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lv
bklELCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHN0b3JhZ2VQcm9jZXNzQ3Jhc2hlZChTdG9y
YWdlUHJvY2Vzc1Byb3h5Kik7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQg
ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzKFN0b3JhZ2VQ
cm9jZXNzUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgc3RkOjpvcHRpb25h
bDxQQUw6OlNlc3Npb25JRD4pOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODQsMTggKzU4NCwx
OCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0UGx1Z2lucyhib29sIHJlCiAjZW5kaWYgLy8g
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1
aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBs
dWdpblByb2Nlc3NUb2tlbiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFBsdWdpblByb2Nl
c3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5nZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVnaW5Q
cm9jZXNzVG9rZW4sIFdURk1vdmUocmVwbHkpKTsKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nl
c3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiBy
ZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpE
ZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBtX3Byb2Nlc3NQb29sLT5nZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oV1RGTW92ZShyZXBseSkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94
eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNz
aW9uSUQsIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpn
ZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25J
RCwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBtX3Byb2Nlc3NQb29sLT5nZXRTdG9yYWdl
UHJvY2Vzc0Nvbm5lY3Rpb24oKnRoaXMsIGluaXRpYWxTZXNzaW9uSUQsIFdURk1vdmUocmVwbHkp
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShy
ZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYxLDEwICsyNjEsMTAgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGdldFBsdWdpbnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4m
IHBsdWdpbnMsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYgYXBwbGljYXRpb25QbHVnaW5z
LCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5OYW1lPj4mKTsK
ICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKLSAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2
NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5JiYpOwogI2VuZGlmCi0gICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5PiYmKTsKLSAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
bihQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklELCBSZWY8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwor
ICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOworICAg
IHZvaWQgZ2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIGluaXRpYWxT
ZXNzaW9uSUQsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogCiAgICAgYm9vbCBwbGF0Zm9ybUlzQmVpbmdEZWJ1
Z2dlZCgpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkQWxsb3dOb25WYWxpZEluamVjdGVkQ29kZSgp
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9j
ZXNzV2lsbFNodQogICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgdGhpcy0+Y29ubmVjdGlv
bigpID09ICZjb25uZWN0aW9uKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5hcHBlbmQoV1RG
TW92ZShyZXBseSkpOwogCkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpuZXR3b3JrUHJvY2VzcwogewogICAgIGNsZWFyQ2FsbGJhY2tTdGF0ZXMoKTsKIAotICAg
IFZlY3RvcjxSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBwZW5kaW5nUmVwbGllczsKKyAgICBWZWN0b3I8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+IHBlbmRpbmdSZXBsaWVzOwogICAgIHBlbmRpbmdSZXBsaWVzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuc2l6ZSgpKTsKICAgICBmb3Ig
KGF1dG8mIHJlcGx5IDogbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMpCiAgICAgICAgIHBlbmRp
bmdSZXBsaWVzLmFwcGVuZChXVEZNb3ZlKHJlcGx5KSk7CkBAIC0yMDYsMTIgKzIwNiwxMiBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzCiB7CiAgICAgLy8gVGhlIG5l
dHdvcmsgcHJvY2VzcyBtdXN0IGhhdmUgY3Jhc2hlZCBvciBleGl0ZWQsIHNlbmQgYW55IHBlbmRp
bmcgc3luYyByZXBsaWVzIHdlIG1pZ2h0IGhhdmUuCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdDb25u
ZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBs
eSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworICAgICAgICBhdXRv
IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNpZiBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykgfHwgT1MoV0lORE9XUykKLSAgICAgICAgcmVwbHktPnNl
bmQoSVBDOjpBdHRhY2htZW50KCkpOworICAgICAgICByZXBseShJUEM6OkF0dGFjaG1lbnQoKSk7
CiAjZWxpZiBPUyhEQVJXSU4pCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgw
LCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOworICAgICAgICByZXBseShJUEM6OkF0dGFjaG1l
bnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKICNlbHNlCiAgICAgICAgIG5vdEltcGxl
bWVudGVkKCk7CiAjZW5kaWYKQEAgLTI4NSwxMiArMjg1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6ZGlkQ3JlYXRlTmV0d28KICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25S
ZXBsaWVzLmlzRW1wdHkoKSk7CiAKICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5l
Y3Rpb24gcmVwbHkuCi0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworICAgIGF1dG8gcmVwbHkgPSBtX3BlbmRpbmdD
b25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NL
RVRTKSB8fCBPUyhXSU5ET1dTKQotICAgIHJlcGx5LT5zZW5kKGNvbm5lY3Rpb25JZGVudGlmaWVy
KTsKKyAgICByZXBseShjb25uZWN0aW9uSWRlbnRpZmllcik7CiAjZWxpZiBPUyhEQVJXSU4pCi0g
ICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQo
KSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKKyAgICByZXBseShJUEM6OkF0dGFjaG1lbnQo
Y29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOwog
I2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2
aXNpb24gMjMxOTA5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8TmV0d29ya1Byb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29s
Jik7CiAgICAgfk5ldHdvcmtQcm9jZXNzUHJveHkoKTsKIAotICAgIHZvaWQgZ2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBnZXROZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJik7CiAKICAgICBEb3dubG9hZFByb3h5KiBj
cmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCkBA
IC0xNTQsMTEgKzE1NCwxMSBAQCBwcml2YXRlOgogICAgIFdlYlByb2Nlc3NQb29sJiBtX3Byb2Nl
c3NQb29sOwogICAgIAogICAgIHVuc2lnbmVkIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0
czsKLSAgICBEZXF1ZTxSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGll
czsKKyAgICBEZXF1ZTxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CiAK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4+
IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRf
dCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxs
YmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9w
ZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8
dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoV2Vic2l0ZURhdGEpPj4gbV9wZW5kaW5nRmV0Y2hXZWJz
aXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkKCk+
PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2
NF90LCBGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdp
bnNDYWxsYmFja3M7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWRQcm94eU1hcD4gbV9k
b3dubG9hZFByb3h5TWFwOwogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFH
RVIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjMxOTA5KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgxLDcgKzgxLDcgQEAgdWludDY0X3QgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnBs
dWdpblBybwogICAgIHJldHVybiB0b2tlbjsKIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdl
cjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2Vu
LCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6Omdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgTWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseSYmIHJlcGx5KQogewogICAgIEFTU0VSVChwbHVnaW5Qcm9jZXNzVG9rZW4pOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzTWFuYWdlci5oCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuKGNv
bnN0IFBsdWdpbk1vZHVsZUluZm8mLCBQbHVnaW5Qcm9jZXNzVHlwZSwgUGx1Z2luUHJvY2Vzc1Nh
bmRib3hQb2xpY3kpOwogCi0gICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50
NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgTWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseSYmKTsKICAgICB2b2lkIHJlbW92ZVBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9j
ZXNzUHJveHkqKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShjb25zdCBQbHVnaW5Nb2R1
bGVJbmZvJiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJv
eHkuY3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIs
NyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxTaHV0CiAKIC8vIEFza3Mg
dGhlIHBsdWctaW4gcHJvY2VzcyB0byBjcmVhdGUgYSBuZXcgY29ubmVjdGlvbiB0byBhIHdlYiBw
cm9jZXNzLiBUaGUgY29ubmVjdGlvbiBpZGVudGlmaWVyIHdpbGwgYmUgCiAvLyBlbmNvZGVkIGlu
IHRoZSBnaXZlbiBhcmd1bWVudCBlbmNvZGVyIGFuZCBzZW50IGJhY2sgdG8gdGhlIGNvbm5lY3Rp
b24gb2YgdGhlIGdpdmVuIHdlYiBwcm9jZXNzLgotdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6Omdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBQ
bHVnaW5Qcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkm
JiByZXBseSkKIHsKICAgICBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5hcHBlbmQoV1RGTW92
ZShyZXBseSkpOwogCkBAIC0xNTksMTIgKzE1OSwxMiBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94
eTo6cGx1Z2luUHJvY2Vzc0NyCiB7CiAgICAgLy8gVGhlIHBsdWctaW4gcHJvY2VzcyBtdXN0IGhh
dmUgY3Jhc2hlZCBvciBleGl0ZWQsIHNlbmQgYW55IHBlbmRpbmcgc3luYyByZXBsaWVzIHdlIG1p
Z2h0IGhhdmUuCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVj
dGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CisgICAgICAgIGF1dG8gcmVwbHkgPSBtX3BlbmRpbmdD
b25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NL
RVRTKQotICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoKSwgZmFsc2UpOworICAg
ICAgICByZXBseShJUEM6OkF0dGFjaG1lbnQoKSwgZmFsc2UpOwogI2VsaWYgT1MoREFSV0lOKQot
ICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZF
X1NFTkQpLCBmYWxzZSk7CisgICAgICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgwLCBNQUNIX01T
R19UWVBFX01PVkVfU0VORCksIGZhbHNlKTsKICNlbHNlCiAgICAgICAgIG5vdEltcGxlbWVudGVk
KCk7CiAjZW5kaWYKQEAgLTI3NiwxMiArMjc2LDEyIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5
OjpkaWRDcmVhdGVXZWJQcm8KICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LmlzRW1wdHkoKSk7CiAKICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24g
cmVwbHkuCi0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlv
blJlcGxpZXMudGFrZUZpcnN0KCk7CisgICAgYXV0byByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rp
b25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0g
ICAgcmVwbHktPnNlbmQoY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3Vz
UGx1Z2luSW5pdGlhbGl6YXRpb24pOworICAgIHJlcGx5KGNvbm5lY3Rpb25JZGVudGlmaWVyLCBz
dXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKICNlbGlmIE9TKERBUldJ
TikKLSAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIu
cG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCksIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb24pOworICAgIHJlcGx5KElQQzo6QXR0YWNobWVudChjb25uZWN0aW9u
SWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgc3VwcG9ydHNBc3lu
Y2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjMxOTA5KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBBc2tzIHRoZSBwbHVnLWluIHBy
b2Nlc3MgdG8gY3JlYXRlIGEgbmV3IGNvbm5lY3Rpb24gdG8gYSB3ZWIgcHJvY2Vzcy4gVGhlIGNv
bm5lY3Rpb24gaWRlbnRpZmllciB3aWxsIGJlCiAgICAgLy8gZW5jb2RlZCBpbiB0aGUgZ2l2ZW4g
YXJndW1lbnQgZW5jb2RlciBhbmQgc2VudCBiYWNrIHRvIHRoZSBjb25uZWN0aW9uIG9mIHRoZSBn
aXZlbiB3ZWIgcHJvY2Vzcy4KLSAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFJl
ZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHkmJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoV1RGOjpGdW5jdGlvbjx2
b2lkIChWZWN0b3I8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgZGVs
ZXRlV2Vic2l0ZURhdGEoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgV1RGOjpGdW5jdGlvbjx2b2lk
ICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcml2YXRlOgog
ICAgIC8vIFRoZSBjb25uZWN0aW9uIHRvIHRoZSBwbHVnLWluIGhvc3QgcHJvY2Vzcy4KICAgICBS
ZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAKLSAgICBEZXF1ZTxSZWZQdHI8
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOworICAgIERlcXVlPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVk
UmVwbHk+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90
PiBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhUmVxdWVzdHM7CiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChWZWN0b3I8U3RyaW5nPik+PiBtX3BlbmRpbmdGZXRjaFdl
YnNpdGVEYXRhQ2FsbGJhY2tzOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMzE5MDkp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vz
c1Byb3h5OjpkZWxldGVXZWJzaXRlRAogICAgIHNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNz
OjpEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoc2Vzc2lvbklELCBkYXRhVHlwZXMsIG9yaWdp
bnMsIGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpnZXRT
dG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHks
IFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0
U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5
LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LmFwcGVuZChXVEZNb3ZlKHJlcGx5KSk7CiAKQEAgLTE0MCw5ICsxNDAsOSBAQCB2b2lkIFN0b3Jh
Z2VQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6CiAgICAgICAgIGF1dG8gcmVwbHkgPSBtX3Bl
bmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklYX0RPTUFJ
Tl9TT0NLRVRTKQotICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoKSk7CisgICAg
ICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgpKTsKICNlbGlmIE9TKERBUldJTikKLSAgICAgICAg
cmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7
CisgICAgICAgIHJlcGx5KElQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VO
RCkpOwogI2Vsc2UKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpAQCAtMTcyLDEy
ICsxNzIsMTIgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVTdG9yYQogewog
ICAgIEFTU0VSVCghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKTsKIAotICAg
IFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50
YWtlRmlyc3QoKTsKKyAgICBhdXRvIHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMu
dGFrZUZpcnN0KCk7CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICByZXBseS0+
c2VuZChjb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgcmVwbHkoY29ubmVjdGlvbklkZW50aWZp
ZXIpOwogI2VsaWYgT1MoREFSV0lOKQotICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudChj
b25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7Cisg
ICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFD
SF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vz
c1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9T
dG9yYWdlUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRT
aW5jZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZv
aWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4mLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKLSAgICB2
b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBSZWY8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFdlYlBy
b2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOwogCiBwcml2YXRlOgogICAgIFN0b3JhZ2VQcm9j
ZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmKTsKQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9jZXNzUG9vbDsKIAogICAgIHVuc2lnbmVkIG1fbnVtUGVu
ZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsKLSAgICBEZXF1ZTxSZWY8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBtX3Bl
bmRpbmdDb25uZWN0aW9uUmVwbGllczsKKyAgICBEZXF1ZTxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gbV9wZW5kaW5n
Q29ubmVjdGlvblJlcGxpZXM7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKFdlYnNpdGVEYXRhKT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5n
RGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3M7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0NCwxMSArMjQ0LDkgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6dGVybQogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtl
cihpZGVudGlmaWVyLCBhc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgbnVsbHB0cik7CiB9
CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3Jr
ZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPE1lc3NhZ2VzOjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlcjo6RGVsYXllZFJl
cGx5PiYmIHJlcGx5KQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rl
cm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRl
bGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0
LCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gewotICAgICAgICByZXBseS0+c2VuZCgpOwotICAg
IH0pOworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihp
ZGVudGlmaWVyLCBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBXVEZNb3ZlKHJlcGx5KSk7
CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBk
ZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VPcmlnaW4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgJKHJldmlz
aW9uIDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIpOwogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXIoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxNZXNzYWdlczo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRlbGF5ZWRSZXBseT4mJik7
CisgICAgdm9pZCBzeW5jVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJt
aW5hdGVXb3JrZXI6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50
aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJv
cik7CiAgICAgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJ
ZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpOwog
ICAgIHZvaWQgY2xhaW1Db21wbGV0ZWQodWludDY0X3QgY2xhaW1SZXF1ZXN0SWRlbnRpZmllcik7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZp
c2lvbiAyMzE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgxNCw3ICs4MTQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKElPUykKLSAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQsIFJl
ZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6
OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERy
YXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFja0lELCBN
ZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRl
bGF5ZWRSZXBseSYmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJl
dmlzaW9uIDIzMTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOTkwLDEwICsyOTkwLDEwIEBAIHZvaWQg
V2ViUGFnZTo6ZGlzcGF0Y2hBc3luY2hyb25vdXNUb3VjaEUKIH0KICNlbmRpZgogCi12b2lkIFdl
YlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQsIFJl
ZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6
OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmlu
dEluZm8sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCwgTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQ
YWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAg
ICBpZiAocHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlKSB7Ci0gICAgICAgIHJlcGx5LT5zZW5k
KDEpOworICAgICAgICByZXBseSgxKTsKICAgICAgICAgSW50U2l6ZSBzbmFwc2hvdFNpemUgeyBG
bG9hdFNpemUgeyBwcmludEluZm8uYXZhaWxhYmxlUGFwZXJXaWR0aCwgcHJpbnRJbmZvLmF2YWls
YWJsZVBhcGVySGVpZ2h0IH0gfTsKICAgICAgICAgSW50UmVjdCBzbmFwc2hvdFJlY3QgeyB7MCwg
MH0sIHNuYXBzaG90U2l6ZSB9OwogICAgICAgICBhdXRvIHBkZkRhdGEgPSBwZGZTbmFwc2hvdEF0
U2l6ZShzbmFwc2hvdFJlY3QsIHNuYXBzaG90U2l6ZSwgMCk7CkBAIC0zMDA4LDcgKzMwMDgsNyBA
QCB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kCiAgICAgQVNTRVJUKHBh
Z2VSZWN0cy5zaXplKCkgPj0gMSk7CiAgICAgc3RkOjpzaXplX3QgcGFnZUNvdW50ID0gcGFnZVJl
Y3RzLnNpemUoKTsKICAgICBBU1NFUlQocGFnZUNvdW50IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDMyX3Q+OjptYXgoKSk7Ci0gICAgcmVwbHktPnNlbmQocGFnZUNvdW50KTsKKyAgICByZXBs
eShwYWdlQ291bnQpOwogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VE
YXRhOwogICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIDAsIHBhZ2VD
b3VudCwgcGRmUGFnZURhdGEpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>