<?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>175141</bug_id>
          
          <creation_ts>2017-08-03 11:20:23 -0700</creation_ts>
          <short_desc>The allocator used to allocate memory for MarkedBlocks and LargeAllocations should not be the Subspace itself</short_desc>
          <delta_ts>2017-08-04 13:51:35 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>174919</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>buildbot</cc>
    
    <cc>mark.lam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1334845</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-03 11:20:23 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334865</commentid>
    <comment_count>1</comment_count>
      <attachid>317136</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-03 11:59:41 -0700</bug_when>
    <thetext>Created attachment 317136
it&apos;s a start</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334890</commentid>
    <comment_count>2</comment_count>
      <attachid>317139</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-03 12:38:34 -0700</bug_when>
    <thetext>Created attachment 317139
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334892</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-03 12:41:31 -0700</bug_when>
    <thetext>Attachment 317139 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/AlignedMemoryAllocator.h:39:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/GigacageAlignedMemoryAllocator.h:41:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/ForwardingHeaders/heap/FastMallocAlignedMemoryAllocator.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
ERROR: Source/JavaScriptCore/heap/FastMallocAlignedMemoryAllocator.h:38:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334895</commentid>
    <comment_count>4</comment_count>
      <attachid>317139</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-03 12:58:32 -0700</bug_when>
    <thetext>Comment on attachment 317139
the patch

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

r=me with suggestions.

&gt; Source/JavaScriptCore/heap/MarkedBlock.cpp:337
&gt; +    RELEASE_ASSERT(m_allocator-&gt;subspace()-&gt;alignedMemoryAllocator() == m_alignedMemoryAllocator);

just use subspace() instead of m_allocator-&gt;subspace().

&gt; Source/JavaScriptCore/heap/MarkedBlock.cpp:400
&gt; +Subspace* MarkedBlock::Handle::subspace() const
&gt; +{
&gt; +    return allocator()-&gt;subspace();
&gt; +}

Is there any reason this should not be an inline function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334898</commentid>
    <comment_count>5</comment_count>
      <attachid>317139</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-03 12:59:58 -0700</bug_when>
    <thetext>Comment on attachment 317139
the patch

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

&gt; Source/JavaScriptCore/heap/AlignedMemoryAllocator.h:39
&gt; +    virtual void* tryAllocateAlignedMemory(size_t alignment, size_t size) = 0;

Please also fix the style-checker complaint and remove the unneeded size label.

&gt; Source/JavaScriptCore/heap/FastMallocAlignedMemoryAllocator.h:38
&gt; +    void* tryAllocateAlignedMemory(size_t alignment, size_t size) override;

Please also fix the style-checker complaint and remove the unneeded size label.

&gt; Source/JavaScriptCore/heap/GigacageAlignedMemoryAllocator.h:41
&gt; +    void* tryAllocateAlignedMemory(size_t alignment, size_t size) override;

Please also fix the style-checker complaint and remove the unneeded size label.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334915</commentid>
    <comment_count>6</comment_count>
      <attachid>317139</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-03 13:26:47 -0700</bug_when>
    <thetext>Comment on attachment 317139
the patch

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

&gt; Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:902
&gt; +		0FEC3C571F33A45300F59B6C /* FastMallocAlignedMemoryAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEC3C551F33A45300F59B6C /* FastMallocAlignedMemoryAllocator.h */; };

You need to give this the Private attribute in Xcode (or do what the entry for VM.h does).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334917</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-03 13:28:44 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #5)
&gt; Comment on attachment 317139 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=317139&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/AlignedMemoryAllocator.h:39
&gt; &gt; +    virtual void* tryAllocateAlignedMemory(size_t alignment, size_t size) = 0;
&gt; 
&gt; Please also fix the style-checker complaint and remove the unneeded size
&gt; label.
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/FastMallocAlignedMemoryAllocator.h:38
&gt; &gt; +    void* tryAllocateAlignedMemory(size_t alignment, size_t size) override;
&gt; 
&gt; Please also fix the style-checker complaint and remove the unneeded size
&gt; label.
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/GigacageAlignedMemoryAllocator.h:41
&gt; &gt; +    void* tryAllocateAlignedMemory(size_t alignment, size_t size) override;
&gt; 
&gt; Please also fix the style-checker complaint and remove the unneeded size
&gt; label.

I think that the style checker is wrong here.  It&apos;s true that the word &quot;size&quot; appears in the type &quot;size_t&quot;, but since this is a memory allocation and one of the size_t&apos;s is named alignment, it&apos;s a lot clearer to name the other one &quot;size&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334919</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-03 13:29:28 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #6)
&gt; Comment on attachment 317139 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=317139&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:902
&gt; &gt; +		0FEC3C571F33A45300F59B6C /* FastMallocAlignedMemoryAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEC3C551F33A45300F59B6C /* FastMallocAlignedMemoryAllocator.h */; };
&gt; 
&gt; You need to give this the Private attribute in Xcode (or do what the entry
&gt; for VM.h does).

Fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334920</commentid>
    <comment_count>9</comment_count>
      <attachid>317145</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-03 13:30:04 -0700</bug_when>
    <thetext>Created attachment 317145
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334921</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-03 13:32:30 -0700</bug_when>
    <thetext>Attachment 317145 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/AlignedMemoryAllocator.h:39:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/GigacageAlignedMemoryAllocator.h:41:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/ForwardingHeaders/heap/FastMallocAlignedMemoryAllocator.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
ERROR: Source/JavaScriptCore/heap/FastMallocAlignedMemoryAllocator.h:38:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334933</commentid>
    <comment_count>11</comment_count>
      <attachid>317150</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-03 14:10:25 -0700</bug_when>
    <thetext>Created attachment 317150
patch for landing

More build fixing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334934</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-03 14:11:51 -0700</bug_when>
    <thetext>Attachment 317150 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/AlignedMemoryAllocator.h:39:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/GigacageAlignedMemoryAllocator.h:41:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/ForwardingHeaders/heap/FastMallocAlignedMemoryAllocator.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
ERROR: Source/JavaScriptCore/heap/FastMallocAlignedMemoryAllocator.h:38:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334936</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-03 14:15:59 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #4)
&gt; Comment on attachment 317139 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=317139&amp;action=review
&gt; 
&gt; r=me with suggestions.
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/MarkedBlock.cpp:337
&gt; &gt; +    RELEASE_ASSERT(m_allocator-&gt;subspace()-&gt;alignedMemoryAllocator() == m_alignedMemoryAllocator);
&gt; 
&gt; just use subspace() instead of m_allocator-&gt;subspace().

I fixed it to say allocator-&gt;subspace(), and I moved it to before where we set m_allocator.  It feels nicer to validate before making changes.

&gt; 
&gt; &gt; Source/JavaScriptCore/heap/MarkedBlock.cpp:400
&gt; &gt; +Subspace* MarkedBlock::Handle::subspace() const
&gt; &gt; +{
&gt; &gt; +    return allocator()-&gt;subspace();
&gt; &gt; +}
&gt; 
&gt; Is there any reason this should not be an inline function?

It totally can be!  This is actually a revert.  This is how it worked before I did the block trading patch in the last week or so.

In general, these per-block functions can usually be out-of-line because very few of them are on hot paths, or they are only on hot paths that are in the MarkedBlock.cpp module anyway.  I have a slight out-of-line bias because when debugging it&apos;s nice to have out-of-line functions to instrument since it means not having to rebuild the world.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335436</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-04 13:51:11 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/220291/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317136</attachid>
            <date>2017-08-03 11:59:41 -0700</date>
            <delta_ts>2017-08-03 12:38:34 -0700</delta_ts>
            <desc>it&apos;s a start</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>52708</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjAxNjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDY0LDggKzQ2NCw2IEBACiAJCTBGNUE2Mjg0MTg4Qzk4
RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVBNjI4MjE4OEM5OEQ0MDA3MkM5REYgLyogRlRMVmFsdWVS
YW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGNUFFMkM0MURGNEYyODAwMDY2RUZFMSAvKiBWTUlubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFOTBCQjNBMUI3Q0Y2NEUwMDZCM0YwMyAv
KiBWTUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjVCNEEzMzFDODRGMEQ2MDBGMUIxN0UgLyogU2xvd1BhdGhSZXR1cm5UeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCNEEzMjFD
ODRGMEQ2MDBGMUIxN0UgLyogU2xvd1BhdGhSZXR1cm5UeXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEY1QkYxNTYxRjIyRUIxNzAwMjlEOTFE
IC8qIEdpZ2FjYWdlU3Vic3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1QkYxNTQxRjIyRUIxNzAwMjlEOTFEIC8qIEdpZ2FjYWdlU3Vic3Bh
Y2UuY3BwICovOyB9OwotCQkwRjVCRjE1NzFGMjJFQjE3MDAyOUQ5MUQgLyogR2lnYWNhZ2VTdWJz
cGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1
QkYxNTUxRjIyRUIxNzAwMjlEOTFEIC8qIEdpZ2FjYWdlU3Vic3BhY2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVCRjE2MzFGMjMxNzEyMDAy
OUQ5MUQgLyogQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QkYxNjExRjIzMTcxMjAwMjlEOTFEIC8q
IEIzSG9pc3RMb29wSW52YXJpYW50VmFsdWVzLmNwcCAqLzsgfTsKIAkJMEY1QkYxNjQxRjIzMTcx
MjAwMjlEOTFEIC8qIEIzSG9pc3RMb29wSW52YXJpYW50VmFsdWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE2MjFGMjMxNzEyMDAyOUQ5MUQg
LyogQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMuaCAqLzsgfTsKIAkJMEY1QkYxNjcxRjIzQTA5
ODAwMjlEOTFEIC8qIEIzQmFja3dhcmRzQ0ZHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE2NjFGMjNBMDk4MDAyOUQ5MUQgLyogQjNCYWNrd2Fy
ZHNDRkcuaCAqLzsgfTsKQEAgLTg5OCw2ICs4OTYsMTIgQEAKIAkJMEZFQTBBMzMxNzBENDBCRjAw
QkI3MjJDIC8qIERGR0pJVENvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZFQTBBMkYxNzBENDBCRjAwQkI3MjJDIC8qIERGR0pJVENvZGUuY3Bw
ICovOyB9OwogCQkwRkVBMEEzNDE3MEQ0MEJGMDBCQjcyMkMgLyogREZHSklUQ29kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTBBMzAxNzBENDBC
RjAwQkI3MjJDIC8qIERGR0pJVENvZGUuaCAqLzsgfTsKIAkJMEZFQjNFQ0YxNjIzN0Y2QzAwQUI2
N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRUIzRUNFMTYyMzdGNjcwMEFCNjdBRCAvKiBNYWNyb0Fzc2VtYmxl
ci5jcHAgKi87IH07CisJCTBGRUMzQzUyMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRUMzQzUwMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNw
cCAqLzsgfTsKKwkJMEZFQzNDNTMxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxv
Y2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RUMzQzUxMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi87IH07
CisJCTBGRUMzQzU2MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFs
bG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkVDM0M1NDFGMzNBNDUzMDBGNTlCNkMgLyogRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3IuY3BwICovOyB9OworCQkwRkVDM0M1NzFGMzNBNDUzMDBGNTlCNkMgLyogRmFzdE1hbGxv
Y0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRUMzQzU1MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0TWFsbG9jQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5oICovOyB9OworCQkwRkVDM0M1QTFGMzNBNDg5MDBGNTlCNkMg
LyogR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUMzQzU4MUYzM0E0ODkwMEY1OUI2QyAvKiBH
aWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwICovOyB9OworCQkwRkVDM0M1QjFGMzNB
NDg5MDBGNTlCNkMgLyogR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDM0M1OTFGMzNBNDg5MDBG
NTlCNkMgLyogR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi87IH07CiAJCTBGRUM4
NEZFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0QjQxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzQXJndW1lbnRSZWdWYWx1ZS5jcHAgKi87IH07CiAJCTBGRUM4NEZGMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEI1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3Vt
ZW50UmVnVmFsdWUuaCAqLzsgfTsKIAkJMEZFQzg1MDAxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFz
aWNCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkVDODRCNjFCREFDREFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrLmNwcCAqLzsgfTsKQEAg
LTMwNTMsOCArMzA1Nyw2IEBACiAJCTBGNUE2MjgxMTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1
ZVJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFZhbHVl
UmFuZ2UuY3BwOyBwYXRoID0gZnRsL0ZUTFZhbHVlUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjVBNjI4MjE4OEM5OEQ0MDA3MkM5REYgLyogRlRMVmFsdWVSYW5nZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExWYWx1ZVJhbmdlLmg7IHBhdGgg
PSBmdGwvRlRMVmFsdWVSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVC
NEEzMjFDODRGMEQ2MDBGMUIxN0UgLyogU2xvd1BhdGhSZXR1cm5UeXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNsb3dQYXRoUmV0dXJuVHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwRjVCRjE1NDFGMjJFQjE3MDAyOUQ5MUQgLyogR2lnYWNhZ2VTdWJz
cGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHaWdhY2FnZVN1YnNwYWNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY1QkYxNTUxRjIyRUIxNzAwMjlEOTFEIC8qIEdpZ2Fj
YWdlU3Vic3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2lnYWNhZ2VTdWJzcGFjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVCRjE2MTFGMjMxNzEyMDAyOUQ5MUQgLyogQjNIb2lz
dExvb3BJbnZhcmlhbnRWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNIb2lzdExvb3BJ
bnZhcmlhbnRWYWx1ZXMuY3BwOyBwYXRoID0gYjMvQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVCRjE2MjFGMjMxNzEyMDAyOUQ5
MUQgLyogQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNIb2lz
dExvb3BJbnZhcmlhbnRWYWx1ZXMuaDsgcGF0aCA9IGIzL0IzSG9pc3RMb29wSW52YXJpYW50VmFs
dWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUJGMTY2MUYyM0EwOTgwMDI5
RDkxRCAvKiBCM0JhY2t3YXJkc0NGRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JhY2t3YXJkc0NGRy5o
OyBwYXRoID0gYjMvQjNCYWNrd2FyZHNDRkcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTM0OTYsNiArMzQ5OCwxMiBAQAogCQkwRkVBMEEyRjE3MEQ0MEJGMDBCQjcyMkMgLyogREZH
SklUQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdKSVRD
b2RlLmNwcDsgcGF0aCA9IGRmZy9ERkdKSVRDb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZFQTBBMzAxNzBENDBCRjAwQkI3MjJDIC8qIERGR0pJVENvZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHSklUQ29kZS5oOyBwYXRoID0gZGZnL0RGR0pJ
VENvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQjNFQ0UxNjIzN0Y2NzAw
QUI2N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZFQzNDNTAxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUMzQzUxMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzNDNTQxRjMzQTQ1MzAwRjU5QjZD
IC8qIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZFQzNDNTUxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RNYWxsb2NBbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RNYWxsb2NBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUMzQzU4MUYz
M0E0ODkwMEY1OUI2QyAvKiBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzNDNTkxRjMzQTQ4OTAwRjU5QjZDIC8qIEdpZ2Fj
YWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHaWdhY2FnZUFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg0
QjQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQXJndW1lbnRSZWdWYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwOyBwYXRoID0g
YjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZFQzg0QjUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQXJndW1lbnRSZWdWYWx1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0FyZ3VtZW50UmVnVmFsdWUuaDsgcGF0aCA9IGIz
L0IzQXJndW1lbnRSZWdWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVD
ODRCNjFCREFDREFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQmFzaWNCbG9jay5jcHA7IHBhdGggPSBiMy9CM0Jhc2lj
QmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjAzMSw2ICs2MDM5LDgg
QEAKIAkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1IC8qIGhlYXAgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGRUMzQzUwMUYzM0E0MTYwMEY1OUI2QyAv
KiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCAqLywKKwkJCQkwRkVDM0M1MTFGMzNBNDE2MDBG
NTlCNkMgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oICovLAogCQkJCTBGQTc2MjBBMURCOTU5
RjYwMEI3QTJGRCAvKiBBbGxvY2F0aW5nU2NvcGUuaCAqLywKIAkJCQkwRjk2MzAzNTFENDE5MkMz
MDA1NjA5RDkgLyogQWxsb2NhdG9yQXR0cmlidXRlcy5jcHAgKi8sCiAJCQkJMEY5NjMwMzYxRDQx
OTJDMzAwNTYwOUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMuaCAqLywKQEAgLTYwNzksOCArNjA4
OSw2IEBACiAJCQkJMkEzNDNGNzQxOEExNzQ4QjAwMzlCMDg1IC8qIEdDU2VnbWVudGVkQXJyYXku
aCAqLywKIAkJCQkyQTM0M0Y3NzE4QTE3NDlEMDAzOUIwODUgLyogR0NTZWdtZW50ZWRBcnJheUlu
bGluZXMuaCAqLywKIAkJCQkwRjg2QTI2RTFENkY3QjMxMDBDQjBDOTIgLyogR0NUeXBlTWFwLmgg
Ki8sCi0JCQkJMEY1QkYxNTQxRjIyRUIxNzAwMjlEOTFEIC8qIEdpZ2FjYWdlU3Vic3BhY2UuY3Bw
ICovLAotCQkJCTBGNUJGMTU1MUYyMkVCMTcwMDI5RDkxRCAvKiBHaWdhY2FnZVN1YnNwYWNlLmgg
Ki8sCiAJCQkJMTQyRTMxMkIxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZS5oICovLAogCQkJCUMy
ODMxOEZGMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oICovLAogCQkJCUMyODMxOTAx
MTZGRTUzM0UwMDE1N0JGRCAvKiBIYW5kbGVCbG9ja0lubGluZXMuaCAqLywKQEAgLTYxODMsNiAr
NjE5MSwxMCBAQAogCQkJCTE0MTUwMTMyMTU0QkIxM0YwMDVEOEM5OCAvKiBXZWFrU2V0SW5saW5l
cy5oICovLAogCQkJCTBGQzgxNTA4MTQwNDNCQ0EwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBw
b3J0LmNwcCAqLywKIAkJCQkwRkM4MTUwOTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVy
U3VwcG9ydC5oICovLAorCQkJCTBGRUMzQzU0MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0TWFsbG9j
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAgKi8sCisJCQkJMEZFQzNDNTUxRjMzQTQ1MzAwRjU5
QjZDIC8qIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi8sCisJCQkJMEZFQzND
NTgxRjMzQTQ4OTAwRjU5QjZDIC8qIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAg
Ki8sCisJCQkJMEZFQzNDNTkxRjMzQTQ4OTAwRjU5QjZDIC8qIEdpZ2FjYWdlQWxpZ25lZE1lbW9y
eUFsbG9jYXRvci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBoZWFwOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTkxMzUsNiArOTE0Nyw3IEBACiAJCQkJN0MxODRFMjMxN0JFRTI0MDAw
N0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTZC
NzMxRTFCREEwOEVGMDAzMzFCODQgLyogSlNQcm9taXNlQ29uc3RydWN0b3IubHV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJy
ZWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUMzQzU3MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0
TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxODRF
MUYxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTk2QjczMUYxQkRBMDhFRjAwMzMxQjg0IC8qIEpTUHJvbWlzZVByb3RvdHlwZS5sdXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJBMDVBQkQ2MTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtOTI0Nyw2ICs5MjYwLDcgQEAK
IAkJCQk4NjAxNjFFNjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUYxM0Y5MUYwNzMyMDQwMDBGMDQ0MiAvKiBtYWtlLWpz
LWZpbGUtYXJyYXlzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwMDg3M0ExN0NCRTg1MzAwQzNF
NjQzIC8qIE1hcENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDM0M1MzFGMzNB
NDE2MDBGNTlCNkMgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTc0REVGOTQxODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzAwODczRTE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyogTWFya2Vk
QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTk1NTEsNyArOTU2NSw2IEBACiAJCQkJMEY1
QUUyQzQxREY0RjI4MDAwNjZFRkUxIC8qIFZNSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkUzMDIyRDcxRTQyODU3MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRTZGNTZERTFFNjRFQUQ2MDBEMTc4MDEgLyogVk1UcmFwcy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMEY1QkYxNTcxRjIyRUIxNzAwMjlEOTFEIC8qIEdpZ2FjYWdlU3Vic3BhY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUzRjQwRTkzMUQ1QTRBQjMwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNDQTczMEExRUE1MzNEODAwNzYwNDlEIC8qIFdh
c21CQlFQbGFuLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0Y4RDIwMDFFODM4N0Q0MDBEMjExMTYg
LyogV2FzbUJCUVBsYW5JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTk1NjgsNiArOTU4MSw3
IEBACiAJCQkJQUQwMDY1OUUxRUNBQzgxMjAwMENBOTI2IC8qIFdhc21MaW1pdHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUzRTlFMEFDMUVBRTgzREYwMEZFRTI1MSAvKiBXYXNtTWFjaGluZVRocmVh
ZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzNTU1NzE0MUQ5RDlFQTUwMDZENTgzQiAvKiBXYXNt
TWVtb3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDM0M1QjFGMzNBNDg5MDBGNTlCNkMgLyog
R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OUI3
NTk3NTFERkE0QzYwMDA1MjE3NEMgLyogV2FzbU1lbW9yeUluZm9ybWF0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3OTAwODEzOTFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTNFNzc3RTQxRTkyRTI2NTAwN0NCRUM0IC8qIFdhc21Nb2R1bGVJbmZv
cm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDMyMyw2ICsxMDMzNyw3IEBACiAJCQkJNjJF
QzlCQjYxQjdFQjA3QzAwMzAzQUQxIC8qIENhbGxGcmFtZVNodWZmbGVEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTYyRDc1NUQ2MUI4NEZCNDYwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2MkQ3NTVENTFCODRGQjQwMDAxODAxRkEgLyogQ2Fs
bEZyYW1lU2h1ZmZsZXIzMl82NC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkVDM0M1NjFGMzNB
NDUzMDBGNTlCNkMgLyogRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNjJENzU1RDQxQjg0RkIzRDAwMTgwMUZBIC8qIENhbGxGcmFtZVNodWZm
bGVyNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjAxNEJDRjcxNjAwODg1QjRGIC8q
IENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkzMzI5RDE0Q0E3REMzMDA4
NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDc1NSw2ICsx
MDc3MCw3IEBACiAJCQkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTAzRkExRDE4OEUwRkIwMDAxMTBGMTQg
LyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTcwMTNDQThCMUI0OTFBOTQwMENBRTYxMyAvKiBKU0pvYi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRkVDM0M1MjFGMzNBNDE2MDBGNTlCNkMgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDBCN0QxRDBEQzY5QUY3MDA5QzQyQjggLyogSlNMZXhpY2Fs
RW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NzUxMDdFQzEzRTAwMTNF
N0IyIC8qIEpTTG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjVENzA5QjE2REU5OUY0MDBG
Q0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gaW4gU291cmNlcyAqLywKQEAgLTEwOTg5LDcgKzEx
MDA1LDYgQEAKIAkJCQk3MEVDMEVDNjFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERUMxMDdFQzdFNzAwNjUwNDQ2
IC8qIFN0cmluZ09iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFRDEwN0VDN0U3
MDA2NTA0NDYgLyogU3RyaW5nUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGNUJG
MTU2MUYyMkVCMTcwMDI5RDkxRCAvKiBHaWdhY2FnZVN1YnNwYWNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzMzVGMjREMTJFNjc2NUIwMDJCNTU1MyAvKiBTdHJpbmdSZWN1cnNpb25DaGVja2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDREUzQjQzMEU2QzgzMkQwMDE0NTNBNyAvKiBTdHJ1
Y3R1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0U0RUU3MEYwRUJCN0E1QjAwNTkzNEFBIC8q
IFN0cnVjdHVyZUNoYWluLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTEwNzMsNiArMTEwODgsNyBA
QAogCQkJCUFENzQzOEMxMUUwNDU3QUEwMEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUyNTBEMkQxMUU4REEwNUEwMDI5QTkzMiAvKiBXYXNtVGh1bmtzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUzRkY3RjlCMURCRkQyQjkwMEEyNkNDQyAvKiBXYXNtVmFs
aWRhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZFQzNDNUExRjMzQTQ4OTAwRjU5QjZDIC8q
IEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MzBGQjMwNDFFN0ExMTQ2MDAzQzE5REQgLyogV2FzbVdvcmtsaXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZFRDk0RjJFMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjkxOUQyNTE1ODUzQ0UwMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4ZWRCdXR0
ZXJmbHlBY2Nlc3NVbmNhZ2luZ1BoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXhlZEJ1dHRlcmZseUFjY2Vzc1VuY2FnaW5nUGhhc2UuaAkocmV2aXNp
b24gMjIwMTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXhlZEJ1dHRlcmZs
eUFjY2Vzc1VuY2FnaW5nUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLS8q
CitLLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9B
bGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yLmgiCisKK25hbWVzcGFjZSBKU0MgeyAKKworQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcjo6QWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpCit7Cit9CisKK0FsaWduZWRNZW1vcnlB
bGxvY2F0b3I6On5BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkKK3sKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9y
eUFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Fs
aWduZWRNZW1vcnlBbGxvY2F0b3IuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQWxpZ25lZE1lbW9yeUFsbG9jYXRvcik7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpOworICAgIHZp
cnR1YWwgfkFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQq
IHRyeUFsbG9jYXRlQWxpZ25lZE1lbW9yeShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBmcmVlQWxpZ25lZE1lbW9yeSh2b2lkKikgPSAwOworICAg
IAorICAgIHZpcnR1YWwgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgPSAwOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Zh
c3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9GYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRmFzdE1hbGxvY0Fs
aWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgi
CisKKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworc3RhdGljIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yJiBG
YXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0
aWMgRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IqIHJlc3VsdDsKKyAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoCisgICAgICAgIG9u
Y2VGbGFnLAorICAgICAgICBbXSB7CisgICAgICAgICAgICByZXN1bHQgPSBuZXcgRmFzdE1hbGxv
Y0FsaWduZWRNZW1vcnlBbGxvY2F0b3IoKTsKKyAgICAgICAgfSk7CisgICAgcmV0dXJuICpyZXN1
bHQ7Cit9CisKK0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpGYXN0TWFsbG9jQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcigpCit7Cit9CisKK0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yOjp+RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IoKQoreworfQorCit2b2lk
KiBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVBbGlnbmVkTWVt
b3J5KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQoreworICAgIHJldHVybiB0cnlGYXN0
QWxpZ25lZE1hbGxvYyhhbGlnbm1lbnQsIHNpemUpOworfQorCit2b2lkIEZhc3RNYWxsb2NBbGln
bmVkTWVtb3J5QWxsb2NhdG9yOjpmcmVlQWxpZ25lZE1lbW9yeSh2b2lkKiBiYXNlUHRyKQorewor
ICAgIGZhc3RBbGlnbmVkRnJlZShiYXNlUHRyKTsKK30KKwordm9pZCBGYXN0TWFsbG9jQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91
dC5wcmludCgiRmFzdE1hbGxvYyIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GYXN0TWFsbG9j
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFsaWduZWRNZW1vcnlBbGxv
Y2F0b3IuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZhc3RNYWxsb2NBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yIDogcHVibGljIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IgeworcHVibGljOgor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9j
YXRvciYgc2luZ2xldG9uKCk7CisKKyAgICB+RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0
b3IoKTsKKyAgICAKKyAgICB2b2lkKiB0cnlBbGxvY2F0ZUFsaWduZWRNZW1vcnkoc2l6ZV90IGFs
aWdubWVudCwgc2l6ZV90IHNpemUpIG92ZXJyaWRlOworICAgIHZvaWQgZnJlZUFsaWduZWRNZW1v
cnkodm9pZCopIG92ZXJyaWRlOworICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0IG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HaWdhY2FnZUFsaWduZWRNZW1vcnlB
bGxvY2F0b3IuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0dpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLmgiCisKKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx3dGYvR2lnYWNhZ2UuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0
b3ImIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6c2luZ2xldG9uKCkKK3sKKyAgICBz
dGF0aWMgR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKiByZXN1bHQ7CisgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKAorICAgICAgICBv
bmNlRmxhZywKKyAgICAgICAgW10geworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IEdpZ2FjYWdl
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpOworICAgICAgICB9KTsKKyAgICByZXR1cm4gKnJlc3Vs
dDsKK30KKworR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpHaWdhY2FnZUFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IoKQoreworfQorCitHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6
On5HaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKQoreworfQorCit2b2lkKiBHaWdhY2Fn
ZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnRyeUFsbG9jYXRlQWxpZ25lZE1lbW9yeShzaXplX3Qg
YWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gR2lnYWNhZ2U6OnRyeUFsaWdu
ZWRNYWxsb2MoYWxpZ25tZW50LCBzaXplKTsKK30KKwordm9pZCBHaWdhY2FnZUFsaWduZWRNZW1v
cnlBbGxvY2F0b3I6OmZyZWVBbGlnbmVkTWVtb3J5KHZvaWQqIGJhc2VQdHIpCit7CisgICAgR2ln
YWNhZ2U6OmFsaWduZWRGcmVlKGJhc2VQdHIpOworfQorCit2b2lkIEdpZ2FjYWdlQWxpZ25lZE1l
bW9yeUFsbG9jYXRvcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5w
cmludCgiR2lnYWNhZ2UiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dpZ2FjYWdlQWxpZ25lZE1l
bW9yeUFsbG9jYXRvci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0dpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3Ig
OiBwdWJsaWMgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7CitwdWJsaWM6CisgICAgc3RhdGljIEdp
Z2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvciYgc2luZ2xldG9uKCk7CisKKyAgICB+R2lnYWNh
Z2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCk7CisgICAgCisgICAgdm9pZCogdHJ5QWxsb2NhdGVB
bGlnbmVkTWVtb3J5KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGZyZWVBbGlnbmVkTWVtb3J5KHZvaWQqKSBvdmVycmlkZTsKKyAgICAKKyAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBHaWdh
Y2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HaWdhY2FnZVN1YnNwYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HaWdhY2FnZVN1YnNwYWNl
LmNwcAkocmV2aXNpb24gMjIwMTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR2ln
YWNhZ2VTdWJzcGFjZS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw2MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJHaWdhY2FnZVN1YnNwYWNlLmgiCi0KLSNpbmNsdWRlIDx3dGYvR2lnYWNh
Z2UuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLUdpZ2FjYWdlU3Vic3BhY2U6OkdpZ2FjYWdlU3Vi
c3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBBbGxvY2F0b3JBdHRyaWJ1dGVzIGF0dHJp
YnV0ZXMpCi0gICAgOiBTdWJzcGFjZShuYW1lLCBoZWFwLCBhdHRyaWJ1dGVzKQotewotICAgIEdp
Z2FjYWdlOjplbnN1cmVHaWdhY2FnZSgpOwotfQotCi1HaWdhY2FnZVN1YnNwYWNlOjp+R2lnYWNh
Z2VTdWJzcGFjZSgpCi17Ci19Ci0KLXZvaWQqIEdpZ2FjYWdlU3Vic3BhY2U6OnRyeUFsbG9jYXRl
QWxpZ25lZE1lbW9yeShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKLXsKLSAgICB2b2lk
KiByZXN1bHQgPSBHaWdhY2FnZTo6dHJ5QWxpZ25lZE1hbGxvYyhhbGlnbm1lbnQsIHNpemUpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgR2lnYWNhZ2VTdWJzcGFjZTo6ZnJlZUFsaWdu
ZWRNZW1vcnkodm9pZCogYmFzZVB0cikKLXsKLSAgICBHaWdhY2FnZTo6YWxpZ25lZEZyZWUoYmFz
ZVB0cik7Ci0gICAgV1RGOjpjb21waWxlckZlbmNlKCk7Ci19Ci0KLWJvb2wgR2lnYWNhZ2VTdWJz
cGFjZTo6Y2FuVHJhZGVCbG9ja3NXaXRoKFN1YnNwYWNlKiBvdGhlcikKLXsKLSAgICByZXR1cm4g
dGhpcyA9PSBvdGhlcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0dpZ2FjYWdlU3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HaWdhY2FnZVN1YnNwYWNlLmgJKHJldmlzaW9uIDIyMDE2
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dpZ2FjYWdlU3Vic3BhY2UuaAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTdWJzcGFjZS5oIgot
I2luY2x1ZGUgPHd0Zi9HaWdhY2FnZS5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotLy8gV2UgdXNl
IGEgR2lnYWNhZ2VTdWJzcGFjZSBmb3IgdGhlIGF1eGlsaWFyeSBzcGFjZS4KLWNsYXNzIEdpZ2Fj
YWdlU3Vic3BhY2UgOiBwdWJsaWMgU3Vic3BhY2UgewotcHVibGljOgotICAgIEdpZ2FjYWdlU3Vi
c3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiwgQWxsb2NhdG9yQXR0cmlidXRlcyk7Ci0gICAgfkdp
Z2FjYWdlU3Vic3BhY2UoKTsKLSAgICAKLSAgICBib29sIGNhblRyYWRlQmxvY2tzV2l0aChTdWJz
cGFjZSogb3RoZXIpIG92ZXJyaWRlOwotICAgIHZvaWQqIHRyeUFsbG9jYXRlQWxpZ25lZE1lbW9y
eShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmcmVl
QWxpZ25lZE1lbW9yeSh2b2lkKikgb3ZlcnJpZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MK
LQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRpb24u
Y3BwCShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJn
ZUFsbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBMYXJnZUFsbG9jYXRpb24qIExhcmdlQWxsb2NhdGlvbjo6dHJ5Q3JlYXRlKEhl
YXAmIGhlYXAsIHNpemVfdCBzaXplLCBTdWJzcGFjZSogc3Vic3BhY2UpCiB7Ci0gICAgdm9pZCog
c3BhY2UgPSBzdWJzcGFjZS0+dHJ5QWxsb2NhdGVBbGlnbmVkTWVtb3J5KGFsaWdubWVudCwgaGVh
ZGVyU2l6ZSgpICsgc2l6ZSk7CisgICAgdm9pZCogc3BhY2UgPSBzdWJzcGFjZS0+YWxpZ25lZE1l
bW9yeUFsbG9jYXRvcigpLT50cnlBbGxvY2F0ZUFsaWduZWRNZW1vcnkoYWxpZ25tZW50LCBoZWFk
ZXJTaXplKCkgKyBzaXplKTsKICAgICBpZiAoIXNwYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBpZiAoc2NyaWJibGVGcmVlQ2VsbHMoKSkKQEAgLTEwNiw5ICsxMDYsOSBAQCB2b2lk
IExhcmdlQWxsb2NhdGlvbjo6c3dlZXAoKQogCiB2b2lkIExhcmdlQWxsb2NhdGlvbjo6ZGVzdHJv
eSgpCiB7Ci0gICAgU3Vic3BhY2UqIHN1YnNwYWNlID0gbV9zdWJzcGFjZTsKKyAgICBBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBtX3N1YnNwYWNlLT5hbGlnbmVkTWVtb3J5QWxs
b2NhdG9yKCk7CiAgICAgdGhpcy0+fkxhcmdlQWxsb2NhdGlvbigpOwotICAgIHN1YnNwYWNlLT5m
cmVlQWxpZ25lZE1lbW9yeSh0aGlzKTsKKyAgICBhbGxvY2F0b3ItPmZyZWVBbGlnbmVkTWVtb3J5
KHRoaXMpOwogfQogCiB2b2lkIExhcmdlQWxsb2NhdGlvbjo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxv
Y2F0b3IuY3BwCShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsOCArMTA0LDcgQEAg
dm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdQogICAgIAogICAgIGlmIChP
cHRpb25zOjpzdGVhbEVtcHR5QmxvY2tzRnJvbU90aGVyQWxsb2NhdG9ycygpKSB7CiAgICAgICAg
IGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fc3Vic3BhY2UtPmZpbmRFbXB0eUJs
b2NrVG9TdGVhbCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3Vic3Bh
Y2UoKS0+Y2FuVHJhZGVCbG9ja3NXaXRoKG1fc3Vic3BhY2UpKTsKLSAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fc3Vic3BhY2UtPmNhblRyYWRlQmxvY2tzV2l0aChibG9jay0+c3Vic3BhY2Uo
KSkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxvY2stPmFsaWduZWRNZW1vcnlBbGxv
Y2F0b3IoKSA9PSBtX3N1YnNwYWNlLT5hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBibG9jay0+c3dlZXAobnVsbHB0cik7CiAgICAgICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlz
aW9uIDIyMDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMsMjMgKzQzLDIzIEBAIGNvbnN0IHNpemVfdCBNYXJrZWRC
bG9jazo6YmxvY2tTaXplOwogc3RhdGljIGNvbnN0IGJvb2wgY29tcHV0ZUJhbGFuY2UgPSBmYWxz
ZTsKIHN0YXRpYyBzaXplX3QgYmFsYW5jZTsKIAotTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2Vk
QmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBTdWJzcGFjZSogc3Vic3BhY2UpCitNYXJrZWRC
bG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXAsIEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IqIGFsaWduZWRNZW1vcnlBbGxvY2F0b3IpCiB7CiAgICAgaWYgKGNvbXB1
dGVCYWxhbmNlKSB7CiAgICAgICAgIGJhbGFuY2UrKzsKICAgICAgICAgaWYgKCEoYmFsYW5jZSAl
IDEwKSkKICAgICAgICAgICAgIGRhdGFMb2coIk1hcmtlZEJsb2NrIEJhbGFuY2U6ICIsIGJhbGFu
Y2UsICJcbiIpOwogICAgIH0KLSAgICB2b2lkKiBibG9ja1NwYWNlID0gc3Vic3BhY2UtPnRyeUFs
bG9jYXRlQWxpZ25lZE1lbW9yeShibG9ja1NpemUsIGJsb2NrU2l6ZSk7CisgICAgdm9pZCogYmxv
Y2tTcGFjZSA9IGFsaWduZWRNZW1vcnlBbGxvY2F0b3ItPnRyeUFsbG9jYXRlQWxpZ25lZE1lbW9y
eShibG9ja1NpemUsIGJsb2NrU2l6ZSk7CiAgICAgaWYgKCFibG9ja1NwYWNlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoc2NyaWJibGVGcmVlQ2VsbHMoKSkKICAgICAgICAgc2Ny
aWJibGUoYmxvY2tTcGFjZSwgYmxvY2tTaXplKTsKLSAgICByZXR1cm4gbmV3IEhhbmRsZShoZWFw
LCBzdWJzcGFjZSwgYmxvY2tTcGFjZSk7CisgICAgcmV0dXJuIG5ldyBIYW5kbGUoaGVhcCwgYWxp
Z25lZE1lbW9yeUFsbG9jYXRvciwgYmxvY2tTcGFjZSk7CiB9CiAKLU1hcmtlZEJsb2NrOjpIYW5k
bGU6OkhhbmRsZShIZWFwJiBoZWFwLCBTdWJzcGFjZSogc3Vic3BhY2UsIHZvaWQqIGJsb2NrU3Bh
Y2UpCi0gICAgOiBtX3N1YnNwYWNlKHN1YnNwYWNlKQorTWFya2VkQmxvY2s6OkhhbmRsZTo6SGFu
ZGxlKEhlYXAmIGhlYXAsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIGFsaWduZWRNZW1vcnlBbGxv
Y2F0b3IsIHZvaWQqIGJsb2NrU3BhY2UpCisgICAgOiBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3Io
YWxpZ25lZE1lbW9yeUFsbG9jYXRvcikKICAgICAsIG1fd2Vha1NldChoZWFwLnZtKCksIENlbGxD
b250YWluZXIoKSkKICAgICAsIG1fbmV3bHlBbGxvY2F0ZWRWZXJzaW9uKE1hcmtlZFNwYWNlOjpu
dWxsVmVyc2lvbikKIHsKQEAgLTczLDcgKzczLDYgQEAgTWFya2VkQmxvY2s6OkhhbmRsZTo6SGFu
ZGxlKEhlYXAmIGhlYXAsIAogTWFya2VkQmxvY2s6OkhhbmRsZTo6fkhhbmRsZSgpCiB7CiAgICAg
SGVhcCYgaGVhcCA9ICp0aGlzLT5oZWFwKCk7Ci0gICAgU3Vic3BhY2UqIHN1YnNwYWNlID0gdGhp
cy0+c3Vic3BhY2UoKTsKICAgICBpZiAoY29tcHV0ZUJhbGFuY2UpIHsKICAgICAgICAgYmFsYW5j
ZS0tOwogICAgICAgICBpZiAoIShiYWxhbmNlICUgMTApKQpAQCAtODEsNyArODAsNyBAQCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjp+SGFuZGxlKCkKICAgICB9CiAgICAgcmVtb3ZlRnJvbUFsbG9jYXRv
cigpOwogICAgIG1fYmxvY2stPn5NYXJrZWRCbG9jaygpOwotICAgIHN1YnNwYWNlLT5mcmVlQWxp
Z25lZE1lbW9yeShtX2Jsb2NrKTsKKyAgICBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3ItPmZyZWVB
bGlnbmVkTWVtb3J5KG1fYmxvY2spOwogICAgIGhlYXAuZGlkRnJlZUJsb2NrKGJsb2NrU2l6ZSk7
CiB9CiAKQEAgLTMzNCw4ICszMzMsNyBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFk
ZFRvQWxsb2NhCiAgICAgbV9pbmRleCA9IGluZGV4OwogICAgIG1fYWxsb2NhdG9yID0gYWxsb2Nh
dG9yOwogICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKG1fc3Vic3BhY2UtPmNhblRyYWRlQmxvY2tz
V2l0aChhbGxvY2F0b3ItPnN1YnNwYWNlKCkpKTsKLSAgICBSRUxFQVNFX0FTU0VSVChhbGxvY2F0
b3ItPnN1YnNwYWNlKCktPmNhblRyYWRlQmxvY2tzV2l0aChtX3N1YnNwYWNlKSk7CisgICAgUkVM
RUFTRV9BU1NFUlQobV9zdWJzcGFjZS0+YWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpID09IG1fYWxp
Z25lZE1lbW9yeUFsbG9jYXRvcik7CiAgICAgCiAgICAgbV9zdWJzcGFjZSA9IGFsbG9jYXRvci0+
c3Vic3BhY2UoKTsKICAgICAKQEAgLTM5Nyw2ICszOTUsMTEgQEAgdm9pZCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpkdW1wU3RhdGUoUHJpbgogICAgICAgICB9KTsKIH0KIAorU3Vic3BhY2UqIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnN1YnNwYWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWxsb2NhdG9y
KCktPnN1YnNwYWNlKCk7Cit9CisKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXAoRnJl
ZUxpc3QqIGZyZWVMaXN0KQogewogICAgIFN3ZWVwaW5nU2NvcGUgc3dlZXBpbmdTY29wZSgqaGVh
cCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2
aXNpb24gMjIwMTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYgKzExMCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBN
YXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvcigpIGNvbnN0OwogICAgICAgICBTdWJzcGFjZSogc3Vi
c3BhY2UoKSBjb25zdDsKKyAgICAgICAgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciogYWxpZ25lZE1l
bW9yeUFsbG9jYXRvcigpIGNvbnN0OwogICAgICAgICBIZWFwKiBoZWFwKCkgY29uc3Q7CiAgICAg
ICAgIGlubGluZSBNYXJrZWRTcGFjZSogc3BhY2UoKSBjb25zdDsKICAgICAgICAgVk0qIHZtKCkg
Y29uc3Q7CkBAIC0xOTksNyArMjAwLDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGR1bXBTdGF0
ZShQcmludFN0cmVhbSYpOwogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBIYW5kbGUo
SGVhcCYsIFN1YnNwYWNlKiwgdm9pZCopOworICAgICAgICBIYW5kbGUoSGVhcCYsIEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IqLCB2b2lkKik7CiAgICAgICAgIAogICAgICAgICBlbnVtIFN3ZWVwRGVz
dHJ1Y3Rpb25Nb2RlIHsgQmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBCbG9ja0hhc0Rlc3RydWN0b3Jz
LCBCbG9ja0hhc0Rlc3RydWN0b3JzQW5kQ29sbGVjdG9ySXNSdW5uaW5nIH07CiAgICAgICAgIGVu
dW0gU2NyaWJibGVNb2RlIHsgRG9udFNjcmliYmxlLCBTY3JpYmJsZSB9OwpAQCAtMjI5LDcgKzIz
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgQWxsb2NhdG9yQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7
CiAgICAgICAgIGJvb2wgbV9pc0ZyZWVMaXN0ZWQgeyBmYWxzZSB9OwogCi0gICAgICAgIFN1YnNw
YWNlKiBtX3N1YnNwYWNlIHsgbnVsbHB0ciB9OworICAgICAgICBBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yKiBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3IgeyBudWxscHRyIH07CiAgICAgICAgIE1hcmtl
ZEFsbG9jYXRvciogbV9hbGxvY2F0b3IgeyBudWxscHRyIH07CiAgICAgICAgIHNpemVfdCBtX2lu
ZGV4IHsgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OwogICAgICAgICBXZWFr
U2V0IG1fd2Vha1NldDsKQEAgLTIzOSw3ICsyNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIE1hcmtl
ZEJsb2NrKiBtX2Jsb2NrIHsgbnVsbHB0ciB9OwogICAgIH07CiAgICAgICAgIAotICAgIHN0YXRp
YyBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlDcmVhdGUoSGVhcCYsIFN1YnNwYWNlKik7CisgICAg
c3RhdGljIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFwJiwgQWxpZ25lZE1lbW9y
eUFsbG9jYXRvciopOwogICAgICAgICAKICAgICBIYW5kbGUmIGhhbmRsZSgpOwogICAgICAgICAK
QEAgLTM5Niw5ICszOTcsOSBAQCBpbmxpbmUgTWFya2VkQWxsb2NhdG9yKiBNYXJrZWRCbG9jazo6
SGFuCiAgICAgcmV0dXJuIG1fYWxsb2NhdG9yOwogfQogCi1pbmxpbmUgU3Vic3BhY2UqIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnN1YnNwYWNlKCkgY29uc3QKK2lubGluZSBBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yKiBNYXJrZWRCbG9jazo6SGFuZGxlOjphbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9zdWJzcGFjZTsKKyAgICByZXR1cm4gbV9hbGlnbmVkTWVtb3J5
QWxsb2NhdG9yOwogfQogCiBpbmxpbmUgSGVhcCogTWFya2VkQmxvY2s6OkhhbmRsZTo6aGVhcCgp
IGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCShyZXZp
c2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDEwICs1NCwxMSBAQCBzdHJ1Y3QgRGVzdHJveUZ1bmMgewog
CiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotU3Vic3BhY2U6OlN1YnNwYWNlKENTdHJpbmcg
bmFtZSwgSGVhcCYgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQorU3Vic3Bh
Y2U6OlN1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRl
cyBhdHRyaWJ1dGVzLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKiBhbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yKQogICAgIDogbV9zcGFjZShoZWFwLm9iamVjdFNwYWNlKCkpCiAgICAgLCBtX25hbWUobmFt
ZSkKICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQorICAgICwgbV9hbGlnbmVkTWVtb3J5
QWxsb2NhdG9yKGFsaWduZWRNZW1vcnlBbGxvY2F0b3IpCiAgICAgLCBtX2FsbG9jYXRvckZvckVt
cHR5QWxsb2NhdGlvbihtX3NwYWNlLmZpcnN0QWxsb2NhdG9yKCkpCiB7CiAgICAgLy8gSXQncyBy
ZW1vdGVseSBwb3NzaWJsZSB0aGF0IHdlJ3JlIEdDaW5nIHJpZ2h0IG5vdyBldmVuIGlmIHRoZSBj
bGllbnQgaXMgY2FyZWZ1bCB0byBvbmx5CkBAIC04OCwyMyArODksNiBAQCB2b2lkIFN1YnNwYWNl
OjpkZXN0cm95KFZNJiB2bSwgSlNDZWxsKiBjCiAgICAgRGVzdHJveUZ1bmMoKSh2bSwgY2VsbCk7
CiB9CiAKLWJvb2wgU3Vic3BhY2U6OmNhblRyYWRlQmxvY2tzV2l0aChTdWJzcGFjZSopCi17Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQqIFN1YnNwYWNlOjp0cnlBbGxvY2F0ZUFsaWduZWRN
ZW1vcnkoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCi17Ci0gICAgdm9pZCogcmVzdWx0
ID0gdHJ5RmFzdEFsaWduZWRNYWxsb2MoYWxpZ25tZW50LCBzaXplKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi12b2lkIFN1YnNwYWNlOjpmcmVlQWxpZ25lZE1lbW9yeSh2b2lkKiBiYXNlUHRy
KQotewotICAgIGZhc3RBbGlnbmVkRnJlZShiYXNlUHRyKTsKLSAgICBXVEY6OmNvbXBpbGVyRmVu
Y2UoKTsKLX0KLQogLy8gVGhlIHJlYXNvbiB3aHkgd2UgZGlzdGluZ3Vpc2ggYmV0d2VlbiBhbGxv
Y2F0ZSBhbmQgdHJ5QWxsb2NhdGUgaXMgdG8gbWluaW1pemUgdGhlIG51bWJlciBvZgogLy8gY2hl
Y2tzIG9uIHRoZSBhbGxvY2F0aW9uIHBhdGggaW4gYm90aCBjYXNlcy4gTGlrZXdpc2UsIHRoZSBy
ZWFzb24gd2h5IHdlIGhhdmUgb3ZlcmxvYWRzIHdpdGggYW5kCiAvLyB3aXRob3V0IGRlZmVycmFs
Q29udGV4dCBpcyB0byBtaW5pbWl6ZSB0aGUgYW1vdW50IG9mIGNvZGUgZm9yIGNhbGxpbmcgYWxs
b2NhdGUgd2hlbiB5b3UgZG9uJ3QKQEAgLTE2Nyw5ICsxNTEsNyBAQCBNYXJrZWRCbG9jazo6SGFu
ZGxlKiBTdWJzcGFjZTo6ZmluZEVtcHR5CiB7CiAgICAgZm9yICg7IG1fYWxsb2NhdG9yRm9yRW1w
dHlBbGxvY2F0aW9uOyBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbiA9IG1fYWxsb2NhdG9y
Rm9yRW1wdHlBbGxvY2F0aW9uLT5uZXh0QWxsb2NhdG9yKCkpIHsKICAgICAgICAgU3Vic3BhY2Uq
IG90aGVyU3Vic3BhY2UgPSBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbi0+c3Vic3BhY2Uo
KTsKLSAgICAgICAgaWYgKCFjYW5UcmFkZUJsb2Nrc1dpdGgob3RoZXJTdWJzcGFjZSkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFvdGhlclN1YnNwYWNlLT5jYW5UcmFkZUJs
b2Nrc1dpdGgodGhpcykpCisgICAgICAgIGlmIChvdGhlclN1YnNwYWNlLT5hbGlnbmVkTWVtb3J5
QWxsb2NhdG9yKCkgIT0gYWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIAogICAgICAgICBpZiAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sg
PSBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbi0+ZmluZEVtcHR5QmxvY2tUb1N0ZWFsKCkp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgJKHJldmlzaW9uIDIyMDE2
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3I7CisKIC8vIFRoZSBpZGVhIG9mIHN1YnNwYWNlcyBpcyB0aGF0IHlvdSBj
YW4gcHJvdmlkZSBzb21lIGN1c3RvbSBiZWhhdmlvciBmb3IgeW91ciBvYmplY3RzIGlmIHlvdQog
Ly8gYWxsb2NhdGUgdGhlbSBmcm9tIGEgY3VzdG9tIFN1YnNwYWNlIGluIHdoaWNoIHlvdSBvdmVy
cmlkZSBzb21lIG9mIHRoZSB2aXJ0dWFsIG1ldGhvZHMuIFRoaXMKIC8vIGNsYXNzIGlzIHRoZSBi
YXNlY2xhc3Mgb2YgU3Vic3BhY2VzIGFuZCBpdCBwcm92aWRlcyBhIHJlYXNvbmFibGUgZGVmYXVs
dCBpbXBsZW1lbnRhdGlvbiwgd2hlcmUKQEAgLTQ0LDEzICs0NiwxNCBAQCBjbGFzcyBTdWJzcGFj
ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3Vic3BhY2UpOwogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIFN1YnNwYWNlKENT
dHJpbmcgbmFtZSwgSGVhcCYsIEFsbG9jYXRvckF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFN1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYsIEFsbG9jYXRvckF0dHJpYnV0ZXMs
IEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFs
IH5TdWJzcGFjZSgpOwogICAgIAotICAgIGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdCB7IHJldHVy
biBtX25hbWUuZGF0YSgpOyB9CisgICAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbmFtZS5kYXRhKCk7IH0KICAgICBNYXJrZWRTcGFjZSYgc3BhY2UoKSBjb25zdCB7IHJldHVy
biBtX3NwYWNlOyB9CiAgICAgCiAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmli
dXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQorICAgIEFsaWduZWRNZW1vcnlB
bGxvY2F0b3IqIGFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX2FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I7IH0KICAgICAKICAgICAvLyBUaGUgcHVycG9zZSBvZiBvdmVycmlk
aW5nIHRoaXMgaXMgdG8gc3BlY2lhbGl6ZSB0aGUgc3dlZXAgZm9yIHlvdXIgZGVzdHJ1Y3RvcnMu
IFRoaXMgd29uJ3QKICAgICAvLyBiZSBjYWxsZWQgZm9yIG5vLWRlc3RydWN0b3IgYmxvY2tzLiBU
aGlzIG11c3QgY2FsbCBNYXJrZWRCbG9jazo6ZmluaXNoU3dlZXBLbm93aW5nU3Vic3BhY2UuCkBA
IC01OSwxMCArNjIsNiBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgZ2V0IGNhbGxlZCBmb3IgbGFy
Z2Ugb2JqZWN0cy4KICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCopOwogICAg
IAotICAgIHZpcnR1YWwgYm9vbCBjYW5UcmFkZUJsb2Nrc1dpdGgoU3Vic3BhY2UqIG90aGVyKTsK
LSAgICB2aXJ0dWFsIHZvaWQqIHRyeUFsbG9jYXRlQWxpZ25lZE1lbW9yeShzaXplX3QgYWxpZ25t
ZW50LCBzaXplX3Qgc2l6ZSk7Ci0gICAgdmlydHVhbCB2b2lkIGZyZWVBbGlnbmVkTWVtb3J5KHZv
aWQqKTsKLSAgICAKICAgICBNYXJrZWRBbGxvY2F0b3IqIHRyeUFsbG9jYXRvckZvcihzaXplX3Qp
OwogICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yRm9yKHNpemVfdCk7CiAgICAgCkBAIC0x
MTUsNiArMTE0LDggQEAgcHJpdmF0ZToKICAgICBDU3RyaW5nIG1fbmFtZTsKICAgICBBbGxvY2F0
b3JBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKICAgICAKKyAgICBBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yKiBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3I7CisgICAgCiAgICAgc3RkOjphcnJheTxNYXJr
ZWRBbGxvY2F0b3IqLCBNYXJrZWRTcGFjZTo6bnVtU2l6ZUNsYXNzZXM+IG1fYWxsb2NhdG9yRm9y
U2l6ZVN0ZXA7CiAgICAgTWFya2VkQWxsb2NhdG9yKiBtX2ZpcnN0QWxsb2NhdG9yIHsgbnVsbHB0
ciB9OwogICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24g
eyBudWxscHRyIH07IC8vIFVzZXMgdGhlIE1hcmtlZFNwYWNlIGxpbmtlZCBsaXN0IG9mIGJsb2Nr
cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0U3Vic3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UuY3BwCShyZXZpc2lvbiAyMjAxNjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNw
YWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMsOCBAQCBzdHJ1Y3QgRGVzdHJveUZ1
bmMgewogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotSlNEZXN0cnVjdGlibGVPYmplY3RT
dWJzcGFjZTo6SlNEZXN0cnVjdGlibGVPYmplY3RTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAm
IGhlYXApCi0gICAgOiBTdWJzcGFjZShuYW1lLCBoZWFwLCBBbGxvY2F0b3JBdHRyaWJ1dGVzKE5l
ZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQorSlNEZXN0cnVjdGlibGVPYmplY3RT
dWJzcGFjZTo6SlNEZXN0cnVjdGlibGVPYmplY3RTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAm
IGhlYXAsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIGFsbG9jYXRvcikKKyAgICA6IFN1YnNwYWNl
KG5hbWUsIGhlYXAsIEFsbG9jYXRvckF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENl
bGw6OkpTQ2VsbCksIGFsbG9jYXRvcikKIHsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3RTdWJzcGFjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3Bh
Y2UuaAkocmV2aXNpb24gMjIwMTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEZXN0cnVjdGlibGVPYmplY3RTdWJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNw
YWNlIDogcHVibGljIFN1YnNwYWNlIHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBK
U0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UoQ1N0cmluZyBuYW1l
LCBIZWFwJiwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciopOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZpcnR1YWwgfkpTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UoKTsKICAgICAKICAgICB2b2lk
IGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlzdCopIG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdFN1YnNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Vic3BhY2UuY3BwCShyZXZpc2lvbiAyMjAx
NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0U3Vic3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0Myw4IEBAIHN0cnVj
dCBEZXN0cm95RnVuYyB7CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1KU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0U3Vic3BhY2U6OkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFj
ZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXApCi0gICAgOiBTdWJzcGFjZShuYW1lLCBoZWFwLCBB
bGxvY2F0b3JBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQor
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlOjpKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0U3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yKiBhbGxvY2F0b3IpCisgICAgOiBTdWJzcGFjZShuYW1lLCBoZWFwLCBBbGxvY2F0b3JBdHRy
aWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpLCBhbGxvY2F0b3IpCiB7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFy
aWFibGVPYmplY3RTdWJzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZS5oCShyZXZpc2lvbiAy
MjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0U3Vic3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlIDog
cHVibGljIFN1YnNwYWNlIHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0U3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlKENTdHJpbmcg
bmFtZSwgSGVhcCYsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIH5KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Vic3BhY2UoKTsKICAgICAK
ICAgICB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlzdCopIG92
ZXJyaWRlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdTdWJz
cGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmdTdWJzcGFjZS5jcHAJKHJldmlzaW9uIDIyMDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nU3Vic3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4
ICs0Myw4IEBAIHN0cnVjdCBEZXN0cm95RnVuYyB7CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFj
ZQogCi1KU1N0cmluZ1N1YnNwYWNlOjpKU1N0cmluZ1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVh
cCYgaGVhcCkKLSAgICA6IFN1YnNwYWNlKG5hbWUsIGhlYXAsIEFsbG9jYXRvckF0dHJpYnV0ZXMo
TmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCitKU1N0cmluZ1N1YnNwYWNlOjpK
U1N0cmluZ1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgQWxpZ25lZE1lbW9yeUFs
bG9jYXRvciogYWxsb2NhdG9yKQorICAgIDogU3Vic3BhY2UobmFtZSwgaGVhcCwgQWxsb2NhdG9y
QXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSwgYWxsb2NhdG9y
KQogewogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ1N1
YnNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmdTdWJzcGFjZS5oCShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZ1N1YnNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTU3RyaW5nU3Vic3BhY2UgOiBwdWJsaWMg
U3Vic3BhY2UgewogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nU3Vic3Bh
Y2UoQ1N0cmluZyBuYW1lLCBIZWFwJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTdHJpbmdT
dWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+SlNTdHJpbmdTdWJzcGFjZSgpOwogICAgIAog
ICAgIHZvaWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0Kikgb3Zl
cnJpZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAy
MjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDEwICs0NCwxMiBAQAogI2luY2x1ZGUgIkV2YWxDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJGVExUaHVua3MuaCIKKyNpbmNsdWRlICJG
YXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdD
QWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUg
IkdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhhc093blByb3Bl
cnR5Q2FjaGUuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNj
b3BlLmgiCkBAIC0xNjIsMTUgKzE2NCwxNSBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5
cGUgaGVhcFR5cGUpCiAgICAgLCBtX3J1bkxvb3AoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKQogI2Vu
ZGlmIC8vIFVTRShDRikKICAgICAsIGhlYXAodGhpcywgaGVhcFR5cGUpCi0gICAgLCBhdXhpbGlh
cnlTcGFjZSgiQXV4aWxpYXJ5IiwgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRlcyhEb2VzTm90TmVl
ZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSkKLSAgICAsIGNlbGxTcGFjZSgiSlND
ZWxsIiwgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBI
ZWFwQ2VsbDo6SlNDZWxsKSkKLSAgICAsIGRlc3RydWN0aWJsZUNlbGxTcGFjZSgiRGVzdHJ1Y3Rp
YmxlIEpTQ2VsbCIsIGhlYXAsIEFsbG9jYXRvckF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwg
SGVhcENlbGw6OkpTQ2VsbCkpCi0gICAgLCBzdHJpbmdTcGFjZSgiSlNTdHJpbmciLCBoZWFwKQot
ICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVh
cCkKLSAgICAsIGVhZ2VybHlTd2VwdERlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJFYWdlcmx5IFN3
ZXB0IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCkKLSAgICAsIHNlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0U3BhY2UoIkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTcGFjZSIsIGhlYXApCisgICAg
LCBhdXhpbGlhcnlTcGFjZSgiQXV4aWxpYXJ5IiwgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRlcyhE
b2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSwgJkdpZ2FjYWdlQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcjo6aW5zdGFuY2UoKSkKKyAgICAsIGNlbGxTcGFjZSgiSlNDZWxs
IiwgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFw
Q2VsbDo6SlNDZWxsKSwgJkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjppbnN0YW5j
ZSgpKQorICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbFNwYWNlKCJEZXN0cnVjdGlibGUgSlNDZWxsIiwg
aGVhcCwgQWxsb2NhdG9yQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlND
ZWxsKSwgJkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjppbnN0YW5jZSgpKQorICAg
ICwgc3RyaW5nU3BhY2UoIkpTU3RyaW5nIiwgaGVhcCwgJkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yOjppbnN0YW5jZSgpKQorICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgJkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yOjppbnN0YW5jZSgpKQorICAgICwgZWFnZXJseVN3ZXB0RGVzdHJ1Y3RpYmxlT2JqZWN0U3Bh
Y2UoIkVhZ2VybHkgU3dlcHQgSlNEZXN0cnVjdGlibGVPYmplY3QiLCBoZWFwLCAmRmFzdE1hbGxv
Y0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6Omluc3RhbmNlKCkpCisgICAgLCBzZWdtZW50ZWRWYXJp
YWJsZU9iamVjdFNwYWNlKCJKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3BhY2UiLCBoZWFwLCAm
RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6Omluc3RhbmNlKCkpCiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQotICAgICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSgiSlNXZWJBc3Nl
bWJseUNvZGVCbG9ja1NwYWNlIiwgaGVhcCkKKyAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3Bh
Y2UoIkpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSIsIGhlYXAsICZGYXN0TWFsbG9jQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcjo6aW5zdGFuY2UoKSkKICNlbmRpZgogICAgICwgdm1UeXBlKHZtVHlw
ZSkKICAgICAsIGNsaWVudERhdGEoMCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNl
LmNwcAkocmV2aXNpb24gMjIwMTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcs
OCArNDcsOCBAQCBzdHJ1Y3QgRGVzdHJveUZ1bmMgewogCiB9IC8vIGFub255bW91cyBuYW1lc3Bh
Y2UKIAotSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlOjpKU1dlYkFzc2VtYmx5Q29kZUJs
b2NrU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwKQotICAgIDogU3Vic3BhY2UobmFt
ZSwgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6
SlNDZWxsKSkKK0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZTo6SlNXZWJBc3NlbWJseUNv
ZGVCbG9ja1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgQWxpZ25lZE1lbW9yeUFs
bG9jYXRvciogYWxsb2NhdG9yKQorICAgIDogU3Vic3BhY2UobmFtZSwgaGVhcCwgQWxsb2NhdG9y
QXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSwgYWxsb2NhdG9y
KQogewogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrU3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuaAkocmV2aXNpb24gMjIw
MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVC
bG9ja1N1YnNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZSA6IHB1YmxpYyBT
dWJzcGFjZSB7CiBwdWJsaWM6Ci0gICAgSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlKENT
dHJpbmcgbmFtZSwgSGVhcCYpOworICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZShD
U3RyaW5nIG5hbWUsIEhlYXAmLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7CiAgICAgdmlydHVh
bCB+SlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlKCk7CiAgICAgCiAgICAgdm9pZCBmaW5p
c2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxpc3QqKSBvdmVycmlkZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2hlYXAvRmFzdE1hbGxvY0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9oZWFwL0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaGVhcC9GYXN0TWFsbG9j
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMiBAQAor
I3ByYWdtYSBvbmNlCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRmFzdE1hbGxvY0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVKU0NsaWVudERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKIAog
I2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgPGhlYXAvRmFzdE1hbGxvY0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDxoZWFwL0hlYXBJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8aGVhcC9NYXJraW5nQ29uc3RyYWludC5oPgogI2luY2x1ZGUgPGhlYXAvTWFya2VkQWxs
b2NhdG9ySW5saW5lcy5oPgpAQCAtNDMsOCArNDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBK
U1ZNQ2xpZW50RGF0YTo6SlNWTUNsaWVudERhdGEoVk0mIHZtKQogICAgIDogbV9idWlsdGluRnVu
Y3Rpb25zKHZtKQogICAgICwgbV9idWlsdGluTmFtZXMoJnZtKQotICAgICwgbV9vdXRwdXRDb25z
dHJhaW50U3BhY2UoIldlYkNvcmUgV3JhcHBlciB3LyBPdXRwdXQgQ29uc3RyYWludCIsIHZtLmhl
YXApCi0gICAgLCBtX2dsb2JhbE9iamVjdE91dHB1dENvbnN0cmFpbnRTcGFjZSgiV2ViQ29yZSBH
bG9iYWwgT2JqZWN0IHcvIE91dHB1dCBDb25zdHJhaW50Iiwgdm0uaGVhcCkKKyAgICAsIG1fb3V0
cHV0Q29uc3RyYWludFNwYWNlKCJXZWJDb3JlIFdyYXBwZXIgdy8gT3V0cHV0IENvbnN0cmFpbnQi
LCB2bS5oZWFwLCAmRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6Omluc3RhbmNlKCkp
CisgICAgLCBtX2dsb2JhbE9iamVjdE91dHB1dENvbnN0cmFpbnRTcGFjZSgiV2ViQ29yZSBHbG9i
YWwgT2JqZWN0IHcvIE91dHB1dCBDb25zdHJhaW50Iiwgdm0uaGVhcCwgJkZhc3RNYWxsb2NBbGln
bmVkTWVtb3J5QWxsb2NhdG9yOjppbnN0YW5jZSgpKQogewogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317139</attachid>
            <date>2017-08-03 12:38:34 -0700</date>
            <delta_ts>2017-08-03 13:30:04 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>60775</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwMjE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDE3LTA4LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIGFsbG9jYXRvciB1c2VkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgTWFya2VkQmxvY2tzIGFu
ZCBMYXJnZUFsbG9jYXRpb25zIHNob3VsZCBub3QgYmUgdGhlIFN1YnNwYWNlIGl0c2VsZgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUbyBt
YWtlIGl0IGVhc2llciB0byBoYXZlIG11bHRpcGxlIGdpZ2FjYWdlcyBhbmQgbWF5YmUgZXZlbiBm
YW5jaWVyIG1ldGhvZHMgb2YgYWxsb2NhdGluZywgdGhpcworICAgICAgICBkZWNvdXBsZXMgdGhl
IGFsbG9jYXRvciB1c2VkIHRvIGFsbG9jYXRlIG1lbW9yeSBmcm9tIHRoZSBHQyBTdWJzcGFjZS4g
VGhpcyBtZWFucyB3ZSBubyBsb25nZXIgaGF2ZQorICAgICAgICB0byBjcmVhdGUgYSBuZXcgU3Vi
c3BhY2Ugc3ViY2xhc3MgdG8gYWxsb2NhdGUgbWVtb3J5IGEgZGlmZmVyZW50IHdheS4gSW5zdGVh
ZCwgdGhlIGFsbG9jYXRvciBpcyBub3cKKyAgICAgICAgZGV0ZXJtaW5lZCBieSB0aGUgQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvciBvYmplY3QuCisgICAgICAgIAorICAgICAgICBUaGlzIGFsc28gc2lt
cGxpZmllcyB0cmFkaW5nIG9mIGJsb2Nrcy4gQmVmb3JlLCBTdWJzcGFjZXMgaGFkIHRvIGRldGVy
bWluZSBpZiBvdGhlciBTdWJzcGFjZXMgY291bGQKKyAgICAgICAgdHJhZGUgYmxvY2tzIHdpdGgg
dGhlbSB1c2luZyBjYW5UcmFkZUJsb2Nrc1dpdGgoKS4gVGhpcyBtYWtlcyBpdCBkaWZmaWN1bHQg
Zm9yIHR3byBkaWZmZXJlbnQKKyAgICAgICAgU3Vic3BhY2VzIHRoYXQgYm90aCB1c2UgdGhlIHNh
bWUgdW5kZXJseWluZyBhbGxvY2F0b3IgdG8gcmVhbGl6ZSB0aGF0IHRoZXkgY2FuIHRyYWRlIGJs
b2NrcyB3aXRoCisgICAgICAgIGVhY2ggb3RoZXIuIE5vdywgeW91IGp1c3QgbmVlZCB0byBhc2sg
dGhlIGJsb2NrIGJlaW5nIHN0b2xlbiBhbmQgdGhlIHN1YnNwYWNlIGRvaW5nIHRoZSBzdGVhbGlu
ZyBpZgorICAgICAgICB0aGV5IHVzZSB0aGUgc2FtZSBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcik6CisgICAgICAgIChKU0M6OkFsaWduZWRNZW1vcnlBbGxv
Y2F0b3I6On5BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKToKKyAgICAgICAgKiBoZWFwL0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuaDogQWRkZWQuCisgICAgICAgICogaGVhcC9GYXN0TWFsbG9jQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpGYXN0TWFsbG9jQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcjo6c2luZ2xldG9uKToKKyAgICAgICAgKEpTQzo6RmFzdE1hbGxv
Y0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6OkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
KToKKyAgICAgICAgKEpTQzo6RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6On5GYXN0
TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcik6CisgICAgICAgIChKU0M6OkZhc3RNYWxsb2NB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUFsaWduZWRNZW1vcnkpOgorICAgICAg
ICAoSlNDOjpGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZnJlZUFsaWduZWRNZW1v
cnkpOgorICAgICAgICAoSlNDOjpGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZHVt
cCBjb25zdCk6CisgICAgICAgICogaGVhcC9GYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRv
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBoZWFwL0dpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
ci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0
b3I6OnNpbmdsZXRvbik6CisgICAgICAgIChKU0M6OkdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcjo6R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6R2ln
YWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp+R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yKToKKyAgICAgICAgKEpTQzo6R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp0cnlB
bGxvY2F0ZUFsaWduZWRNZW1vcnkpOgorICAgICAgICAoSlNDOjpHaWdhY2FnZUFsaWduZWRNZW1v
cnlBbGxvY2F0b3I6OmZyZWVBbGlnbmVkTWVtb3J5KToKKyAgICAgICAgKEpTQzo6R2lnYWNhZ2VB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBoZWFwL0dpZ2Fj
YWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBoZWFwL0dpZ2Fj
YWdlU3Vic3BhY2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGhlYXAvR2lnYWNhZ2VTdWJzcGFj
ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGhlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6TGFyZ2VBbGxvY2F0aW9uOjp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpMYXJn
ZUFsbG9jYXRpb246OmRlc3Ryb3kpOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xs
ZWN0aW5nKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5k
bGU6OkhhbmRsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUp
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRUb0FsbG9jYXRvcik6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN1YnNwYWNlIGNvbnN0KToKKyAg
ICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpI
YW5kbGU6OmFsaWduZWRNZW1vcnlBbGxvY2F0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzdWJzcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaGVh
cC9TdWJzcGFjZS5jcHA6CisgICAgICAgIChKU0M6OlN1YnNwYWNlOjpTdWJzcGFjZSk6CisgICAg
ICAgIChKU0M6OlN1YnNwYWNlOjpmaW5kRW1wdHlCbG9ja1RvU3RlYWwpOgorICAgICAgICAoSlND
OjpTdWJzcGFjZTo6Y2FuVHJhZGVCbG9ja3NXaXRoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
U3Vic3BhY2U6OnRyeUFsbG9jYXRlQWxpZ25lZE1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OlN1YnNwYWNlOjpmcmVlQWxpZ25lZE1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgICogaGVh
cC9TdWJzcGFjZS5oOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6bmFtZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OlN1YnNwYWNlOjphbGlnbmVkTWVtb3J5QWxsb2NhdG9yIGNvbnN0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UuY3BwOgorICAgICAgICAo
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlOjpKU0Rlc3RydWN0aWJsZU9iamVjdFN1
YnNwYWNlKToKKyAgICAgICAgKiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2Uu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZS5j
cHA6CisgICAgICAgIChKU0M6OkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZTo6SlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlKToKKyAgICAgICAgKiBydW50aW1lL0pTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJp
bmdTdWJzcGFjZS5jcHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nU3Vic3BhY2U6OkpTU3RyaW5n
U3Vic3BhY2UpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdTdWJzcGFjZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uaDoKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJz
cGFjZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZTo6
SlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2Vi
QXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oOgorCiAyMDE3LTA4LTAyICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgc3RhY2sg
dHJhY2UgaW5mb3JtYXRpb24gZm9yIGVhY2ggUmVjb3JkaW5nQWN0aW9uCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ5MCw2ICs0OTAs
NyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGZ0bC9GVExUaHVua3MuY3BwCiAg
ICAgZnRsL0ZUTFZhbHVlUmFuZ2UuY3BwCiAKKyAgICBoZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0
b3IuY3BwCiAgICAgaGVhcC9BbGxvY2F0b3JBdHRyaWJ1dGVzLmNwcAogICAgIGhlYXAvQ2VsbENv
bnRhaW5lci5jcHAKICAgICBoZWFwL0NvZGVCbG9ja1NldC5jcHAKQEAgLTQ5OSwxMyArNTAwLDE0
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVhcC9EZWZlckdDLmNwcAogICAg
IGhlYXAvRGVzdHJ1Y3Rpb25Nb2RlLmNwcAogICAgIGhlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFj
ay5jcHAKKyAgICBoZWFwL0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcAogICAg
IGhlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAKICAgICBoZWFwL0ZyZWVMaXN0LmNwcAog
ICAgIGhlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAogICAgIGhlYXAvR0NDb25kdWN0b3IuY3Bw
CiAgICAgaGVhcC9HQ0xvZ2dpbmcuY3BwCiAgICAgaGVhcC9HQ1JlcXVlc3QuY3BwCi0gICAgaGVh
cC9HaWdhY2FnZVN1YnNwYWNlLmNwcAorICAgIGhlYXAvR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLmNwcAogICAgIGhlYXAvSGFuZGxlU2V0LmNwcAogICAgIGhlYXAvSGFuZGxlU3RhY2su
Y3BwCiAgICAgaGVhcC9IZWFwLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIyMDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NjQsOCArNDY0
LDYgQEAKIAkJMEY1QTYyODQxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUE2MjgyMTg4Qzk4
RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1QUUyQzQxREY0RjI4MDAwNjZFRkUxIC8qIFZNSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU5
MEJCM0ExQjdDRjY0RTAwNkIzRjAzIC8qIFZNSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUI0QTMzMUM4NEYwRDYwMEYxQjE3RSAv
KiBTbG93UGF0aFJldHVyblR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNUI0QTMyMUM4NEYwRDYwMEYxQjE3RSAvKiBTbG93UGF0aFJldHVyblR5
cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkw
RjVCRjE1NjFGMjJFQjE3MDAyOUQ5MUQgLyogR2lnYWNhZ2VTdWJzcGFjZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE1NDFGMjJFQjE3MDAy
OUQ5MUQgLyogR2lnYWNhZ2VTdWJzcGFjZS5jcHAgKi87IH07Ci0JCTBGNUJGMTU3MUYyMkVCMTcw
MDI5RDkxRCAvKiBHaWdhY2FnZVN1YnNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE1NTFGMjJFQjE3MDAyOUQ5MUQgLyogR2lnYWNhZ2VT
dWJzcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGNUJGMTYzMUYyMzE3MTIwMDI5RDkxRCAvKiBCM0hvaXN0TG9vcEludmFyaWFudFZhbHVl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVC
RjE2MTFGMjMxNzEyMDAyOUQ5MUQgLyogQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMuY3BwICov
OyB9OwogCQkwRjVCRjE2NDFGMjMxNzEyMDAyOUQ5MUQgLyogQjNIb2lzdExvb3BJbnZhcmlhbnRW
YWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NUJGMTYyMUYyMzE3MTIwMDI5RDkxRCAvKiBCM0hvaXN0TG9vcEludmFyaWFudFZhbHVlcy5oICov
OyB9OwogCQkwRjVCRjE2NzFGMjNBMDk4MDAyOUQ5MUQgLyogQjNCYWNrd2FyZHNDRkcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUJGMTY2MUYyM0Ew
OTgwMDI5RDkxRCAvKiBCM0JhY2t3YXJkc0NGRy5oICovOyB9OwpAQCAtODk4LDYgKzg5NiwxMiBA
QAogCQkwRkVBMEEzMzE3MEQ0MEJGMDBCQjcyMkMgLyogREZHSklUQ29kZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBMEEyRjE3MEQ0MEJGMDBC
QjcyMkMgLyogREZHSklUQ29kZS5jcHAgKi87IH07CiAJCTBGRUEwQTM0MTcwRDQwQkYwMEJCNzIy
QyAvKiBERkdKSVRDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkVBMEEzMDE3MEQ0MEJGMDBCQjcyMkMgLyogREZHSklUQ29kZS5oICovOyB9Owog
CQkwRkVCM0VDRjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQjNFQ0UxNjIzN0Y2NzAw
QUI2N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNwcCAqLzsgfTsKKwkJMEZFQzNDNTIxRjMzQTQxNjAw
RjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzNDNTAxRjMzQTQxNjAwRjU5QjZDIC8qIEFs
aWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwICovOyB9OworCQkwRkVDM0M1MzFGMzNBNDE2MDBGNTlC
NkMgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzNDNTExRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuaCAqLzsgfTsKKwkJMEZFQzNDNTYxRjMzQTQ1MzAwRjU5QjZDIC8qIEZh
c3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUMzQzU0MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0
TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAgKi87IH07CisJCTBGRUMzQzU3MUYzM0E0
NTMwMEY1OUI2QyAvKiBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzNDNTUxRjMzQTQ1MzAw
RjU5QjZDIC8qIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi87IH07CisJCTBG
RUMzQzVBMUYzM0E0ODkwMEY1OUI2QyAvKiBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzND
NTgxRjMzQTQ4OTAwRjU5QjZDIC8qIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAg
Ki87IH07CisJCTBGRUMzQzVCMUYzM0E0ODkwMEY1OUI2QyAvKiBHaWdhY2FnZUFsaWduZWRNZW1v
cnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRUMzQzU5MUYzM0E0ODkwMEY1OUI2QyAvKiBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxv
Y2F0b3IuaCAqLzsgfTsKIAkJMEZFQzg0RkUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQXJndW1lbnRS
ZWdWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkVDODRCNDFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmNwcCAqLzsg
fTsKIAkJMEZFQzg0RkYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQXJndW1lbnRSZWdWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0QjUxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzQXJndW1lbnRSZWdWYWx1ZS5oICovOyB9OwogCQkwRkVDODUwMDFC
REFDREFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEI2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jh
c2ljQmxvY2suY3BwICovOyB9OwpAQCAtMzA1Myw4ICszMDU3LDYgQEAKIAkJMEY1QTYyODExODhD
OThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRlRMVmFsdWVSYW5nZS5jcHA7IHBhdGggPSBmdGwvRlRMVmFsdWVSYW5n
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUE2MjgyMTg4Qzk4RDQwMDcy
QzlERiAvKiBGVExWYWx1ZVJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEZUTFZhbHVlUmFuZ2UuaDsgcGF0aCA9IGZ0bC9GVExWYWx1ZVJhbmdlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNUI0QTMyMUM4NEYwRDYwMEYxQjE3RSAvKiBTbG93UGF0aFJl
dHVyblR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2xvd1BhdGhSZXR1
cm5UeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNUJGMTU0MUYyMkVCMTcw
MDI5RDkxRCAvKiBHaWdhY2FnZVN1YnNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdpZ2Fj
YWdlU3Vic3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjVCRjE1NTFG
MjJFQjE3MDAyOUQ5MUQgLyogR2lnYWNhZ2VTdWJzcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHaWdh
Y2FnZVN1YnNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUJGMTYxMUYy
MzE3MTIwMDI5RDkxRCAvKiBCM0hvaXN0TG9vcEludmFyaWFudFZhbHVlcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBCM0hvaXN0TG9vcEludmFyaWFudFZhbHVlcy5jcHA7IHBhdGggPSBiMy9CM0hv
aXN0TG9vcEludmFyaWFudFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNUJGMTYyMUYyMzE3MTIwMDI5RDkxRCAvKiBCM0hvaXN0TG9vcEludmFyaWFudFZhbHVlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCM0hvaXN0TG9vcEludmFyaWFudFZhbHVlcy5oOyBwYXRoID0gYjMv
QjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY1QkYxNjYxRjIzQTA5ODAwMjlEOTFEIC8qIEIzQmFja3dhcmRzQ0ZHLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEIzQmFja3dhcmRzQ0ZHLmg7IHBhdGggPSBiMy9CM0JhY2t3YXJkc0NGRy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ5Niw2ICszNDk4LDEyIEBACiAJCTBGRUEwQTJG
MTcwRDQwQkYwMEJCNzIyQyAvKiBERkdKSVRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR0pJVENvZGUuY3BwOyBwYXRoID0gZGZnL0RGR0pJVENvZGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVBMEEzMDE3MEQ0MEJGMDBCQjcyMkMg
LyogREZHSklUQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdKSVRD
b2RlLmg7IHBhdGggPSBkZmcvREZHSklUQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkVCM0VDRTE2MjM3RjY3MDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDM0M1MDFGMzNBNDE2MDBGNTlCNkMgLyogQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzNDNTExRjMz
QTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkVDM0M1NDFGMzNBNDUzMDBGNTlCNkMgLyogRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDM0M1NTFGMzNBNDUzMDBG
NTlCNkMgLyogRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZFQzNDNTgxRjMzQTQ4OTAwRjU5QjZDIC8qIEdpZ2FjYWdlQWxpZ25lZE1l
bW9yeUFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHaWdhY2FnZUFsaWduZWRNZW1v
cnlBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDM0M1OTFG
MzNBNDg5MDBGNTlCNkMgLyogR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkVDODRCNDFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJl
Z1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQXJndW1l
bnRSZWdWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM0FyZ3VtZW50UmVnVmFsdWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVDODRCNTFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1
bWVudFJlZ1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQXJndW1l
bnRSZWdWYWx1ZS5oOyBwYXRoID0gYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NEI2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jhc2ljQmxv
Y2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNCYXNpY0Jsb2Nr
LmNwcDsgcGF0aCA9IGIzL0IzQmFzaWNCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC02MDMxLDYgKzYwMzksOCBAQAogCQkxNDJFMzEyQTEzNEZGMEE2MDBBRkFEQjUgLyog
aGVhcCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEZF
QzNDNTAxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwICovLAor
CQkJCTBGRUMzQzUxMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgg
Ki8sCiAJCQkJMEZBNzYyMEExREI5NTlGNjAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oICov
LAogCQkJCTBGOTYzMDM1MUQ0MTkyQzMwMDU2MDlEOSAvKiBBbGxvY2F0b3JBdHRyaWJ1dGVzLmNw
cCAqLywKIAkJCQkwRjk2MzAzNjFENDE5MkMzMDA1NjA5RDkgLyogQWxsb2NhdG9yQXR0cmlidXRl
cy5oICovLApAQCAtNjA3OSw4ICs2MDg5LDYgQEAKIAkJCQkyQTM0M0Y3NDE4QTE3NDhCMDAzOUIw
ODUgLyogR0NTZWdtZW50ZWRBcnJheS5oICovLAogCQkJCTJBMzQzRjc3MThBMTc0OUQwMDM5QjA4
NSAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oICovLAogCQkJCTBGODZBMjZFMUQ2RjdCMzEw
MENCMEM5MiAvKiBHQ1R5cGVNYXAuaCAqLywKLQkJCQkwRjVCRjE1NDFGMjJFQjE3MDAyOUQ5MUQg
LyogR2lnYWNhZ2VTdWJzcGFjZS5jcHAgKi8sCi0JCQkJMEY1QkYxNTUxRjIyRUIxNzAwMjlEOTFE
IC8qIEdpZ2FjYWdlU3Vic3BhY2UuaCAqLywKIAkJCQkxNDJFMzEyQjEzNEZGMEE2MDBBRkFEQjUg
LyogSGFuZGxlLmggKi8sCiAJCQkJQzI4MzE4RkYxNkZFNEI3RDAwMTU3QkZEIC8qIEhhbmRsZUJs
b2NrLmggKi8sCiAJCQkJQzI4MzE5MDExNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5s
aW5lcy5oICovLApAQCAtNjE4Myw2ICs2MTkxLDEwIEBACiAJCQkJMTQxNTAxMzIxNTRCQjEzRjAw
NUQ4Qzk4IC8qIFdlYWtTZXRJbmxpbmVzLmggKi8sCiAJCQkJMEZDODE1MDgxNDA0M0JDQTAwQ0ZB
NjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwICovLAogCQkJCTBGQzgxNTA5MTQwNDNCRDIw
MENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggKi8sCisJCQkJMEZFQzNDNTQxRjMzQTQ1
MzAwRjU5QjZDIC8qIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCAqLywKKwkJ
CQkwRkVDM0M1NTFGMzNBNDUzMDBGNTlCNkMgLyogRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3IuaCAqLywKKwkJCQkwRkVDM0M1ODFGMzNBNDg5MDBGNTlCNkMgLyogR2lnYWNhZ2VBbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmNwcCAqLywKKwkJCQkwRkVDM0M1OTFGMzNBNDg5MDBGNTlCNkMg
LyogR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTEzNSw2ICs5MTQ3LDcgQEAK
IAkJCQk3QzE4NEUyMzE3QkVFMjQwMDA3Q0I2M0EgLyogSlNQcm9taXNlQ29uc3RydWN0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTk5NkI3MzFFMUJEQTA4RUYwMDMzMUI4NCAvKiBKU1Byb21pc2VD
b25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMDA4Q0RCMTg3MTI0QkIwMDk1
NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQzNDNTcx
RjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3QzE4NEUxRjE3QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9taXNlUHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTZCNzMxRjFCREEwOEVGMDAzMzFCODQgLyog
SlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkEwNUFCRDYxOTYx
REYyNDAwMzQxNzUwIC8qIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIGluIEhlYWRlcnMgKi8s
CkBAIC05MjQ3LDYgKzkyNjAsNyBAQAogCQkJCTg2MDE2MUU2MEYzQTgzQzEwMEY4NDcxMCAvKiBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFRjEzRjkxRjA3
MzIwNDAwMEYwNDQyIC8qIG1ha2UtanMtZmlsZS1hcnJheXMucHkgaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzAwODczQTE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGRUMzQzUzMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzRERUY5NDE4MkQ5OTE0MDA1MjJDMjIgLyogTWFw
SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDA4NzNFMTdDQkU4RDMw
MEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQjkxNkMyMTRE
QTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtOTU1
MSw3ICs5NTY1LDYgQEAKIAkJCQkwRjVBRTJDNDFERjRGMjgwMDA2NkVGRTEgLyogVk1JbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTMwMjJENzFFNDI4NTczMDBCQUM0OTMgLyogVk1JbnNw
ZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNkY1NkRFMUU2NEVBRDYwMEQxNzgwMSAvKiBW
TVRyYXBzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjVCRjE1NzFGMjJFQjE3MDAyOUQ5MUQgLyog
R2lnYWNhZ2VTdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNGNDBFOTMxRDVBNEFCMzAw
OTlBMUI2IC8qIFdhc21CM0lSR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0NBNzMw
QTFFQTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTUz
RjhEMjAwMUU4Mzg3RDQwMEQyMTExNiAvKiBXYXNtQkJRUGxhbklubGluZXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTU2OCw2ICs5NTgxLDcgQEAKIAkJCQlBRDAwNjU5RTFFQ0FDODEyMDAwQ0E5MjYg
LyogV2FzbUxpbWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNFOUUwQUMxRUFFODNERjAwRkVF
MjUxIC8qIFdhc21NYWNoaW5lVGhyZWFkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM1NTU3MTQx
RDlEOUVBNTAwNkQ1ODNCIC8qIFdhc21NZW1vcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUMz
QzVCMUYzM0E0ODkwMEY1OUI2QyAvKiBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTc5Qjc1OTc1MURGQTRDNjAwMDUyMTc0QyAvKiBXYXNtTWVtb3J5
SW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTc5MDA4MTM5MUU5NUE4RUMwMDUyRDdD
RCAvKiBXYXNtTW9kdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0U3NzdFNDFFOTJFMjY1MDA3
Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMzIz
LDYgKzEwMzM3LDcgQEAKIAkJCQk2MkVDOUJCNjFCN0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1l
U2h1ZmZsZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjJENzU1RDYxQjg0RkI0NjAwMTgw
MUZBIC8qIENhbGxGcmFtZVNodWZmbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTYyRDc1NUQ1
MUI4NEZCNDAwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxlcjMyXzY0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGRUMzQzU2MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0TWFsbG9jQWxpZ25lZE1l
bW9yeUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2MkQ3NTVENDFCODRGQjNEMDAx
ODAxRkEgLyogQ2FsbEZyYW1lU2h1ZmZsZXI2NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBC
ODNCMDE0QkNGNzE2MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGOTMzMjlEMTRDQTdEQzMwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTEwNzU1LDYgKzEwNzcwLDcgQEAKIAkJCQlBNTAzRkExQjE4OEUwRkIwMDAx
MTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
MDNGQTFEMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzAxM0NBOEIxQjQ5MUE5NDAwQ0FFNjEzIC8qIEpTSm9i
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRUMzQzUyMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MEI3RDFEMERDNjlB
RjcwMDlDNDJCOCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDI4MDg3NTEwN0VDMTNFMDAxM0U3QjIgLyogSlNMb2NrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUMyNUQ3MDlCMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSBpbiBTb3Vy
Y2VzICovLApAQCAtMTA5ODksNyArMTEwMDUsNiBAQAogCQkJCTcwRUMwRUM2MUFBMEQ3REEwMEI2
QUFGQSAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDQ2OURFQzEwN0VDN0U3MDA2NTA0NDYgLyogU3RyaW5nT2JqZWN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0NDY5REVEMTA3RUM3RTcwMDY1MDQ0NiAvKiBTdHJpbmdQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJMEY1QkYxNTYxRjIyRUIxNzAwMjlEOTFEIC8qIEdpZ2FjYWdlU3Vi
c3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzNUYyNEQxMkU2NzY1QjAwMkI1NTUzIC8q
IFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNERTNCNDMw
RTZDODMyRDAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTRF
RTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0xMTA3Myw2ICsxMTA4OCw3IEBACiAJCQkJQUQ3NDM4QzExRTA0NTdBQTAwRkQwQzJBIC8q
IFdhc21TaWduYXR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI1MEQyRDExRThEQTA1QTAw
MjlBOTMyIC8qIFdhc21UaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTNGRjdGOUIxREJG
RDJCOTAwQTI2Q0NDIC8qIFdhc21WYWxpZGF0ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkVD
M0M1QTFGMzNBNDg5MDBGNTlCNkMgLyogR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEZCMzA0MUU3QTExNDYwMDNDMTlERCAvKiBXYXNtV29y
a2xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVEOTRGMkUxNzFFM0UyMzAwQkU3N0E0IC8q
IFdhdGNoZG9nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOTE5RDI1MTU4NTNDRTAwMDRBNEU3
RCAvKiBXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9j
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgorCituYW1lc3BhY2UgSlNDIHsgCisKK0Fs
aWduZWRNZW1vcnlBbGxvY2F0b3I6OkFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKQoreworfQorCitB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp+QWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpCit7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0u
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFsaWduZWRNZW1vcnlBbGxvY2F0b3Igewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFsaWduZWRNZW1vcnlBbGxvY2F0b3IpOworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEFsaWduZWRNZW1vcnlBbGxvY2F0
b3IoKTsKKyAgICB2aXJ0dWFsIH5BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCk7CisgICAgCisgICAg
dmlydHVhbCB2b2lkKiB0cnlBbGxvY2F0ZUFsaWduZWRNZW1vcnkoc2l6ZV90IGFsaWdubWVudCwg
c2l6ZV90IHNpemUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZnJlZUFsaWduZWRNZW1vcnkodm9p
ZCopID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9GYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGYXN0TWFsbG9jQWxpZ25lZE1lbW9y
eUFsbG9jYXRvci5oIgorCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yJiBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6aW5zdGFuY2UoKQoreworICAg
IHN0YXRpYyBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvciogcmVzdWx0OworICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZSgKKyAgICAg
ICAgb25jZUZsYWcsCisgICAgICAgIFtdIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBGYXN0
TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpOworICAgICAgICB9KTsKKyAgICByZXR1cm4g
KnJlc3VsdDsKK30KKworRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6OkZhc3RNYWxs
b2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkKK3sKK30KKworRmFzdE1hbGxvY0FsaWduZWRNZW1v
cnlBbGxvY2F0b3I6On5GYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpCit7Cit9CisK
K3ZvaWQqIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUFsaWdu
ZWRNZW1vcnkoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCit7CisgICAgcmV0dXJuIHRy
eUZhc3RBbGlnbmVkTWFsbG9jKGFsaWdubWVudCwgc2l6ZSk7Cit9CisKK3ZvaWQgRmFzdE1hbGxv
Y0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmZyZWVBbGlnbmVkTWVtb3J5KHZvaWQqIGJhc2VQdHIp
Cit7CisgICAgZmFzdEFsaWduZWRGcmVlKGJhc2VQdHIpOworfQorCit2b2lkIEZhc3RNYWxsb2NB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7Cisg
ICAgb3V0LnByaW50KCJGYXN0TWFsbG9jIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFs
bG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Zhc3RN
YWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWxpZ25lZE1lbW9y
eUFsbG9jYXRvci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRmFzdE1hbGxvY0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IgOiBwdWJsaWMgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7CitwdWJs
aWM6CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yJiBpbnN0YW5jZSgpOworCisgICAgfkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yKCk7CisgICAgCisgICAgdm9pZCogdHJ5QWxsb2NhdGVBbGlnbmVkTWVtb3J5KHNpemVf
dCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKSBvdmVycmlkZTsKKyAgICB2b2lkIGZyZWVBbGlnbmVk
TWVtb3J5KHZvaWQqKSBvdmVycmlkZTsKKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBGYXN0TWFsbG9jQWxpZ25lZE1lbW9y
eUFsbG9jYXRvcigpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0dpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR2lnYWNhZ2VBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdpZ2FjYWdlQWxpZ25lZE1lbW9y
eUFsbG9jYXRvci5oIgorCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL0dpZ2FjYWdl
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3Im
IEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6aW5zdGFuY2UoKQoreworICAgIHN0YXRp
YyBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIHJlc3VsdDsKKyAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoCisgICAgICAgIG9uY2VG
bGFnLAorICAgICAgICBbXSB7CisgICAgICAgICAgICByZXN1bHQgPSBuZXcgR2lnYWNhZ2VBbGln
bmVkTWVtb3J5QWxsb2NhdG9yKCk7CisgICAgICAgIH0pOworICAgIHJldHVybiAqcmVzdWx0Owor
fQorCitHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OkdpZ2FjYWdlQWxpZ25lZE1lbW9y
eUFsbG9jYXRvcigpCit7Cit9CisKK0dpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6fkdp
Z2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpCit7Cit9CisKK3ZvaWQqIEdpZ2FjYWdlQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVBbGlnbmVkTWVtb3J5KHNpemVfdCBhbGln
bm1lbnQsIHNpemVfdCBzaXplKQoreworICAgIHJldHVybiBHaWdhY2FnZTo6dHJ5QWxpZ25lZE1h
bGxvYyhhbGlnbm1lbnQsIHNpemUpOworfQorCit2b2lkIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcjo6ZnJlZUFsaWduZWRNZW1vcnkodm9pZCogYmFzZVB0cikKK3sKKyAgICBHaWdhY2Fn
ZTo6YWxpZ25lZEZyZWUoYmFzZVB0cik7Cit9CisKK3ZvaWQgR2lnYWNhZ2VBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50
KCJHaWdhY2FnZSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR2lnYWNhZ2VBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvciA6IHB1
YmxpYyBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yIHsKK3B1YmxpYzoKKyAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGRuJ3QgYmUgYSBzaW5nbGV0b24uIFRoZXJlIHNob3VsZCBiZSBkaWZmZXJlbnQgaW5z
dGFuY2VzIGZvciBwcmltYXJpZXMsIEpTVmFsdWVzLAorICAgIC8vIGFuZCBvdGhlciB0aGluZ3Mu
CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDkxOQor
ICAgIHN0YXRpYyBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3ImIGluc3RhbmNlKCk7CisK
KyAgICB+R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCk7CisgICAgCisgICAgdm9pZCog
dHJ5QWxsb2NhdGVBbGlnbmVkTWVtb3J5KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKSBv
dmVycmlkZTsKKyAgICB2b2lkIGZyZWVBbGlnbmVkTWVtb3J5KHZvaWQqKSBvdmVycmlkZTsKKyAg
ICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0
ZToKKyAgICBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HaWdhY2FnZVN1
YnNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HaWdh
Y2FnZVN1YnNwYWNlLmNwcAkocmV2aXNpb24gMjIwMTY0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvR2lnYWNhZ2VTdWJzcGFjZS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw2MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHaWdhY2FnZVN1YnNwYWNlLmgiCi0KLSNpbmNsdWRl
IDx3dGYvR2lnYWNhZ2UuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLUdpZ2FjYWdlU3Vic3BhY2U6
OkdpZ2FjYWdlU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBBbGxvY2F0b3JBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMpCi0gICAgOiBTdWJzcGFjZShuYW1lLCBoZWFwLCBhdHRyaWJ1dGVz
KQotewotICAgIEdpZ2FjYWdlOjplbnN1cmVHaWdhY2FnZSgpOwotfQotCi1HaWdhY2FnZVN1YnNw
YWNlOjp+R2lnYWNhZ2VTdWJzcGFjZSgpCi17Ci19Ci0KLXZvaWQqIEdpZ2FjYWdlU3Vic3BhY2U6
OnRyeUFsbG9jYXRlQWxpZ25lZE1lbW9yeShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkK
LXsKLSAgICB2b2lkKiByZXN1bHQgPSBHaWdhY2FnZTo6dHJ5QWxpZ25lZE1hbGxvYyhhbGlnbm1l
bnQsIHNpemUpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgR2lnYWNhZ2VTdWJzcGFj
ZTo6ZnJlZUFsaWduZWRNZW1vcnkodm9pZCogYmFzZVB0cikKLXsKLSAgICBHaWdhY2FnZTo6YWxp
Z25lZEZyZWUoYmFzZVB0cik7Ci0gICAgV1RGOjpjb21waWxlckZlbmNlKCk7Ci19Ci0KLWJvb2wg
R2lnYWNhZ2VTdWJzcGFjZTo6Y2FuVHJhZGVCbG9ja3NXaXRoKFN1YnNwYWNlKiBvdGhlcikKLXsK
LSAgICByZXR1cm4gdGhpcyA9PSBvdGhlcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dpZ2FjYWdlU3Vic3BhY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HaWdhY2FnZVN1YnNwYWNlLmgJKHJl
dmlzaW9uIDIyMDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dpZ2FjYWdlU3Vi
c3BhY2UuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJT
dWJzcGFjZS5oIgotI2luY2x1ZGUgPHd0Zi9HaWdhY2FnZS5oPgotCi1uYW1lc3BhY2UgSlNDIHsK
LQotLy8gV2UgdXNlIGEgR2lnYWNhZ2VTdWJzcGFjZSBmb3IgdGhlIGF1eGlsaWFyeSBzcGFjZS4K
LWNsYXNzIEdpZ2FjYWdlU3Vic3BhY2UgOiBwdWJsaWMgU3Vic3BhY2UgewotcHVibGljOgotICAg
IEdpZ2FjYWdlU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiwgQWxsb2NhdG9yQXR0cmlidXRl
cyk7Ci0gICAgfkdpZ2FjYWdlU3Vic3BhY2UoKTsKLSAgICAKLSAgICBib29sIGNhblRyYWRlQmxv
Y2tzV2l0aChTdWJzcGFjZSogb3RoZXIpIG92ZXJyaWRlOwotICAgIHZvaWQqIHRyeUFsbG9jYXRl
QWxpZ25lZE1lbW9yeShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBmcmVlQWxpZ25lZE1lbW9yeSh2b2lkKikgb3ZlcnJpZGU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBKU0MKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxv
Y2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJn
ZUFsbG9jYXRpb24uY3BwCShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9MYXJnZUFsbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGFyZ2VBbGxvY2F0aW9uLmgiCiAK
KyNpbmNsdWRlICJBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCkBAIC0zNCw3
ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBMYXJnZUFsbG9jYXRpb24qIExhcmdlQWxsb2Nh
dGlvbjo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXAsIHNpemVfdCBzaXplLCBTdWJzcGFjZSogc3Vic3Bh
Y2UpCiB7Ci0gICAgdm9pZCogc3BhY2UgPSBzdWJzcGFjZS0+dHJ5QWxsb2NhdGVBbGlnbmVkTWVt
b3J5KGFsaWdubWVudCwgaGVhZGVyU2l6ZSgpICsgc2l6ZSk7CisgICAgdm9pZCogc3BhY2UgPSBz
dWJzcGFjZS0+YWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpLT50cnlBbGxvY2F0ZUFsaWduZWRNZW1v
cnkoYWxpZ25tZW50LCBoZWFkZXJTaXplKCkgKyBzaXplKTsKICAgICBpZiAoIXNwYWNlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoc2NyaWJibGVGcmVlQ2VsbHMoKSkKQEAgLTEw
Niw5ICsxMDcsOSBAQCB2b2lkIExhcmdlQWxsb2NhdGlvbjo6c3dlZXAoKQogCiB2b2lkIExhcmdl
QWxsb2NhdGlvbjo6ZGVzdHJveSgpCiB7Ci0gICAgU3Vic3BhY2UqIHN1YnNwYWNlID0gbV9zdWJz
cGFjZTsKKyAgICBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBtX3N1YnNwYWNl
LT5hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCk7CiAgICAgdGhpcy0+fkxhcmdlQWxsb2NhdGlvbigp
OwotICAgIHN1YnNwYWNlLT5mcmVlQWxpZ25lZE1lbW9yeSh0aGlzKTsKKyAgICBhbGxvY2F0b3It
PmZyZWVBbGlnbmVkTWVtb3J5KHRoaXMpOwogfQogCiB2b2lkIExhcmdlQWxsb2NhdGlvbjo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDQsOCArMTA0LDcgQEAgdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhv
dQogICAgIAogICAgIGlmIChPcHRpb25zOjpzdGVhbEVtcHR5QmxvY2tzRnJvbU90aGVyQWxsb2Nh
dG9ycygpKSB7CiAgICAgICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fc3Vi
c3BhY2UtPmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChibG9jay0+c3Vic3BhY2UoKS0+Y2FuVHJhZGVCbG9ja3NXaXRoKG1fc3Vic3BhY2UpKTsK
LSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fc3Vic3BhY2UtPmNhblRyYWRlQmxvY2tzV2l0
aChibG9jay0+c3Vic3BhY2UoKSkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxvY2st
PmFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSA9PSBtX3N1YnNwYWNlLT5hbGlnbmVkTWVtb3J5QWxs
b2NhdG9yKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBibG9jay0+c3dlZXAobnVsbHB0
cik7CiAgICAgICAgICAgICAKQEAgLTI0Myw3ICsyNDIsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxl
KiBNYXJrZWRBbGxvY2F0b3I6OnRyCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1w
bGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSA9
IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCwgc3Vic3BhY2UoKSk7CisgICAgTWFya2Vk
QmxvY2s6OkhhbmRsZSogaGFuZGxlID0gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZSgqbV9oZWFwLCBz
dWJzcGFjZSgpLT5hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkpOwogICAgIGlmICghaGFuZGxlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlzaW9uIDIyMDE2NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAK
KyNpbmNsdWRlICJBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiRnJlZUxpc3RJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVP
YmplY3QuaCIKQEAgLTQzLDIzICs0NCwyMyBAQCBjb25zdCBzaXplX3QgTWFya2VkQmxvY2s6OmJs
b2NrU2l6ZTsKIHN0YXRpYyBjb25zdCBib29sIGNvbXB1dGVCYWxhbmNlID0gZmFsc2U7CiBzdGF0
aWMgc2l6ZV90IGJhbGFuY2U7CiAKLU1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0
cnlDcmVhdGUoSGVhcCYgaGVhcCwgU3Vic3BhY2UqIHN1YnNwYWNlKQorTWFya2VkQmxvY2s6Okhh
bmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yKiBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yKQogewogICAgIGlmIChjb21wdXRlQmFsYW5j
ZSkgewogICAgICAgICBiYWxhbmNlKys7CiAgICAgICAgIGlmICghKGJhbGFuY2UgJSAxMCkpCiAg
ICAgICAgICAgICBkYXRhTG9nKCJNYXJrZWRCbG9jayBCYWxhbmNlOiAiLCBiYWxhbmNlLCAiXG4i
KTsKICAgICB9Ci0gICAgdm9pZCogYmxvY2tTcGFjZSA9IHN1YnNwYWNlLT50cnlBbGxvY2F0ZUFs
aWduZWRNZW1vcnkoYmxvY2tTaXplLCBibG9ja1NpemUpOworICAgIHZvaWQqIGJsb2NrU3BhY2Ug
PSBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yLT50cnlBbGxvY2F0ZUFsaWduZWRNZW1vcnkoYmxvY2tT
aXplLCBibG9ja1NpemUpOwogICAgIGlmICghYmxvY2tTcGFjZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgaWYgKHNjcmliYmxlRnJlZUNlbGxzKCkpCiAgICAgICAgIHNjcmliYmxlKGJs
b2NrU3BhY2UsIGJsb2NrU2l6ZSk7Ci0gICAgcmV0dXJuIG5ldyBIYW5kbGUoaGVhcCwgc3Vic3Bh
Y2UsIGJsb2NrU3BhY2UpOworICAgIHJldHVybiBuZXcgSGFuZGxlKGhlYXAsIGFsaWduZWRNZW1v
cnlBbGxvY2F0b3IsIGJsb2NrU3BhY2UpOwogfQogCi1NYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5k
bGUoSGVhcCYgaGVhcCwgU3Vic3BhY2UqIHN1YnNwYWNlLCB2b2lkKiBibG9ja1NwYWNlKQotICAg
IDogbV9zdWJzcGFjZShzdWJzcGFjZSkKK01hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFw
JiBoZWFwLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKiBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yLCB2
b2lkKiBibG9ja1NwYWNlKQorICAgIDogbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKGFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IpCiAgICAgLCBtX3dlYWtTZXQoaGVhcC52bSgpLCBDZWxsQ29udGFpbmVy
KCkpCiAgICAgLCBtX25ld2x5QWxsb2NhdGVkVmVyc2lvbihNYXJrZWRTcGFjZTo6bnVsbFZlcnNp
b24pCiB7CkBAIC03Myw3ICs3NCw2IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFw
JiBoZWFwLCAKIE1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUoKQogewogICAgIEhlYXAmIGhl
YXAgPSAqdGhpcy0+aGVhcCgpOwotICAgIFN1YnNwYWNlKiBzdWJzcGFjZSA9IHRoaXMtPnN1YnNw
YWNlKCk7CiAgICAgaWYgKGNvbXB1dGVCYWxhbmNlKSB7CiAgICAgICAgIGJhbGFuY2UtLTsKICAg
ICAgICAgaWYgKCEoYmFsYW5jZSAlIDEwKSkKQEAgLTgxLDcgKzgxLDcgQEAgTWFya2VkQmxvY2s6
OkhhbmRsZTo6fkhhbmRsZSgpCiAgICAgfQogICAgIHJlbW92ZUZyb21BbGxvY2F0b3IoKTsKICAg
ICBtX2Jsb2NrLT5+TWFya2VkQmxvY2soKTsKLSAgICBzdWJzcGFjZS0+ZnJlZUFsaWduZWRNZW1v
cnkobV9ibG9jayk7CisgICAgbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yLT5mcmVlQWxpZ25lZE1l
bW9yeShtX2Jsb2NrKTsKICAgICBoZWFwLmRpZEZyZWVCbG9jayhibG9ja1NpemUpOwogfQogCkBA
IC0zMzQsMTAgKzMzNCw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQWRkVG9BbGxv
Y2EKICAgICBtX2luZGV4ID0gaW5kZXg7CiAgICAgbV9hbGxvY2F0b3IgPSBhbGxvY2F0b3I7CiAg
ICAgCi0gICAgUkVMRUFTRV9BU1NFUlQobV9zdWJzcGFjZS0+Y2FuVHJhZGVCbG9ja3NXaXRoKGFs
bG9jYXRvci0+c3Vic3BhY2UoKSkpOwotICAgIFJFTEVBU0VfQVNTRVJUKGFsbG9jYXRvci0+c3Vi
c3BhY2UoKS0+Y2FuVHJhZGVCbG9ja3NXaXRoKG1fc3Vic3BhY2UpKTsKLSAgICAKLSAgICBtX3N1
YnNwYWNlID0gYWxsb2NhdG9yLT5zdWJzcGFjZSgpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fYWxs
b2NhdG9yLT5zdWJzcGFjZSgpLT5hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkgPT0gbV9hbGlnbmVk
TWVtb3J5QWxsb2NhdG9yKTsKICAgICAKICAgICBzaXplX3QgY2VsbFNpemUgPSBhbGxvY2F0b3It
PmNlbGxTaXplKCk7CiAgICAgbV9hdG9tc1BlckNlbGwgPSAoY2VsbFNpemUgKyBhdG9tU2l6ZSAt
IDEpIC8gYXRvbVNpemU7CkBAIC0zOTcsNiArMzk0LDExIEBAIHZvaWQgTWFya2VkQmxvY2s6Okhh
bmRsZTo6ZHVtcFN0YXRlKFByaW4KICAgICAgICAgfSk7CiB9CiAKK1N1YnNwYWNlKiBNYXJrZWRC
bG9jazo6SGFuZGxlOjpzdWJzcGFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFsbG9jYXRvcigp
LT5zdWJzcGFjZSgpOworfQorCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwKEZyZWVM
aXN0KiBmcmVlTGlzdCkKIHsKICAgICBTd2VlcGluZ1Njb3BlIHN3ZWVwaW5nU2NvcGUoKmhlYXAo
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlz
aW9uIDIyMDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDggQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotICAgIAorCitjbGFzcyBBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yOyAgICAKIGNsYXNzIEZyZWVMaXN0OwogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsK
QEAgLTExMCw2ICsxMTEsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBh
bGxvY2F0b3IoKSBjb25zdDsKICAgICAgICAgU3Vic3BhY2UqIHN1YnNwYWNlKCkgY29uc3Q7Cisg
ICAgICAgIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIGFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSBj
b25zdDsKICAgICAgICAgSGVhcCogaGVhcCgpIGNvbnN0OwogICAgICAgICBpbmxpbmUgTWFya2Vk
U3BhY2UqIHNwYWNlKCkgY29uc3Q7CiAgICAgICAgIFZNKiB2bSgpIGNvbnN0OwpAQCAtMTk5LDcg
KzIwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBkdW1wU3RhdGUoUHJpbnRTdHJlYW0mKTsK
ICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSGFuZGxlKEhlYXAmLCBTdWJzcGFjZSos
IHZvaWQqKTsKKyAgICAgICAgSGFuZGxlKEhlYXAmLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKiwg
dm9pZCopOwogICAgICAgICAKICAgICAgICAgZW51bSBTd2VlcERlc3RydWN0aW9uTW9kZSB7IEJs
b2NrSGFzTm9EZXN0cnVjdG9ycywgQmxvY2tIYXNEZXN0cnVjdG9ycywgQmxvY2tIYXNEZXN0cnVj
dG9yc0FuZENvbGxlY3RvcklzUnVubmluZyB9OwogICAgICAgICBlbnVtIFNjcmliYmxlTW9kZSB7
IERvbnRTY3JpYmJsZSwgU2NyaWJibGUgfTsKQEAgLTIyOSw3ICsyMzEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIEFsbG9jYXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwogICAgICAgICBib29sIG1f
aXNGcmVlTGlzdGVkIHsgZmFsc2UgfTsKIAotICAgICAgICBTdWJzcGFjZSogbV9zdWJzcGFjZSB7
IG51bGxwdHIgfTsKKyAgICAgICAgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciogbV9hbGlnbmVkTWVt
b3J5QWxsb2NhdG9yIHsgbnVsbHB0ciB9OwogICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxs
b2NhdG9yIHsgbnVsbHB0ciB9OwogICAgICAgICBzaXplX3QgbV9pbmRleCB7IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CkBA
IC0yMzksNyArMjQxLDcgQEAgcHVibGljOgogICAgICAgICBNYXJrZWRCbG9jayogbV9ibG9jayB7
IG51bGxwdHIgfTsKICAgICB9OwogICAgICAgICAKLSAgICBzdGF0aWMgTWFya2VkQmxvY2s6Okhh
bmRsZSogdHJ5Q3JlYXRlKEhlYXAmLCBTdWJzcGFjZSopOworICAgIHN0YXRpYyBNYXJrZWRCbG9j
azo6SGFuZGxlKiB0cnlDcmVhdGUoSGVhcCYsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqKTsKICAg
ICAgICAgCiAgICAgSGFuZGxlJiBoYW5kbGUoKTsKICAgICAgICAgCkBAIC0zOTYsOSArMzk4LDkg
QEAgaW5saW5lIE1hcmtlZEFsbG9jYXRvciogTWFya2VkQmxvY2s6OkhhbgogICAgIHJldHVybiBt
X2FsbG9jYXRvcjsKIH0KIAotaW5saW5lIFN1YnNwYWNlKiBNYXJrZWRCbG9jazo6SGFuZGxlOjpz
dWJzcGFjZSgpIGNvbnN0CitpbmxpbmUgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciogTWFya2VkQmxv
Y2s6OkhhbmRsZTo6YWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fc3Vic3BhY2U7CisgICAgcmV0dXJuIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKIH0KIAog
aW5saW5lIEhlYXAqIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmhlYXAoKSBjb25zdApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAkocmV2aXNpb24gMjIwMTY0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NCwxMCArNTQsMTEgQEAgc3RydWN0IERlc3Ryb3lGdW5jIHsKIAogfSAvLyBhbm9ueW1vdXMg
bmFtZXNwYWNlCiAKLVN1YnNwYWNlOjpTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAs
IEFsbG9jYXRvckF0dHJpYnV0ZXMgYXR0cmlidXRlcykKK1N1YnNwYWNlOjpTdWJzcGFjZShDU3Ry
aW5nIG5hbWUsIEhlYXAmIGhlYXAsIEFsbG9jYXRvckF0dHJpYnV0ZXMgYXR0cmlidXRlcywgQWxp
Z25lZE1lbW9yeUFsbG9jYXRvciogYWxpZ25lZE1lbW9yeUFsbG9jYXRvcikKICAgICA6IG1fc3Bh
Y2UoaGVhcC5vYmplY3RTcGFjZSgpKQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX2F0dHJp
YnV0ZXMoYXR0cmlidXRlcykKKyAgICAsIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvcihhbGlnbmVk
TWVtb3J5QWxsb2NhdG9yKQogICAgICwgbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24obV9z
cGFjZS5maXJzdEFsbG9jYXRvcigpKQogewogICAgIC8vIEl0J3MgcmVtb3RlbHkgcG9zc2libGUg
dGhhdCB3ZSdyZSBHQ2luZyByaWdodCBub3cgZXZlbiBpZiB0aGUgY2xpZW50IGlzIGNhcmVmdWwg
dG8gb25seQpAQCAtODgsMjMgKzg5LDYgQEAgdm9pZCBTdWJzcGFjZTo6ZGVzdHJveShWTSYgdm0s
IEpTQ2VsbCogYwogICAgIERlc3Ryb3lGdW5jKCkodm0sIGNlbGwpOwogfQogCi1ib29sIFN1YnNw
YWNlOjpjYW5UcmFkZUJsb2Nrc1dpdGgoU3Vic3BhY2UqKQotewotICAgIHJldHVybiB0cnVlOwot
fQotCi12b2lkKiBTdWJzcGFjZTo6dHJ5QWxsb2NhdGVBbGlnbmVkTWVtb3J5KHNpemVfdCBhbGln
bm1lbnQsIHNpemVfdCBzaXplKQotewotICAgIHZvaWQqIHJlc3VsdCA9IHRyeUZhc3RBbGlnbmVk
TWFsbG9jKGFsaWdubWVudCwgc2l6ZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBT
dWJzcGFjZTo6ZnJlZUFsaWduZWRNZW1vcnkodm9pZCogYmFzZVB0cikKLXsKLSAgICBmYXN0QWxp
Z25lZEZyZWUoYmFzZVB0cik7Ci0gICAgV1RGOjpjb21waWxlckZlbmNlKCk7Ci19Ci0KIC8vIFRo
ZSByZWFzb24gd2h5IHdlIGRpc3Rpbmd1aXNoIGJldHdlZW4gYWxsb2NhdGUgYW5kIHRyeUFsbG9j
YXRlIGlzIHRvIG1pbmltaXplIHRoZSBudW1iZXIgb2YKIC8vIGNoZWNrcyBvbiB0aGUgYWxsb2Nh
dGlvbiBwYXRoIGluIGJvdGggY2FzZXMuIExpa2V3aXNlLCB0aGUgcmVhc29uIHdoeSB3ZSBoYXZl
IG92ZXJsb2FkcyB3aXRoIGFuZAogLy8gd2l0aG91dCBkZWZlcnJhbENvbnRleHQgaXMgdG8gbWlu
aW1pemUgdGhlIGFtb3VudCBvZiBjb2RlIGZvciBjYWxsaW5nIGFsbG9jYXRlIHdoZW4geW91IGRv
bid0CkBAIC0xNjcsOSArMTUxLDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogU3Vic3BhY2U6OmZp
bmRFbXB0eQogewogICAgIGZvciAoOyBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbjsgbV9h
bGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24gPSBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlv
bi0+bmV4dEFsbG9jYXRvcigpKSB7CiAgICAgICAgIFN1YnNwYWNlKiBvdGhlclN1YnNwYWNlID0g
bV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24tPnN1YnNwYWNlKCk7Ci0gICAgICAgIGlmICgh
Y2FuVHJhZGVCbG9ja3NXaXRoKG90aGVyU3Vic3BhY2UpKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGlmICghb3RoZXJTdWJzcGFjZS0+Y2FuVHJhZGVCbG9ja3NXaXRoKHRoaXMpKQor
ICAgICAgICBpZiAob3RoZXJTdWJzcGFjZS0+YWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpICE9IGFs
aWduZWRNZW1vcnlBbGxvY2F0b3IoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAK
ICAgICAgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9hbGxvY2F0b3JGb3JF
bXB0eUFsbG9jYXRpb24tPmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwor
CiAvLyBUaGUgaWRlYSBvZiBzdWJzcGFjZXMgaXMgdGhhdCB5b3UgY2FuIHByb3ZpZGUgc29tZSBj
dXN0b20gYmVoYXZpb3IgZm9yIHlvdXIgb2JqZWN0cyBpZiB5b3UKIC8vIGFsbG9jYXRlIHRoZW0g
ZnJvbSBhIGN1c3RvbSBTdWJzcGFjZSBpbiB3aGljaCB5b3Ugb3ZlcnJpZGUgc29tZSBvZiB0aGUg
dmlydHVhbCBtZXRob2RzLiBUaGlzCiAvLyBjbGFzcyBpcyB0aGUgYmFzZWNsYXNzIG9mIFN1YnNw
YWNlcyBhbmQgaXQgcHJvdmlkZXMgYSByZWFzb25hYmxlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24s
IHdoZXJlCkBAIC00NCwxMyArNDYsMTQgQEAgY2xhc3MgU3Vic3BhY2UgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFN1YnNwYWNlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAm
LCBBbGxvY2F0b3JBdHRyaWJ1dGVzKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBTdWJzcGFjZShD
U3RyaW5nIG5hbWUsIEhlYXAmLCBBbGxvY2F0b3JBdHRyaWJ1dGVzLCBBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+U3Vic3BhY2UoKTsKICAg
ICAKLSAgICBjb25zdCBjaGFyICpuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLmRhdGEoKTsg
fQorICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWUuZGF0YSgpOyB9
CiAgICAgTWFya2VkU3BhY2UmIHNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zcGFjZTsgfQogICAg
IAogICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJl
dHVybiBtX2F0dHJpYnV0ZXM7IH0KKyAgICBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKiBhbGlnbmVk
TWVtb3J5QWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9y
OyB9CiAgICAgCiAgICAgLy8gVGhlIHB1cnBvc2Ugb2Ygb3ZlcnJpZGluZyB0aGlzIGlzIHRvIHNw
ZWNpYWxpemUgdGhlIHN3ZWVwIGZvciB5b3VyIGRlc3RydWN0b3JzLiBUaGlzIHdvbid0CiAgICAg
Ly8gYmUgY2FsbGVkIGZvciBuby1kZXN0cnVjdG9yIGJsb2Nrcy4gVGhpcyBtdXN0IGNhbGwgTWFy
a2VkQmxvY2s6OmZpbmlzaFN3ZWVwS25vd2luZ1N1YnNwYWNlLgpAQCAtNTksMTAgKzYyLDYgQEAg
cHVibGljOgogICAgIC8vIFRoZXNlIGdldCBjYWxsZWQgZm9yIGxhcmdlIG9iamVjdHMuCiAgICAg
dmlydHVhbCB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqKTsKICAgICAKLSAgICB2aXJ0dWFsIGJv
b2wgY2FuVHJhZGVCbG9ja3NXaXRoKFN1YnNwYWNlKiBvdGhlcik7Ci0gICAgdmlydHVhbCB2b2lk
KiB0cnlBbGxvY2F0ZUFsaWduZWRNZW1vcnkoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUp
OwotICAgIHZpcnR1YWwgdm9pZCBmcmVlQWxpZ25lZE1lbW9yeSh2b2lkKik7Ci0gICAgCiAgICAg
TWFya2VkQWxsb2NhdG9yKiB0cnlBbGxvY2F0b3JGb3Ioc2l6ZV90KTsKICAgICBNYXJrZWRBbGxv
Y2F0b3IqIGFsbG9jYXRvckZvcihzaXplX3QpOwogICAgIApAQCAtMTE1LDYgKzExNCw4IEBAIHBy
aXZhdGU6CiAgICAgQ1N0cmluZyBtX25hbWU7CiAgICAgQWxsb2NhdG9yQXR0cmlidXRlcyBtX2F0
dHJpYnV0ZXM7CiAgICAgCisgICAgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciogbV9hbGlnbmVkTWVt
b3J5QWxsb2NhdG9yOworICAgIAogICAgIHN0ZDo6YXJyYXk8TWFya2VkQWxsb2NhdG9yKiwgTWFy
a2VkU3BhY2U6Om51bVNpemVDbGFzc2VzPiBtX2FsbG9jYXRvckZvclNpemVTdGVwOwogICAgIE1h
cmtlZEFsbG9jYXRvciogbV9maXJzdEFsbG9jYXRvciB7IG51bGxwdHIgfTsKICAgICBNYXJrZWRB
bGxvY2F0b3IqIG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uIHsgbnVsbHB0ciB9OyAvLyBV
c2VzIHRoZSBNYXJrZWRTcGFjZSBsaW5rZWQgbGlzdCBvZiBibG9ja3MuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdFN1YnNwYWNlLmNwcAkocmV2aXNpb24gMjIwMTY0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3RTdWJzcGFjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDggKzQzLDggQEAgc3RydWN0IERlc3Ryb3lGdW5jIHsKIAogfSAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCiAKLUpTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2U6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0U3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwKQotICAgIDogU3Vi
c3BhY2UobmFtZSwgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBI
ZWFwQ2VsbDo6SlNDZWxsKSkKK0pTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2U6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0U3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yKiBhbGxvY2F0b3IpCisgICAgOiBTdWJzcGFjZShuYW1lLCBoZWFwLCBBbGxv
Y2F0b3JBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpLCBhbGxv
Y2F0b3IpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVz
dHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlLmgJKHJldmlzaW9uIDIy
MDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0U3Vic3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogY2xhc3MgSlNEZXN0cnVjdGlibGVPYmplY3RTdWJzcGFjZSA6IHB1YmxpYyBTdWJz
cGFjZSB7CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNEZXN0cnVjdGlibGVPYmpl
Y3RTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBK
U0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYsIEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5KU0Rlc3Ry
dWN0aWJsZU9iamVjdFN1YnNwYWNlKCk7CiAgICAgCiAgICAgdm9pZCBmaW5pc2hTd2VlcChNYXJr
ZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxpc3QqKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdFN1YnNwYWNlLmNwcAkocmV2aXNpb24gMjIwMTY0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMsOCBAQCBzdHJ1Y3QgRGVzdHJveUZ1bmMgewog
CiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1
YnNwYWNlOjpKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBI
ZWFwJiBoZWFwKQotICAgIDogU3Vic3BhY2UobmFtZSwgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRl
cyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKK0pTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3RTdWJzcGFjZTo6SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlKENTdHJp
bmcgbmFtZSwgSGVhcCYgaGVhcCwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciogYWxsb2NhdG9yKQor
ICAgIDogU3Vic3BhY2UobmFtZSwgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRlcyhOZWVkc0Rlc3Ry
dWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSwgYWxsb2NhdG9yKQogewogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Vic3Bh
Y2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0U3Vic3BhY2UuaAkocmV2aXNpb24gMjIwMTY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZSA6IHB1YmxpYyBTdWJzcGFjZSB7
CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dFN1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmLCBBbGln
bmVkTWVtb3J5QWxsb2NhdG9yKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+SlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlKCk7CiAgICAgCiAgICAgdm9pZCBmaW5pc2hT
d2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxpc3QqKSBvdmVycmlkZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nU3Vic3BhY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nU3Vic3BhY2UuY3Bw
CShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZ1N1YnNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMsOCBAQCBzdHJ1Y3Qg
RGVzdHJveUZ1bmMgewogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotSlNTdHJpbmdTdWJz
cGFjZTo6SlNTdHJpbmdTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXApCi0gICAgOiBT
dWJzcGFjZShuYW1lLCBoZWFwLCBBbGxvY2F0b3JBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24s
IEhlYXBDZWxsOjpKU0NlbGwpKQorSlNTdHJpbmdTdWJzcGFjZTo6SlNTdHJpbmdTdWJzcGFjZShD
U3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIGFsbG9jYXRv
cikKKyAgICA6IFN1YnNwYWNlKG5hbWUsIGhlYXAsIEFsbG9jYXRvckF0dHJpYnV0ZXMoTmVlZHNE
ZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCksIGFsbG9jYXRvcikKIHsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdTdWJzcGFjZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nU3Vic3BhY2UuaAko
cmV2aXNpb24gMjIwMTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmdTdWJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiBjbGFzcyBKU1N0cmluZ1N1YnNwYWNlIDogcHVibGljIFN1YnNwYWNlIHsKIHB1Ymxp
YzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU1N0cmluZ1N1YnNwYWNlKENTdHJpbmcgbmFtZSwg
SGVhcCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nU3Vic3BhY2UoQ1N0cmluZyBu
YW1lLCBIZWFwJiwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciopOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZpcnR1YWwgfkpTU3RyaW5nU3Vic3BhY2UoKTsKICAgICAKICAgICB2b2lkIGZpbmlzaFN3
ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlzdCopIG92ZXJyaWRlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjIwMTY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMCAr
NDQsMTIgQEAKICNpbmNsdWRlICJFdmFsQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
LmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCisjaW5jbHVkZSAiRmFzdE1hbGxvY0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2su
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJHaWdhY2FnZUFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIYXNPd25Qcm9wZXJ0eUNhY2hlLmgiCiAjaW5j
bHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMTYyLDE1
ICsxNjQsMTUgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
ICwgbV9ydW5Mb29wKENGUnVuTG9vcEdldEN1cnJlbnQoKSkKICNlbmRpZiAvLyBVU0UoQ0YpCiAg
ICAgLCBoZWFwKHRoaXMsIGhlYXBUeXBlKQotICAgICwgYXV4aWxpYXJ5U3BhY2UoIkF1eGlsaWFy
eSIsIGhlYXAsIEFsbG9jYXRvckF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVh
cENlbGw6OkF1eGlsaWFyeSkpCi0gICAgLCBjZWxsU3BhY2UoIkpTQ2VsbCIsIGhlYXAsIEFsbG9j
YXRvckF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkp
Ci0gICAgLCBkZXN0cnVjdGlibGVDZWxsU3BhY2UoIkRlc3RydWN0aWJsZSBKU0NlbGwiLCBoZWFw
LCBBbGxvY2F0b3JBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwp
KQotICAgICwgc3RyaW5nU3BhY2UoIkpTU3RyaW5nIiwgaGVhcCkKLSAgICAsIGRlc3RydWN0aWJs
ZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXApCi0gICAgLCBlYWdlcmx5
U3dlcHREZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiRWFnZXJseSBTd2VwdCBKU0Rlc3RydWN0aWJs
ZU9iamVjdCIsIGhlYXApCi0gICAgLCBzZWdtZW50ZWRWYXJpYWJsZU9iamVjdFNwYWNlKCJKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0U3BhY2UiLCBoZWFwKQorICAgICwgYXV4aWxpYXJ5U3BhY2Uo
IkF1eGlsaWFyeSIsIGhlYXAsIEFsbG9jYXRvckF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVj
dGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSksICZHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0
b3I6Omluc3RhbmNlKCkpCisgICAgLCBjZWxsU3BhY2UoIkpTQ2VsbCIsIGhlYXAsIEFsbG9jYXRv
ckF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCksICZG
YXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6aW5zdGFuY2UoKSkKKyAgICAsIGRlc3Ry
dWN0aWJsZUNlbGxTcGFjZSgiRGVzdHJ1Y3RpYmxlIEpTQ2VsbCIsIGhlYXAsIEFsbG9jYXRvckF0
dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCksICZGYXN0TWFsbG9j
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6aW5zdGFuY2UoKSkKKyAgICAsIHN0cmluZ1NwYWNlKCJK
U1N0cmluZyIsIGhlYXAsICZGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6aW5zdGFu
Y2UoKSkKKyAgICAsIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVj
dCIsIGhlYXAsICZGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6aW5zdGFuY2UoKSkK
KyAgICAsIGVhZ2VybHlTd2VwdERlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJFYWdlcmx5IFN3ZXB0
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgJkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yOjppbnN0YW5jZSgpKQorICAgICwgc2VnbWVudGVkVmFyaWFibGVPYmplY3RTcGFjZSgi
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFNwYWNlIiwgaGVhcCwgJkZhc3RNYWxsb2NBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yOjppbnN0YW5jZSgpKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAg
ICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UoIkpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFj
ZSIsIGhlYXApCisgICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKCJKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrU3BhY2UiLCBoZWFwLCAmRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6
Omluc3RhbmNlKCkpCiAjZW5kaWYKICAgICAsIHZtVHlwZSh2bVR5cGUpCiAgICAgLCBjbGllbnRE
YXRhKDApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDIyMDE2
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25FdmVudExvY2F0aW9uLmgiCiAj
aW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uSGFzRXhl
Y3V0ZWRDYWNoZS5oIgotI2luY2x1ZGUgIkdpZ2FjYWdlU3Vic3BhY2UuaCIKICNpbmNsdWRlICJI
ZWFwLmgiCiAjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSklUVGh1bmtzLmgiCkBA
IC0yODcsNyArMjg2LDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBIZWFwIGhlYXA7CiAgICAg
Ci0gICAgR2lnYWNhZ2VTdWJzcGFjZSBhdXhpbGlhcnlTcGFjZTsKKyAgICBTdWJzcGFjZSBhdXhp
bGlhcnlTcGFjZTsKICAgICAKICAgICAvLyBXaGVuZXZlciBwb3NzaWJsZSwgdXNlIHN1YnNwYWNl
Rm9yPENlbGxUeXBlPih2bSkgdG8gZ2V0IG9uZSBvZiB0aGVzZSBzdWJzcGFjZXMuCiAgICAgU3Vi
c3BhY2UgY2VsbFNwYWNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuY3BwCShy
ZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw4
IEBAIHN0cnVjdCBEZXN0cm95RnVuYyB7CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1K
U1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2U6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJz
cGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXApCi0gICAgOiBTdWJzcGFjZShuYW1lLCBoZWFw
LCBBbGxvY2F0b3JBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwp
KQorSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2Nr
U3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
KiBhbGxvY2F0b3IpCisgICAgOiBTdWJzcGFjZShuYW1lLCBoZWFwLCBBbGxvY2F0b3JBdHRyaWJ1
dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpLCBhbGxvY2F0b3IpCiB7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2Rl
QmxvY2tTdWJzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oCShyZXZpc2lvbiAyMjAxNjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vi
c3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlIDogcHVibGljIFN1YnNwYWNl
IHsKIHB1YmxpYzoKLSAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UoQ1N0cmluZyBu
YW1lLCBIZWFwJik7CisgICAgSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlKENTdHJpbmcg
bmFtZSwgSGVhcCYsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqKTsKICAgICB2aXJ0dWFsIH5KU1dl
YkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UoKTsKICAgICAKICAgICB2b2lkIGZpbmlzaFN3ZWVw
KE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlzdCopIG92ZXJyaWRlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjIwMTY0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDgtMDMgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgYWxsb2NhdG9yIHVzZWQgdG8gYWxsb2NhdGUgbWVt
b3J5IGZvciBNYXJrZWRCbG9ja3MgYW5kIExhcmdlQWxsb2NhdGlvbnMgc2hvdWxkIG5vdCBiZSB0
aGUgU3Vic3BhY2UgaXRzZWxmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUxNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBubyBuZXcgYmVoYXZpb3IuCisgICAgICAg
IAorICAgICAgICBKdXN0IGFkYXB0aW5nIHRvIGFuIEFQSSBjaGFuZ2UuCisKKyAgICAgICAgKiBG
b3J3YXJkaW5nSGVhZGVycy9oZWFwL0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmg6
IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OkpTVk1DbGllbnREYXRhKToKKwogMjAx
Ny0wOC0wMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTiAocjIwNzE1NSk6IFVuYWJsZSB0byBzd2l0Y2ggc2hlZXRzIHdoZW4gcHJldmlld2luZyBO
dW1iZXJzICcwOSBzcHJlYWRzaGVldHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL2hlYXAvRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9oZWFwL0Zhc3RNYWxsb2NBbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvaGVhcC9GYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMiBAQAorI3ByYWdtYSBvbmNlCisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaD4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3Bw
CShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3Jl
SlNDbGllbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgor
I2luY2x1ZGUgPGhlYXAvRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaD4KICNpbmNs
dWRlIDxoZWFwL0hlYXBJbmxpbmVzLmg+CiAjaW5jbHVkZSA8aGVhcC9NYXJraW5nQ29uc3RyYWlu
dC5oPgogI2luY2x1ZGUgPGhlYXAvTWFya2VkQWxsb2NhdG9ySW5saW5lcy5oPgpAQCAtNDMsOCAr
NDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBKU1ZNQ2xpZW50RGF0YTo6SlNWTUNsaWVudERh
dGEoVk0mIHZtKQogICAgIDogbV9idWlsdGluRnVuY3Rpb25zKHZtKQogICAgICwgbV9idWlsdGlu
TmFtZXMoJnZtKQotICAgICwgbV9vdXRwdXRDb25zdHJhaW50U3BhY2UoIldlYkNvcmUgV3JhcHBl
ciB3LyBPdXRwdXQgQ29uc3RyYWludCIsIHZtLmhlYXApCi0gICAgLCBtX2dsb2JhbE9iamVjdE91
dHB1dENvbnN0cmFpbnRTcGFjZSgiV2ViQ29yZSBHbG9iYWwgT2JqZWN0IHcvIE91dHB1dCBDb25z
dHJhaW50Iiwgdm0uaGVhcCkKKyAgICAsIG1fb3V0cHV0Q29uc3RyYWludFNwYWNlKCJXZWJDb3Jl
IFdyYXBwZXIgdy8gT3V0cHV0IENvbnN0cmFpbnQiLCB2bS5oZWFwLCAmRmFzdE1hbGxvY0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I6Omluc3RhbmNlKCkpCisgICAgLCBtX2dsb2JhbE9iamVjdE91dHB1
dENvbnN0cmFpbnRTcGFjZSgiV2ViQ29yZSBHbG9iYWwgT2JqZWN0IHcvIE91dHB1dCBDb25zdHJh
aW50Iiwgdm0uaGVhcCwgJkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjppbnN0YW5j
ZSgpKQogewogfQogCg==
</data>
<flag name="review"
          id="337738"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317145</attachid>
            <date>2017-08-03 13:30:04 -0700</date>
            <delta_ts>2017-08-03 14:10:25 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>60911</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwMjE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDE3LTA4LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIGFsbG9jYXRvciB1c2VkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgTWFya2VkQmxvY2tzIGFu
ZCBMYXJnZUFsbG9jYXRpb25zIHNob3VsZCBub3QgYmUgdGhlIFN1YnNwYWNlIGl0c2VsZgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisgICAgICAgIAorICAgICAgICBUbyBtYWtlIGl0
IGVhc2llciB0byBoYXZlIG11bHRpcGxlIGdpZ2FjYWdlcyBhbmQgbWF5YmUgZXZlbiBmYW5jaWVy
IG1ldGhvZHMgb2YgYWxsb2NhdGluZywgdGhpcworICAgICAgICBkZWNvdXBsZXMgdGhlIGFsbG9j
YXRvciB1c2VkIHRvIGFsbG9jYXRlIG1lbW9yeSBmcm9tIHRoZSBHQyBTdWJzcGFjZS4gVGhpcyBt
ZWFucyB3ZSBubyBsb25nZXIgaGF2ZQorICAgICAgICB0byBjcmVhdGUgYSBuZXcgU3Vic3BhY2Ug
c3ViY2xhc3MgdG8gYWxsb2NhdGUgbWVtb3J5IGEgZGlmZmVyZW50IHdheS4gSW5zdGVhZCwgdGhl
IGFsbG9jYXRvciBpcyBub3cKKyAgICAgICAgZGV0ZXJtaW5lZCBieSB0aGUgQWxpZ25lZE1lbW9y
eUFsbG9jYXRvciBvYmplY3QuCisgICAgICAgIAorICAgICAgICBUaGlzIGFsc28gc2ltcGxpZmll
cyB0cmFkaW5nIG9mIGJsb2Nrcy4gQmVmb3JlLCBTdWJzcGFjZXMgaGFkIHRvIGRldGVybWluZSBp
ZiBvdGhlciBTdWJzcGFjZXMgY291bGQKKyAgICAgICAgdHJhZGUgYmxvY2tzIHdpdGggdGhlbSB1
c2luZyBjYW5UcmFkZUJsb2Nrc1dpdGgoKS4gVGhpcyBtYWtlcyBpdCBkaWZmaWN1bHQgZm9yIHR3
byBkaWZmZXJlbnQKKyAgICAgICAgU3Vic3BhY2VzIHRoYXQgYm90aCB1c2UgdGhlIHNhbWUgdW5k
ZXJseWluZyBhbGxvY2F0b3IgdG8gcmVhbGl6ZSB0aGF0IHRoZXkgY2FuIHRyYWRlIGJsb2NrcyB3
aXRoCisgICAgICAgIGVhY2ggb3RoZXIuIE5vdywgeW91IGp1c3QgbmVlZCB0byBhc2sgdGhlIGJs
b2NrIGJlaW5nIHN0b2xlbiBhbmQgdGhlIHN1YnNwYWNlIGRvaW5nIHRoZSBzdGVhbGluZyBpZgor
ICAgICAgICB0aGV5IHVzZSB0aGUgc2FtZSBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6QWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcik6CisgICAgICAgIChKU0M6OkFsaWduZWRNZW1vcnlBbGxvY2F0b3I6
On5BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKToKKyAgICAgICAgKiBoZWFwL0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuaDogQWRkZWQuCisgICAgICAgICogaGVhcC9GYXN0TWFsbG9jQWxpZ25lZE1lbW9y
eUFsbG9jYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpGYXN0TWFsbG9jQWxpZ25lZE1l
bW9yeUFsbG9jYXRvcjo6c2luZ2xldG9uKToKKyAgICAgICAgKEpTQzo6RmFzdE1hbGxvY0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I6OkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKToKKyAg
ICAgICAgKEpTQzo6RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6On5GYXN0TWFsbG9j
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcik6CisgICAgICAgIChKU0M6OkZhc3RNYWxsb2NBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUFsaWduZWRNZW1vcnkpOgorICAgICAgICAoSlND
OjpGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZnJlZUFsaWduZWRNZW1vcnkpOgor
ICAgICAgICAoSlNDOjpGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZHVtcCBjb25z
dCk6CisgICAgICAgICogaGVhcC9GYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBoZWFwL0dpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnNp
bmdsZXRvbik6CisgICAgICAgIChKU0M6OkdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6
R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6R2lnYWNhZ2VB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp+R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKToK
KyAgICAgICAgKEpTQzo6R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp0cnlBbGxvY2F0
ZUFsaWduZWRNZW1vcnkpOgorICAgICAgICAoSlNDOjpHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxv
Y2F0b3I6OmZyZWVBbGlnbmVkTWVtb3J5KToKKyAgICAgICAgKEpTQzo6R2lnYWNhZ2VBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBoZWFwL0dpZ2FjYWdlQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBoZWFwL0dpZ2FjYWdlU3Vi
c3BhY2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGhlYXAvR2lnYWNhZ2VTdWJzcGFjZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIGhlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcDoKKyAgICAgICAgKEpT
Qzo6TGFyZ2VBbGxvY2F0aW9uOjp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9j
YXRpb246OmRlc3Ryb3kpOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5n
KToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6Okhh
bmRsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRUb0FsbG9jYXRvcik6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN1YnNwYWNlIGNvbnN0KToKKyAgICAgICAg
KiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OmFsaWduZWRNZW1vcnlBbGxvY2F0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6SGFuZGxlOjpzdWJzcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9TdWJz
cGFjZS5jcHA6CisgICAgICAgIChKU0M6OlN1YnNwYWNlOjpTdWJzcGFjZSk6CisgICAgICAgIChK
U0M6OlN1YnNwYWNlOjpmaW5kRW1wdHlCbG9ja1RvU3RlYWwpOgorICAgICAgICAoSlNDOjpTdWJz
cGFjZTo6Y2FuVHJhZGVCbG9ja3NXaXRoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3Vic3Bh
Y2U6OnRyeUFsbG9jYXRlQWxpZ25lZE1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN1
YnNwYWNlOjpmcmVlQWxpZ25lZE1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9TdWJz
cGFjZS5oOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6bmFtZSBjb25zdCk6CisgICAgICAgIChK
U0M6OlN1YnNwYWNlOjphbGlnbmVkTWVtb3J5QWxsb2NhdG9yIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlOjpKU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNl
KToKKyAgICAgICAgKiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZTo6SlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlKToKKyAgICAgICAgKiBydW50aW1lL0pTU2VnbWVudGVk
VmFyaWFibGVPYmplY3RTdWJzcGFjZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdTdWJz
cGFjZS5jcHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nU3Vic3BhY2U6OkpTU3RyaW5nU3Vic3Bh
Y2UpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdTdWJzcGFjZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uaDoKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5j
cHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZTo6SlNXZWJB
c3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1i
bHlDb2RlQmxvY2tTdWJzcGFjZS5oOgorCiAyMDE3LTA4LTAyICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgc3RhY2sgdHJhY2Ug
aW5mb3JtYXRpb24gZm9yIGVhY2ggUmVjb3JkaW5nQWN0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ5MCw2ICs0OTAsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGZ0bC9GVExUaHVua3MuY3BwCiAgICAgZnRs
L0ZUTFZhbHVlUmFuZ2UuY3BwCiAKKyAgICBoZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3Bw
CiAgICAgaGVhcC9BbGxvY2F0b3JBdHRyaWJ1dGVzLmNwcAogICAgIGhlYXAvQ2VsbENvbnRhaW5l
ci5jcHAKICAgICBoZWFwL0NvZGVCbG9ja1NldC5jcHAKQEAgLTQ5OSwxMyArNTAwLDE0IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVhcC9EZWZlckdDLmNwcAogICAgIGhlYXAv
RGVzdHJ1Y3Rpb25Nb2RlLmNwcAogICAgIGhlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAK
KyAgICBoZWFwL0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcAogICAgIGhlYXAv
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAKICAgICBoZWFwL0ZyZWVMaXN0LmNwcAogICAgIGhl
YXAvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAogICAgIGhlYXAvR0NDb25kdWN0b3IuY3BwCiAgICAg
aGVhcC9HQ0xvZ2dpbmcuY3BwCiAgICAgaGVhcC9HQ1JlcXVlc3QuY3BwCi0gICAgaGVhcC9HaWdh
Y2FnZVN1YnNwYWNlLmNwcAorICAgIGhlYXAvR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
LmNwcAogICAgIGhlYXAvSGFuZGxlU2V0LmNwcAogICAgIGhlYXAvSGFuZGxlU3RhY2suY3BwCiAg
ICAgaGVhcC9IZWFwLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDIyMDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NjQsOCArNDY0LDYgQEAK
IAkJMEY1QTYyODQxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUE2MjgyMTg4Qzk4RDQwMDcy
QzlERiAvKiBGVExWYWx1ZVJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY1QUUyQzQxREY0RjI4MDAwNjZFRkUxIC8qIFZNSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU5MEJCM0Ex
QjdDRjY0RTAwNkIzRjAzIC8qIFZNSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUI0QTMzMUM4NEYwRDYwMEYxQjE3RSAvKiBTbG93
UGF0aFJldHVyblR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNUI0QTMyMUM4NEYwRDYwMEYxQjE3RSAvKiBTbG93UGF0aFJldHVyblR5cGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjVCRjE1
NjFGMjJFQjE3MDAyOUQ5MUQgLyogR2lnYWNhZ2VTdWJzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE1NDFGMjJFQjE3MDAyOUQ5MUQg
LyogR2lnYWNhZ2VTdWJzcGFjZS5jcHAgKi87IH07Ci0JCTBGNUJGMTU3MUYyMkVCMTcwMDI5RDkx
RCAvKiBHaWdhY2FnZVN1YnNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjVCRjE1NTFGMjJFQjE3MDAyOUQ5MUQgLyogR2lnYWNhZ2VTdWJzcGFj
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NUJGMTYzMUYyMzE3MTIwMDI5RDkxRCAvKiBCM0hvaXN0TG9vcEludmFyaWFudFZhbHVlcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE2MTFG
MjMxNzEyMDAyOUQ5MUQgLyogQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMuY3BwICovOyB9Owog
CQkwRjVCRjE2NDFGMjMxNzEyMDAyOUQ5MUQgLyogQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUJGMTYy
MUYyMzE3MTIwMDI5RDkxRCAvKiBCM0hvaXN0TG9vcEludmFyaWFudFZhbHVlcy5oICovOyB9Owog
CQkwRjVCRjE2NzFGMjNBMDk4MDAyOUQ5MUQgLyogQjNCYWNrd2FyZHNDRkcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUJGMTY2MUYyM0EwOTgwMDI5
RDkxRCAvKiBCM0JhY2t3YXJkc0NGRy5oICovOyB9OwpAQCAtODk4LDYgKzg5NiwxMiBAQAogCQkw
RkVBMEEzMzE3MEQ0MEJGMDBCQjcyMkMgLyogREZHSklUQ29kZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBMEEyRjE3MEQ0MEJGMDBCQjcyMkMg
LyogREZHSklUQ29kZS5jcHAgKi87IH07CiAJCTBGRUEwQTM0MTcwRDQwQkYwMEJCNzIyQyAvKiBE
RkdKSVRDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkVBMEEzMDE3MEQ0MEJGMDBCQjcyMkMgLyogREZHSklUQ29kZS5oICovOyB9OwogCQkwRkVC
M0VDRjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQjNFQ0UxNjIzN0Y2NzAwQUI2N0FE
IC8qIE1hY3JvQXNzZW1ibGVyLmNwcCAqLzsgfTsKKwkJMEZFQzNDNTIxRjMzQTQxNjAwRjU5QjZD
IC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzNDNTAxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuY3BwICovOyB9OworCQkwRkVDM0M1MzFGMzNBNDE2MDBGNTlCNkMgLyog
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZFQzNDNTExRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlB
bGxvY2F0b3IuaCAqLzsgfTsKKwkJMEZFQzNDNTYxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RNYWxs
b2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUMzQzU0MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0TWFsbG9j
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAgKi87IH07CisJCTBGRUMzQzU3MUYzM0E0NTMwMEY1
OUI2QyAvKiBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzNDNTUxRjMzQTQ1MzAwRjU5QjZD
IC8qIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZFQzNDNUExRjMzQTQ4OTAwRjU5QjZD
IC8qIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDM0M1ODFGMzNBNDg5MDBGNTlCNkMgLyog
R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCAqLzsgfTsKKwkJMEZFQzNDNUIxRjMz
QTQ4OTAwRjU5QjZDIC8qIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzNDNTkxRjMzQTQ4OTAw
RjU5QjZDIC8qIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oICovOyB9OwogCQkwRkVD
ODRGRTFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEI0MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwICovOyB9OwogCQkwRkVDODRGRjFCREFDREFD
MDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRCNTFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1
bWVudFJlZ1ZhbHVlLmggKi87IH07CiAJCTBGRUM4NTAwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jh
c2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZFQzg0QjYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9jay5jcHAgKi87IH07CkBA
IC0zMDUzLDggKzMwNTcsNiBAQAogCQkwRjVBNjI4MTE4OEM5OEQ0MDA3MkM5REYgLyogRlRMVmFs
dWVSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExWYWx1
ZVJhbmdlLmNwcDsgcGF0aCA9IGZ0bC9GVExWYWx1ZVJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY1QTYyODIxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMVmFsdWVSYW5nZS5oOyBwYXRo
ID0gZnRsL0ZUTFZhbHVlUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1
QjRBMzIxQzg0RjBENjAwRjFCMTdFIC8qIFNsb3dQYXRoUmV0dXJuVHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTbG93UGF0aFJldHVyblR5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMEY1QkYxNTQxRjIyRUIxNzAwMjlEOTFEIC8qIEdpZ2FjYWdlU3Vi
c3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2lnYWNhZ2VTdWJzcGFjZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNUJGMTU1MUYyMkVCMTcwMDI5RDkxRCAvKiBHaWdh
Y2FnZVN1YnNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdpZ2FjYWdlU3Vic3BhY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QkYxNjExRjIzMTcxMjAwMjlEOTFEIC8qIEIzSG9p
c3RMb29wSW52YXJpYW50VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzSG9pc3RMb29w
SW52YXJpYW50VmFsdWVzLmNwcDsgcGF0aCA9IGIzL0IzSG9pc3RMb29wSW52YXJpYW50VmFsdWVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QkYxNjIxRjIzMTcxMjAwMjlE
OTFEIC8qIEIzSG9pc3RMb29wSW52YXJpYW50VmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzSG9p
c3RMb29wSW52YXJpYW50VmFsdWVzLmg7IHBhdGggPSBiMy9CM0hvaXN0TG9vcEludmFyaWFudFZh
bHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVCRjE2NjFGMjNBMDk4MDAy
OUQ5MUQgLyogQjNCYWNrd2FyZHNDRkcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNCYWNrd2FyZHNDRkcu
aDsgcGF0aCA9IGIzL0IzQmFja3dhcmRzQ0ZHLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNDk2LDYgKzM0OTgsMTIgQEAKIAkJMEZFQTBBMkYxNzBENDBCRjAwQkI3MjJDIC8qIERG
R0pJVENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHSklU
Q29kZS5jcHA7IHBhdGggPSBkZmcvREZHSklUQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRUEwQTMwMTcwRDQwQkYwMEJCNzIyQyAvKiBERkdKSVRDb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0pJVENvZGUuaDsgcGF0aCA9IGRmZy9ERkdK
SVRDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUIzRUNFMTYyMzdGNjcw
MEFCNjdBRCAvKiBNYWNyb0Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGRUMzQzUwMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDM0M1MTFGMzNBNDE2MDBGNTlCNkMgLyogQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUMzQzU0MUYzM0E0NTMwMEY1OUI2
QyAvKiBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGRUMzQzU1MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0TWFsbG9jQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0TWFsbG9jQWxpZ25lZE1l
bW9yeUFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDM0M1ODFG
MzNBNDg5MDBGNTlCNkMgLyogR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUMzQzU5MUYzM0E0ODkwMEY1OUI2QyAvKiBHaWdh
Y2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2lnYWNhZ2VBbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4
NEI0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNBcmd1bWVudFJlZ1ZhbHVlLmNwcDsgcGF0aCA9
IGIzL0IzQXJndW1lbnRSZWdWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGRUM4NEI1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNBcmd1bWVudFJlZ1ZhbHVlLmg7IHBhdGggPSBi
My9CM0FyZ3VtZW50UmVnVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZF
Qzg0QjYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0Jhc2ljQmxvY2suY3BwOyBwYXRoID0gYjMvQjNCYXNp
Y0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYwMzEsNiArNjAzOSw4
IEBACiAJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRkVDM0M1MDFGMzNBNDE2MDBGNTlCNkMg
LyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAgKi8sCisJCQkJMEZFQzNDNTExRjMzQTQxNjAw
RjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLywKIAkJCQkwRkE3NjIwQTFEQjk1
OUY2MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3BlLmggKi8sCiAJCQkJMEY5NjMwMzUxRDQxOTJD
MzAwNTYwOUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMuY3BwICovLAogCQkJCTBGOTYzMDM2MUQ0
MTkyQzMwMDU2MDlEOSAvKiBBbGxvY2F0b3JBdHRyaWJ1dGVzLmggKi8sCkBAIC02MDU2LDYgKzYw
NjYsOCBAQAogCQkJCTBGOTYzMDM4MUQ0MTkyQzMwMDU2MDlEOSAvKiBEZXN0cnVjdGlvbk1vZGUu
aCAqLywKIAkJCQkyQTgzNjM4MzE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxs
YmFjay5jcHAgKi8sCiAJCQkJMkE4MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2
aXR5Q2FsbGJhY2suaCAqLywKKwkJCQkwRkVDM0M1NDFGMzNBNDUzMDBGNTlCNkMgLyogRmFzdE1h
bGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwICovLAorCQkJCTBGRUMzQzU1MUYzM0E0NTMw
MEY1OUI2QyAvKiBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oICovLAogCQkJCTBG
NTUxM0E3MUQ1QTY4Q0IwMEMzMkJEOCAvKiBGcmVlTGlzdC5jcHAgKi8sCiAJCQkJMEY1NTEzQTUx
RDVBNjgyQTAwQzMyQkQ4IC8qIEZyZWVMaXN0LmggKi8sCiAJCQkJMEY2NTg1RTAxRUUwODA1NzAw
OTUxNzZEIC8qIEZyZWVMaXN0SW5saW5lcy5oICovLApAQCAtNjA3OSw4ICs2MDkxLDggQEAKIAkJ
CQkyQTM0M0Y3NDE4QTE3NDhCMDAzOUIwODUgLyogR0NTZWdtZW50ZWRBcnJheS5oICovLAogCQkJ
CTJBMzQzRjc3MThBMTc0OUQwMDM5QjA4NSAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oICov
LAogCQkJCTBGODZBMjZFMUQ2RjdCMzEwMENCMEM5MiAvKiBHQ1R5cGVNYXAuaCAqLywKLQkJCQkw
RjVCRjE1NDFGMjJFQjE3MDAyOUQ5MUQgLyogR2lnYWNhZ2VTdWJzcGFjZS5jcHAgKi8sCi0JCQkJ
MEY1QkYxNTUxRjIyRUIxNzAwMjlEOTFEIC8qIEdpZ2FjYWdlU3Vic3BhY2UuaCAqLywKKwkJCQkw
RkVDM0M1ODFGMzNBNDg5MDBGNTlCNkMgLyogR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
LmNwcCAqLywKKwkJCQkwRkVDM0M1OTFGMzNBNDg5MDBGNTlCNkMgLyogR2lnYWNhZ2VBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yLmggKi8sCiAJCQkJMTQyRTMxMkIxMzRGRjBBNjAwQUZBREI1IC8qIEhh
bmRsZS5oICovLAogCQkJCUMyODMxOEZGMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5o
ICovLAogCQkJCUMyODMxOTAxMTZGRTUzM0UwMDE1N0JGRCAvKiBIYW5kbGVCbG9ja0lubGluZXMu
aCAqLywKQEAgLTkxMzUsNiArOTE0Nyw3IEBACiAJCQkJN0MxODRFMjMxN0JFRTI0MDAwN0NCNjNB
IC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTZCNzMxRTFC
REEwOEVGMDAzMzFCODQgLyogSlNQcm9taXNlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGRUMzQzU3MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0TWFsbG9j
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxODRFMUYxN0JF
RTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTk2QjczMUYxQkRBMDhFRjAwMzMxQjg0IC8qIEpTUHJvbWlzZVByb3RvdHlwZS5sdXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJBMDVBQkQ2MTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtOTI0Nyw2ICs5MjYwLDcgQEAKIAkJCQk4
NjAxNjFFNjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1RUYxM0Y5MUYwNzMyMDQwMDBGMDQ0MiAvKiBtYWtlLWpzLWZpbGUt
YXJyYXlzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwMDg3M0ExN0NCRTg1MzAwQzNFNjQzIC8q
IE1hcENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDM0M1MzFGMzNBNDE2MDBG
NTlCNkMgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0
REVGOTQxODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzAwODczRTE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2Nh
dG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTk1NTEsNyArOTU2NSw2IEBACiAJCQkJMEY1QUUyQzQx
REY0RjI4MDAwNjZFRkUxIC8qIFZNSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIy
RDcxRTQyODU3MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RTZGNTZERTFFNjRFQUQ2MDBEMTc4MDEgLyogVk1UcmFwcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MEY1QkYxNTcxRjIyRUIxNzAwMjlEOTFEIC8qIEdpZ2FjYWdlU3Vic3BhY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUzRjQwRTkzMUQ1QTRBQjMwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTNDQTczMEExRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQ
bGFuLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0Y4RDIwMDFFODM4N0Q0MDBEMjExMTYgLyogV2Fz
bUJCUVBsYW5JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTk1NjgsNiArOTU4MSw3IEBACiAJ
CQkJQUQwMDY1OUUxRUNBQzgxMjAwMENBOTI2IC8qIFdhc21MaW1pdHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUzRTlFMEFDMUVBRTgzREYwMEZFRTI1MSAvKiBXYXNtTWFjaGluZVRocmVhZHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTUzNTU1NzE0MUQ5RDlFQTUwMDZENTgzQiAvKiBXYXNtTWVtb3J5
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDM0M1QjFGMzNBNDg5MDBGNTlCNkMgLyogR2lnYWNh
Z2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OUI3NTk3NTFE
RkE0QzYwMDA1MjE3NEMgLyogV2FzbU1lbW9yeUluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3OTAwODEzOTFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTNFNzc3RTQxRTkyRTI2NTAwN0NCRUM0IC8qIFdhc21Nb2R1bGVJbmZvcm1hdGlv
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDMyMyw2ICsxMDMzNyw3IEBACiAJCQkJNjJFQzlCQjYx
QjdFQjA3QzAwMzAzQUQxIC8qIENhbGxGcmFtZVNodWZmbGVEYXRhLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTYyRDc1NUQ2MUI4NEZCNDYwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk2MkQ3NTVENTFCODRGQjQwMDAxODAxRkEgLyogQ2FsbEZyYW1l
U2h1ZmZsZXIzMl82NC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkVDM0M1NjFGMzNBNDUzMDBG
NTlCNkMgLyogRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNjJENzU1RDQxQjg0RkIzRDAwMTgwMUZBIC8qIENhbGxGcmFtZVNodWZmbGVyNjQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjAxNEJDRjcxNjAwODg1QjRGIC8qIENhbGxM
aW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkzMzI5RDE0Q0E3REMzMDA4NUYzQzYg
LyogQ2FsbExpbmtTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDc1NSw2ICsxMDc3MCw3
IEBACiAJCQkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTAzRkExRDE4OEUwRkIwMDAxMTBGMTQgLyogSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwMTND
QThCMUI0OTFBOTQwMENBRTYxMyAvKiBKU0pvYi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkVD
M0M1MjFGMzNBNDE2MDBGNTlCNkMgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDBCN0QxRDBEQzY5QUY3MDA5QzQyQjggLyogSlNMZXhpY2FsRW52aXJv
bm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NzUxMDdFQzEzRTAwMTNFN0IyIC8q
IEpTTG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjVENzA5QjE2REU5OUY0MDBGQ0E2QkMg
LyogSlNNYW5hZ2VkVmFsdWUubW0gaW4gU291cmNlcyAqLywKQEAgLTEwOTg5LDcgKzExMDA1LDYg
QEAKIAkJCQk3MEVDMEVDNjFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5
cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERUMxMDdFQzdFNzAwNjUwNDQ2IC8qIFN0
cmluZ09iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFRDEwN0VDN0U3MDA2NTA0
NDYgLyogU3RyaW5nUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGNUJGMTU2MUYy
MkVCMTcwMDI5RDkxRCAvKiBHaWdhY2FnZVN1YnNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzMzVGMjREMTJFNjc2NUIwMDJCNTU1MyAvKiBTdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDREUzQjQzMEU2QzgzMkQwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0U0RUU3MEYwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVj
dHVyZUNoYWluLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTEwNzMsNiArMTEwODgsNyBAQAogCQkJ
CUFENzQzOEMxMUUwNDU3QUEwMEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUyNTBEMkQxMUU4REEwNUEwMDI5QTkzMiAvKiBXYXNtVGh1bmtzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUzRkY3RjlCMURCRkQyQjkwMEEyNkNDQyAvKiBXYXNtVmFsaWRhdGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZFQzNDNUExRjMzQTQ4OTAwRjU5QjZDIC8qIEdpZ2Fj
YWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzBGQjMw
NDFFN0ExMTQ2MDAzQzE5REQgLyogV2FzbVdvcmtsaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZFRDk0RjJFMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjkxOUQyNTE1ODUzQ0UwMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgaW4gU291cmNl
cyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
aCIKKworbmFtZXNwYWNlIEpTQyB7IAorCitBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yKCkKK3sKK30KKworQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6fkFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9j
YXRvci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBbGln
bmVkTWVtb3J5QWxsb2NhdG9yKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCk7CisgICAgdmlydHVhbCB+QWxpZ25lZE1l
bW9yeUFsbG9jYXRvcigpOworICAgIAorICAgIHZpcnR1YWwgdm9pZCogdHJ5QWxsb2NhdGVBbGln
bmVkTWVtb3J5KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGZyZWVBbGlnbmVkTWVtb3J5KHZvaWQqKSA9IDA7CisgICAgCisgICAgdmlydHVhbCB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRmFzdE1hbGxvY0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9j
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKKworI2luY2x1ZGUgPG11
dGV4PgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitG
YXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvciYgRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlB
bGxvY2F0b3I6Omluc3RhbmNlKCkKK3sKKyAgICBzdGF0aWMgRmFzdE1hbGxvY0FsaWduZWRNZW1v
cnlBbGxvY2F0b3IqIHJlc3VsdDsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2UoCisgICAgICAgIG9uY2VGbGFnLAorICAgICAgICBbXSB7Cisg
ICAgICAgICAgICByZXN1bHQgPSBuZXcgRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3Io
KTsKKyAgICAgICAgfSk7CisgICAgcmV0dXJuICpyZXN1bHQ7Cit9CisKK0Zhc3RNYWxsb2NBbGln
bmVkTWVtb3J5QWxsb2NhdG9yOjpGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpCit7
Cit9CisKK0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp+RmFzdE1hbGxvY0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IoKQoreworfQorCit2b2lkKiBGYXN0TWFsbG9jQWxpZ25lZE1lbW9y
eUFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVBbGlnbmVkTWVtb3J5KHNpemVfdCBhbGlnbm1lbnQsIHNp
emVfdCBzaXplKQoreworICAgIHJldHVybiB0cnlGYXN0QWxpZ25lZE1hbGxvYyhhbGlnbm1lbnQs
IHNpemUpOworfQorCit2b2lkIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpmcmVl
QWxpZ25lZE1lbW9yeSh2b2lkKiBiYXNlUHRyKQoreworICAgIGZhc3RBbGlnbmVkRnJlZShiYXNl
UHRyKTsKK30KKwordm9pZCBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludCgiRmFzdE1hbGxvYyIpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Zhc3RNYWxsb2NB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yIDogcHVibGljIEFs
aWduZWRNZW1vcnlBbGxvY2F0b3IgeworcHVibGljOgorICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvciYgaW5zdGFuY2UoKTsKKworICAg
IH5GYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpOworICAgIAorICAgIHZvaWQqIHRy
eUFsbG9jYXRlQWxpZ25lZE1lbW9yeShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBmcmVlQWxpZ25lZE1lbW9yeSh2b2lkKikgb3ZlcnJpZGU7CisgICAg
CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6
CisgICAgRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IoKTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HaWdhY2FnZUFs
aWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0dpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKKworI2luY2x1ZGUgPG11
dGV4PgorI2luY2x1ZGUgPHd0Zi9HaWdhY2FnZS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworR2ln
YWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yJiBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0
b3I6Omluc3RhbmNlKCkKK3sKKyAgICBzdGF0aWMgR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yKiByZXN1bHQ7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0
ZDo6Y2FsbF9vbmNlKAorICAgICAgICBvbmNlRmxhZywKKyAgICAgICAgW10geworICAgICAgICAg
ICAgcmVzdWx0ID0gbmV3IEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpOworICAgICAg
ICB9KTsKKyAgICByZXR1cm4gKnJlc3VsdDsKK30KKworR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yOjpHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKQoreworfQorCitHaWdhY2Fn
ZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6On5HaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3Io
KQoreworfQorCit2b2lkKiBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnRyeUFsbG9j
YXRlQWxpZ25lZE1lbW9yeShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBy
ZXR1cm4gR2lnYWNhZ2U6OnRyeUFsaWduZWRNYWxsb2MoYWxpZ25tZW50LCBzaXplKTsKK30KKwor
dm9pZCBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmZyZWVBbGlnbmVkTWVtb3J5KHZv
aWQqIGJhc2VQdHIpCit7CisgICAgR2lnYWNhZ2U6OmFsaWduZWRGcmVlKGJhc2VQdHIpOworfQor
Cit2b2lkIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAoreworICAgIG91dC5wcmludCgiR2lnYWNhZ2UiKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dpZ2FjYWdlQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0dpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHaWdhY2Fn
ZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IgOiBwdWJsaWMgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7
CitwdWJsaWM6CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkbid0IGJlIGEgc2luZ2xldG9uLiBU
aGVyZSBzaG91bGQgYmUgZGlmZmVyZW50IGluc3RhbmNlcyBmb3IgcHJpbWFyaWVzLCBKU1ZhbHVl
cywKKyAgICAvLyBhbmQgb3RoZXIgdGhpbmdzLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MTkKKyAgICBzdGF0aWMgR2lnYWNhZ2VBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yJiBpbnN0YW5jZSgpOworCisgICAgfkdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcigpOworICAgIAorICAgIHZvaWQqIHRyeUFsbG9jYXRlQWxpZ25lZE1lbW9yeShzaXpl
X3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBmcmVlQWxpZ25l
ZE1lbW9yeSh2b2lkKikgb3ZlcnJpZGU7CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgR2lnYWNhZ2VBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvR2lnYWNhZ2VTdWJzcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR2lnYWNhZ2VTdWJzcGFjZS5jcHAJKHJldmlzaW9uIDIy
MDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dpZ2FjYWdlU3Vic3BhY2UuY3Bw
CShub25leGlzdGVudCkKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR2ln
YWNhZ2VTdWJzcGFjZS5oIgotCi0jaW5jbHVkZSA8d3RmL0dpZ2FjYWdlLmg+Ci0KLW5hbWVzcGFj
ZSBKU0MgewotCi1HaWdhY2FnZVN1YnNwYWNlOjpHaWdhY2FnZVN1YnNwYWNlKENTdHJpbmcgbmFt
ZSwgSGVhcCYgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQotICAgIDogU3Vi
c3BhY2UobmFtZSwgaGVhcCwgYXR0cmlidXRlcykKLXsKLSAgICBHaWdhY2FnZTo6ZW5zdXJlR2ln
YWNhZ2UoKTsKLX0KLQotR2lnYWNhZ2VTdWJzcGFjZTo6fkdpZ2FjYWdlU3Vic3BhY2UoKQotewot
fQotCi12b2lkKiBHaWdhY2FnZVN1YnNwYWNlOjp0cnlBbGxvY2F0ZUFsaWduZWRNZW1vcnkoc2l6
ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCi17Ci0gICAgdm9pZCogcmVzdWx0ID0gR2lnYWNh
Z2U6OnRyeUFsaWduZWRNYWxsb2MoYWxpZ25tZW50LCBzaXplKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi12b2lkIEdpZ2FjYWdlU3Vic3BhY2U6OmZyZWVBbGlnbmVkTWVtb3J5KHZvaWQqIGJh
c2VQdHIpCi17Ci0gICAgR2lnYWNhZ2U6OmFsaWduZWRGcmVlKGJhc2VQdHIpOwotICAgIFdURjo6
Y29tcGlsZXJGZW5jZSgpOwotfQotCi1ib29sIEdpZ2FjYWdlU3Vic3BhY2U6OmNhblRyYWRlQmxv
Y2tzV2l0aChTdWJzcGFjZSogb3RoZXIpCi17Ci0gICAgcmV0dXJuIHRoaXMgPT0gb3RoZXI7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9HaWdhY2FnZVN1YnNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvR2lnYWNhZ2VTdWJzcGFjZS5oCShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9HaWdhY2FnZVN1YnNwYWNlLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiU3Vic3BhY2UuaCIKLSNpbmNsdWRlIDx3dGYvR2ln
YWNhZ2UuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLS8vIFdlIHVzZSBhIEdpZ2FjYWdlU3Vic3Bh
Y2UgZm9yIHRoZSBhdXhpbGlhcnkgc3BhY2UuCi1jbGFzcyBHaWdhY2FnZVN1YnNwYWNlIDogcHVi
bGljIFN1YnNwYWNlIHsKLXB1YmxpYzoKLSAgICBHaWdhY2FnZVN1YnNwYWNlKENTdHJpbmcgbmFt
ZSwgSGVhcCYsIEFsbG9jYXRvckF0dHJpYnV0ZXMpOwotICAgIH5HaWdhY2FnZVN1YnNwYWNlKCk7
Ci0gICAgCi0gICAgYm9vbCBjYW5UcmFkZUJsb2Nrc1dpdGgoU3Vic3BhY2UqIG90aGVyKSBvdmVy
cmlkZTsKLSAgICB2b2lkKiB0cnlBbGxvY2F0ZUFsaWduZWRNZW1vcnkoc2l6ZV90IGFsaWdubWVu
dCwgc2l6ZV90IHNpemUpIG92ZXJyaWRlOwotICAgIHZvaWQgZnJlZUFsaWduZWRNZW1vcnkodm9p
ZCopIG92ZXJyaWRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAkocmV2aXNpb24gMjIw
MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkxhcmdlQWxsb2NhdGlvbi5oIgogCisjaW5jbHVkZSAiQWxpZ25lZE1lbW9yeUFsbG9j
YXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgpAQCAtMzQsNyArMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
TGFyZ2VBbGxvY2F0aW9uKiBMYXJnZUFsbG9jYXRpb246OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBz
aXplX3Qgc2l6ZSwgU3Vic3BhY2UqIHN1YnNwYWNlKQogewotICAgIHZvaWQqIHNwYWNlID0gc3Vi
c3BhY2UtPnRyeUFsbG9jYXRlQWxpZ25lZE1lbW9yeShhbGlnbm1lbnQsIGhlYWRlclNpemUoKSAr
IHNpemUpOworICAgIHZvaWQqIHNwYWNlID0gc3Vic3BhY2UtPmFsaWduZWRNZW1vcnlBbGxvY2F0
b3IoKS0+dHJ5QWxsb2NhdGVBbGlnbmVkTWVtb3J5KGFsaWdubWVudCwgaGVhZGVyU2l6ZSgpICsg
c2l6ZSk7CiAgICAgaWYgKCFzcGFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYg
KHNjcmliYmxlRnJlZUNlbGxzKCkpCkBAIC0xMDYsOSArMTA3LDkgQEAgdm9pZCBMYXJnZUFsbG9j
YXRpb246OnN3ZWVwKCkKIAogdm9pZCBMYXJnZUFsbG9jYXRpb246OmRlc3Ryb3koKQogewotICAg
IFN1YnNwYWNlKiBzdWJzcGFjZSA9IG1fc3Vic3BhY2U7CisgICAgQWxpZ25lZE1lbW9yeUFsbG9j
YXRvciogYWxsb2NhdG9yID0gbV9zdWJzcGFjZS0+YWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpOwog
ICAgIHRoaXMtPn5MYXJnZUFsbG9jYXRpb24oKTsKLSAgICBzdWJzcGFjZS0+ZnJlZUFsaWduZWRN
ZW1vcnkodGhpcyk7CisgICAgYWxsb2NhdG9yLT5mcmVlQWxpZ25lZE1lbW9yeSh0aGlzKTsKIH0K
IAogdm9pZCBMYXJnZUFsbG9jYXRpb246OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAko
cmV2aXNpb24gMjIwMTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxs
b2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDggKzEwNCw3IEBAIHZvaWQqIE1hcmtl
ZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVXaXRob3UKICAgICAKICAgICBpZiAoT3B0aW9uczo6c3Rl
YWxFbXB0eUJsb2Nrc0Zyb21PdGhlckFsbG9jYXRvcnMoKSkgewogICAgICAgICBpZiAoTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX3N1YnNwYWNlLT5maW5kRW1wdHlCbG9ja1RvU3RlYWwo
KSkgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxvY2stPnN1YnNwYWNlKCktPmNhblRy
YWRlQmxvY2tzV2l0aChtX3N1YnNwYWNlKSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X3N1YnNwYWNlLT5jYW5UcmFkZUJsb2Nrc1dpdGgoYmxvY2stPnN1YnNwYWNlKCkpKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkgPT0g
bV9zdWJzcGFjZS0+YWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgYmxvY2stPnN3ZWVwKG51bGxwdHIpOwogICAgICAgICAgICAgCkBAIC0yNDMsNyAr
MjQyLDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjp0cgogewogICAg
IFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKLSAgICBN
YXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKCptX2hl
YXAsIHN1YnNwYWNlKCkpOworICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSA9IE1hcmtl
ZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCwgc3Vic3BhY2UoKS0+YWxpZ25lZE1lbW9yeUFsbG9j
YXRvcigpKTsKICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZp
c2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogCisjaW5jbHVkZSAiQWxpZ25lZE1lbW9yeUFsbG9j
YXRvci5oIgogI2luY2x1ZGUgIkZyZWVMaXN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5o
IgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCkBAIC00MywyMyArNDQsMjMgQEAg
Y29uc3Qgc2l6ZV90IE1hcmtlZEJsb2NrOjpibG9ja1NpemU7CiBzdGF0aWMgY29uc3QgYm9vbCBj
b21wdXRlQmFsYW5jZSA9IGZhbHNlOwogc3RhdGljIHNpemVfdCBiYWxhbmNlOwogCi1NYXJrZWRC
bG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXAsIFN1YnNwYWNl
KiBzdWJzcGFjZSkKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUo
SGVhcCYgaGVhcCwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciogYWxpZ25lZE1lbW9yeUFsbG9jYXRv
cikKIHsKICAgICBpZiAoY29tcHV0ZUJhbGFuY2UpIHsKICAgICAgICAgYmFsYW5jZSsrOwogICAg
ICAgICBpZiAoIShiYWxhbmNlICUgMTApKQogICAgICAgICAgICAgZGF0YUxvZygiTWFya2VkQmxv
Y2sgQmFsYW5jZTogIiwgYmFsYW5jZSwgIlxuIik7CiAgICAgfQotICAgIHZvaWQqIGJsb2NrU3Bh
Y2UgPSBzdWJzcGFjZS0+dHJ5QWxsb2NhdGVBbGlnbmVkTWVtb3J5KGJsb2NrU2l6ZSwgYmxvY2tT
aXplKTsKKyAgICB2b2lkKiBibG9ja1NwYWNlID0gYWxpZ25lZE1lbW9yeUFsbG9jYXRvci0+dHJ5
QWxsb2NhdGVBbGlnbmVkTWVtb3J5KGJsb2NrU2l6ZSwgYmxvY2tTaXplKTsKICAgICBpZiAoIWJs
b2NrU3BhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChzY3JpYmJsZUZyZWVD
ZWxscygpKQogICAgICAgICBzY3JpYmJsZShibG9ja1NwYWNlLCBibG9ja1NpemUpOwotICAgIHJl
dHVybiBuZXcgSGFuZGxlKGhlYXAsIHN1YnNwYWNlLCBibG9ja1NwYWNlKTsKKyAgICByZXR1cm4g
bmV3IEhhbmRsZShoZWFwLCBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yLCBibG9ja1NwYWNlKTsKIH0K
IAotTWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIFN1YnNwYWNlKiBzdWJz
cGFjZSwgdm9pZCogYmxvY2tTcGFjZSkKLSAgICA6IG1fc3Vic3BhY2Uoc3Vic3BhY2UpCitNYXJr
ZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwgQWxpZ25lZE1lbW9yeUFsbG9jYXRv
ciogYWxpZ25lZE1lbW9yeUFsbG9jYXRvciwgdm9pZCogYmxvY2tTcGFjZSkKKyAgICA6IG1fYWxp
Z25lZE1lbW9yeUFsbG9jYXRvcihhbGlnbmVkTWVtb3J5QWxsb2NhdG9yKQogICAgICwgbV93ZWFr
U2V0KGhlYXAudm0oKSwgQ2VsbENvbnRhaW5lcigpKQogICAgICwgbV9uZXdseUFsbG9jYXRlZFZl
cnNpb24oTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uKQogewpAQCAtNzMsNyArNzQsNiBAQCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwgCiBNYXJrZWRCbG9jazo6SGFuZGxl
Ojp+SGFuZGxlKCkKIHsKICAgICBIZWFwJiBoZWFwID0gKnRoaXMtPmhlYXAoKTsKLSAgICBTdWJz
cGFjZSogc3Vic3BhY2UgPSB0aGlzLT5zdWJzcGFjZSgpOwogICAgIGlmIChjb21wdXRlQmFsYW5j
ZSkgewogICAgICAgICBiYWxhbmNlLS07CiAgICAgICAgIGlmICghKGJhbGFuY2UgJSAxMCkpCkBA
IC04MSw3ICs4MSw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUoKQogICAgIH0KICAg
ICByZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiAgICAgbV9ibG9jay0+fk1hcmtlZEJsb2NrKCk7Ci0g
ICAgc3Vic3BhY2UtPmZyZWVBbGlnbmVkTWVtb3J5KG1fYmxvY2spOworICAgIG1fYWxpZ25lZE1l
bW9yeUFsbG9jYXRvci0+ZnJlZUFsaWduZWRNZW1vcnkobV9ibG9jayk7CiAgICAgaGVhcC5kaWRG
cmVlQmxvY2soYmxvY2tTaXplKTsKIH0KIApAQCAtMzM0LDEwICszMzQsNyBAQCB2b2lkIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhCiAgICAgbV9pbmRleCA9IGluZGV4OwogICAg
IG1fYWxsb2NhdG9yID0gYWxsb2NhdG9yOwogICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKG1fc3Vi
c3BhY2UtPmNhblRyYWRlQmxvY2tzV2l0aChhbGxvY2F0b3ItPnN1YnNwYWNlKCkpKTsKLSAgICBS
RUxFQVNFX0FTU0VSVChhbGxvY2F0b3ItPnN1YnNwYWNlKCktPmNhblRyYWRlQmxvY2tzV2l0aCht
X3N1YnNwYWNlKSk7Ci0gICAgCi0gICAgbV9zdWJzcGFjZSA9IGFsbG9jYXRvci0+c3Vic3BhY2Uo
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2FsbG9jYXRvci0+c3Vic3BhY2UoKS0+YWxpZ25lZE1l
bW9yeUFsbG9jYXRvcigpID09IG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvcik7CiAgICAgCiAgICAg
c2l6ZV90IGNlbGxTaXplID0gYWxsb2NhdG9yLT5jZWxsU2l6ZSgpOwogICAgIG1fYXRvbXNQZXJD
ZWxsID0gKGNlbGxTaXplICsgYXRvbVNpemUgLSAxKSAvIGF0b21TaXplOwpAQCAtMzk3LDYgKzM5
NCwxMSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmR1bXBTdGF0ZShQcmluCiAgICAgICAg
IH0pOwogfQogCitTdWJzcGFjZSogTWFya2VkQmxvY2s6OkhhbmRsZTo6c3Vic3BhY2UoKSBjb25z
dAoreworICAgIHJldHVybiBhbGxvY2F0b3IoKS0+c3Vic3BhY2UoKTsKK30KKwogdm9pZCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzd2VlcChGcmVlTGlzdCogZnJlZUxpc3QpCiB7CiAgICAgU3dlZXBp
bmdTY29wZSBzd2VlcGluZ1Njb3BlKCpoZWFwKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw4
IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLSAg
ICAKKworY2xhc3MgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsgICAgCiBjbGFzcyBGcmVlTGlzdDsK
IGNsYXNzIEhlYXA7CiBjbGFzcyBKU0NlbGw7CkBAIC0xMTAsNiArMTExLDcgQEAgcHVibGljOgog
CiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yKCkgY29uc3Q7CiAgICAgICAgIFN1
YnNwYWNlKiBzdWJzcGFjZSgpIGNvbnN0OworICAgICAgICBBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
KiBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkgY29uc3Q7CiAgICAgICAgIEhlYXAqIGhlYXAoKSBj
b25zdDsKICAgICAgICAgaW5saW5lIE1hcmtlZFNwYWNlKiBzcGFjZSgpIGNvbnN0OwogICAgICAg
ICBWTSogdm0oKSBjb25zdDsKQEAgLTE5OSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZv
aWQgZHVtcFN0YXRlKFByaW50U3RyZWFtJik7CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIEhhbmRsZShIZWFwJiwgU3Vic3BhY2UqLCB2b2lkKik7CisgICAgICAgIEhhbmRsZShIZWFw
JiwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciosIHZvaWQqKTsKICAgICAgICAgCiAgICAgICAgIGVu
dW0gU3dlZXBEZXN0cnVjdGlvbk1vZGUgeyBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIEJsb2NrSGFz
RGVzdHJ1Y3RvcnMsIEJsb2NrSGFzRGVzdHJ1Y3RvcnNBbmRDb2xsZWN0b3JJc1J1bm5pbmcgfTsK
ICAgICAgICAgZW51bSBTY3JpYmJsZU1vZGUgeyBEb250U2NyaWJibGUsIFNjcmliYmxlIH07CkBA
IC0yMjksNyArMjMxLDcgQEAgcHVibGljOgogICAgICAgICBBbGxvY2F0b3JBdHRyaWJ1dGVzIG1f
YXR0cmlidXRlczsKICAgICAgICAgYm9vbCBtX2lzRnJlZUxpc3RlZCB7IGZhbHNlIH07CiAKLSAg
ICAgICAgU3Vic3BhY2UqIG1fc3Vic3BhY2UgeyBudWxscHRyIH07CisgICAgICAgIEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IqIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7IG51bGxwdHIgfTsKICAg
ICAgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvciB7IG51bGxwdHIgfTsKICAgICAgICAg
c2l6ZV90IG1faW5kZXggeyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07CiAg
ICAgICAgIFdlYWtTZXQgbV93ZWFrU2V0OwpAQCAtMjM5LDcgKzI0MSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgTWFya2VkQmxvY2sqIG1fYmxvY2sgeyBudWxscHRyIH07CiAgICAgfTsKICAgICAgICAg
Ci0gICAgc3RhdGljIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFwJiwgU3Vic3Bh
Y2UqKTsKKyAgICBzdGF0aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhlYXAmLCBB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7CiAgICAgICAgIAogICAgIEhhbmRsZSYgaGFuZGxlKCk7
CiAgICAgICAgIApAQCAtMzk2LDkgKzM5OCw5IEBAIGlubGluZSBNYXJrZWRBbGxvY2F0b3IqIE1h
cmtlZEJsb2NrOjpIYW4KICAgICByZXR1cm4gbV9hbGxvY2F0b3I7CiB9CiAKLWlubGluZSBTdWJz
cGFjZSogTWFya2VkQmxvY2s6OkhhbmRsZTo6c3Vic3BhY2UoKSBjb25zdAoraW5saW5lIEFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IqIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmFsaWduZWRNZW1vcnlBbGxv
Y2F0b3IoKSBjb25zdAogewotICAgIHJldHVybiBtX3N1YnNwYWNlOworICAgIHJldHVybiBtX2Fs
aWduZWRNZW1vcnlBbGxvY2F0b3I7CiB9CiAKIGlubGluZSBIZWFwKiBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpoZWFwKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNw
YWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFj
ZS5jcHAJKHJldmlzaW9uIDIyMDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1
YnNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTAgKzU0LDExIEBAIHN0cnVjdCBEZXN0
cm95RnVuYyB7CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1TdWJzcGFjZTo6U3Vic3Bh
Y2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBBbGxvY2F0b3JBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXMpCitTdWJzcGFjZTo6U3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBBbGxvY2F0
b3JBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIGFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IpCiAgICAgOiBtX3NwYWNlKGhlYXAub2JqZWN0U3BhY2UoKSkKICAgICAs
IG1fbmFtZShuYW1lKQogICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCisgICAgLCBtX2Fs
aWduZWRNZW1vcnlBbGxvY2F0b3IoYWxpZ25lZE1lbW9yeUFsbG9jYXRvcikKICAgICAsIG1fYWxs
b2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uKG1fc3BhY2UuZmlyc3RBbGxvY2F0b3IoKSkKIHsKICAg
ICAvLyBJdCdzIHJlbW90ZWx5IHBvc3NpYmxlIHRoYXQgd2UncmUgR0NpbmcgcmlnaHQgbm93IGV2
ZW4gaWYgdGhlIGNsaWVudCBpcyBjYXJlZnVsIHRvIG9ubHkKQEAgLTg4LDIzICs4OSw2IEBAIHZv
aWQgU3Vic3BhY2U6OmRlc3Ryb3koVk0mIHZtLCBKU0NlbGwqIGMKICAgICBEZXN0cm95RnVuYygp
KHZtLCBjZWxsKTsKIH0KIAotYm9vbCBTdWJzcGFjZTo6Y2FuVHJhZGVCbG9ja3NXaXRoKFN1YnNw
YWNlKikKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCogU3Vic3BhY2U6OnRyeUFsbG9j
YXRlQWxpZ25lZE1lbW9yeShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKLXsKLSAgICB2
b2lkKiByZXN1bHQgPSB0cnlGYXN0QWxpZ25lZE1hbGxvYyhhbGlnbm1lbnQsIHNpemUpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgU3Vic3BhY2U6OmZyZWVBbGlnbmVkTWVtb3J5KHZv
aWQqIGJhc2VQdHIpCi17Ci0gICAgZmFzdEFsaWduZWRGcmVlKGJhc2VQdHIpOwotICAgIFdURjo6
Y29tcGlsZXJGZW5jZSgpOwotfQotCiAvLyBUaGUgcmVhc29uIHdoeSB3ZSBkaXN0aW5ndWlzaCBi
ZXR3ZWVuIGFsbG9jYXRlIGFuZCB0cnlBbGxvY2F0ZSBpcyB0byBtaW5pbWl6ZSB0aGUgbnVtYmVy
IG9mCiAvLyBjaGVja3Mgb24gdGhlIGFsbG9jYXRpb24gcGF0aCBpbiBib3RoIGNhc2VzLiBMaWtl
d2lzZSwgdGhlIHJlYXNvbiB3aHkgd2UgaGF2ZSBvdmVybG9hZHMgd2l0aCBhbmQKIC8vIHdpdGhv
dXQgZGVmZXJyYWxDb250ZXh0IGlzIHRvIG1pbmltaXplIHRoZSBhbW91bnQgb2YgY29kZSBmb3Ig
Y2FsbGluZyBhbGxvY2F0ZSB3aGVuIHlvdSBkb24ndApAQCAtMTY3LDkgKzE1MSw3IEBAIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIFN1YnNwYWNlOjpmaW5kRW1wdHkKIHsKICAgICBmb3IgKDsgbV9hbGxv
Y2F0b3JGb3JFbXB0eUFsbG9jYXRpb247IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uID0g
bV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24tPm5leHRBbGxvY2F0b3IoKSkgewogICAgICAg
ICBTdWJzcGFjZSogb3RoZXJTdWJzcGFjZSA9IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9u
LT5zdWJzcGFjZSgpOwotICAgICAgICBpZiAoIWNhblRyYWRlQmxvY2tzV2l0aChvdGhlclN1YnNw
YWNlKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIW90aGVyU3Vic3BhY2Ut
PmNhblRyYWRlQmxvY2tzV2l0aCh0aGlzKSkKKyAgICAgICAgaWYgKG90aGVyU3Vic3BhY2UtPmFs
aWduZWRNZW1vcnlBbGxvY2F0b3IoKSAhPSBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAgIGlmIChNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jayA9IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5maW5kRW1wdHlCbG9j
a1RvU3RlYWwoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAkocmV2
aXNpb24gMjIwMTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xh
c3MgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKKwogLy8gVGhlIGlkZWEgb2Ygc3Vic3BhY2VzIGlz
IHRoYXQgeW91IGNhbiBwcm92aWRlIHNvbWUgY3VzdG9tIGJlaGF2aW9yIGZvciB5b3VyIG9iamVj
dHMgaWYgeW91CiAvLyBhbGxvY2F0ZSB0aGVtIGZyb20gYSBjdXN0b20gU3Vic3BhY2UgaW4gd2hp
Y2ggeW91IG92ZXJyaWRlIHNvbWUgb2YgdGhlIHZpcnR1YWwgbWV0aG9kcy4gVGhpcwogLy8gY2xh
c3MgaXMgdGhlIGJhc2VjbGFzcyBvZiBTdWJzcGFjZXMgYW5kIGl0IHByb3ZpZGVzIGEgcmVhc29u
YWJsZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCB3aGVyZQpAQCAtNDQsMTMgKzQ2LDE0IEBAIGNs
YXNzIFN1YnNwYWNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdWJzcGFjZSk7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
U3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiwgQWxsb2NhdG9yQXR0cmlidXRlcyk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiwgQWxsb2NhdG9y
QXR0cmlidXRlcywgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciopOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZpcnR1YWwgflN1YnNwYWNlKCk7CiAgICAgCi0gICAgY29uc3QgY2hhciAqbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmFtZS5kYXRhKCk7IH0KKyAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lLmRhdGEoKTsgfQogICAgIE1hcmtlZFNwYWNlJiBzcGFjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3BhY2U7IH0KICAgICAKICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CisgICAgQWxp
Z25lZE1lbW9yeUFsbG9jYXRvciogYWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpIGNvbnN0IHsgcmV0
dXJuIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsgfQogICAgIAogICAgIC8vIFRoZSBwdXJwb3Nl
IG9mIG92ZXJyaWRpbmcgdGhpcyBpcyB0byBzcGVjaWFsaXplIHRoZSBzd2VlcCBmb3IgeW91ciBk
ZXN0cnVjdG9ycy4gVGhpcyB3b24ndAogICAgIC8vIGJlIGNhbGxlZCBmb3Igbm8tZGVzdHJ1Y3Rv
ciBibG9ja3MuIFRoaXMgbXVzdCBjYWxsIE1hcmtlZEJsb2NrOjpmaW5pc2hTd2VlcEtub3dpbmdT
dWJzcGFjZS4KQEAgLTU5LDEwICs2Miw2IEBAIHB1YmxpYzoKICAgICAvLyBUaGVzZSBnZXQgY2Fs
bGVkIGZvciBsYXJnZSBvYmplY3RzLgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KFZNJiwgSlND
ZWxsKik7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGNhblRyYWRlQmxvY2tzV2l0aChTdWJzcGFj
ZSogb3RoZXIpOwotICAgIHZpcnR1YWwgdm9pZCogdHJ5QWxsb2NhdGVBbGlnbmVkTWVtb3J5KHNp
emVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKTsKLSAgICB2aXJ0dWFsIHZvaWQgZnJlZUFsaWdu
ZWRNZW1vcnkodm9pZCopOwotICAgIAogICAgIE1hcmtlZEFsbG9jYXRvciogdHJ5QWxsb2NhdG9y
Rm9yKHNpemVfdCk7CiAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3JGb3Ioc2l6ZV90KTsK
ICAgICAKQEAgLTExNSw2ICsxMTQsOCBAQCBwcml2YXRlOgogICAgIENTdHJpbmcgbV9uYW1lOwog
ICAgIEFsbG9jYXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwogICAgIAorICAgIEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IqIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKKyAgICAKICAgICBzdGQ6
OmFycmF5PE1hcmtlZEFsbG9jYXRvciosIE1hcmtlZFNwYWNlOjpudW1TaXplQ2xhc3Nlcz4gbV9h
bGxvY2F0b3JGb3JTaXplU3RlcDsKICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fZmlyc3RBbGxvY2F0
b3IgeyBudWxscHRyIH07CiAgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvckZvckVtcHR5
QWxsb2NhdGlvbiB7IG51bGxwdHIgfTsgLy8gVXNlcyB0aGUgTWFya2VkU3BhY2UgbGlua2VkIGxp
c3Qgb2YgYmxvY2tzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0
cnVjdGlibGVPYmplY3RTdWJzcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3RTdWJzcGFjZS5jcHAJKHJldmlzaW9u
IDIyMDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxl
T2JqZWN0U3Vic3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0Myw4IEBAIHN0cnVj
dCBEZXN0cm95RnVuYyB7CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1KU0Rlc3RydWN0
aWJsZU9iamVjdFN1YnNwYWNlOjpKU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlKENTdHJpbmcg
bmFtZSwgSGVhcCYgaGVhcCkKLSAgICA6IFN1YnNwYWNlKG5hbWUsIGhlYXAsIEFsbG9jYXRvckF0
dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCitKU0Rlc3RydWN0
aWJsZU9iamVjdFN1YnNwYWNlOjpKU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlKENTdHJpbmcg
bmFtZSwgSGVhcCYgaGVhcCwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciogYWxsb2NhdG9yKQorICAg
IDogU3Vic3BhY2UobmFtZSwgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0
aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSwgYWxsb2NhdG9yKQogewogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVP
YmplY3RTdWJzcGFjZS5oCShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0U3Vic3BhY2UgOiBwdWJsaWMgU3Vic3BhY2UgewogcHVibGljOgotICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFw
Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNEZXN0cnVjdGlibGVPYmplY3RTdWJzcGFjZShD
U3RyaW5nIG5hbWUsIEhlYXAmLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdmlydHVhbCB+SlNEZXN0cnVjdGlibGVPYmplY3RTdWJzcGFjZSgpOwogICAg
IAogICAgIHZvaWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0Kikg
b3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0U3Vic3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZS5jcHAJKHJl
dmlzaW9uIDIyMDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQz
LDggQEAgc3RydWN0IERlc3Ryb3lGdW5jIHsKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAK
LUpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZTo6SlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdFN1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCkKLSAgICA6IFN1YnNwYWNlKG5h
bWUsIGhlYXAsIEFsbG9jYXRvckF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6
OkpTQ2VsbCkpCitKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Vic3BhY2U6OkpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3RTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IqIGFsbG9jYXRvcikKKyAgICA6IFN1YnNwYWNlKG5hbWUsIGhlYXAsIEFs
bG9jYXRvckF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCksIGFs
bG9jYXRvcikKIHsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlLmgJ
KHJldmlzaW9uIDIyMDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
U3Vic3BhY2UgOiBwdWJsaWMgU3Vic3BhY2UgewogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAm
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Vic3Bh
Y2UoQ1N0cmluZyBuYW1lLCBIZWFwJiwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciopOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFj
ZSgpOwogICAgIAogICAgIHZvaWQgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZy
ZWVMaXN0Kikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZ1N1YnNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZ1N1YnNwYWNlLmNwcAkocmV2aXNpb24gMjIwMTY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdTdWJzcGFjZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDggKzQzLDggQEAgc3RydWN0IERlc3Ryb3lGdW5jIHsKIAogfSAvLyBhbm9ueW1v
dXMgbmFtZXNwYWNlCiAKLUpTU3RyaW5nU3Vic3BhY2U6OkpTU3RyaW5nU3Vic3BhY2UoQ1N0cmlu
ZyBuYW1lLCBIZWFwJiBoZWFwKQotICAgIDogU3Vic3BhY2UobmFtZSwgaGVhcCwgQWxsb2NhdG9y
QXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKK0pTU3RyaW5n
U3Vic3BhY2U6OkpTU3RyaW5nU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBBbGln
bmVkTWVtb3J5QWxsb2NhdG9yKiBhbGxvY2F0b3IpCisgICAgOiBTdWJzcGFjZShuYW1lLCBoZWFw
LCBBbGxvY2F0b3JBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwp
LCBhbGxvY2F0b3IpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nU3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZ1N1YnNwYWNlLmgJKHJldmlzaW9uIDIyMDE2NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nU3Vic3BhY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNTdHJpbmdTdWJzcGFj
ZSA6IHB1YmxpYyBTdWJzcGFjZSB7CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNT
dHJpbmdTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU1N0cmluZ1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYsIEFsaWduZWRNZW1vcnlBbGxv
Y2F0b3IqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5KU1N0cmluZ1N1YnNwYWNl
KCk7CiAgICAgCiAgICAgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwgRnJl
ZUxpc3QqKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJ
KHJldmlzaW9uIDIyMDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDEyIEBACiAjaW5jbHVkZSAiRXZhbENvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgor
I2luY2x1ZGUgIkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAi
RnVuY3Rpb25Db2RlQmxvY2suaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgi
CisjaW5jbHVkZSAiR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAi
SGFzT3duUHJvcGVydHlDYWNoZS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFw
SXRlcmF0aW9uU2NvcGUuaCIKQEAgLTE2MiwxNSArMTY0LDE1IEBAIFZNOjpWTShWTVR5cGUgdm1U
eXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fcnVuTG9vcChDRlJ1bkxvb3BHZXRDdXJy
ZW50KCkpCiAjZW5kaWYgLy8gVVNFKENGKQogICAgICwgaGVhcCh0aGlzLCBoZWFwVHlwZSkKLSAg
ICAsIGF1eGlsaWFyeVNwYWNlKCJBdXhpbGlhcnkiLCBoZWFwLCBBbGxvY2F0b3JBdHRyaWJ1dGVz
KERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhpbGlhcnkpKQotICAgICwgY2Vs
bFNwYWNlKCJKU0NlbGwiLCBoZWFwLCBBbGxvY2F0b3JBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVz
dHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQotICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbFNwYWNl
KCJEZXN0cnVjdGlibGUgSlNDZWxsIiwgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRlcyhOZWVkc0Rl
c3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKLSAgICAsIHN0cmluZ1NwYWNlKCJKU1N0cmlu
ZyIsIGhlYXApCi0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiSlNEZXN0cnVjdGlibGVP
YmplY3QiLCBoZWFwKQotICAgICwgZWFnZXJseVN3ZXB0RGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2Uo
IkVhZ2VybHkgU3dlcHQgSlNEZXN0cnVjdGlibGVPYmplY3QiLCBoZWFwKQotICAgICwgc2VnbWVu
dGVkVmFyaWFibGVPYmplY3RTcGFjZSgiSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFNwYWNlIiwg
aGVhcCkKKyAgICAsIGF1eGlsaWFyeVNwYWNlKCJBdXhpbGlhcnkiLCBoZWFwLCBBbGxvY2F0b3JB
dHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhpbGlhcnkpLCAm
R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjppbnN0YW5jZSgpKQorICAgICwgY2VsbFNw
YWNlKCJKU0NlbGwiLCBoZWFwLCBBbGxvY2F0b3JBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1
Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpLCAmRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0
b3I6Omluc3RhbmNlKCkpCisgICAgLCBkZXN0cnVjdGlibGVDZWxsU3BhY2UoIkRlc3RydWN0aWJs
ZSBKU0NlbGwiLCBoZWFwLCBBbGxvY2F0b3JBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhl
YXBDZWxsOjpKU0NlbGwpLCAmRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6Omluc3Rh
bmNlKCkpCisgICAgLCBzdHJpbmdTcGFjZSgiSlNTdHJpbmciLCBoZWFwLCAmRmFzdE1hbGxvY0Fs
aWduZWRNZW1vcnlBbGxvY2F0b3I6Omluc3RhbmNlKCkpCisgICAgLCBkZXN0cnVjdGlibGVPYmpl
Y3RTcGFjZSgiSlNEZXN0cnVjdGlibGVPYmplY3QiLCBoZWFwLCAmRmFzdE1hbGxvY0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3I6Omluc3RhbmNlKCkpCisgICAgLCBlYWdlcmx5U3dlcHREZXN0cnVjdGli
bGVPYmplY3RTcGFjZSgiRWFnZXJseSBTd2VwdCBKU0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXAs
ICZGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6aW5zdGFuY2UoKSkKKyAgICAsIHNl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0U3BhY2UoIkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTcGFj
ZSIsIGhlYXAsICZGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6aW5zdGFuY2UoKSkK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNl
KCJKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UiLCBoZWFwKQorICAgICwgd2ViQXNzZW1ibHlD
b2RlQmxvY2tTcGFjZSgiSlNXZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlIiwgaGVhcCwgJkZhc3RN
YWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjppbnN0YW5jZSgpKQogI2VuZGlmCiAgICAgLCB2
bVR5cGUodm1UeXBlKQogICAgICwgY2xpZW50RGF0YSgwKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAi
RXhjZXB0aW9uRXZlbnRMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3Iu
aCIKICNpbmNsdWRlICJGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCIKLSNpbmNsdWRlICJHaWdh
Y2FnZVN1YnNwYWNlLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5o
IgogI2luY2x1ZGUgIkpJVFRodW5rcy5oIgpAQCAtMjg3LDcgKzI4Niw3IEBAIHByaXZhdGU6CiBw
dWJsaWM6CiAgICAgSGVhcCBoZWFwOwogICAgIAotICAgIEdpZ2FjYWdlU3Vic3BhY2UgYXV4aWxp
YXJ5U3BhY2U7CisgICAgU3Vic3BhY2UgYXV4aWxpYXJ5U3BhY2U7CiAgICAgCiAgICAgLy8gV2hl
bmV2ZXIgcG9zc2libGUsIHVzZSBzdWJzcGFjZUZvcjxDZWxsVHlwZT4odm0pIHRvIGdldCBvbmUg
b2YgdGhlc2Ugc3Vic3BhY2VzLgogICAgIFN1YnNwYWNlIGNlbGxTcGFjZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUNvZGVCbG9ja1N1YnNwYWNlLmNwcAkocmV2aXNpb24gMjIwMTY0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsOCBAQCBzdHJ1Y3QgRGVzdHJveUZ1bmMgewogCiB9
IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNl
OjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFw
KQotICAgIDogU3Vic3BhY2UobmFtZSwgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRlcyhOZWVkc0Rl
c3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKK0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJz
cGFjZTo6SlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYg
aGVhcCwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciogYWxsb2NhdG9yKQorICAgIDogU3Vic3BhY2Uo
bmFtZSwgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2Vs
bDo6SlNDZWxsKSwgYWxsb2NhdG9yKQogewogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vi
c3BhY2UuaAkocmV2aXNpb24gMjIwMTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2tTdWJzcGFjZSA6IHB1YmxpYyBTdWJzcGFjZSB7CiBwdWJsaWM6Ci0gICAgSlNXZWJBc3NlbWJs
eUNvZGVCbG9ja1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYpOworICAgIEpTV2ViQXNzZW1i
bHlDb2RlQmxvY2tTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmLCBBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yKik7CiAgICAgdmlydHVhbCB+SlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlKCk7
CiAgICAgCiAgICAgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxp
c3QqKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDE2NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE3
LTA4LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIGFs
bG9jYXRvciB1c2VkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgTWFya2VkQmxvY2tzIGFuZCBMYXJn
ZUFsbG9jYXRpb25zIHNob3VsZCBub3QgYmUgdGhlIFN1YnNwYWNlIGl0c2VsZgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTWFyayBMYW0uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8g
bmV3IGJlaGF2aW9yLgorICAgICAgICAKKyAgICAgICAgSnVzdCBhZGFwdGluZyB0byBhbiBBUEkg
Y2hhbmdlLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvaGVhcC9GYXN0TWFsbG9jQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJD
b3JlSlNDbGllbnREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpK
U1ZNQ2xpZW50RGF0YSk6CisKIDIwMTctMDgtMDIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMDcxNTUpOiBVbmFibGUgdG8gc3dpdGNoIHNo
ZWV0cyB3aGVuIHByZXZpZXdpbmcgTnVtYmVycyAnMDkgc3ByZWFkc2hlZXRzCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9oZWFwL0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvaGVhcC9GYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2hlYXAvRmFzdE1hbGxvY0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIgQEAKKyNwcmFn
bWEgb25jZQorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlND
bGllbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmNwcAkocmV2aXNpb24gMjIwMTY0KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlIDxoZWFwL0Zhc3RNYWxsb2NBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8aGVhcC9IZWFwSW5saW5lcy5oPgogI2luY2x1ZGUg
PGhlYXAvTWFya2luZ0NvbnN0cmFpbnQuaD4KICNpbmNsdWRlIDxoZWFwL01hcmtlZEFsbG9jYXRv
cklubGluZXMuaD4KQEAgLTQzLDggKzQ0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSlNWTUNs
aWVudERhdGE6OkpTVk1DbGllbnREYXRhKFZNJiB2bSkKICAgICA6IG1fYnVpbHRpbkZ1bmN0aW9u
cyh2bSkKICAgICAsIG1fYnVpbHRpbk5hbWVzKCZ2bSkKLSAgICAsIG1fb3V0cHV0Q29uc3RyYWlu
dFNwYWNlKCJXZWJDb3JlIFdyYXBwZXIgdy8gT3V0cHV0IENvbnN0cmFpbnQiLCB2bS5oZWFwKQot
ICAgICwgbV9nbG9iYWxPYmplY3RPdXRwdXRDb25zdHJhaW50U3BhY2UoIldlYkNvcmUgR2xvYmFs
IE9iamVjdCB3LyBPdXRwdXQgQ29uc3RyYWludCIsIHZtLmhlYXApCisgICAgLCBtX291dHB1dENv
bnN0cmFpbnRTcGFjZSgiV2ViQ29yZSBXcmFwcGVyIHcvIE91dHB1dCBDb25zdHJhaW50Iiwgdm0u
aGVhcCwgJkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjppbnN0YW5jZSgpKQorICAg
ICwgbV9nbG9iYWxPYmplY3RPdXRwdXRDb25zdHJhaW50U3BhY2UoIldlYkNvcmUgR2xvYmFsIE9i
amVjdCB3LyBPdXRwdXQgQ29uc3RyYWludCIsIHZtLmhlYXAsICZGYXN0TWFsbG9jQWxpZ25lZE1l
bW9yeUFsbG9jYXRvcjo6aW5zdGFuY2UoKSkKIHsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317150</attachid>
            <date>2017-08-03 14:10:25 -0700</date>
            <delta_ts>2017-08-03 14:10:25 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>60952</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwMjE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDE3LTA4LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIGFsbG9jYXRvciB1c2VkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgTWFya2VkQmxvY2tzIGFu
ZCBMYXJnZUFsbG9jYXRpb25zIHNob3VsZCBub3QgYmUgdGhlIFN1YnNwYWNlIGl0c2VsZgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisgICAgICAgIAorICAgICAgICBUbyBtYWtlIGl0
IGVhc2llciB0byBoYXZlIG11bHRpcGxlIGdpZ2FjYWdlcyBhbmQgbWF5YmUgZXZlbiBmYW5jaWVy
IG1ldGhvZHMgb2YgYWxsb2NhdGluZywgdGhpcworICAgICAgICBkZWNvdXBsZXMgdGhlIGFsbG9j
YXRvciB1c2VkIHRvIGFsbG9jYXRlIG1lbW9yeSBmcm9tIHRoZSBHQyBTdWJzcGFjZS4gVGhpcyBt
ZWFucyB3ZSBubyBsb25nZXIgaGF2ZQorICAgICAgICB0byBjcmVhdGUgYSBuZXcgU3Vic3BhY2Ug
c3ViY2xhc3MgdG8gYWxsb2NhdGUgbWVtb3J5IGEgZGlmZmVyZW50IHdheS4gSW5zdGVhZCwgdGhl
IGFsbG9jYXRvciBpcyBub3cKKyAgICAgICAgZGV0ZXJtaW5lZCBieSB0aGUgQWxpZ25lZE1lbW9y
eUFsbG9jYXRvciBvYmplY3QuCisgICAgICAgIAorICAgICAgICBUaGlzIGFsc28gc2ltcGxpZmll
cyB0cmFkaW5nIG9mIGJsb2Nrcy4gQmVmb3JlLCBTdWJzcGFjZXMgaGFkIHRvIGRldGVybWluZSBp
ZiBvdGhlciBTdWJzcGFjZXMgY291bGQKKyAgICAgICAgdHJhZGUgYmxvY2tzIHdpdGggdGhlbSB1
c2luZyBjYW5UcmFkZUJsb2Nrc1dpdGgoKS4gVGhpcyBtYWtlcyBpdCBkaWZmaWN1bHQgZm9yIHR3
byBkaWZmZXJlbnQKKyAgICAgICAgU3Vic3BhY2VzIHRoYXQgYm90aCB1c2UgdGhlIHNhbWUgdW5k
ZXJseWluZyBhbGxvY2F0b3IgdG8gcmVhbGl6ZSB0aGF0IHRoZXkgY2FuIHRyYWRlIGJsb2NrcyB3
aXRoCisgICAgICAgIGVhY2ggb3RoZXIuIE5vdywgeW91IGp1c3QgbmVlZCB0byBhc2sgdGhlIGJs
b2NrIGJlaW5nIHN0b2xlbiBhbmQgdGhlIHN1YnNwYWNlIGRvaW5nIHRoZSBzdGVhbGluZyBpZgor
ICAgICAgICB0aGV5IHVzZSB0aGUgc2FtZSBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6QWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcik6CisgICAgICAgIChKU0M6OkFsaWduZWRNZW1vcnlBbGxvY2F0b3I6
On5BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKToKKyAgICAgICAgKiBoZWFwL0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuaDogQWRkZWQuCisgICAgICAgICogaGVhcC9GYXN0TWFsbG9jQWxpZ25lZE1lbW9y
eUFsbG9jYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpGYXN0TWFsbG9jQWxpZ25lZE1l
bW9yeUFsbG9jYXRvcjo6c2luZ2xldG9uKToKKyAgICAgICAgKEpTQzo6RmFzdE1hbGxvY0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I6OkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKToKKyAg
ICAgICAgKEpTQzo6RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6On5GYXN0TWFsbG9j
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcik6CisgICAgICAgIChKU0M6OkZhc3RNYWxsb2NBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUFsaWduZWRNZW1vcnkpOgorICAgICAgICAoSlND
OjpGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZnJlZUFsaWduZWRNZW1vcnkpOgor
ICAgICAgICAoSlNDOjpGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZHVtcCBjb25z
dCk6CisgICAgICAgICogaGVhcC9GYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBoZWFwL0dpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnNp
bmdsZXRvbik6CisgICAgICAgIChKU0M6OkdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6
R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6R2lnYWNhZ2VB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp+R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKToK
KyAgICAgICAgKEpTQzo6R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp0cnlBbGxvY2F0
ZUFsaWduZWRNZW1vcnkpOgorICAgICAgICAoSlNDOjpHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxv
Y2F0b3I6OmZyZWVBbGlnbmVkTWVtb3J5KToKKyAgICAgICAgKEpTQzo6R2lnYWNhZ2VBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBoZWFwL0dpZ2FjYWdlQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBoZWFwL0dpZ2FjYWdlU3Vi
c3BhY2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGhlYXAvR2lnYWNhZ2VTdWJzcGFjZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIGhlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcDoKKyAgICAgICAgKEpT
Qzo6TGFyZ2VBbGxvY2F0aW9uOjp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9j
YXRpb246OmRlc3Ryb3kpOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5n
KToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6Okhh
bmRsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRUb0FsbG9jYXRvcik6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN1YnNwYWNlIGNvbnN0KToKKyAgICAgICAg
KiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OmFsaWduZWRNZW1vcnlBbGxvY2F0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6SGFuZGxlOjpzdWJzcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9TdWJz
cGFjZS5jcHA6CisgICAgICAgIChKU0M6OlN1YnNwYWNlOjpTdWJzcGFjZSk6CisgICAgICAgIChK
U0M6OlN1YnNwYWNlOjpmaW5kRW1wdHlCbG9ja1RvU3RlYWwpOgorICAgICAgICAoSlNDOjpTdWJz
cGFjZTo6Y2FuVHJhZGVCbG9ja3NXaXRoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3Vic3Bh
Y2U6OnRyeUFsbG9jYXRlQWxpZ25lZE1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN1
YnNwYWNlOjpmcmVlQWxpZ25lZE1lbW9yeSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9TdWJz
cGFjZS5oOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6bmFtZSBjb25zdCk6CisgICAgICAgIChK
U0M6OlN1YnNwYWNlOjphbGlnbmVkTWVtb3J5QWxsb2NhdG9yIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlOjpKU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNl
KToKKyAgICAgICAgKiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZTo6SlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlKToKKyAgICAgICAgKiBydW50aW1lL0pTU2VnbWVudGVk
VmFyaWFibGVPYmplY3RTdWJzcGFjZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdTdWJz
cGFjZS5jcHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nU3Vic3BhY2U6OkpTU3RyaW5nU3Vic3Bh
Y2UpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdTdWJzcGFjZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uaDoKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5j
cHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZTo6SlNXZWJB
c3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1i
bHlDb2RlQmxvY2tTdWJzcGFjZS5oOgorCiAyMDE3LTA4LTAyICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgc3RhY2sgdHJhY2Ug
aW5mb3JtYXRpb24gZm9yIGVhY2ggUmVjb3JkaW5nQWN0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ5MCw2ICs0OTAsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGZ0bC9GVExUaHVua3MuY3BwCiAgICAgZnRs
L0ZUTFZhbHVlUmFuZ2UuY3BwCiAKKyAgICBoZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3Bw
CiAgICAgaGVhcC9BbGxvY2F0b3JBdHRyaWJ1dGVzLmNwcAogICAgIGhlYXAvQ2VsbENvbnRhaW5l
ci5jcHAKICAgICBoZWFwL0NvZGVCbG9ja1NldC5jcHAKQEAgLTQ5OSwxMyArNTAwLDE0IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVhcC9EZWZlckdDLmNwcAogICAgIGhlYXAv
RGVzdHJ1Y3Rpb25Nb2RlLmNwcAogICAgIGhlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAK
KyAgICBoZWFwL0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcAogICAgIGhlYXAv
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAKICAgICBoZWFwL0ZyZWVMaXN0LmNwcAogICAgIGhl
YXAvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAogICAgIGhlYXAvR0NDb25kdWN0b3IuY3BwCiAgICAg
aGVhcC9HQ0xvZ2dpbmcuY3BwCiAgICAgaGVhcC9HQ1JlcXVlc3QuY3BwCi0gICAgaGVhcC9HaWdh
Y2FnZVN1YnNwYWNlLmNwcAorICAgIGhlYXAvR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
LmNwcAogICAgIGhlYXAvSGFuZGxlU2V0LmNwcAogICAgIGhlYXAvSGFuZGxlU3RhY2suY3BwCiAg
ICAgaGVhcC9IZWFwLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDIyMDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NjQsOCArNDY0LDYgQEAK
IAkJMEY1QTYyODQxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUE2MjgyMTg4Qzk4RDQwMDcy
QzlERiAvKiBGVExWYWx1ZVJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY1QUUyQzQxREY0RjI4MDAwNjZFRkUxIC8qIFZNSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU5MEJCM0Ex
QjdDRjY0RTAwNkIzRjAzIC8qIFZNSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUI0QTMzMUM4NEYwRDYwMEYxQjE3RSAvKiBTbG93
UGF0aFJldHVyblR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNUI0QTMyMUM4NEYwRDYwMEYxQjE3RSAvKiBTbG93UGF0aFJldHVyblR5cGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjVCRjE1
NjFGMjJFQjE3MDAyOUQ5MUQgLyogR2lnYWNhZ2VTdWJzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE1NDFGMjJFQjE3MDAyOUQ5MUQg
LyogR2lnYWNhZ2VTdWJzcGFjZS5jcHAgKi87IH07Ci0JCTBGNUJGMTU3MUYyMkVCMTcwMDI5RDkx
RCAvKiBHaWdhY2FnZVN1YnNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjVCRjE1NTFGMjJFQjE3MDAyOUQ5MUQgLyogR2lnYWNhZ2VTdWJzcGFj
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NUJGMTYzMUYyMzE3MTIwMDI5RDkxRCAvKiBCM0hvaXN0TG9vcEludmFyaWFudFZhbHVlcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE2MTFG
MjMxNzEyMDAyOUQ5MUQgLyogQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMuY3BwICovOyB9Owog
CQkwRjVCRjE2NDFGMjMxNzEyMDAyOUQ5MUQgLyogQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUJGMTYy
MUYyMzE3MTIwMDI5RDkxRCAvKiBCM0hvaXN0TG9vcEludmFyaWFudFZhbHVlcy5oICovOyB9Owog
CQkwRjVCRjE2NzFGMjNBMDk4MDAyOUQ5MUQgLyogQjNCYWNrd2FyZHNDRkcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUJGMTY2MUYyM0EwOTgwMDI5
RDkxRCAvKiBCM0JhY2t3YXJkc0NGRy5oICovOyB9OwpAQCAtODk4LDYgKzg5NiwxMiBAQAogCQkw
RkVBMEEzMzE3MEQ0MEJGMDBCQjcyMkMgLyogREZHSklUQ29kZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBMEEyRjE3MEQ0MEJGMDBCQjcyMkMg
LyogREZHSklUQ29kZS5jcHAgKi87IH07CiAJCTBGRUEwQTM0MTcwRDQwQkYwMEJCNzIyQyAvKiBE
RkdKSVRDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkVBMEEzMDE3MEQ0MEJGMDBCQjcyMkMgLyogREZHSklUQ29kZS5oICovOyB9OwogCQkwRkVC
M0VDRjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQjNFQ0UxNjIzN0Y2NzAwQUI2N0FE
IC8qIE1hY3JvQXNzZW1ibGVyLmNwcCAqLzsgfTsKKwkJMEZFQzNDNTIxRjMzQTQxNjAwRjU5QjZD
IC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzNDNTAxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuY3BwICovOyB9OworCQkwRkVDM0M1MzFGMzNBNDE2MDBGNTlCNkMgLyog
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZFQzNDNTExRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlB
bGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRkVDM0M1NjFGMzNBNDUzMDBGNTlCNkMgLyogRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZFQzNDNTQxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLmNwcCAqLzsgfTsKKwkJMEZFQzNDNTcxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RNYWxs
b2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkVDM0M1NTFGMzNBNDUzMDBGNTlCNkMgLyogRmFzdE1hbGxvY0Fs
aWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRkVDM0M1QTFGMzNBNDg5MDBGNTlCNkMgLyogR2lnYWNhZ2VBbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRUMzQzU4MUYzM0E0ODkwMEY1OUI2QyAvKiBHaWdhY2FnZUFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuY3BwICovOyB9OworCQkwRkVDM0M1QjFGMzNBNDg5MDBGNTlCNkMgLyog
R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDM0M1OTFGMzNBNDg5MDBGNTlCNkMgLyogR2lnYWNh
Z2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi87IH07CiAJCTBGRUM4NEZFMUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0QjQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQXJndW1l
bnRSZWdWYWx1ZS5jcHAgKi87IH07CiAJCTBGRUM4NEZGMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Fy
Z3VtZW50UmVnVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRUM4NEI1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCAq
LzsgfTsKIAkJMEZFQzg1MDAxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9jay5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRCNjFCREFD
REFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrLmNwcCAqLzsgfTsKQEAgLTMwNTMsOCArMzA1Nyw2
IEBACiAJCTBGNUE2MjgxMTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFZhbHVlUmFuZ2UuY3BwOyBwYXRo
ID0gZnRsL0ZUTFZhbHVlUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjVBNjI4MjE4OEM5OEQ0MDA3MkM5REYgLyogRlRMVmFsdWVSYW5nZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBGVExWYWx1ZVJhbmdlLmg7IHBhdGggPSBmdGwvRlRMVmFsdWVS
YW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVCNEEzMjFDODRGMEQ2MDBG
MUIxN0UgLyogU2xvd1BhdGhSZXR1cm5UeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNsb3dQYXRoUmV0dXJuVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwRjVCRjE1NDFGMjJFQjE3MDAyOUQ5MUQgLyogR2lnYWNhZ2VTdWJzcGFjZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHaWdhY2FnZVN1YnNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMEY1QkYxNTUxRjIyRUIxNzAwMjlEOTFEIC8qIEdpZ2FjYWdlU3Vic3BhY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR2lnYWNhZ2VTdWJzcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjVCRjE2MTFGMjMxNzEyMDAyOUQ5MUQgLyogQjNIb2lzdExvb3BJbnZhcmlhbnRW
YWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMu
Y3BwOyBwYXRoID0gYjMvQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjVCRjE2MjFGMjMxNzEyMDAyOUQ5MUQgLyogQjNIb2lzdExv
b3BJbnZhcmlhbnRWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNIb2lzdExvb3BJbnZhcmlhbnRW
YWx1ZXMuaDsgcGF0aCA9IGIzL0IzSG9pc3RMb29wSW52YXJpYW50VmFsdWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUJGMTY2MUYyM0EwOTgwMDI5RDkxRCAvKiBCM0JhY2t3
YXJkc0NGRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JhY2t3YXJkc0NGRy5oOyBwYXRoID0gYjMvQjNC
YWNrd2FyZHNDRkcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0OTYsNiArMzQ5
OCwxMiBAQAogCQkwRkVBMEEyRjE3MEQ0MEJGMDBCQjcyMkMgLyogREZHSklUQ29kZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdKSVRDb2RlLmNwcDsgcGF0aCA9
IGRmZy9ERkdKSVRDb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQTBB
MzAxNzBENDBCRjAwQkI3MjJDIC8qIERGR0pJVENvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHSklUQ29kZS5oOyBwYXRoID0gZGZnL0RGR0pJVENvZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQjNFQ0UxNjIzN0Y2NzAwQUI2N0FEIC8qIE1hY3Jv
QXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hY3Jv
QXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzNDNTAxRjMz
QTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGRUMzQzUxMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzNDNTQxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RNYWxsb2NB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZhc3RNYWxsb2NB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEZFQzNDNTUxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUMzQzU4MUYzM0E0ODkwMEY1OUI2QyAv
KiBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZFQzNDNTkxRjMzQTQ4OTAwRjU5QjZDIC8qIEdpZ2FjYWdlQWxpZ25lZE1lbW9y
eUFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg0QjQxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzQXJndW1lbnRSZWdWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBcmd1bWVudFJl
Z1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg0QjUxQkRBQ0RB
QzAwODBGRjc0IC8qIEIzQXJndW1lbnRSZWdWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM0FyZ3VtZW50UmVnVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXJndW1lbnRSZWdW
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVDODRCNjFCREFDREFDMDA4
MEZGNzQgLyogQjNCYXNpY0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEIzQmFzaWNCbG9jay5jcHA7IHBhdGggPSBiMy9CM0Jhc2ljQmxvY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjAzMSw2ICs2MDM5LDggQEAKIAkJMTQyRTMxMkEx
MzRGRjBBNjAwQUZBREI1IC8qIGhlYXAgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTBGRUMzQzUwMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmNwcCAqLywKKwkJCQkwRkVDM0M1MTFGMzNBNDE2MDBGNTlCNkMgLyogQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci5oICovLAogCQkJCTBGQTc2MjBBMURCOTU5RjYwMEI3QTJGRCAvKiBB
bGxvY2F0aW5nU2NvcGUuaCAqLywKIAkJCQkwRjk2MzAzNTFENDE5MkMzMDA1NjA5RDkgLyogQWxs
b2NhdG9yQXR0cmlidXRlcy5jcHAgKi8sCiAJCQkJMEY5NjMwMzYxRDQxOTJDMzAwNTYwOUQ5IC8q
IEFsbG9jYXRvckF0dHJpYnV0ZXMuaCAqLywKQEAgLTYwNTYsNiArNjA2Niw4IEBACiAJCQkJMEY5
NjMwMzgxRDQxOTJDMzAwNTYwOUQ5IC8qIERlc3RydWN0aW9uTW9kZS5oICovLAogCQkJCTJBODM2
MzgzMThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLywKIAkJ
CQkyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oICov
LAorCQkJCTBGRUMzQzU0MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0TWFsbG9jQWxpZ25lZE1lbW9y
eUFsbG9jYXRvci5jcHAgKi8sCisJCQkJMEZFQzNDNTUxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RN
YWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi8sCiAJCQkJMEY1NTEzQTcxRDVBNjhDQjAw
QzMyQkQ4IC8qIEZyZWVMaXN0LmNwcCAqLywKIAkJCQkwRjU1MTNBNTFENUE2ODJBMDBDMzJCRDgg
LyogRnJlZUxpc3QuaCAqLywKIAkJCQkwRjY1ODVFMDFFRTA4MDU3MDA5NTE3NkQgLyogRnJlZUxp
c3RJbmxpbmVzLmggKi8sCkBAIC02MDc5LDggKzYwOTEsOCBAQAogCQkJCTJBMzQzRjc0MThBMTc0
OEIwMDM5QjA4NSAvKiBHQ1NlZ21lbnRlZEFycmF5LmggKi8sCiAJCQkJMkEzNDNGNzcxOEExNzQ5
RDAwMzlCMDg1IC8qIEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggKi8sCiAJCQkJMEY4NkEyNkUx
RDZGN0IzMTAwQ0IwQzkyIC8qIEdDVHlwZU1hcC5oICovLAotCQkJCTBGNUJGMTU0MUYyMkVCMTcw
MDI5RDkxRCAvKiBHaWdhY2FnZVN1YnNwYWNlLmNwcCAqLywKLQkJCQkwRjVCRjE1NTFGMjJFQjE3
MDAyOUQ5MUQgLyogR2lnYWNhZ2VTdWJzcGFjZS5oICovLAorCQkJCTBGRUMzQzU4MUYzM0E0ODkw
MEY1OUI2QyAvKiBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwICovLAorCQkJCTBG
RUMzQzU5MUYzM0E0ODkwMEY1OUI2QyAvKiBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
aCAqLywKIAkJCQkxNDJFMzEyQjEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlLmggKi8sCiAJCQkJ
QzI4MzE4RkYxNkZFNEI3RDAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrLmggKi8sCiAJCQkJQzI4MzE5
MDExNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oICovLApAQCAtOTEzNSw2
ICs5MTQ3LDcgQEAKIAkJCQk3QzE4NEUyMzE3QkVFMjQwMDA3Q0I2M0EgLyogSlNQcm9taXNlQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NkI3MzFFMUJEQTA4RUYwMDMzMUI4NCAv
KiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMDA4Q0RC
MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEZFQzNDNTcxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzE4NEUxRjE3QkVFMjJFMDA3Q0I2M0EgLyog
SlNQcm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTZCNzMxRjFCREEwOEVG
MDAzMzFCODQgLyogSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkEwNUFCRDYxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC05MjQ3LDYgKzkyNjAsNyBAQAogCQkJCTg2MDE2MUU2MEYzQTgzQzEw
MEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTVFRjEzRjkxRjA3MzIwNDAwMEYwNDQyIC8qIG1ha2UtanMtZmlsZS1hcnJheXMucHkgaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzAwODczQTE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUMzQzUzMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzRERUY5NDE4MkQ5OTE0MDA1
MjJDMjIgLyogTWFwSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDA4
NzNFMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTU1MSw3ICs5NTY1LDYgQEAKIAkJCQkwRjVBRTJDNDFERjRGMjgwMDA2NkVGRTEg
LyogVk1JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTMwMjJENzFFNDI4NTczMDBCQUM0
OTMgLyogVk1JbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNkY1NkRFMUU2NEVBRDYw
MEQxNzgwMSAvKiBWTVRyYXBzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjVCRjE1NzFGMjJFQjE3
MDAyOUQ5MUQgLyogR2lnYWNhZ2VTdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNGNDBF
OTMxRDVBNEFCMzAwOTlBMUI2IC8qIFdhc21CM0lSR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1M0NBNzMwQTFFQTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUzRjhEMjAwMUU4Mzg3RDQwMEQyMTExNiAvKiBXYXNtQkJRUGxhbklubGluZXMu
aCBpbiBIZWFkZXJzICovLApAQCAtOTU2OCw2ICs5NTgxLDcgQEAKIAkJCQlBRDAwNjU5RTFFQ0FD
ODEyMDAwQ0E5MjYgLyogV2FzbUxpbWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNFOUUwQUMx
RUFFODNERjAwRkVFMjUxIC8qIFdhc21NYWNoaW5lVGhyZWFkcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTM1NTU3MTQxRDlEOUVBNTAwNkQ1ODNCIC8qIFdhc21NZW1vcnkuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGRUMzQzVCMUYzM0E0ODkwMEY1OUI2QyAvKiBHaWdhY2FnZUFsaWduZWRNZW1vcnlB
bGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5Qjc1OTc1MURGQTRDNjAwMDUyMTc0QyAv
KiBXYXNtTWVtb3J5SW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTc5MDA4MTM5MUU5
NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0U3NzdF
NDFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTEwMzIzLDYgKzEwMzM3LDcgQEAKIAkJCQk2MkVDOUJCNjFCN0VCMDdDMDAzMDNBRDEg
LyogQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjJENzU1RDYx
Qjg0RkI0NjAwMTgwMUZBIC8qIENhbGxGcmFtZVNodWZmbGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTYyRDc1NUQ1MUI4NEZCNDAwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxlcjMyXzY0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGRUMzQzU2MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0TWFs
bG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2MkQ3NTVE
NDFCODRGQjNEMDAxODAxRkEgLyogQ2FsbEZyYW1lU2h1ZmZsZXI2NC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjBCODNCMDE0QkNGNzE2MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGOTMzMjlEMTRDQTdEQzMwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1
cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwNzU1LDYgKzEwNzcwLDcgQEAKIAkJCQlBNTAzRkEx
QjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1MDNGQTFEMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJh
bWVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzAxM0NBOEIxQjQ5MUE5NDAwQ0FF
NjEzIC8qIEpTSm9iLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRUMzQzUyMUYzM0E0MTYwMEY1
OUI2QyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
MEI3RDFEMERDNjlBRjcwMDlDNDJCOCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDI4MDg3NTEwN0VDMTNFMDAxM0U3QjIgLyogSlNMb2NrLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUMyNUQ3MDlCMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1
ZS5tbSBpbiBTb3VyY2VzICovLApAQCAtMTA5ODksNyArMTEwMDUsNiBAQAogCQkJCTcwRUMwRUM2
MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDQ2OURFQzEwN0VDN0U3MDA2NTA0NDYgLyogU3RyaW5nT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0NDY5REVEMTA3RUM3RTcwMDY1MDQ0NiAvKiBTdHJpbmdQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEY1QkYxNTYxRjIyRUIxNzAwMjlEOTFEIC8q
IEdpZ2FjYWdlU3Vic3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzNUYyNEQxMkU2NzY1
QjAwMkI1NTUzIC8qIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkNERTNCNDMwRTZDODMyRDAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0xMTA3Myw2ICsxMTA4OCw3IEBACiAJCQkJQUQ3NDM4QzExRTA0NTdB
QTAwRkQwQzJBIC8qIFdhc21TaWduYXR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI1MEQy
RDExRThEQTA1QTAwMjlBOTMyIC8qIFdhc21UaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTNGRjdGOUIxREJGRDJCOTAwQTI2Q0NDIC8qIFdhc21WYWxpZGF0ZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRkVDM0M1QTFGMzNBNDg5MDBGNTlCNkMgLyogR2lnYWNhZ2VBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEZCMzA0MUU3QTExNDYwMDNDMTlE
RCAvKiBXYXNtV29ya2xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVEOTRGMkUxNzFFM0Uy
MzAwQkU3N0E0IC8qIFdhdGNoZG9nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOTE5RDI1MTU4
NTNDRTAwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRv
ci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgorCituYW1lc3BhY2Ug
SlNDIHsgCisKK0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6OkFsaWduZWRNZW1vcnlBbGxvY2F0b3Io
KQoreworfQorCitBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp+QWxpZ25lZE1lbW9yeUFsbG9jYXRv
cigpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYv
UHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFsaWduZWRNZW1vcnlB
bGxvY2F0b3IgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFsaWduZWRNZW1vcnlBbGxvY2F0
b3IpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IoKTsKKyAgICB2aXJ0dWFsIH5BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCk7
CisgICAgCisgICAgdmlydHVhbCB2b2lkKiB0cnlBbGxvY2F0ZUFsaWduZWRNZW1vcnkoc2l6ZV90
IGFsaWdubWVudCwgc2l6ZV90IHNpemUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZnJlZUFsaWdu
ZWRNZW1vcnkodm9pZCopID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRmFzdE1hbGxvY0Fs
aWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGYXN0TWFsbG9j
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgorCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK0Zhc3RNYWxsb2NBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yJiBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6aW5zdGFu
Y2UoKQoreworICAgIHN0YXRpYyBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvciogcmVz
dWx0OworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxf
b25jZSgKKyAgICAgICAgb25jZUZsYWcsCisgICAgICAgIFtdIHsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG5ldyBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpOworICAgICAgICB9KTsK
KyAgICByZXR1cm4gKnJlc3VsdDsKK30KKworRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0
b3I6OkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkKK3sKK30KKworRmFzdE1hbGxv
Y0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6On5GYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cigpCit7Cit9CisKK3ZvaWQqIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp0cnlB
bGxvY2F0ZUFsaWduZWRNZW1vcnkoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCit7Cisg
ICAgcmV0dXJuIHRyeUZhc3RBbGlnbmVkTWFsbG9jKGFsaWdubWVudCwgc2l6ZSk7Cit9CisKK3Zv
aWQgRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmZyZWVBbGlnbmVkTWVtb3J5KHZv
aWQqIGJhc2VQdHIpCit7CisgICAgZmFzdEFsaWduZWRGcmVlKGJhc2VQdHIpOworfQorCit2b2lk
IEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Cit7CisgICAgb3V0LnByaW50KCJGYXN0TWFsbG9jIik7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GYXN0TWFsbG9jQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRmFz
dE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IgOiBwdWJsaWMgQWxpZ25lZE1lbW9yeUFsbG9j
YXRvciB7CitwdWJsaWM6CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEZhc3RNYWxsb2NB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yJiBpbnN0YW5jZSgpOworCisgICAgfkZhc3RNYWxsb2NBbGln
bmVkTWVtb3J5QWxsb2NhdG9yKCk7CisgICAgCisgICAgdm9pZCogdHJ5QWxsb2NhdGVBbGlnbmVk
TWVtb3J5KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZyZWVBbGlnbmVkTWVtb3J5KHZvaWQqKSBvdmVycmlkZTsKKyAgICAKKyAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBGYXN0TWFsbG9j
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9j
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR2lnYWNh
Z2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9HaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdpZ2FjYWdl
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgorCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8
d3RmL0dpZ2FjYWdlLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitHaWdhY2FnZUFsaWduZWRNZW1v
cnlBbGxvY2F0b3ImIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6aW5zdGFuY2UoKQor
eworICAgIHN0YXRpYyBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIHJlc3VsdDsKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoCisg
ICAgICAgIG9uY2VGbGFnLAorICAgICAgICBbXSB7CisgICAgICAgICAgICByZXN1bHQgPSBuZXcg
R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCk7CisgICAgICAgIH0pOworICAgIHJldHVy
biAqcmVzdWx0OworfQorCitHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OkdpZ2FjYWdl
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpCit7Cit9CisKK0dpZ2FjYWdlQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcjo6fkdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpCit7Cit9CisKK3ZvaWQq
IEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVBbGlnbmVkTWVtb3J5
KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQoreworICAgIHJldHVybiBHaWdhY2FnZTo6
dHJ5QWxpZ25lZE1hbGxvYyhhbGlnbm1lbnQsIHNpemUpOworfQorCit2b2lkIEdpZ2FjYWdlQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcjo6ZnJlZUFsaWduZWRNZW1vcnkodm9pZCogYmFzZVB0cikKK3sK
KyAgICBHaWdhY2FnZTo6YWxpZ25lZEZyZWUoYmFzZVB0cik7Cit9CisKK3ZvaWQgR2lnYWNhZ2VB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7Cisg
ICAgb3V0LnByaW50KCJHaWdhY2FnZSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR2lnYWNhZ2VB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFsaWduZWRNZW1vcnlBbGxvY2F0
b3IuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFs
bG9jYXRvciA6IHB1YmxpYyBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yIHsKK3B1YmxpYzoKKyAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGRuJ3QgYmUgYSBzaW5nbGV0b24uIFRoZXJlIHNob3VsZCBiZSBk
aWZmZXJlbnQgaW5zdGFuY2VzIGZvciBwcmltYXJpZXMsIEpTVmFsdWVzLAorICAgIC8vIGFuZCBv
dGhlciB0aGluZ3MuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NDkxOQorICAgIHN0YXRpYyBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3ImIGlu
c3RhbmNlKCk7CisKKyAgICB+R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCk7CisgICAg
CisgICAgdm9pZCogdHJ5QWxsb2NhdGVBbGlnbmVkTWVtb3J5KHNpemVfdCBhbGlnbm1lbnQsIHNp
emVfdCBzaXplKSBvdmVycmlkZTsKKyAgICB2b2lkIGZyZWVBbGlnbmVkTWVtb3J5KHZvaWQqKSBv
dmVycmlkZTsKKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlk
ZTsKKworcHJpdmF0ZToKKyAgICBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKTsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9HaWdhY2FnZVN1YnNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HaWdhY2FnZVN1YnNwYWNlLmNwcAkocmV2aXNpb24gMjIwMTY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvR2lnYWNhZ2VTdWJzcGFjZS5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHaWdhY2FnZVN1YnNwYWNlLmgi
Ci0KLSNpbmNsdWRlIDx3dGYvR2lnYWNhZ2UuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLUdpZ2Fj
YWdlU3Vic3BhY2U6OkdpZ2FjYWdlU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBB
bGxvY2F0b3JBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCi0gICAgOiBTdWJzcGFjZShuYW1lLCBoZWFw
LCBhdHRyaWJ1dGVzKQotewotICAgIEdpZ2FjYWdlOjplbnN1cmVHaWdhY2FnZSgpOwotfQotCi1H
aWdhY2FnZVN1YnNwYWNlOjp+R2lnYWNhZ2VTdWJzcGFjZSgpCi17Ci19Ci0KLXZvaWQqIEdpZ2Fj
YWdlU3Vic3BhY2U6OnRyeUFsbG9jYXRlQWxpZ25lZE1lbW9yeShzaXplX3QgYWxpZ25tZW50LCBz
aXplX3Qgc2l6ZSkKLXsKLSAgICB2b2lkKiByZXN1bHQgPSBHaWdhY2FnZTo6dHJ5QWxpZ25lZE1h
bGxvYyhhbGlnbm1lbnQsIHNpemUpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgR2ln
YWNhZ2VTdWJzcGFjZTo6ZnJlZUFsaWduZWRNZW1vcnkodm9pZCogYmFzZVB0cikKLXsKLSAgICBH
aWdhY2FnZTo6YWxpZ25lZEZyZWUoYmFzZVB0cik7Ci0gICAgV1RGOjpjb21waWxlckZlbmNlKCk7
Ci19Ci0KLWJvb2wgR2lnYWNhZ2VTdWJzcGFjZTo6Y2FuVHJhZGVCbG9ja3NXaXRoKFN1YnNwYWNl
KiBvdGhlcikKLXsKLSAgICByZXR1cm4gdGhpcyA9PSBvdGhlcjsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgSlNDCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dpZ2FjYWdlU3Vic3Bh
Y2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HaWdhY2FnZVN1
YnNwYWNlLmgJKHJldmlzaW9uIDIyMDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0dpZ2FjYWdlU3Vic3BhY2UuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlICJTdWJzcGFjZS5oIgotI2luY2x1ZGUgPHd0Zi9HaWdhY2FnZS5oPgotCi1uYW1l
c3BhY2UgSlNDIHsKLQotLy8gV2UgdXNlIGEgR2lnYWNhZ2VTdWJzcGFjZSBmb3IgdGhlIGF1eGls
aWFyeSBzcGFjZS4KLWNsYXNzIEdpZ2FjYWdlU3Vic3BhY2UgOiBwdWJsaWMgU3Vic3BhY2Ugewot
cHVibGljOgotICAgIEdpZ2FjYWdlU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiwgQWxsb2Nh
dG9yQXR0cmlidXRlcyk7Ci0gICAgfkdpZ2FjYWdlU3Vic3BhY2UoKTsKLSAgICAKLSAgICBib29s
IGNhblRyYWRlQmxvY2tzV2l0aChTdWJzcGFjZSogb3RoZXIpIG92ZXJyaWRlOwotICAgIHZvaWQq
IHRyeUFsbG9jYXRlQWxpZ25lZE1lbW9yeShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBmcmVlQWxpZ25lZE1lbW9yeSh2b2lkKikgb3ZlcnJpZGU7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9MYXJnZUFsbG9jYXRpb24uY3BwCShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGFyZ2VBbGxv
Y2F0aW9uLmgiCiAKKyNpbmNsdWRlICJBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCiAjaW5jbHVk
ZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25z
LmgiCkBAIC0zNCw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBMYXJnZUFsbG9jYXRpb24q
IExhcmdlQWxsb2NhdGlvbjo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXAsIHNpemVfdCBzaXplLCBTdWJz
cGFjZSogc3Vic3BhY2UpCiB7Ci0gICAgdm9pZCogc3BhY2UgPSBzdWJzcGFjZS0+dHJ5QWxsb2Nh
dGVBbGlnbmVkTWVtb3J5KGFsaWdubWVudCwgaGVhZGVyU2l6ZSgpICsgc2l6ZSk7CisgICAgdm9p
ZCogc3BhY2UgPSBzdWJzcGFjZS0+YWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpLT50cnlBbGxvY2F0
ZUFsaWduZWRNZW1vcnkoYWxpZ25tZW50LCBoZWFkZXJTaXplKCkgKyBzaXplKTsKICAgICBpZiAo
IXNwYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoc2NyaWJibGVGcmVlQ2Vs
bHMoKSkKQEAgLTEwNiw5ICsxMDcsOSBAQCB2b2lkIExhcmdlQWxsb2NhdGlvbjo6c3dlZXAoKQog
CiB2b2lkIExhcmdlQWxsb2NhdGlvbjo6ZGVzdHJveSgpCiB7Ci0gICAgU3Vic3BhY2UqIHN1YnNw
YWNlID0gbV9zdWJzcGFjZTsKKyAgICBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKiBhbGxvY2F0b3Ig
PSBtX3N1YnNwYWNlLT5hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCk7CiAgICAgdGhpcy0+fkxhcmdl
QWxsb2NhdGlvbigpOwotICAgIHN1YnNwYWNlLT5mcmVlQWxpZ25lZE1lbW9yeSh0aGlzKTsKKyAg
ICBhbGxvY2F0b3ItPmZyZWVBbGlnbmVkTWVtb3J5KHRoaXMpOwogfQogCiB2b2lkIExhcmdlQWxs
b2NhdGlvbjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMjAxNjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDQsOCArMTA0LDcgQEAgdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlB
bGxvY2F0ZVdpdGhvdQogICAgIAogICAgIGlmIChPcHRpb25zOjpzdGVhbEVtcHR5QmxvY2tzRnJv
bU90aGVyQWxsb2NhdG9ycygpKSB7CiAgICAgICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBi
bG9jayA9IG1fc3Vic3BhY2UtPmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpKSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3Vic3BhY2UoKS0+Y2FuVHJhZGVCbG9ja3NXaXRoKG1f
c3Vic3BhY2UpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fc3Vic3BhY2UtPmNhblRy
YWRlQmxvY2tzV2l0aChibG9jay0+c3Vic3BhY2UoKSkpOworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoYmxvY2stPmFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSA9PSBtX3N1YnNwYWNlLT5hbGln
bmVkTWVtb3J5QWxsb2NhdG9yKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBibG9jay0+
c3dlZXAobnVsbHB0cik7CiAgICAgICAgICAgICAKQEAgLTI0Myw3ICsyNDIsNyBAQCBNYXJrZWRC
bG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OnRyCiB7CiAgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAgIE1hcmtlZEJsb2NrOjpIYW5k
bGUqIGhhbmRsZSA9IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCwgc3Vic3BhY2UoKSk7
CisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlID0gTWFya2VkQmxvY2s6OnRyeUNyZWF0
ZSgqbV9oZWFwLCBzdWJzcGFjZSgpLT5hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkpOwogICAgIGlm
ICghaGFuZGxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlzaW9uIDIyMDE2NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1hcmtl
ZEJsb2NrLmgiCiAKKyNpbmNsdWRlICJBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCiAjaW5jbHVk
ZSAiRnJlZUxpc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNE
ZXN0cnVjdGlibGVPYmplY3QuaCIKQEAgLTQzLDIzICs0NCwyMyBAQCBjb25zdCBzaXplX3QgTWFy
a2VkQmxvY2s6OmJsb2NrU2l6ZTsKIHN0YXRpYyBjb25zdCBib29sIGNvbXB1dGVCYWxhbmNlID0g
ZmFsc2U7CiBzdGF0aWMgc2l6ZV90IGJhbGFuY2U7CiAKLU1hcmtlZEJsb2NrOjpIYW5kbGUqIE1h
cmtlZEJsb2NrOjp0cnlDcmVhdGUoSGVhcCYgaGVhcCwgU3Vic3BhY2UqIHN1YnNwYWNlKQorTWFy
a2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBBbGln
bmVkTWVtb3J5QWxsb2NhdG9yKiBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yKQogewogICAgIGlmIChj
b21wdXRlQmFsYW5jZSkgewogICAgICAgICBiYWxhbmNlKys7CiAgICAgICAgIGlmICghKGJhbGFu
Y2UgJSAxMCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJNYXJrZWRCbG9jayBCYWxhbmNlOiAiLCBi
YWxhbmNlLCAiXG4iKTsKICAgICB9Ci0gICAgdm9pZCogYmxvY2tTcGFjZSA9IHN1YnNwYWNlLT50
cnlBbGxvY2F0ZUFsaWduZWRNZW1vcnkoYmxvY2tTaXplLCBibG9ja1NpemUpOworICAgIHZvaWQq
IGJsb2NrU3BhY2UgPSBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yLT50cnlBbGxvY2F0ZUFsaWduZWRN
ZW1vcnkoYmxvY2tTaXplLCBibG9ja1NpemUpOwogICAgIGlmICghYmxvY2tTcGFjZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHNjcmliYmxlRnJlZUNlbGxzKCkpCiAgICAgICAg
IHNjcmliYmxlKGJsb2NrU3BhY2UsIGJsb2NrU2l6ZSk7Ci0gICAgcmV0dXJuIG5ldyBIYW5kbGUo
aGVhcCwgc3Vic3BhY2UsIGJsb2NrU3BhY2UpOworICAgIHJldHVybiBuZXcgSGFuZGxlKGhlYXAs
IGFsaWduZWRNZW1vcnlBbGxvY2F0b3IsIGJsb2NrU3BhY2UpOwogfQogCi1NYXJrZWRCbG9jazo6
SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwgU3Vic3BhY2UqIHN1YnNwYWNlLCB2b2lkKiBibG9j
a1NwYWNlKQotICAgIDogbV9zdWJzcGFjZShzdWJzcGFjZSkKK01hcmtlZEJsb2NrOjpIYW5kbGU6
OkhhbmRsZShIZWFwJiBoZWFwLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKiBhbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLCB2b2lkKiBibG9ja1NwYWNlKQorICAgIDogbV9hbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yKGFsaWduZWRNZW1vcnlBbGxvY2F0b3IpCiAgICAgLCBtX3dlYWtTZXQoaGVhcC52bSgpLCBD
ZWxsQ29udGFpbmVyKCkpCiAgICAgLCBtX25ld2x5QWxsb2NhdGVkVmVyc2lvbihNYXJrZWRTcGFj
ZTo6bnVsbFZlcnNpb24pCiB7CkBAIC03Myw3ICs3NCw2IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OkhhbmRsZShIZWFwJiBoZWFwLCAKIE1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUoKQogewog
ICAgIEhlYXAmIGhlYXAgPSAqdGhpcy0+aGVhcCgpOwotICAgIFN1YnNwYWNlKiBzdWJzcGFjZSA9
IHRoaXMtPnN1YnNwYWNlKCk7CiAgICAgaWYgKGNvbXB1dGVCYWxhbmNlKSB7CiAgICAgICAgIGJh
bGFuY2UtLTsKICAgICAgICAgaWYgKCEoYmFsYW5jZSAlIDEwKSkKQEAgLTgxLDcgKzgxLDcgQEAg
TWFya2VkQmxvY2s6OkhhbmRsZTo6fkhhbmRsZSgpCiAgICAgfQogICAgIHJlbW92ZUZyb21BbGxv
Y2F0b3IoKTsKICAgICBtX2Jsb2NrLT5+TWFya2VkQmxvY2soKTsKLSAgICBzdWJzcGFjZS0+ZnJl
ZUFsaWduZWRNZW1vcnkobV9ibG9jayk7CisgICAgbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yLT5m
cmVlQWxpZ25lZE1lbW9yeShtX2Jsb2NrKTsKICAgICBoZWFwLmRpZEZyZWVCbG9jayhibG9ja1Np
emUpOwogfQogCkBAIC0zMzQsMTAgKzMzNCw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6
ZGlkQWRkVG9BbGxvY2EKICAgICBtX2luZGV4ID0gaW5kZXg7CiAgICAgbV9hbGxvY2F0b3IgPSBh
bGxvY2F0b3I7CiAgICAgCi0gICAgUkVMRUFTRV9BU1NFUlQobV9zdWJzcGFjZS0+Y2FuVHJhZGVC
bG9ja3NXaXRoKGFsbG9jYXRvci0+c3Vic3BhY2UoKSkpOwotICAgIFJFTEVBU0VfQVNTRVJUKGFs
bG9jYXRvci0+c3Vic3BhY2UoKS0+Y2FuVHJhZGVCbG9ja3NXaXRoKG1fc3Vic3BhY2UpKTsKLSAg
ICAKLSAgICBtX3N1YnNwYWNlID0gYWxsb2NhdG9yLT5zdWJzcGFjZSgpOworICAgIFJFTEVBU0Vf
QVNTRVJUKG1fYWxsb2NhdG9yLT5zdWJzcGFjZSgpLT5hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkg
PT0gbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKTsKICAgICAKICAgICBzaXplX3QgY2VsbFNpemUg
PSBhbGxvY2F0b3ItPmNlbGxTaXplKCk7CiAgICAgbV9hdG9tc1BlckNlbGwgPSAoY2VsbFNpemUg
KyBhdG9tU2l6ZSAtIDEpIC8gYXRvbVNpemU7CkBAIC0zOTcsNiArMzk0LDExIEBAIHZvaWQgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6ZHVtcFN0YXRlKFByaW4KICAgICAgICAgfSk7CiB9CiAKK1N1YnNw
YWNlKiBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdWJzcGFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGFsbG9jYXRvcigpLT5zdWJzcGFjZSgpOworfQorCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OnN3ZWVwKEZyZWVMaXN0KiBmcmVlTGlzdCkKIHsKICAgICBTd2VlcGluZ1Njb3BlIHN3ZWVwaW5n
U2NvcGUoKmhlYXAoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmgJKHJldmlzaW9uIDIyMDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDggQEAKICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotICAgIAorCitjbGFzcyBBbGln
bmVkTWVtb3J5QWxsb2NhdG9yOyAgICAKIGNsYXNzIEZyZWVMaXN0OwogY2xhc3MgSGVhcDsKIGNs
YXNzIEpTQ2VsbDsKQEAgLTExMCw2ICsxMTEsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgTWFya2Vk
QWxsb2NhdG9yKiBhbGxvY2F0b3IoKSBjb25zdDsKICAgICAgICAgU3Vic3BhY2UqIHN1YnNwYWNl
KCkgY29uc3Q7CisgICAgICAgIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIGFsaWduZWRNZW1vcnlB
bGxvY2F0b3IoKSBjb25zdDsKICAgICAgICAgSGVhcCogaGVhcCgpIGNvbnN0OwogICAgICAgICBp
bmxpbmUgTWFya2VkU3BhY2UqIHNwYWNlKCkgY29uc3Q7CiAgICAgICAgIFZNKiB2bSgpIGNvbnN0
OwpAQCAtMTk5LDcgKzIwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBkdW1wU3RhdGUoUHJp
bnRTdHJlYW0mKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSGFuZGxlKEhlYXAm
LCBTdWJzcGFjZSosIHZvaWQqKTsKKyAgICAgICAgSGFuZGxlKEhlYXAmLCBBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yKiwgdm9pZCopOwogICAgICAgICAKICAgICAgICAgZW51bSBTd2VlcERlc3RydWN0
aW9uTW9kZSB7IEJsb2NrSGFzTm9EZXN0cnVjdG9ycywgQmxvY2tIYXNEZXN0cnVjdG9ycywgQmxv
Y2tIYXNEZXN0cnVjdG9yc0FuZENvbGxlY3RvcklzUnVubmluZyB9OwogICAgICAgICBlbnVtIFNj
cmliYmxlTW9kZSB7IERvbnRTY3JpYmJsZSwgU2NyaWJibGUgfTsKQEAgLTIyOSw3ICsyMzEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIEFsbG9jYXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwogICAg
ICAgICBib29sIG1faXNGcmVlTGlzdGVkIHsgZmFsc2UgfTsKIAotICAgICAgICBTdWJzcGFjZSog
bV9zdWJzcGFjZSB7IG51bGxwdHIgfTsKKyAgICAgICAgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciog
bV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yIHsgbnVsbHB0ciB9OwogICAgICAgICBNYXJrZWRBbGxv
Y2F0b3IqIG1fYWxsb2NhdG9yIHsgbnVsbHB0ciB9OwogICAgICAgICBzaXplX3QgbV9pbmRleCB7
IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsKICAgICAgICAgV2Vha1NldCBt
X3dlYWtTZXQ7CkBAIC0yMzksNyArMjQxLDcgQEAgcHVibGljOgogICAgICAgICBNYXJrZWRCbG9j
ayogbV9ibG9jayB7IG51bGxwdHIgfTsKICAgICB9OwogICAgICAgICAKLSAgICBzdGF0aWMgTWFy
a2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhlYXAmLCBTdWJzcGFjZSopOworICAgIHN0YXRp
YyBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlDcmVhdGUoSGVhcCYsIEFsaWduZWRNZW1vcnlBbGxv
Y2F0b3IqKTsKICAgICAgICAgCiAgICAgSGFuZGxlJiBoYW5kbGUoKTsKICAgICAgICAgCkBAIC0z
OTYsOSArMzk4LDkgQEAgaW5saW5lIE1hcmtlZEFsbG9jYXRvciogTWFya2VkQmxvY2s6Okhhbgog
ICAgIHJldHVybiBtX2FsbG9jYXRvcjsKIH0KIAotaW5saW5lIFN1YnNwYWNlKiBNYXJrZWRCbG9j
azo6SGFuZGxlOjpzdWJzcGFjZSgpIGNvbnN0CitpbmxpbmUgQWxpZ25lZE1lbW9yeUFsbG9jYXRv
ciogTWFya2VkQmxvY2s6OkhhbmRsZTo6YWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fc3Vic3BhY2U7CisgICAgcmV0dXJuIG1fYWxpZ25lZE1lbW9yeUFsbG9j
YXRvcjsKIH0KIAogaW5saW5lIEhlYXAqIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmhlYXAoKSBjb25z
dApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAkocmV2aXNpb24g
MjIwMTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NCwxMCArNTQsMTEgQEAgc3RydWN0IERlc3Ryb3lGdW5jIHsKIAogfSAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLVN1YnNwYWNlOjpTdWJzcGFjZShDU3RyaW5nIG5hbWUs
IEhlYXAmIGhlYXAsIEFsbG9jYXRvckF0dHJpYnV0ZXMgYXR0cmlidXRlcykKK1N1YnNwYWNlOjpT
dWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIEFsbG9jYXRvckF0dHJpYnV0ZXMgYXR0
cmlidXRlcywgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciogYWxpZ25lZE1lbW9yeUFsbG9jYXRvcikK
ICAgICA6IG1fc3BhY2UoaGVhcC5vYmplY3RTcGFjZSgpKQogICAgICwgbV9uYW1lKG5hbWUpCiAg
ICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKKyAgICAsIG1fYWxpZ25lZE1lbW9yeUFsbG9j
YXRvcihhbGlnbmVkTWVtb3J5QWxsb2NhdG9yKQogICAgICwgbV9hbGxvY2F0b3JGb3JFbXB0eUFs
bG9jYXRpb24obV9zcGFjZS5maXJzdEFsbG9jYXRvcigpKQogewogICAgIC8vIEl0J3MgcmVtb3Rl
bHkgcG9zc2libGUgdGhhdCB3ZSdyZSBHQ2luZyByaWdodCBub3cgZXZlbiBpZiB0aGUgY2xpZW50
IGlzIGNhcmVmdWwgdG8gb25seQpAQCAtODgsMjMgKzg5LDYgQEAgdm9pZCBTdWJzcGFjZTo6ZGVz
dHJveShWTSYgdm0sIEpTQ2VsbCogYwogICAgIERlc3Ryb3lGdW5jKCkodm0sIGNlbGwpOwogfQog
Ci1ib29sIFN1YnNwYWNlOjpjYW5UcmFkZUJsb2Nrc1dpdGgoU3Vic3BhY2UqKQotewotICAgIHJl
dHVybiB0cnVlOwotfQotCi12b2lkKiBTdWJzcGFjZTo6dHJ5QWxsb2NhdGVBbGlnbmVkTWVtb3J5
KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQotewotICAgIHZvaWQqIHJlc3VsdCA9IHRy
eUZhc3RBbGlnbmVkTWFsbG9jKGFsaWdubWVudCwgc2l6ZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotdm9pZCBTdWJzcGFjZTo6ZnJlZUFsaWduZWRNZW1vcnkodm9pZCogYmFzZVB0cikKLXsK
LSAgICBmYXN0QWxpZ25lZEZyZWUoYmFzZVB0cik7Ci0gICAgV1RGOjpjb21waWxlckZlbmNlKCk7
Ci19Ci0KIC8vIFRoZSByZWFzb24gd2h5IHdlIGRpc3Rpbmd1aXNoIGJldHdlZW4gYWxsb2NhdGUg
YW5kIHRyeUFsbG9jYXRlIGlzIHRvIG1pbmltaXplIHRoZSBudW1iZXIgb2YKIC8vIGNoZWNrcyBv
biB0aGUgYWxsb2NhdGlvbiBwYXRoIGluIGJvdGggY2FzZXMuIExpa2V3aXNlLCB0aGUgcmVhc29u
IHdoeSB3ZSBoYXZlIG92ZXJsb2FkcyB3aXRoIGFuZAogLy8gd2l0aG91dCBkZWZlcnJhbENvbnRl
eHQgaXMgdG8gbWluaW1pemUgdGhlIGFtb3VudCBvZiBjb2RlIGZvciBjYWxsaW5nIGFsbG9jYXRl
IHdoZW4geW91IGRvbid0CkBAIC0xNjcsOSArMTUxLDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSog
U3Vic3BhY2U6OmZpbmRFbXB0eQogewogICAgIGZvciAoOyBtX2FsbG9jYXRvckZvckVtcHR5QWxs
b2NhdGlvbjsgbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24gPSBtX2FsbG9jYXRvckZvckVt
cHR5QWxsb2NhdGlvbi0+bmV4dEFsbG9jYXRvcigpKSB7CiAgICAgICAgIFN1YnNwYWNlKiBvdGhl
clN1YnNwYWNlID0gbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24tPnN1YnNwYWNlKCk7Ci0g
ICAgICAgIGlmICghY2FuVHJhZGVCbG9ja3NXaXRoKG90aGVyU3Vic3BhY2UpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGlmICghb3RoZXJTdWJzcGFjZS0+Y2FuVHJhZGVCbG9ja3NX
aXRoKHRoaXMpKQorICAgICAgICBpZiAob3RoZXJTdWJzcGFjZS0+YWxpZ25lZE1lbW9yeUFsbG9j
YXRvcigpICE9IGFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAKICAgICAgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9h
bGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24tPmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCShyZXZpc2lvbiAyMjAxNjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw2ICszMSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yOworCiAvLyBUaGUgaWRlYSBvZiBzdWJzcGFjZXMgaXMgdGhhdCB5b3UgY2FuIHBy
b3ZpZGUgc29tZSBjdXN0b20gYmVoYXZpb3IgZm9yIHlvdXIgb2JqZWN0cyBpZiB5b3UKIC8vIGFs
bG9jYXRlIHRoZW0gZnJvbSBhIGN1c3RvbSBTdWJzcGFjZSBpbiB3aGljaCB5b3Ugb3ZlcnJpZGUg
c29tZSBvZiB0aGUgdmlydHVhbCBtZXRob2RzLiBUaGlzCiAvLyBjbGFzcyBpcyB0aGUgYmFzZWNs
YXNzIG9mIFN1YnNwYWNlcyBhbmQgaXQgcHJvdmlkZXMgYSByZWFzb25hYmxlIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24sIHdoZXJlCkBAIC00NCwxMyArNDYsMTQgQEAgY2xhc3MgU3Vic3BhY2Ugewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN1YnNwYWNlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBTdWJzcGFjZShDU3RyaW5n
IG5hbWUsIEhlYXAmLCBBbGxvY2F0b3JBdHRyaWJ1dGVzKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmLCBBbGxvY2F0b3JBdHRyaWJ1dGVzLCBBbGln
bmVkTWVtb3J5QWxsb2NhdG9yKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+U3Vi
c3BhY2UoKTsKICAgICAKLSAgICBjb25zdCBjaGFyICpuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lLmRhdGEoKTsgfQorICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25h
bWUuZGF0YSgpOyB9CiAgICAgTWFya2VkU3BhY2UmIHNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9z
cGFjZTsgfQogICAgIAogICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMo
KSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KKyAgICBBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yKiBhbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9hbGlnbmVkTWVt
b3J5QWxsb2NhdG9yOyB9CiAgICAgCiAgICAgLy8gVGhlIHB1cnBvc2Ugb2Ygb3ZlcnJpZGluZyB0
aGlzIGlzIHRvIHNwZWNpYWxpemUgdGhlIHN3ZWVwIGZvciB5b3VyIGRlc3RydWN0b3JzLiBUaGlz
IHdvbid0CiAgICAgLy8gYmUgY2FsbGVkIGZvciBuby1kZXN0cnVjdG9yIGJsb2Nrcy4gVGhpcyBt
dXN0IGNhbGwgTWFya2VkQmxvY2s6OmZpbmlzaFN3ZWVwS25vd2luZ1N1YnNwYWNlLgpAQCAtNTks
MTAgKzYyLDYgQEAgcHVibGljOgogICAgIC8vIFRoZXNlIGdldCBjYWxsZWQgZm9yIGxhcmdlIG9i
amVjdHMuCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqKTsKICAgICAKLSAg
ICB2aXJ0dWFsIGJvb2wgY2FuVHJhZGVCbG9ja3NXaXRoKFN1YnNwYWNlKiBvdGhlcik7Ci0gICAg
dmlydHVhbCB2b2lkKiB0cnlBbGxvY2F0ZUFsaWduZWRNZW1vcnkoc2l6ZV90IGFsaWdubWVudCwg
c2l6ZV90IHNpemUpOwotICAgIHZpcnR1YWwgdm9pZCBmcmVlQWxpZ25lZE1lbW9yeSh2b2lkKik7
Ci0gICAgCiAgICAgTWFya2VkQWxsb2NhdG9yKiB0cnlBbGxvY2F0b3JGb3Ioc2l6ZV90KTsKICAg
ICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvckZvcihzaXplX3QpOwogICAgIApAQCAtMTE1LDYg
KzExNCw4IEBAIHByaXZhdGU6CiAgICAgQ1N0cmluZyBtX25hbWU7CiAgICAgQWxsb2NhdG9yQXR0
cmlidXRlcyBtX2F0dHJpYnV0ZXM7CiAgICAgCisgICAgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciog
bV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yOworICAgIAogICAgIHN0ZDo6YXJyYXk8TWFya2VkQWxs
b2NhdG9yKiwgTWFya2VkU3BhY2U6Om51bVNpemVDbGFzc2VzPiBtX2FsbG9jYXRvckZvclNpemVT
dGVwOwogICAgIE1hcmtlZEFsbG9jYXRvciogbV9maXJzdEFsbG9jYXRvciB7IG51bGxwdHIgfTsK
ICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uIHsgbnVs
bHB0ciB9OyAvLyBVc2VzIHRoZSBNYXJrZWRTcGFjZSBsaW5rZWQgbGlzdCBvZiBibG9ja3MuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdFN1
YnNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlLmNwcAkocmV2aXNpb24gMjIwMTY0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3RTdWJzcGFjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDggQEAgc3RydWN0IERlc3Ryb3lGdW5jIHsK
IAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLUpTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3Bh
Y2U6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFw
KQotICAgIDogU3Vic3BhY2UobmFtZSwgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRlcyhOZWVkc0Rl
c3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKK0pTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3Bh
Y2U6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFw
LCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKiBhbGxvY2F0b3IpCisgICAgOiBTdWJzcGFjZShuYW1l
LCBoZWFwLCBBbGxvY2F0b3JBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpK
U0NlbGwpLCBhbGxvY2F0b3IpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlLmgJ
KHJldmlzaW9uIDIyMDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVz
dHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNEZXN0cnVjdGlibGVPYmplY3RTdWJzcGFjZSA6
IHB1YmxpYyBTdWJzcGFjZSB7CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNEZXN0
cnVjdGlibGVPYmplY3RTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBKU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVh
cCYsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0
dWFsIH5KU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlKCk7CiAgICAgCiAgICAgdm9pZCBmaW5p
c2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxpc3QqKSBvdmVycmlkZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3RT
dWJzcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlLmNwcAkocmV2aXNpb24gMjIwMTY0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dFN1YnNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMsOCBAQCBzdHJ1Y3QgRGVz
dHJveUZ1bmMgewogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdFN1YnNwYWNlOjpKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Vic3BhY2UoQ1N0
cmluZyBuYW1lLCBIZWFwJiBoZWFwKQotICAgIDogU3Vic3BhY2UobmFtZSwgaGVhcCwgQWxsb2Nh
dG9yQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKK0pTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZTo6SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1
YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciog
YWxsb2NhdG9yKQorICAgIDogU3Vic3BhY2UobmFtZSwgaGVhcCwgQWxsb2NhdG9yQXR0cmlidXRl
cyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSwgYWxsb2NhdG9yKQogewogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0U3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Vic3BhY2UuaAkocmV2aXNpb24gMjIwMTY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdFN1YnNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZSA6IHB1Ymxp
YyBTdWJzcGFjZSB7CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdFN1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZShDU3RyaW5nIG5hbWUs
IEhlYXAmLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dmlydHVhbCB+SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlKCk7CiAgICAgCiAgICAg
dm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxpc3QqKSBvdmVycmlk
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nU3Vic3BhY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
U3Vic3BhY2UuY3BwCShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZ1N1YnNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMs
OCBAQCBzdHJ1Y3QgRGVzdHJveUZ1bmMgewogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAot
SlNTdHJpbmdTdWJzcGFjZTo6SlNTdHJpbmdTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhl
YXApCi0gICAgOiBTdWJzcGFjZShuYW1lLCBoZWFwLCBBbGxvY2F0b3JBdHRyaWJ1dGVzKE5lZWRz
RGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQorSlNTdHJpbmdTdWJzcGFjZTo6SlNTdHJp
bmdTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIEFsaWduZWRNZW1vcnlBbGxvY2F0
b3IqIGFsbG9jYXRvcikKKyAgICA6IFN1YnNwYWNlKG5hbWUsIGhlYXAsIEFsbG9jYXRvckF0dHJp
YnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCksIGFsbG9jYXRvcikKIHsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdTdWJzcGFj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
U3Vic3BhY2UuaAkocmV2aXNpb24gMjIwMTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmdTdWJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU1N0cmluZ1N1YnNwYWNlIDogcHVibGljIFN1YnNw
YWNlIHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU1N0cmluZ1N1YnNwYWNlKENT
dHJpbmcgbmFtZSwgSGVhcCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nU3Vic3Bh
Y2UoQ1N0cmluZyBuYW1lLCBIZWFwJiwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciopOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkpTU3RyaW5nU3Vic3BhY2UoKTsKICAgICAKICAgICB2
b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlzdCopIG92ZXJyaWRl
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjIwMTY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NCwxMCArNDQsMTIgQEAKICNpbmNsdWRlICJFdmFsQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCisjaW5jbHVkZSAiRmFzdE1h
bGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9j
ay5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHQ0FjdGl2
aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJHaWdh
Y2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIYXNPd25Qcm9wZXJ0eUNh
Y2hlLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5o
IgpAQCAtMTYyLDE1ICsxNjQsMTUgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhl
YXBUeXBlKQogICAgICwgbV9ydW5Mb29wKENGUnVuTG9vcEdldEN1cnJlbnQoKSkKICNlbmRpZiAv
LyBVU0UoQ0YpCiAgICAgLCBoZWFwKHRoaXMsIGhlYXBUeXBlKQotICAgICwgYXV4aWxpYXJ5U3Bh
Y2UoIkF1eGlsaWFyeSIsIGhlYXAsIEFsbG9jYXRvckF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0
cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSkpCi0gICAgLCBjZWxsU3BhY2UoIkpTQ2VsbCIs
IGhlYXAsIEFsbG9jYXRvckF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENl
bGw6OkpTQ2VsbCkpCi0gICAgLCBkZXN0cnVjdGlibGVDZWxsU3BhY2UoIkRlc3RydWN0aWJsZSBK
U0NlbGwiLCBoZWFwLCBBbGxvY2F0b3JBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBD
ZWxsOjpKU0NlbGwpKQotICAgICwgc3RyaW5nU3BhY2UoIkpTU3RyaW5nIiwgaGVhcCkKLSAgICAs
IGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXApCi0g
ICAgLCBlYWdlcmx5U3dlcHREZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiRWFnZXJseSBTd2VwdCBK
U0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXApCi0gICAgLCBzZWdtZW50ZWRWYXJpYWJsZU9iamVj
dFNwYWNlKCJKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3BhY2UiLCBoZWFwKQorICAgICwgYXV4
aWxpYXJ5U3BhY2UoIkF1eGlsaWFyeSIsIGhlYXAsIEFsbG9jYXRvckF0dHJpYnV0ZXMoRG9lc05v
dE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSksICZHaWdhY2FnZUFsaWduZWRN
ZW1vcnlBbGxvY2F0b3I6Omluc3RhbmNlKCkpCisgICAgLCBjZWxsU3BhY2UoIkpTQ2VsbCIsIGhl
YXAsIEFsbG9jYXRvckF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6
OkpTQ2VsbCksICZGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6aW5zdGFuY2UoKSkK
KyAgICAsIGRlc3RydWN0aWJsZUNlbGxTcGFjZSgiRGVzdHJ1Y3RpYmxlIEpTQ2VsbCIsIGhlYXAs
IEFsbG9jYXRvckF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCks
ICZGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6aW5zdGFuY2UoKSkKKyAgICAsIHN0
cmluZ1NwYWNlKCJKU1N0cmluZyIsIGhlYXAsICZGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcjo6aW5zdGFuY2UoKSkKKyAgICAsIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3Ry
dWN0aWJsZU9iamVjdCIsIGhlYXAsICZGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6
aW5zdGFuY2UoKSkKKyAgICAsIGVhZ2VybHlTd2VwdERlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJF
YWdlcmx5IFN3ZXB0IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgJkZhc3RNYWxsb2NBbGln
bmVkTWVtb3J5QWxsb2NhdG9yOjppbnN0YW5jZSgpKQorICAgICwgc2VnbWVudGVkVmFyaWFibGVP
YmplY3RTcGFjZSgiSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFNwYWNlIiwgaGVhcCwgJkZhc3RN
YWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjppbnN0YW5jZSgpKQogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKLSAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UoIkpTV2ViQXNzZW1ibHlD
b2RlQmxvY2tTcGFjZSIsIGhlYXApCisgICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKCJK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UiLCBoZWFwLCAmRmFzdE1hbGxvY0FsaWduZWRNZW1v
cnlBbGxvY2F0b3I6Omluc3RhbmNlKCkpCiAjZW5kaWYKICAgICAsIHZtVHlwZSh2bVR5cGUpCiAg
ICAgLCBjbGllbnREYXRhKDApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJl
dmlzaW9uIDIyMDE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25FdmVudExv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkZ1
bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oIgotI2luY2x1ZGUgIkdpZ2FjYWdlU3Vic3BhY2UuaCIK
ICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSklU
VGh1bmtzLmgiCkBAIC0yODcsNyArMjg2LDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBIZWFw
IGhlYXA7CiAgICAgCi0gICAgR2lnYWNhZ2VTdWJzcGFjZSBhdXhpbGlhcnlTcGFjZTsKKyAgICBT
dWJzcGFjZSBhdXhpbGlhcnlTcGFjZTsKICAgICAKICAgICAvLyBXaGVuZXZlciBwb3NzaWJsZSwg
dXNlIHN1YnNwYWNlRm9yPENlbGxUeXBlPih2bSkgdG8gZ2V0IG9uZSBvZiB0aGVzZSBzdWJzcGFj
ZXMuCiAgICAgU3Vic3BhY2UgY2VsbFNwYWNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vi
c3BhY2UuY3BwCShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw4ICs0Nyw4IEBAIHN0cnVjdCBEZXN0cm95RnVuYyB7CiAKIH0gLy8gYW5vbnltb3VzIG5h
bWVzcGFjZQogCi1KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2U6OkpTV2ViQXNzZW1ibHlD
b2RlQmxvY2tTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXApCi0gICAgOiBTdWJzcGFj
ZShuYW1lLCBoZWFwLCBBbGxvY2F0b3JBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBD
ZWxsOjpKU0NlbGwpKQorSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlOjpKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yKiBhbGxvY2F0b3IpCisgICAgOiBTdWJzcGFjZShuYW1lLCBoZWFwLCBBbGxv
Y2F0b3JBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpLCBhbGxv
Y2F0b3IpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oCShyZXZpc2lv
biAyMjAxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
Q29kZUJsb2NrU3Vic3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlIDogcHVi
bGljIFN1YnNwYWNlIHsKIHB1YmxpYzoKLSAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3Bh
Y2UoQ1N0cmluZyBuYW1lLCBIZWFwJik7CisgICAgSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNw
YWNlKENTdHJpbmcgbmFtZSwgSGVhcCYsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqKTsKICAgICB2
aXJ0dWFsIH5KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UoKTsKICAgICAKICAgICB2b2lk
IGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlzdCopIG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwMTY0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDgtMDMgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgYWxsb2NhdG9yIHVzZWQgdG8g
YWxsb2NhdGUgbWVtb3J5IGZvciBNYXJrZWRCbG9ja3MgYW5kIExhcmdlQWxsb2NhdGlvbnMgc2hv
dWxkIG5vdCBiZSB0aGUgU3Vic3BhY2UgaXRzZWxmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDEKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJr
IExhbS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBubyBuZXcgYmVoYXZpb3IuCisg
ICAgICAgIAorICAgICAgICBKdXN0IGFkYXB0aW5nIHRvIGFuIEFQSSBjaGFuZ2UuCisKKyAgICAg
ICAgKiBGb3J3YXJkaW5nSGVhZGVycy9oZWFwL0Zhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OkpTVk1DbGllbnREYXRhKToK
KwogMjAxNy0wOC0wMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTiAocjIwNzE1NSk6IFVuYWJsZSB0byBzd2l0Y2ggc2hlZXRzIHdoZW4gcHJldmll
d2luZyBOdW1iZXJzICcwOSBzcHJlYWRzaGVldHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL2hlYXAvRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9oZWFwL0Zhc3RNYWxs
b2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvaGVhcC9GYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMiBAQAorI3ByYWdtYSBvbmNlCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaD4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERh
dGEuY3BwCShyZXZpc2lvbiAyMjAxNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKIAogI2luY2x1ZGUgIkpTRE9NQmluZGlu
Zy5oIgorI2luY2x1ZGUgPGhlYXAvRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaD4K
ICNpbmNsdWRlIDxoZWFwL0hlYXBJbmxpbmVzLmg+CiAjaW5jbHVkZSA8aGVhcC9NYXJraW5nQ29u
c3RyYWludC5oPgogI2luY2x1ZGUgPGhlYXAvTWFya2VkQWxsb2NhdG9ySW5saW5lcy5oPgpAQCAt
NDMsOCArNDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBKU1ZNQ2xpZW50RGF0YTo6SlNWTUNs
aWVudERhdGEoVk0mIHZtKQogICAgIDogbV9idWlsdGluRnVuY3Rpb25zKHZtKQogICAgICwgbV9i
dWlsdGluTmFtZXMoJnZtKQotICAgICwgbV9vdXRwdXRDb25zdHJhaW50U3BhY2UoIldlYkNvcmUg
V3JhcHBlciB3LyBPdXRwdXQgQ29uc3RyYWludCIsIHZtLmhlYXApCi0gICAgLCBtX2dsb2JhbE9i
amVjdE91dHB1dENvbnN0cmFpbnRTcGFjZSgiV2ViQ29yZSBHbG9iYWwgT2JqZWN0IHcvIE91dHB1
dCBDb25zdHJhaW50Iiwgdm0uaGVhcCkKKyAgICAsIG1fb3V0cHV0Q29uc3RyYWludFNwYWNlKCJX
ZWJDb3JlIFdyYXBwZXIgdy8gT3V0cHV0IENvbnN0cmFpbnQiLCB2bS5oZWFwLCAmRmFzdE1hbGxv
Y0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6Omluc3RhbmNlKCkpCisgICAgLCBtX2dsb2JhbE9iamVj
dE91dHB1dENvbnN0cmFpbnRTcGFjZSgiV2ViQ29yZSBHbG9iYWwgT2JqZWN0IHcvIE91dHB1dCBD
b25zdHJhaW50Iiwgdm0uaGVhcCwgJkZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpp
bnN0YW5jZSgpKQogewogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>